From 81c38ab3290a75ff0fd7023c9252dad99d3dad6a Mon Sep 17 00:00:00 2001 From: Benediktwismans Date: Thu, 24 Jul 2025 14:21:21 +0200 Subject: [PATCH] =?UTF-8?q?Rabatt=20und=20Skonto=20hinzugef=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ZUGFERD-Profil wegen Skonto auf EXTENDED geändert. --- .settings/.gitignore | 7 ++ build/classes/systems/sdw/ZugferdUtil.class | Bin 10168 -> 12498 bytes src/main/java/systems/sdw/ZugferdUtil.java | 98 ++++++++++++++++---- 3 files changed, 87 insertions(+), 18 deletions(-) create mode 100644 .settings/.gitignore diff --git a/.settings/.gitignore b/.settings/.gitignore new file mode 100644 index 0000000..f35e1bc --- /dev/null +++ b/.settings/.gitignore @@ -0,0 +1,7 @@ +/.jsdtscope +/org.eclipse.core.resources.prefs +/org.eclipse.jdt.core.prefs +/org.eclipse.wst.common.component +/org.eclipse.wst.common.project.facet.core.xml +/org.eclipse.wst.jsdt.ui.superType.container +/org.eclipse.wst.jsdt.ui.superType.name diff --git a/build/classes/systems/sdw/ZugferdUtil.class b/build/classes/systems/sdw/ZugferdUtil.class index 4924724bdec1872ec0489d7583e8246325742050..a2b09db16c45cd751e14569180a3420bd4258f8e 100644 GIT binary patch literal 12498 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 bhNnl7L>-6O%6ZE9;LOjLD;FyIng0I=$`c4e delta 4326 zcmY*c34D~r761SD`o7(KxpoO*A&@{glMMmHsHq2Fz@`L35lEx8uq0o?O0pZXn}8Hq z6}<3fP`ramix-NZn>6t#YSDU2t+gISYOVD`ZLL~uwQqLAVSbyL_vXEMGxOg6y_s)c zxUb&#?05Z-0XUA|Jm@PRt5gX~gG=Mht0qsIGVR#OQ>vy-pE|jtxy8gVV!TL4sCuWl zyMs@XrJ8k$?(QYdx18fmtR{xmM$fjJ5|LLWwFNbEd{~b2EnI+O2#>wGBi5PFL+dSUfQN85wZ-DLHg&OuOK_>$=smu8 zBd#!Tx!5~9+#RlL3rAZkXRmIuI}(vt)WVhOfOqYX&0;QYN1N?VA7%Q( z`6eQ3c{sYV*-nHbZE+K~5Z+F^Dbf+KqX`qY5k^xing}-~3~W^geZ^yY;5Bh4k>3)w z+u9489@gSq5!cvlk#4*5T&-cCSLIt{{J$Yw(QvzX zWEKW2Jc38nZ0oq`kISaxiOz65F1Gd%&W^S_ZAqTX5qU;w*K0 zZa{sS<3H+uNU4cu#pzw~L?o^JyoDF=B4LJ`o0rU7R9izFBl9Mz`rIs!ftQI<>T_Q} zt_%?~YngpXBrZhch` z4qEsW`!il%cqF!;i(?OmB-+*9uF=the_8kf|5lrFX9V#T;p>RS1*fs79o26BkA-jW zt@c4WCg!=#UZEJRD<$!x{^lX7y!mK}+%5TF^%S9STpl7MV1 zp0K;@&UiSn#>YHN^U=+r;tm!P^+&lwht#8<$R9E~D4y$(h2kbh2-$8&TWuem9I0oG zBIc^k0tL$QSNX&bEU`G6W7NBWrDO0vjH{hpI}iouiB(!vv+ zGdNS-R`_GHny2dh)To1nbIdB9X7R_YRVNOs7G|!+I?hw;h82ydV!g!$x=@($6|q&? zwvSa@Xz_IQ@G#qB@C?1sfr1fgtH+p9+pdd=M3{}*RgFB$;x8cQuv#VcqTR7blU-Zm z2e`~)SQ6>RV3DVhO%|KgK(KhpGCil&;tD;-Cv$2t$?AuLY1vAPZCYk%d$VTF_rsYH z#4L7bfkyQqH;)NWJF1e=W9`(hz6^!K&&Ow=7-5;Cf8@qxkTV1NG>@=ALb&97wd@D>C+5K zd`J*7md93C*2Th7SuI}8 zYt-pQvt65r5{-b|1>siP%gwyr;B`buab(DCaSLxyUl$#pbuDkwfxelTsy;6)QX@tN zvL`L^@mBU2l)^h!Y>XBCt-M`r9XUO#ig#-LZ5pUr|J#vM9Q?Ja7&XtwyDT2V=_c<{ z8%9lb@ILj>s5%GlSB~P-9Nekq7SDEYm)cZZdR!IO`%uY;Ev61Rb3wRMioK70>^CSi zH79+ObR{Bfm5UeG)>s_iBkJSgaRwg~-|%rYtfX8pv`2u#Y`xznEj~qER^#DrTVgn| zE^Q$atDF;QvwxI66xOSQ!>cA{t?6oQu{)dP!Uzi{q(n%Rw6imzk-Tb-HR+4CqiDQ3 zP;#PLFnYSd*Z8`@KdH+{PjZI&XVp9U)*%0A@-5k`1n)3>OQfFsMYWG9O7fjd#0OET z1%J&TM`Kg7f0M+Kxq?W|{hb&hTwNq;9|b)v`G?%BBKaXEwcta!Iz^B{q8|8|@XLV4 zpE66WN*??n>O|!;IUg%2|3!>bkBlBC1@hl&YiYTgUlWtlRU&)X z5cOT@P$`@RW6M~gW{kaK^f)*%5gts!ScFi4O3c7i%*8Y`U^;$*D&-uvAc+s)5Jg~N z*Zb6E;@3Xypse|rkChLFEAg+#+H%=WKJp*~dJhjTS^o@O$-$xsRx zmi6JHo%4jcj621$iJ!=l`Gb8xR`SVORmhgMT1Jy6qfquW3NtYdb+XHOvcGx}Es$&E zrwMpb&IKIMM z0~=jJ%F{}Q^JLf~eLj)_7=UAkShl3Bb(i~93fIY@Z;q?^W(spE7ZAdz8NjhyxI&Dk3L1P1Wr!nZxXuAD>)iSsL zZ_@SR?DP{$Q%n?Ha%oAyVe!T{V^s*p5A{K^aMh>yV4=EH?X9YdMtQ3nI zHkd3hgGP#_uI6puUzjWldQzOw@SsE_gN-!;24Ja#Wf^khSvwR>C`Jp$qg5ch0>>jF zU|A_6ZHOU?i-f)u9oU6)@QU=WO8>S<_alz?k-#VD!k6fl2g6#ra2}^)9ZyA)3x#h$ z@&YbJf>Eqzmpq>}zSd-rkj9d*>>k9I!5B6R(j3T<3+^VNoEXYwxJ4)zipAJ%Lb+w( zEi7k90QSD1@heuyQ9i^5PG+S5{!2tSMfAL~p`~=3BBW2Inw-jMvb+ZDI5@tSZF>zY zH!$mmzaDu|$;@x%U_M>U)k~8`CXX!}V0Ggzp4iJ-0nScwPT7cyi!M&_CuJ2W&M!;x zr`o@cbnXq8jX^x-!euDHbhbkjx~MOO*0;HaRa5FL-4=!9`=Et_{6Bvo6nk6v25RXL*W0?-!@z^pH#F<^8lZ z?H0PFpAk)agg(2U?V2`(j`s5$O`Ae@_Di6I&eKZW{X7>qRyeJ;rl04DNT_xFya1RV z;DyzCjSYRgq@Nq5;<&cMSM3hEr97z@L-UdqQoW>#1zpmY_3?7aa9%5(RK2{h+7onZ zaNaV&DoL=Qrz`GAKF9&$QOI+IF+;{-hF^rtBg{MEoFm-x;+#QlR6e&= z9NGe}3A&PLCPk@Ql@cgE)W_aFKHAUU0=<}8ZOXCD6rT`>ac|JvDG^>Tb#*f~4kqif zQmp|c8FL-{xL#6si`3^EP=y<%e&2-oxEW_ihP2{VL2M7!VXIiULu}kB+S`&M-i~d! z3p;SPd}!T+$8j&7!F`g+JMbp%$9s4HAIs<87uYSI6c5pZhnbCD4##ge0sWHAk8ma) z<$OHGGx4}2<{rVv6TDEqh14=ixqMmfEi;|yMM<6Mo8dN4X|U1YD+Yq{1Ld~z z$Rl8%IM=~H@Kxz+ki|DZzL{>{PPhBh?SXXrZn}Lh-M*i0KS;M9rQ1)^?Wg=)Ea}(y SKluf}gg3~O_!a*%Blv&!Pd&c? diff --git a/src/main/java/systems/sdw/ZugferdUtil.java b/src/main/java/systems/sdw/ZugferdUtil.java index 71d6aa2..aef0747 100644 --- a/src/main/java/systems/sdw/ZugferdUtil.java +++ b/src/main/java/systems/sdw/ZugferdUtil.java @@ -16,12 +16,17 @@ import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.font.PDType1Font; import org.apache.pdfbox.pdmodel.font.Standard14Fonts; +import org.mustangproject.Allowance; import org.mustangproject.BankDetails; +import org.mustangproject.CashDiscount; +import org.mustangproject.Charge; import org.mustangproject.Contact; import org.mustangproject.Invoice; import org.mustangproject.Item; import org.mustangproject.Product; import org.mustangproject.TradeParty; +import org.mustangproject.ZUGFeRD.PDFAConformanceLevel; +import org.mustangproject.ZUGFeRD.Profile; import org.mustangproject.ZUGFeRD.ZUGFeRDExporterFromA3; import org.mustangproject.ZUGFeRD.ZUGFeRDImporter; @@ -34,7 +39,13 @@ public class ZugferdUtil { public static void main(String[] args) throws IOException, JSONException{ - String originalPath="/Users/benediktwismans/tmp/rechnung_sdw.2025.06241.pdf"; + +// readZugferdDaten(new File("/Users/benediktwismans/tmp/rechnung_sdw.2025.06253.pdf")); +// +// System.exit(0); + + + String originalPath="/Users/benediktwismans/tmp/rechnung.pdf"; //String originalPath="/Users/benediktwismans/tmp/rechnung_sdw.2025.06234.pdf"; String copyPath="/Users/benediktwismans/tmp/zugferd.pdf"; @@ -44,8 +55,8 @@ public class ZugferdUtil { File pdf=new File(copyPath); // JSON - String content = Files.readString(Path.of("/Users/benediktwismans/tmp/sdw.json"), Charset.forName("UTF-8")); - // String content = Files.readString(Path.of("/Users/benediktwismans/tmp/zugferd.json"), Charset.forName("UTF-8")); +// String content = Files.readString(Path.of("/Users/benediktwismans/tmp/sdw.json"), Charset.forName("UTF-8")); + String content = Files.readString(Path.of("/Users/benediktwismans/tmp/zugferd.json"), Charset.forName("UTF-8")); JSONObject json=new JSONObject(content); System.out.println(json.toString(3)); @@ -64,9 +75,10 @@ public class ZugferdUtil { ze.setProducer("SDW Bischberg Dipl.Wirtsch.-Inf. Benedikt Wismans"); ze.setCreator("Benedikt Wismans"); -// ze.setZUGFeRDVersion(2); -// ze.setConformanceLevel(PDFAConformanceLevel.UNICODE); - + ze.setZUGFeRDVersion(2); + ze.setConformanceLevel(PDFAConformanceLevel.UNICODE); + ze.setProfile("EXTENDED"); + /* * Mustangproject checks if the input PDF/A file looks halfway valid and * the XML data contains 0) { + item.addAllowance(new Allowance().setPercent(new BigDecimal(position.getString("rabatt"))).setTaxPercent(new BigDecimal(produkt.getString("steuersatz")))); +// Charge ist ein Zuschlag, wird nicht unterstützt +// item.addCharge(new Charge().setPercent(new BigDecimal(position.getString("rabatt"))).setTaxPercent(new BigDecimal(produkt.getString("steuersatz")))); + } invoice.addItem(item); } + + if (json.getDouble("skonto")>0 && json.getInteger("skontotage")>0) { + + invoice.addCashDiscount(new CashDiscount(new BigDecimal(json.getString("skonto")), json.getInteger("skontotage"))); + } + ze.setTransaction(invoice); } @@ -142,11 +165,37 @@ public class ZugferdUtil { } + public static void readZugferdDaten(File pdf) throws IOException { + + ZUGFeRDImporter zi=new ZUGFeRDImporter(pdf.getCanonicalPath()); + + System.out.println("getInvoiceID " + zi.getInvoiceID()); + System.out.println("getInvoiceCurrencyCode " + zi.getInvoiceCurrencyCode()); + System.out.println("getDueDate " + zi.getDueDate()); + System.out.println("getIBAN " + zi.getIBAN()); + System.out.println("getBIC " + zi.getBIC()); + System.out.println("getLineTotalAmount " + zi.getLineTotalAmount()); + System.out.println("getTaxTotalAmount " + zi.getTaxTotalAmount()); + System.out.println("getAmount " + zi.getAmount()); + String profil="getZUGFeRDProfil "+zi.getZUGFeRDProfil(); + String version="getVersion ?"; + try { + version="getVersion "+String.valueOf(zi.getVersion()); + } catch (Exception e) { + e.printStackTrace(); + } + + System.out.println(profil); + System.out.println(version); + } + + + public static File appendZugferdDaten(File pdf) throws IOException { ZUGFeRDImporter zi=new ZUGFeRDImporter(pdf.getCanonicalPath()); - String[] zugferddata=new String[8]; + String[] zugferddata=new String[10]; zugferddata[0]="getInvoiceID " + zi.getInvoiceID(); zugferddata[1]="getInvoiceCurrencyCode " + zi.getInvoiceCurrencyCode(); zugferddata[2]="getDueDate " + zi.getDueDate(); @@ -156,6 +205,14 @@ public class ZugferdUtil { zugferddata[6]="getTaxTotalAmount " + zi.getTaxTotalAmount(); zugferddata[7]="getAmount " + zi.getAmount(); + org.mustangproject.ZUGFeRD.PostalTradeAddress buyer=zi.getBuyerTradePartyAddress(); + zugferddata[8]="getBuyerTradeParty "+zi.getBuyerTradePartyName(); //+" "+buyer.getPostcodeCode()+" "+buyer.getCityName()+" "+buyer.getLineOne(); + + org.mustangproject.ZUGFeRD.PostalTradeAddress seller=zi.getSellerTradePartyAddress(); + zugferddata[9]="getSellerTradeParty "+zi.getHolder(); //+" "+seller.getPostcodeCode()+" "+seller.getCityName()+" "+seller.getLineOne(); + + + String profil="getZUGFeRDProfil "+zi.getZUGFeRDProfil(); String version="getVersion ?"; try { @@ -172,6 +229,9 @@ public class ZugferdUtil { System.out.println(zugferddata[5]); System.out.println(zugferddata[6]); System.out.println(zugferddata[7]); + System.out.println(zugferddata[8]); + System.out.println(zugferddata[9]); + System.out.println(profil); System.out.println(version); @@ -190,17 +250,19 @@ public class ZugferdUtil { write(contentStream, 30,690, "NACH dem Hinzufügen zu diesem PDF-Dokument wieder ausgelesen und"); write(contentStream, 30,675, "sind im folgenden aufgeführt."); - write(contentStream, 100,600, zugferddata[0]); - write(contentStream, 100,580, zugferddata[1]); - write(contentStream, 100,560, zugferddata[2]); - write(contentStream, 100,540, zugferddata[3]); - write(contentStream, 100,520, zugferddata[4]); - write(contentStream, 100,500, zugferddata[5]); - write(contentStream, 100,480, zugferddata[6]); - write(contentStream, 100,460, zugferddata[7]); + write(contentStream, 30,600, zugferddata[0]); + write(contentStream, 30,580, zugferddata[1]); + write(contentStream, 30,560, zugferddata[2]); + write(contentStream, 30,540, zugferddata[3]); + write(contentStream, 30,520, zugferddata[4]); + write(contentStream, 30,500, zugferddata[5]); + write(contentStream, 30,480, zugferddata[6]); + write(contentStream, 30,460, zugferddata[7]); + write(contentStream, 30,440, zugferddata[8]); + write(contentStream, 30,420, zugferddata[9]); - write(contentStream, 30,420, profil); - write(contentStream, 30,400, version); + write(contentStream, 30,380, profil); + write(contentStream, 30,360, version); contentStream.close();