34 |
34 |
|
35 |
35 |
package IS;
|
36 |
36 |
|
37 |
|
use Data::Dumper;
|
38 |
37 |
use SL::AM;
|
39 |
38 |
use SL::Common;
|
40 |
39 |
use SL::DBUtils;
|
|
40 |
use SL::MoreCommon;
|
41 |
41 |
|
42 |
42 |
sub invoice_details {
|
43 |
43 |
$main::lxdebug->enter_sub();
|
... | ... | |
481 |
481 |
sub post_invoice {
|
482 |
482 |
$main::lxdebug->enter_sub();
|
483 |
483 |
|
484 |
|
my ($self, $myconfig, $form) = @_;
|
|
484 |
my ($self, $myconfig, $form, $provided_dbh, $payments_only) = @_;
|
485 |
485 |
|
486 |
486 |
# connect to database, turn off autocommit
|
487 |
|
my $dbh = $form->dbconnect_noauto($myconfig);
|
|
487 |
my $dbh = $provided_dbh ? $provided_dbh : $form->dbconnect_noauto($myconfig);
|
488 |
488 |
|
489 |
|
my ($query, $sth, $null, $project_id, $deliverydate, @values);
|
|
489 |
my ($query, $sth, $null, $project_id, @values);
|
490 |
490 |
my $exchangerate = 0;
|
491 |
491 |
|
492 |
492 |
if (!$form->{employee_id}) {
|
... | ... | |
497 |
497 |
|
498 |
498 |
my $all_units = AM->retrieve_units($myconfig, $form);
|
499 |
499 |
|
500 |
|
if ($form->{id}) {
|
501 |
|
|
502 |
|
&reverse_invoice($dbh, $form);
|
|
500 |
if (!$payments_only) {
|
|
501 |
if ($form->{id}) {
|
|
502 |
&reverse_invoice($dbh, $form);
|
503 |
503 |
|
504 |
|
} else {
|
505 |
|
$query = qq|SELECT nextval('glid')|;
|
506 |
|
($form->{"id"}) = selectrow_query($form, $dbh, $query);
|
|
504 |
} else {
|
|
505 |
$query = qq|SELECT nextval('glid')|;
|
|
506 |
($form->{"id"}) = selectrow_query($form, $dbh, $query);
|
507 |
507 |
|
508 |
|
$query = qq|INSERT INTO ar (id, invnumber) VALUES (?, ?)|;
|
509 |
|
do_query($form, $dbh, $query, $form->{"id"}, $form->{"id"});
|
|
508 |
$query = qq|INSERT INTO ar (id, invnumber) VALUES (?, ?)|;
|
|
509 |
do_query($form, $dbh, $query, $form->{"id"}, $form->{"id"});
|
510 |
510 |
|
511 |
|
if (!$form->{invnumber}) {
|
512 |
|
$form->{invnumber} =
|
513 |
|
$form->update_defaults($myconfig, $form->{type} eq "credit_note" ?
|
514 |
|
"cnnumber" : "invnumber", $dbh);
|
|
511 |
if (!$form->{invnumber}) {
|
|
512 |
$form->{invnumber} =
|
|
513 |
$form->update_defaults($myconfig, $form->{type} eq "credit_note" ?
|
|
514 |
"cnnumber" : "invnumber", $dbh);
|
|
515 |
}
|
515 |
516 |
}
|
516 |
517 |
}
|
517 |
518 |
|
518 |
519 |
my ($netamount, $invoicediff) = (0, 0);
|
519 |
520 |
my ($amount, $linetotal, $lastincomeaccno);
|
520 |
521 |
|
521 |
|
if ($form->{currency} eq $form->{defaultcurrency}) {
|
|
522 |
my ($currencies) = selectfirst_array_query($form, $dbh, qq|SELECT curr FROM defaults|);
|
|
523 |
my $defaultcurrency = (split m/:/, $currencies)[0];
|
|
524 |
|
|
525 |
if ($form->{currency} eq $defaultcurrency) {
|
522 |
526 |
$form->{exchangerate} = 1;
|
523 |
527 |
} else {
|
524 |
528 |
$exchangerate =
|
... | ... | |
638 |
642 |
$form->round_amount($form->{"sellprice_$i"} * $form->{exchangerate},
|
639 |
643 |
$decimalplaces);
|
640 |
644 |
|
|
645 |
next if $payments_only;
|
|
646 |
|
641 |
647 |
if ($form->{"inventory_accno_$i"} || $form->{"assembly_$i"}) {
|
642 |
648 |
|
643 |
649 |
# adjust parts onhand quantity
|
... | ... | |
767 |
773 |
$form->{amount}{ $form->{id} }{ $form->{AR} } *= -1;
|
768 |
774 |
|
769 |
775 |
# update exchangerate
|
770 |
|
if (($form->{currency} ne $form->{defaultcurrency}) && !$exchangerate) {
|
|
776 |
if (($form->{currency} ne $defaultcurrency) && !$exchangerate) {
|
771 |
777 |
$form->update_exchangerate($dbh, $form->{currency}, $form->{invdate},
|
772 |
778 |
$form->{exchangerate}, 0);
|
773 |
779 |
}
|
... | ... | |
777 |
783 |
foreach my $trans_id (keys %{ $form->{amount} }) {
|
778 |
784 |
foreach my $accno (keys %{ $form->{amount}{$trans_id} }) {
|
779 |
785 |
next unless ($form->{expense_inventory} =~ /$accno/);
|
780 |
|
if (
|
781 |
|
($form->{amount}{$trans_id}{$accno} =
|
782 |
|
$form->round_amount($form->{amount}{$trans_id}{$accno}, 2)
|
783 |
|
) != 0
|
784 |
|
) {
|
|
786 |
|
|
787 |
$form->{amount}{$trans_id}{$accno} = $form->round_amount($form->{amount}{$trans_id}{$accno}, 2);
|
|
788 |
|
|
789 |
if (!$payments_only && ($form->{amount}{$trans_id}{$accno} != 0)) {
|
785 |
790 |
$query =
|
786 |
791 |
qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, taxkey, project_id)
|
787 |
792 |
VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?,
|
... | ... | |
793 |
798 |
}
|
794 |
799 |
|
795 |
800 |
foreach my $accno (keys %{ $form->{amount}{$trans_id} }) {
|
796 |
|
if (
|
797 |
|
($form->{amount}{$trans_id}{$accno} =
|
798 |
|
$form->round_amount($form->{amount}{$trans_id}{$accno}, 2)
|
799 |
|
) != 0
|
800 |
|
) {
|
|
801 |
$form->{amount}{$trans_id}{$accno} = $form->round_amount($form->{amount}{$trans_id}{$accno}, 2);
|
|
802 |
|
|
803 |
if (!$payments_only && ($form->{amount}{$trans_id}{$accno} != 0)) {
|
801 |
804 |
$query =
|
802 |
805 |
qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, taxkey, project_id)
|
803 |
806 |
VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?,
|
... | ... | |
830 |
833 |
|
831 |
834 |
$exchangerate = 0;
|
832 |
835 |
|
833 |
|
if ($form->{currency} eq $form->{defaultcurrency}) {
|
|
836 |
if ($form->{currency} eq $defaultcurrency) {
|
834 |
837 |
$form->{"exchangerate_$i"} = 1;
|
835 |
838 |
} else {
|
836 |
839 |
$exchangerate =
|
... | ... | |
884 |
887 |
$diff = 0;
|
885 |
888 |
|
886 |
889 |
# update exchange rate
|
887 |
|
if (($form->{currency} ne $form->{defaultcurrency}) && !$exchangerate) {
|
|
890 |
if (($form->{currency} ne $defaultcurrency) && !$exchangerate) {
|
888 |
891 |
$form->update_exchangerate($dbh, $form->{currency},
|
889 |
892 |
$form->{"datepaid_$i"},
|
890 |
893 |
$form->{"exchangerate_$i"}, 0);
|
... | ... | |
892 |
895 |
}
|
893 |
896 |
}
|
894 |
897 |
|
|
898 |
if ($payments_only) {
|
|
899 |
$query = qq|UPDATE ar SET paid = ?, datepaid = ? WHERE id = ?|;
|
|
900 |
do_query($form, $dbh, $query, $form->{paid}, $form->{paid} ? conv_date($form->{datepaid}) : undef, conv_i($form->{id}));
|
|
901 |
|
|
902 |
if (!$provided_dbh) {
|
|
903 |
$dbh->commit();
|
|
904 |
$dbh->disconnect();
|
|
905 |
}
|
|
906 |
|
|
907 |
$main::lxdebug->leave_sub();
|
|
908 |
return;
|
|
909 |
}
|
|
910 |
|
895 |
911 |
# record exchange rate differences and gains/losses
|
896 |
912 |
foreach my $accno (keys %{ $form->{fx} }) {
|
897 |
913 |
foreach my $transdate (keys %{ $form->{fx}{$accno} }) {
|
... | ... | |
913 |
929 |
|
914 |
930 |
$amount = $netamount + $tax;
|
915 |
931 |
|
916 |
|
# set values which could be empty to 0
|
917 |
|
my $datepaid = conv_date($form->{paid});
|
918 |
|
my $duedate = conv_date($form->{duedate});
|
919 |
|
$deliverydate = conv_date($form->{deliverydate});
|
920 |
|
|
921 |
932 |
# fill in subject if there is none
|
922 |
933 |
$form->{subject} = qq|$form->{label} $form->{invnumber}|
|
923 |
934 |
unless $form->{subject};
|
... | ... | |
1023 |
1034 |
|
1024 |
1035 |
Common::webdav_folder($form) if ($main::webdav);
|
1025 |
1036 |
|
1026 |
|
my $rc = $dbh->commit;
|
1027 |
|
$dbh->disconnect;
|
|
1037 |
my $rc = 1;
|
|
1038 |
if (!$provided_dbh) {
|
|
1039 |
$dbh->commit();
|
|
1040 |
$dbh->disconnect();
|
|
1041 |
}
|
1028 |
1042 |
|
1029 |
1043 |
$main::lxdebug->leave_sub();
|
1030 |
1044 |
|
1031 |
1045 |
return $rc;
|
1032 |
1046 |
}
|
1033 |
1047 |
|
|
1048 |
sub _delete_payments {
|
|
1049 |
$main::lxdebug->enter_sub();
|
|
1050 |
|
|
1051 |
my ($self, $form, $dbh) = @_;
|
|
1052 |
|
|
1053 |
my (@delete_oids, $delete_next, $sth, $ref);
|
|
1054 |
|
|
1055 |
# Delete old payment entries from acc_trans.
|
|
1056 |
my $query =
|
|
1057 |
qq|SELECT at.oid, at.*, c.link
|
|
1058 |
FROM acc_trans at
|
|
1059 |
LEFT JOIN chart c ON (at.chart_id = c.id)
|
|
1060 |
WHERE (trans_id = ?)
|
|
1061 |
ORDER BY at.oid|;
|
|
1062 |
|
|
1063 |
$sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
|
|
1064 |
|
|
1065 |
while ($ref = $sth->fetchrow_hashref()) {
|
|
1066 |
if ($delete_next) {
|
|
1067 |
push @delete_oids, $ref->{oid};
|
|
1068 |
undef $delete_next;
|
|
1069 |
next;
|
|
1070 |
}
|
|
1071 |
|
|
1072 |
$ref->{LINKS} = { map { $_, 1 } split m/:/, $ref->{link} };
|
|
1073 |
|
|
1074 |
if ($ref->{fx_transaction} || ($ref->{LINKS}->{AR} && ($ref->{amount} >= 0))) {
|
|
1075 |
push @delete_oids, $ref->{oid};
|
|
1076 |
$delete_next = $ref->{LINKS}->{AR};
|
|
1077 |
}
|
|
1078 |
}
|
|
1079 |
|
|
1080 |
$sth->finish();
|
|
1081 |
|
|
1082 |
if (@delete_oids) {
|
|
1083 |
$query = qq|DELETE FROM acc_trans WHERE oid IN (| . join(", ", @delete_oids) . qq|)|;
|
|
1084 |
do_query($form, $dbh, $query);
|
|
1085 |
}
|
|
1086 |
|
|
1087 |
$main::lxdebug->leave_sub();
|
|
1088 |
}
|
|
1089 |
|
1034 |
1090 |
sub post_payment {
|
1035 |
|
$main::lxdebug->enter_sub() and my ($self, $myconfig, $form, $locale) = @_;
|
|
1091 |
$main::lxdebug->enter_sub();
|
|
1092 |
|
|
1093 |
my ($self, $myconfig, $form, $locale) = @_;
|
1036 |
1094 |
|
1037 |
1095 |
# connect to database, turn off autocommit
|
1038 |
1096 |
my $dbh = $form->dbconnect_noauto($myconfig);
|
1039 |
1097 |
|
1040 |
|
$form->{datepaid} = $form->{invdate};
|
|
1098 |
my (%payments, $old_form, $row, $item, $query, %keep_vars);
|
1041 |
1099 |
|
1042 |
|
# total payments, don't move we need it here
|
1043 |
|
for my $i ( 1 .. $form->{paidaccounts} ) {
|
1044 |
|
$form->{"paid_$i"} = $form->parse_amount($myconfig, $form->{"paid_$i"});
|
1045 |
|
$form->{"paid_$i"} *= -1 if $form->{type} eq "credit_note";
|
1046 |
|
$form->{"paid"} += $form->{"paid_$i"};
|
1047 |
|
$form->{"datepaid"} = $form->{"datepaid_$i"} if $form->{"datepaid_$i"};
|
1048 |
|
}
|
|
1100 |
my @prior;
|
|
1101 |
push @prior, selectall_hashref_query($form, $dbh, qq|SELECT id, paid, datepaid FROM ar WHERE id = ?|, $form->{id});
|
|
1102 |
push @prior, selectall_hashref_query($form, $dbh, qq|SELECT * FROM acc_trans WHERE trans_id = ? ORDER BY oid|, $form->{id});
|
1049 |
1103 |
|
1050 |
|
$form->{exchangerate} = $form->get_exchangerate($dbh, $form->{currency}, $form->{invdate}, "buy");
|
|
1104 |
$old_form = save_form();
|
1051 |
1105 |
|
1052 |
|
# record payments and offsetting AR
|
1053 |
|
for my $i (1 .. $form->{paidaccounts}) {
|
1054 |
|
if ($form->{"paid_$i"}) {
|
|
1106 |
# Delete all entries in acc_trans from prior payments.
|
|
1107 |
$self->_delete_payments($form, $dbh);
|
1055 |
1108 |
|
1056 |
|
my ($accno) = split /--/, $form->{"AR_paid_$i"};
|
1057 |
|
$form->{"datepaid_$i"} = $form->{invdate} unless ($form->{"datepaid_$i"});
|
1058 |
|
$form->{datepaid} = $form->{"datepaid_$i"};
|
|
1109 |
my @after_dp;
|
|
1110 |
push @after_dp, selectall_hashref_query($form, $dbh, qq|SELECT * FROM acc_trans WHERE trans_id = ? ORDER BY oid|, $form->{id});
|
1059 |
1111 |
|
1060 |
|
$exchangerate = 0;
|
1061 |
|
if (($form->{currency} eq $form->{defaultcurrency}) || ($form->{defaultcurrency} eq "")) {
|
1062 |
|
$form->{"exchangerate_$i"} = 1;
|
1063 |
|
} else {
|
1064 |
|
$exchangerate = $form->check_exchangerate($myconfig, $form->{currency}, $form->{"datepaid_$i"}, 'buy');
|
1065 |
|
$form->{"exchangerate_$i"} = ($exchangerate) ? $exchangerate : $form->parse_amount($myconfig, $form->{"exchangerate_$i"});
|
1066 |
|
}
|
|
1112 |
# Save the new payments the user made before cleaning up $form.
|
|
1113 |
map { $payments{$_} = $form->{$_} } grep m/^datepaid_\d+$|^memo_\d+$|^source_\d+$|^exchangerate_\d+$|^paid_\d+$|^AR_paid_\d+$|^paidaccounts$/, keys %{ $form };
|
1067 |
1114 |
|
1068 |
|
# record AR
|
1069 |
|
$amount = $form->round_amount($form->{"paid_$i"} * $form->{"exchangerate"}, 2);
|
|
1115 |
# Clean up $form so that old content won't tamper the results.
|
|
1116 |
%keep_vars = map { $_, 1 } qw(login password id);
|
|
1117 |
map { delete $form->{$_} unless $keep_vars{$_} } keys %{ $form };
|
1070 |
1118 |
|
1071 |
|
$query =
|
1072 |
|
qq|DELETE FROM acc_trans
|
1073 |
|
WHERE (trans_id = ?)
|
1074 |
|
AND (chart_id = (SELECT id FROM chart WHERE accno = ?))
|
1075 |
|
AND (amount = ?) AND (transdate = ?)|;
|
1076 |
|
do_query($form, $dbh, $query, $form->{id}, $form->{AR}, $amount, conv_date($form->{"datepaid_$i"}));
|
1077 |
|
$query =
|
1078 |
|
qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id, taxkey)
|
1079 |
|
VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?,
|
1080 |
|
(SELECT taxkey_id FROM chart WHERE accno = ?))|;
|
1081 |
|
do_query($form, $dbh, $query, $form->{id}, $form->{AR}, $amount, $form->{"datepaid_$i"}, conv_i($form->{"globalproject_id"}), $accno);
|
|
1119 |
# Retrieve the invoice from the database.
|
|
1120 |
$self->retrieve_invoice($myconfig, $form);
|
1082 |
1121 |
|
1083 |
|
# record payment
|
1084 |
|
$form->{"paid_$i"} *= -1;
|
|
1122 |
# Set up the content of $form in the way that IR::post_invoice() expects.
|
|
1123 |
$form->{exchangerate} = $form->format_amount($myconfig, $form->{exchangerate});
|
1085 |
1124 |
|
1086 |
|
$query =
|
1087 |
|
qq|DELETE FROM acc_trans
|
1088 |
|
WHERE (trans_id = ?)
|
1089 |
|
AND (chart_id = (SELECT id FROM chart WHERE accno = ?))
|
1090 |
|
AND (amount = ?) AND (transdate = ?) AND (source = ?) AND (memo = ?)|;
|
1091 |
|
do_query($form, $dbh, $query, $form->{id}, $accno, $form->{"paid_$i"}, $form->{"datepaid_$i"}, $form->{"source_$i"}, $form->{"memo_$i"});
|
|
1125 |
for $row (1 .. scalar @{ $form->{invoice_details} }) {
|
|
1126 |
$item = $form->{invoice_details}->[$row - 1];
|
1092 |
1127 |
|
1093 |
|
$query =
|
1094 |
|
qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, source, memo, project_id, taxkey)
|
1095 |
|
VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?, ?,
|
1096 |
|
(SELECT taxkey_id FROM chart WHERE accno = ?))|;
|
1097 |
|
do_query($form, $dbh, $query, $form->{id}, $accno, $form->{"paid_$i"}, $form->{"datepaid_$i"}, $form->{"source_$i"}, $form->{"memo_$i"},
|
1098 |
|
conv_i($form->{"globalproject_id"}), $accno);
|
|
1128 |
map { $item->{$_} = $form->format_amount($myconfig, $item->{$_}) } qw(qty sellprice discount);
|
1099 |
1129 |
|
1100 |
|
# gain/loss
|
1101 |
|
$amount = $form->{"paid_$i"} * $form->{exchangerate} - $form->{"paid_$i"} * $form->{"exchangerate_$i"};
|
1102 |
|
$form->{fx}{ $form->{($amount > 0 ? 'fxgain_accno' : 'fxloss_accno')} }{ $form->{"datepaid_$i"} } += $amount;
|
|
1130 |
map { $form->{"${_}_${row}"} = $item->{$_} } keys %{ $item };
|
|
1131 |
}
|
1103 |
1132 |
|
1104 |
|
$diff = 0;
|
|
1133 |
$form->{rowcount} = scalar @{ $form->{invoice_details} };
|
1105 |
1134 |
|
1106 |
|
# update exchange rate
|
1107 |
|
if (($form->{currency} ne $form->{defaultcurrency}) && !$exchangerate) {
|
1108 |
|
$form->update_exchangerate($dbh, $form->{currency}, $form->{"datepaid_$i"}, $form->{"exchangerate_$i"}, 0);
|
1109 |
|
}
|
|
1135 |
delete @{$form}{qw(invoice_details paidaccounts storno paid)};
|
1110 |
1136 |
|
1111 |
|
}
|
1112 |
|
}
|
|
1137 |
# Restore the payment options from the user input.
|
|
1138 |
map { $form->{$_} = $payments{$_} } keys %payments;
|
1113 |
1139 |
|
1114 |
|
# record exchange rate differences and gains/losses
|
1115 |
|
foreach my $accno (keys %{ $form->{fx} }) {
|
1116 |
|
foreach my $transdate (keys %{ $form->{fx}{$accno} }) {
|
|
1140 |
# Get the AP accno (which is normally done by Form::create_links()).
|
|
1141 |
$query =
|
|
1142 |
qq|SELECT c.accno
|
|
1143 |
FROM acc_trans at
|
|
1144 |
LEFT JOIN chart c ON (at.chart_id = c.id)
|
|
1145 |
WHERE (trans_id = ?)
|
|
1146 |
AND ((c.link = 'AR') OR (c.link LIKE '%:AR') OR (c.link LIKE 'AR:%'))
|
|
1147 |
ORDER BY at.oid
|
|
1148 |
LIMIT 1|;
|
1117 |
1149 |
|
1118 |
|
if ($form->{fx}{$accno}{$transdate} = $form->round_amount($form->{fx}{$accno}{$transdate}, 2)) { # '=' is no typo, it's an assignment
|
1119 |
|
$query =
|
1120 |
|
qq|DELETE FROM acc_trans
|
1121 |
|
WHERE (trans_id = ?)
|
1122 |
|
AND (chart_id = (SELECT c.id FROM chart c WHERE c.accno = ?))
|
1123 |
|
AND (amount = ?) AND (transdate = ?) AND (cleared = ?) AND (fx_transaction = ?)|;
|
1124 |
|
do_query($form, $dbh, $query, $form->{id}, $accno, $form->{fx}{$accno}{$transdate}, $transdate, 0, 1);
|
1125 |
|
$query =
|
1126 |
|
qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, cleared, fx_transaction, project_id, taxkey)
|
1127 |
|
VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?, ?,
|
1128 |
|
(SELECT taxkey_id FROM chart WHERE accno = ?))|;
|
1129 |
|
do_query($form, $dbh, $query, $form->{id}, $accno, $form->{fx}{$accno}{$transdate}, $transdate, 0, 1, conv_i($form->{"globalproject_id"}), $accno);
|
1130 |
|
}
|
|
1150 |
($form->{AR}) = selectfirst_array_query($form, $dbh, $query, conv_i($form->{id}));
|
1131 |
1151 |
|
1132 |
|
}
|
|
1152 |
# Post the new payments.
|
|
1153 |
$self->post_invoice($myconfig, $form, $dbh, 1);
|
|
1154 |
|
|
1155 |
restore_form($old_form);
|
|
1156 |
|
|
1157 |
my @after;
|
|
1158 |
push @after, selectall_hashref_query($form, $dbh, qq|SELECT id, paid, datepaid FROM ar WHERE id = ?|, $form->{id});
|
|
1159 |
push @after, selectall_hashref_query($form, $dbh, qq|SELECT * FROM acc_trans WHERE trans_id = ? ORDER BY oid|, $form->{id});
|
|
1160 |
|
|
1161 |
foreach my $rows (@prior, @after_dp, @after) {
|
|
1162 |
map { delete @{$_}{qw(itime mtime)} } @{ $rows };
|
1133 |
1163 |
}
|
1134 |
1164 |
|
1135 |
|
# save AR record
|
1136 |
|
delete $form->{datepaid} unless $form->{paid};
|
|
1165 |
map { $main::lxdebug->dump_sql_result(0, 'davor ', $_) } @prior;
|
|
1166 |
map { $main::lxdebug->dump_sql_result(0, 'nachDP', $_) } @after_dp;
|
|
1167 |
map { $main::lxdebug->dump_sql_result(0, 'danach', $_) } @after;
|
1137 |
1168 |
|
1138 |
|
my $query = qq|UPDATE ar SET paid = ?, datepaid = ? WHERE id = ?|;
|
1139 |
|
do_query($form, $dbh, $query, $form->{"paid"}, conv_date($form->{"datepaid"}), conv_i($form->{"id"}));
|
|
1169 |
my $rc = 1;
|
|
1170 |
# my $rc = $dbh->commit();
|
|
1171 |
$dbh->disconnect();
|
1140 |
1172 |
|
1141 |
|
my $rc = $dbh->commit;
|
1142 |
|
$dbh->disconnect;
|
|
1173 |
$main::lxdebug->leave_sub();
|
1143 |
1174 |
|
1144 |
|
$main::lxdebug->leave_sub() and return $rc;
|
|
1175 |
return $rc;
|
1145 |
1176 |
}
|
1146 |
1177 |
|
1147 |
1178 |
sub process_assembly {
|
Merge der Änderungen zwischen https://ls-bs-si1.bs.linet-services.de/svn/prog/vendor/lxoffice-erp/2.4.2 und https://ls-bs-si1.bs.linet-services.de/svn/prog/vendor/lxoffice-erp/unstable-rev-2530