X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FInvoice.pm;h=d1ce5be87df83af642bc799f0c3ae1385c43210f;hb=111857560dab08903ff8bd700b2383df34cddf36;hp=26faca1a36f70811b7b200c77147d83d64fbdcb5;hpb=4dc48e117cfdb6e59c2d8b9d8087ef8a3bc245a4;p=kivitendo-erp.git diff --git a/SL/DB/Invoice.pm b/SL/DB/Invoice.pm index 26faca1a3..d1ce5be87 100644 --- a/SL/DB/Invoice.pm +++ b/SL/DB/Invoice.pm @@ -16,6 +16,7 @@ use SL::DB::Helper::LinkedRecords; use SL::DB::Helper::PDF_A; use SL::DB::Helper::PriceTaxCalculator; use SL::DB::Helper::PriceUpdater; +use SL::DB::Helper::SalesPurchaseInvoice; use SL::DB::Helper::TransNumberGenerator; use SL::DB::Helper::ZUGFeRD; use SL::Locale::String qw(t8); @@ -173,7 +174,8 @@ sub new_from { $terms = $source->customer->payment_terms if !defined $terms && $source->customer; my %args = ( map({ ( $_ => $source->$_ ) } qw(customer_id taxincluded shippingpoint shipvia notes intnotes salesman_id cusordnumber ordnumber department_id - cp_id language_id taxzone_id tax_point globalproject_id transaction_description currency_id delivery_term_id), @columns), + cp_id language_id taxzone_id tax_point globalproject_id transaction_description currency_id delivery_term_id + billing_address_id), @columns), transdate => $params{transdate} // DateTime->today_local, gldate => DateTime->today_local, duedate => $terms ? $terms->calc_date(reference_date => DateTime->today_local) : DateTime->today_local, @@ -359,7 +361,6 @@ sub add_ar_amount_row { ($netamount, $taxamount) = Form->calculate_tax($params{amount}, $tax->rate, $self->taxincluded, $roundplaces); }; next unless $netamount; # netamount mustn't be zero - my $sign = $self->customer_id ? 1 : -1; my $acc = SL::DB::AccTransaction->new( amount => $netamount * $sign, @@ -425,7 +426,7 @@ sub create_ar_row { $self->add_transactions( $acc ); push( @$acc_trans, $acc ); return $acc_trans; -}; +} sub validate_acc_trans { my ($self, %params) = @_; @@ -538,7 +539,11 @@ sub invoice_type { my ($self) = @_; return 'ar_transaction' if !$self->invoice; - return 'credit_note' if $self->type eq 'credit_note' && $self->amount < 0 && !$self->storno; + return 'invoice_for_advance_payment_storno' if $self->type eq 'invoice_for_advance_payment' && $self->amount < 0 && $self->storno; + return 'invoice_for_advance_payment' if $self->type eq 'invoice_for_advance_payment'; + return 'final_invoice' if $self->type eq 'final_invoice'; + # stornoed credit_notes are still credit notes and not invoices + return 'credit_note' if $self->type eq 'credit_note' && $self->amount < 0; return 'invoice_storno' if $self->type ne 'credit_note' && $self->amount < 0 && $self->storno; return 'credit_note_storno' if $self->type eq 'credit_note' && $self->amount > 0 && $self->storno; return 'invoice'; @@ -557,6 +562,9 @@ sub displayable_type { return t8('Credit Note') if $self->invoice_type eq 'credit_note'; return t8('Invoice') . "(" . t8('Storno') . ")" if $self->invoice_type eq 'invoice_storno'; return t8('Credit Note') . "(" . t8('Storno') . ")" if $self->invoice_type eq 'credit_note_storno'; + return t8('Invoice for Advance Payment') if $self->invoice_type eq 'invoice_for_advance_payment'; + return t8('Invoice for Advance Payment') . "(" . t8('Storno') . ")" if $self->invoice_type eq 'invoice_for_advance_payment_storno'; + return t8('Final Invoice') if $self->invoice_type eq 'final_invoice'; return t8('Invoice'); } @@ -571,6 +579,9 @@ sub abbreviation { return t8('Credit note (one letter abbreviation)') if $self->invoice_type eq 'credit_note'; return t8('Invoice (one letter abbreviation)') . "(" . t8('Storno (one letter abbreviation)') . ")" if $self->invoice_type eq 'invoice_storno'; return t8('Credit note (one letter abbreviation)') . "(" . t8('Storno (one letter abbreviation)') . ")" if $self->invoice_type eq 'credit_note_storno'; + return t8('Invoice for Advance Payment (one letter abbreviation)') if $self->invoice_type eq 'invoice_for_advance_payment'; + return t8('Invoice for Advance Payment with Storno (abbreviation)') if $self->invoice_type eq 'invoice_for_advance_payment_storno'; + return t8('Final Invoice (one letter abbreviation)') if $self->invoice_type eq 'final_invoice'; return t8('Invoice (one letter abbreviation)'); }