]> wagnertech.de Git - mfinanz.git/blobdiff - bin/mozilla/is.pl
Anzahlungs-Rg.: Workflow -> Schluss-Rg.: sellprice wirklich aus fxsellprice
[mfinanz.git] / bin / mozilla / is.pl
index 85f335335be5a8868223d3684ff3aafe2ed27ff9..e05f57cd1af3b3078fd49ef891414835d0c9d0b7 100644 (file)
@@ -95,6 +95,9 @@ sub add {
   } elsif ($form->{type} eq "invoice_for_advance_payment") {
     $form->{title} = $locale->text('Add Invoice for Advance Payment');
 
+  } elsif ($form->{type} eq "final_invoice") {
+    $form->{title} = $locale->text('Final Invoice');
+
   } else {
     $form->{title} = $locale->text('Add Sales Invoice');
 
@@ -143,6 +146,9 @@ sub edit {
     $form->{title} = $locale->text('Edit Invoice for Advance Payment');
     $form->{title} = $locale->text('Edit Storno Invoice for Advance Payment') if $form->{storno};
 
+  } elsif ($form->{type} eq "final_invoice") {
+    $form->{title} = $locale->text('Edit Final Invoice');
+
   } else {
     $form->{title} = $locale->text('Edit Sales Invoice');
     $form->{title} = $locale->text('Edit Storno Invoice')     if $form->{storno};
@@ -253,6 +259,10 @@ sub prepare_invoice {
     $form->{type}     = "invoice_for_advance_payment";
     $form->{formname} = "invoice_for_advance_payment";
 
+  } elsif ($form->{type} eq "final_invoice") {
+    $form->{type}     = "final_invoice";
+    $form->{formname} = "final_invoice";
+
   } elsif ($form->{formname} eq "proforma" ) {
     $form->{type}     = "invoice";
 
@@ -1024,6 +1034,12 @@ sub post {
 
   $form->isblank("exchangerate", $locale->text('Exchangerate missing!'))
     if ($form->{currency} ne $form->{defaultcurrency});
+  # advance payment allows only one tax
+  if ($form->{type} eq 'invoice_for_advance_payment') {
+    my @current_taxaccounts = (split(/ /, $form->{taxaccounts}));
+    $form->error($locale->text('Cannot post invoice for advance payment with more than one tax'))
+      if (scalar @current_taxaccounts > 1);
+  }
 
   for my $i (1 .. $form->{paidaccounts}) {
     if ($form->parse_amount(\%myconfig, $form->{"paid_$i"})) {
@@ -1202,17 +1218,13 @@ sub final_invoice {
   # (order) -> invoice for adv. payment 1 -> invoice for adv. payment 2 -> invoice for adv. payment 3 -> final invoice
   #
   # we are currently in the last invoice for adv. payment (3 in this example)
-  my $invoice_obj      = SL::DB::Invoice->load_cached($form->{id});
-  my $links            = $invoice_obj->linked_records(direction => 'from', from => ['Invoice'], recursive => 1);
-  my @related_invoices = grep {'SL::DB::Invoice' eq ref $_ && "invoice_for_advance_payment" eq $_->type} @$links;
-
-  push @related_invoices, $invoice_obj;
+  my $related_invoices = IS->_get_invoices_for_advance_payment($form->{id});
 
   delete @{ $form }{qw(printed emailed queued invnumber invdate exchangerate forex deliverydate datepaid_1 gldate_1 acc_trans_id_1 source_1 memo_1 paid_1 exchangerate_1 AP_paid_1 storno locked)};
 
   $form->{convert_from_ar_ids} = $form->{id};
   $form->{id}                  = '';
-  $form->{type}                = 'invoice';
+  $form->{type}                = 'final_invoice';
   $form->{title}               = t8('Edit Final Invoice');
   $form->{paidaccounts}        = 1;
   $form->{invdate}             = $form->current_date(\%myconfig);
@@ -1233,14 +1245,14 @@ sub final_invoice {
   remove_emptied_rows(1);
 
   my $i = 0;
-  foreach my $ri (@related_invoices) {
+  foreach my $ri (@$related_invoices) {
     foreach my $item (@{$ri->items_sorted}) {
       $i++;
       $form->{"id_$i"}         = $item->parts_id;
       $form->{"partnumber_$i"} = $item->part->partnumber;
       $form->{"discount_$i"}   = $item->discount*100.0;
       $form->{"sellprice_$i"}  = $item->fxsellprice;
-      $form->{$_ . "_" . $i}   = $item->$_       for qw(description longdescription qty price_factor_id unit sellprice active_price_source active_discount_source);
+      $form->{$_ . "_" . $i}   = $item->$_       for qw(description longdescription qty price_factor_id unit active_price_source active_discount_source);
 
       $form->{$_ . "_" . $i}   = $form->format_amount(\%myconfig, $form->{$_ . "_" . $i}) for qw(qty sellprice discount);
     }