]> wagnertech.de Git - mfinanz.git/blob - scripts/xmlinvoice-cli.pl
date error in mapping
[mfinanz.git] / scripts / xmlinvoice-cli.pl
1 #!/usr/bin/perl
2
3 # Script for test driving SL::XMLInvoice. Use on extracted XML invoice payloads
4 # (faktur-x.xml) from ZUGFeRD invoices or XRechnung invoices. PDF extraction is
5 # not supported.
6
7 BEGIN {
8   use FindBin;
9
10   unshift(@INC, $FindBin::Bin . '/../modules/override'); # Use our own versions of various modules (e.g. YAML).
11   push   (@INC, $FindBin::Bin . '/..');
12 }
13
14 use SL::XMLInvoice;
15
16 use utf8;
17
18 if ( scalar(@ARGV) == 0 )
19   {
20   die "usage: $0 <xml invoice file> [ ... <xml invoice file> ]\n";
21   }
22
23 foreach my $xml_file ( @ARGV) {
24   my $xml_data = "";
25
26   open F, $xml_file or die "Couldn't open $xml_file for reading: $!\n";
27
28   while (my $line = <F> ) { $xml_data .= $line; }
29   close F;
30
31   my $parser = SL::XMLInvoice->new($xml_data);
32
33   if ( ${$parser}{'result'} != SL::XMLInvoice->RES_OK )
34     {
35     die "Parser creation failed: ${$parser}{'message'}\n";
36     }
37
38   foreach my $key ( keys %{$parser->metadata} )
39     {
40     print "$key: |" . $parser->metadata->{$key} . "|\n";
41     }
42
43   foreach my $item ( @{$parser->items} ) {
44     my %line_item = %{$item};
45       foreach my $field ( keys %line_item ) {
46         print "  $field: |$line_item{$field}|\n";
47       }
48     print "\n";
49   }
50 }