public string GenerateISO20022CustomerDirectDebitInitiationMessage( DateTime generationDateTime, Creditor creditor, CreditorAgent creditorAgent, DirectDebitInitiationContract directDebitInitiationContract, DirectDebitRemittance directDebitRemmitance) { PartyIdentification32 initiationParty_InitPty = GenerateInitiationParty_InitPty(creditor, directDebitInitiationContract); GroupHeader39 groupHeader_GrpHdr = GenerateGroupHeader_GrpHdr(generationDateTime, directDebitRemmitance, initiationParty_InitPty); List<PaymentInstructionInformation4> paymentInformation_PmtInf_List = new List<PaymentInstructionInformation4>(); List<DirectDebitTransactionInformation9> directDebitTransactionInfoList = new List<DirectDebitTransactionInformation9>(); foreach (DirectDebitTransactionsGroupPayment directDebitTransactionsGroupPayment in directDebitRemmitance.DirectDebitTransactionGroupPaymentCollection) { foreach (DirectDebitTransaction directDebitTransaction in directDebitTransactionsGroupPayment.DirectDebitTransactionsCollection) { DirectDebitTransactionInformation9 directDebitTransactionInfo_DrctDbtTxInf = GenerateDirectDebitTransactionInfo_DrctDbtTxInf( creditorAgent, directDebitTransaction); directDebitTransactionInfoList.Add(directDebitTransactionInfo_DrctDbtTxInf); } PaymentInstructionInformation4 paymentInformation_PmtInf = GeneratePaymentInformation_PmtInf( creditor, creditorAgent, directDebitInitiationContract, directDebitRemmitance, directDebitTransactionInfoList); paymentInformation_PmtInf_List.Add(paymentInformation_PmtInf); } PaymentInstructionInformation4[] paymentInformation_PmtInf_Array = paymentInformation_PmtInf_List.ToArray(); CustomerDirectDebitInitiationV02 customerDebitInitiationV02_Document = new CustomerDirectDebitInitiationV02( groupHeader_GrpHdr, //<GrpHdr> paymentInformation_PmtInf_Array); //<PmtInf> Document document_Document = new Document(customerDebitInitiationV02_Document); string xMLNamespace = "urn:iso:std:iso:20022:tech:xsd:pain.008.001.02"; string xmlString = XMLSerializer.XMLSerializeToString<Document>(document_Document, "Document", xMLNamespace); return xmlString; }
public void APaymentGroupIsCorrectlyAddedToADirectDebitRemmitance() { DateTime creationDate = new DateTime(2013, 11, 30, 7, 15, 0); DateTime requestedCollectionDate = new DateTime(2013, 12,1); DirectDebitRemittance directDebitRemmitance = new DirectDebitRemittance(creationDate, requestedCollectionDate, directDebitInitiationContract); string localInstrument = "COR1"; DirectDebitTransactionsGroupPayment directDebitTransactionsGroupPayment = new DirectDebitTransactionsGroupPayment(localInstrument); directDebitRemmitance.AddDirectDebitTransactionsGroupPayment(directDebitTransactionsGroupPayment); Assert.AreEqual(1, directDebitRemmitance.DirectDebitTransactionGroupPaymentCollection.Count); }
public void ADirectDebittRemmitanceInstanceIsCorrectlyCreated() { DateTime creationDate = new DateTime(2013, 11, 30, 7, 15, 0); DateTime requestedCollectionDate = new DateTime(2013, 12, 1); DirectDebitRemittance directDebitRemmitance = new DirectDebitRemittance(creationDate, requestedCollectionDate, directDebitInitiationContract); string expectedMessageId = "ES90777G350087702013113007:15:00"; Assert.AreEqual(expectedMessageId, directDebitRemmitance.MessageID); Assert.AreEqual(creationDate, directDebitRemmitance.CreationDate); Assert.AreEqual(requestedCollectionDate, directDebitRemmitance.RequestedCollectionDate); }
PaymentInstructionInformation4 GeneratePaymentInformation_PmtInf( Creditor creditor, CreditorAgent creditorAgent, DirectDebitInitiationContract directDebitInitiationContract, DirectDebitRemittance directDebitRemittance, List<DirectDebitTransactionInformation9> directDebitTransactionInfo_DrctDbtTxInfList) { string paymentInformationIdentificaction_PmtInfId = "201402101"; //Private unique ID for payment group DateTime reqCollectionDate_ReqdColltnDt = new DateTime(2014, 2, 01); ServiceLevel8Choice serviceLevel_SvcLvl = new ServiceLevel8Choice( "SEPA", ItemChoiceType.Cd); LocalInstrument2Choice localInstrument_LclInstrm = new LocalInstrument2Choice( "COR1", ItemChoiceType.Cd); CategoryPurpose1Choice categoryOfPurpose_CtgyPurp = new CategoryPurpose1Choice( "Mensualidad", ItemChoiceType.Prtry); PaymentTypeInformation20 paymentTypeInformation_PmtTpInf = new PaymentTypeInformation20( Priority2Code.NORM, //<InstrPrty> Not used in SEPA COR1, but can't be null false, //<InstrPrty> will not be serialized serviceLevel_SvcLvl, //<SvcLvl> localInstrument_LclInstrm, //<LclInstrm> SequenceType1Code.RCUR, //<SeqTp> true, //<SeqTP> wll be serialized categoryOfPurpose_CtgyPurp); //<CtgyPurp> PartyIdentification32 creditor_Cdtr = new PartyIdentification32( creditor.Name, null, null, null, null); AccountIdentification4Choice creditorAccount_Id = new AccountIdentification4Choice( directDebitInitiationContract.CreditorAcount.IBAN.IBAN); CashAccount16 creditorAccount_CdtrAcct = new CashAccount16( creditorAccount_Id, null, null, null); FinancialInstitutionIdentification7 financialInstitutuinIdentification_FinInstnID = new FinancialInstitutionIdentification7( creditorAgent.BankBIC, null, null, null, null); BranchAndFinancialInstitutionIdentification4 creditorAgent_CdtrAgt = new BranchAndFinancialInstitutionIdentification4( financialInstitutuinIdentification_FinInstnID, null); OrganisationIdentificationSchemeName1Choice orgIDSchemeNameChoice_schmeNm = new OrganisationIdentificationSchemeName1Choice( "SEPA", ItemChoiceType.Prtry); GenericOrganisationIdentification1 genericOrganisationIdentification_othr = new GenericOrganisationIdentification1( directDebitInitiationContract.CreditorID, orgIDSchemeNameChoice_schmeNm, null); OrganisationIdentification4 organisationIdentification_orgiD = new OrganisationIdentification4( null, new GenericOrganisationIdentification1[] { genericOrganisationIdentification_othr }); Party6Choice organisationOrPrivateIdentification_id = new Party6Choice(organisationIdentification_orgiD); PartyIdentification32 creditorSchemeIdentification_CdtrSchemeId = new PartyIdentification32( null, null, organisationOrPrivateIdentification_id, null, null); DirectDebitTransactionInformation9[] directDebitTransactionInfoCollection = directDebitTransactionInfo_DrctDbtTxInfList.ToArray(); PaymentInstructionInformation4 paymentInformation_PmtInf = new PaymentInstructionInformation4( paymentInformationIdentificaction_PmtInfId, //<PmtInfId> PaymentMethod2Code.DD, //<PmtMtd> true, //<BtchBookg> Only one account entry for all payments true, //<BtchBookg> Will be serialized "2", //<NbOfTxs> (decimal)237, //<CtrlSum> true, //<CtrlSum> will be specified paymentTypeInformation_PmtTpInf, //<PmtTpInf> reqCollectionDate_ReqdColltnDt, //<ReqdColltnDt> creditor_Cdtr, //<Cdtr> creditorAccount_CdtrAcct, //<CdtrAcc> creditorAgent_CdtrAgt, //<CdtrAgt> null, //<CdtrAgtAcct> null, //<UltmtCdtr> Not neccesary. Same than creditor ChargeBearerType1Code.SLEV, //<ChrgBr> true, //<ChrgBr> will be serialized null, //<ChrgsAcct> Not used in SEPA COR1 null, //<ChrgsAcctAgt> Not used in SEPA COR1 creditorSchemeIdentification_CdtrSchemeId, //<CdtrSchemeId> directDebitTransactionInfoCollection); //<DrctDbtTxInf> return paymentInformation_PmtInf; }
private GroupHeader39 GenerateGroupHeader_GrpHdr( DateTime generationDateTime, DirectDebitRemittance directDebitRemmitance, PartyIdentification32 initiationParty_InitgPty) { Authorisation1Choice[] authorisation_authstn = new Authorisation1Choice[] { null }; DateTime creatingdDateTime = DateTime.SpecifyKind(generationDateTime, DateTimeKind.Unspecified).Truncate(TimeSpan.FromSeconds(1)); GroupHeader39 groupHeader_grpHdr = new GroupHeader39( directDebitRemmitance.MessageID, //<MsgID> creatingdDateTime, //<CreDtTm> authorisation_authstn, //<Authstn> - Not used in SEPA. Array of null instead of null to avoid null reference exception directDebitRemmitance.NumberOfTransactions.ToString(), //<NbOfTxs> directDebitRemmitance.ControlSum, //<CtrlSum> true, //Control sum is specified initiationParty_InitgPty, //<InitgPty> null); //<FwdgAgt> - Not used by creditor in SEPA COR return groupHeader_grpHdr; }
public DirectDebitRemittance CreateADirectDebitRemmitance(DateTime creationDateTime, DateTime requestedCollectionDate, DirectDebitInitiationContract directDebitInitiationContract) { DirectDebitRemittance directDebitRemmitance = new DirectDebitRemittance(creationDateTime, requestedCollectionDate, directDebitInitiationContract); return directDebitRemmitance; }
public void AddDirectDebitTransactionGroupPaymentToDirectDebitRemittance( DirectDebitRemittance directDebitRemmitance, DirectDebitTransactionsGroupPayment directDebitTransactionsGroupPayment) { directDebitRemmitance.AddDirectDebitTransactionsGroupPayment(directDebitTransactionsGroupPayment); }