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.util.List; 021 022import javax.xml.bind.annotation.XmlTransient; 023import javax.xml.bind.annotation.XmlType; 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 CommonTax, M extends CommonMonetarySummation> { 036 037 /** 038 * Gets the billing specified period. 039 * 040 * Profile:: COMFORT 041 * 042 * @return the billing specified period 043 */ 044 Period getBillingPeriod(); 045 046 /** 047 * Sets the billing specified period. 048 * 049 * Profile:: COMFORT 050 * 051 * 052 * @param billingPeriod the new billing specified period 053 * @return the supply chain trade settlement 054 */ 055 CommonSettlement<T, M> setBillingPeriod(Period billingPeriod); 056 057 /** 058 * Gets the applicable trade tax. 059 * 060 * @return the applicable trade tax 061 */ 062 List<T> getTradeTax(); 063 064 /** 065 * Adds a trade tax. 066 * 067 * @param additionalTradeTax 068 * @return the trade settlement 069 */ 070 CommonSettlement<T, M> addTradeTax(T additionalTradeTax); 071 072 /** 073 * Gets the trade settlement monetary summation. 074 * 075 * Profile:: BASIC 076 * 077 * @return the specified trade settlement monetary summation 078 */ 079 M getMonetarySummation(); 080 081 /** 082 * Sets the trade settlement monetary summation. 083 * 084 * Profile:: BASIC 085 * 086 * @param monetarySummation the new monetary summation 087 * @return the supply chain trade settlement 088 */ 089 CommonSettlement<T, M> setMonetarySummation(M monetarySummation); 090 091}