$lxdebug->enter_sub();
GL->transaction(\%myconfig, \%$form);
-
map {
- if ($form->{debitaccno} eq $_->{accno}) {
- $form->{debitchart} .=
- "<option value=\"$_->{accno}--$_->{taxkey_id}\">$_->{accno}--$_->{description}";
- }
- } @{ $form->{chart} };
- map {
- if ($form->{creditaccno} eq $_->{accno}) {
- $form->{creditchart} .=
- "<option value=\"$_->{accno}--$_->{taxkey_id}\">$_->{accno}--$_->{description}";
- }
+ $chart .=
+ "<option value=\"$_->{accno}--$_->{taxkey_id}\">$_->{accno}--$_->{description}</option>"
} @{ $form->{chart} };
+
map {
$tax .=
qq|<option value="$_->{taxkey}--$_->{rate}">$_->{taxdescription} |
$form->{taxchart} = $tax;
- if ($form->{tax} < 0) {
- $form->{tax} = $form->{tax} * (-1);
- }
-
$form->{amount} = $form->format_amount(\%myconfig, $form->{amount}, 2);
# departments
} (@{ $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};
} else {
- $form->{totalcredit} += $ref->{amount};
- $form->{"credit_$i"} = $ref->{amount};
+ $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};
+ }
+ $i++;
+ }
+ if ($ref->{taxaccno} && !$tax) {
+ $taxaccno = $ref->{taxaccno};
+ $tax = 1;
+ } else {
+ $taxaccno = "";
+ $tax = 0;
}
- $i++;
}
$form->{rowcount} = $i;
$button1 = qq|
<td><input name=datefrom id=datefrom size=11 title="$myconfig{dateformat}">
<input type=button name=datefrom id="trigger1" value=|
- . $locale->text('button')
- . qq|></td>
+ . $locale->text('button') . qq|></td>
|;
$button2 = qq|
<td><input name=dateto id=dateto size=11 title="$myconfig{dateformat}">
<input type=button name=dateto id="trigger2" value=|
- . $locale->text('button')
- . qq|></td>
+ . $locale->text('button') . qq|></td>
|;
#write Trigger
$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} });
. $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;
</tr>
|;
}
-
+ $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} })) {
$debit .=
"<br>" . $form->format_amount(\%myconfig, $ref->{debit}{$key}, 2, 0);
}
+ $form->{balance} = abs($form->{balance}) - abs($ref->{debit}{$key});
}
$credit = "";
$credit .= "<br>"
. $form->format_amount(\%myconfig, $ref->{credit}{$key}, 2, 0);
}
+ $form->{balance} = abs($form->{balance}) - abs( $ref->{credit}{$key});
}
$debittax = "";
$debittax .= "<br>"
. $form->format_amount(\%myconfig, $ref->{debit_tax}{$key}, 2, 0);
}
+ $form->{balance} = abs($form->{balance}) - abs($ref->{debit_tax}{$key});
}
$credittax = "";
$credittax .= "<br>"
. $form->format_amount(\%myconfig, $ref->{credit_tax}{$key}, 2, 0);
}
+ $form->{balance} = abs($form->{balance}) - abs($ref->{credit_tax}{$key});
}
$debitaccno = "";
"<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} * $ml, 2, 0)
+ . $form->format_amount(\%myconfig, $form->{balance}, 2, 0)
. "</td>";
$i++;
$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}) {
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"}
$source = qq|
<td><input name="source_$i" value="$form->{"source_$i"}" tabindex=|
- . ($i + 11 + (($i - 1) * 8))
- . qq|></td>|;
+ . ($i + 11 + (($i - 1) * 8)) . qq|></td>|;
$memo = qq|
<td><input name="memo_$i" value="$form->{"memo_$i"}" tabindex=|
- . ($i + 12 + (($i - 1) * 8))
- . qq|></td>|;
+ . ($i + 12 + (($i - 1) * 8)) . qq|></td>|;
if ($init) {
$accno = qq|
<td><select name="accno_$i" onChange="setTaxkey(this, $i)" style="width:300px" tabindex=|
- . ($i + 5 + (($i - 1) * 8))
- . qq|>$form->{chartinit}</select></td>|;
+ . ($i + 5 + (($i - 1) * 8)) . qq|>$form->{chartinit}</select></td>|;
$tax =
qq|<td><select id="taxchart_$i" name="taxchart_$i" tabindex=|
. ($i + 10 + (($i - 1) * 8))
}
} else {
-
- $form->{totaldebit} += $form->{"debit_$i"};
- $form->{totalcredit} += $form->{"credit_$i"};
+ if ($form->{"debit_$i"} != 0) {
+ $form->{totaldebit} += $form->{"debit_$i"};
+ $form->{totaldebit} += $form->{"tax_$i"};
+ } else {
+ $form->{totalcredit} += $form->{"credit_$i"};
+ $form->{totalcredit} += $form->{"tax_$i"};
+ }
for (qw(debit credit tax)) {
$form->{"${_}_$i"} =
$accno = qq|
<td><select name="accno_$i" onChange="setTaxkey(this, $i)" style="width:300px" tabindex=|
- . ($i + 5 + (($i - 1) * 8))
- . qq|>$chart</select></td>|;
+ . ($i + 5 + (($i - 1) * 8)) . qq|>$chart</select></td>|;
$tax = qq|
<td><select id="taxchart_$i" name="taxchart_$i" tabindex=|
- . ($i + 10 + (($i - 1) * 8))
- . qq|>$taxchart</select></td>|;
+ . ($i + 10 + (($i - 1) * 8)) . qq|>$taxchart</select></td>|;
if ($form->{selectprojectnumber}) {
$project = qq|
<td><select name="projectnumber_$i">$form->{selectprojectnumber}</select></td>|;
}
}
}
+ my $debitreadonly = "";
+ my $creditreadonly = "";
+ if ($i == $form->{rowcount}) {
+ if ($debitlock) {
+ $debitreadonly = "readonly";
+ } elsif ($creditlock) {
+ $creditreadonly = "readonly";
+ }
+ }
print qq|<tr valign=top>
$accno
$fx_transaction
<td><input name="debit_$i" size=10 value="$form->{"debit_$i"}" accesskey=$i tabindex=|
- . ($i + 6 + (($i - 1) * 8))
- . qq|></td>
+ . ($i + 6 + (($i - 1) * 8)) . qq| $debitreadonly></td>
<td><input name="credit_$i" size=10 value="$form->{"credit_$i"}" tabindex=|
- . ($i + 7 + (($i - 1) * 8))
- . qq|></td>
+ . ($i + 7 + (($i - 1) * 8)) . qq| $creditreadonly></td>
<td><input name="tax_$i" size=8 value="$form->{"tax_$i"}" tabindex=|
- . ($i + 8 + (($i - 1) * 8))
- . qq|></td>
+ . ($i + 8 + (($i - 1) * 8)) . qq|></td>
$korrektur
$tax
$source
$taxincluded = "checked";
}
- $amount =
- qq|<input name=amount size=20 value="$form->{amount}" tabindex="4" $readonly>|;
-
$department = qq|
<tr>
<th align=right nowrap>| . $locale->text('Department') . qq|</th>
$button1 = qq|
<td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value=$form->{transdate} tabindex="2" $readonly>
<input type=button name=transdate id="trigger1" value=|
- . $locale->text('button')
- . qq|></td>
+ . $locale->text('button') . qq|></td>
|;
#write Trigger
<td>
<table width=100%>
<tr>
- <th align=right>| . $locale->text('Reference') . qq|</th>
+ <th align=left>| . $locale->text('Reference') . qq|</th>
<td><input name=reference size=20 value="$form->{reference}" tabindex="1" $readonly></td>
<td align=left>
- <table width=100%>
+ <table>
<tr>
<th align=right nowrap>| . $locale->text('Date') . qq|</th>
$button1
<th align=right>| . $locale->text('Belegnummer') . qq|</th>
<td><input name=id size=20 value="$form->{id}" $readonly></td>
<td align=left>
- <table width=100%>
+ <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>
if ($form->{id}) {
print qq|
<tr>
- <th align=right>| . $locale->text('Description') . qq|</th>
- <td>$description</td>
+ <th align=left 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>
+ </tr>
+ </table>
+ </td>
<td align=left>
<table width=100%>
<tr>
} else {
print qq|
<tr>
- <th align=right>| . $locale->text('Description') . qq|</th>
- <td colspan=2>$description</td>
- </tr>|;
- }
- print qq|
- <tr>
- <th align=right>| . $locale->text('Betrag') . qq|</th>
- <td>$amount</td>
- <td align=left>
+ <th align=left width=1%>| . $locale->text('Description') . qq|</th>
+ <td width=1%>$description</td>
+ <td>
<table>
<tr>
<th align=left>| . $locale->text('MwSt. inkl.') . qq|</th>
</tr>
</table>
</td>
- </tr>
+ </tr>|;
+ }
+ print qq|
<tr>
+ <td colspan=4>
<table width=100%>
<tr class=listheading>
<th class=listheading style="width:15%">|
- . $locale->text('Account')
- . qq|</th>
+ . $locale->text('Account') . qq|</th>
<th class=listheading style="width:10%">|
- . $locale->text('Debit')
- . qq|</th>
+ . $locale->text('Debit') . qq|</th>
<th class=listheading style="width:10%">|
- . $locale->text('Credit')
- . qq|</th>
+ . $locale->text('Credit') . qq|</th>
<th class=listheading style="width:10%">|
- . $locale->text('Tax')
- . qq|</th>
+ . $locale->text('Tax') . qq|</th>
<th class=listheading style="width:5%">|
- . $locale->text('Korrektur')
- . qq|</th>
+ . $locale->text('Korrektur') . qq|</th>
<th class=listheading style="width:10%">|
- . $locale->text('Taxkey')
- . qq|</th>
+ . $locale->text('Taxkey') . qq|</th>
<th class=listheading style="width:20%">|
- . $locale->text('Source')
- . qq|</th>
+ . $locale->text('Source') . qq|</th>
<th class=listheading style="width:20%">| . $locale->text('Memo') . qq|</th>
$project
</tr>
map {
$form->{$_} =
- $form->format_amount(\%myconfig, $form->{$_}, $decimalplaces, " ")
+ $form->format_amount(\%myconfig, $form->{$_}, 2, " ")
} qw(totaldebit totalcredit);
print qq|
+ <tr class=listtotal>
+ <td></td>
+ <th align=right class=listtotal> $form->{totaldebit}</th>
+ <th align=right class=listtotal> $form->{totalcredit}</th>
+ <td colspan=5></td>
+ </tr>
</table>
+ </td>
+ </tr>
</table>
<input type=hidden name=path value=$form->{path}>
if (!$form->{locked} && $radieren) {
print qq|
<input class=submit type=submit name=action value="|
- . $locale->text('Post')
- . qq|" accesskey="b">
+ . $locale->text('Post') . qq|" accesskey="b">
<input class=submit type=submit name=action value="|
. $locale->text('Delete') . qq|">|;
}
# 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);
for my $i (1 .. $form->{rowcount}) {
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"}