-sub new_account {
- $lxdebug->enter_sub();
-
- $form->{chart} = $form->unescape($form->{chart});
-
- if ($form->{credit_splited}) {
- $form->{creditpost} = $form->{amount};
-
- for $i (2 .. $form->{creditrowcount}) {
- $form->{"credit_$i"} =
- $form->parse_amount(\%myconfig, $form->{"credit_$i"});
- $form->{creditpost} -= $form->{"credit_$i"};
- ($taxkey, $taxrate) = split(/--/, $form->{"taxchartselected_$i"});
- if ($form->{"tax_manual_$i"}) {
- $form->{"tax_$i"} = $form->parse_amount(\%myconfig, $form->{"tax_$i"});
- } else {
- $form->{"tax_$i"} = $form->{"credit_$i"} * $taxrate;
- }
- $form->{creditpost} -= $form->{"tax_$i"};
-
- }
- if ($form->{"credit_$form->{creditrowcount}"}) {
- $form->{creditrowcount}++;
- }
-
- &display_split_credit;
- }
- if ($form->{debit_splited}) {
- $form->{debitpost} = $form->{amount};
-
- for $i (2 .. $form->{debitrowcount}) {
- $form->{"debit_$i"} =
- $form->parse_amount(\%myconfig, $form->{"debit_$i"});
- $form->{debitpost} -= $form->{"debit_$i"};
- ($taxkey, $taxrate) = split(/--/, $form->{"taxchartselected_$i"});
- if ($form->{"tax_manual_$i"}) {
- $form->{"tax_$i"} = $form->parse_amount(\%myconfig, $form->{"tax_$i"});
- } else {
- $form->{"tax_$i"} = $form->{"debit_$i"} * $taxrate;
- }
- $form->{debitpost} -= $form->{"tax_$i"};
-
- }
- if ($form->{"debit_$form->{debitrowcount}"}) {
- $form->{debitrowcount}++;
- }
-
- &display_split_debit;
- }
- $lxdebug->leave_sub();
-}
-
-sub close {
- $lxdebug->enter_sub();
-
- # save the new form variables before splitting previousform
- map { $newform{$_} = $form->{$_} } keys %$form;
-
- $previousform = $form->unescape($form->{previousform});
-
- # don't trample on previous variables
- map { delete $form->{$_} } keys %newform;
-
- # now take it apart and restore original values
- foreach $item (split /&/, $previousform) {
- ($key, $value) = split /=/, $item, 2;
- $value =~ s/%26/&/g;
- $form->{$key} = $value;
- }
- if ($newform{credit_splited}) {
- $form->{credit} = 0;
- $form->{credit_splited} = $newform{credit_splited};
- $form->{creditrowcount} = $newform{creditrowcount};
- for $i (2 .. $form->{creditrowcount}) {
- $form->{"creditchartselected_$i"} = $newform{"creditchartselected_$i"};
- $form->{"credit_$i"} = $newform{"credit_$i"};
- $form->{"credit_$i"} =
- $form->parse_amount(\%myconfig, $form->{"credit_$i"});
- $form->{"taxchartselected_$i"} = $newform{"taxchartselected_$i"};
- ($taxkey, $taxrate) = split(/--/, $form->{"taxchartselected_$i"});
- if ($newform{"tax_manual_$i"}) {
- $form->{"tax_$i"} =
- $form->parse_amount(\%myconfig, $newform{"tax_$i"});
- } else {
- $form->{"tax_$i"} = $form->{"credit_$i"} * $taxrate;
- }
- $form->{credit} += $form->round_amount($form->{"credit_$i"}, 2);
- $form->{credit} += $form->round_amount($form->{"tax_$i"}, 2);
-
- }
- } else {
- $form->{debit} = 0;
- $form->{debit_splited} = $newform{debit_splited};
- $form->{debitrowcount} = $newform{debitrowcount};
- for $i (2 .. $form->{debitrowcount}) {
- $form->{"debitchartselected_$i"} = $newform{"debitchartselected_$i"};
- $form->{"debit_$i"} = $newform{"debit_$i"};
- $form->{"debit_$i"} =
- $form->parse_amount(\%myconfig, $form->{"debit_$i"});
- $form->{"taxchartselected_$i"} = $newform{"taxchartselected_$i"};
- ($taxkey, $taxrate) = split(/--/, $form->{"taxchartselected_$i"});
- if ($newform{"tax_manual_$i"}) {
- $form->{"tax_$i"} =
- $form->parse_amount(\%myconfig, $newform{"tax_$i"});
- } else {
- $form->{"tax_$i"} = $form->{"debit_$i"} * $taxrate;
- }
- $form->{debit} += $form->round_amount($form->{"debit_$i"}, 2);
- $form->{debit} += $form->round_amount($form->{"tax_$i"}, 2);
- }
- }
- delete $form->{action};
- $callback = $form->unescape($form->{callback});
- $form->{callback} = $form->unescape($form->{old_callback});
- delete $form->{old_callback};
-
- # put callback together
- foreach $key (keys %$form) {
-
- # do single escape for Apache 2.0
- $value = $form->escape($form->{$key}, 1);
- $callback .= qq|&$key=$value|;
- }
- $form->{callback} = $callback;
-
- # redirect
- $form->redirect;
- $lxdebug->leave_sub();
-}