diff options
author | ivan <ivan> | 2003-07-15 11:45:14 +0000 |
---|---|---|
committer | ivan <ivan> | 2003-07-15 11:45:14 +0000 |
commit | f6c9088e16c4c083174dd1130ae58d213923cdef (patch) | |
tree | 7398c7087b03c412658679bf25a68700191bd1a8 /sql-ledger/bin/mozilla/rc.pl |
import of sql-ledger 2.0.8SQL_LEDGER_2_0_8
Diffstat (limited to 'sql-ledger/bin/mozilla/rc.pl')
-rw-r--r-- | sql-ledger/bin/mozilla/rc.pl | 371 |
1 files changed, 371 insertions, 0 deletions
diff --git a/sql-ledger/bin/mozilla/rc.pl b/sql-ledger/bin/mozilla/rc.pl new file mode 100644 index 000000000..cf2bc235b --- /dev/null +++ b/sql-ledger/bin/mozilla/rc.pl @@ -0,0 +1,371 @@ +#===================================================================== +# SQL-Ledger Accounting +# Copyright (c) 2002 +# +# Author: Dieter Simader +# Email: dsimader@sql-ledger.org +# Web: http://www.sql-ledger.org +# +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +#====================================================================== +# +# Account reconciliation module +# +#====================================================================== + + +use SL::RC; + + +1; +# end of main + + +sub reconciliation { + + RC->paymentaccounts(\%myconfig, \%$form); + + $selection = ""; + map { $selection .= "<option>$_->{accno}--$_->{description}\n" } @{ $form->{PR} }; + + $form->{title} = $locale->text('Reconciliation'); + + $form->header; + + print qq| +<body> + +<form method=post action=$form->{script}> + +<table width=100%> + <tr> + <th class=listtop>$form->{title}</th> + </tr> + <tr height="5"></tr> + <tr> + <td> + <table> + <tr> + <th align=right nowrap>|.$locale->text('Account').qq|</th> + <td colspan=3><select name=accno>$selection</select> + </td> + </tr> + <tr> + <th align=right>|.$locale->text('From').qq|</th> + <td><input name=fromdate size=11 title="$myconfig{dateformat}"></td> + <th align=right>|.$locale->text('to').qq|</th> + <td><input name=todate size=11 title="$myconfig{dateformat}"></td> + </tr> + </table> + </td> + </tr> + <tr> + <td><hr size=3 noshade></td> + </tr> +</table> + +<br> +<input type=hidden name=nextsub value=get_payments> + +<input type=hidden name=path value=$form->{path}> +<input type=hidden name=login value=$form->{login}> +<input type=hidden name=password value=$form->{password}> + +<input type=submit class=submit name=action value="|.$locale->text('Continue').qq|"> + +</form> + +</body> +</html> +|; + +} + + +sub continue { &{ $form->{nextsub} } }; + + +sub get_payments { + + ($form->{accno}, $form->{account}) = split /--/, $form->{accno}; + + RC->payment_transactions(\%myconfig, \%$form); + + &display_form; + +} + + +sub display_form { + + @column_index = qw(cleared transdate source name credit debit balance); + + $column_header{cleared} = "<th class=listheading> </th>"; + $column_header{source} = "<th class=listheading>".$locale->text('Source')."</a></th>"; + $column_header{name} = "<th class=listheading>".$locale->text('Description')."</a></th>"; + $column_header{transdate} = "<th class=listheading>".$locale->text('Date')."</a></th>"; + + $column_header{debit} = "<th class=listheading>".$locale->text('Deposit')."</a></th>"; + $column_header{credit} = "<th class=listheading>".$locale->text('Payment')."</a></th>"; + + $column_header{balance} = "<th class=listheading>".$locale->text('Balance')."</a></th>"; + + if ($form->{fromdate}) { + $option .= "\n<br>" if ($option); + $option .= $locale->text('From')." ".$locale->date(\%myconfig, $form->{fromdate}, 1); + } + if ($form->{todate}) { + $option .= "\n<br>" if ($option); + $option .= $locale->text('to')." ".$locale->date(\%myconfig, $form->{todate}, 1); + } + + $form->{title} = "$form->{accno}--$form->{account}"; + + $form->header; + + print qq| +<body> + +<form method=post action=$form->{script}> + +<table width=100%> + <tr> + <th class=listtop>$form->{title}</th> + </tr> + <tr height="5"></tr> + <tr> + <td>$option</td> + </tr> + <tr> + <td> + <table width=100%> + <tr> +|; + + map { print "\n$column_header{$_}" } @column_index; + + print qq| + </tr> +|; + + $form->{beginningbalance} *= -1; + $clearedbalance = $balance = $form->{beginningbalance}; + $i = 0; + $id = 0; + + map { $column_data{$_} = "<td> </td>" } qw(cleared transdate source name debit credit); + $column_data{balance} = "<td align=right>".$form->format_amount(\%myconfig, $balance, 2, 0)."</td>"; + $j = 0; + print qq| + <tr class=listrow$j> +|; + + map { print "\n$column_data{$_}" } @column_index; + + print qq| + </tr> +|; + + + foreach $ref (@{ $form->{PR} }) { + + $balance += $ref->{amount} * -1; + $cleared += $ref->{amount} * -1 if $ref->{cleared}; + + $column_data{name} = "<td>$ref->{name} </td>"; + $column_data{source} = qq|<td>$ref->{source} </a> + </td>|; + $column_data{transdate} = "<td>$ref->{transdate} </td>"; + + $column_data{debit} = "<td> </td>"; + $column_data{credit} = "<td> </td>"; + + if ($ref->{amount} < 0) { + $totaldebits += $ref->{amount} * -1; + $column_data{debit} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{amount} * -1, 2, " ")."</td>"; + } else { + $totalcredits += $ref->{amount}; + $column_data{credit} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{amount}, 2, " ")."</td>"; + } + + $column_data{balance} = "<td align=right>".$form->format_amount(\%myconfig, $balance, 2, 0)."</td>"; + + if ($ref->{fx_transaction}) { + $i++ unless $id == $ref->{id}; + $fx_transaction = 1; + $fx += $ref->{amount} * -1; + $column_data{cleared} = qq|<td align=center> + <input type=hidden name="fxoid_$i" value=$ref->{oid}> + </td>|; + } else { + $i++ unless ($fx_transaction && $id == $ref->{id}); + $fx_transaction = 0; + $column_data{cleared} = qq|<td> + <input name="cleared_$i" type=checkbox class=checkbox value=1 $ref->{cleared}> + <input type=hidden name="oid_$i" value=$ref->{oid}> + </td>|; + } + $id = $ref->{id}; + + $j++; $j %= 2; + print qq| + <tr class=listrow$j> +|; + + map { print "\n$column_data{$_}" } @column_index; + + print qq| + </tr> +|; + + } + + # print totals + map { $column_data{$_} = "<td> </td>" } @column_index; + + $column_data{debit} = "<th class=listtotal align=right>".$form->format_amount(\%myconfig, $totaldebits, 2, " ")."</th>"; + $column_data{credit} = "<th class=listtotal align=right>".$form->format_amount(\%myconfig, $totalcredits, 2, " ")."</th>"; + + print qq| + <tr class=listtotal> +|; + + map { print "\n$column_data{$_}" } @column_index; + + $form->{statementbalance} = $form->parse_amount(\%myconfig, $form->{statementbalance}); + $difference = $form->format_amount(\%myconfig, $form->{statementbalance} - $clearedbalance - $cleared, 2, 0); + + $form->{statementbalance} = $form->format_amount(\%myconfig, $form->{statementbalance}, 2, 0); + + $clearedbalance = $form->format_amount(\%myconfig, $clearedbalance, 2, 0); + + if ($fx) { + $fx = $form->format_amount(\%myconfig, $fx, 2, 0); + $exchdiff = qq| + <th align=right nowrap>|.$locale->text('Exchangerate Difference').qq|</th> + <td width=10%></td> + <td align=right>$fx</td> +|; + } + + print qq| + </tr> + </table> + </td> + </tr> + <tr> + <td> + <table width=100%> + <tr valign=top> + <td> + <table> + <tr> + <th align=right nowrap>|.$locale->text('Cleared Balance').qq|</th> + <td width=10%></td> + <td align=right>$clearedbalance</td> + </tr> + <tr> + $exchdiff + </tr> + </table> + </td> + <td align=right> + <table> + <tr> + <th align=right nowrap>|.$locale->text('Statement Balance').qq|</th> + <td width=10%></td> + <td align=right><input name=statementbalance size=11 value=$form->{statementbalance}></td> + </tr> + <tr> + <th align=right nowrap>|.$locale->text('Difference').qq|</th> + <td width=10%></td> + <td align=right><input name=none size=11 value=$difference></td> + <input type=hidden name=difference value=$difference> + </tr> + </table> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td><hr size=3 noshade></td> + </tr> +</table> + +<input type=hidden name=rowcount value=$i> +<input type=hidden name=accno value=$form->{accno}> +<input type=hidden name=account value="$form->{account}"> + +<input type=hidden name=fromdate value=$form->{fromdate}> +<input type=hidden name=todate value=$form->{todate}> + +<input type=hidden name=path value=$form->{path}> +<input type=hidden name=login value=$form->{login}> +<input type=hidden name=password value=$form->{password}> + +<br> +<input type=submit class=submit name=action value="|.$locale->text('Update').qq|"> +<input type=submit class=submit name=action value="|.$locale->text('Select all').qq|"> +<input type=submit class=submit name=action value="|.$locale->text('Done').qq|"> + +</form> + +</body> +</html> +|; + +} + + +sub update { + + RC->payment_transactions(\%myconfig, \%$form); + + foreach $ref (@{ $form->{PR} }) { + if (!$ref->{fx_transaction}) { + $i++; + $ref->{cleared} = "checked" if $form->{"cleared_$i"}; + } + } + + &display_form; + +} + + +sub select_all { + + RC->payment_transactions(\%myconfig, \%$form); + + map { $_->{cleared} = "checked" unless $_->{fx_transaction} } @{ $form->{PR} }; + + &display_form; + +} + + +sub done { + + $form->{callback} = "$form->{script}?path=$form->{path}&action=reconciliation&login=$form->{login}&password=$form->{password}"; + + $form->error($locale->text('Out of balance!')) if ($form->{difference} *= 1); + + RC->reconcile(\%myconfig, \%$form); + $form->redirect; + +} + + |