]> wagnertech.de Git - mfinanz.git/blobdiff - bin/mozilla/ap.pl
Kontoauszug verbuchen: Lieferantengutschrift buchen
[mfinanz.git] / bin / mozilla / ap.pl
index 98f6df7504648e4454094758cf6e5e884014c1d7..b45cb99c5a919e4a81ea26966ada05af849506a9 100644 (file)
@@ -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();
 }