X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=bin%2Fmozilla%2Fgl.pl;h=b6d9448287aecb53dfed9d9a52c86b7e4161d725;hb=98662ad2b031a81c88ce6da0babf6f9d0b37059a;hp=c66fdf997c7f1dafbc2581aa1117b2527b829cd7;hpb=e9a4d347c175c51f66a6270e349f66866b19f532;p=kivitendo-erp.git diff --git a/bin/mozilla/gl.pl b/bin/mozilla/gl.pl index c66fdf997..b6d944828 100644 --- a/bin/mozilla/gl.pl +++ b/bin/mozilla/gl.pl @@ -35,6 +35,7 @@ use SL::GL; use SL::PE; require "$form->{path}/arap.pl"; +require "bin/mozilla/common.pl"; 1; @@ -80,24 +81,14 @@ sub add { # we use this only to set a default date GL->transaction(\%myconfig, \%$form); - map { - $chart .= - "{accno}--$_->{taxkey_id}\">$_->{accno}--$_->{description}" - } @{ $form->{chart} }; map { $tax .= - qq|$_->{taxdescription} | + qq|$_->{taxdescription} | . ($_->{rate} * 100) . qq| %| } @{ $form->{TAX} }; - $form->{chart} = $chart; - $form->{chartinit} = $chart; $form->{rowcount} = 2; - $form->{debitchart} = $chart; - $form->{creditchart} = $chart; - $form->{taxchart} = $tax; - $form->{debit} = 0; $form->{credit} = 0; $form->{tax} = 0; @@ -122,21 +113,13 @@ sub edit { $lxdebug->enter_sub(); GL->transaction(\%myconfig, \%$form); - map { - $chart .= - "{accno}--$_->{taxkey_id}\">$_->{accno}--$_->{description}" - } @{ $form->{chart} }; map { $tax .= - qq|$_->{taxdescription} | + qq|$_->{taxdescription} | . ($_->{rate} * 100) . qq| %| } @{ $form->{TAX} }; - $form->{chart} = $chart; - - $form->{taxchart} = $tax; - $form->{amount} = $form->format_amount(\%myconfig, $form->{amount}, 2); # departments @@ -154,12 +137,10 @@ sub edit { my $tax = 0; my $taxaccno = ""; foreach $ref (@{ $form->{GL} }) { - $form->{"projectnumber_$i"} = "$ref->{projectnumber}--$ref->{project_id}"; - $j = $i - 1; if ($tax && ($ref->{accno} eq $taxaccno)) { $form->{"tax_$j"} = abs($ref->{amount}); - $form->{"taxchart_$j"} = $ref->{taxkey} . "--" . $ref->{taxrate}; + $form->{"taxchart_$j"} = $ref->{id} . "--" . $ref->{taxrate}; if ($form->{taxincluded}) { if ($ref->{amount} < 0) { $form->{"debit_$j"} += $form->{"tax_$j"}; @@ -167,8 +148,10 @@ sub edit { $form->{"credit_$j"} += $form->{"tax_$j"}; } } + $form->{"project_id_$j"} = $ref->{project_id}; + } else { - $form->{"accno_$i"} = "$ref->{accno}--$ref->{accnotaxkey}"; + $form->{"accno_$i"} = "$ref->{accno}--$ref->{tax_id}"; for (qw(fx_transaction source memo)) { $form->{"${_}_$i"} = $ref->{$_} } if ($ref->{amount} < 0) { $form->{totaldebit} -= $ref->{amount}; @@ -177,7 +160,8 @@ sub edit { $form->{totalcredit} += $ref->{amount}; $form->{"credit_$i"} = $ref->{amount}; } - $form->{"taxchart_$i"} = "0--"; + $form->{"taxchart_$i"} = "0--0.00"; + $form->{"project_id_$i"} = $ref->{project_id}; $i++; } if ($ref->{taxaccno} && !$tax) { @@ -187,7 +171,6 @@ sub edit { $taxaccno = ""; $tax = 0; } - } $form->{rowcount} = $i; @@ -228,6 +211,21 @@ sub search { | if $form->{selectdepartment}; + $form->get_lists("projects" => { "key" => "ALL_PROJECTS", + "all" => 1 }); + + my %project_labels = (); + my @project_values = (""); + foreach my $item (@{ $form->{"ALL_PROJECTS"} }) { + push(@project_values, $item->{"id"}); + $project_labels{$item->{"id"}} = $item->{"projectnumber"}; + } + + my $projectnumber = + NTI($cgi->popup_menu('-name' => "project_id", + '-values' => \@project_values, + '-labels' => \%project_labels)); + # use JavaScript Calendar or not $form->{jsscript} = $jscalendar; $jsscript = ""; @@ -290,9 +288,14 @@ sub search { | . $locale->text('Notes') . qq| + + | . $locale->text('Project Number') . qq| + $projectnumber + | . $locale->text('From') . qq| $button1 + | . $locale->text('To (time)') . qq| $button2 @@ -305,12 +308,8 @@ sub search { . $locale->text('All') . qq| | . $locale->text('Asset') . qq| - | - . $locale->text('Contra') . qq| | . $locale->text('Liability') . qq| - | - . $locale->text('Equity') . qq| | . $locale->text('Revenue') . qq| | @@ -346,6 +345,8 @@ sub search { | . $locale->text('Subtotal') . qq| + + | . $locale->text('Project Number') . qq| @@ -451,6 +452,10 @@ sub generate_report { $option .= "\n" if $option; $option .= $locale->text('Notes') . " : $form->{notes}"; } + if ($form->{project_id}) { + $href .= "&project_id=" . $form->escape($form->{project_id}); + $callback .= "&project_id=" . $form->escape($form->{project_id}); + } if ($form->{datefrom}) { $href .= "&datefrom=$form->{datefrom}"; @@ -473,8 +478,13 @@ sub generate_report { . $locale->date(\%myconfig, $form->{dateto}, 1); } - @columns = $form->sort_columns( - qw(transdate id reference description notes source debit debit_accno credit credit_accno debit_tax debit_tax_accno credit_tax credit_tax_accno accno gifi_accno) + @columns = $form->sort_columns( qw( + transdate id reference description + notes source debit debit_accno + credit credit_accno debit_tax debit_tax_accno + credit_tax credit_tax_accno accno gifi_accno + projectnumbers + ) ); if ($form->{accno} || $form->{gifi_accno}) { @@ -564,6 +574,8 @@ sub generate_report { . $locale->text('GIFI') . ""; $column_header{balance} = "" . $locale->text('Balance') . ""; + $column_header{projectnumbers} = + "" . $locale->text('Project Numbers') . ""; $form->{landscape} = 1; @@ -624,15 +636,17 @@ sub generate_report { |; } - $form->{balance} *= $ml; + $form->{balance} *= $ml; foreach $ref (@{ $form->{GL} }) { $form->{balance} *= $ml; + # if item ne sort print subtotal if ($form->{l_subtotal} eq 'Y') { if ($sameitem ne $ref->{ $form->{sort} }) { &gl_subtotal; } } + #foreach $key (sort keys(%{ $ref->{amount} })) { # $form->{balance} += $ref->{amount}{$key}; #} @@ -660,7 +674,7 @@ sub generate_report { $credit .= "" . $form->format_amount(\%myconfig, $ref->{credit}{$key}, 2, 0); } - $form->{balance} = abs($form->{balance}) - abs( $ref->{credit}{$key}); + $form->{balance} = abs($form->{balance}) - abs($ref->{credit}{$key}); } $debittax = ""; @@ -697,14 +711,15 @@ sub generate_report { foreach $key (sort keys(%{ $ref->{debit_accno} })) { if ($key == 0) { $debitaccno = - "{accno}&callback=$callback>$ref->{debit_accno}{$key}"; + "{debit_accno}{$key}&callback=$callback>$ref->{debit_accno}{$key}"; } else { $debitaccno .= - "{accno}&callback=$callback>$ref->{debit_accno}{$key}"; - } - if ($ref->{debit_taxkey}{$key} eq $debittaxkey) { - $ref->{debit_tax_accno}{$key} = $taxaccno; + "{debit_accno}{$key}&callback=$callback>$ref->{debit_accno}{$key}"; } + + # if ($ref->{debit_taxkey}{$key} eq $debittaxkey) { + # $ref->{debit_tax_accno}{$key} = $taxaccno; + # } $taxaccno = $ref->{debit_tax_accno}{$key}; $debittaxkey = $ref->{debit_taxkey}{$key}; } @@ -715,14 +730,15 @@ sub generate_report { foreach $key (sort keys(%{ $ref->{credit_accno} })) { if ($key == 0) { $creditaccno = - "{accno}&callback=$callback>$ref->{credit_accno}{$key}"; + "{credit_accno}{$key}&callback=$callback>$ref->{credit_accno}{$key}"; } else { $creditaccno .= - "{accno}&callback=$callback>$ref->{credit_accno}{$key}"; - } - if ($ref->{credit_taxkey}{$key} eq $credittaxkey) { - $ref->{credit_tax_accno}{$key} = $taxaccno; + "{credit_accno}{$key}&callback=$callback>$ref->{credit_accno}{$key}"; } + + # if ($ref->{credit_taxkey}{$key} eq $credittaxkey) { + # $ref->{credit_tax_accno}{$key} = $taxaccno; + # } $taxaccno = $ref->{credit_tax_accno}{$key}; $credittaxkey = $ref->{credit_taxkey}{$key}; } @@ -731,10 +747,10 @@ sub generate_report { foreach $key (sort keys(%{ $ref->{debit_tax_accno} })) { if ($key == 0) { $debittaxaccno = - "{accno}&callback=$callback>$ref->{debit_tax_accno}{$key}"; + "{debit_tax_accno}{$key}&callback=$callback>$ref->{debit_tax_accno}{$key}"; } else { $debittaxaccno .= - "{accno}&callback=$callback>$ref->{debit_tax_accno}{$key}"; + "{debit_tax_accno}{$key}&callback=$callback>$ref->{debit_tax_accno}{$key}"; } } @@ -742,10 +758,19 @@ sub generate_report { foreach $key (sort keys(%{ $ref->{credit_tax_accno} })) { if ($key == 0) { $credittaxaccno = - "{accno}&callback=$callback>$ref->{credit_tax_accno}{$key}"; + "{credit_tax_accno}{$key}&callback=$callback>$ref->{credit_tax_accno}{$key}"; } else { $credittaxaccno .= - "{accno}&callback=$callback>$ref->{credit_tax_accno}{$key}"; + "{credit_tax_accno}{$key}&callback=$callback>$ref->{credit_tax_accno}{$key}"; + } + } + + $transdate = ""; + foreach $key (sort keys(%{ $ref->{ac_transdate} })) { + if ($key == 0) { + $transdate = "$ref->{ac_transdate}{$key}"; + } else { + $transdate .= "$ref->{ac_transdate}{$key}"; } } @@ -753,12 +778,10 @@ sub generate_report { # $ref->{credit} = $form->format_amount(\%myconfig, $ref->{credit}, 2, " "); $column_data{id} = " $ref->{id} "; - $column_data{transdate} = - " $ref->{transdate} "; + $column_data{transdate} = "$transdate"; $column_data{reference} = "{module}.pl?action=edit&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{reference}"; - $column_data{description} = - "$ref->{description} "; + $column_data{description} = "$ref->{description} "; $column_data{source} = "$ref->{source} "; $column_data{notes} = "$ref->{notes} "; $column_data{debit} = "$debit"; @@ -780,9 +803,10 @@ sub generate_report { $column_data{gifi_accno} = "{gifi_accno}&callback=$callback>$ref->{gifi_accno} "; $column_data{balance} = - "" - . $form->format_amount(\%myconfig, $form->{balance}, 2, 0) - . ""; + "" + . $form->format_amount(\%myconfig, $form->{balance}, 2, 0) . ""; + $column_data{projectnumbers} = + "" . join(", ", sort({ lc($a) cmp lc($b) } keys(%{ $ref->{projectnumbers} }))) . ""; $i++; $i %= 2; @@ -797,6 +821,12 @@ sub generate_report { map { $column_data{$_} = " " } @column_index; + my $balanced_ledger = $totaldebit + + $totaldebittax + - $totalcredit + - $totalcredittax; + # = 0 for balanced ledger + $column_data{debit} = "" . $form->format_amount(\%myconfig, $totaldebit, 2, " ") . ""; @@ -821,6 +851,27 @@ sub generate_report { print qq| + |; + + + if ( abs($balanced_ledger) > 0.001 ) { + + print qq|| + . $locale->text('Unbalanced Ledger') + . ": " + . $form->format_amount(\%myconfig, $balanced_ledger, 3, " ") + + } elsif ( abs($balanced_ledger) <= 0.001 ) { + + print qq|| + . $locale->text('Balanced Ledger') + + } + + + print qq| + + @@ -849,14 +900,7 @@ sub generate_report { |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Vendor Invoice') . qq|"> @@ -895,21 +939,7 @@ sub gl_subtotal { sub update { $lxdebug->enter_sub(); - if ($form->{transdate} ne $form->{oldtransdate}) { - if ($form->{selectprojectnumber}) { - $form->all_projects(\%myconfig, undef, $form->{transdate}); - if (@{ $form->{all_project} }) { - $form->{selectprojectnumber} = "\n"; - for (@{ $form->{all_project} }) { - $form->{selectprojectnumber} .= - qq|$_->{projectnumber}\n|; - } - $form->{selectprojectnumber} = - $form->escape($form->{selectprojectnumber}, 1); - } - } - $form->{oldtransdate} = $form->{transdate}; - } + $form->{oldtransdate} = $form->{transdate}; my @a = (); my $count = 0; @@ -969,7 +999,7 @@ sub update { : $form->{"debit_$i"}; $j = $#a; if (($debitcredit && $credittax) || (!$debitcredit && $debittax)) { - $form->{"taxchart_$i"} = "0--"; + $form->{"taxchart_$i"} = "0--0.00"; $form->{"tax_$i"} = 0; } if (!$form->{"korrektur_$i"}) { @@ -1033,40 +1063,100 @@ sub display_rows { my ($init) = @_; $lxdebug->enter_sub(); - $form->{selectprojectnumber} = $form->unescape($form->{selectprojectnumber}) - if $form->{selectprojectnumber}; - $form->{totaldebit} = 0; $form->{totalcredit} = 0; - my $chart = $form->{chart}; - $chart = $form->unquote($chart); - $form->{taxchart} = $form->unquote($form->{taxchart}); - $taxchart = $form->{taxchart}; + + my @old_project_ids = (); + map({ push(@old_project_ids, $form->{"project_id_$_"}) + if ($form->{"project_id_$_"}); } (1..$form->{"rowcount"})); + + $form->get_lists("projects" => { "key" => "ALL_PROJECTS", + "all" => 0, + "old_id" => \@old_project_ids }, + "charts" => { "key" => "ALL_CHARTS", + "transdate" => $form->{transdate} }, + "taxcharts" => "ALL_TAXCHARTS"); + + my %project_labels = (); + my @project_values = (""); + foreach my $item (@{ $form->{"ALL_PROJECTS"} }) { + push(@project_values, $item->{"id"}); + $project_labels{$item->{"id"}} = $item->{"projectnumber"}; + } + + my %chart_labels = (); + my @chart_values = (); + my %charts = (); + my $taxchart_init; + foreach my $item (@{ $form->{ALL_CHARTS} }) { + my $key = Q($item->{accno}) . "--" . Q($item->{tax_id}); + $taxchart_init = $item->{taxkey_id} unless (@chart_values); + push(@chart_values, $key); + $chart_labels{$key} = H($item->{accno}) . "--" . H($item->{description}); + $charts{$item->{accno}} = $item; + } + + my %taxchart_labels = (); + my @taxchart_values = (); + my %taxcharts = (); + foreach my $item (@{ $form->{ALL_TAXCHARTS} }) { + my $key = Q($item->{id}) . "--" . Q($item->{rate}); + $taxchart_init = $key if ($taxchart_init eq $item->{taxkey}); + push(@taxchart_values, $key); + $taxchart_labels{$key} = H($item->{taxdescription}) . " " . + H($item->{rate} * 100) . ' %'; + $taxcharts{$item->{id}} = $item; + } + for $i (1 .. $form->{rowcount}) { $source = qq| - |; + |; $memo = qq| - |; + |; + + my $selected_accno_full; + my ($accno_row) = split(/--/, $form->{"accno_$i"}); + my $item = $charts{$accno_row}; + $selected_accno_full = "$item->{accno}--$item->{tax_id}"; + + my $selected_taxchart = $form->{"taxchart_$i"}; + my ($selected_accno, $selected_tax_id) = split(/--/, $selected_accno_full); + my ($previous_accno, $previous_tax_id) = split(/--/, $form->{"previous_accno_$i"}); + + if ($previous_accno && + ($previous_accno eq $selected_accno) && + ($previous_tax_id ne $selected_tax_id)) { + my $item = $taxcharts{$selected_tax_id}; + $selected_taxchart = "$item->{id}--$item->{rate}"; + } + + $selected_accno = '' if ($init); + $selected_taxchart = $taxchart_init unless ($selected_taxchart ne ""); + + $accno = qq|| . + NTI($cgi->popup_menu('-name' => "accno_$i", + '-id' => "accno_$i", + '-onChange' => "setTaxkey(this, $i)", + '-style' => 'width:200px', + '-values' => \@chart_values, + '-labels' => \%chart_labels, + '-default' => $selected_accno_full)) + . $cgi->hidden('-name' => "previous_accno_$i", + '-default' => $selected_accno_full) + . qq||; + $tax = qq|| . + NTI($cgi->popup_menu('-name' => "taxchart_$i", + '-id' => "taxchart_$i", + '-style' => 'width:200px', + '-values' => \@taxchart_values, + '-labels' => \%taxchart_labels, + '-default' => $selected_taxchart)) + . qq||; if ($init) { - $accno = qq| - $form->{chartinit}|; - $tax = - qq|$form->{taxchart}|; -# if ($form->{selectprojectnumber}) { -# $project = qq| -# $form->{selectprojectnumber}|; -# } $korrektur = - qq||; + qq||; if ($form->{transfer}) { $fx_transaction = qq| @@ -1094,32 +1184,6 @@ sub display_rows { } if ($i < $form->{rowcount}) { - - $accno = $chart; - $chart_selected = $form->{"accno_$i"}; - $accno =~ - s/value=\"$chart_selected\"/value=\"$chart_selected\" selected/; - $accno = - qq|$accno|; - $tax = $taxchart; - $tax_selected = $form->{"taxchart_$i"}; - $tax =~ s/value=\"$tax_selected\"/value=\"$tax_selected\" selected/; - $tax = - qq|$tax|; - -# if ($form->{selectprojectnumber}) { -# $form->{"projectnumber_$i"} = "" -# if $form->{selectprojectnumber} !~ /$form->{"projectnumber_$i"}/; -# -# $project = $form->{"projectnumber_$i"}; -# $project =~ s/--.*//; -# $project = qq|$project|; -# } - if ($form->{transfer}) { $checked = ($form->{"fx_transaction_$i"}) ? "1" : ""; $x = ($checked) ? "x" : ""; @@ -1129,27 +1193,12 @@ sub display_rows { } $checked = ($form->{"korrektur_$i"}) ? "checked" : ""; $korrektur = - qq||; + qq||; $form->hide_form("accno_$i"); } else { - - $accno = qq| - $chart|; - $tax = qq| - $taxchart|; -# if ($form->{selectprojectnumber}) { -# $project = qq| -# $form->{selectprojectnumber}|; -# } $korrektur = - qq||; + qq||; if ($form->{transfer}) { $fx_transaction = qq| @@ -1167,28 +1216,30 @@ sub display_rows { } } + my $projectnumber = + NTI($cgi->popup_menu('-name' => "project_id_$i", + '-values' => \@project_values, + '-labels' => \%project_labels, + '-default' => $form->{"project_id_$i"} )); + print qq| $accno $fx_transaction - - - + + + $korrektur $tax $source $memo + $projectnumber |; } $form->hide_form(qw(rowcount selectaccno)); -# print qq| -# |; + $lxdebug->leave_sub(); } @@ -1209,7 +1260,7 @@ sub form_header {