if (!$form->{employee_id}) {
$form->get_employee($dbh);
}
+
+ $form->{defaultcurrency} = $form->get_default_currency($myconfig);
($null, $form->{department_id}) = split(/--/, $form->{department});
my ($self, $form, $dbh) = @_;
- my (@delete_oids, $delete_next, $sth, $ref);
+ my @delete_oids;
# Delete old payment entries from acc_trans.
my $query =
- qq|SELECT at.oid, at.*, c.link
- FROM acc_trans at
- LEFT JOIN chart c ON (at.chart_id = c.id)
- WHERE (trans_id = ?)
- ORDER BY at.oid|;
+ qq|SELECT oid
+ FROM acc_trans
+ WHERE (trans_id = ?) AND fx_transaction
- $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
-
- while ($ref = $sth->fetchrow_hashref()) {
- if ($delete_next) {
- push @delete_oids, $ref->{oid};
- undef $delete_next;
- next;
- }
+ UNION
- $ref->{LINKS} = { map { $_, 1 } split m/:/, $ref->{link} };
-
- if ($ref->{fx_transaction} || ($ref->{LINKS}->{AR} && ($ref->{amount} >= 0))) {
- push @delete_oids, $ref->{oid};
- $delete_next = $ref->{LINKS}->{AR};
- }
- }
+ SELECT at.oid
+ FROM acc_trans at
+ LEFT JOIN chart c ON (at.chart_id = c.id)
+ WHERE (trans_id = ?) AND (c.link LIKE '%AR_paid%')|;
+ push @delete_oids, selectall_array_query($form, $dbh, $query, conv_i($form->{id}), conv_i($form->{id}));
- $sth->finish();
+ $query =
+ qq|SELECT at.oid
+ FROM acc_trans at
+ LEFT JOIN chart c ON (at.chart_id = c.id)
+ WHERE (trans_id = ?)
+ AND ((c.link = 'AR') OR (c.link LIKE '%:AR') OR (c.link LIKE 'AR:%'))
+ ORDER BY at.oid
+ OFFSET 1|;
+ push @delete_oids, selectall_array_query($form, $dbh, $query, conv_i($form->{id}));
if (@delete_oids) {
$query = qq|DELETE FROM acc_trans WHERE oid IN (| . join(", ", @delete_oids) . qq|)|;
my (%payments, $old_form, $row, $item, $query, %keep_vars);
- my @prior;
- push @prior, selectall_hashref_query($form, $dbh, qq|SELECT id, paid, datepaid FROM ar WHERE id = ?|, $form->{id});
- push @prior, selectall_hashref_query($form, $dbh, qq|SELECT * FROM acc_trans WHERE trans_id = ? ORDER BY oid|, $form->{id});
-
$old_form = save_form();
# Delete all entries in acc_trans from prior payments.
$self->_delete_payments($form, $dbh);
- my @after_dp;
- push @after_dp, selectall_hashref_query($form, $dbh, qq|SELECT * FROM acc_trans WHERE trans_id = ? ORDER BY oid|, $form->{id});
-
# Save the new payments the user made before cleaning up $form.
map { $payments{$_} = $form->{$_} } grep m/^datepaid_\d+$|^memo_\d+$|^source_\d+$|^exchangerate_\d+$|^paid_\d+$|^AR_paid_\d+$|^paidaccounts$/, keys %{ $form };
# Retrieve the invoice from the database.
$self->retrieve_invoice($myconfig, $form);
- # Set up the content of $form in the way that IR::post_invoice() expects.
+ # Set up the content of $form in the way that IS::post_invoice() expects.
$form->{exchangerate} = $form->format_amount($myconfig, $form->{exchangerate});
for $row (1 .. scalar @{ $form->{invoice_details} }) {
# Restore the payment options from the user input.
map { $form->{$_} = $payments{$_} } keys %payments;
- # Get the AP accno (which is normally done by Form::create_links()).
+ # Get the AR accno (which is normally done by Form::create_links()).
$query =
qq|SELECT c.accno
FROM acc_trans at
restore_form($old_form);
- my @after;
- push @after, selectall_hashref_query($form, $dbh, qq|SELECT id, paid, datepaid FROM ar WHERE id = ?|, $form->{id});
- push @after, selectall_hashref_query($form, $dbh, qq|SELECT * FROM acc_trans WHERE trans_id = ? ORDER BY oid|, $form->{id});
-
- foreach my $rows (@prior, @after_dp, @after) {
- map { delete @{$_}{qw(itime mtime)} } @{ $rows };
- }
-
- map { $main::lxdebug->dump_sql_result(0, 'davor ', $_) } @prior;
- map { $main::lxdebug->dump_sql_result(0, 'nachDP', $_) } @after_dp;
- map { $main::lxdebug->dump_sql_result(0, 'danach', $_) } @after;
-
- my $rc = 1;
-# my $rc = $dbh->commit();
+ my $rc = $dbh->commit();
$dbh->disconnect();
$main::lxdebug->leave_sub();
my $query =
qq|SELECT
p.id, p.partnumber, p.description, p.sellprice,
- p.listprice, p.inventory_accno_id,
+ p.listprice, p.inventory_accno_id, p.lastcost,
c1.accno AS inventory_accno,
c1.new_chart_id AS inventory_new_chart,