#======================================================================
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;
$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
} (@{ $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);
$form->{"credit_$j"} += $form->{"tax_$j"};
}
}
+ $form->{"project_id_$j"} = $ref->{project_id};
+
} else {
$form->{"accno_$i"} = "$ref->{accno}--$ref->{tax_id}";
for (qw(fx_transaction source memo)) { $form->{"${_}_$i"} = $ref->{$_} }
$form->{"credit_$i"} = $ref->{amount};
}
$form->{"taxchart_$i"} = "0--0.00";
+ $form->{"project_id_$i"} = $ref->{project_id};
$i++;
}
if ($ref->{taxaccno} && !$tax) {
$taxaccno = "";
$tax = 0;
}
-
}
$form->{rowcount} = $i;
($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();
'-labels' => \%project_labels));
# use JavaScript Calendar or not
- $form->{jsscript} = $jscalendar;
+ $form->{jsscript} = 1;
$jsscript = "";
if ($form->{jsscript}) {
# with JavaScript Calendar
$button1 = qq|
- <td><input name=datefrom id=datefrom size=11 title="$myconfig{dateformat}">
+ <td><input name=datefrom id=datefrom size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
<input type=button name=datefrom id="trigger1" value=|
. $locale->text('button') . qq|></td>
|;
$button2 = qq|
- <td><input name=dateto id=dateto size=11 title="$myconfig{dateformat}">
+ <td><input name=dateto id=dateto size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
<input type=button name=dateto id="trigger2" value=|
. $locale->text('button') . qq|></td>
|;
# without JavaScript Calendar
$button1 =
- qq|<td><input name=datefrom id=datefrom size=11 title="$myconfig{dateformat}"></td>|;
+ qq|<td><input name=datefrom id=datefrom size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\"></td>|;
$button2 =
- qq|<td><input name=dateto id=dateto size=11 title="$myconfig{dateformat}"></td>|;
+ qq|<td><input name=dateto id=dateto size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\"></td>|;
}
-
+ $form->{javascript} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
$form->header;
-
+ $onload = qq|focus()|;
+ $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
+ $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
print qq|
-<body>
+<body onLoad="$onload">
<form method=post action=$form->{script}>
<td>| . $locale->text('Source') . qq|</td>
<td align=right><input name="l_accno" class=checkbox type=checkbox value=Y checked></td>
<td>| . $locale->text('Account') . qq|</td>
- <td align=right><input name="l_gifi_accno" class=checkbox type=checkbox value=Y></td>
- <td>| . $locale->text('GIFI') . qq|</td>
</tr>
<tr>
<td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
<input type=hidden name=nextsub value=generate_report>
-<input type=hidden name=path value=$form->{path}>
<input type=hidden name=login value=$form->{login}>
<input type=hidden name=password value=$form->{password}>
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;
$locale->text('Account')
. " : $form->{accno} $form->{account_description}";
}
- if ($form->{gifi_accno}) {
- $href .= "&gifi_accno=" . $form->escape($form->{gifi_accno});
- $callback .= "&gifi_accno=" . $form->escape($form->{gifi_accno}, 1);
- $option .= "\n<br>" if $option;
- $option .=
- $locale->text('GIFI')
- . " : $form->{gifi_accno} $form->{gifi_account_description}";
- }
if ($form->{source}) {
$href .= "&source=" . $form->escape($form->{source});
$callback .= "&source=" . $form->escape($form->{source}, 1);
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
+ credit_tax credit_tax_accno accno
projectnumbers
)
);
- if ($form->{accno} || $form->{gifi_accno}) {
- @columns = grep !/(accno|gifi_accno)/, @columns;
+ if ($form->{accno}) {
+ @columns = grep !/accno/, @columns;
push @columns, "balance";
$form->{l_balance} = "Y";
"<th><a class=listheading href=$href&sort=accno>"
. $locale->text('Credit Tax Account')
. "</a></th>";
- $column_header{gifi_accno} =
- "<th><a class=listheading href=$href&sort=gifi_accno>"
- . $locale->text('GIFI')
- . "</a></th>";
$column_header{balance} = "<th>" . $locale->text('Balance') . "</th>";
$column_header{projectnumbers} =
"<th class=listheading>" . $locale->text('Project Numbers') . "</th>";
$sameitem = $form->{GL}->[0]->{ $form->{sort} };
}
- if (($form->{accno} || $form->{gifi_accno}) && $form->{balance}) {
+ if ($form->{accno} && $form->{balance}) {
map { $column_data{$_} = "<td> </td>" } @column_index;
$column_data{balance} =
}
$transdate = "";
- foreach $key (sort keys(%{ $ref->{transdate} })) {
+ foreach $key (sort keys(%{ $ref->{ac_transdate} })) {
if ($key == 0) {
- $transdate = "$ref->{transdate}{$key}";
+ $transdate = "$ref->{ac_transdate}{$key}";
} else {
- $transdate .= "<br>$ref->{transdate}{$key}";
+ $transdate .= "<br>$ref->{ac_transdate}{$key}";
}
}
$column_data{id} = "<td align=right> $ref->{id} </td>";
$column_data{transdate} = "<td align=center>$transdate</td>";
$column_data{reference} =
- "<td align=center><a href=$ref->{module}.pl?action=edit&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{reference}</td>";
+ "<td align=center><a href=$ref->{module}.pl?action=edit&id=$ref->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{reference}</td>";
$column_data{description} = "<td align=center>$ref->{description} </td>";
$column_data{source} = "<td align=center>$ref->{source} </td>";
$column_data{notes} = "<td align=center>$ref->{notes} </td>";
? "<td align=right>$debittax</td>"
: "<td></td>";
$column_data{debit_tax_accno} = "<td align=center>$debittaxaccno</td>";
- $column_data{gifi_accno} =
- "<td><a href=$href&gifi_accno=$ref->{gifi_accno}&callback=$callback>$ref->{gifi_accno}</a> </td>";
$column_data{credit_tax} =
($ref->{credit_tax_accno} ne "")
? "<td align=right>$credittax</td>"
: "<td></td>";
$column_data{credit_tax_accno} = "<td align=center>$credittaxaccno</td>";
- $column_data{gifi_accno} =
- "<td><a href=$href&gifi_accno=$ref->{gifi_accno}&callback=$callback>$ref->{gifi_accno}</a> </td>";
$column_data{balance} =
"<td align=right>"
. $form->format_amount(\%myconfig, $form->{balance}, 2, 0) . "</td>";
<input name=callback type=hidden value="$form->{callback}">
-<input type=hidden name=path value=$form->{path}>
<input type=hidden name=login value=$form->{login}>
<input type=hidden name=password value=$form->{password}>
my ($init) = @_;
$lxdebug->enter_sub();
+ $form->{debit_1} = 0 if !$form->{"debit_1"};
$form->{totaldebit} = 0;
$form->{totalcredit} = 0;
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|
- <td><input name="source_$i" value="$form->{"source_$i"}" size="16" tabindex=|
- . ($i + 11 + (($i - 1) * 8)) . qq|></td>|;
+ <td><input name="source_$i" value="$form->{"source_$i"}" size="16"></td>|;
$memo = qq|
- <td><input name="memo_$i" value="$form->{"memo_$i"}" size="16" tabindex=|
- . ($i + 12 + (($i - 1) * 8)) . qq|></td>|;
+ <td><input name="memo_$i" value="$form->{"memo_$i"}" size="16"></td>|;
+
+ 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|<td>| .
- $cgi->popup_menu('-name' => "accno_$i",
- '-onChange' => "setTaxkey(this, $i)",
- '-style' => 'width:200px',
- '-tabindex' => ($i + 5 + (($i - 1) * 8)),
- '-values' => \@chart_values,
- '-labels' => \%chart_labels,
- '-default' => $init ? '' : $form->{"accno_$i"})
+ 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|</td>|;
$tax = qq|<td>| .
- $cgi->popup_menu('-name' => "taxchart_$i",
- '-style' => 'width:200px',
- '-tabindex' => ($i + 10 + (($i - 1) * 8)),
- '-values' => \@taxchart_values,
- '-labels' => \%taxchart_labels,
- '-default' => $init ? $taxchart_init : $form->{"taxchart_$i"})
+ NTI($cgi->popup_menu('-name' => "taxchart_$i",
+ '-id' => "taxchart_$i",
+ '-style' => 'width:200px',
+ '-values' => \@taxchart_values,
+ '-labels' => \%taxchart_labels,
+ '-default' => $selected_taxchart))
. qq|</td>|;
if ($init) {
$korrektur =
- qq|<td><input type="checkbox" name="korrektur_$i" value="1" tabindex=|
- . ($i + 9 + (($i - 1) * 8))
- . qq|></td>|;
+ qq|<td><input type="checkbox" name="korrektur_$i" value="1"></td>|;
if ($form->{transfer}) {
$fx_transaction = qq|
<td><input name="fx_transaction_$i" class=checkbox type=checkbox value=1></td>
}
$checked = ($form->{"korrektur_$i"}) ? "checked" : "";
$korrektur =
- qq|<td><input type="checkbox" name="korrektur_$i" value="1" $checked tabindex=|
- . ($i + 9 + (($i - 1) * 8))
- . qq|></td>|;
+ qq|<td><input type="checkbox" name="korrektur_$i" value="1" $checked></td>|;
$form->hide_form("accno_$i");
} else {
$korrektur =
- qq|<td><input type="checkbox" name="korrektur_$i" value="1" tabindex=|
- . ($i + 9 + (($i - 1) * 8))
- . qq|></td>|;
+ qq|<td><input type="checkbox" name="korrektur_$i" value="1"></td>|;
if ($form->{transfer}) {
$fx_transaction = qq|
<td><input name="fx_transaction_$i" class=checkbox type=checkbox value=1></td>
'-labels' => \%project_labels,
'-default' => $form->{"project_id_$i"} ));
+ my $copy2credit = 'onkeyup="copy_debit_to_credit()"' if $i == 1;
+
print qq|<tr valign=top>
$accno
$fx_transaction
- <td><input name="debit_$i" size=8 value="$form->{"debit_$i"}" accesskey=$i tabindex=|
- . ($i + 6 + (($i - 1) * 8)) . qq| $debitreadonly></td>
- <td><input name="credit_$i" size=8 value="$form->{"credit_$i"}" tabindex=|
- . ($i + 7 + (($i - 1) * 8)) . qq| $creditreadonly></td>
- <td><input name="tax_$i" size=6 value="$form->{"tax_$i"}" tabindex=|
- . ($i + 8 + (($i - 1) * 8)) . qq|></td>
+ <td><input name="debit_$i" size="8" value="$form->{"debit_$i"}" accesskey=$i $copy2credit $debitreadonly></td>
+ <td><input name="credit_$i" size=8 value="$form->{"credit_$i"}" $creditreadonly></td>
+ <td><input name="tax_$i" size=6 value="$form->{"tax_$i"}"></td>
$korrektur
- $tax
+ $tax|;
+
+ if ($form->{show_details}) {
+ print qq|
$source
$memo
<td>$projectnumber</td>
+|;
+ }
+ print qq|
</tr>
-
- |;
+|;
}
$form->hide_form(qw(rowcount selectaccno));
$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|<script type="text/javascript">
<!--
function setTaxkey(accno, row) {
}
}
};
+
+ function copy_debit_to_credit() {
+ var txt = document.getElementsByName('debit_1')[0].value;
+ document.getElementsByName('credit_2')[0].value = txt;
+ };
+
//-->
</script>|;
+ $form->{javascript} .= qq|<script type="text/javascript" src="js/show_form_details.js"></script>|;
$form->{selectdepartment} =~ s/ selected//;
$form->{selectdepartment} =~
qq|<textarea name=description rows=$rows cols=50 wrap=soft $readonly >$form->{description}</textarea>|;
} else {
$description =
- qq|<input name=description size=50 value="$form->{description}" tabindex="3" $readonly>|;
+ qq|<input name=description size=50 value="$form->{description}" $readonly>|;
}
$taxincluded = ($form->{taxincluded}) ? "checked" : "";
}
# use JavaScript Calendar or not
- $form->{jsscript} = $jscalendar;
+ $form->{jsscript} = 1;
$jsscript = "";
if ($form->{jsscript}) {
# with JavaScript Calendar
$button1 = qq|
- <td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value="$form->{transdate}" tabindex="2" $readonly>
+ <td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value="$form->{transdate}" $readonly onBlur=\"check_right_date_format(this)\">
<input type=button name=transdate id="trigger1" value=|
. $locale->text('button') . qq|></td>
|;
# without JavaScript Calendar
$button1 =
- qq|<td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value="$form->{transdate}" tabindex="2" $readonly></td>|;
+ qq|<td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value="$form->{transdate}" $readonly onBlur=\"check_right_date_format(this)\"></td>|;
}
+ $form->{previous_id} ||= "--";
+ $form->{previous_gldate} ||= "--";
+
$form->header;
print qq|
<body onLoad="fokus()">
<form method=post name="gl" action=$form->{script}>
+|;
-<input name=id type=hidden value=$form->{id}>
+ $form->hide_form(qw(id closedto locked storno storno_id previous_id previous_gldate));
-<input type=hidden name=closedto value=$form->{closedto}>
-<input type=hidden name=locked value=$form->{locked}>
+ print qq|
<input type=hidden name=title value="$title">
<tr>
<td>
<table width=100%>
+ <tr>
+ <td colspan="6" align="left">|
+ . $locale->text("Previous transnumber text")
+ . " $form->{previous_id} "
+ . $locale->text("Previous transdate text")
+ . " $form->{previous_gldate}"
+ . qq|</td>
+ </tr>
<tr>
- <th align=left>| . $locale->text('Reference') . qq|</th>
- <td><input name=reference size=20 value="$form->{reference}" tabindex="1" $readonly></td>
+ <th align=right>| . $locale->text('Reference') . qq|</th>
+ <td><input name=reference size=20 value="$form->{reference}" $readonly></td>
<td align=left>
<table>
<tr>
<table>
<tr>
<th align=right width=50%>| . $locale->text('Buchungsdatum') . qq|</th>
- <td align=left><input name=gldate size=11 title="$myconfig{dateformat}" value=$form->{gldate} $readonly></td>
+ <td align=left><input name=gldate size=11 title="$myconfig{dateformat}" value=$form->{gldate} $readonly onBlur=\"check_right_date_format(this)\"></td>
</tr>
</table>
</td>
if ($form->{id}) {
print qq|
<tr>
- <th align=left width=1%>| . $locale->text('Description') . qq|</th>
+ <th align=right width=1%>| . $locale->text('Description') . qq|</th>
<td width=1%>$description</td>
<td>
<table>
<tr>
<th align=left>| . $locale->text('MwSt. inkl.') . qq|</th>
- <td><input type=checkbox name=taxincluded value=1 tabindex="5" $taxincluded></td>
+ <td><input type=checkbox name=taxincluded value=1 $taxincluded></td>
</tr>
</table>
</td>
<table width=100%>
<tr>
<th align=right width=50%>| . $locale->text('Mitarbeiter') . qq|</th>
- <td align=left><input name=employee size=11 value=$form->{employee} $readonly></td>
+ <td align=left><input name=employee size=20 value="| . H($form->{employee}) . qq|" readonly></td>
</tr>
</table>
</td>
<table>
<tr>
<th align=left>| . $locale->text('MwSt. inkl.') . qq|</th>
- <td><input type=checkbox name=taxincluded value=1 tabindex="5" $taxincluded></td>
+ <td><input type=checkbox name=taxincluded value=1 $taxincluded></td>
</tr>
</table>
</td>
</tr>|;
}
+
+ print qq|<tr>
+ <td width="1%" align="right" nowrap>| . $locale->text('Show details') . qq|</td>
+ <td width="1%"><input type="checkbox" onclick="show_form_details();" name="show_details" value="1" $show_details_checked></td>
+ </tr>|;
+
print qq|
<tr>
<td colspan=4>
<th class=listheading style="width:5%">|
. $locale->text('Korrektur') . qq|</th>
<th class=listheading style="width:10%">|
- . $locale->text('Taxkey') . qq|</th>
- <th class=listheading style="width:20%">|
- . $locale->text('Source') . qq|</th>
+ . $locale->text('Taxkey') . qq|</th>|;
+
+ if ($form->{show_details}) {
+ print qq|
+ <th class=listheading style="width:20%">| . $locale->text('Source') . qq|</th>
<th class=listheading style="width:20%">| . $locale->text('Memo') . qq|</th>
- <th class=listheading style="width:20%">|
- . $locale->text('Project Number') . qq|</th>
+ <th class=listheading style="width:20%">| . $locale->text('Project Number') . qq|</th>
+|;
+ }
+
+ print qq|
</tr>
$jsscript
$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|
</tr>
</table>
-<input type=hidden name=path value=$form->{path}>
<input type=hidden name=login value=$form->{login}>
<input type=hidden name=password value=$form->{password}>
if ($form->{id}) {
- print qq|<input class=submit type=submit name=action value="|
- . $locale->text('Storno') . qq|">|;
+ if (!$form->{storno}) {
+ print qq|<input class=submit type=submit name=action value="| . $locale->text('Storno') . qq|">|;
+ }
# Löschen und Ändern von Buchungen nicht mehr möglich (GoB) nur am selben Tag möglich
-
if (!$form->{locked} && $radieren) {
print qq|
- <input class=submit type=submit name=action value="|
- . $locale->text('Post') . qq|" accesskey="b">
- <input class=submit type=submit name=action value="|
- . $locale->text('Delete') . qq|">|;
+ <input class=submit type=submit name=action value="| . $locale->text('Post') . qq|" accesskey="b">
+ <input class=submit type=submit name=action value="| . $locale->text('Delete') . qq|">|;
}
- # if ($transdate > $closedto) {
- # print qq|
- # <input class=submit type=submit name=action value="|.$locale->text('Post as new').qq|">|;
- # }
} else {
if ($transdate > $closedto) {
- print qq|<input class=submit type=submit name=action value="|
- . $locale->text('Update') . qq|">
- <input class=submit type=submit name=action value="|
- . $locale->text('Post') . qq|">|;
+ print qq|
+ <input class=submit type=submit name=action id=update_button value="| . $locale->text('Update') . qq|">
+ <input class=submit type=submit name=action value="| . $locale->text('Post') . qq|">|;
}
}
if (GL->delete_transaction(\%myconfig, \%$form)){
# saving the history
if(!exists $form->{addition} && $form->{id} ne "") {
+ $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
$form->{addition} = "DELETED";
$form->save_history($form->dbconnect(\%myconfig));
}
}
-sub post {
+sub post_transaction {
$lxdebug->enter_sub();
# check if there is something in reference and date
$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) {
$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!'))
undef($form->{callback});
# saving the history
if(!exists $form->{addition} && $form->{id} ne "") {
- $form->{addition} = "SAVED";
- $form->{what_done} = $locale->text("Buchungsnummer") . " = " . $form->{id};
- $form->save_history($form->dbconnect(\%myconfig));
+ $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
+ $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 {
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};
$form->{addition} = "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();
}