} 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');
$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};
$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";
$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"})) {
# (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);
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);
}