public void ShouldKeepProvidedData()
        {
            const decimal amount                = 100m;
            const string  currency              = "USD";
            const string  id                    = "Batch1";
            const string  endToEndId            = "Batch1/Row2";
            const string  remittanceInformation = "Sample";

            var data = new SepaCreditTransferTransaction
            {
                Creditor              = _iBanData,
                Amount                = amount,
                Currency              = currency,
                Id                    = id,
                EndToEndId            = endToEndId,
                RemittanceInformation = remittanceInformation
            };

            Assert.AreEqual(currency, data.Currency);
            Assert.AreEqual(amount, data.Amount);
            Assert.AreEqual(id, data.Id);
            Assert.AreEqual(endToEndId, data.EndToEndId);
            Assert.AreEqual(remittanceInformation, data.RemittanceInformation);
            Assert.AreEqual(Bic, data.Creditor.Bic);
            Assert.AreEqual(Iban, data.Creditor.Iban);

            var data2 = data.Clone() as SepaCreditTransferTransaction;

            Assert.NotNull(data2);
            Assert.AreEqual(currency, data2.Currency);
            Assert.AreEqual(amount, data2.Amount);
            Assert.AreEqual(id, data2.Id);
            Assert.AreEqual(endToEndId, data2.EndToEndId);
            Assert.AreEqual(remittanceInformation, data2.RemittanceInformation);
            Assert.AreEqual(Bic, data2.Creditor.Bic);
            Assert.AreEqual(Iban, data2.Creditor.Iban);
        }
        public void ShouldKeepProvidedData()
        {
            const decimal amount = 100m;
            const string currency = "USD";
            const string id = "Batch1";
            const string endToEndId = "Batch1/Row2";
            const string remittanceInformation = "Sample";

            var data = new SepaCreditTransferTransaction
                {
                    Creditor = _iBanData,
                    Amount = amount,
                    Currency = currency,
                    Id = id,
                    EndToEndId = endToEndId,
                    RemittanceInformation = remittanceInformation
                };

            Assert.AreEqual(currency, data.Currency);
            Assert.AreEqual(amount, data.Amount);
            Assert.AreEqual(id, data.Id);
            Assert.AreEqual(endToEndId, data.EndToEndId);
            Assert.AreEqual(remittanceInformation, data.RemittanceInformation);
            Assert.AreEqual(Bic, data.Creditor.Bic);
            Assert.AreEqual(Iban, data.Creditor.Iban);

            var data2 = data.Clone() as SepaCreditTransferTransaction;

            Assert.NotNull(data2);
            Assert.AreEqual(currency, data2.Currency);
            Assert.AreEqual(amount, data2.Amount);
            Assert.AreEqual(id, data2.Id);
            Assert.AreEqual(endToEndId, data2.EndToEndId);
            Assert.AreEqual(remittanceInformation, data2.RemittanceInformation);
            Assert.AreEqual(Bic, data2.Creditor.Bic);
            Assert.AreEqual(Iban, data2.Creditor.Iban);
        }
        public void ShouldManageMultipleTransactionsTransfer()
        {
            var transfert = new SepaCreditTransfer
            {
                CreationDate           = new DateTime(2010, 02, 20, 9, 30, 5),
                RequestedExecutionDate = new DateTime(2010, 02, 28),
                MessageIdentification  = "REF/789456/CCT001",
                PaymentInfoId          = "LOT123456",
                InitiatingPartyName    = "TOTO Distribution SA",
                Debtor = new SepaIbanData
                {
                    Bic  = "BANKFRPP",
                    Iban = "FR7621479632145698745632145",
                    Name = "Societe S"
                },
                IsInternational = true,
                ChargeBearer    = SepaChargeBearer.DEBT,
            };

            const decimal amount = 20000m;
            var           trans  = new SepaCreditTransferTransaction
            {
                Id       = "Virement 458A",
                Creditor = new SepaIbanData
                {
                    Bic  = "PNPBUS33",
                    Iban = "US29NWBK60161331926819",
                    Name = "USA Factory"
                },
                Amount                     = amount,
                Currency                   = "USD",
                EndToEndId                 = "SOC/1478/CC/TI001/01",
                RemittanceInformation      = "En reglement des factures numeros : 123456789 987456321 258741369",
                SepaInstructionForCreditor = new SepaInstructionForCreditor()
                {
                    Code = SepaInstructionForCreditor.SepaInstructionForCreditorCode.PHOB
                },
                Purpose = "SCVE",
                RegulatoryReportingCode = "150"
            };

            trans.EndToEndId = "SOC/1478/CC/TI001/01";
            transfert.AddCreditTransfer(trans);

            const decimal amount2 = 1500000m;

            trans = new SepaCreditTransferTransaction
            {
                Id       = "Virement 458B",
                Creditor = new SepaIbanData
                {
                    Bic  = "BANKDEFF",
                    Iban = "DE89370400440532013000",
                    Name = "Japan Society"
                },
                Amount                  = amount2,
                Currency                = "JPY",
                EndToEndId              = "SOC/1478/CC/TI001/02",
                RemittanceInformation   = "En reglement des factures numeros : 321456789A 789456321B  852741370C",
                Purpose                 = "SCVE",
                RegulatoryReportingCode = "150"
            };
            transfert.AddCreditTransfer(trans);

            const decimal total = (amount + amount2) * 100;

            Assert.AreEqual(total, transfert.HeaderControlSumInCents);
            Assert.AreEqual(total, transfert.PaymentControlSumInCents);

            Assert.AreEqual(RESULT, transfert.AsXmlString());
        }
        public void ShouldManageMultipleTransactionsTransfer()
        {
            var transfert = new SepaCreditTransfer
            {
                CreationDate = new DateTime(2010, 02, 20, 9, 30, 5),
                RequestedExecutionDate = new DateTime(2010, 02, 28),
                MessageIdentification = "REF/789456/CCT001",
                PaymentInfoId = "LOT123456",
                InitiatingPartyName = "TOTO Distribution SA",
                Debtor = new SepaIbanData
                {
                    Bic = "BANKFRPP",
                    Iban = "FR7621479632145698745632145",
                    Name = "Societe S"
                },
                IsInternational = true,
                ChargeBearer = SepaChargeBearer.DEBT,
               };

            const decimal amount = 20000m;
            var trans = new SepaCreditTransferTransaction
            {
                Id = "Virement 458A",
                Creditor = new SepaIbanData
                {
                    Bic = "PNPBUS33",
                    Iban = "US29NWBK60161331926819",
                    Name = "USA Factory"
                },
                Amount = amount,
                Currency = "USD",
                EndToEndId = "SOC/1478/CC/TI001/01",
                RemittanceInformation = "En reglement des factures numeros : 123456789 987456321 258741369",
                SepaInstructionForCreditor = new SepaInstructionForCreditor() { Code = SepaInstructionForCreditor.SepaInstructionForCreditorCode.PHOB },
                Purpose = "SCVE",
                RegulatoryReportingCode = "150"
            };
            trans.EndToEndId = "SOC/1478/CC/TI001/01";
            transfert.AddCreditTransfer(trans);

            const decimal amount2 = 1500000m;
            trans = new SepaCreditTransferTransaction
            {
                Id = "Virement 458B",
                Creditor = new SepaIbanData
                {
                    Bic = "BANKDEFF",
                    Iban = "DE89370400440532013000",
                    Name = "Japan Society"
                },
                Amount = amount2,
                Currency = "JPY",
                EndToEndId = "SOC/1478/CC/TI001/02",
                RemittanceInformation = "En reglement des factures numeros : 321456789A 789456321B  852741370C",
                Purpose = "SCVE",
                RegulatoryReportingCode = "150"
            };
            transfert.AddCreditTransfer(trans);

            const decimal total = (amount + amount2)*100;

            Assert.AreEqual(total, transfert.HeaderControlSumInCents);
            Assert.AreEqual(total, transfert.PaymentControlSumInCents);

            Assert.AreEqual(RESULT, transfert.AsXmlString());
        }
        public void ShouldHaveADefaultCurrency()
        {
            var data = new SepaCreditTransferTransaction();

            Assert.AreEqual("EUR", data.Currency);
        }
        public void ShouldHaveADefaultCurrency()
        {
            var data = new SepaCreditTransferTransaction();

            Assert.AreEqual("EUR", data.Currency);
        }