使用mustang创建最小、基本和基本的WL factor语言 - x



我尝试使用mustang库创建一个facturx。我发现了如何创建EN16931 factor -x xml以及如何将其嵌入pdf。

我使用了以下代码示例:

ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application")
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors()
.load("blanko.pdf");
Invoice i = new Invoice()
.setIssueDate(new Date())
.setDueDate(new Date())
.setDetailedDeliveryPeriod(new Date(), new Date())
.setDeliveryDate(new Date())
.setSender(
new TradeParty("ME", "teststr", "55232", "teststadt", "DE")
.addTaxID("4711")
.addVATID("DE0815")
.addBankDetails(new BankDetails("DE88200800000970375700", "COBADEFFXXX")))
.setRecipient(
new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")
.addVATID("DE0815"))
.setNumber("NUMFACTURE")
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(123), new BigDecimal(1)))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(123), new BigDecimal(1)))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(123), new BigDecimal(1)))
.setCreditNote();
ze.setTransaction(i);
ze.export("factur-x-en16931.pdf");

这段代码运行良好。我确实用有效的XML数据生成了一个有效的PDF…我的问题是关于较低的因素水平,如最低,基本,基本的WL。

XML应该是这样的:

<?xml version='1.0' encoding='UTF-8'?>
<rsm:CrossIndustryInvoice 
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<rsm:ExchangedDocumentContext>
<ram:BusinessProcessSpecifiedDocumentContextParameter>
<ram:ID>A1</ram:ID>
</ram:BusinessProcessSpecifiedDocumentContextParameter>
<ram:GuidelineSpecifiedDocumentContextParameter>
<ram:ID>urn:factur-x.eu:1p0:minimum</ram:ID>
</ram:GuidelineSpecifiedDocumentContextParameter>
</rsm:ExchangedDocumentContext>
<rsm:ExchangedDocument>
<ram:ID>NUMFCADNO22</ram:ID>
<ram:TypeCode>380</ram:TypeCode>
<ram:IssueDateTime>
<udt:DateTimeString format="102">20220506</udt:DateTimeString>
</ram:IssueDateTime>
</rsm:ExchangedDocument>
<rsm:SupplyChainTradeTransaction>
<ram:ApplicableHeaderTradeAgreement>
<ram:SellerTradeParty>
<ram:Name>ACME</ram:Name>
<ram:SpecifiedLegalOrganization>
<ram:ID schemeID="0002">3810011234560073</ram:ID>
</ram:SpecifiedLegalOrganization>
<ram:PostalTradeAddress>
<ram:CountryID>FR</ram:CountryID>
</ram:PostalTradeAddress>
<ram:SpecifiedTaxRegistration>
<ram:ID schemeID="VA">FR17143232666</ram:ID>
</ram:SpecifiedTaxRegistration>
</ram:SellerTradeParty>
<ram:BuyerTradeParty>
<ram:Name>Client</ram:Name>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeSettlement>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:TaxBasisTotalAmount>200.00</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">40.00</ram:TaxTotalAmount>
<ram:GrandTotalAmount>240.00</ram:GrandTotalAmount>
<ram:DuePayableAmount>240.00</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>
</rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

我的问题是,我有问题创建这样的附加文件。这里,我需要设置:

  • IssueDateTime
  • 卖方名称(但构造器需要所有信息)
  • 卖方增值税编号
  • <
  • 买家名称/gh>货币
    • 税基总额
    • 税收总额
    • 总金额
    • 到期应付金额

我部分找到了如何设置配置文件。

ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1()
.setProducer("My Application")
.setCreator(System.getProperty("user.name"))
.setZUGFeRDVersion(2)
.setProfile("MINIMUM")
.ignorePDFAErrors()
.load("blanko.pdf");

我在定义发票细节方面有问题:

Invoice i = new Invoice()
.setIssueDate(new Date())                                                                                   
// .setDueDate(new Date()) ==> not required
// .setDetailedDeliveryPeriod(new Date(), new Date()) ==> not required
// .setDeliveryDate(new Date()) ==> not required
.setSender(
new TradeParty("ACME", "", "", "", "FR")
.addVATID("FR17143232666"))
.setRecipient(
new TradeParty("Client test MOA", "", "", "", "")
.addVATID("DE0815"))
.setNumber("NUMFACTURE")
.setCurrency("EUR")
.setTotalPrepaidAmount(new BigDecimal("450.00"));
ze.setTransaction(i);
ze.export("factur-x-min.pdf");

我没有找到如何在Mustang中设置所需元素的值,并且我有空指针异常,例如关于日期。

贸易协议是有缺陷的,信用备忘录是有缺陷的,最低配置文件是最有缺陷的。其中大部分应该在今天的2.6.0中修复,我还创建了一个自动测试,它可能会完成您在https://github.com/ZUGFeRD/mustangproject/blob/master/library/src/test/java/org/mustangproject/ZUGFeRD/ProfilesMinimumBasicWLTest.java

上想要做的大部分工作。你是对的,这真的很伤人,你不只是提出一个Github问题,在邮件列表https://groups.google.com/g/zugferd或通过矩阵(https://app.element.io/#/room/#facturx:matrix.org)提到它。

这是我第二次通过Stackoverflow了解Chorus Pro的要求(此外,你从哪里得到你的样本?),如果我知道的话,我可能在三个月前就解决了这个问题。

圣诞快乐,Jochen

PS:我相信在我之前调查过的stackoverflow遇到的背景下,BusinessProcessSpecifiedDocumentContextParameter=A1实际上可能在Chorus Pro(即B2G)中是可选的,如果这在B2B中有任何不同,我会感到惊讶。

最新更新