示例#1
0
        public async Task <(IBankPaymentLayoutManager, IBankAdditionalInformation)> GetBankPaymentLayoutManager(BankLayoutPaymentInformation layoutInformation)
        {
            var instanceMgr = new InstanceManager();
            var instance    = await instanceMgr.GetByIDAsync(layoutInformation.TokeUser, layoutInformation.InstanceID);

            switch (layoutInformation.BankCode)
            {
            case BANAMEX:
                layoutInformation.BankExtraParams.Banamex.CompanyName = instance.Name;
                return(new BanamexPaymentLayoutManager(), layoutInformation.BankExtraParams.Banamex);

            case BANORTE:
                layoutInformation.BankExtraParams.Banorte.CompanyName = instance.Name;
                return(new BanortePaymentLayoutManager(), layoutInformation.BankExtraParams.Banorte);

            case SANTANDER:
                return(new SantanderPaymentLayoutManager(), layoutInformation.BankExtraParams.Santander);

            case BBVA:
                return(new BBVAPaymentLayoutManager(), null);

            case SCOTIABANK:
                return(new ScotiabankPaymentLayoutManager(), layoutInformation.BankExtraParams.Scotiabank);

            case HSBC:
                return(new HSBCPaymentLayoutManager(), null);

            default:
                throw new ArgumentException("Banco no manejado para la dispersión");
            }
        }
示例#2
0
        /// <summary>
        /// Generates the settlement letter indicates writer.
        /// </summary>
        /// <param name="activeOverdraft">The active overdraft.</param>
        /// <param name="identityWorkID">The identity work identifier.</param>
        /// <param name="instanceID">The instance identifier.</param>
        /// <param name="writer">The writer.</param>
        /// <returns></returns>
        public async Task <string> GenerateSettlementLetter(List <Overdraft> activeOverdrafts, Guid identityWorkID, Guid instanceID, string token, IMSSpreadsheetWriter writer)
        {
            var instanceMgr = new InstanceManager();
            var instance    = await instanceMgr.GetByIDAsync(token, instanceID);

            var payrrollCompanyConfigurationMgr = new MiddlewareManager <PayrollCompanyConfiguration>(
                new BaseRecordManager <PayrollCompanyConfiguration>(),
                new PayrollCompanyConfigurationValidator());

            var address = (await payrrollCompanyConfigurationMgr.FindByExpressionAsync(x => x.InstanceID == instanceID,
                                                                                       identityWorkID, new string[] { "Address" })).FirstOrDefault().Address;
            var fullAddress = string.Empty;

            if (address != null)
            {
                fullAddress = $" {address.Street}, {address.ZipCode}, {address.Municipality}, {address.FederalEntity}";
            }

            var overdraftManager         = new OverdraftManager();
            OverdraftTotalsResult totals = new OverdraftTotalsResult();

            activeOverdrafts.ForEach(activeOverdraft =>
            {
                var totalSalaryPayments = activeOverdraft.OverdraftDetails.Where(p => p.ConceptPayment.ConceptType == ConceptType.SalaryPayment &&
                                                                                 p.ConceptPayment.Print &&
                                                                                 !p.ConceptPayment.Kind).
                                          Select(y => y.Amount).Sum();



                var totalDeductionPayments = activeOverdraft.OverdraftDetails.Where(p => p.ConceptPayment.ConceptType == ConceptType.DeductionPayment &&
                                                                                    p.ConceptPayment.Print &&
                                                                                    !p.ConceptPayment.Kind).
                                             Select(y => y.Amount).Sum();


                totals.TotalSalaryPayments    += Math.Round(totalSalaryPayments, 2);
                totals.TotalDeductionPayments += Math.Round(totalDeductionPayments, 2);
                totals.Total += Math.Round(totals.TotalSalaryPayments - totals.TotalDeductionPayments, 2);
            });

            string header =
                $"Recibí de la empresa {instance.Name} con domicilio en \n" +
                $"{fullAddress} " +
                $"la cantidad de: \n";
            string header2 = " por concepto de mi finiquito con motivo de la terminación\n" +
                             "de mi relación laboral con la empresa con fecha indicada en el documento, cantidad \n" +
                             "que resulta de los siguientes conceptos:";

            string footer =
                "Así mismo manifiesto que hasta el momento en que se da por terminada la relación laboral\n" +
                "no se me adeuda ninguna cantidad de dinero por concepto de salarios devengados,\n" +
                "diferencia de los mismos, participacion de utilidades, comisiones, horas extras, \n" +
                "vacaciones, septimos días, días festivos, prima dominical, vacacional y de antigüedad\n" +
                "y demás prestaciones que otorga la Ley Federal Del Trabajo, ya que las mismas siempre\n" +
                "me fueron íntegramente cubiertas en los términos de la ley. También hago constar para\n" +
                "todos los efectos legales conducentes, que durante la vigencia de mi relación\n" +
                "obrero-patronal no fui objeto de riesgo profesional alguno, motivo por el cual libero\n" +
                "a mi patron de toda responsabilidad laboral y de seguridad\n" +
                "social o de cualquier otro concpeto derivado del contrato de trabajo.";
            string date = DateTime.Now.ToString("MM/dd/yyyy");



            var newHeader = ConcatenateHeader(header, header2, totals);
            var filename  = "CartaFiniquito - " + activeOverdrafts.FirstOrDefault().Employee.FullName + ".xlsx";

            IWorkbook wb  = GenerateSettlementLetter(activeOverdrafts, newHeader, footer, date, activeOverdrafts.FirstOrDefault().Employee.FullName, totals);
            var       url = await WriteSettlementLetterAsync(instanceID, filename, wb, writer);

            return(url);
        }