schema validity

This commit is contained in:
jstaerk
2021-12-21 07:31:16 +01:00
parent 34ee9b6267
commit 6eb513cb5c
2 changed files with 28 additions and 23 deletions

View File

@@ -93,10 +93,10 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
+ "</ram:IncludedNote>\n"; + "</ram:IncludedNote>\n";
} }
String typecode = "380"; String typecode = "220";
if (trans.getDocumentCode() != null) { /*if (trans.getDocumentCode() != null) {
typecode = trans.getDocumentCode(); typecode = trans.getDocumentCode();
} }*/
String notes = ""; String notes = "";
if (trans.getNotes() != null) { if (trans.getNotes() != null) {
for (final String currentNote : trans.getNotes()) { for (final String currentNote : trans.getNotes()) {
@@ -115,9 +115,6 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
// + " // + "
// xsi:schemaLocation=\"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100 // xsi:schemaLocation=\"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
// ../Schema/ZUGFeRD1p0.xsd\"" // ../Schema/ZUGFeRD1p0.xsd\""
+ " xmlns:ram=\"urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100\""
+ " xmlns:udt=\"urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100\""
+ " xmlns:qdt=\"urn:un:unece:uncefact:data:standard:QualifiedDataType:100\">\n"
+ " <rsm:ExchangedDocumentContext>\n" + " <rsm:ExchangedDocumentContext>\n"
// + " // + "
// <ram:TestIndicator><udt:Indicator>"+testBooleanStr+"</udt:Indicator></ram:TestIndicator>\n" // <ram:TestIndicator><udt:Indicator>"+testBooleanStr+"</udt:Indicator></ram:TestIndicator>\n"
@@ -147,7 +144,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
for (final IZUGFeRDExportableItem currentItem : trans.getZFItems()) { for (final IZUGFeRDExportableItem currentItem : trans.getZFItems()) {
lineID++; lineID++;
if (currentItem.getProduct().getTaxExemptionReason() != null) { if (currentItem.getProduct().getTaxExemptionReason() != null) {
exemptionReason = "<ram:ExemptionReason>" + XMLTools.encodeXML(currentItem.getProduct().getTaxExemptionReason()) + "</ram:ExemptionReason>"; // exemptionReason = "<ram:ExemptionReason>" + XMLTools.encodeXML(currentItem.getProduct().getTaxExemptionReason()) + "</ram:ExemptionReason>";
} }
notes = ""; notes = "";
if (currentItem.getNotes() != null) { if (currentItem.getNotes() != null) {
@@ -193,7 +190,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
+ " </ram:SpecifiedTradeProduct>\n" + " </ram:SpecifiedTradeProduct>\n"
+ " <ram:SpecifiedLineTradeAgreement>\n"; + " <ram:SpecifiedLineTradeAgreement>\n";
if (currentItem.getReferencedDocuments() != null) { /* if (currentItem.getReferencedDocuments() != null) {
for (IReferencedDocument currentReferencedDocument : currentItem.getReferencedDocuments()) { for (IReferencedDocument currentReferencedDocument : currentItem.getReferencedDocuments()) {
xml = xml + "<ram:AdditionalReferencedDocument>\n" + xml = xml + "<ram:AdditionalReferencedDocument>\n" +
"<ram:IssuerAssignedID>" + XMLTools.encodeXML(currentReferencedDocument.getIssuerAssignedID()) + "</ram:IssuerAssignedID>\n" + "<ram:IssuerAssignedID>" + XMLTools.encodeXML(currentReferencedDocument.getIssuerAssignedID()) + "</ram:IssuerAssignedID>\n" +
@@ -204,7 +201,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
} }
} }*/
if (currentItem.getBuyerOrderReferencedDocumentLineID() != null) { if (currentItem.getBuyerOrderReferencedDocumentLineID() != null) {
xml = xml + " <ram:BuyerOrderReferencedDocument> \n" xml = xml + " <ram:BuyerOrderReferencedDocument> \n"
+ " <ram:LineID>" + XMLTools.encodeXML(currentItem.getBuyerOrderReferencedDocumentLineID()) + "</ram:LineID>\n" + " <ram:LineID>" + XMLTools.encodeXML(currentItem.getBuyerOrderReferencedDocumentLineID()) + "</ram:LineID>\n"
@@ -232,8 +229,8 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
+ " </ram:SpecifiedLineTradeAgreement>\n" + " </ram:SpecifiedLineTradeAgreement>\n"
+ " <ram:SpecifiedLineTradeDelivery>\n" + " <ram:SpecifiedLineTradeDelivery>\n"
+ " <ram:BilledQuantity unitCode=\"" + XMLTools.encodeXML(currentItem.getProduct().getUnit()) + "\">" + " <ram:RequestedQuantity unitCode=\"" + XMLTools.encodeXML(currentItem.getProduct().getUnit()) + "\">"
+ quantityFormat(currentItem.getQuantity()) + "</ram:BilledQuantity>\n" + quantityFormat(currentItem.getQuantity()) + "</ram:RequestedQuantity>\n"
+ " </ram:SpecifiedLineTradeDelivery>\n" + " </ram:SpecifiedLineTradeDelivery>\n"
+ " <ram:SpecifiedLineTradeSettlement>\n" + " <ram:SpecifiedLineTradeSettlement>\n"
+ " <ram:ApplicableTradeTax>\n" + " <ram:ApplicableTradeTax>\n"
@@ -260,10 +257,10 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
+ " <ram:LineTotalAmount>" + currencyFormat(lc.getItemTotalNetAmount()) + " <ram:LineTotalAmount>" + currencyFormat(lc.getItemTotalNetAmount())
+ "</ram:LineTotalAmount>\n" // currencyID=\"EUR\" + "</ram:LineTotalAmount>\n" // currencyID=\"EUR\"
+ " </ram:SpecifiedTradeSettlementLineMonetarySummation>\n"; + " </ram:SpecifiedTradeSettlementLineMonetarySummation>\n";
if (currentItem.getAdditionalReferencedDocumentID() != null) { /* if (currentItem.getAdditionalReferencedDocumentID() != null) {
xml = xml + " <ram:AdditionalReferencedDocument><ram:IssuerAssignedID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:IssuerAssignedID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>\n"; xml = xml + " <ram:AdditionalReferencedDocument><ram:IssuerAssignedID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:IssuerAssignedID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>\n";
} }*/
xml = xml + " </ram:SpecifiedLineTradeSettlement>\n" xml = xml + " </ram:SpecifiedLineTradeSettlement>\n"
+ " </ram:IncludedSupplyChainTradeLineItem>\n"; + " </ram:IncludedSupplyChainTradeLineItem>\n";
@@ -333,7 +330,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
getTradePartyAsXML(this.trans.getDeliveryAddress(), false, true) + getTradePartyAsXML(this.trans.getDeliveryAddress(), false, true) +
"</ram:ShipToTradeParty>"; "</ram:ShipToTradeParty>";
} }
/*
xml += " <ram:ActualDeliverySupplyChainEvent>\n" xml += " <ram:ActualDeliverySupplyChainEvent>\n"
+ " <ram:OccurrenceDateTime>"; + " <ram:OccurrenceDateTime>";
@@ -344,21 +341,23 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
} }
xml += "</ram:OccurrenceDateTime>\n"; xml += "</ram:OccurrenceDateTime>\n";
xml += " </ram:ActualDeliverySupplyChainEvent>\n" xml += " </ram:ActualDeliverySupplyChainEvent>\n"
*/
/* /*
* + " <DeliveryNoteReferencedDocument>\n" + * + " <DeliveryNoteReferencedDocument>\n" +
* " <IssueDateTime format=\"102\">20130603</IssueDateTime>\n" + * " <IssueDateTime format=\"102\">20130603</IssueDateTime>\n" +
* " <ID>2013-51112</ID>\n" + * " <ID>2013-51112</ID>\n" +
* " </DeliveryNoteReferencedDocument>\n" * " </DeliveryNoteReferencedDocument>\n"
*/ */
+ " </ram:ApplicableHeaderTradeDelivery>\n" + " <ram:ApplicableHeaderTradeSettlement>\n" xml+= " </ram:ApplicableHeaderTradeDelivery>\n" + " <ram:ApplicableHeaderTradeSettlement>\n"
+ " <ram:PaymentReference>" + XMLTools.encodeXML(trans.getNumber()) + "</ram:PaymentReference>\n" // + " <ram:PaymentReference>" + XMLTools.encodeXML(trans.getNumber()) + "</ram:PaymentReference>\n"
+ " <ram:InvoiceCurrencyCode>" + trans.getCurrency() + "</ram:InvoiceCurrencyCode>\n"; + " <ram:OrderCurrencyCode>" + trans.getCurrency() + "</ram:OrderCurrencyCode>\n";
if (trans.getTradeSettlementPayment() != null) { if (trans.getTradeSettlementPayment() != null) {
for (final IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) { for (final IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) {
if (payment != null) { if (payment != null) {
hasDueDate = true; hasDueDate = true;
xml += payment.getSettlementXML(); // xml += payment.getSettlementXML();
} }
} }
} }
@@ -368,7 +367,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
if (payment instanceof IZUGFeRDTradeSettlementPayment) { if (payment instanceof IZUGFeRDTradeSettlementPayment) {
hasDueDate = true; hasDueDate = true;
} }
xml += payment.getSettlementXML(); // xml += payment.getSettlementXML();
} }
} }
} }
@@ -382,7 +381,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
if (amount != null) { if (amount != null) {
final String amountCategoryCode = amount.getCategoryCode(); final String amountCategoryCode = amount.getCategoryCode();
final boolean displayExemptionReason = CATEGORY_CODES_WITH_EXEMPTION_REASON.contains(amountCategoryCode); final boolean displayExemptionReason = CATEGORY_CODES_WITH_EXEMPTION_REASON.contains(amountCategoryCode);
xml += " <ram:ApplicableTradeTax>\n" /* xml += " <ram:ApplicableTradeTax>\n"
+ " <ram:CalculatedAmount>" + currencyFormat(amount.getCalculated()) + " <ram:CalculatedAmount>" + currencyFormat(amount.getCalculated())
+ "</ram:CalculatedAmount>\n" //currencyID=\"EUR\" + "</ram:CalculatedAmount>\n" //currencyID=\"EUR\"
+ " <ram:TypeCode>VAT</ram:TypeCode>\n" + " <ram:TypeCode>VAT</ram:TypeCode>\n"
@@ -391,6 +390,8 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
+ " <ram:CategoryCode>" + amountCategoryCode + "</ram:CategoryCode>\n" + " <ram:CategoryCode>" + amountCategoryCode + "</ram:CategoryCode>\n"
+ " <ram:RateApplicablePercent>" + " <ram:RateApplicablePercent>"
+ vatFormat(currentTaxPercent) + "</ram:RateApplicablePercent>\n" + " </ram:ApplicableTradeTax>\n"; + vatFormat(currentTaxPercent) + "</ram:RateApplicablePercent>\n" + " </ram:ApplicableTradeTax>\n";
*/
} }
} }
if ((trans.getDetailedDeliveryPeriodFrom() != null) || (trans.getDetailedDeliveryPeriodTo() != null)) { if ((trans.getDetailedDeliveryPeriodFrom() != null) || (trans.getDetailedDeliveryPeriodTo() != null)) {
@@ -460,7 +461,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
if (trans.getTradeSettlement() != null) { if (trans.getTradeSettlement() != null) {
for (final IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { for (final IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) {
if ((payment != null) && (payment instanceof IZUGFeRDTradeSettlementDebit)) { if ((payment != null) && (payment instanceof IZUGFeRDTradeSettlementDebit)) {
xml += payment.getPaymentXML(); // xml += payment.getPaymentXML();
} }
} }
} }
@@ -493,8 +494,8 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
+ " <ram:GrandTotalAmount>" + currencyFormat(calc.getGrandTotal()) + "</ram:GrandTotalAmount>\n" + " <ram:GrandTotalAmount>" + currencyFormat(calc.getGrandTotal()) + "</ram:GrandTotalAmount>\n"
// // // //
// currencyID=\"EUR\" // currencyID=\"EUR\"
+ " <ram:TotalPrepaidAmount>" + currencyFormat(calc.getTotalPrepaid()) + "</ram:TotalPrepaidAmount>\n" //+ " <ram:TotalPrepaidAmount>" + currencyFormat(calc.getTotalPrepaid()) + "</ram:TotalPrepaidAmount>\n"
+ " <ram:DuePayableAmount>" + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "</ram:DuePayableAmount>\n" //+ " <ram:DuePayableAmount>" + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "</ram:DuePayableAmount>\n"
+ " </ram:SpecifiedTradeSettlementHeaderMonetarySummation>\n"; + " </ram:SpecifiedTradeSettlementHeaderMonetarySummation>\n";
if (trans.getInvoiceReferencedDocumentID() != null) { if (trans.getInvoiceReferencedDocumentID() != null) {
xml = xml + " <ram:InvoiceReferencedDocument>\n" xml = xml + " <ram:InvoiceReferencedDocument>\n"

View File

@@ -29,6 +29,8 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
@@ -37,6 +39,7 @@ import java.util.GregorianCalendar;
@FixMethodOrder(MethodSorters.NAME_ASCENDING) @FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OXTest extends MustangReaderTestCase implements IExportableTransaction { public class OXTest extends MustangReaderTestCase implements IExportableTransaction {
final String TARGET_PDF = "./target/testout-OX.pdf"; final String TARGET_PDF = "./target/testout-OX.pdf";
final String TARGET_XML = "./target/testout-OX.xml";
protected class EdgeProduct implements IZUGFeRDExportableProduct { protected class EdgeProduct implements IZUGFeRDExportableProduct {
private String description, name, unit; private String description, name, unit;
@@ -268,6 +271,7 @@ public class OXTest extends MustangReaderTestCase implements IExportableTransact
oe.setTransaction(this); oe.setTransaction(this);
String theXML = new String(oe.getProvider().getXML(), StandardCharsets.UTF_8); String theXML = new String(oe.getProvider().getXML(), StandardCharsets.UTF_8);
assertTrue(theXML.contains("<rsm:SCRDMCCBDACIOMessageStructure")); assertTrue(theXML.contains("<rsm:SCRDMCCBDACIOMessageStructure"));
Files.write(Paths.get(TARGET_XML), theXML.getBytes(StandardCharsets.UTF_8));
oe.export(TARGET_PDF); oe.export(TARGET_PDF);
} catch (IOException e) { } catch (IOException e) {
fail("IOException should not be raised in testEdgeExport"); fail("IOException should not be raised in testEdgeExport");