X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=SL%2FHelper%2FCreatePDF.pm;h=06fb81918034af9cc8fcbb8624bae51be3b4c4db;hb=65604fea85234a5ae3e787f7cafd81ece6b8621d;hp=6a570fa92226e005335ddb4c9d9b105f53cc8ad4;hpb=6caf1000dabee234d86457ff433268cebd8e0447;p=kivitendo-erp.git diff --git a/SL/Helper/CreatePDF.pm b/SL/Helper/CreatePDF.pm index 6a570fa92..06fb81918 100644 --- a/SL/Helper/CreatePDF.pm +++ b/SL/Helper/CreatePDF.pm @@ -11,6 +11,7 @@ use File::Temp (); use File::Copy qw(move); use List::MoreUtils qw(uniq); use List::Util qw(first); +use Scalar::Util qw(blessed); use String::ShellQuote (); use SL::Common; @@ -20,6 +21,7 @@ use SL::MoreCommon; use SL::System::Process; use SL::Template; use SL::Template::LaTeX; +use SL::X; use Exporter 'import'; our @EXPORT_OK = qw(create_pdf merge_pdfs find_template); @@ -69,6 +71,16 @@ sub create_parsed_file { $form->{tmpfile} = $tmpfile; (undef, undef, $form->{template_meta}{tmpfile}) = File::Spec->splitpath($tmpfile); + my %driver_options; + eval { + %driver_options = _maybe_attach_zugferd_data($params{record}); + }; + + if (my $e = SL::X::ZUGFeRDValidation->caught) { + $form->cleanup; + die $e->message; + } + my $parser = SL::Template::create( type => ($params{template_type} || 'LaTeX'), source => $form->{IN}, @@ -76,6 +88,7 @@ sub create_parsed_file { myconfig => \%::myconfig, userspath => $tmpdir, variable_content_types => $params{variable_content_types}, + %driver_options, ); my $result = $parser->parse($temp_fh); @@ -250,6 +263,35 @@ sub find_template { return wantarray ? ($template, @template_files) : $template; } +sub _maybe_attach_zugferd_data { + my ($record) = @_; + + return if !blessed($record) + || !$record->can('customer') + || !$record->customer + || !$record->can('create_pdf_a_print_options') + || !$record->can('create_zugferd_data') + || !$record->customer->create_zugferd_invoices_for_this_customer; + + my $xmlfile = File::Temp->new; + $xmlfile->print($record->create_zugferd_data); + $xmlfile->close; + + my %driver_options = ( + pdf_a => $record->create_pdf_a_print_options(zugferd_xmp_data => $record->create_zugferd_xmp_data), + pdf_attachments => [ + { source => $xmlfile, + name => 'factur-x.xml', + description => $::locale->text('Factur-X/ZUGFeRD invoice'), + relationship => '/Alternative', + mime_type => 'text/xml', + } + ], + ); + + return %driver_options; +} + 1; __END__