X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Frp.pl;h=bc2eab6e2406328622d1b8d0a836fcbfe88573dc;hb=4b211b2b087d445984df5220437400bced1dd1dd;hp=edb093ca943b056f31415ea659d0c982dda48706;hpb=6c4ea0af7845a7c0259c77f529198677a98bcd8a;p=kivitendo-erp.git diff --git a/bin/mozilla/rp.pl b/bin/mozilla/rp.pl index edb093ca9..bc2eab6e2 100644 --- a/bin/mozilla/rp.pl +++ b/bin/mozilla/rp.pl @@ -151,27 +151,14 @@ sub report { $::form->get_lists("projects" => { "key" => "ALL_PROJECTS", "all" => 1 }); - my $onload = qq|focus()|; - my $is_projects = $::form->{report} eq "projects"; my $is_income_statement = $::form->{report} eq "income_statement"; my $is_bwa = $::form->{report} eq "bwa"; my $is_balance_sheet = $::form->{report} eq "balance_sheet"; my $is_trial_balance = $::form->{report} eq "trial_balance"; - my $is_taxreport = $::form->{report} =~ /^tax_/; - my $is_nontaxable = $::form->{report} =~ /^nontaxable_/; my $is_aging = $::form->{report} =~ /^a[rp]_aging$/; my $is_payments = $::form->{report} =~ /(receipts|payments)$/; -# if (is_taxreport) { -# $::form->{db} = ($::form->{report} =~ /_collected/) ? "ar" : "ap"; -# RP->get_taxaccounts(\%::myconfig, $::form); -# } -# -# if ($is_nontaxable) { -# $::form->{db} = ($::form->{report} =~ /_sales/) ? "ar" : "ap"; -# } - my ($label, $nextsub, $vc); if ($is_aging) { my $is_sales = $::form->{report} eq 'ar_aging'; @@ -209,7 +196,8 @@ sub report { vc => $vc, label => $label, year => DateTime->today->year, - onload => $onload, + today => DateTime->today, + nextsub => $nextsub, accrual => $::instance_conf->get_accounting_method ne 'cash', cash => $::instance_conf->get_accounting_method eq 'cash', is_payments => $is_payments, @@ -654,7 +642,7 @@ sub generate_trial_balance { my @options; - $form->{template_fromto} = $locale->date(\%myconfig, $form->{fromdate}, 0) . "  -  " . $locale->date(\%myconfig, $form->{todate}, 0); + $form->{template_fromto} = $locale->date(\%myconfig, $form->{fromdate}, 0) . " - " . $locale->date(\%myconfig, $form->{todate}, 0); $form->{print_date} = $locale->text('Create Date') . " " . $locale->date(\%myconfig, $form->current_date(\%myconfig), 0); push (@options, $form->{print_date}); @@ -665,6 +653,28 @@ sub generate_trial_balance { $form->{template_to} = $locale->date(\%myconfig, $form->{todate}, 0); + my @custom_headers = ([ + { text => $::locale->text('Account'), rowspan => 2, }, + { text => $::locale->text('Description'), rowspan => 2, }, + { text => $::locale->text('Last Transaction'), rowspan => 2, }, + { text => $::locale->text('Starting Balance'), colspan => 2, }, + { text => $::locale->text('Sum for') . " $form->{template_fromto}", colspan => 2, }, + { text => $::locale->text('Sum per') . " $form->{template_to}", colspan => 2, }, + { text => $::locale->text('Saldo per') . " $form->{template_to}", colspan => 2, }, + ], [ + { text => '', }, + { text => '', }, + { text => '', }, + { text => $::locale->text('Assets'), }, + { text => $::locale->text('Equity'), }, + { text => $::locale->text('Debit'), }, + { text => $::locale->text('Credit'), }, + { text => $::locale->text('Debit'), }, + { text => $::locale->text('Credit'), }, + { text => $::locale->text('Debit'), }, + { text => $::locale->text('Credit'), }, + ]); + $report->set_options('output_format' => 'HTML', 'top_info_text' => join("\n", @options), 'title' => $form->{title}, @@ -672,6 +682,7 @@ sub generate_trial_balance { 'html_template' => 'rp/html_report_susa', 'pdf_template' => 'rp/html_report_susa', ); + $report->set_custom_headers(@custom_headers); $report->set_options_from_form(); $locale->set_numberformat_wo_thousands_separator(\%myconfig) if lc($report->{options}->{output_format}) eq 'csv'; @@ -1106,116 +1117,39 @@ sub select_all { } sub e_mail { - $main::lxdebug->enter_sub(); - - $main::auth->assert('general_ledger'); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; + $::lxdebug->enter_sub; + $::auth->assert('general_ledger'); # get name and email addresses my $selected = 0; - for my $i (1 .. $form->{rowcount}) { - if ($form->{"statement_$i"}) { - $form->{"$form->{ct}_id"} = $form->{"$form->{ct}_id_$i"}; - RP->get_customer(\%myconfig, \%$form); - $selected = 1; - last; - } + for my $i (1 .. $::form->{rowcount}) { + next unless $::form->{"statement_$i"}; + $::form->{"$::form->{ct}_id"} = $::form->{"$::form->{ct}_id_$i"}; + RP->get_customer(\%::myconfig, $::form); + $selected = 1; + last; } - $form->error($locale->text('Nothing selected!')) unless $selected; - - my $bcc = ''; - if ($myconfig{role} eq 'admin') { - $bcc = qq| - | . $locale->text('Bcc') . qq| - -|; - } + $::form->error($::locale->text('Nothing selected!')) unless $selected; - my $title = $locale->text('E-mail Statement to') . " $form->{$form->{ct}}"; - - $form->{media} = "email"; - - $form->header; - - print qq| - - -
{script}> - - - - - - - - - - - - - - - - - - -
$title
- - - - - - - - - - - $bcc - -
| . $locale->text('E-mail') . qq|| . $locale->text('Cc') . qq|
| . $locale->text('Subject') . qq|
-
- - - - - - - -
| . $locale->text('Message') . qq|
-
-|; - - &print_options; - - map { delete $form->{$_} } - qw(action email cc bcc subject message type sendmode format header); + $::form->{media} = "email"; # save all other variables - foreach my $key (keys %$form) { - next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key})); - $form->{$key} =~ s/\"/"/g; - print qq|\n|; + my @hidden_values; + for my $key (keys %$::form) { + next if any { $key eq $_ } qw(login password action email cc bcc subject message type sendmode format header); + next unless '' eq ref $::form->{$key}; + push @hidden_values, $key; } - print qq| -

- - - -
- -
- - - -|; + $::form->header; + print $::form->parse_html_template('rp/e_mail', { + show_bcc => $::auth->assert('email_bcc', 'may fail'), + print_options => print_options(inline => 1), + hidden_values => \@hidden_values, + }); - $main::lxdebug->leave_sub(); + $::lxdebug->leave_sub; } sub send_email { @@ -1425,259 +1359,138 @@ sub statement_details { } sub generate_tax_report { - $main::lxdebug->enter_sub(); - - $main::auth->assert('report'); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; + $::lxdebug->enter_sub; + $::auth->assert('report'); - RP->tax_report(\%myconfig, \%$form); + RP->tax_report(\%::myconfig, $::form); - my $descvar = "$form->{accno}_description"; - my $description = $form->escape($form->{$descvar}); - my $ratevar = "$form->{accno}_rate"; + my $descvar = "$::form->{accno}_description"; my ($subtotalnetamount, $subtotaltax, $subtotal) = (0, 0, 0); - my $department = $form->escape($form->{department}); - # construct href - my $href = - "$form->{script}?&action=generate_tax_report&fromdate=$form->{fromdate}&todate=$form->{todate}&db=$form->{db}&method=$form->{method}&accno=$form->{accno}&$descvar=$description&department=$department&report=$form->{report}"; + my $href = + my $callback = build_std_url('action=generate_tax_report', $descvar, + qw(fromdate todate db method accno department report title)); - # construct callback - $description = $form->escape($form->{$descvar}, 1); - $department = $form->escape($form->{department}, 1); - my $callback = - "$form->{script}?&action=generate_tax_report&fromdate=$form->{fromdate}&todate=$form->{todate}&db=$form->{db}&method=$form->{method}&accno=$form->{accno}&$descvar=$description&department=$department&report=$form->{report}"; - - my $title = $form->escape($form->{title}); - $href .= "&title=$title"; - $title = $form->escape($form->{title}, 1); - $callback .= "&title=$title"; - - $form->{title} = qq|$form->{title} $form->{"$form->{accno}_description"} |; - - my @columns = - $form->sort_columns(qw(id transdate invnumber name netamount tax amount)); + my @columns = $::form->sort_columns(qw(id transdate invnumber name netamount tax amount)); my @column_index; - foreach my $item (@columns) { - if ($form->{"l_$item"} eq "Y") { - push @column_index, $item; - - # add column to href and callback + for my $item (@columns, 'subtotal') { + if ($::form->{"l_$item"} eq "Y") { $callback .= "&l_$item=Y"; $href .= "&l_$item=Y"; } } - if ($form->{l_subtotal} eq 'Y') { - $callback .= "&l_subtotal=Y"; - $href .= "&l_subtotal=Y"; + for my $item (@columns) { + if ($::form->{"l_$item"} eq "Y") { + push @column_index, $item; + } } - my $option; - if ($form->{department}) { - ($department) = split /--/, $form->{department}; - $option = $locale->text('Department') . " : $department"; + my @options; + if ($::form->{department}) { + my ($department) = split /--/, $::form->{department}; + push @options, $::locale->text('Department') . " : $department"; } - my ($fromdate, $todate); # if there are any dates - if ($form->{fromdate} || $form->{todate}) { - if ($form->{fromdate}) { - $fromdate = $locale->date(\%myconfig, $form->{fromdate}, 1); - } - if ($form->{todate}) { - $todate = $locale->date(\%myconfig, $form->{todate}, 1); - } - - $form->{period} = "$fromdate - $todate"; + if ($::form->{fromdate} || $::form->{todate}) { + my $fromdate = $::form->{fromdate} ? $::locale->date(\%::myconfig, $::form->{fromdate}, 1) : ''; + my $todate = $::form->{todate} ? $::locale->date(\%::myconfig, $::form->{todate}, 1) : ''; + push @options, "$fromdate - $todate"; } else { - $form->{period} = - $locale->date(\%myconfig, $form->current_date(\%myconfig), 1); + push @options, $::locale->date(\%::myconfig, $::form->current_date, 1); } my ($name, $invoice, $arap); - if ($form->{db} eq 'ar') { - $name = $locale->text('Customer'); + if ($::form->{db} eq 'ar') { + $name = $::locale->text('Customer'); $invoice = 'is.pl'; $arap = 'ar.pl'; } - if ($form->{db} eq 'ap') { - $name = $locale->text('Vendor'); + if ($::form->{db} eq 'ap') { + $name = $::locale->text('Vendor'); $invoice = 'ir.pl'; $arap = 'ap.pl'; } - $option .= "
" if $option; - $option .= "$form->{period}"; - - my %column_header; - $column_header{id} = qq|| . $locale->text('ID') . qq||; - $column_header{invnumber} = qq|| . $locale->text('Invoice') . qq||; - $column_header{transdate} = qq|| . $locale->text('Date') . qq||; - $column_header{netamount} = qq|| . $locale->text('Amount') . qq||; - $column_header{tax} = qq|| . $locale->text('Tax') . qq||; - $column_header{amount} = qq|| . $locale->text('Total') . qq||; - - $column_header{name} = qq|$name|; - - $form->header; - - print qq| - - - - - - - - - - - - - - - - -
$form->{title}
$option
- - -|; - - map { print "$column_header{$_}\n" } @column_index; + my %column_header = ( + id => $::locale->text('ID'), + invnumber => $::locale->text('Invoice'), + transdate => $::locale->text('Date'), + netamount => $::locale->text('Amount'), + tax => $::locale->text('Tax'), + amount => $::locale->text('Total'), + name => $name, + ); - print qq| - -|; + my %column_sorted = map { $_ => 1 } qw(id invnumber transdate); - # add sort and escape callback - $callback = $form->escape($callback . "&sort=$form->{sort}"); + $callback .= "&sort=$::form->{sort}"; my $sameitem; - if (@{ $form->{TR} }) { - $sameitem = $form->{TR}->[0]->{ $form->{sort} }; + if (@{ $::form->{TR} }) { + $sameitem = $::form->{TR}->[0]->{ $::form->{sort} }; } - my ($totalnetamount, $totaltax); - my ($i); - foreach my $ref (@{ $form->{TR} }) { + my ($totalnetamount, $totaltax, @data); + for my $ref (@{ $::form->{TR} }) { my $module = ($ref->{invoice}) ? $invoice : $arap; - if ($form->{l_subtotal} eq 'Y') { - if ($sameitem ne $ref->{ $form->{sort} }) { - tax_subtotal(\@column_index, \$subtotalnetamount, \$subtotaltax, \$subtotal); - $sameitem = $ref->{ $form->{sort} }; + if ($::form->{l_subtotal} eq 'Y') { + if ($sameitem ne $ref->{ $::form->{sort} }) { + push @data, { + subtotal => 1, + netamount => $subtotalnetamount, + tax => $subtotaltax, + amount => $subtotal, + }; + $subtotalnetamount = 0; + $subtotaltax = 0; + $sameitem = $ref->{ $::form->{sort} }; } } - $totalnetamount += $ref->{netamount}; - $totaltax += $ref->{tax}; - $ref->{amount} = $ref->{netamount} + $ref->{tax}; - $subtotalnetamount += $ref->{netamount}; $subtotaltax += $ref->{tax}; + $totalnetamount += $ref->{netamount}; + $totaltax += $ref->{tax}; + $ref->{amount} = $ref->{netamount} + $ref->{tax}; - map { - $ref->{$_} = $form->format_amount(\%myconfig, $ref->{$_}, 2, " "); - } qw(netamount tax amount); - - my %column_data; - $column_data{id} = qq||; - $column_data{invnumber} = - qq||; - $column_data{transdate} = qq||; - $column_data{name} = qq||; - - map { $column_data{$_} = qq|| } - qw(netamount tax amount); - - $i++; - $i %= 2; - print qq| - -|; - - map { print "$column_data{$_}\n" } @column_index; - - print qq| - -|; - + push @data, { map { $_ => { data => $ref->{$_} } } keys %$ref }; + $data[-1]{invnumber}{link} = "$module?action=edit&id=$ref->{id}&callback=$callback"; + $data[-1]{$_}{numeric} = 1 for qw(netamount tax amount); } - if ($form->{l_subtotal} eq 'Y') { - tax_subtotal(\@column_index, \$subtotalnetamount, \$subtotaltax, \$subtotal); + if ($::form->{l_subtotal} eq 'Y') { + push @data, { + subtotal => 1, + netamount => $subtotalnetamount, + tax => $subtotaltax, + amount => $subtotal, + }; } - my %column_data; - map { $column_data{$_} = qq|| } @column_index; - - print qq| - - -|; - - my $total = $form->format_amount(\%myconfig, $totalnetamount + $totaltax, 2, " "); - $totalnetamount = $form->format_amount(\%myconfig, $totalnetamount, 2, " "); - $totaltax = $form->format_amount(\%myconfig, $totaltax, 2, " "); - - $column_data{netamount} = qq||; - $column_data{tax} = qq||; - $column_data{amount} = qq||; - - map { print "$column_data{$_}\n" } @column_index; - - print qq| - -
$ref->{id}{id}&callback=$callback>$ref->{invnumber}$ref->{transdate}$ref->{name} $ref->{$_}
 
$totalnetamount$totaltax$total
-

- - - -|; - - $main::lxdebug->leave_sub(); -} - -sub tax_subtotal { - $main::lxdebug->enter_sub(); - - my ($column_index, $subtotalnetamount, $subtotaltax, $subtotal) = @_; - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - - my %column_data; - map { $column_data{$_} = " " } @{ $column_index }; - - $$subtotalnetamount = $form->format_amount(\%myconfig, $$subtotalnetamount, 2, " "); - $$subtotaltax = $form->format_amount(\%myconfig, $$subtotaltax, 2, " "); - $$subtotal = $form->format_amount(\%myconfig, $$subtotalnetamount + $$subtotaltax, 2, " "); - - $column_data{netamount} = "$$subtotalnetamount"; - $column_data{tax} = "$$subtotaltax"; - $column_data{amount} = "$$subtotal"; - - $$subtotalnetamount = 0; - $$subtotaltax = 0; - - print qq| - -|; - map { print "\n$column_data{$_}" } @{ $column_index }; + push @data, { + total => 1, + netamount => $totalnetamount, + tax => $totaltax, + amount => $totalnetamount + $totaltax, + }; - print qq| - -|; + $::form->header; + print $::form->parse_html_template('rp/tax_report', { + column_index => \@column_index, + column_header => \%column_header, + column_sorted => \%column_sorted, + sort_base => $href, + DATA => \@data, + options => \@options, + }); - $main::lxdebug->leave_sub(); + $::lxdebug->leave_sub; } sub list_payments { @@ -1814,79 +1627,28 @@ sub list_payments { } sub print_options { - $main::lxdebug->enter_sub(); + $::lxdebug->enter_sub; my ($dont_print) = @_; - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - - $form->{sendmode} = "attachment"; - - $form->{"format"} = - $form->{"format"} ? $form->{"format"} : - $myconfig{"template_format"} ? $myconfig{"template_format"} : - "pdf"; - - $form->{"copies"} = - $form->{"copies"} ? $form->{"copies"} : - $myconfig{"copies"} ? $myconfig{"copies"} : - 2; - - $form->{PD}{ $form->{type} } = "selected"; - $form->{DF}{ $form->{format} } = "selected"; - $form->{OP}{ $form->{media} } = "selected"; - $form->{SM}{ $form->{sendmode} } = "selected"; + $::form->{sendmode} = "attachment"; + $::form->{format} ||= $::myconfig{template_format} || "pdf"; + $::form->{copies} ||= $::myconfig{copies} || 2; - my ($media); - my $type = qq| -