Revision a71e716f
Von Moritz Bunkus vor 7 Monaten hinzugefügt
SL/SEPA/XML.pm | ||
---|---|---|
134 | 134 |
my $xml = XML::Writer->new(OUTPUT => \$output, |
135 | 135 |
DATA_MODE => 1, |
136 | 136 |
DATA_INDENT => 2, |
137 |
ENCODING => 'utf-8');
|
|
137 |
ENCODING => 'UTF-8');
|
|
138 | 138 |
|
139 | 139 |
my @now = localtime; |
140 | 140 |
my $time_zone = strftime "%z", @now; |
... | ... | |
143 | 143 |
my $is_coll = $self->{collection}; |
144 | 144 |
my $cd_src = $is_coll ? 'Cdtr' : 'Dbtr'; |
145 | 145 |
my $cd_dst = $is_coll ? 'Dbtr' : 'Cdtr'; |
146 |
my $pain_id = $is_coll ? 'pain.008.001.02' : 'pain.001.001.03';
|
|
146 |
my $pain_id = $is_coll ? 'pain.008.001.08' : 'pain.001.001.09';
|
|
147 | 147 |
my $pain_elmt = $is_coll ? 'CstmrDrctDbtInitn' : 'CstmrCdtTrfInitn'; |
148 | 148 |
my @pii_base = (strftime('PII%Y%m%d%H%M%S', @now), rand(1000000000)); |
149 | 149 |
|
... | ... | |
194 | 194 |
} |
195 | 195 |
$xml->endTag('PmtTpInf'); |
196 | 196 |
|
197 |
$xml->dataElement($is_coll ? 'ReqdColltnDt' : 'ReqdExctnDt', $master_transaction->get('execution_date')); |
|
197 |
if ($is_coll) { |
|
198 |
$xml->dataElement('ReqdColltnDt', $master_transaction->get('execution_date')); |
|
199 |
} else { |
|
200 |
$xml->startTag('ReqdExctnDt'); |
|
201 |
$xml->dataElement('Dt', $master_transaction->get('execution_date')); |
|
202 |
$xml->endTag('ReqdExctnDt'); |
|
203 |
} |
|
204 |
|
|
198 | 205 |
$xml->startTag($cd_src); |
199 | 206 |
$xml->dataElement('Nm', encode('UTF-8', substr($self->{company}, 0, 70))); |
200 | 207 |
$xml->endTag($cd_src); |
... | ... | |
207 | 214 |
|
208 | 215 |
$xml->startTag($cd_src . 'Agt'); |
209 | 216 |
$xml->startTag('FinInstnId'); |
210 |
$xml->dataElement('BIC', $master_transaction->get('src_bic', 20)); |
|
217 |
$xml->dataElement('BICFI', $master_transaction->get('src_bic', 20));
|
|
211 | 218 |
$xml->endTag('FinInstnId'); |
212 | 219 |
$xml->endTag($cd_src . 'Agt'); |
213 | 220 |
|
214 | 221 |
$xml->dataElement('ChrgBr', 'SLEV'); |
215 | 222 |
|
223 |
if ($is_coll) { |
|
224 |
$xml->startTag('CdtrSchmeId'); |
|
225 |
$xml->startTag('Id'); |
|
226 |
$xml->startTag('PrvtId'); |
|
227 |
$xml->startTag('Othr'); |
|
228 |
$xml->dataElement('Id', encode('UTF-8', substr($self->{creditor_id}, 0, 35))); |
|
229 |
$xml->startTag('SchmeNm'); |
|
230 |
$xml->dataElement('Prtry', 'SEPA'); |
|
231 |
$xml->endTag('SchmeNm'); |
|
232 |
$xml->endTag('Othr'); |
|
233 |
$xml->endTag('PrvtId'); |
|
234 |
$xml->endTag('Id'); |
|
235 |
$xml->endTag('CdtrSchmeId'); |
|
236 |
} |
|
237 |
|
|
216 | 238 |
foreach my $transaction (@{ $transaction_group->{transactions} }) { |
217 | 239 |
$xml->startTag($is_coll ? 'DrctDbtTxInf' : 'CdtTrfTxInf'); |
218 | 240 |
|
... | ... | |
230 | 252 |
$xml->startTag('MndtRltdInf'); |
231 | 253 |
$xml->dataElement('MndtId', $self->_restricted_identification_sepa2($transaction->get('mandator_id'))); |
232 | 254 |
$xml->dataElement('DtOfSgntr', $self->_restricted_identification_sepa2($transaction->get('date_of_signature'))); |
233 |
$xml->endTag('MndtRltdInf'); |
|
234 | 255 |
|
235 |
$xml->startTag('CdtrSchmeId'); |
|
236 |
$xml->startTag('Id'); |
|
237 |
$xml->startTag('PrvtId'); |
|
238 |
$xml->startTag('Othr'); |
|
239 |
$xml->dataElement('Id', encode('UTF-8', substr($self->{creditor_id}, 0, 35))); |
|
240 |
$xml->startTag('SchmeNm'); |
|
241 |
$xml->dataElement('Prtry', 'SEPA'); |
|
242 |
$xml->endTag('SchmeNm'); |
|
243 |
$xml->endTag('Othr'); |
|
244 |
$xml->endTag('PrvtId'); |
|
245 |
$xml->endTag('Id'); |
|
246 |
$xml->endTag('CdtrSchmeId'); |
|
256 |
$xml->endTag('MndtRltdInf'); |
|
247 | 257 |
|
248 | 258 |
$xml->endTag('DrctDbtTx'); |
249 | 259 |
|
... | ... | |
257 | 267 |
|
258 | 268 |
$xml->startTag("${cd_dst}Agt"); |
259 | 269 |
$xml->startTag('FinInstnId'); |
260 |
$xml->dataElement('BIC', $transaction->get('dst_bic', 20)); |
|
270 |
$xml->dataElement('BICFI', $transaction->get('dst_bic', 20));
|
|
261 | 271 |
$xml->endTag('FinInstnId'); |
262 | 272 |
$xml->endTag("${cd_dst}Agt"); |
263 | 273 |
|
Auch abrufbar als: Unified diff
SEPA: Anpassungen an Standard Version 3.8 (pain.008.001.08 / pain.001.001.09)
Grundlage bildet »Anlage 3
der Schnittstellenspezifikation für die
Datenfernübertragung zwischen Kunde und
Kreditinstitut gemäß DFÜ-Abkommen
„Spezifikation der Datenformate“
Version 3.8 vom 08.04.2024
gültig ab 17. November 2024
Final Version«
von
https://www.ebics.de/de/datenformate