/// <summary> /// Add an existing Debit transfer transaction /// </summary> /// <param name="transfer"></param> /// <exception cref="ArgumentNullException">If transfert is null.</exception> public void AddDebitTransfer(SepaDebitTransferTransaction transfer) { if (transfer == null) { throw new ArgumentNullException("transfer"); } transfer = (SepaDebitTransferTransaction)transfer.Clone(); if (transfer.EndToEndId == null) { transfer.EndToEndId = (PaymentInfoId ?? MessageIdentification) + "/" + (numberOfTransactions + 1); } CheckTransactionIdUnicity(transfer.Id, transfer.EndToEndId); transactions.Add(transfer); numberOfTransactions++; headerControlSum += transfer.Amount; paymentControlSum += transfer.Amount; }
/// <summary> /// Generate the Transaction XML part /// </summary> /// <param name="pmtInf">The root nodes for a transaction</param> /// <param name="transfer">The transaction to generate</param> private static void GenerateTransaction(XmlElement pmtInf, SepaDebitTransferTransaction transfer) { var cdtTrfTxInf = pmtInf.NewElement("DrctDbtTxInf"); var pmtId = cdtTrfTxInf.NewElement("PmtId"); if (transfer.Id != null) { pmtId.NewElement("InstrId", transfer.Id); } pmtId.NewElement("EndToEndId", transfer.EndToEndId); cdtTrfTxInf.NewElement("InstdAmt", StringUtils.FormatAmount(transfer.Amount)).SetAttribute("Ccy", transfer.Currency); var MndtRltdInf = cdtTrfTxInf.NewElement("DrctDbtTx").NewElement("MndtRltdInf"); MndtRltdInf.NewElement("MndtId", transfer.MandateIdentification); MndtRltdInf.NewElement("DtOfSgntr", transfer.DateOfSignature.ToString("yyyy-MM-dd")); cdtTrfTxInf.NewElement("DbtrAgt").NewElement("FinInstnId").NewElement("BIC", transfer.Creditor.Bic); cdtTrfTxInf.NewElement("Dbtr").NewElement("Nm", transfer.Creditor.Name); cdtTrfTxInf.NewElement("DbtrAcct").NewElement("Id").NewElement("IBAN", transfer.Creditor.Iban); cdtTrfTxInf.NewElement("RmtInf").NewElement("Ustrd", transfer.RemittanceInformation); }