X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FCP.pm;h=e2b9f48cb222a933f5f7c261a3062afc263c97e3;hb=7ed4b336b89b861479a1fc2670b9456334b0d1be;hp=5786bf86257e0a2dd6cfe1c3ddf89b3298b40574;hpb=0a1bea675b76367bf2fb15ffb3213fee858c9803;p=kivitendo-erp.git diff --git a/SL/CP.pm b/SL/CP.pm index 5786bf862..e2b9f48cb 100644 --- a/SL/CP.pm +++ b/SL/CP.pm @@ -93,10 +93,9 @@ sub paymentaccounts { } $sth->finish; - # get currencies and closedto - $query = qq|SELECT curr, closedto FROM defaults|; - ($form->{currencies}, $form->{closedto}) = - selectrow_query($form, $dbh, $query); + # get closedto + $query = qq|SELECT closedto FROM defaults|; + ($form->{closedto}) = selectrow_query($form, $dbh, $query); $dbh->disconnect; @@ -149,14 +148,22 @@ sub get_openinvoices { my $buysell = $form->{vc} eq 'customer' ? "buy" : "sell"; my $arap = $form->{arap} eq "ar" ? "ar" : "ap"; + my @values = (conv_i($form->{"${vc}_id"}), "$form->{currency}"); + my $whereinvoice = ''; + if ($::form->{invnumber}) { + $whereinvoice = ' AND a.invnumber LIKE ? '; + push @values, $::form->{invnumber}; + } + my $query = - qq|SELECT a.id, a.invnumber, a.transdate, a.amount, a.paid, a.curr | . + qq|SELECT a.id, a.invnumber, a.transdate, a.amount, a.paid, cu.name AS curr | . qq|FROM $arap a | . - qq|WHERE (a.${vc}_id = ?) AND (COALESCE(a.curr, '') = ?) AND NOT (a.amount = a.paid)| . + qq|LEFT JOIN currencies cu ON (cu.id=a.currency_id)| . + qq|WHERE (a.${vc}_id = ?) AND cu.name = ? AND NOT (a.amount = a.paid)| . + $whereinvoice . qq|ORDER BY a.id|; - my $sth = prepare_execute_query($form, $dbh, $query, - conv_i($form->{"${vc}_id"}), - "$form->{currency}"); + + my $sth = prepare_execute_query($form, $dbh, $query, @values); $form->{PR} = []; while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { @@ -174,7 +181,7 @@ sub get_openinvoices { SELECT COUNT(*) FROM $arap WHERE (${vc}_id = ?) - AND (COALESCE(curr, '') <> ?) + AND ((SELECT cu.name FROM currencies cu WHERE cu.id=${arap}.currency_id) <> ?) AND (amount <> paid) SQL ($form->{openinvoices_other_currencies}) = selectfirst_array_query($form, $dbh, $query, conv_i($form->{"${vc}_id"}), "$form->{currency}"); @@ -250,7 +257,7 @@ sub process_payment { qq|SELECT $buysell | . qq|FROM exchangerate e | . qq|JOIN ${arap} a ON (a.transdate = e.transdate) | . - qq|WHERE (e.curr = ?) AND (a.id = ?)|; + qq|WHERE (e.currency_id = (SELECT id FROM currencies WHERE name = ?)) AND (a.id = ?)|; my ($exchangerate) = selectrow_query($form, $dbh, $query, $form->{currency}, $form->{"id_$i"}); @@ -269,20 +276,20 @@ sub process_payment { # add AR/AP $query = - qq|INSERT INTO acc_trans (trans_id, chart_id, transdate, amount) | . - qq|VALUES (?, ?, ?, ?)|; + qq|INSERT INTO acc_trans (trans_id, chart_id, transdate, amount, chart_link, taxkey, tax_id) | . + qq|VALUES (?, ?, ?, ?, (SELECT link FROM chart WHERE id=?), 0, (SELECT id FROM tax WHERE taxkey=0 LIMIT 1))|; do_query($form, $dbh, $query, $form->{"id_$i"}, $id, - conv_date($form->{datepaid}), $amount * $ml); + conv_date($form->{datepaid}), $amount * $ml, $id); # add payment $query = qq|INSERT INTO acc_trans (trans_id, chart_id, transdate, amount, | . - qq| source, memo) | . - qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?)|; + qq| source, memo, chart_link, taxkey, tax_id) | . + qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?, (SELECT link FROM chart WHERE accno=?), 0, (SELECT id FROM tax WHERE taxkey=0 LIMIT 1))|; my @values = (conv_i($form->{"id_$i"}), $paymentaccno, conv_date($form->{datepaid}), $form->{"paid_$i"} * $ml * -1, $form->{source}, - $form->{memo}); + $form->{memo}, $paymentaccno); do_query($form, $dbh, $query, @values); # add exchangerate difference if currency ne defaultcurrency @@ -293,11 +300,11 @@ sub process_payment { # exchangerate difference $query = qq|INSERT INTO acc_trans (trans_id, chart_id, transdate, amount, | . - qq| cleared, fx_transaction) | . - qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?)|; + qq| cleared, fx_transaction, chart_link, taxkey, tax_id) | . + qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?, (SELECT link FROM chart WHERE accno = ?), 0, (SELECT id FROM tax WHERE taxkey=0 LIMIT 1))|; @values = (conv_i($form->{"id_$i"}), $paymentaccno, conv_date($form->{datepaid}), ($amount * $ml * -1), '0', - '1'); + '1', $paymentaccno); do_query($form, $dbh, $query, @values); # gain/loss @@ -309,11 +316,11 @@ sub process_payment { my $accno_id = ($amount < 0) ? $fxgain_accno_id : $fxloss_accno_id; $query = qq|INSERT INTO acc_trans (trans_id, chart_id, transdate, | . - qq| amount, cleared, fx_transaction) | . - qq|VALUES (?, ?, ?, ?, ?, ?)|; + qq| amount, cleared, fx_transaction, chart_link, taxkey, tax_id) | . + qq|VALUES (?, ?, ?, ?, ?, ?, (SELECT link FROM chart WHERE id=?), 0, (SELECT id FROM tax WHERE taxkey=0 LIMIT 1))|; @values = (conv_i($form->{"id_$i"}), $accno_id, conv_date($form->{datepaid}), $amount * $ml * -1, '0', - '1'); + '1', $accno_id); do_query($form, $dbh, $query, @values); } }