X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Far.pl;h=28c8efbab54d4f6a9a6d062cd63177e0e5db48c8;hb=14d71a6d1215e4fc67136c060fd21cd6c59602af;hp=7bcbe4c1e0f0c244113127870c1f3d507a599e02;hpb=281696eb5e8c1a2ca203907cbff7d18052037b2f;p=kivitendo-erp.git diff --git a/bin/mozilla/ar.pl b/bin/mozilla/ar.pl index 7bcbe4c1e..28c8efbab 100644 --- a/bin/mozilla/ar.pl +++ b/bin/mozilla/ar.pl @@ -33,12 +33,14 @@ use POSIX qw(strftime); use List::Util qw(sum first max); +use List::UtilsBy qw(sort_by); use SL::AR; use SL::FU; use SL::IS; use SL::PE; use SL::DB::Default; +use SL::DB::Invoice; use SL::ReportGenerator; require "bin/mozilla/arap.pl"; @@ -138,6 +140,12 @@ sub display_form { $main::lxdebug->leave_sub(); } +sub _retrieve_invoice_object { + return undef if !$::form->{id}; + return $::form->{invoice_obj} if $::form->{invoice_obj} && $::form->{invoice_obj}->id == $::form->{id}; + return SL::DB::Invoice->new(id => $::form->{id})->load; +} + sub create_links { $main::lxdebug->enter_sub(); @@ -148,6 +156,7 @@ sub create_links { my %myconfig = %main::myconfig; $form->create_links("AR", \%myconfig, "customer"); + $form->{invoice_obj} = _retrieve_invoice_object(); my %saved; if (!$params{dont_save}) { @@ -215,6 +224,8 @@ sub form_header { my $locale = $main::locale; my $cgi = $::request->{cgi}; + $form->{invoice_obj} = _retrieve_invoice_object(); + my ($title, $readonly, $exchangerate, $rows); my ($notes, $department, $customer, $employee, $amount, $project); my ($ARselected); @@ -409,8 +420,8 @@ sub form_header { gldate => $form->{"gldate_$i"}, }; - # default account for current assets (i.e. 1801 - SKR04) if no account is selected - $form->{accno_arap} = IS->get_standard_accno_current_assets(\%myconfig, \%$form); + # default account for current assets (i.e. 1801 - SKR04) if no account is selected + $form->{accno_arap} = IS->get_standard_accno_current_assets(\%myconfig, \%$form); $payment->{selectAR_paid} = NTI($cgi->popup_menu('-name' => "AR_paid_$i", @@ -429,6 +440,12 @@ sub form_header { push @payments, $payment; } + my @empty = grep { $_->{paid} eq '' } @payments; + @payments = ( + (sort_by { DateTime->from_kivitendo($_->{datepaid}) } grep { $_->{paid} ne '' } @payments), + @empty, + ); + $form->{totalpaid} = sum map { $_->{paid} } @payments; $form->header; @@ -442,6 +459,7 @@ sub form_header { ARselected => $ARselected, title_str => $title, follow_up_trans_info => $follow_up_trans_info, + today => DateTime->today, }); $main::lxdebug->leave_sub(); @@ -598,6 +616,7 @@ sub post_payment { my %myconfig = %main::myconfig; my $locale = $main::locale; + $form->mtime_ischanged('ar'); $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); my $invdate = $form->datetonum($form->{transdate}, \%myconfig); @@ -654,6 +673,8 @@ sub post { my ($inline) = @_; + $form->mtime_ischanged('ar'); + my ($datepaid); # check if there is an invoice number, invoice and due date @@ -912,7 +933,7 @@ sub ar_transactions { @columns = qw(transdate id type invnumber ordnumber cusordnumber name netamount tax amount paid datepaid due duedate transaction_description notes salesman employee shippingpoint shipvia - marge_total marge_percent globalprojectnumber customernumber country ustid taxzone payment_terms charts customertype); + marge_total marge_percent globalprojectnumber customernumber country ustid taxzone payment_terms charts customertype direct_debit dunning_description); my $ct_cvar_configs = CVar->get_configs('module' => 'CT'); my @ct_includeable_custom_variables = grep { $_->{includeable} } @{ $ct_cvar_configs }; @@ -922,7 +943,7 @@ sub ar_transactions { push @columns, map { "cvar_$_->{name}" } @ct_includeable_custom_variables; my @hidden_variables = map { "l_${_}" } @columns; - push @hidden_variables, "l_subtotal", qw(open closed customer invnumber ordnumber cusordnumber transaction_description notes project_id transdatefrom transdateto employee_id salesman_id business_id); + push @hidden_variables, "l_subtotal", qw(open closed customer invnumber ordnumber cusordnumber transaction_description notes project_id transdatefrom transdateto duedatefrom duedateto employee_id salesman_id business_id); push @hidden_variables, map { "cvar_$_->{name}" } @ct_searchable_custom_variables; $href = build_std_url('action=ar_transactions', grep { $form->{$_} } @hidden_variables); @@ -958,10 +979,12 @@ sub ar_transactions { 'payment_terms' => { 'text' => $locale->text('Payment Terms'), }, 'charts' => { 'text' => $locale->text('Buchungskonto'), }, 'customertype' => { 'text' => $locale->text('Customer type'), }, + 'direct_debit' => { 'text' => $locale->text('direct debit'), }, + dunning_description => { 'text' => $locale->text('Dunning level'), }, %column_defs_cvars, ); - foreach my $name (qw(id transdate duedate invnumber ordnumber cusordnumber name datepaid employee shippingpoint shipvia transaction_description)) { + foreach my $name (qw(id transdate duedate invnumber ordnumber cusordnumber name datepaid employee shippingpoint shipvia transaction_description direct_debit)) { my $sortdir = $form->{sort} eq $name ? 1 - $form->{sortdir} : $form->{sortdir}; $column_defs{$name}->{link} = $href . "&sort=$name&sortdir=$sortdir"; } @@ -1078,6 +1101,8 @@ sub ar_transactions { $ar->{invoice} ? $locale->text("Invoice (one letter abbreviation)") : $locale->text("AR Transaction (abbreviation)"); + $ar->{direct_debit} = $ar->{direct_debit} ? $::locale->text('yes') : $::locale->text('no'); + my $row = { }; foreach my $column (@columns) {