X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/1ca98d42a3b628007035e89bb3763fe327b05c39..b8741ec3:/bin/mozilla/ap.pl diff --git a/bin/mozilla/ap.pl b/bin/mozilla/ap.pl index 98f6df750..b45cb99c5 100644 --- a/bin/mozilla/ap.pl +++ b/bin/mozilla/ap.pl @@ -103,6 +103,7 @@ sub load_record_template { $template->substitute_variables; # Clean the current $::form before rebuilding it from the template. + my $form_defaults = delete $::form->{form_defaults}; delete @{ $::form }{ grep { !m{^(?:script|login)$}i } keys %{ $::form } }; # Fill $::form from the template. @@ -114,7 +115,7 @@ sub load_record_template { $::form->{AP_chart_id} = $template->ar_ap_chart_id; $::form->{transdate} = $today->to_kivitendo; $::form->{duedate} = $today->to_kivitendo; - $::form->{rowcount} = @{ $template->items } + 1; + $::form->{rowcount} = @{ $template->items }; $::form->{paidaccounts} = 1; $::form->{$_} = $template->$_ for qw(department_id ordnumber taxincluded notes); @@ -150,9 +151,14 @@ sub load_record_template { $::form->{"project_id_${row}"} = $item->project_id; } + $::form->{$_} = $form_defaults->{$_} for keys %{ $form_defaults // {} }; + flash('info', $::locale->text("The record template '#1' has been loaded.", $template->template_name)); - update(); + update( + keep_rows_without_amount => 1, + dont_add_new_row => 1, + ); } sub save_record_template { @@ -165,7 +171,7 @@ sub save_record_template { $js->dialog->close('#record_template_dialog'); my @items = grep { - $_->{chart_id} && (($_->{tax_id} // '') ne '') && ($_->{amount1} != 0) + $_->{chart_id} && (($_->{tax_id} // '') ne '') } map { +{ chart_id => $::form->{"AP_amount_chart_id_${_}"}, amount1 => $::form->parse_amount(\%::myconfig, $::form->{"amount_${_}"}), @@ -430,7 +436,7 @@ sub form_header { my $follow_up_vc = $form->{vendor_id} ? SL::DB::Vendor->load_cached($form->{vendor_id})->name : ''; my $follow_up_trans_info = "$form->{invnumber} ($follow_up_vc)"; - $::request->layout->add_javascripts("autocomplete_chart.js", "autocomplete_customer.js", "show_vc_details.js", "show_history.js", "follow_up.js", "kivi.Draft.js", "kivi.GL.js", "kivi.RecordTemplate.js"); + $::request->layout->add_javascripts("autocomplete_chart.js", "autocomplete_customer.js", "show_vc_details.js", "show_history.js", "follow_up.js", "kivi.Draft.js", "kivi.GL.js", "kivi.RecordTemplate.js", "kivi.File.js"); my $transdate = $::form->{transdate} ? DateTime->from_kivitendo($::form->{transdate}) : DateTime->today_local; my $first_taxchart; @@ -584,6 +590,8 @@ sub show_draft { } sub update { + my %params = @_; + $main::lxdebug->enter_sub(); my $form = $main::form; @@ -605,7 +613,7 @@ sub update { my (@a, $j, $totaltax); for my $i (1 .. $form->{rowcount}) { $form->{"amount_$i"} = $form->parse_amount(\%myconfig, $form->{"amount_$i"}); - if ($form->{"amount_$i"}) { + if ($form->{"amount_$i"} || $params{keep_rows_without_amount}) { push @a, {}; $j = $#a; my ($taxkey, $rate) = split(/--/, $form->{"taxchart_$i"}); @@ -632,7 +640,7 @@ sub update { IR->get_vendor(\%::myconfig, $form); } - $form->{rowcount} = $count + 1; + $form->{rowcount} = $count + ($params{dont_add_new_row} ? 0 : 1); $form->{invtotal} = ($form->{taxincluded}) ? $form->{invtotal} : $form->{invtotal} + $totaltax; @@ -658,7 +666,7 @@ sub update { $form->{oldinvtotal} = $form->{invtotal}; $form->{oldtotalpaid} = $totalpaid; - &display_form; + display_form(); $main::lxdebug->leave_sub(); }