Beispiel #1
0
        /// <summary>
        /// Retorna una lista con las rutas de los archivos generados
        /// </summary>
        /// <param name="idNominas"></param>
        /// <param name="idUsuario"></param>
        /// <param name="ruta"></param>
        /// <returns></returns>
        public async Task <string[]> DownloadRecibosCfdiAsync(int[] idNominas, int idUsuario, string ruta,
                                                              bool isFiniquito = false)
        {
            PDFCore pc = new PDFCore();

            return(await pc.DownloadRecibos(idNominas, idUsuario, ruta, isFiniquito : isFiniquito));
        }
Beispiel #2
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);
        }
Beispiel #3
0
        public static async Task <string> GetRecibosFiniquitoSinTimbre(int idFiniquito, NOM_PeriodosPago ppago, int idUsuario, string path, bool isCfdi33 = false)
        {
            //Se generan los recibos sin timbrado del sat
            if (idFiniquito != 0)
            {
                PDFCore pcCore = new PDFCore();
                var     recibo =
                    await
                    pcCore.GetRecibosFiniquitoSintimbre(idFiniquito, ppago.IdEjercicio, ppago.IdPeriodoPago, idUsuario, path, isCfdi33);

                return(recibo);
            }
            else
            {
                return(null);
            }
        }
Beispiel #4
0
        public static async Task <string> GetRecibosComplementoDetalle(int[] idEmpleados, NOM_PeriodosPago ppago, int idUsuario, string path)
        {
            //Se generan los recibos sin timbrado del sat
            if (idEmpleados != null)
            {
                PDFCore pcCore = new PDFCore();
                var     recibo =
                    await
                    pcCore.GetRecibosComplementoDetalle(idEmpleados, ppago.IdEjercicio, ppago, idUsuario, path);

                return(recibo);
            }
            else
            {
                return(null);
            }
        }
Beispiel #5
0
        public static async Task <string> GetRecibosComplemento(int[] listNominas, NOM_PeriodosPago ppago, int idUsuario, string path, bool incluirDetalles)
        {
            //Se generan los recibos sin timbrado del sat
            if (listNominas != null)
            {
                PDFCore pcCore = new PDFCore();
                var     recibo =
                    await
                    pcCore.GetRecibosComplemento(listNominas, ppago.IdEjercicio, ppago, idUsuario, path, incluirDetalles);

                return(recibo);
            }
            else
            {
                return(null);
            }
        }
Beispiel #6
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);
        }
Beispiel #7
0
        /// <summary>
        /// Metodo que retorna los archivos pdf en bytes de las nominas solicitadas en el array
        /// </summary>
        /// <param name="idNominas"></param>
        /// <returns></returns>
        public async Task <byte[]> GetArchivosPdfAsync(int[] idNominas)
        {
            PDFCore pc = new PDFCore();

            return(await pc.GetArchivosPdfAsync(idNominas));
        }
Beispiel #8
0
        public byte[] GetReciboReal(int idFiniquito, int idPeriodo, int idUsuario, string pathFolder, bool liquidacion = false)
        {
            PDFCore pc = new PDFCore();

            return(pc.ReciboFiniquitoReal(idFiniquito, idPeriodo, idUsuario, pathFolder, liquidacion));
        }