Revision f63df59d
Von Moritz Bunkus vor fast 14 Jahren hinzugefügt
SL/SEPA.pm | ||
---|---|---|
56 | 56 |
my $self = shift; |
57 | 57 |
my %params = @_; |
58 | 58 |
|
59 |
Common::check_params(\%params, qw(employee bank_transfers)); |
|
59 |
Common::check_params(\%params, qw(employee bank_transfers vc));
|
|
60 | 60 |
|
61 | 61 |
my $myconfig = \%main::myconfig; |
62 | 62 |
my $form = $main::form; |
63 |
my $arap = $params{vc} eq 'customer' ? 'ar' : 'ap'; |
|
64 |
my $vc = $params{vc} eq 'customer' ? 'customer' : 'vendor'; |
|
65 |
my $ARAP = uc $arap; |
|
63 | 66 |
|
64 | 67 |
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); |
65 | 68 |
|
66 | 69 |
my ($export_id) = selectfirst_array_query($form, $dbh, qq|SELECT nextval('sepa_export_id_seq')|); |
67 | 70 |
my $query = |
68 |
qq|INSERT INTO sepa_export (id, employee_id) |
|
71 |
qq|INSERT INTO sepa_export (id, employee_id, vc)
|
|
69 | 72 |
VALUES (?, (SELECT id |
70 | 73 |
FROM employee |
71 |
WHERE login = ?))|; |
|
72 |
do_query($form, $dbh, $query, $export_id, $params{employee}); |
|
74 |
WHERE login = ?), ?)|;
|
|
75 |
do_query($form, $dbh, $query, $export_id, $params{employee}, $vc);
|
|
73 | 76 |
|
74 | 77 |
my $q_item_id = qq|SELECT nextval('id')|; |
75 | 78 |
my $h_item_id = prepare_query($form, $dbh, $q_item_id); |
76 | 79 |
|
77 | 80 |
my $q_insert = |
78 |
qq|INSERT INTO sepa_export_items (id, sepa_export_id, ap_id, chart_id,
|
|
81 |
qq|INSERT INTO sepa_export_items (id, sepa_export_id, ${arap}_id, chart_id,
|
|
79 | 82 |
amount, requested_execution_date, reference, end_to_end_id, |
80 |
our_iban, our_bic, vendor_iban, vendor_bic)
|
|
83 |
our_iban, our_bic, vc_iban, vc_bic)
|
|
81 | 84 |
VALUES (?, ?, ?, ?, |
82 | 85 |
?, ?, ?, ?, |
83 | 86 |
?, ?, ?, ?)|; |
84 | 87 |
my $h_insert = prepare_query($form, $dbh, $q_insert); |
85 | 88 |
|
86 | 89 |
my $q_reference = |
87 |
qq|SELECT ap.invnumber, |
|
90 |
qq|SELECT arap.invnumber,
|
|
88 | 91 |
(SELECT COUNT(at.*) |
89 | 92 |
FROM acc_trans at |
90 | 93 |
LEFT JOIN chart c ON (at.chart_id = c.id) |
91 | 94 |
WHERE (at.trans_id = ?) |
92 |
AND (c.link LIKE '%AP_paid%'))
|
|
95 |
AND (c.link LIKE '%${ARAP}_paid%'))
|
|
93 | 96 |
+ |
94 | 97 |
(SELECT COUNT(sei.*) |
95 | 98 |
FROM sepa_export_items sei |
96 | 99 |
WHERE (sei.ap_id = ?)) |
97 | 100 |
AS num_payments |
98 |
FROM ap |
|
101 |
FROM ${arap} arap
|
|
99 | 102 |
WHERE id = ?|; |
100 | 103 |
my $h_reference = prepare_query($form, $dbh, $q_reference); |
101 | 104 |
|
... | ... | |
103 | 106 |
|
104 | 107 |
foreach my $transfer (@{ $params{bank_transfers} }) { |
105 | 108 |
if (!$transfer->{reference}) { |
106 |
do_statement($form, $h_reference, $q_reference, (conv_i($transfer->{ap_id})) x 3);
|
|
109 |
do_statement($form, $h_reference, $q_reference, (conv_i($transfer->{"${arap}_id"})) x 3);
|
|
107 | 110 |
|
108 | 111 |
my ($invnumber, $num_payments) = $h_reference->fetchrow_array(); |
109 | 112 |
$num_payments++; |
... | ... | |
121 | 124 |
$end_to_end_id .= $item_id; |
122 | 125 |
$end_to_end_id = substr $end_to_end_id, 0, 35; |
123 | 126 |
|
124 |
my @values = ($item_id, $export_id, |
|
125 |
conv_i($transfer->{ap_id}), conv_i($transfer->{chart_id}),
|
|
126 |
$transfer->{amount}, conv_date($transfer->{requested_execution_date}), |
|
127 |
$transfer->{reference}, $end_to_end_id, |
|
128 |
map { my $pfx = $_; map { $transfer->{"${pfx}_${_}"} } qw(iban bic) } qw(our vendor));
|
|
127 |
my @values = ($item_id, $export_id,
|
|
128 |
conv_i($transfer->{"${arap}_id"}), conv_i($transfer->{chart_id}),
|
|
129 |
$transfer->{amount}, conv_date($transfer->{requested_execution_date}),
|
|
130 |
$transfer->{reference}, $end_to_end_id,
|
|
131 |
map { my $pfx = $_; map { $transfer->{"${pfx}_${_}"} } qw(iban bic) } qw(our vc));
|
|
129 | 132 |
|
130 | 133 |
do_statement($form, $h_insert, $q_insert, @values); |
131 | 134 |
} |
Auch abrufbar als: Unified diff
Unterscheidung Bankeinzug/Überweisung beim Erstellen der SEPA-Einträge