# build the popup menus
$form->{taxincluded} = ($form->{id}) ? $form->{taxincluded} : "checked";
- # forex
- $form->{forex} = $form->{exchangerate};
- $exchangerate = ($form->{exchangerate}) ? $form->{exchangerate} : 1;
- foreach $key (keys %{ $form->{AR_links} }) {
- # if there is a value we have an old entry
- my $j = 0;
- my $k = 0;
-
- for $i (1 .. scalar @{ $form->{acc_trans}{$key} }) {
- if ($key eq "AR_paid") {
- $j++;
- $form->{"AR_paid_$j"} = $form->{acc_trans}{$key}->[$i-1]->{accno};
-
- # reverse paid
- $form->{"paid_$j"} = $form->{acc_trans}{$key}->[$i - 1]->{amount} * -1;
- $form->{"datepaid_$j"} =
- $form->{acc_trans}{$key}->[$i - 1]->{transdate};
- $form->{"source_$j"} = $form->{acc_trans}{$key}->[$i - 1]->{source};
- $form->{"memo_$j"} = $form->{acc_trans}{$key}->[$i - 1]->{memo};
-
- $form->{"forex_$j"} = $form->{"exchangerate_$i"} =
- $form->{acc_trans}{$key}->[$i - 1]->{exchangerate};
- $form->{"paid_project_id_$j"} = $form->{acc_trans}{$key}->[$i - 1]->{project_id};
- $form->{paidaccounts}++;
-
- } else {
-
- $akey = $key;
- $akey =~ s/AR_//;
-
- if ($key eq "AR_tax" || $key eq "AP_tax") {
- $form->{"${key}_$form->{acc_trans}{$key}->[$i-1]->{accno}"} =
- "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
- $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"} =
- $form->round_amount(
- $form->{acc_trans}{$key}->[$i - 1]->{amount} / $exchangerate,
- 2);
-
- if ($form->{"$form->{acc_trans}{$key}->[$i-1]->{accno}_rate"} > 0) {
- $totaltax +=
- $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"};
- $taxrate +=
- $form->{"$form->{acc_trans}{$key}->[$i-1]->{accno}_rate"};
- } else {
- $totalwithholding +=
- $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"};
- $withholdingrate +=
- $form->{"$form->{acc_trans}{$key}->[$i-1]->{accno}_rate"};
- }
- $index = $form->{acc_trans}{$key}->[$i - 1]->{index};
- $form->{"tax_$index"} = $form->{acc_trans}{$key}->[$i - 1]->{amount};
- $totaltax += $form->{"tax_$index"};
-
- } else {
- $k++;
- $form->{"${akey}_$k"} =
- $form->round_amount(
- $form->{acc_trans}{$key}->[$i - 1]->{amount} / $exchangerate,
- 2);
- if ($akey eq 'amount') {
- $form->{rowcount}++;
- $totalamount += $form->{"${akey}_$i"};
-
- $form->{"oldprojectnumber_$k"} = $form->{"projectnumber_$k"} =
- "$form->{acc_trans}{$key}->[$i-1]->{projectnumber}";
- $form->{taxrate} = $form->{acc_trans}{$key}->[$i - 1]->{rate};
- $form->{"project_id_$k"} =
- "$form->{acc_trans}{$key}->[$i-1]->{project_id}";
- }
- $form->{"${key}_$i"} =
- "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
-
- if ($akey eq "AR") {
- $form->{ARselected} = $form->{acc_trans}{$key}->[$i-1]->{accno};
-
- } elsif ($akey eq "amount") {
- $form->{"${key}_$k"} = $form->{acc_trans}{$key}->[$i-1]->{accno} .
- "--" . $form->{acc_trans}{$key}->[$i-1]->{id};
- $form->{"taxchart_$k"} = $form->{acc_trans}{$key}->[$i-1]->{id} .
- "--" . $form->{acc_trans}{$key}->[$i-1]->{rate};
- }
- }
- }
- }
- }
-
- $form->{taxincluded} = $taxincluded if ($form->{id});
- $form->{paidaccounts} = 1 if not defined $form->{paidaccounts};
-
- if ($form->{taxincluded} && $form->{taxrate} && $totalamount) {
-
- # add tax to amounts and invtotal
- for $i (1 .. $form->{rowcount}) {
- $taxamount =
- ($totaltax + $totalwithholding) * $form->{"amount_$i"} / $totalamount;
- $tax = $form->round_amount($taxamount, 2);
- $diff += ($taxamount - $tax);
- $form->{"amount_$i"} += $form->{"tax_$i"};
- }
- $form->{amount_1} += $form->round_amount($diff, 2);
- }
-
- $taxamount = $form->round_amount($taxamount, 2);
- $form->{tax} = $taxamount;
-
- $form->{invtotal} = $totalamount + $totaltax;
+ AR->setup_form($form);
$form->{locked} =
($form->datetonum($form->{transdate}, \%myconfig) <=
$project = "";
}
+ $form->{invtotal_unformatted} = $form->{invtotal};
$form->{invtotal} = $form->format_amount(\%myconfig, $form->{invtotal}, 2);
$ARselected =
</tr>
";
- my @triggers = ();
+ my @triggers = ();
+ my $totalpaid = 0;
+
$form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"});
for $i (1 .. $form->{paidaccounts}) {
print "
'-labels' => \%AR_paid_labels,
'-default' => $form->{"AR_paid_$i"}));
+ $totalpaid += $form->{"paid_$i"};
+
# format amounts
if ($form->{"paid_$i"}) {
$form->{"paid_$i"} =
push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i");
}
- print $form->write_trigger(\%myconfig, scalar(@triggers) / 3, @triggers) .
+ my $paid_missing = $form->{invtotal_unformatted} - $totalpaid;
+
+ print qq|
+ <tr>
+ <td></td>
+ <td></td>
+ <td align="center">| . $locale->text('Total') . qq|</td>
+ <td align="center">| . H($form->format_amount(\%myconfig, $totalpaid, 2)) . qq|</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td align="center">| . $locale->text('Missing amount') . qq|</td>
+ <td align="center">| . H($form->format_amount(\%myconfig, $paid_missing, 2)) . qq|</td>
+ </tr>
+| . $form->write_trigger(\%myconfig, scalar(@triggers) / 3, @triggers) .
qq|
<input type=hidden name=paidaccounts value=$form->{paidaccounts}>
$transdate = $form->datetonum($form->{transdate}, \%myconfig);
$closedto = $form->datetonum($form->{closedto}, \%myconfig);
- # ToDO: insert a global check for stornos, so that a storno is only possible a limited time after saving it
- print qq|<input class=submit type=submit name=action value="| . $locale->text('Storno') . qq|">|;
- if $form->{id} && !IS->has_storno(\%myconfig, $form, 'ar') && !IS->is_storno(\%myconfig, $form, 'ar');
+ # ToDO: - insert a global check for stornos, so that a storno is only possible a limited time after saving it
+ print qq|<input class=submit type=submit name=action value="| . $locale->text('Storno') . qq|">|
+ if ($form->{id} && !IS->has_storno(\%myconfig, $form, 'ar') && !IS->is_storno(\%myconfig, $form, 'ar') && !$form->{paid_1});
print qq|<input class="submit" type="submit" name="action" id="update_button" value="| . $locale->text('Update') . qq|">\n|;
if ($form->{id}) {
($form->{AR}) = split /--/, $form->{AR};
($form->{AR_paid}) = split /--/, $form->{AR_paid};
- $form->redirect($locale->text(' Payment posted!'))
+ $form->redirect($locale->text('Payment posted!'))
if (AR->post_payment(\%myconfig, \%$form));
$form->error($locale->text('Cannot post payment!'));
$column_data{invnumber} =
"<td><a href=$module?action=edit&id=$ar->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ar->{invnumber}</a></td>";
- my $is_storno = $ar->{storno} && IS->is_storno(\%myconfig, $form, 'ar'); #($ar->{invnumber} =~ /^Storno zu/); # ToDO: fix this
+ my $is_storno = $ar->{storno} && IS->is_storno(\%myconfig, $form, 'ar');
my $has_storno = $ar->{storno} && !$is_storno;
$column_data{type} = "<td>" .
$form->error($locale->text("Transaction has already been cancelled!"));
}
- # ToDO:
- # - nicht anzeigen wenn neue rechnung
- # - nicht anzeigen wenn schons toniert
- # - nicht anziegen wenn zahlungen da
-
-
-# my %keep_keys = map { $_, 1 } qw(login password id stylesheet);
-# map { delete $form->{$_} unless $keep_keys{$_} } keys %{ $form };
-# prepare_transaction();
-
# negate amount/taxes
for my $i (1 .. $form->{rowcount}) {
$form->{"amount_$i"} *= -1;
# /saving the history
$lxdebug->leave_sub();
-
}