public DirectDebitTransaction CreateANewEmptyDirectDebitTransaction(DirectDebitMandate directDebitmandate) { DirectDebitTransaction directDebitTransaction = new DirectDebitTransaction( directDebitmandate.InternalReferenceNumber, directDebitmandate.BankAccount, directDebitmandate.AccountHolderName, directDebitmandate.DirectDebitMandateCreationDate); return directDebitTransaction; }
public DirectDebitTransaction CreateANewDirectDebitTransactionFromAGroupOfBills(DirectDebitMandate directDebitmandate, List<Bill> billsList) { DirectDebitTransaction directDebitTransaction = new DirectDebitTransaction( billsList, directDebitmandate.InternalReferenceNumber, directDebitmandate.BankAccount, directDebitmandate.AccountHolderName, directDebitmandate.DirectDebitMandateCreationDate); return directDebitTransaction; }
public void AddDirectDebitTransaction(DirectDebitTransaction directDebitTransaction) { directDebitTransactionsCollection.Add(directDebitTransaction); UpdateNumberOfDirectDebitTransactionsAndAmount(); }
public void WhenAddingAnotherBillToADirectDebitTransactionTheAmmountAndNumberOfBillsAreCorrectlyUpdated() { ClubMember clubMember = clubMembers["00002"]; Invoice firstInvoice = clubMember.InvoicesList.Values.ElementAt(0); List<Bill> bills = new List<Bill>() { firstInvoice.Bills.Values.ElementAt(0) }; DirectDebitMandate directDebitMandate = clubMembers["00002"].DirectDebitmandates.ElementAt(0).Value; int internalDirectDebitReferenceNumber = directDebitMandate.InternalReferenceNumber; BankAccount debtorAccount = directDebitMandate.BankAccount; string accountHolderName = directDebitMandate.AccountHolderName; DateTime mandateSignatureDate = directDebitMandate.DirectDebitMandateCreationDate; DirectDebitTransaction directDebitTransaction = new DirectDebitTransaction(bills, internalDirectDebitReferenceNumber, debtorAccount, accountHolderName, mandateSignatureDate); Assert.AreEqual((decimal)79, directDebitTransaction.Amount); Assert.AreEqual(1, directDebitTransaction.NumberOfBills); Invoice secondInvoice = clubMember.InvoicesList.Values.ElementAt(1); Bill bill = secondInvoice.Bills.ElementAt(0).Value; directDebitTransaction.AddBill(bill); Assert.AreEqual((decimal)158, directDebitTransaction.Amount); Assert.AreEqual(2, directDebitTransaction.NumberOfBills); }
public void TheMandateIDOfADirectDebitIsWellGenerated() { ClubMember clubMember = clubMembers["00002"]; Invoice firstInvoice = clubMember.InvoicesList.Values.ElementAt(0); List<Bill> bills = new List<Bill>() { firstInvoice.Bills.Values.ElementAt(0) }; DirectDebitMandate directDebitMandate = clubMembers["00002"].DirectDebitmandates.ElementAt(0).Value; int internalDirectDebitReferenceNumber = directDebitMandate.InternalReferenceNumber; BankAccount debtorAccount = directDebitMandate.BankAccount; string accountHolderName = directDebitMandate.AccountHolderName; DateTime mandateSignatureDate = directDebitMandate.DirectDebitMandateCreationDate; DirectDebitTransaction directDebitTransaction = new DirectDebitTransaction(bills, internalDirectDebitReferenceNumber, debtorAccount, accountHolderName, mandateSignatureDate); Assert.AreEqual(1235, directDebitTransaction.InternalDirectDebitReferenceNumber); directDebitTransaction.GenerateMandateID("777"); Assert.AreEqual("000077701235 ", directDebitTransaction.MandateID); }
public void AnEmptyDirectDebitTransactionIsCorrectlyCreated() { ClubMember clubMember = clubMembers["00002"]; DirectDebitMandate directDebitMandate = clubMembers["00002"].DirectDebitmandates.ElementAt(0).Value; int internalDirectDebitReferenceNumber = directDebitMandate.InternalReferenceNumber; BankAccount debtorAccount = directDebitMandate.BankAccount; string accountHolderName = directDebitMandate.AccountHolderName; DateTime mandateSignatureDate = directDebitMandate.DirectDebitMandateCreationDate; DirectDebitTransaction directDebitTransaction = new DirectDebitTransaction(internalDirectDebitReferenceNumber, debtorAccount, accountHolderName, mandateSignatureDate); Assert.AreEqual(internalDirectDebitReferenceNumber, directDebitTransaction.InternalDirectDebitReferenceNumber); Assert.AreEqual(debtorAccount, directDebitTransaction.DebtorAccount); Assert.AreEqual(0, directDebitTransaction.NumberOfBills); }
public void ADirectDebitTransactionIsCorrectlyCreated() { ClubMember clubMember = clubMembers["00002"]; List<Invoice> invoices = clubMember.InvoicesList.Values.ToList(); List<Bill> bills = invoices.Select(invoice => invoice.Bills.ElementAt(0).Value).ToList(); DirectDebitMandate directDebitMandate = clubMembers["00002"].DirectDebitmandates.ElementAt(0).Value; int internalDirectDebitReferenceNumber = directDebitMandate.InternalReferenceNumber; BankAccount debtorAccount = directDebitMandate.BankAccount; string accountHolderName = directDebitMandate.AccountHolderName; DateTime mandateSignatureDate = directDebitMandate.DirectDebitMandateCreationDate; DirectDebitTransaction directDebitTransaction = new DirectDebitTransaction(bills, internalDirectDebitReferenceNumber, debtorAccount, accountHolderName, mandateSignatureDate); Assert.AreEqual(bills, directDebitTransaction.BillsInTransaction); Assert.AreEqual(internalDirectDebitReferenceNumber, directDebitTransaction.InternalDirectDebitReferenceNumber); Assert.AreEqual(debtorAccount, directDebitTransaction.DebtorAccount); Assert.AreEqual((decimal)158, directDebitTransaction.Amount); Assert.AreEqual(2, directDebitTransaction.NumberOfBills); }
public void ADirectDebitTransactionIsCorrectlyAddedToGroupPayment() { string localInstrument = "COR1"; DirectDebitTransactionsGroupPayment directDebitTransactionsGroupPayment = new DirectDebitTransactionsGroupPayment(localInstrument); ClubMember clubMember = clubMembers["00002"]; Invoice firstInvoice = clubMember.InvoicesList.Values.ElementAt(0); List<Bill> bills = new List<Bill>() { firstInvoice.Bills.Values.ElementAt(0) }; DirectDebitMandate directDebitMandate = clubMembers["00002"].DirectDebitmandates.ElementAt(0).Value; int internalDirectDebitReferenceNumber = directDebitMandate.InternalReferenceNumber; BankAccount debtorAccount = directDebitMandate.BankAccount; string accountHolderName = directDebitMandate.AccountHolderName; DateTime mandateSignatureDate = directDebitMandate.DirectDebitMandateCreationDate; DirectDebitTransaction directDebitTransaction = new DirectDebitTransaction(bills, internalDirectDebitReferenceNumber, debtorAccount, accountHolderName, mandateSignatureDate); directDebitTransactionsGroupPayment.AddDirectDebitTransaction(directDebitTransaction); Assert.AreEqual(1, directDebitTransactionsGroupPayment.NumberOfDirectDebitTransactions); Assert.AreEqual((decimal)79, directDebitTransactionsGroupPayment.TotalAmount); }
private DirectDebitTransactionInformation9 GenerateDirectDebitTransactionInfo_DrctDbtTxInf( CreditorAgent creditorAgent, DirectDebitTransaction directDebitTransaction) { PaymentIdentification1 paymentIdentification_PmtID = new PaymentIdentification1( directDebitTransaction.DirectDebitTransactionInternalReference, //<InstrID> directDebitTransaction.DirectDebitTransactionInternalReference); //<EndToEndID> ActiveOrHistoricCurrencyAndAmount instructedAmount_InstdAmt = new ActiveOrHistoricCurrencyAndAmount( "EUR", //<InstdAmt> ""CCY" atribute value directDebitTransaction.Amount); //<InstdAmt> MandateRelatedInformation6 mandateRelatedInformation_MndtRltdInf = new MandateRelatedInformation6( directDebitTransaction.MandateID, //<MndtID> directDebitTransaction.MandateSigatureDate, //<DtOfSgntr> true, //<DtOfSgntr> will be serialized false, //<AmdmntInd> - There is no amendment false, //<AmdmntInd> will not be serialize null, //<AmdmntInfDtls> - No amendment details null, //<ElctrncSgntr> - No electronic signature DateTime.MinValue, //<FrstColltnDt> - Not used by creditor in SEPA COR, but can't be null false, //<FrstColltnDt> will not be serialized DateTime.MaxValue, //<FnlColltnDt> - Not used by creditor in SEPA COR, but can't be null false, //<FnlColltnDt> will not be serialized Frequency1Code.MNTH, //<Frqcy> - Not used by creditor in SEPA COR, but can't be null false); //<Frqcy> will not be serialized DirectDebitTransaction6 directDebitTransaction_DrctDbtTx = new DirectDebitTransaction6( mandateRelatedInformation_MndtRltdInf, //<MndtRltdInf> null, //<CdtrSchmeId> - No. Only one creditor scheme per payment information <PmtInf> group null, //<PreNtfctnId> - Not used by creditor in SEPA COR DateTime.MinValue, //<PreNtfctnDt> - Not used by creditor in SEPA COR, but can't be null false); //<PreNtfctnDt> will not be serialized FinancialInstitutionIdentification7 financialInstitutuinIdentification_FinInstnID = new FinancialInstitutionIdentification7( creditorAgent.BankBIC, //<BIC> null, //<ClrYsMmbId> - Not used by creditor in SEPA COR null, //<Nm> Not used by creditor in SEPA COR null, //<PstlAdr> - Not used by creditor in SEPA COR null); //<Othr> - Not used by creditor in SEPA COR BranchAndFinancialInstitutionIdentification4 debtorAgent_DbtrAgt = new BranchAndFinancialInstitutionIdentification4( financialInstitutuinIdentification_FinInstnID, //<FinInstnId> null); //<BrcnhID> - Not used by creditor in SEPA COR PartyIdentification32 debtor_Dbtr = new PartyIdentification32( directDebitTransaction.AccountHolderName, //<Nm> null, //<PstlAdr> - No postal address needed null, //<Id> - No extra ID needed null, //<CtryOfRes> - Not used by creditor in SEPA COR null); //<CtctDtls> - Not used by creditor in SEPA COR AccountIdentification4Choice accountID_Id = new AccountIdentification4Choice( directDebitTransaction.DebtorAccount.IBAN.IBAN); CashAccount16 debtorAccount_DbtrAcct = new CashAccount16( accountID_Id, //<Id> null, //<Tp> - Not used by creditor in SEPA COR null, //<Ccy> - Not used by creditor in SEPA COR null); //<Nm> - Not used by creditor in SEPA COR string[] remittanceConcepts = directDebitTransaction.BillsInTransaction.Select(bill => bill.Description).ToArray(); RemittanceInformation5 remitanceInformation_RmtInf = new RemittanceInformation5( remittanceConcepts, //<Ustrd> new StructuredRemittanceInformation7[] { null }); //<Strd> - Only <Ustrd> or <Strd> DirectDebitTransactionInformation9 directDebitTransactionInfo_DrctDbtTxInf = new DirectDebitTransactionInformation9( paymentIdentification_PmtID, //<PmtID> null, //<PmtTpInf> - Not used by creditor in SEPA COR instructedAmount_InstdAmt, //<InstdAmt> ChargeBearerType1Code.SLEV, //<ChrgBr> - No. Only one Charge Bearer per payment information <PmtInf> group false, //<ChrgBr> will not be serialized directDebitTransaction_DrctDbtTx, //<DrctDbtTx> null, //<UltmtCdtr> - Not necessary. If son, only one Ultimate Creditor per payment information <PmtInf> group debtorAgent_DbtrAgt, //<DbtrAgt> null, //<DbtrAgtAcct> - Not used by creditor in SEPA COR debtor_Dbtr, //<Dbtr> debtorAccount_DbtrAcct, //<DbtrAcct> null, //<UltmtDbtr> - Only if Ultimate Debtor is different from debtor. null, //<InstrForCdtrAgt> - Not used by creditor in SEPA COR null, //<Purp> - Not mandatory. Only use to inform debtor. Is meaningless for agents. new RegulatoryReporting3[] { null },//<RgltryRptg> - Only needed for big payments from non residents null, //<Tax> - Not used by creditor in SEPA COR new RemittanceLocation2[] { null }, //<RltdRmtInf> - Not used by creditor in SEPA COR remitanceInformation_RmtInf); //<RmtInf> return directDebitTransactionInfo_DrctDbtTxInf; }
public void AddDirectDebitTransactionToGroupPayment( DirectDebitTransaction directDebitTransaction, DirectDebitTransactionsGroupPayment directDebitTransactionsGroupPayment) { directDebitTransactionsGroupPayment.AddDirectDebitTransaction(directDebitTransaction); }
public void AddBilllToExistingDirectDebitTransaction(DirectDebitTransaction directDebitTransaction, Bill bill) { directDebitTransaction.AddBill(bill); }