private string GenerateHeaderRegistry(BanorteAdditionalInformation additionalInformation)
        {
            StringBuilder paymentBankFormat = new StringBuilder();

            paymentBankFormat.AppendFormat("{0}{1}{2}{3}"
                                           , string.Format("{0:yyyyMMdd}", additionalInformation.PaymentDate)
                                           , additionalInformation.ChargeAccount.PadLeft(9, '0')
                                           , FormatCompanyName(additionalInformation.CompanyName)
                                           , "#".PadLeft(5, ' ')
                                           );

            return(paymentBankFormat.ToString());
        }
        private string GenerateDetailPaymentEmployees(List <Overdraft> overdrafts, BanorteAdditionalInformation additionalInformation)
        {
            StringBuilder paymentBankFormat = new StringBuilder();

            OverdraftManager overdraftManager = new OverdraftManager();

            foreach (Overdraft payment in overdrafts)
            {
                decimal amountPayment = overdraftManager.GetNetAmount(payment);
                paymentBankFormat.AppendFormat("{0}{1}{2}{3}{4}"
                                               , FormatEmployeeName(payment.Employee.Name, payment.Employee.FirstLastName, payment.Employee.SecondLastName)
                                               , additionalInformation.SystemID.PadLeft(3, '0')
                                               , GetNoNullString(payment.Employee.BankAccount).PadLeft(9, '0')
                                               , amountPayment.ToString("#.00").Replace(".", string.Empty).PadLeft(14, '0')
                                               , payment.Employee.Code.PadLeft(10, '0')
                                               );

                paymentBankFormat.Append(Environment.NewLine);
            }

            return(paymentBankFormat.ToString());
        }
        public void Should_Create_Layout_No_Employee_Bank_Account()
        {
            //Arrange
            string expected = "20200704998855667Regresivas1241                              #"
                              + Environment.NewLine
                              + "Rodriguez Sanchez Ivan    007000000000000000001968200000000007"
                              + Environment.NewLine;

            BanortePaymentLayoutManager banorteLayout = new BanortePaymentLayoutManager();

            BanorteAdditionalInformation additionalInformation = new BanorteAdditionalInformation
            {
                SystemID      = "007",
                ChargeAccount = "998855667",
                PaymentDate   = new DateTime(2020, 7, 4),
                CompanyName   = "Regresivas1241",
            };

            List <Overdraft>       overdrafts       = new List <Overdraft>();
            List <OverdraftDetail> overdraftDetails = new List <OverdraftDetail>();
            OverdraftDetail        detail;
            ConceptPayment         concept;


            concept = new ConceptPayment
            {
                Name        = "Sueldo",
                ConceptType = ConceptType.SalaryPayment,
            };

            detail = new OverdraftDetail
            {
                ConceptPayment = concept,
                Amount         = 1968.2m,
                Value          = 15,
            };

            overdraftDetails.Add(detail);

            concept = new ConceptPayment
            {
                Name        = "IMSS",
                ConceptType = ConceptType.DeductionPayment,
            };

            detail = new OverdraftDetail
            {
                ConceptPayment = concept,
                Amount         = 0m,
                Value          = 0,
            };

            overdraftDetails.Add(detail);

            Employee  employee  = new Employee();
            Overdraft overdraft = new Overdraft();

            employee.RFC               = "POSL920306LD2";
            employee.BankAccount       = null;
            employee.FirstLastName     = "Rodriguez";
            employee.SecondLastName    = "Sanchez";
            employee.Name              = "Ivan";
            employee.Code              = "7";
            overdraft.Employee         = employee;
            overdraft.OverdraftDetails = overdraftDetails;

            overdrafts.Add(overdraft);


            //Act
            string actual = banorteLayout.GenerateLayout(overdrafts, additionalInformation);

            //Assert
            Assert.Equal(expected, actual);
        }