Revision 6b1f644c
Von Moritz Bunkus vor etwa 14 Jahren hinzugefügt
SL/SEPA.pm | ||
---|---|---|
16 | 16 |
my $form = $main::form; |
17 | 17 |
|
18 | 18 |
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); |
19 |
my $arap = $params{vc} eq 'customer' ? 'ar' : 'ap'; |
|
20 |
my $vc = $params{vc} eq 'customer' ? 'customer' : 'vendor'; |
|
19 | 21 |
|
20 | 22 |
my $query = |
21 | 23 |
qq| |
22 |
SELECT ap.id, ap.invnumber, ap.vendor_id, ap.amount AS invoice_amount, ap.invoice,
|
|
23 |
v.name AS vendorname, ap.duedate as duedate,
|
|
24 |
SELECT ${arap}.id, ${arap}.invnumber, ${arap}.${vc}_id, ${arap}.amount AS invoice_amount, ${arap}.invoice,
|
|
25 |
vc.name AS vcname, ${arap}.duedate as duedate,
|
|
24 | 26 |
|
25 |
COALESCE(v.iban, '') <> '' AND COALESCE(v.bic, '') <> '' AS vendor_bank_info_ok,
|
|
27 |
COALESCE(vc.iban, '') <> '' AND COALESCE(vc.bic, '') <> '' AS vc_bank_info_ok,
|
|
26 | 28 |
|
27 |
ap.amount - ap.paid - COALESCE(open_transfers.amount, 0) AS open_amount
|
|
29 |
${arap}.amount - ${arap}.paid - COALESCE(open_transfers.amount, 0) AS open_amount
|
|
28 | 30 |
|
29 |
FROM ap
|
|
30 |
LEFT JOIN vendor v ON (ap.vendor_id = v.id)
|
|
31 |
FROM ${arap}
|
|
32 |
LEFT JOIN ${vc} vc ON (${arap}.${vc}_id = vc.id)
|
|
31 | 33 |
LEFT JOIN (SELECT sei.ap_id, SUM(sei.amount) AS amount |
32 | 34 |
FROM sepa_export_items sei |
33 | 35 |
LEFT JOIN sepa_export se ON (sei.sepa_export_id = se.id) |
34 | 36 |
WHERE NOT se.closed |
37 |
AND (se.vc = '${vc}') |
|
35 | 38 |
GROUP BY sei.ap_id) |
36 |
AS open_transfers ON (ap.id = open_transfers.ap_id)
|
|
39 |
AS open_transfers ON (${arap}.id = open_transfers.ap_id)
|
|
37 | 40 |
|
38 |
WHERE ap.amount > (COALESCE(open_transfers.amount, 0) + ap.paid)
|
|
41 |
WHERE ${arap}.amount > (COALESCE(open_transfers.amount, 0) + ${arap}.paid)
|
|
39 | 42 |
|
40 |
ORDER BY lower(v.name) ASC, lower(ap.invnumber) ASC
|
|
43 |
ORDER BY lower(vc.name) ASC, lower(${arap}.invnumber) ASC
|
|
41 | 44 |
|; |
42 | 45 |
|
43 | 46 |
my $results = selectall_hashref_query($form, $dbh, $query); |
bin/mozilla/sepa.pl | ||
---|---|---|
20 | 20 |
|
21 | 21 |
my $form = $main::form; |
22 | 22 |
my $locale = $main::locale; |
23 |
my $vc = $form->{vc} eq 'customer' ? 'customer' : 'vendor'; |
|
23 | 24 |
|
24 |
$form->{title} = $locale->text('Prepare bank transfer via SEPA XML'); |
|
25 |
$form->{title} = $vc eq 'customer' ? $::locale->text('Prepare bank collection via SEPA XML') : $locale->text('Prepare bank transfer via SEPA XML');
|
|
25 | 26 |
|
26 | 27 |
my $bank_accounts = SL::BankAccount->list(); |
27 | 28 |
|
... | ... | |
29 | 30 |
$form->error($locale->text('You have not added bank accounts yet.')); |
30 | 31 |
} |
31 | 32 |
|
32 |
my $invoices = SL::SEPA->retrieve_open_invoices(); |
|
33 |
my $invoices = SL::SEPA->retrieve_open_invoices(vc => $vc);
|
|
33 | 34 |
|
34 | 35 |
if (!scalar @{ $invoices }) { |
35 | 36 |
$form->show_generic_information($locale->text('Either there are no open invoices, or you have already initiated bank transfers ' . |
... | ... | |
44 | 45 |
print $form->parse_html_template('sepa/bank_transfer_add', |
45 | 46 |
{ 'INVOICES' => $invoices, |
46 | 47 |
'BANK_ACCOUNTS' => $bank_accounts, |
47 |
'bank_account_label' => $bank_account_label_sub, }); |
|
48 |
'bank_account_label' => $bank_account_label_sub, |
|
49 |
'vc' => $vc, |
|
50 |
}); |
|
48 | 51 |
|
49 | 52 |
$main::lxdebug->leave_sub(); |
50 | 53 |
} |
locale/de/all | ||
---|---|---|
197 | 197 |
'Are you sure you want to update the prices' => 'Sind Sie sicher, dass Sie die Preise aktualisieren wollen?', |
198 | 198 |
'Article Code' => 'Artikelk?rzel', |
199 | 199 |
'Article Code missing!' => 'Artikelk?rzel fehlt', |
200 |
'Artikel' => '', |
|
200 | 201 |
'As a result, the saved onhand values of the present goods can be stored into a warehouse designated by you, or will be reset for a proper warehouse tracking' => 'Als Konsequenz können die gespeicherten Mengen entweder in ein Lager überführt werden, oder für eine frische Lagerverwaltung resettet werden.', |
201 | 202 |
'Assemblies' => 'Erzeugnisse', |
202 | 203 |
'Assembly Description' => 'Erzeugnis-Beschreibung', |
... | ... | |
242 | 243 |
'Bank Connections' => 'Bankverbindungen', |
243 | 244 |
'Bank accounts' => 'Bankkonten', |
244 | 245 |
'Bank code' => 'Bankleitzahl', |
246 |
'Bank collection via SEPA' => 'Bankeinzug via SEPA', |
|
247 |
'Bank collections via SEPA' => 'Bankeinz?ge via SEPA', |
|
245 | 248 |
'Bank transfer amount' => '?berweisungssumme', |
246 | 249 |
'Bank transfer payment list for export #1' => '?berweisungszahlungsliste f?r SEPA-Export #1', |
247 | 250 |
'Bank transfer via SEPA' => '?berweisung via SEPA', |
... | ... | |
595 | 598 |
'EAN-Code' => 'EAN-Code', |
596 | 599 |
'EB-Wert' => 'EB-Wert', |
597 | 600 |
'EK' => 'EK', |
598 |
'EK-Preis' => 'Purchase price', |
|
599 | 601 |
'ELSE' => 'Zusatz', |
600 | 602 |
'ELSTER Export (Taxbird)' => 'ELSTER-Export nach Taxbird', |
601 | 603 |
'ELSTER Export (Winston)' => 'ELSTER Export nach Winston', |
... | ... | |
1061 | 1063 |
'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein H?ndler gefunden', |
1062 | 1064 |
'No action defined.' => 'Keine Aktion definiert.', |
1063 | 1065 |
'No backup file has been uploaded.' => 'Es wurde keine Sicherungsdatei hochgeladen.', |
1066 |
'No bank information has been entered in this customer\'s master data entry. You cannot create bank collections unless you enter bank information.' => 'F?r diesen Kunden wurden in seinen Stammdaten keine Kontodaten hinterlegt. Solange dies nicht geschehen ist, k?nnen Sie keine ?berweisungen f?r den Lieferanten anlegen.', |
|
1064 | 1067 |
'No bank information has been entered in this vendor\'s master data entry. You cannot create bank transfers unless you enter bank information.' => 'F?r diesen Lieferanten wurden in seinen Stammdaten keine Kontodaten hinterlegt. Solange dies nicht geschehen ist, k?nnen Sie keine ?berweisungen f?r den Lieferanten anlegen.', |
1065 | 1068 |
'No bins have been added to this warehouse yet.' => 'Es wurden zu diesem Lager noch keine Lagerplätze angelegt.', |
1066 | 1069 |
'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgew?hlt.', |
... | ... | |
1219 | 1222 |
'Please select a vendor from the list below.' => 'Bitte einen H?ndler aus der Liste ausw?hlen', |
1220 | 1223 |
'Please select the chart of accounts this installation is using from the list below.' => 'Bitte wählen Sie den Kontenrahmen aus, der bei dieser Installation verwendet wird.', |
1221 | 1224 |
'Please select the database you want to backup' => 'Bitte wählen Sie die zu sichernde Datenbank gefunden', |
1225 |
'Please select the destination bank account for the collections:' => 'Bitte w?hlen Sie das Bankkonto als Ziel f?r die Einz?ge aus:', |
|
1222 | 1226 |
'Please select the source bank account for the transfers:' => 'Bitte w?hlen Sie das Bankkonto als Quelle f?r die ?berweisungen aus:', |
1223 | 1227 |
'Please seletct the dataset you want to delete:' => 'Bitte wählen Sie die zu löschende Datenbank aus:', |
1224 | 1228 |
'Please specify a description for the warehouse designated for these goods.' => 'Bitte geben Sie den Namen des Ziellagers für die übernommenen Daten ein.', |
... | ... | |
1236 | 1240 |
'Preis' => 'Preis', |
1237 | 1241 |
'Preisgruppe' => 'Preisgruppe', |
1238 | 1242 |
'Preisklasse' => 'Preisgruppe', |
1243 |
'Prepare bank collection via SEPA XML' => 'Einzug via SEPA XML vorbereiten', |
|
1239 | 1244 |
'Prepare bank transfer via SEPA XML' => '?berweisung via SEPA XML vorbereiten', |
1240 | 1245 |
'Prepayment' => 'Vorauszahlung', |
1241 | 1246 |
'Preview' => 'Druckvorschau', |
menu.ini | ||
---|---|---|
345 | 345 |
module=rc.pl |
346 | 346 |
action=reconciliation |
347 | 347 |
|
348 |
[Cash--Bank collection via SEPA] |
|
349 |
module=sepa.pl |
|
350 |
action=bank_transfer_add |
|
351 |
vc=customer |
|
352 |
|
|
348 | 353 |
[Cash--Bank transfer via SEPA] |
349 | 354 |
module=sepa.pl |
350 | 355 |
action=bank_transfer_add |
356 |
vc=vendor |
|
351 | 357 |
|
352 | 358 |
[Cash--Reports] |
353 | 359 |
module=menu.pl |
... | ... | |
365 | 371 |
action=report |
366 | 372 |
report=payments |
367 | 373 |
|
374 |
[Cash--Reports--Bank collections via SEPA] |
|
375 |
module=sepa.pl |
|
376 |
action=bank_transfer_search |
|
377 |
vc=customer |
|
378 |
|
|
368 | 379 |
[Cash--Reports--Bank transfers via SEPA] |
369 | 380 |
module=sepa.pl |
370 | 381 |
action=bank_transfer_search |
382 |
vc=vendor |
|
371 | 383 |
|
372 | 384 |
[Reports] |
373 | 385 |
|
templates/webpages/sepa/bank_transfer_add.html | ||
---|---|---|
1 | 1 |
[%- USE T8 %] |
2 | 2 |
[% USE HTML %][% USE LxERP %] |
3 |
[% IF vc == 'vendor' %] |
|
4 |
[% SET is_vendor = 1 %] |
|
5 |
[% SET arap = 'ap' %] |
|
6 |
[% SET iris = 'ir' %] |
|
7 |
[% ELSE %] |
|
8 |
[% SET is_vendor = 0 %] |
|
9 |
[% SET arap = 'ar' %] |
|
10 |
[% SET iris = 'is' %] |
|
11 |
[%- END %] |
|
3 | 12 |
<body> |
4 | 13 |
|
5 | 14 |
<p><div class="listtop">[% title %]</div></p> |
6 | 15 |
|
7 | 16 |
<form action="sepa.pl" method="post"> |
8 | 17 |
<p> |
9 |
[% 'Please select the source bank account for the transfers:' | $T8 %] |
|
18 |
[%- IF is_vendor %] |
|
19 |
[% 'Please select the source bank account for the transfers:' | $T8 %] |
|
20 |
[%- ELSE %] |
|
21 |
[% 'Please select the destination bank account for the collections:' | $T8 %] |
|
22 |
[%- END %] |
|
10 | 23 |
<br> |
11 | 24 |
[%- INCLUDE generic/multibox.html |
12 | 25 |
name = 'bank_account.id', |
... | ... | |
20 | 33 |
<table border="0"> |
21 | 34 |
<tr> |
22 | 35 |
<th class="listheading" align="center"><input type="checkbox" id="select_all"></th> |
23 |
<th class="listheading">[% 'Vendor' | $T8 %]</th>
|
|
36 |
<th class="listheading">[% IF is_vendor %][% 'Vendor' | $T8 %][%- ELSE %][%- LxERP.t8('Customer') %][%- END %]</th>
|
|
24 | 37 |
<th class="listheading">[% 'Invoice' | $T8 %]</th> |
25 | 38 |
<th class="listheading" align="right">[% 'Amount' | $T8 %]</th> |
26 | 39 |
<th class="listheading" align="right">[% 'Open amount' | $T8 %]</th> |
... | ... | |
30 | 43 |
</tr> |
31 | 44 |
|
32 | 45 |
[%- FOREACH invoice = INVOICES %] |
33 |
<input type="hidden" name="bank_transfers[+].ap_id" value="[% HTML.escape(invoice.id) %]">
|
|
46 |
<input type="hidden" name="bank_transfers[+].[% arap %]_id" value="[% HTML.escape(invoice.id) %]">
|
|
34 | 47 |
|
35 | 48 |
<tr class="listrow[% loop.count % 2 %]"> |
36 | 49 |
<td align="center"> |
37 |
[%- IF invoice.vendor_bank_info_ok %]
|
|
50 |
[%- IF invoice.vc_bank_info_ok %]
|
|
38 | 51 |
<input type="checkbox" name="bank_transfers[].selected" value="1"> |
39 | 52 |
[%- END %] |
40 | 53 |
</td> |
41 | 54 |
<td> |
42 |
[%- IF loop.first || (previous_vendorname != invoice.vendorname) %]
|
|
43 |
<a href="ct.pl?action=edit&db=vendor&id=[% HTML.url(invoice.vendor_id) %]&callback=[% HTML.url('sepa.pl?action=bank_transfer_add') %]">
|
|
44 |
[%- GET HTML.escape(invoice.vendorname);
|
|
45 |
SET previous_vendorname = invoice.vendorname;
|
|
46 |
IF !invoice.vendor_bank_info_ok;
|
|
55 |
[%- IF loop.first || (previous_vcname != invoice.vcname) %]
|
|
56 |
<a href="ct.pl?action=edit&db=[% vc %]&id=[% HTML.url(invoice.vc_id) %]&callback=[% HTML.url('sepa.pl?action=bank_transfer_add&vc=' _ vc) %]">
|
|
57 |
[%- GET HTML.escape(invoice.vcname);
|
|
58 |
SET previous_vcname = invoice.vcname;
|
|
59 |
IF !invoice.vc_bank_info_ok;
|
|
47 | 60 |
GET ' <sup>(1)</sup>'; |
48 |
SET show_vendor_bank_info_footnote = '1';
|
|
61 |
SET show_vc_bank_info_footnote = '1';
|
|
49 | 62 |
END; -%] |
50 | 63 |
</a> |
51 | 64 |
[%- END -%] |
52 | 65 |
</td> |
53 | 66 |
|
54 | 67 |
<td> |
55 |
<a href="[% IF invoice.invoice %]ir[% ELSE %]ap[% END %].pl?action=edit&id=[% HTML.escape(invoice.id) %]">
|
|
68 |
<a href="[% IF invoice.invoice %][% iris %][% ELSE %][% arap %][% END %].pl?action=edit&id=[% HTML.escape(invoice.id) %]">
|
|
56 | 69 |
[% HTML.escape(invoice.invnumber) %] |
57 | 70 |
</a> |
58 | 71 |
</td> |
... | ... | |
69 | 82 |
</table> |
70 | 83 |
</p> |
71 | 84 |
|
72 |
[%- IF show_vendor_bank_info_footnote %]
|
|
85 |
[%- IF show_vc_bank_info_footnote %]
|
|
73 | 86 |
<p> |
74 |
<sup>(1)</sup> [%- 'No bank information has been entered in this vendor\'s master data entry. You cannot create bank transfers unless you enter bank information.' | $T8 %] |
|
87 |
<sup>(1)</sup> |
|
88 |
[%- IF is_vendor %] |
|
89 |
[%- 'No bank information has been entered in this vendor\'s master data entry. You cannot create bank transfers unless you enter bank information.' | $T8 %] |
|
90 |
[%- ELSE %] |
|
91 |
[%- 'No bank information has been entered in this customer\'s master data entry. You cannot create bank collections unless you enter bank information.' | $T8 %] |
|
92 |
[%- END %] |
|
75 | 93 |
</p> |
76 | 94 |
[%- END %] |
77 | 95 |
|
... | ... | |
80 | 98 |
</p> |
81 | 99 |
|
82 | 100 |
<input type="hidden" name="action" value="dispatcher"> |
101 |
<input type="hidden" name="vc" value="[%- HTML.escape(vc) %]"> |
|
83 | 102 |
</form> |
84 | 103 |
|
85 | 104 |
<script type="text/javascript" src="js/jquery.js"></script> |
Auch abrufbar als: Unified diff
Unterscheidung Bankeinzug/Überweisung in erster Maske (Auswahl Kunden/Lieferanten)