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.trade.item;
019
020import io.konik.validator.annotation.Comfort;
021import io.konik.validator.annotation.Extended;
022import io.konik.zugferd.entity.CommonMonetarySummation;
023import io.konik.zugferd.unqualified.Amount;
024
025import javax.validation.Valid;
026import javax.validation.constraints.NotNull;
027import javax.xml.bind.annotation.XmlElement;
028import javax.xml.bind.annotation.XmlType;
029
030/**
031 * 
032 * The specified per monetary summation on item basis.
033 */
034@XmlType(propOrder = { "lineTotal", "totalAllowanceCharge" })
035public class SpecifiedMonetarySummation implements CommonMonetarySummation {
036
037   
038   @XmlElement(name = "LineTotalAmount")
039   private Amount lineTotal;
040   
041   @XmlElement(name = "TotalAllowanceChargeAmount")
042   private Amount totalAllowanceCharge;
043
044   
045   @Comfort
046   @Override
047   @Valid @NotNull(groups = Comfort.class)
048   public Amount getLineTotal() {
049      return lineTotal;
050   }
051
052   @Override
053   public SpecifiedMonetarySummation setLineTotal(Amount lineTotal) {
054      this.lineTotal =  lineTotal; 
055      return this;
056   }
057
058   /**
059    * Gets the total allowance charge.
060    *
061    * @return the total allowance charge
062    */
063   @Extended
064   @Valid
065   public Amount getTotalAllowanceCharge() {
066      return totalAllowanceCharge;
067   }
068
069   /**
070    * Sets the total allowance charge.
071    *
072    * @param totalAllowanceCharge the new total allowance charge
073    * @return the specified monetary summation
074    */
075   public SpecifiedMonetarySummation setTotalAllowanceCharge(Amount totalAllowanceCharge) {
076      this.totalAllowanceCharge = totalAllowanceCharge;
077      return this;
078   }
079}