+
+ for $i (1 .. $form->{rowcount}) {
+
+ $source = qq|
+ <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"></td>|;
+ $source_hidden = qq|
+ <input type="hidden" name="source_$i" value="$form->{"source_$i"}" size="16">|;
+ $memo_hidden = qq|
+ <input type="hidden" name="memo_$i" value="$form->{"memo_$i"}" size="16">|;
+
+ 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>| .
+ 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>| .
+ 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) {
+ if ($form->{transfer}) {
+ $fx_transaction = qq|
+ <td><input name="fx_transaction_$i" class=checkbox type=checkbox value=1></td>
+ |;
+ }
+
+ } else {
+ if ($form->{"debit_$i"} != 0) {
+ $form->{totaldebit} += $form->{"debit_$i"};
+ if (!$form->{taxincluded}) {
+ $form->{totaldebit} += $form->{"tax_$i"};
+ }
+ } else {
+ $form->{totalcredit} += $form->{"credit_$i"};
+ if (!$form->{taxincluded}) {
+ $form->{totalcredit} += $form->{"tax_$i"};
+ }
+ }
+
+ for (qw(debit credit tax)) {
+ $form->{"${_}_$i"} =
+ ($form->{"${_}_$i"})
+ ? $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2)
+ : "";
+ }
+
+ if ($i < $form->{rowcount}) {
+ if ($form->{transfer}) {
+ $checked = ($form->{"fx_transaction_$i"}) ? "1" : "";
+ $x = ($checked) ? "x" : "";
+ $fx_transaction = qq|
+ <td><input type=hidden name="fx_transaction_$i" value="$checked">$x</td>
+ |;
+ }
+ $form->hide_form("accno_$i");
+
+ } else {
+ if ($form->{transfer}) {
+ $fx_transaction = qq|
+ <td><input name="fx_transaction_$i" class=checkbox type=checkbox value=1></td>
+ |;
+ }
+ }
+ }
+ my $debitreadonly = "";
+ my $creditreadonly = "";
+ if ($i == $form->{rowcount}) {
+ if ($debitlock) {
+ $debitreadonly = "readonly";
+ } elsif ($creditlock) {
+ $creditreadonly = "readonly";
+ }
+ }
+
+ my $projectnumber =
+ NTI($cgi->popup_menu('-name' => "project_id_$i",
+ '-values' => \@project_values,
+ '-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 $copy2credit $debitreadonly></td>
+ <td><input name="credit_$i" size=8 value="$form->{"credit_$i"}" $creditreadonly></td>
+ <td><input type="hidden" name="tax_$i" value="$form->{"tax_$i"}">$form->{"tax_$i"}</td>
+ $tax|;
+
+ if ($form->{show_details}) {
+ print qq|
+ $source
+ $memo
+ <td>$projectnumber</td>
+|;
+ }
+ print qq|
+ $source_hidden
+ $memo_hidden
+ </tr>
+|;
+ }
+
+ $form->hide_form(qw(rowcount selectaccno));
+
+ $lxdebug->leave_sub();
+
+}
+
+sub form_header {
+ my ($init) = @_;
+ $lxdebug->enter_sub();
+
+ $auth->assert('general_ledger');
+
+ $title = $form->{title};
+ $form->{title} = $locale->text("$title General Ledger Transaction");
+ $readonly = ($form->{id}) ? "readonly" : "";
+
+ $show_details_checked = "checked" if $form->{show_details};
+
+ $ob_transaction_checked = "checked" if $form->{ob_transaction};
+ $cb_transaction_checked = "checked" if $form->{cb_transaction};
+
+ # $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) {
+ var taxkey = accno.options[accno.selectedIndex].value;
+ var reg = /--([0-9]*)/;
+ var found = reg.exec(taxkey);
+ var index = found[1];
+ index = parseInt(index);
+ var tax = 'taxchart_' + row;
+ for (var i = 0; i < document.getElementById(tax).options.length; ++i) {
+ var reg2 = new RegExp("^"+ index, "");
+ if (reg2.exec(document.getElementById(tax).options[i].value)) {
+ document.getElementById(tax).options[i].selected = true;
+ break;
+ }
+ }
+ };
+
+ 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} =~
+ s/option>\Q$form->{department}\E/option selected>$form->{department}/;
+
+ if (($rows = $form->numtextrows($form->{description}, 50)) > 1) {
+ $description =
+ 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}" $readonly>|;
+ }
+
+ $taxincluded = ($form->{taxincluded}) ? "checked" : "";
+
+ if ($init) {
+ $taxincluded = "checked";
+ }
+
+ $department = qq|
+ <tr>
+ <th align=right nowrap>| . $locale->text('Department') . qq|</th>
+ <td colspan=3><select name=department>$form->{selectdepartment}</select></td>