|
|
|
|
@@ -113,7 +113,7 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
document.getIncludedNote().add(regularInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (trans.getReferenceNumber() != null && !new String().equals(trans.getReferenceNumber())) {
|
|
|
|
|
if (trans.getReferenceNumber() != null && !"".equals(trans.getReferenceNumber())) {
|
|
|
|
|
NoteType referenceInfo = xmlFactory.createNoteType();
|
|
|
|
|
TextType referenceInfoContent = xmlFactory.createTextType();
|
|
|
|
|
referenceInfoContent.setValue("Ursprungsbeleg: " + trans.getReferenceNumber());
|
|
|
|
|
@@ -336,10 +336,9 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Collection<TradeTaxType> getTradeTax() {
|
|
|
|
|
List<TradeTaxType> tradeTaxTypes = new ArrayList<TradeTaxType>();
|
|
|
|
|
List<TradeTaxType> tradeTaxTypes = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
HashMap<BigDecimal, VATAmount> VATPercentAmountMap = this
|
|
|
|
|
.getVATPercentAmountMap();
|
|
|
|
|
HashMap<BigDecimal, VATAmount> VATPercentAmountMap = this.getVATPercentAmountMap();
|
|
|
|
|
for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) {
|
|
|
|
|
|
|
|
|
|
TradeTaxType tradeTax = xmlFactory.createTradeTaxType();
|
|
|
|
|
@@ -347,9 +346,9 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
taxTypeCode.setValue(TaxTypeCodeTypeConstants.SALESTAX);
|
|
|
|
|
tradeTax.setTypeCode(taxTypeCode);
|
|
|
|
|
|
|
|
|
|
TaxCategoryCodeType taxCategoryCode = xmlFactory
|
|
|
|
|
.createTaxCategoryCodeType();
|
|
|
|
|
taxCategoryCode.setValue(TaxCategoryCodeTypeConstants.STANDARDRATE);
|
|
|
|
|
TaxCategoryCodeType taxCategoryCode = xmlFactory.createTaxCategoryCodeType();
|
|
|
|
|
VATAmount vatAmount = VATPercentAmountMap.get(currentTaxPercent);
|
|
|
|
|
taxCategoryCode.setValue(vatAmount.getDocumentCode());
|
|
|
|
|
tradeTax.setCategoryCode(taxCategoryCode);
|
|
|
|
|
|
|
|
|
|
VATAmount amount = VATPercentAmountMap.get(currentTaxPercent);
|
|
|
|
|
@@ -360,8 +359,7 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
|
|
|
|
|
AmountType calculatedTaxAmount = xmlFactory.createAmountType();
|
|
|
|
|
calculatedTaxAmount.setCurrencyID(currency);
|
|
|
|
|
calculatedTaxAmount
|
|
|
|
|
.setValue(currencyFormat(amount.getCalculated()));
|
|
|
|
|
calculatedTaxAmount.setValue(currencyFormat(amount.getCalculated()));
|
|
|
|
|
tradeTax.getCalculatedAmount().add(calculatedTaxAmount);
|
|
|
|
|
|
|
|
|
|
AmountType basisTaxAmount = xmlFactory.createAmountType();
|
|
|
|
|
@@ -376,13 +374,11 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Collection<TradeAllowanceChargeType> getHeaderAllowances() {
|
|
|
|
|
List<TradeAllowanceChargeType> headerAllowances = new ArrayList<TradeAllowanceChargeType>();
|
|
|
|
|
List<TradeAllowanceChargeType> headerAllowances = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
for (IZUGFeRDAllowanceCharge iAllowance : trans.getZFAllowances()) {
|
|
|
|
|
|
|
|
|
|
TradeAllowanceChargeType allowance = xmlFactory
|
|
|
|
|
.createTradeAllowanceChargeType();
|
|
|
|
|
|
|
|
|
|
TradeAllowanceChargeType allowance = xmlFactory.createTradeAllowanceChargeType();
|
|
|
|
|
IndicatorType chargeIndicator = xmlFactory.createIndicatorType();
|
|
|
|
|
chargeIndicator.setIndicator(false);
|
|
|
|
|
allowance.setChargeIndicator(chargeIndicator);
|
|
|
|
|
@@ -397,7 +393,6 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
allowance.setReason(reason);
|
|
|
|
|
|
|
|
|
|
TradeTaxType tradeTax = xmlFactory.createTradeTaxType();
|
|
|
|
|
|
|
|
|
|
PercentType vatPercent = xmlFactory.createPercentType();
|
|
|
|
|
vatPercent.setValue(currencyFormat(iAllowance.getTaxPercent()));
|
|
|
|
|
tradeTax.setApplicablePercent(vatPercent);
|
|
|
|
|
@@ -409,9 +404,8 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
* basisAmount.setValue(amount.getBasis());
|
|
|
|
|
* allowance.setBasisAmount(basisAmount);
|
|
|
|
|
*/
|
|
|
|
|
TaxCategoryCodeType taxType = xmlFactory
|
|
|
|
|
.createTaxCategoryCodeType();
|
|
|
|
|
taxType.setValue(TaxCategoryCodeTypeConstants.STANDARDRATE);
|
|
|
|
|
TaxCategoryCodeType taxType = xmlFactory.createTaxCategoryCodeType();
|
|
|
|
|
taxType.setValue(iAllowance.getCategoryCode());
|
|
|
|
|
tradeTax.setCategoryCode(taxType);
|
|
|
|
|
|
|
|
|
|
TaxTypeCodeType taxCode = xmlFactory.createTaxTypeCodeType();
|
|
|
|
|
@@ -420,20 +414,17 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
|
|
|
|
|
allowance.getCategoryTradeTax().add(tradeTax);
|
|
|
|
|
headerAllowances.add(allowance);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return headerAllowances;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Collection<TradeAllowanceChargeType> getHeaderCharges() {
|
|
|
|
|
List<TradeAllowanceChargeType> headerCharges = new ArrayList<TradeAllowanceChargeType>();
|
|
|
|
|
List<TradeAllowanceChargeType> headerCharges = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
for (IZUGFeRDAllowanceCharge iCharge : trans.getZFCharges()) {
|
|
|
|
|
|
|
|
|
|
TradeAllowanceChargeType charge = xmlFactory
|
|
|
|
|
.createTradeAllowanceChargeType();
|
|
|
|
|
|
|
|
|
|
TradeAllowanceChargeType charge = xmlFactory.createTradeAllowanceChargeType();
|
|
|
|
|
IndicatorType chargeIndicator = xmlFactory.createIndicatorType();
|
|
|
|
|
chargeIndicator.setIndicator(true);
|
|
|
|
|
charge.setChargeIndicator(chargeIndicator);
|
|
|
|
|
@@ -448,7 +439,6 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
charge.setReason(reason);
|
|
|
|
|
|
|
|
|
|
TradeTaxType tradeTax = xmlFactory.createTradeTaxType();
|
|
|
|
|
|
|
|
|
|
PercentType vatPercent = xmlFactory.createPercentType();
|
|
|
|
|
vatPercent.setValue(currencyFormat(iCharge.getTaxPercent()));
|
|
|
|
|
tradeTax.setApplicablePercent(vatPercent);
|
|
|
|
|
@@ -460,9 +450,8 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
* basisAmount.setValue(amount.getBasis());
|
|
|
|
|
* allowance.setBasisAmount(basisAmount);
|
|
|
|
|
*/
|
|
|
|
|
TaxCategoryCodeType taxType = xmlFactory
|
|
|
|
|
.createTaxCategoryCodeType();
|
|
|
|
|
taxType.setValue(TaxCategoryCodeTypeConstants.STANDARDRATE);
|
|
|
|
|
TaxCategoryCodeType taxType = xmlFactory.createTaxCategoryCodeType();
|
|
|
|
|
taxType.setValue(iCharge.getCategoryCode());
|
|
|
|
|
tradeTax.setCategoryCode(taxType);
|
|
|
|
|
|
|
|
|
|
TaxTypeCodeType taxCode = xmlFactory.createTaxTypeCodeType();
|
|
|
|
|
@@ -478,18 +467,15 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Collection<LogisticsServiceChargeType> getHeaderLogisticsServiceCharges() {
|
|
|
|
|
List<LogisticsServiceChargeType> headerServiceCharge = new ArrayList<LogisticsServiceChargeType>();
|
|
|
|
|
List<LogisticsServiceChargeType> headerServiceCharge = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
for (IZUGFeRDAllowanceCharge iServiceCharge : trans
|
|
|
|
|
.getZFLogisticsServiceCharges()) {
|
|
|
|
|
for (IZUGFeRDAllowanceCharge iServiceCharge : trans.getZFLogisticsServiceCharges()) {
|
|
|
|
|
|
|
|
|
|
LogisticsServiceChargeType serviceCharge = xmlFactory
|
|
|
|
|
.createLogisticsServiceChargeType();
|
|
|
|
|
LogisticsServiceChargeType serviceCharge = xmlFactory.createLogisticsServiceChargeType();
|
|
|
|
|
|
|
|
|
|
AmountType actualAmount = xmlFactory.createAmountType();
|
|
|
|
|
actualAmount.setCurrencyID(currency);
|
|
|
|
|
actualAmount.setValue(currencyFormat(iServiceCharge
|
|
|
|
|
.getTotalAmount()));
|
|
|
|
|
actualAmount.setValue(currencyFormat(iServiceCharge.getTotalAmount()));
|
|
|
|
|
serviceCharge.getAppliedAmount().add(actualAmount);
|
|
|
|
|
|
|
|
|
|
TextType reason = xmlFactory.createTextType();
|
|
|
|
|
@@ -509,9 +495,8 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
* basisAmount.setValue(amount.getBasis());
|
|
|
|
|
* allowance.setBasisAmount(basisAmount);
|
|
|
|
|
*/
|
|
|
|
|
TaxCategoryCodeType taxType = xmlFactory
|
|
|
|
|
.createTaxCategoryCodeType();
|
|
|
|
|
taxType.setValue(TaxCategoryCodeTypeConstants.STANDARDRATE);
|
|
|
|
|
TaxCategoryCodeType taxType = xmlFactory.createTaxCategoryCodeType();
|
|
|
|
|
taxType.setValue(iServiceCharge.getCategoryCode());
|
|
|
|
|
tradeTax.setCategoryCode(taxType);
|
|
|
|
|
|
|
|
|
|
TaxTypeCodeType taxCode = xmlFactory.createTaxTypeCodeType();
|
|
|
|
|
@@ -527,7 +512,7 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Collection<TradePaymentTermsType> getPaymentTerms() {
|
|
|
|
|
List<TradePaymentTermsType> paymentTerms = new ArrayList<TradePaymentTermsType>();
|
|
|
|
|
List<TradePaymentTermsType> paymentTerms = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
TradePaymentTermsType paymentTerm = xmlFactory
|
|
|
|
|
.createTradePaymentTermsType();
|
|
|
|
|
@@ -632,7 +617,7 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
|
|
|
|
|
private Collection<SupplyChainTradeLineItemType> getLineItems() {
|
|
|
|
|
|
|
|
|
|
ArrayList<SupplyChainTradeLineItemType> lineItems = new ArrayList<SupplyChainTradeLineItemType>();
|
|
|
|
|
ArrayList<SupplyChainTradeLineItemType> lineItems = new ArrayList<>();
|
|
|
|
|
int lineID = 0;
|
|
|
|
|
for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) {
|
|
|
|
|
lineID++;
|
|
|
|
|
@@ -734,9 +719,8 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
.createSupplyChainTradeSettlementType();
|
|
|
|
|
TradeTaxType tradeTax = xmlFactory.createTradeTaxType();
|
|
|
|
|
|
|
|
|
|
TaxCategoryCodeType taxCategoryCode = xmlFactory
|
|
|
|
|
.createTaxCategoryCodeType();
|
|
|
|
|
taxCategoryCode.setValue(TaxCategoryCodeTypeConstants.STANDARDRATE);
|
|
|
|
|
TaxCategoryCodeType taxCategoryCode = xmlFactory.createTaxCategoryCodeType();
|
|
|
|
|
taxCategoryCode.setValue(currentItem.getCategoryCode());
|
|
|
|
|
tradeTax.setCategoryCode(taxCategoryCode);
|
|
|
|
|
|
|
|
|
|
TaxTypeCodeType taxCode = xmlFactory.createTaxTypeCodeType();
|
|
|
|
|
@@ -849,15 +833,13 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
return getVATPercentAmountMap(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private HashMap<BigDecimal, VATAmount> getVATPercentAmountMap(
|
|
|
|
|
Boolean itemOnly) {
|
|
|
|
|
HashMap<BigDecimal, VATAmount> hm = new HashMap<BigDecimal, VATAmount>();
|
|
|
|
|
private HashMap<BigDecimal, VATAmount> getVATPercentAmountMap(Boolean itemOnly) {
|
|
|
|
|
HashMap<BigDecimal, VATAmount> hm = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) {
|
|
|
|
|
BigDecimal percent = currentItem.getProduct().getVATPercent();
|
|
|
|
|
LineCalc lc = new LineCalc(currentItem);
|
|
|
|
|
VATAmount itemVATAmount = new VATAmount(lc.getItemTotalNetAmount(),
|
|
|
|
|
lc.getItemTotalVATAmount());
|
|
|
|
|
VATAmount itemVATAmount = new VATAmount(lc.getItemTotalNetAmount(), lc.getItemTotalVATAmount(), trans.getDocumentCode());
|
|
|
|
|
VATAmount current = hm.get(percent);
|
|
|
|
|
if (current == null) {
|
|
|
|
|
hm.put(percent, itemVATAmount);
|
|
|
|
|
@@ -869,13 +851,12 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
return hm;
|
|
|
|
|
}
|
|
|
|
|
if (trans.getZFAllowances() != null) {
|
|
|
|
|
for (IZUGFeRDAllowanceCharge headerAllowance : trans
|
|
|
|
|
.getZFAllowances()) {
|
|
|
|
|
for (IZUGFeRDAllowanceCharge headerAllowance : trans.getZFAllowances()) {
|
|
|
|
|
BigDecimal percent = headerAllowance.getTaxPercent();
|
|
|
|
|
VATAmount itemVATAmount = new VATAmount(
|
|
|
|
|
headerAllowance.getTotalAmount(), headerAllowance
|
|
|
|
|
.getTotalAmount().multiply(percent)
|
|
|
|
|
.divide(new BigDecimal(100)));
|
|
|
|
|
.divide(new BigDecimal(100)), trans.getDocumentCode());
|
|
|
|
|
VATAmount current = hm.get(percent);
|
|
|
|
|
if (current == null) {
|
|
|
|
|
hm.put(percent, itemVATAmount);
|
|
|
|
|
@@ -892,7 +873,7 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
VATAmount itemVATAmount = new VATAmount(
|
|
|
|
|
logisticsServiceCharge.getTotalAmount(),
|
|
|
|
|
logisticsServiceCharge.getTotalAmount()
|
|
|
|
|
.multiply(percent).divide(new BigDecimal(100)));
|
|
|
|
|
.multiply(percent).divide(new BigDecimal(100)), trans.getDocumentCode());
|
|
|
|
|
VATAmount current = hm.get(percent);
|
|
|
|
|
if (current == null) {
|
|
|
|
|
hm.put(percent, itemVATAmount);
|
|
|
|
|
@@ -907,7 +888,7 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
BigDecimal percent = charge.getTaxPercent();
|
|
|
|
|
VATAmount itemVATAmount = new VATAmount(
|
|
|
|
|
charge.getTotalAmount(), charge.getTotalAmount()
|
|
|
|
|
.multiply(percent).divide(new BigDecimal(100)));
|
|
|
|
|
.multiply(percent).divide(new BigDecimal(100)), trans.getDocumentCode());
|
|
|
|
|
VATAmount current = hm.get(percent);
|
|
|
|
|
if (current == null) {
|
|
|
|
|
hm.put(percent, itemVATAmount);
|
|
|
|
|
@@ -1026,17 +1007,14 @@ class ZUGFeRDTransactionModelConverter {
|
|
|
|
|
// Set total net amount
|
|
|
|
|
this.totalNetAmount = res;
|
|
|
|
|
|
|
|
|
|
HashMap<BigDecimal, VATAmount> VATPercentAmountMap = getVATPercentAmountMap();
|
|
|
|
|
for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) {
|
|
|
|
|
VATAmount amount = VATPercentAmountMap.get(currentTaxPercent);
|
|
|
|
|
HashMap<BigDecimal, VATAmount> vatAmountHashMap = getVATPercentAmountMap();
|
|
|
|
|
for (VATAmount amount : vatAmountHashMap.values()) {
|
|
|
|
|
res = res.add(amount.getCalculated());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Set total gross amount
|
|
|
|
|
this.totalGrossAmount = res;
|
|
|
|
|
|
|
|
|
|
this.totalTaxAmount = this.totalGrossAmount
|
|
|
|
|
.subtract(this.totalNetAmount);
|
|
|
|
|
this.totalTaxAmount = this.totalGrossAmount.subtract(this.totalNetAmount);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public BigDecimal getTotalNet() {
|
|
|
|
|
|