001/* Copyright (C) 2014 konik.io 002 * 003 * This file is part of the Konik library. 004 * 005 * The Konik library is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * The Konik library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with the Konik library. If not, see <http://www.gnu.org/licenses/>. 017 */ 018package io.konik.zugferd.entity; 019 020import java.io.Serializable; 021import java.util.List; 022 023import javax.xml.bind.annotation.XmlTransient; 024import javax.xml.bind.annotation.XmlType; 025 026/** 027 * = The Trade Settlement 028 * 029 * Contains payment related information. 030 * 031 * @param <T> Tax 032 * @param <M> MonetarySummation 033 */ 034@XmlTransient 035@XmlType(name = "SupplyChainTradeSettlementType") 036public interface CommonSettlement<T extends Tax, M extends CommonMonetarySummation> extends Serializable { 037 038 /** 039 * Gets the billing specified period. 040 * 041 * @return the billing specified period 042 */ 043 Period getBillingPeriod(); 044 045 /** 046 * Sets the billing specified period. 047 * 048 * 049 * @param billingPeriod the new billing specified period 050 * @return the supply chain trade settlement 051 */ 052 CommonSettlement<T, M> setBillingPeriod(Period billingPeriod); 053 054 /** 055 * Gets the applicable trade tax. 056 * 057 * @return the applicable trade tax 058 */ 059 List<T> getTradeTax(); 060 061 /** 062 * Adds a trade tax. 063 * 064 * @param additionalTradeTax 065 * @return the trade settlement 066 */ 067 CommonSettlement<T, M> addTradeTax(T additionalTradeTax); 068 069 /** 070 * Gets the trade settlement monetary summation. 071 * 072 * @return the specified trade settlement monetary summation 073 */ 074 M getMonetarySummation(); 075 076 /** 077 * Sets the trade settlement monetary summation. 078 * 079 * @param monetarySummation the new monetary summation 080 * @return the supply chain trade settlement 081 */ 082 CommonSettlement<T, M> setMonetarySummation(M monetarySummation); 083 084}