X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/5058c99dba2ca85519c891465f86b4f3d7fcfce5..07a735e0cb464b4cf96617578868957635410ad9:/bin/mozilla/is.pl diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index 84109cdd6..fdcf5e1c4 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -39,6 +39,7 @@ use Data::Dumper; use DateTime; use List::MoreUtils qw(uniq); use List::Util qw(max sum); +use List::UtilsBy qw(sort_by); use English qw(-no_match_vars); use SL::DB::Default; @@ -291,6 +292,10 @@ sub form_header { my %TMPL_VAR = (); my @custom_hiddens; + if ($form->{id}) { + require SL::DB::Invoice; + $TMPL_VAR{invoice_obj} = SL::DB::Invoice->new(id => $form->{id})->load; + } $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id}; $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id}; @@ -379,7 +384,7 @@ sub form_header { $TMPL_VAR{HIDDENS} = [qw( id action type media format queued printed emailed title vc discount title creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id - max_dunning_level dunning_amount + max_dunning_level dunning_amount dunning_description shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact shiptophone shiptofax shiptoemail shiptodepartment_1 shiptodepartment_2 shiptocp_gender message email subject cc bcc taxaccounts cursor_fokus convert_from_do_ids convert_from_oe_ids convert_from_ar_ids useasnew @@ -400,6 +405,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(); @@ -438,6 +462,7 @@ sub form_footer { } } } + $form->{invtotal} = $form->round_amount($form->{invtotal}, 2, 1); # follow ups if ($form->{id}) { @@ -446,6 +471,8 @@ sub form_footer { } # payments + _sort_payments(); + my $totalpaid = 0; $form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"}); $form->{paid_indices} = [ 1 .. $form->{paidaccounts} ]; @@ -656,6 +683,7 @@ sub post_payment { $main::auth->assert('invoice_edit'); + $form->mtime_ischanged('ar') ; my $invdate = $form->datetonum($form->{invdate}, \%myconfig); $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); @@ -711,6 +739,7 @@ sub post { my $locale = $main::locale; $main::auth->assert('invoice_edit'); + $form->mtime_ischanged('ar'); $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); $form->isblank("invdate", $locale->text('Invoice Date missing!'));