X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fca.pl;h=66a6a6a3d241cffcef13a6fa9faf502680491ddb;hb=57bf9c89a037036fcf433de39643778854defe51;hp=08856b9ca712b9673d7ffbfb8bad61f34f8e76a2;hpb=b3bcbbe95b29ae60ac00589d944d97c288671da6;p=kivitendo-erp.git diff --git a/bin/mozilla/ca.pl b/bin/mozilla/ca.pl index 08856b9ca..66a6a6a3d 100644 --- a/bin/mozilla/ca.pl +++ b/bin/mozilla/ca.pl @@ -39,6 +39,8 @@ use SL::ReportGenerator; require "bin/mozilla/reportgenerator.pl"; +use strict; + 1; # end of main @@ -72,12 +74,20 @@ require "bin/mozilla/reportgenerator.pl"; # $locale->text('Dec') sub chart_of_accounts { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; - $auth->assert('report'); + $main::auth->assert('report'); $form->{title} = $locale->text('Chart of Accounts'); + if ($main::eur) { + $form->{method} = "cash"; + } + CA->all_accounts(\%myconfig, \%$form); my @columns = qw(accno description debit credit); @@ -107,6 +117,7 @@ sub chart_of_accounts { my %totals = ('debit' => 0, 'credit' => 0); foreach my $ca (@{ $form->{CA} }) { + next unless defined $ca->{amount}; my $row = { }; foreach (qw(debit credit)) { @@ -132,17 +143,21 @@ sub chart_of_accounts { $report->generate_with_headers(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub list { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; - $auth->assert('report'); + $main::auth->assert('report'); $form->{title} = $locale->text('List Transactions'); $form->{title} .= " - " . $locale->text('Account') . " $form->{accno}"; - $year = (localtime)[5] + 1900; + my $year = (localtime)[5] + 1900; # get departments $form->all_departments(\%myconfig); @@ -155,24 +170,25 @@ sub list { } (@{ $form->{all_departments} }); } - $department = qq| + my $department = qq| | . $locale->text('Department') . qq| | if $form->{selectdepartment}; - $accrual = ($eur) ? "" : "checked"; - $cash = ($eur) ? "checked" : ""; - - $name_1 = "fromdate"; - $id_1 = "fromdate"; - $value_1 = "$form->{fromdate}"; - $trigger_1 = "trigger1"; - $name_2 = "todate"; - $id_2 = "todate"; - $value_2 = ""; - $trigger_2 = "trigger2"; + my $accrual = ($main::eur) ? "" : "checked"; + my $cash = ($main::eur) ? "checked" : ""; + + my $name_1 = "fromdate"; + my $id_1 = "fromdate"; + my $value_1 = "$form->{fromdate}"; + my $trigger_1 = "trigger1"; + my $name_2 = "todate"; + my $id_2 = "todate"; + my $value_2 = ""; + my $trigger_2 = "trigger2"; + my ($button1, $button1_2, $button2, $button2_2, $jsscript); # with JavaScript Calendar if ($form->{jsscript}) { @@ -220,7 +236,7 @@ sub list { } $form->{javascript} .= qq||; $form->header; - $onload = qq|focus()|; + my $onload = qq|focus()|; $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|; $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|; @@ -237,7 +253,7 @@ sub list { {accno}> - + {accounttype}> @@ -258,6 +274,7 @@ sub list { |; + our $checked; print qq| . qq| - + + + + $jsscript
@@ -349,7 +366,10 @@ $checked>
| . $locale->text('Subtotal') . qq|

