]> wagnertech.de Git - mfinanz.git/blobdiff - bin/mozilla/ar.pl
Rechnungsmasken auf dispatcher Mechanismus umgestellt
[mfinanz.git] / bin / mozilla / ar.pl
index b1421d6ad2901a619ba43658b5c7386917995b66..8a0d780e33168b6f6736d00b7fd9a8e877fb10a0 100644 (file)
@@ -40,6 +40,7 @@ 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";
@@ -139,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();
 
@@ -149,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}) {
@@ -216,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);
@@ -606,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);
@@ -662,6 +673,8 @@ sub post {
 
   my ($inline) = @_;
 
+  $form->mtime_ischanged('ar');
+
   my ($datepaid);
 
   # check if there is an invoice number, invoice and due date
@@ -710,7 +723,7 @@ sub post {
   my ($customer) = split /--/, $form->{customer};
   if ($form->{oldcustomer} ne "$customer--$form->{customer_id}") {
     update();
-    ::end_of_request();
+    $::dispatcher->end_request;
   }
 
   $form->{AR}{receivables} = $form->{ARselected};
@@ -918,9 +931,9 @@ sub ar_transactions {
   my $report = SL::ReportGenerator->new(\%myconfig, $form);
 
   @columns =
-    qw(transdate id type invnumber ordnumber cusordnumber name netamount tax amount paid
+    qw(ids 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 direct_debit);
+       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 };
@@ -930,12 +943,14 @@ 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 duedatefrom duedateto 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 parts_partnumber parts_description);
   push @hidden_variables, map { "cvar_$_->{name}" } @ct_searchable_custom_variables;
 
   $href = build_std_url('action=ar_transactions', grep { $form->{$_} } @hidden_variables);
 
   my %column_defs = (
+    'ids'                     => { raw_header_data => $::request->presenter->checkbox_tag("", id => "check_all", checkall => "[data-checkall=1]"), align => 'center' },
     'transdate'               => { 'text' => $locale->text('Date'), },
     'id'                      => { 'text' => $locale->text('ID'), },
     'type'                    => { 'text' => $locale->text('Type'), },
@@ -967,6 +982,7 @@ sub ar_transactions {
     '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,
   );
 
@@ -980,6 +996,8 @@ sub ar_transactions {
   $form->{"l_type"} = "Y";
   map { $column_defs{$_}->{visible} = $form->{"l_${_}"} ? 1 : 0 } @columns;
 
+  $column_defs{ids}->{visible} = 'HTML';
+
   $report->set_columns(%column_defs);
   $report->set_column_order(@columns);
 
@@ -1022,6 +1040,12 @@ sub ar_transactions {
   if ($form->{transaction_description}) {
     push @options, $locale->text('Transaction description') . " : $form->{transaction_description}";
   }
+  if ($form->{parts_partnumber}) {
+    push @options, $locale->text('Part Number') . " : $form->{parts_partnumber}";
+  }
+  if ($form->{parts_description}) {
+    push @options, $locale->text('Part Description') . " : $form->{parts_description}";
+  }
   if ($form->{transdatefrom}) {
     push @options, $locale->text('From') . " " . $locale->date(\%myconfig, $form->{transdatefrom}, 1);
   }
@@ -1043,7 +1067,10 @@ sub ar_transactions {
     push @options, $locale->text('Closed');
   }
 
+  $form->{ALL_PRINTERS} = SL::DB::Manager::Printer->get_all_sorted;
+
   $report->set_options('top_info_text'        => join("\n", @options),
+                       'raw_top_info_text'    => $form->parse_html_template('ar/ar_transactions_header'),
                        'raw_bottom_info_text' => $form->parse_html_template('ar/ar_transactions_bottom'),
                        'output_format'        => 'HTML',
                        'title'                => $form->{title},
@@ -1101,6 +1128,12 @@ sub ar_transactions {
     $row->{invnumber}->{link} = build_std_url("script=" . ($ar->{invoice} ? 'is.pl' : 'ar.pl'), 'action=edit')
       . "&id=" . E($ar->{id}) . "&callback=${callback}";
 
+    $row->{ids} = {
+      raw_data =>  $::request->presenter->checkbox_tag("id[]", value => $ar->{id}, "data-checkall" => 1),
+      valign   => 'center',
+      align    => 'center',
+    };
+
     my $row_set = [ $row ];
 
     if (($form->{l_subtotal} eq 'Y')