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 javax.xml.bind.annotation.XmlTransient; 021import javax.xml.bind.annotation.XmlType; 022import java.io.Serializable; 023import java.util.List; 024 025/** 026 * = The Trade Settlement 027 * 028 * Contains payment related information. 029 * 030 * @param <T> Tax 031 * @param <M> MonetarySummation 032 */ 033@XmlTransient 034@XmlType(name = "SupplyChainTradeSettlementType") 035public interface CommonSettlement<T extends Tax, M extends CommonMonetarySummation> extends Serializable { 036 037 /** 038 * Gets the billing specified period. 039 * 040 * @return the billing specified period 041 */ 042 Period getBillingPeriod(); 043 044 /** 045 * Sets the billing specified period. 046 * 047 * 048 * @param billingPeriod the new billing specified period 049 * @return the supply chain trade settlement 050 */ 051 CommonSettlement<T, M> setBillingPeriod(Period billingPeriod); 052 053 /** 054 * Gets the applicable trade tax. 055 * 056 * @return the applicable trade tax 057 */ 058 List<T> getTradeTax(); 059 060 /** 061 * Adds a trade tax. 062 * 063 * @param additionalTradeTax 064 * @return the trade settlement 065 */ 066 CommonSettlement<T, M> addTradeTax(T additionalTradeTax); 067 068 /** 069 * Gets the trade settlement monetary summation. 070 * 071 * @return the specified trade settlement monetary summation 072 */ 073 M getMonetarySummation(); 074 075 /** 076 * Sets the trade settlement monetary summation. 077 * 078 * @param monetarySummation the new monetary summation 079 * @return the supply chain trade settlement 080 */ 081 CommonSettlement<T, M> setMonetarySummation(M monetarySummation); 082 083}