- $xml->startTag('Amt');
- $xml->startTag('InstdAmt', 'Ccy' => 'EUR');
- $xml->characters($self->_format_amount($transaction->{amount}));
- $xml->endTag('InstdAmt');
- $xml->endTag('Amt');
-
- $xml->startTag('CdtrAgt');
+ if ($is_coll) {
+ $xml->startTag('InstdAmt', 'Ccy' => 'EUR');
+ $xml->characters($self->_format_amount($transaction->{amount}));
+ $xml->endTag('InstdAmt');
+
+ $xml->startTag('DrctDbtTx');
+
+ $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('DrctDbtTx');
+
+ } else {
+ $xml->startTag('Amt');
+ $xml->startTag('InstdAmt', 'Ccy' => 'EUR');
+ $xml->characters($self->_format_amount($transaction->{amount}));
+ $xml->endTag('InstdAmt');
+ $xml->endTag('Amt');
+ }
+
+ $xml->startTag("${cd_dst}Agt");