From: Kilian Saffran Date: Wed, 13 Mar 2019 17:29:05 +0000 (+0100) Subject: auto commit on 2019-03-13 18:29 X-Git-Url: http://cloud.dks.lu/git/?a=commitdiff_plain;h=363a10f8cd1974cbc117797932429f025df9ca62;p=dks_server.git auto commit on 2019-03-13 18:29 --- diff --git a/bin/createpdfA4invoice.pl b/bin/createpdfA4invoice.pl index ff11be7..fe41671 100644 --- a/bin/createpdfA4invoice.pl +++ b/bin/createpdfA4invoice.pl @@ -9,15 +9,15 @@ use Getopt::Long; use utf8; use Encode; use JSON::PP; -use Data::Dumper; +#use Data::Dumper; my $pdf = PDF::API2->new(); my $strpdfdata =""; -my $pdfdata =(); -my $datafile = ""; -# my $datafile=dirname($0).'/dkspdf.json'; +my $templatedata =(); +my $data = ""; my $pdfout = ""; +my $lang = "fr"; # my $datafile=dirname($0).'/pdftest.pdf'; -GetOptions ("data|d=s" => \$datafile, "pdfoutput|o=s" => \$pdfout); +GetOptions ("data|d=s" => \$data, "pdfoutput|o=s" => \$pdfout, "lang|l=s" =>\$lang); if (! -e $datafile){ print "file $datafile does not exist!\n"; exit(1); @@ -26,13 +26,65 @@ if (-e $pdfout){ unlink($pdfout); } -open(DATA,$datafile); + + +my $strtemplatedata = '{ + "section":{ + "12headerimg":{"x":50,"y":755,"width":160,"type":"image"}, + "02headerline":{"type":"line","color":"black","width":1,"start":{"x":50,"y":753},"end":{"x":285,"y":753}}, + "03dkstext":{"type":"text","align":"center","font":{"name":"Helvetica","size":9},"x":200,"y":743}, + "04dksfooter":{"type":"text","align":"center","font":{"name":"Helvetica","size":10},"x":297.5,"y":25,"lineheight":15}, + "05adrline":{"type":"line","color":"black","width":1,"start":{"x":52,"y":662},"end":{"x":280,"y":662}}, + "06header_right":{"type":"text","align":"right","font":{"name":"Helvetica","size":11},"x":550,"y":820,"lineheight":14}, + "07reporttype":{"type":"text","align":"right","font":{"name":"HelveticaBold","size":30},"x":550,"y":704,"lineheight":14}, + "08tbladdress":{"type":"table","x":"50","w":"230","font":"Helvetica","font_size":"11","start_y":"680","start_h":"620","next_y":"750","next_h":"500","padding":"2","padding_bottom":"3","padding_top":"3","padding_right":"5","column_props":[{ "min_w":"200", "max_w":"200", "justify":"left" }],"header_props":[{ "font_size":"11", "font":"HelveticaBold", "bg_color":"white", "font_color":"black", "repeat":"1", "justify":"left" }],"border":"0"}, + "09tblinvoicedata":{"type":"table","x":"390","w":"175","font":"Helvetica","font_size":"11","start_y":"680","start_h":"620","next_y":"750","next_h":"500","padding":"2","padding_bottom":"3","padding_top":"3","padding_right":"5","column_props":[ { "min_w":"70","max_w":"70","justify":"left" },{ "min_w":"90","max_w":"90","justify":"left","font":"HelveticaBold" } ],"border":"0"}, + "10tblproductdata":{"type":"table","x":"50","w":"500","font":"Helvetica","font_size":"11","start_y":"570","start_h":"300","next_y":"750","next_h":"500","padding":"2","padding_left":"5","padding_bottom":"10","padding_top":"5","padding_right":"5","header_props":[{"font_size":"11","font":"HelveticaBold","bg_color":"#e6e6e6","font_color":"black","repeat":"1","justify":"center" }],"column_props":[ { },{ "min_w":"40","max_w":"40","justify":"right" },{ "min_w":"20","max_w":"20","justify":"right" },{ "min_w":"50","max_w":"50","justify":"right","font":"Helvetica" } ],"border":"0.5"}, + "11totalsums":{"type":"table","x":"349.5","w":"201","font":"Helvetica","font_size":"11","start_y":"%%10tblproductdata:y%%","start_h":"150","next_y":"750","next_h":"500","padding":"2","padding_left":"5","padding_bottom":"10","padding_top":"5","padding_right":"5","column_props":[ { "justify":"right" },{ "min_w":"70","max_w":"70","justify":"right","font":"HelveticaBold" } ],"border":"0.5"} + }, + "data":{"fr":{ + "12headerimg":{"src":"'.dirname($0).'/dks_1000.png"}, + "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]}, + "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]}, + "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]}, + "08tbladdress":{"text":[ ["À:"], ["%%RECEPIENT%%"], ["%%ADDRESS"], ["%%COUNTYSHORT%%-%%ZIP%% %%CITY%%"] ]}, + "07reporttype":{"text":["Facture"]}, + "09tblinvoicedata":{"text":[ ["NO. Facture","%%REFERENCE%%"], ["Date","%%INVOICEDATE%%"], ["Échéanche","%%REMINDERDATE%%"], ["No Client","%%CLIENTNUMBER%%"], ["Ust-Id","%%VATID%%"] ]}, + "10tblproductdata":{"text":[ ["Produit", "Qu.","Prix unitaire","Prix Net"], ["%%PRODUCT%%", "%%QUANTIY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]}, + "11totalsums":{"text":[ ["Total Net :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["TVA (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%"], ["Total à payer:","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ]} + },"de":{ + "12headerimg":{"src":"'.dirname($0).'/dks_1000.png"}, + "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]}, + "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]}, + "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]}, + "08tbladdress":{"text":[ ["An:"], ["%%RECEPIENT%%"], ["%%ADDRESS"], ["%%COUNTYSHORT%%-%%ZIP%% %%CITY%%"] ]}, + "07reporttype":{"text":["Rechnung"]}, + "09tblinvoicedata":{"text":[ ["Rechnungs-Nr.","%%REFERENCE%%"], ["Datum","%%INVOICEDATE%%"], ["Fälligkeit","%%REMINDERDATE%%"], ["Kunden-Nr.","%%CLIENTNUMBER%%"], ["Ust-Id","%%VATID%%"] ]}, + "10tblproductdata":{"text":[ ["Produkt", "Anzahl","EinzelPreis","Netto-Preis"], ["%%PRODUCT%%", "%%QUANTIY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]}, + "11totalsums":{"text":[ ["Gesamt Netto :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["MwSt. (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%€"], ["Gesamt Brutto :","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ]} + },"en":{ + "12headerimg":{"src":"'.dirname($0).'/dks_1000.png"}, + "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]}, + "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]}, + "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]}, + "08tbladdress":{"text":[ ["To:"],["%%RECEPIENT%%"], ["%%ADDRESS"], ["%%COUNTYSHORT%%-%%ZIP%% %%CITY%%"] ]}, + "07reporttype":{"text":["Invoice"]}, + "09tblinvoicedata":{"text":[ ["Reference.","%%REFERENCE%%"], ["Date","%%INVOICEDATE%%"], ["Due Date","%%REMINDERDATE%"], ["Client-Id","%%CLIENTNUMBER%%"], ["VAT-Id","%%VATID%%"] ]}, + "10tblproductdata":{"text":[ ["Product", "Quantity","Unit Amount","Net Amount"], ["%%PRODUCT%%", "%%QUANTIY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]}, + "11totalsums":{"text":[ ["Net Total :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["VAT (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%€"], ["Total to Pay:","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ] + }, + } +}'; + + +open(DATA,$strtemplatedata); while (my $l = ){ $strpdfdata .= $l; } close(DATA); -$pdfdata = JSON::PP::decode_json($strpdfdata); - +$templatedata = JSON::PP::decode_json($strpdfdata); +my $pdfdata->{section} = $templatedata->{section}; +$pdfdata->{data} = $templatedata->{data}->{$lang}; $pdf->preferences({-fitwindow => 1}); @@ -40,9 +92,9 @@ $pdf->preferences({-fitwindow => 1}); my $page = $pdf->page(); $page->mediabox('A4'); -#height: 842 -#width; 595 -# + + + my $endpoints = (); foreach my $s (sort keys(%{$pdfdata->{section}})){ $endpoints->{$s} = {final_y => '', lastpage => 1,pages => 1}; @@ -168,3 +220,5 @@ sub addtable(){ } + +