+ $form->{exchangerate} =
+ $form->get_exchangerate($dbh, $form->{currency}, $form->{invdate}, "buy");
+
+ my $project_id = conv_i($form->{"globalproject_id"});
+
+ # record payments and offsetting AP
+ for my $i (1 .. $form->{paidaccounts}) {
+ next if $form->{"paid_$i"} == 0;
+
+ my ($accno) = split /--/, $form->{"AP_paid_$i"};
+ $form->{"datepaid_$i"} = $form->{invdate} unless $form->{"datepaid_$i"};
+ $form->{datepaid} = $form->{"datepaid_$i"};
+
+ $exchangerate = 0;
+ if (($form->{currency} eq $form->{defaultcurrency}) || ($form->{defaultcurrency} eq "")) {
+ $form->{"exchangerate_$i"} = 1;
+
+ } else {
+ $exchangerate = $form->check_exchangerate($myconfig, $form->{currency}, $form->{"datepaid_$i"}, 'buy');
+
+ $form->{"exchangerate_$i"} =
+ ($exchangerate)
+ ? $exchangerate
+ : $form->parse_amount($myconfig, $form->{"exchangerate_$i"});
+ }
+
+ # record AP
+ $amount = $form->round_amount($form->{"paid_$i"} * $form->{"exchangerate"}, 2) * -1;
+
+ $query =
+ qq|DELETE FROM acc_trans
+ WHERE (trans_id = ?)
+ AND (chart_id = (SELECT c.id FROM chart c WHERE c.accno = ?))
+ AND (amount = ?)
+ AND (transdate = ?)|;
+ @values = (conv_i($form->{id}), $form->{AP}, $amount, conv_date($form->{"datepaid_$i"}));
+ do_query($form, $dbh, $query, @values);
+
+ $query =
+ qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, taxkey, project_id)
+ VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?,
+ (SELECT taxkey_id FROM chart WHERE accno = ?), ?)|;
+ @values = (conv_i($form->{id}), $form->{AP}, $amount,
+ conv_date($form->{"datepaid_$i"}), $form->{AP}, $project_id);
+ do_query($form, $dbh, $query, @values);
+
+ $query =
+ qq|DELETE FROM acc_trans
+ WHERE (trans_id = ?)
+ AND (chart_id=(SELECT c.id FROM chart c WHERE c.accno = ?))
+ AND (amount = ?)
+ AND (transdate = ?)
+ AND (source = ?)
+ AND (memo = ?)|;
+ @values = (conv_i($form->{id}), $accno, $form->{"paid_$i"},
+ conv_date($form->{"datepaid_$i"}), $form->{"source_$i"},
+ $form->{"memo_$i"});
+ do_query($form, $dbh, $query, @values);
+
+ $query =
+ qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, source, memo, taxkey, project_id)
+ VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?, ?, ?,
+ (SELECT taxkey_id FROM chart WHERE accno = ?), ?)|;
+ @values = (conv_i($form->{id}), $accno, $form->{"paid_$i"},
+ conv_date($form->{"datepaid_$i"}), $form->{"source_$i"},
+ $form->{"memo_$i"}, $accno, $project_id);
+ do_query($form, $dbh, $query, @values);
+
+ # gain/loss
+ $amount = $form->{"paid_$i"} * $form->{exchangerate} - $form->{"paid_$i"} * $form->{"exchangerate_$i"};
+
+ if ($amount > 0) {
+ $form->{fx}{ $form->{fxgain_accno} }{ $form->{"datepaid_$i"} } += $amount;
+ } else {
+ $form->{fx}{ $form->{fxloss_accno} }{ $form->{"datepaid_$i"} } += $amount;
+ }
+
+ $diff = 0;
+
+ # update exchange rate
+ if (($form->{currency} ne $form->{defaultcurrency}) && !$exchangerate) {
+ $form->update_exchangerate($dbh, $form->{currency},
+ $form->{"datepaid_$i"},
+ $form->{"exchangerate_$i"}, 0);