Revision bc477197
Von Moritz Bunkus vor 11 Monaten hinzugefügt
SL/SEPA/XML.pm | ||
---|---|---|
my $xml = XML::Writer->new(OUTPUT => \$output,
|
||
DATA_MODE => 1,
|
||
DATA_INDENT => 2,
|
||
ENCODING => 'utf-8');
|
||
ENCODING => 'UTF-8');
|
||
|
||
my @now = localtime;
|
||
my $time_zone = strftime "%z", @now;
|
||
... | ... | |
my $is_coll = $self->{collection};
|
||
my $cd_src = $is_coll ? 'Cdtr' : 'Dbtr';
|
||
my $cd_dst = $is_coll ? 'Dbtr' : 'Cdtr';
|
||
my $pain_id = $is_coll ? 'pain.008.001.02' : 'pain.001.001.03';
|
||
my $pain_id = $is_coll ? 'pain.008.001.08' : 'pain.001.001.09';
|
||
my $pain_elmt = $is_coll ? 'CstmrDrctDbtInitn' : 'CstmrCdtTrfInitn';
|
||
my @pii_base = (strftime('PII%Y%m%d%H%M%S', @now), rand(1000000000));
|
||
|
||
... | ... | |
}
|
||
$xml->endTag('PmtTpInf');
|
||
|
||
$xml->dataElement($is_coll ? 'ReqdColltnDt' : 'ReqdExctnDt', $master_transaction->get('execution_date'));
|
||
if ($is_coll) {
|
||
$xml->dataElement('ReqdColltnDt', $master_transaction->get('execution_date'));
|
||
} else {
|
||
$xml->startTag('ReqdExctnDt');
|
||
$xml->dataElement('Dt', $master_transaction->get('execution_date'));
|
||
$xml->endTag('ReqdExctnDt');
|
||
}
|
||
|
||
$xml->startTag($cd_src);
|
||
$xml->dataElement('Nm', encode('UTF-8', substr($self->{company}, 0, 70)));
|
||
$xml->endTag($cd_src);
|
||
... | ... | |
|
||
$xml->startTag($cd_src . 'Agt');
|
||
$xml->startTag('FinInstnId');
|
||
$xml->dataElement('BIC', $master_transaction->get('src_bic', 20));
|
||
$xml->dataElement('BICFI', $master_transaction->get('src_bic', 20));
|
||
$xml->endTag('FinInstnId');
|
||
$xml->endTag($cd_src . 'Agt');
|
||
|
||
$xml->dataElement('ChrgBr', 'SLEV');
|
||
|
||
if ($is_coll) {
|
||
$xml->startTag('CdtrSchmeId');
|
||
$xml->startTag('Id');
|
||
$xml->startTag('PrvtId');
|
||
$xml->startTag('Othr');
|
||
$xml->dataElement('Id', encode('UTF-8', substr($self->{creditor_id}, 0, 35)));
|
||
$xml->startTag('SchmeNm');
|
||
$xml->dataElement('Prtry', 'SEPA');
|
||
$xml->endTag('SchmeNm');
|
||
$xml->endTag('Othr');
|
||
$xml->endTag('PrvtId');
|
||
$xml->endTag('Id');
|
||
$xml->endTag('CdtrSchmeId');
|
||
}
|
||
|
||
foreach my $transaction (@{ $transaction_group->{transactions} }) {
|
||
$xml->startTag($is_coll ? 'DrctDbtTxInf' : 'CdtTrfTxInf');
|
||
|
||
... | ... | |
$xml->startTag('MndtRltdInf');
|
||
$xml->dataElement('MndtId', $self->_restricted_identification_sepa2($transaction->get('mandator_id')));
|
||
$xml->dataElement('DtOfSgntr', $self->_restricted_identification_sepa2($transaction->get('date_of_signature')));
|
||
$xml->endTag('MndtRltdInf');
|
||
|
||
$xml->startTag('CdtrSchmeId');
|
||
$xml->startTag('Id');
|
||
$xml->startTag('PrvtId');
|
||
$xml->startTag('Othr');
|
||
$xml->dataElement('Id', encode('UTF-8', substr($self->{creditor_id}, 0, 35)));
|
||
$xml->startTag('SchmeNm');
|
||
$xml->dataElement('Prtry', 'SEPA');
|
||
$xml->endTag('SchmeNm');
|
||
$xml->endTag('Othr');
|
||
$xml->endTag('PrvtId');
|
||
$xml->endTag('Id');
|
||
$xml->endTag('CdtrSchmeId');
|
||
$xml->endTag('MndtRltdInf');
|
||
|
||
$xml->endTag('DrctDbtTx');
|
||
|
||
... | ... | |
|
||
$xml->startTag("${cd_dst}Agt");
|
||
$xml->startTag('FinInstnId');
|
||
$xml->dataElement('BIC', $transaction->get('dst_bic', 20));
|
||
$xml->dataElement('BICFI', $transaction->get('dst_bic', 20));
|
||
$xml->endTag('FinInstnId');
|
||
$xml->endTag("${cd_dst}Agt");
|
||
|
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