X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fgl.pl;h=6d4cb661efeb8f9310a782c2be8b314e8da12b3c;hb=264b38c7465f95066b47588c2fbe85f102bd022c;hp=4a2d9792bad08cc4218e93ac59a04c16fba60d1d;hpb=b1253e4fa3f2a31c7452894439386d43951f5bc8;p=kivitendo-erp.git diff --git a/bin/mozilla/gl.pl b/bin/mozilla/gl.pl index 4a2d9792b..6d4cb661e 100644 --- a/bin/mozilla/gl.pl +++ b/bin/mozilla/gl.pl @@ -122,19 +122,11 @@ sub edit { $lxdebug->enter_sub(); GL->transaction(\%myconfig, \%$form); - - map { - if ($form->{debitaccno} eq $_->{accno}) { - $form->{debitchart} .= - "{accno}--$_->{taxkey_id}\">$_->{accno}--$_->{description}"; - } - } @{ $form->{chart} }; map { - if ($form->{creditaccno} eq $_->{accno}) { - $form->{creditchart} .= - "{accno}--$_->{taxkey_id}\">$_->{accno}--$_->{description}"; - } + $chart .= + "{accno}--$_->{taxkey_id}\">$_->{accno}--$_->{description}" } @{ $form->{chart} }; + map { $tax .= qq|$_->{taxdescription} | @@ -145,10 +137,6 @@ sub edit { $form->{taxchart} = $tax; - if ($form->{tax} < 0) { - $form->{tax} = $form->{tax} * (-1); - } - $form->{amount} = $form->format_amount(\%myconfig, $form->{amount}, 2); # departments @@ -162,22 +150,44 @@ sub edit { } (@{ $form->{all_departments} }); } - $i = 1; + my $i = 1; + my $tax = 0; + my $taxaccno = ""; foreach $ref (@{ $form->{GL} }) { - $form->{"accno_$i"} = "$ref->{accno}--$ref->{description}"; - $form->{"projectnumber_$i"} = "$ref->{projectnumber}--$ref->{project_id}"; - for (qw(fx_transaction source memo)) { $form->{"${_}_$i"} = $ref->{$_} } - if ($ref->{amount} < 0) { - $form->{totaldebit} -= $ref->{amount}; - $form->{"debit_$i"} = $ref->{amount} * -1; + $j = $i - 1; + if ($tax && ($ref->{accno} eq $taxaccno)) { + $form->{"tax_$j"} = abs($ref->{amount}); + $form->{"taxchart_$j"} = $ref->{taxkey} . "--" . $ref->{taxrate}; + if ($form->{taxincluded}) { + if ($ref->{amount} < 0) { + $form->{"debit_$j"} += $form->{"tax_$j"}; + } else { + $form->{"credit_$j"} += $form->{"tax_$j"}; + } + } + } else { + $form->{"accno_$i"} = "$ref->{accno}--$ref->{accnotaxkey}"; + for (qw(fx_transaction source memo)) { $form->{"${_}_$i"} = $ref->{$_} } + if ($ref->{amount} < 0) { + $form->{totaldebit} -= $ref->{amount}; + $form->{"debit_$i"} = $ref->{amount} * -1; + } else { + $form->{totalcredit} += $ref->{amount}; + $form->{"credit_$i"} = $ref->{amount}; + } + $form->{"taxchart_$i"} = "0--"; + $i++; + } + if ($ref->{taxaccno} && !$tax) { + $taxaccno = $ref->{taxaccno}; + $tax = 1; } else { - $form->{totalcredit} += $ref->{amount}; - $form->{"credit_$i"} = $ref->{amount}; + $taxaccno = ""; + $tax = 0; } - $i++; } $form->{rowcount} = $i; @@ -227,14 +237,12 @@ sub search { $button1 = qq| text('button') - . qq|> + . $locale->text('button') . qq|> |; $button2 = qq| text('button') - . qq|> + . $locale->text('button') . qq|> |; #write Trigger @@ -297,12 +305,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| | @@ -391,7 +395,7 @@ sub generate_report { $form->{title} = $locale->text('General Ledger'); - $ml = ($form->{ml} =~ /(A|E)/) ? -1 : 1; + $ml = ($form->{ml} =~ /(A|E|Q)/) ? -1 : 1; unless ($form->{category} eq 'X') { $form->{title} .= " : " . $locale->text($acctype{ $form->{category} }); @@ -465,10 +469,9 @@ sub generate_report { . $locale->date(\%myconfig, $form->{dateto}, 1); } - @columns = - $form->sort_columns( + @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) - ); + ); if ($form->{accno} || $form->{gifi_accno}) { @columns = grep !/(accno|gifi_accno)/, @columns; @@ -617,18 +620,18 @@ sub generate_report { |; } - + $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}; - } + #foreach $key (sort keys(%{ $ref->{amount} })) { + # $form->{balance} += $ref->{amount}{$key}; + #} $debit = ""; foreach $key (sort keys(%{ $ref->{debit} })) { @@ -640,6 +643,7 @@ sub generate_report { $debit .= "" . $form->format_amount(\%myconfig, $ref->{debit}{$key}, 2, 0); } + $form->{balance} = abs($form->{balance}) - abs($ref->{debit}{$key}); } $credit = ""; @@ -652,6 +656,7 @@ sub generate_report { $credit .= "" . $form->format_amount(\%myconfig, $ref->{credit}{$key}, 2, 0); } + $form->{balance} = abs($form->{balance}) - abs( $ref->{credit}{$key}); } $debittax = ""; @@ -665,6 +670,7 @@ sub generate_report { $debittax .= "" . $form->format_amount(\%myconfig, $ref->{debit_tax}{$key}, 2, 0); } + $form->{balance} = abs($form->{balance}) - abs($ref->{debit_tax}{$key}); } $credittax = ""; @@ -678,6 +684,7 @@ sub generate_report { $credittax .= "" . $form->format_amount(\%myconfig, $ref->{credit_tax}{$key}, 2, 0); } + $form->{balance} = abs($form->{balance}) - abs($ref->{credit_tax}{$key}); } $debitaccno = ""; @@ -686,14 +693,14 @@ 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}; } @@ -704,14 +711,14 @@ 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}; } @@ -720,10 +727,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}"; } } @@ -731,10 +738,10 @@ 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}"; } } @@ -770,7 +777,7 @@ sub generate_report { "{gifi_accno}&callback=$callback>$ref->{gifi_accno} "; $column_data{balance} = "" - . $form->format_amount(\%myconfig, $form->{balance} * $ml, 2, 0) + . $form->format_amount(\%myconfig, $form->{balance}, 2, 0) . ""; $i++; @@ -900,11 +907,16 @@ sub update { $form->{oldtransdate} = $form->{transdate}; } - my @a = (); - my $count = 0; - my $debittax = 0; - my $credittax = 0; - my @flds = + my @a = (); + my $count = 0; + my $debittax = 0; + my $credittax = 0; + my $debitcount = 0; + my $creditcount = 0; + $debitlock = 0; + $creditlock = 0; + + my @flds = qw(accno debit credit projectnumber fx_transaction source memo tax taxchart); for my $i (1 .. $form->{rowcount}) { @@ -917,6 +929,36 @@ sub update { push @a, {}; $debitcredit = ($form->{"debit_$i"} == 0) ? "0" : "1"; + if ($debitcredit) { + $debitcount++; + } else { + $creditcount++; + } + + if (($debitcount >= 2) && ($creditcount == 2)) { + $form->{"credit_$i"} = 0; + $form->{"tax_$i"} = 0; + $creditcount--; + $creditlock = 1; + } + if (($creditcount >= 2) && ($debitcount == 2)) { + $form->{"debit_$i"} = 0; + $form->{"tax_$i"} = 0; + $debitcount--; + $debitlock = 1; + } + if (($creditcount == 1) && ($debitcount == 2)) { + $creditlock = 1; + } + if (($creditcount == 2) && ($debitcount == 1)) { + $debitlock = 1; + } + if ($debitcredit && $credittax) { + $form->{"taxchart_$i"} = "0--0.00"; + } + if (!$debitcredit && $debittax) { + $form->{"taxchart_$i"} = "0--0.00"; + } $amount = ($form->{"debit_$i"} == 0) ? $form->{"credit_$i"} @@ -999,27 +1041,24 @@ sub display_rows { for $i (1 .. $form->{rowcount}) { $source = qq| - |; + |; $memo = qq| - |; + |; if ($init) { $accno = qq| - $form->{chartinit}|; + $form->{chartinit}|; $tax = - qq|$form->{taxchart}|; - if ($form->{selectprojectnumber}) { - $project = qq| - $form->{selectprojectnumber}|; - } +# if ($form->{selectprojectnumber}) { +# $project = qq| +# $form->{selectprojectnumber}|; +# } $korrektur = qq|{totaldebit} += $form->{"debit_$i"}; - $form->{totalcredit} += $form->{"credit_$i"}; + if ($form->{"debit_$i"} != 0) { + $form->{totaldebit} += $form->{"debit_$i"}; + if (!$form->{taxincluded}) { + $form->{totaldebit} += $form->{"tax_$i"}; + } + } else { + $form->{totalcredit} += $form->{"credit_$i"}; + if (!$form->{taxincluded}) { + $form->{totalcredit} += $form->{"tax_$i"}; + } + } for (qw(debit credit tax)) { $form->{"${_}_$i"} = @@ -1049,7 +1096,7 @@ sub display_rows { $accno =~ s/value=\"$chart_selected\"/value=\"$chart_selected\" selected/; $accno = - qq|$accno|; $tax = $taxchart; @@ -1060,14 +1107,14 @@ sub display_rows { . ($i + 10 + (($i - 1) * 8)) . 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->{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" : ""; @@ -1081,22 +1128,20 @@ sub display_rows { qq||; - $form->hide_form("accno_$i", "projectnumber_$i"); + $form->hide_form("accno_$i"); } else { $accno = qq| $chart|; + . ($i + 5 + (($i - 1) * 8)) . qq|>$chart|; $tax = qq| $taxchart|; - if ($form->{selectprojectnumber}) { - $project = qq| - $form->{selectprojectnumber}|; - } + . ($i + 10 + (($i - 1) * 8)) . qq|>$taxchart|; +# if ($form->{selectprojectnumber}) { +# $project = qq| +# $form->{selectprojectnumber}|; +# } $korrektur = qq|{rowcount}) { + if ($debitlock) { + $debitreadonly = "readonly"; + } elsif ($creditlock) { + $creditreadonly = "readonly"; + } + } print qq| $accno $fx_transaction - - - + + + $korrektur $tax $source $memo - $project |; } $form->hide_form(qw(rowcount selectaccno)); - print qq| -|; +# print qq| +# |; $lxdebug->leave_sub(); } @@ -1189,9 +1239,6 @@ sub form_header { $taxincluded = "checked"; } - $amount = - qq||; - $department = qq| | . $locale->text('Department') . qq| @@ -1212,10 +1259,9 @@ sub form_header { # with JavaScript Calendar $button1 = qq| - {transdate} tabindex="2" $readonly> + text('button') - . qq|> + . $locale->text('button') . qq|> |; #write Trigger @@ -1226,7 +1272,7 @@ sub form_header { # without JavaScript Calendar $button1 = - qq|{transdate} tabindex="2" $readonly>|; + qq||; } $form->header; @@ -1254,10 +1300,10 @@ sub form_header { - | . $locale->text('Reference') . qq| + | . $locale->text('Reference') . qq| - + | . $locale->text('Date') . qq| $button1 @@ -1271,7 +1317,7 @@ sub form_header { | . $locale->text('Belegnummer') . qq| - + | . $locale->text('Buchungsdatum') . qq| {gldate} $readonly> @@ -1285,8 +1331,16 @@ sub form_header { if ($form->{id}) { print qq| - | . $locale->text('Description') . qq| - $description + | . $locale->text('Description') . qq| + $description + + + + | . $locale->text('MwSt. inkl.') . qq| + + + + @@ -1299,15 +1353,9 @@ sub form_header { } else { print qq| - | . $locale->text('Description') . qq| - $description - |; - } - print qq| - - | . $locale->text('Betrag') . qq| - $amount - + | . $locale->text('Description') . qq| + $description + | . $locale->text('MwSt. inkl.') . qq| @@ -1315,31 +1363,27 @@ sub form_header { - + |; + } + print qq| + | - . $locale->text('Account') - . qq| + . $locale->text('Account') . qq| | - . $locale->text('Debit') - . qq| + . $locale->text('Debit') . qq| | - . $locale->text('Credit') - . qq| + . $locale->text('Credit') . qq| | - . $locale->text('Tax') - . qq| + . $locale->text('Tax') . qq| | - . $locale->text('Korrektur') - . qq| + . $locale->text('Korrektur') . qq| | - . $locale->text('Taxkey') - . qq| + . $locale->text('Taxkey') . qq| | - . $locale->text('Source') - . qq| + . $locale->text('Source') . qq| | . $locale->text('Memo') . qq| $project @@ -1359,11 +1403,19 @@ sub form_footer { map { $form->{$_} = - $form->format_amount(\%myconfig, $form->{$_}, $decimalplaces, " ") + $form->format_amount(\%myconfig, $form->{$_}, 2, " ") } qw(totaldebit totalcredit); print qq| + + + $form->{totaldebit} + $form->{totalcredit} + + + + {path}> @@ -1388,8 +1440,7 @@ sub form_footer { if (!$form->{locked} && $radieren) { print qq| + . $locale->text('Post') . qq|" accesskey="b"> |; } @@ -1480,12 +1531,30 @@ sub post { # check project &check_project; - my @a = (); - my $count = 0; - my $debittax = 0; - my $credittax = 0; - my @flds = + my @a = (); + my $count = 0; + my $debittax = 0; + my $credittax = 0; + my $debitcount = 0; + my $creditcount = 0; + $creditlock = 0; + $debitlock = 0; + + my @flds = qw(accno debit credit projectnumber fx_transaction source memo tax taxchart); + if ($form->{storno}) { + for my $i (1 .. $form->{rowcount}) { + unless (($form->{"debit_$i"} eq "") && ($form->{"credit_$i"} eq "")) { + if ($form->{"debit_$i"} ne "") { + $form->{"credit_$i"} = $form->{"debit_$i"}; + $form->{"debit_$i"} = ""; + } elsif ($form->{"credit_$i"} ne "") { + $form->{"debit_$i"} = $form->{"credit_$i"}; + $form->{"credit_$i"} = ""; + } + } + } + } for my $i (1 .. $form->{rowcount}) { @@ -1497,6 +1566,37 @@ sub post { push @a, {}; $debitcredit = ($form->{"debit_$i"} == 0) ? "0" : "1"; + + if ($debitcredit) { + $debitcount++; + } else { + $creditcount++; + } + + if (($debitcount >= 2) && ($creditcount == 2)) { + $form->{"credit_$i"} = 0; + $form->{"tax_$i"} = 0; + $creditcount--; + $creditlock = 1; + } + if (($creditcount >= 2) && ($debitcount == 2)) { + $form->{"debit_$i"} = 0; + $form->{"tax_$i"} = 0; + $debitcount--; + $debitlock = 1; + } + if (($creditcount == 1) && ($debitcount == 2)) { + $creditlock = 1; + } + if (($creditcount == 2) && ($debitcount == 1)) { + $debitlock = 1; + } + if ($debitcredit && $credittax) { + $form->{"taxchart_$i"} = "0--0.00"; + } + if (!$debitcredit && $debittax) { + $form->{"taxchart_$i"} = "0--0.00"; + } $amount = ($form->{"debit_$i"} == 0) ? $form->{"credit_$i"} @@ -1516,12 +1616,23 @@ sub post { } if ($form->{taxincluded}) { $form->{"tax_$i"} = $amount / ($rate + 1) * $rate; + if ($debitcredit) { + $form->{"debit_$i"} = $form->{"debit_$i"} - $form->{"tax_$i"}; + } else { + $form->{"credit_$i"} = $form->{"credit_$i"} - $form->{"tax_$i"}; + } } else { $form->{"tax_$i"} = $amount * $rate; } } else { $form->{"tax_$i"} = 0; } + } elsif ($form->{taxincluded}) { + if ($debitcredit) { + $form->{"debit_$i"} = $form->{"debit_$i"} - $form->{"tax_$i"}; + } else { + $form->{"credit_$i"} = $form->{"credit_$i"} - $form->{"tax_$i"}; + } } for (@flds) { $a[$j]->{$_} = $form->{"${_}_$i"} } @@ -1549,8 +1660,12 @@ sub post { )); } if ($form->{taxincluded}) { - $debit += $dr; - $credit += $cr; + if ($dr) { + $debit += $dr + $tax; + } + if ($cr) { + $credit += $cr + $tax; + } $taxtotal += $tax; } else { if ($dr) {