X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fir.pl;h=8432302129f6e0153d87f7217f2eeb0d1da034c9;hb=cff1389b37e5adfde7734718a02290421aa1bf9a;hp=731f747379b0139c644b7ea901fd2051931e8e73;hpb=6ea1dd9bb2e7965da7d0ef66a0b464267ce41a9b;p=kivitendo-erp.git diff --git a/bin/mozilla/ir.pl b/bin/mozilla/ir.pl index 731f74737..843230212 100644 --- a/bin/mozilla/ir.pl +++ b/bin/mozilla/ir.pl @@ -37,6 +37,7 @@ use SL::IS; use SL::PE; use SL::DB::Default; use List::Util qw(max sum); +use List::UtilsBy qw(sort_by); require "bin/mozilla/io.pl"; require "bin/mozilla/invoice_io.pl"; @@ -337,7 +338,10 @@ sub form_header { ), @custom_hiddens, map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts}]; - $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.SalesPurchase ckeditor/ckeditor ckeditor/adapters/jquery kivi.io autocomplete_customer autocomplete_part)); + $TMPL_VAR{payment_terms_obj} = get_payment_terms_for_invoice(); + $form->{duedate} = $TMPL_VAR{payment_terms_obj}->calc_date(reference_date => $form->{invdate}, due_date => $form->{due_due})->to_kivitendo if $TMPL_VAR{payment_terms_obj}; + + $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.SalesPurchase ckeditor/ckeditor ckeditor/adapters/jquery kivi.io autocomplete_customer autocomplete_part client_js)); $form->header(); @@ -346,6 +350,25 @@ sub form_header { $main::lxdebug->leave_sub(); } +sub _sort_payments { + my @fields = qw(acc_trans_id gldate datepaid source memo paid AR_paid); + my @payments = + grep { $_->{paid} != 0 } + map { + my $idx = $_; + +{ map { ($_ => delete($::form->{"${_}_${idx}"})) } @fields } + } (1..$::form->{paidaccounts}); + + @payments = sort_by { DateTime->from_kivitendo($_->{datepaid}) } @payments; + + $::form->{paidaccounts} = max scalar(@payments), 1; + + foreach my $idx (1 .. scalar(@payments)) { + my $payment = $payments[$idx - 1]; + $::form->{"${_}_${idx}"} = $payment->{$_} for @fields; + } +} + sub form_footer { $main::lxdebug->enter_sub(); @@ -388,6 +411,8 @@ sub form_footer { } # payments + _sort_payments(); + my $totalpaid = 0; $form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"}); $form->{paid_indices} = [ 1 .. $form->{paidaccounts} ]; @@ -426,6 +451,7 @@ sub form_footer { show_delete => ($::instance_conf->get_ir_changeable == 2) ? ($form->current_date(\%myconfig) eq $form->{gldate}) : ($::instance_conf->get_ir_changeable == 1), + today => DateTime->today, }); ##print $form->parse_html_template('ir/_payments'); # parser ##print $form->parse_html_template('webdav/_list'); # parser @@ -484,6 +510,9 @@ sub update { my $rows = scalar @{ $form->{item_list} }; + $form->{"discount_$i"} = $form->parse_amount(\%myconfig, $form->{"discount_$i"}) / 100.0; + $form->{"discount_$i"} ||= $form->{vendor_discount}; + if ($rows) { $form->{"qty_$i"} = $form->parse_amount(\%myconfig, $form->{"qty_$i"}); if( !$form->{"qty_$i"} ) { @@ -500,8 +529,6 @@ sub update { # override sellprice if there is one entered my $sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"}); - # ergaenzung fuer bug 736 Lieferanten-Rabatt auch in Einkaufsrechnungen vorbelegen jb - $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{vendor_discount} * 100 ); map { $form->{item_list}[$i]{$_} =~ s/\"/"/g } qw(partnumber description unit); map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } keys %{ $form->{item_list}[0] }; @@ -532,10 +559,11 @@ sub update { $form->{"sellprice_$i"} /= $exchangerate; } - my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"} / 100); + my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"}); $form->{creditremaining} -= $amount; $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100.0); } &display_form; @@ -594,8 +622,9 @@ sub storno { # saving the history if(!exists $form->{addition} && $form->{id} ne "") { - $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; - $form->{addition} = "CANCELED"; + $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; + $form->{what_done} = "invoice"; + $form->{addition} = "CANCELED"; $form->save_history; } # /saving the history @@ -663,9 +692,9 @@ sub post_payment { if (IR->post_payment(\%myconfig, \%$form)){ if (!exists $form->{addition} && $form->{id} ne "") { # saving the history - $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; - $form->{addition} = "PAYMENT POSTED"; - $form->{what_done} = $form->{currency} . qq| | . $form->{paid} . qq| | . $locale->text("POSTED"); + $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; + $form->{addition} = "PAYMENT POSTED"; + $form->{what_done} = "invoice"; $form->save_history; # /saving the history } @@ -766,9 +795,9 @@ sub post { if (IR->post_invoice(\%myconfig, \%$form)){ # saving the history if(!exists $form->{addition} && $form->{id} ne "") { - $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; - $form->{addition} = "POSTED"; - #$form->{what_done} = $locale->text("Rechnungsnummer") . qq| | . $form->{invnumber}; + $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; + $form->{addition} = "POSTED"; + $form->{what_done} = 'invoice'; $form->save_history; } # /saving the history