@@ -362,13 +382,35 @@ $jsscript |; - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); +} + +sub format_debit_credit { + $main::lxdebug->enter_sub(); + + my $dc = shift; + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; + + my $formatted_dc = $form->format_amount(\%myconfig, abs($dc), 2) . ' '; + $formatted_dc .= ($dc > 0) ? $locale->text('Credit (one letter abbreviation)') : $locale->text('Debit (one letter abbreviation)'); + + $main::lxdebug->leave_sub(); + + return $formatted_dc; } + sub list_transactions { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; - $auth->assert('report'); + $main::auth->assert('report'); $form->{title} = $locale->text('Account') . " $form->{accno} - $form->{description}"; @@ -416,7 +458,7 @@ sub list_transactions { $form->{fromdate} = "1.2.$form->{year}"; #this works from 1901 to 2099, 1900 and 2100 fail. - $leap = ($form->{year} % 4 == 0) ? "29" : "28"; + my $leap = ($form->{year} % 4 == 0) ? "29" : "28"; $form->{todate} = "$leap.2.$form->{year}"; last SWITCH; }; @@ -475,10 +517,11 @@ sub list_transactions { CA->all_transactions(\%myconfig, \%$form); - - my $saldo_old = ($form->{saldo_old} > 0) ? $form->format_amount(\%myconfig, $form->{saldo_old}, 2) . " H" : $form->format_amount(\%myconfig, abs($form->{saldo_old}) , 2) . " S"; - - my $eb_string = ($form->{beginning_balance} > 0) ? $form->format_amount(\%myconfig, $form->{beginning_balance}, 2) . " H" : $form->format_amount(\%myconfig, abs($form->{beginning_balance}), 2) . " S"; + $form->{saldo_old} += $form->{beginning_balance}; + $form->{saldo_new} += $form->{beginning_balance}; + my $saldo_old = format_debit_credit($form->{saldo_old}); + my $eb_string = format_debit_credit($form->{beginning_balance}); + $form->{balance} = $form->{saldo_old}; my @options; if ($form->{department}) { @@ -508,7 +551,13 @@ sub list_transactions { push @options, $period; - my @columns = qw(transdate reference description gegenkonto debit credit ustkonto ustrate); + $form->{print_date} = $locale->text('Create Date') . " " . $locale->date(\%myconfig, $form->current_date(\%myconfig), 0); + push (@options, $form->{print_date}); + + $form->{company} = $locale->text('Company') . " " . $myconfig{company}; + push (@options, $form->{company}); + + my @columns = qw(transdate reference description gegenkonto debit credit ustkonto ustrate balance); my %column_defs = ( 'transdate' => { 'text' => $locale->text('Date'), }, 'reference' => { 'text' => $locale->text('Reference'), }, @@ -517,11 +566,19 @@ sub list_transactions { 'credit' => { 'text' => $locale->text('Credit'), }, 'gegenkonto' => { 'text' => $locale->text('Gegenkonto'), }, 'ustkonto' => { 'text' => $locale->text('USt-Konto'), }, - 'ustrate' => { 'text' => $locale->text('Satz %'), }, + 'balance' => { 'text' => $locale->text('Balance'), }, + 'ustrate' => { 'text' => $locale->text('Satz %'), }, ); + + my @hidden_variables = qw(accno fromdate todate description accounttype l_heading subtotal department projectnumber project_id sort); + + my $link = build_std_url('action=list_transactions', grep { $form->{$_} } @hidden_variables); + + $form->{callback} = $link . '&sort=' . E($form->{sort}); + my %column_alignment = map { $_ => 'right' } qw(debit credit); - @custom_headers = (); + my @custom_headers = (); # Zeile 1: push @custom_headers, [ { 'text' => 'Letzte Buchung', }, @@ -540,24 +597,20 @@ sub list_transactions { ]; # Zeile 2: push @custom_headers, [ - { 'text' => $locale->text('Date'), }, - { 'text' => $locale->text('Reference'), }, - { 'text' => $locale->text('Description'), }, + { 'text' => $locale->text('Date'), 'link' => $link . "&sort=transdate", }, + { 'text' => $locale->text('Reference'), 'link' => $link . "&sort=reference", }, + { 'text' => $locale->text('Description'), 'link' => $link . "&sort=description", }, { 'text' => $locale->text('Gegenkonto'), }, { 'text' => $locale->text('Debit'), }, { 'text' => $locale->text('Credit'), }, { 'text' => $locale->text('USt-Konto'), }, { 'text' => $locale->text('Satz %'), }, + { 'text' => $locale->text('Balance'), }, ]; - my @hidden_variables = qw(accno fromdate todate description accounttype l_heading l_subtotal department projectnumber project_id sort); - my $link = build_std_url('action=list_transactions', grep { $form->{$_} } @hidden_variables); - map { $column_defs{$_}->{link} = $link . "&sort=$_" } qw(transdate reference description); - - $form->{callback} = $link . '&sort=' . E($form->{sort}); my $report = SL::ReportGenerator->new(\%myconfig, $form); $report->set_custom_headers(@custom_headers); @@ -577,7 +630,7 @@ sub list_transactions { $report->set_sort_indicator($form->{sort}, 1); - $column_defs->{balance}->{visible} = $form->{accno} ? 1 : 0; + $column_defs{balance}->{visible} = 1; my $ml = ($form->{category} =~ /(A|E)/) ? -1 : 1; @@ -592,9 +645,21 @@ sub list_transactions { foreach (qw(debit credit)) { $subtotals{$_} += $ca->{$_}; $totals{$_} += $ca->{$_}; + if ($_ =~ /debit.*/) { + $ml = -1; + } else { + $ml = 1; + } + $form->{balance}= $form->{balance} + $ca->{$_} * $ml; $ca->{$_} = $form->format_amount(\%myconfig, $ca->{$_}, 2) if ($ca->{$_} != 0); } + my $do_subtotal = 0; + if (($form->{subtotal}) + && (($idx == scalar @{ $form->{CA} } - 1) + || ($ca->{$form->{sort}} ne $form->{CA}->[$idx + 1]->{$form->{sort}}))) { + $do_subtotal = 1; + } my $row = { }; @@ -604,7 +669,7 @@ sub list_transactions { $ca->{description} .= " \n " . $ca->{memo}; } - + foreach my $gegenkonto (@{ $ca->{GEGENKONTO} }) { if ($ca->{gegenkonto} eq "") { @@ -621,28 +686,31 @@ sub list_transactions { }; } + $row->{balance}->{data} = $form->format_amount(\%myconfig, $form->{balance}, 2, 'DRCR'); + if ($ca->{index} ne $previous_index) { - $report->add_data($row_set) if ($row_set); +# $report->add_data($row_set) if ($row_set); - $row_set = [ ]; +# $row_set = [ ]; $previous_index = $ca->{index}; $row->{reference}->{link} = build_std_url("script=$ca->{module}.pl", 'action=edit', 'id=' . E($ca->{id}), 'callback'); - } else { + } elsif ($ca->{index} eq $previous_index) { map { $row->{$_}->{data} = '' } qw(reference description); $row->{transdate}->{data} = '' if ($form->{sort} eq 'transdate'); } + my $row_set = []; + push @{ $row_set }, $row; - if (($form->{l_subtotal} eq 'Y') - && (($idx == scalar @{ $form->{CA} } - 1) - || ($ca->{$form->{sort}} ne $form->{CA}->[$idx + 1]->{$form->{sort}}))) { - $report->add_data(create_subtotal_row(\%subtotals, \@columns, \%column_alignment, 'listsubtotal')); - } + push @{ $row_set }, create_subtotal_row(\%subtotals, \@columns, \%column_alignment, 'listsubtotal') if ($do_subtotal); + $idx++; + $report->add_data($row_set); + } $report->add_data($row_set) if ($row_set); @@ -650,12 +718,15 @@ sub list_transactions { $report->add_separator(); my $row = create_subtotal_row(\%totals, \@columns, \%column_alignment, 'listtotal'); - $row->{balance}->{data} = $form->format_amount(\%myconfig, $form->{balance} * $ml, 2); + + + $row->{balance}->{data} = $form->format_amount(\%myconfig, $form->{balance}, 2, 'DRCR'); + $report->add_data($row); $report->add_separator(); - my $row = { + $row = { 'transdate' => { 'data' => "", 'class' => 'listtotal', @@ -684,8 +755,8 @@ sub list_transactions { }; $report->add_data($row); - my $saldo_new = ($form->{saldo_new} > 0) ? $form->format_amount(\%myconfig, $form->{saldo_new}, 2) . " H" : $form->format_amount(\%myconfig, abs($form->{saldo_new}) , 2) . " S"; - my $row = { + my $saldo_new = format_debit_credit($form->{saldo_new}); + $row = { 'transdate' => { 'data' => "", 'class' => 'listtotal', @@ -718,11 +789,14 @@ sub list_transactions { $report->generate_with_headers(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub create_subtotal_row { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; my ($totals, $columns, $column_alignment, $class) = @_; @@ -732,7 +806,7 @@ sub create_subtotal_row { map { $totals->{$_} = 0 } qw(debit credit); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); return $row; }