X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FForm.pm;h=9f0cf11bc3385cfbeaac74b3070906fa6b111883;hb=574855561514a864f554776c421e7037196e714d;hp=a11b7adb672b2ed45f7ae455fc6a5b30665c2a2c;hpb=9bf9acdff05a8047d0561c68cdd93b0a03deb568;p=kivitendo-erp.git diff --git a/SL/Form.pm b/SL/Form.pm index a11b7adb6..9f0cf11bc 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -40,6 +40,7 @@ package Form; use Carp; use Data::Dumper; +use Carp; use CGI; use Cwd; use Encode; @@ -307,8 +308,7 @@ sub error { $self->show_generic_error($msg); } else { - print STDERR "Error: $msg\n"; - ::end_of_request(); + confess "Error: $msg\n"; } $main::lxdebug->leave_sub(); @@ -472,7 +472,7 @@ sub header { $layout->use_javascript("$_.js") for (qw( jquery jquery-ui jquery.cookie jquery.checkall jquery.download - jquery/jquery.form client_js + jquery/jquery.form jquery/fixes client_js common part_selection switchmenuframe autocomplete_part ), "jquery/ui/i18n/jquery.ui.datepicker-$::myconfig{countrycode}"); @@ -594,8 +594,11 @@ sub _prepare_html_template { if (-f "templates/webpages/${file}.html") { $file = "templates/webpages/${file}.html"; + } elsif (ref $file eq 'SCALAR') { + # file is a scalarref, use inline mode } else { my $info = "Web page template '${file}' not found.\n"; + $::form->header; print qq|
$info
|; ::end_of_request(); } @@ -673,6 +676,7 @@ sub init_template { 'COMPILE_EXT' => '.tcc', 'COMPILE_DIR' => $::lx_office_conf{paths}->{userspath} . '/templates-cache', 'ERROR' => 'templates/webpages/generic/exception.html', + 'ENCODING' => 'utf8', })) || die; } @@ -694,7 +698,6 @@ sub show_generic_error { } if ($::request->is_ajax) { - $::lxdebug->message(0, "trying to render AJAX response..."); SL::ClientJS->new ->error($error) ->render(SL::Controller::Base->new); @@ -1019,7 +1022,8 @@ sub parse_template { file_name => $self->{IN}, form => $self, myconfig => $myconfig, - userspath => $userspath); + userspath => $userspath, + %{ $self->{TEMPLATE_DRIVER_OPTIONS} || {} }); # Copy the notes from the invoice/sales order etc. back to the variable "notes" because that is where most templates expect it to be. $self->{"notes"} = $self->{ $self->{"formname"} . "notes" }; @@ -1080,8 +1084,9 @@ sub parse_template { } close OUT if $self->{OUT}; - - my $copy_to_webdav = $::instance_conf->get_webdav && $::instance_conf->get_webdav_documents && !$self->{preview} && $self->{tmpdir} && $self->{tmpfile} && $self->{type}; + # check only one flag (webdav_documents) + # therefore copy to webdav, even if we do not have the webdav feature enabled (just archive) + my $copy_to_webdav = $::instance_conf->get_webdav_documents && !$self->{preview} && $self->{tmpdir} && $self->{tmpfile} && $self->{type}; if ($self->{media} eq 'file') { copy(join('/', $self->{cwd}, $userspath, $self->{tmpfile}), $out =~ m|^/| ? $out : join('/', $self->{cwd}, $out)) if $template->uses_temp_file; @@ -1105,15 +1110,16 @@ sub parse_template { $mail->{to} = $self->{EMAIL_RECIPIENT} ? $self->{EMAIL_RECIPIENT} : $self->{email}; $mail->{from} = qq|"$myconfig->{name}" <$myconfig->{email}>|; $mail->{fileid} = time() . '.' . $$ . '.'; - $myconfig->{signature} =~ s/\r//g; + my $full_signature = $self->create_email_signature(); + $full_signature =~ s/\r//g; # if we send html or plain text inline if (($self->{format} eq 'html') && ($self->{sendmode} eq 'inline')) { $mail->{contenttype} = "text/html"; $mail->{message} =~ s/\r//g; $mail->{message} =~ s/\n/
\n/g; - $myconfig->{signature} =~ s/\n/
\n/g; - $mail->{message} .= "
\n--
\n$myconfig->{signature}\n
"; + $full_signature =~ s/\n/
\n/g; + $mail->{message} .= $full_signature; open(IN, "<", $self->{tmpfile}) or $self->error($self->cleanup . "$self->{tmpfile} : $!"); @@ -1129,9 +1135,7 @@ sub parse_template { "name" => $attachment_name }]; } - $mail->{message} =~ s/\r//g; - $mail->{message} .= "\n-- \n$myconfig->{signature}"; - + $mail->{message} .= $full_signature; } my $err = $mail->send(); @@ -1955,8 +1959,8 @@ sub get_duedate { my $terms = $self->{payment_id} ? SL::DB::PaymentTerm->new(id => $self->{payment_id}) ->load : $self->{customer_id} ? SL::DB::Customer ->new(id => $self->{customer_id})->load->payment : $self->{vendor_id} ? SL::DB::Vendor ->new(id => $self->{vendor_id}) ->load->payment - : croak("Missing field in \$::form: payment_id, customer_id or vendor_id"); - + : $self->{invdate} ? undef # no payment terms, therefore invdate == duedate + : croak("Missing field in \$::form: payment_id, customer_id, vendor_id or invdate"); my $duedate = $terms ? $terms->calc_date(reference_date => $reference_date)->to_kivitendo : undef; $main::lxdebug->leave_sub(); @@ -3326,6 +3330,13 @@ sub prepare_for_printing { # compatibility. $self->{$_} = $defaults->$_ for qw(company address taxnumber co_ustid duns sepa_creditor_id); + $self->{"myconfig_${_}"} = $::myconfig{$_} for grep { $_ ne 'dbpasswd' } keys %::myconfig; + + if (!$self->{employee_id}) { + $self->{"employee_${_}"} = $::myconfig{$_} for qw(email tel fax name signature); + $self->{"employee_${_}"} = $defaults->$_ for qw(address businessnumber co_ustid company duns sepa_creditor_id taxnumber); + } + # set shipto from billto unless set my $has_shipto = any { $self->{"shipto$_"} } qw(name street zipcode city country contact); if (!$has_shipto && ($self->{type} =~ m/^(?:purchase_order|request_quotation)$/)) { @@ -3344,6 +3355,10 @@ sub prepare_for_printing { $output_longdates = 1; } + $self->{myconfig_output_dateformat} = $output_dateformat; + $self->{myconfig_output_longdates} = $output_longdates; + $self->{myconfig_output_numberformat} = $output_numberformat; + # Retrieve accounts for tax calculation. IC->retrieve_accounts(\%::myconfig, $self, map { $_ => $self->{"id_$_"} } 1 .. $self->{rowcount}); @@ -3484,6 +3499,21 @@ sub reformat_numbers { $::myconfig{numberformat} = $saved_numberformat; } +sub create_email_signature { + + my $client_signature = $::instance_conf->get_signature; + my $user_signature = $::myconfig{signature}; + + my $signature = ''; + if ( $client_signature or $user_signature ) { + $signature = "\n\n-- \n"; + $signature .= $user_signature . "\n" if $user_signature; + $signature .= $client_signature . "\n" if $client_signature; + }; + return $signature; + +}; + sub layout { my ($self) = @_; $::lxdebug->enter_sub;