Example #1
0
        //private void SaveChange()
        //{
        //   // _ctx.SaveChanges();
        //}

        #endregion

        /// <summary>
        /// Genera el archivo PDF del xml timbrado - guarda el pdf en la bd en bytes[]
        /// </summary>
        /// <param name="idNominas"></param>
        /// <param name="idEjercicio"></param>
        /// <param name="idPeriodo"></param>
        /// <returns></returns>
        public async Task <int> GenerarRecibosPdfAsync(int[] idNominas, int idEjercicio, int idPeriodo)
        {
            PDFCore pc = new PDFCore();

            var r = await pc.GenerarPdfAsync(idNominas, idEjercicio, idPeriodo);

            return(r);
        }
Example #2
0
        /// <summary>
        /// Ejecuta el timbrado de las nominas que se le proporcionen en el array,
        /// Crea los XML de cada nomina y realiza el timbrado.
        /// Retorna una lista con los id de las nominas timbradas.
        /// </summary>
        /// <param name="idNominas"></param>
        /// <param name="idSucursal"></param>
        /// <param name="idEjercicio"></param>
        /// <param name="idPeriodo"></param>
        /// <param name="idUsuario"></param>
        /// <param name="timbradoPrueba"></param>
        /// <param name="pathLog"></param>
        /// <returns>Retorna una lista con los id de las nominas timbradas.</returns>
        public async Task <List <NotificationSummary> > GenerarCfdisAsync(int idSucursal, int idEjercicio, int idPeriodo,
                                                                          int[] idNominas, string pathLog, int idUsuario, bool timbradoPrueba = true, bool isFiniquito = false, bool isCfdi33 = false)
        {
            List <NotificationSummary> summaryList = new List <NotificationSummary>();

            //Validar Estatus del Periodo
            var periodoEstatusActual = GetPeriodoPagoById(idPeriodo);

            //No se procede con la generacion del cfdi si el periodo :
            //1) No esta autorizado
            //2) Esta siendo generado por otro usuario
            //3) Se esta procesando las nominas
            if (periodoEstatusActual.Autorizado == false ||
                periodoEstatusActual.CfdiGenerado == (int)GenerarCfdiEstatus.GenerandoCfdi ||
                periodoEstatusActual.Procesando)
            {
                summaryList.Add(new NotificationSummary()
                {
                    Reg  = 0,
                    Msg1 = "No se puede continuar por que el periodo no esta Autorizado, o se esta procesando en este momento...",
                    Msg2 = ""
                });
                return(summaryList);
            }


            //periodoEstatusActual.CfdiGenerado = (int)GenerarCfdiEstatus.GenerandoCfdi;
            //SaveChange();
            PeriodosPago objPeriodo = new PeriodosPago();

            objPeriodo.UpdateCfdiEstatus(periodoEstatusActual, GenerarCfdiEstatus.GenerandoCfdi);

            //TimbradoCore tc = new TimbradoCore();
            TimbradoCoreV2 tcv2 = new TimbradoCoreV2();
            PDFCore        pc   = new PDFCore();

            //LogTxtCore.ValidarDirectorio(pathLog);

            //DateTime dt = DateTime.Now;
            //pathLog += dt.Day + dt.Month.ToString() + dt.Year + ".txt";

            //Validar que los IdNominas no hayan sido generadas anteriormente
            idNominas = ValidarRecibosTimbrados(idNominas, idSucursal, idEjercicio, periodoEstatusActual);


            //Si el nuevo array no contiene elementos, entonces retornamos null
            //porque estaban intentado timbrar registros que ya estaban timbrados
            if (idNominas.Length <= 0)
            {
                summaryList.Add(new NotificationSummary()
                {
                    Reg  = 0,
                    Msg1 = "Esta intentando timbrar nominas registradas como timbradas",
                    Msg2 = ""
                });
                return(summaryList);
            }

            Array.Sort(idNominas);
            //ELIMINAMOS los registros que se generaron anteriormente con estos id de nomina pero pruducieron un error al timbrar
            tcv2.EliminarCfdiByNominaIds(idNominas, idEjercicio, periodoEstatusActual, idSucursal);


            //Generar los XML y el Timbrado.
            //Debug.WriteLine($"Inicio v1 {DateTime.Now}");
            //var nominasTimbradas = await tc.GenerarCfdiAsync(idUsuario, idNominas, idEjercicio, periodoEstatusActual, pathLog, timbradoPrueba, isCfdi33);
            //Debug.WriteLine($"FIN v1 {DateTime.Now}");

            //version 2
            GlobalConfig gconfig          = new GlobalConfig();
            var          servidorConfig   = gconfig.GetGlobalConfig();
            var          nominasTimbradas = await tcv2.GenerarCfdiV2Async(idUsuario, idNominas, periodoEstatusActual, servidorConfig, false);


            if (nominasTimbradas.Count > 0)
            {
                summaryList.AddRange(nominasTimbradas);
            }

            //Genera los pdf de las nominas timbradas.
            var pErrores = await pc.GenerarPdfAsync(idNominas, idEjercicio, idPeriodo, isFiniquito : isFiniquito, isCfdi33 : isCfdi33);


            //Actualizar el Periodo con el estatus de CFDIGenerado a Generado
            //periodoEstatusActual.CfdiGenerado = (int)GenerarCfdiEstatus.Generado;
            //SaveChange();
            objPeriodo.UpdateCfdiEstatus(periodoEstatusActual, GenerarCfdiEstatus.Generado);

            return(summaryList);
        }