X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fgl.pl;h=18e3fa580f79a88761b4ff13fbfedc2d23b87326;hb=befa8b79f46fa8815bed0da27cbf406ca8a9b94f;hp=e3a7a471e53725836030e1d60d082ba8be6061fd;hpb=8cef58b276ce4005c0e2ada350fecd5d7a103e89;p=kivitendo-erp.git diff --git a/bin/mozilla/gl.pl b/bin/mozilla/gl.pl index e3a7a471e..18e3fa580 100644 --- a/bin/mozilla/gl.pl +++ b/bin/mozilla/gl.pl @@ -32,9 +32,10 @@ #====================================================================== use SL::GL; +use SL::IS; use SL::PE; -require "$form->{path}/arap.pl"; +require "bin/mozilla/arap.pl"; require "bin/mozilla/common.pl"; 1; @@ -75,7 +76,7 @@ sub add { $form->{title} = "Add"; $form->{callback} = - "$form->{script}?action=add&path=$form->{path}&login=$form->{login}&password=$form->{password}" + "$form->{script}?action=add&login=$form->{login}&password=$form->{password}" unless $form->{callback}; # we use this only to set a default date @@ -104,12 +105,14 @@ sub add { } (@{ $form->{all_departments} }); } + $form->{show_details} = $myconfig{show_form_details} unless defined $form->{show_details}; + &display_form(1); $lxdebug->leave_sub(); } -sub edit { +sub prepare_transaction { $lxdebug->enter_sub(); GL->transaction(\%myconfig, \%$form); @@ -178,15 +181,26 @@ sub edit { ($form->datetonum($form->{transdate}, \%myconfig) <= $form->datetonum($form->{closedto}, \%myconfig)); + $lxdebug->leave_sub(); +} + +sub edit { + $lxdebug->enter_sub(); + + prepare_transaction(); + $form->{title} = "Edit"; - &form_header; - &display_rows; - &form_footer; - $lxdebug->leave_sub(); + $form->{show_details} = $myconfig{show_form_details} unless defined $form->{show_details}; + form_header(); + display_rows(); + form_footer(); + + $lxdebug->leave_sub(); } + sub search { $lxdebug->enter_sub(); @@ -227,7 +241,7 @@ sub search { '-labels' => \%project_labels)); # use JavaScript Calendar or not - $form->{jsscript} = $jscalendar; + $form->{jsscript} = 1; $jsscript = ""; if ($form->{jsscript}) { @@ -364,7 +378,6 @@ $jsscript -{path}> {login}> {password}> @@ -387,7 +400,7 @@ sub generate_report { GL->all_transactions(\%myconfig, \%$form); $callback = - "$form->{script}?action=generate_report&path=$form->{path}&login=$form->{login}&password=$form->{password}"; + "$form->{script}?action=generate_report&login=$form->{login}&password=$form->{password}"; $href = $callback; @@ -768,7 +781,7 @@ sub generate_report { $column_data{id} = " $ref->{id} "; $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}"; + "{module}.pl?action=edit&id=$ref->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{reference}"; $column_data{description} = "$ref->{description} "; $column_data{source} = "$ref->{source} "; $column_data{notes} = "$ref->{notes} "; @@ -871,7 +884,6 @@ sub generate_report { -{path}> {login}> {password}> @@ -1047,6 +1059,7 @@ sub display_rows { my ($init) = @_; $lxdebug->enter_sub(); + $form->{debit_1} = 0 if !$form->{"debit_1"}; $form->{totaldebit} = 0; $form->{totalcredit} = 0; @@ -1140,7 +1153,7 @@ sub display_rows { if ($init) { $korrektur = - qq||; + qq||; if ($form->{transfer}) { $fx_transaction = qq| @@ -1206,20 +1219,27 @@ sub display_rows { '-labels' => \%project_labels, '-default' => $form->{"project_id_$i"} )); + my $copy2credit = 'onkeyup="copy_debit_to_credit()"' if $i == 1; + print qq| $accno $fx_transaction - + $korrektur - $tax + $tax|; + + if ($form->{show_details}) { + print qq| $source $memo $projectnumber +|; + } + print qq| - - |; +|; } $form->hide_form(qw(rowcount selectaccno)); @@ -1235,11 +1255,14 @@ sub form_header { $form->{title} = $locale->text("$title General Ledger Transaction"); $readonly = ($form->{id}) ? "readonly" : ""; + $show_details_checked = "checked" if $form->{show_details}; + # $locale->text('Add General Ledger Transaction') # $locale->text('Edit General Ledger Transaction') map { $form->{$_} =~ s/\"/"/g } qw(reference description chart taxchart); + $form->{javascript} = qq||; + $form->{javascript} .= qq||; $form->{selectdepartment} =~ s/ selected//; $form->{selectdepartment} =~ @@ -1292,7 +1322,7 @@ sub form_header { } # use JavaScript Calendar or not - $form->{jsscript} = $jscalendar; + $form->{jsscript} = 1; $jsscript = ""; if ($form->{jsscript}) { @@ -1313,17 +1343,20 @@ sub form_header { qq||; } + $form->{previous_id} ||= "--"; + $form->{previous_gldate} ||= "--"; + $form->header; print qq|
{script}> +|; -{id}> + $form->hide_form(qw(id closedto locked storno storno_id previous_id previous_gldate)); -{closedto}> -{locked}> + print qq| @@ -1335,6 +1368,14 @@ sub form_header { + + + @@ -1401,6 +1442,12 @@ sub form_header { |; } + + print qq| + + + |; + print qq| - + . $locale->text('Taxkey') . qq||; + + if ($form->{show_details}) { + print qq| + - + +|; + } + + print qq| $jsscript @@ -1439,8 +1491,7 @@ sub form_footer { $radieren = ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0; map { - $form->{$_} = - $form->format_amount(\%myconfig, $form->{$_}, 2, " ") + $form->{$_} = $form->format_amount(\%myconfig, $form->{$_}, 2, " ") } qw(totaldebit totalcredit); print qq| @@ -1455,7 +1506,6 @@ sub form_footer {
| + . $locale->text("Previous transnumber text") + . " $form->{previous_id} " + . $locale->text("Previous transdate text") + . " $form->{previous_gldate}" + . qq|
| . $locale->text('Reference') . qq|
| . $locale->text('Show details') . qq|
@@ -1417,12 +1464,17 @@ sub form_header { | . $locale->text('Korrektur') . qq| | - . $locale->text('Taxkey') . qq|| - . $locale->text('Source') . qq|| . $locale->text('Source') . qq| | . $locale->text('Memo') . qq|| - . $locale->text('Project Number') . qq|| . $locale->text('Project Number') . qq|
-{path}> {login}> {password}> @@ -1469,29 +1519,22 @@ sub form_footer { if ($form->{id}) { - print qq||; + if (!$form->{storno}) { + print qq||; + } # Löschen und Ändern von Buchungen nicht mehr möglich (GoB) nur am selben Tag möglich - if (!$form->{locked} && $radieren) { print qq| - - |; + + |; } - # if ($transdate > $closedto) { - # print qq| - # |; - # } } else { if ($transdate > $closedto) { - print qq| - |; + print qq| + + |; } } @@ -1556,7 +1599,7 @@ sub yes { } -sub post { +sub post_transaction { $lxdebug->enter_sub(); # check if there is something in reference and date @@ -1576,104 +1619,87 @@ sub post { $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"} = ""; - } - } - } - } + my @flds = qw(accno debit credit projectnumber fx_transaction source memo tax taxchart); for my $i (1 .. $form->{rowcount}) { + next if $form->{"debit_$i"} eq "" && $form->{"credit_$i"} eq ""; - unless (($form->{"debit_$i"} eq "") && ($form->{"credit_$i"} eq "")) { - for (qw(debit credit tax)) { - $form->{"${_}_$i"} = - $form->parse_amount(\%myconfig, $form->{"${_}_$i"}); - } + for (qw(debit credit tax)) { + $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}); + } - push @a, {}; - $debitcredit = ($form->{"debit_$i"} == 0) ? "0" : "1"; + push @a, {}; + $debitcredit = ($form->{"debit_$i"} == 0) ? "0" : "1"; - if ($debitcredit) { - $debitcount++; - } else { - $creditcount++; - } + 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"} - : $form->{"debit_$i"}; - $j = $#a; - if (($debitcredit && $credittax) || (!$debitcredit && $debittax)) { - $form->{"taxchart_$i"} = "0--0.00"; - $form->{"tax_$i"} = 0; - } - if (!$form->{"korrektur_$i"}) { - ($taxkey, $rate) = split(/--/, $form->{"taxchart_$i"}); - if ($taxkey > 1) { + 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"} + : $form->{"debit_$i"}; + $j = $#a; + if (($debitcredit && $credittax) || (!$debitcredit && $debittax)) { + $form->{"taxchart_$i"} = "0--0.00"; + $form->{"tax_$i"} = 0; + } + if (!$form->{"korrektur_$i"}) { + ($taxkey, $rate) = split(/--/, $form->{"taxchart_$i"}); + if ($taxkey > 1) { + if ($debitcredit) { + $debittax = 1; + } else { + $credittax = 1; + } + if ($form->{taxincluded}) { + $form->{"tax_$i"} = $amount / ($rate + 1) * $rate; if ($debitcredit) { - $debittax = 1; + $form->{"debit_$i"} = $form->{"debit_$i"} - $form->{"tax_$i"}; } else { - $credittax = 1; + $form->{"credit_$i"} = $form->{"credit_$i"} - $form->{"tax_$i"}; } - 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"}; + $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"} } - $count++; } + + for (@flds) { $a[$j]->{$_} = $form->{"${_}_$i"} } + $count++; } for $i (1 .. $count) { @@ -1690,31 +1716,14 @@ sub post { $cr = $form->{"credit_$i"}; $tax = $form->{"tax_$i"}; if ($dr && $cr) { - $form->error( - $locale->text( - 'Cannot post transaction with a debit and credit entry for the same account!' - )); + $form->error($locale->text('Cannot post transaction with a debit and credit entry for the same account!')); } - if ($form->{taxincluded}) { - if ($dr) { - $debit += $dr + $tax; - } - if ($cr) { - $credit += $cr + $tax; - } - $taxtotal += $tax; - } else { - if ($dr) { - $debit += $dr + $tax; - } - if ($cr) { - $credit += $cr + $tax; - } - } - } - if (!$taxtotal) { - $form->{taxincluded} = 0; + $debit += $dr + $tax if $dr; + $credit += $cr + $tax if $cr; + $taxtotal += $tax if $form->{taxincluded} } + + $form->{taxincluded} = 0 if !$taxtotal; # this is just for the wise guys $form->error($locale->text('Cannot post transaction for a closed period!')) @@ -1739,14 +1748,27 @@ sub post { # saving the history if(!exists $form->{addition} && $form->{id} ne "") { $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; - $form->{addition} = "SAVED"; - $form->{what_done} = $locale->text("Buchungsnummer") . " = " . $form->{id}; - $form->save_history($form->dbconnect(\%myconfig)); + $form->{addition} = "SAVED"; + $form->{what_done} = $locale->text("Buchungsnummer") . " = " . $form->{id}; + $form->save_history($form->dbconnect(\%myconfig)); } # /saving the history - $form->redirect("Buchung gespeichert. Buchungsnummer = " . $form->{id}); + $lxdebug->leave_sub(); +} + +sub post { + $lxdebug->enter_sub(); + + $form->{title} = $locale->text("$form->{title} General Ledger Transaction"); + $form->{storno} = 0; + + post_transaction(); + + $form->{callback} = build_std_url("action=add", "show_details"); + $form->redirect($form->{callback}); + $lxdebug->leave_sub(); } sub post_as_new { @@ -1761,8 +1783,47 @@ sub post_as_new { sub storno { $lxdebug->enter_sub(); - $form->{id} = 0; - $form->{storno} = 1; + if (IS->has_storno(\%myconfig, $form, 'gl')) { + $form->{title} = $locale->text("Cancel General Ledger Transaction"); + $form->error($locale->text("Transaction has already been cancelled!")); + } + + my %keep_keys = map { $_, 1 } qw(login password id stylesheet); + map { delete $form->{$_} unless $keep_keys{$_} } keys %{ $form }; + + prepare_transaction(); + + for my $i (1 .. $form->{rowcount}) { + for (qw(debit credit tax)) { + $form->{"${_}_$i"} = + ($form->{"${_}_$i"}) + ? $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) + : ""; + } + } + + $form->{storno} = 1; + $form->{storno_id} = $form->{id}; + $form->{id} = 0; + + $form->{reference} = "Storno-" . $form->{reference}; + $form->{description} = "Storno-" . $form->{description}; + + for my $i (1 .. $form->{rowcount}) { + next if (($form->{"debit_$i"} eq "") && ($form->{"credit_$i"} eq "")); + + if ($form->{"debit_$i"} ne "") { + $form->{"credit_$i"} = $form->{"debit_$i"}; + $form->{"debit_$i"} = ""; + + } else { + $form->{"debit_$i"} = $form->{"credit_$i"}; + $form->{"credit_$i"} = ""; + } + } + + post_transaction(); + # saving the history if(!exists $form->{addition} && $form->{id} ne "") { $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; @@ -1770,7 +1831,9 @@ sub storno { $form->save_history($form->dbconnect(\%myconfig)); } # /saving the history - &post; + + $form->redirect(sprintf $locale->text("Transaction %d cancelled."), $form->{storno_id}); + $lxdebug->leave_sub(); }