summaryrefslogtreecommitdiff
path: root/doc/zimmermann/changelog
diff options
context:
space:
mode:
Diffstat (limited to 'doc/zimmermann/changelog')
0 files changed, 0 insertions, 0 deletions
span>
  • #
  • # Contributors:
  • #
  • #======================================================================
  • #
  • # This file has NOT undergone whitespace cleanup.
  • #
  • #======================================================================
  • #
  • # administration
  • #
  • #======================================================================
  • use LedgerSMB::AM;
  • use LedgerSMB::CA;
  • use LedgerSMB::Form;
  • use LedgerSMB::User;
  • use LedgerSMB::RP;
  • use LedgerSMB::GL;
  • 1;
  • # end of main
  • sub add { &{"add_$form->{type}"} }
  • sub edit { &{"edit_$form->{type}"} }
  • sub save { &{"save_$form->{type}"} }
  • sub delete { &{"delete_$form->{type}"} }
  • sub save_as_new {
  • delete $form->{id};
  • &save;
  • }
  • sub add_account {
  • $form->{title} = "Add";
  • $form->{charttype} = "A";
  • $form->{callback} =
  • "$form->{script}?action=list_account&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}"
  • unless $form->{callback};
  • &account_header;
  • &form_footer;
  • }
  • sub edit_account {
  • $form->{title} = "Edit";
  • $form->{accno} =~ s/\\'/'/g;
  • $form->{accno} =~ s/\\\\/\\/g;
  • AM->get_account( \%myconfig, \%$form );
  • foreach my $item ( split( /:/, $form->{link} ) ) {
  • $form->{$item} = "checked";
  • }
  • &account_header;
  • &form_footer;
  • }
  • sub account_header {
  • $form->{title} = $locale->text("$form->{title} Account");
  • $checked{ $form->{charttype} } = "checked";
  • $checked{contra} = "checked" if $form->{contra};
  • $checked{"$form->{category}_"} = "checked";
  • for (qw(accno description)) { $form->{$_} = $form->quote( $form->{$_} ) }
  • # this is for our parser only!
  • # type=submit $locale->text('Add Account')
  • # type=submit $locale->text('Edit Account')
  • $form->header;
  • print qq|
  • <body>
  • <form method=post action=$form->{script}>
  • <input type=hidden name=id value=$form->{id}>
  • <input type=hidden name=type value=account>
  • <input type=hidden name=inventory_accno_id value=$form->{inventory_accno_id}>
  • <input type=hidden name=income_accno_id value=$form->{income_accno_id}>
  • <input type=hidden name=expense_accno_id value=$form->{expense_accno_id}>
  • <input type=hidden name=fxgain_accno_id values=$form->{fxgain_accno_id}>
  • <input type=hidden name=fxloss_accno_id values=$form->{fxloss_accno_id}>
  • <table border=0 width=100%>
  • <tr>
  • <th class=listtop>$form->{title}</th>
  • </tr>
  • <tr height="5"></tr>
  • <tr valign=top>
  • <td>
  • <table>
  • <tr>
  • <th align="right">| . $locale->text('Account Number') . qq|</th>
  • <td><input name=accno size=20 value="$form->{accno}"></td>
  • </tr>
  • <tr>
  • <th align="right">| . $locale->text('Description') . qq|</th>
  • <td><input name=description size=40 value="$form->{description}"></td>
  • </tr>
  • <tr>
  • <th align="right">| . $locale->text('Account Type') . qq|</th>
  • <td>
  • <table>
  • <tr valign=top>
  • <td><input name=category type=radio class=radio value=A $checked{A_}>&nbsp;|
  • . $locale->text('Asset')
  • . qq|\n<br>
  • <input name=category type=radio class=radio value=L $checked{L_}>&nbsp;|
  • . $locale->text('Liability')
  • . qq|\n<br>
  • <input name=category type=radio class=radio value=Q $checked{Q_}>&nbsp;|
  • . $locale->text('Equity')
  • . qq|\n<br>
  • <input name=category type=radio class=radio value=I $checked{I_}>&nbsp;|
  • . $locale->text('Income')
  • . qq|\n<br>
  • <input name=category type=radio class=radio value=E $checked{E_}>&nbsp;|
  • . $locale->text('Expense')
  • . qq|</td>
  • <td>
  • <input name=contra class=checkbox type=checkbox value=1 $checked{contra}>&nbsp;|
  • . $locale->text('Contra') . qq|
  • </td>
  • <td>
  • <input name=charttype type=radio class=radio value="H" $checked{H}>&nbsp;|
  • . $locale->text('Heading') . qq|<br>
  • <input name=charttype type=radio class=radio value="A" $checked{A}>&nbsp;|
  • . $locale->text('Account')
  • . qq|</td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • |;
  • if ( $form->{charttype} eq "A" ) {
  • print qq|
  • <tr>
  • <td colspan=2>
  • <table>
  • <tr>
  • <th align=left>|
  • . $locale->text('Is this a summary account to record')
  • . qq|</th>
  • <td>
  • <input name=AR class=checkbox type=checkbox value=AR $form->{AR}>&nbsp;|
  • . $locale->text('AR')
  • . qq|&nbsp;<input name=AP class=checkbox type=checkbox value=AP $form->{AP}>&nbsp;|
  • . $locale->text('AP')
  • . qq|&nbsp;<input name=IC class=checkbox type=checkbox value=IC $form->{IC}>&nbsp;|
  • . $locale->text('Inventory')
  • . qq|</td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • <tr>
  • <th colspan=2>| . $locale->text('Include in drop-down menus') . qq|</th>
  • </tr>
  • <tr valign=top>
  • <td colspan=2>
  • <table width=100%>
  • <tr>
  • <th align=left>| . $locale->text('Receivables') . qq|</th>
  • <th align=left>| . $locale->text('Payables') . qq|</th>
  • <th align=left>| . $locale->text('Tracking Items') . qq|</th>
  • <th align=left>| . $locale->text('Non-tracking Items') . qq|</th>
  • </tr>
  • <tr>
  • <td>
  • <input name=AR_amount class=checkbox type=checkbox value=AR_amount $form->{AR_amount}>&nbsp;|
  • . $locale->text('Income')
  • . qq|\n<br>
  • <input name=AR_paid class=checkbox type=checkbox value=AR_paid $form->{AR_paid}>&nbsp;|
  • . $locale->text('Payment')
  • . qq|\n<br>
  • <input name=AR_tax class=checkbox type=checkbox value=AR_tax $form->{AR_tax}>&nbsp;|
  • . $locale->text('Tax') . qq|
  • </td>
  • <td>
  • <input name=AP_amount class=checkbox type=checkbox value=AP_amount $form->{AP_amount}>&nbsp;|
  • . $locale->text('Expense/Asset')
  • . qq|\n<br>
  • <input name=AP_paid class=checkbox type=checkbox value=AP_paid $form->{AP_paid}>&nbsp;|
  • . $locale->text('Payment')
  • . qq|\n<br>
  • <input name=AP_tax class=checkbox type=checkbox value=AP_tax $form->{AP_tax}>&nbsp;|
  • . $locale->text('Tax') . qq|
  • </td>
  • <td>
  • <input name=IC_sale class=checkbox type=checkbox value=IC_sale $form->{IC_sale}>&nbsp;|
  • . $locale->text('Income')
  • . qq|\n<br>
  • <input name=IC_cogs class=checkbox type=checkbox value=IC_cogs $form->{IC_cogs}>&nbsp;|
  • . $locale->text('COGS')
  • . qq|\n<br>
  • <input name=IC_taxpart class=checkbox type=checkbox value=IC_taxpart $form->{IC_taxpart}>&nbsp;|
  • . $locale->text('Tax') . qq|
  • </td>
  • <td>
  • <input name=IC_income class=checkbox type=checkbox value=IC_income $form->{IC_income}>&nbsp;|
  • . $locale->text('Income')
  • . qq|\n<br>
  • <input name=IC_expense class=checkbox type=checkbox value=IC_expense $form->{IC_expense}>&nbsp;|
  • . $locale->text('Expense')
  • . qq|\n<br>
  • <input name=IC_taxservice class=checkbox type=checkbox value=IC_taxservice $form->{IC_taxservice}>&nbsp;|
  • . $locale->text('Tax') . qq|
  • </td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • <tr>
  • </tr>
  • |;
  • }
  • print qq|
  • <tr>
  • <th align="right">| . $locale->text('GIFI') . qq|</th>
  • <td><input name=gifi_accno size=9 value="$form->{gifi_accno}"></td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • <tr>
  • <td><hr size=3 noshade></td>
  • </tr>
  • </table>
  • |;
  • }
  • sub form_footer {
  • $form->hide_form(qw(callback path login sessionid));
  • # type=submit $locale->text('Save')
  • # type=submit $locale->text('Save as new')
  • # type=submit $locale->text('Delete')
  • %button = ();
  • if ( $form->{id} ) {
  • $button{'save'} =
  • { ndx => 3, key => 'S', value => $locale->text('Save') };
  • $button{'save_as_new'} =
  • { ndx => 7, key => 'N', value => $locale->text('Save as new') };
  • if ( $form->{orphaned} ) {
  • $button{'delete'} =
  • { ndx => 16, key => 'D', value => $locale->text('Delete') };
  • }
  • }
  • else {
  • $button{'save'} =
  • { ndx => 3, key => 'S', value => $locale->text('Save') };
  • }
  • for ( sort { $button{$a}->{ndx} <=> $button{$b}->{ndx} } keys %button ) {
  • $form->print_button( \%button, $_ );
  • }
  • if ( $form->{lynx} ) {
  • require "bin/menu.pl";
  • &menubar;
  • }
  • print qq|
  • </form>
  • </body>
  • </html>
  • |;
  • }
  • sub save_account {
  • $form->isblank( "accno", $locale->text('Account Number missing!') );
  • $form->isblank( "category", $locale->text('Account Type missing!') );
  • # check for conflicting accounts
  • if ( $form->{AR} || $form->{AP} || $form->{IC} ) {
  • $a = "";
  • for (qw(AR AP IC)) { $a .= $form->{$_} }
  • $form->error(
  • $locale->text(
  • 'Cannot set account for more than one of AR, AP or IC')
  • ) if length $a > 2;
  • for (
  • qw(AR_amount AR_tax AR_paid AP_amount AP_tax AP_paid IC_taxpart IC_taxservice IC_sale IC_cogs IC_income IC_expense)
  • )
  • {
  • $form->error(
  • "$form->{AR}$form->{AP}$form->{IC} "
  • . $locale->text(
  • 'account cannot be set to any other type of account')
  • ) if $form->{$_};
  • }
  • }
  • foreach $item ( "AR", "AP" ) {
  • $i = 0;
  • for ( "${item}_amount", "${item}_paid", "${item}_tax" ) {
  • $i++ if $form->{$_};
  • }
  • $form->error(
  • $locale->text( 'Cannot set multiple options for [_1]', $item ) )
  • if $i > 1;
  • }
  • if ( AM->save_account( \%myconfig, \%$form ) ) {
  • $form->redirect( $locale->text('Account saved!') );
  • }
  • else {
  • $form->error( $locale->text('Cannot save account!') );
  • }
  • }
  • sub list_account {
  • CA->all_accounts( \%myconfig, \%$form );
  • $form->{title} = $locale->text('Chart of Accounts');
  • # construct callback
  • $callback =
  • "$form->{script}?action=list_account&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}";
  • @column_index = qw(accno gifi_accno description debit credit link);
  • $column_header{accno} =
  • qq|<th class=listtop>| . $locale->text('Account') . qq|</a></th>|;
  • $column_header{gifi_accno} =
  • qq|<th class=listtop>| . $locale->text('GIFI') . qq|</a></th>|;
  • $column_header{description} =
  • qq|<th class=listtop>| . $locale->text('Description') . qq|</a></th>|;
  • $column_header{debit} =
  • qq|<th class=listtop>| . $locale->text('Debit') . qq|</a></th>|;
  • $column_header{credit} =
  • qq|<th class=listtop>| . $locale->text('Credit') . qq|</a></th>|;
  • $column_header{link} =
  • qq|<th class=listtop>| . $locale->text('Link') . qq|</a></th>|;
  • $form->header;
  • $colspan = $#column_index + 1;
  • print qq|
  • <body>
  • <table width=100%>
  • <tr>
  • <th class=listtop colspan=$colspan>$form->{title}</th>
  • </tr>
  • <tr height="5"></tr>
  • <tr class="listheading">
  • |;
  • for (@column_index) { print "$column_header{$_}\n" }
  • print qq|
  • </tr>
  • |;
  • # escape callback
  • $callback = $form->escape($callback);
  • foreach $ca ( @{ $form->{CA} } ) {
  • $ca->{debit} = "&nbsp;";
  • $ca->{credit} = "&nbsp;";
  • if ( $ca->{amount} > 0 ) {
  • $ca->{credit} =
  • $form->format_amount( \%myconfig, $ca->{amount}, 2, "&nbsp;" );
  • }
  • if ( $ca->{amount} < 0 ) {
  • $ca->{debit} =
  • $form->format_amount( \%myconfig, -$ca->{amount}, 2, "&nbsp;" );
  • }
  • $ca->{link} =~ s/:/<br>/og;
  • $gifi_accno = $form->escape( $ca->{gifi_accno} );
  • if ( $ca->{charttype} eq "H" ) {
  • print qq|<tr class="listheading">|;
  • $column_data{accno} =
  • qq|<th><a class="listheading" href="$form->{script}?action=edit_account&id=$ca->{id}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback">$ca->{accno}</a></th>|;
  • $column_data{gifi_accno} =
  • qq|<th class="listheading"><a href="$form->{script}?action=edit_gifi&accno=$gifi_accno&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback">$ca->{gifi_accno}</a>&nbsp;</th>|;
  • $column_data{description} =
  • qq|<th class="listheading">$ca->{description}&nbsp;</th>|;
  • $column_data{debit} = qq|<th>&nbsp;</th>|;
  • $column_data{credit} = qq| <th>&nbsp;</th>|;
  • $column_data{link} = qq|<th>&nbsp;</th>|;
  • }
  • else {
  • $i++;
  • $i %= 2;
  • print qq|
  • <tr valign=top class="listrow$i">|;
  • $column_data{accno} =