//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); }
/// <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); }