public EventosPagina(CFE pInfoComprobante, CAE pInfoCAE, string pDomicilioFiscal, string pLogo, string pDocNum, DatosPDF pDatosPdf) { this.infoCAE = pInfoCAE; this.infoComprobantes = pInfoComprobante; this.domicilioFiscal = pDomicilioFiscal; this.logo = pLogo; this.docNum = pDocNum; this.datosPdf = pDatosPdf; }
private void enviarNC(int numeroDocumento, string formaPago, string adenda, string razonRef) { AdminEventosUI eventos = new AdminEventosUI(true); NotaCreditoB1 notaCreditoB1 = new NotaCreditoB1(); DatosPDF datosPdf = new DatosPDF(); datosPdf = DocumentoB1.ObtenerkilosFactura(numeroDocumento, "RIN1", datosPdf); datosPdf = DocumentoB1.ObtenerDatosPDF(numeroDocumento, "ORIN", datosPdf); datosPdf.NombreVendedor = DocumentoB1.ObtenerNombreVendedor(numeroDocumento, "ORIN"); datosPdf.NombreExtranjero = DocumentoB1.ObtenerNombreExtranjero(numeroDocumento, "ORIN"); datosPdf.Titular = DocumentoB1.Titular(numeroDocumento, "ORIN"); datosPdf = DocumentoB1.ObtenerDatosDireccion(datosPdf); datosPdf = DocumentoB1.ActualizarEstado(datosPdf); datosPdf = DocumentoB1.ActualizarCodigo(datosPdf); datosPdf = DocumentoB1.ActualizarNumPedido(datosPdf); datosPdf.FormaPago = formaPago; //Obtener el objeto cfe a partir de los datos del documento creado cfe = notaCreditoB1.ObtenerDatosNotaCredito(numeroDocumento, Objetos.CAE.ESTipoCFECFC.NCEFactura, formaPago, adenda, razonRef); if (cfe != null) { if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar("999", cfe.SerieComprobante); } else { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante); } //Actualizar datos del CFE en el documento creado notaCreditoB1.ActualizarDatosCFENotaCredito(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), cfe.InfoReferencia); DocumentoB1.ActualizarCAEAsiento(int.Parse(datosPdf.DocNum), cfe.TipoCFEInt.ToString(), cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), "14", ""); datosPdf.DescuentoGeneral = NotaCreditoB1.descuentoGeneral; datosPdf.DescuentoExtranjero = NotaCreditoB1.descuentoGeneralExtranjero; datosPdf.PorcentajeDescuento = NotaCreditoB1.porcentajeDescuento; eventos.EnviarDocumento(cfe, cae, datosPdf, "RIN1", null, "ORIN"); //Cambio el estado a Procesado para no volver a enviarlo notaCreditoB1.ActualizarEstadoDocumento(numeroDocumento, PROCESADO, cfe.CodigoSeguridad); cfe = null; cae = null; } }
/// <summary> /// Metodo para crear un pdf para los documentos fiscales /// </summary> /// <returns></returns> #region Proceso_WebService //public bool CrearPDF(string tabla, DatosPDF datosPDF, List<ResguardoPdf> resguardoPdf, string TablaCabezal) #endregion Proceso_WebService public bool CrearPDF(string tabla, DatosPDF datosPDF, List <ResguardoPdf> resguardoPdf, string TablaCabezal, string origenFE = null) { bool resultado = false; int opcFactura = 0; //Nombre del archivo sin extension y ruta nombreCompuesto = infoComprobante.TipoCFEInt + infoComprobante.SerieComprobante + infoComprobante.NumeroComprobante; if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { //Nombre de Archivos con ruta para proceso de firma electronica archivoSinFirmar = RutasCarpetas.RutaCarpetaContingenciaComprobantes + nombreCompuesto + "sf.pdf"; archivoFirmado = RutasCarpetas.RutaCarpetaContingenciaComprobantes + nombreCompuesto + ".pdf"; } else { //Nombre de Archivos con ruta para proceso de firma electronica archivoSinFirmar = RutasCarpetas.RutaCarpetaComprobantes + nombreCompuesto + "sf.pdf"; archivoFirmado = RutasCarpetas.RutaCarpetaComprobantes + nombreCompuesto + ".pdf"; } ManteUdoLogo mante = new ManteUdoLogo(); rutaLogo = mante.Consultar(true); bool estadoAdenda = false; try { //Muestra cursor de espera Cursor.Current = Cursors.WaitCursor; Document comprobante = new Document(PageSize.A4, 10, 10, 100, 160); //centenario // Document comprobante = new Document(PageSize.A4, 10, 10, 230, 110); //saint //Se crea el archivo que va contener el Pdf StreamWriter fac = File.CreateText(archivoSinFirmar); fac.Close(); FileStream docCreado = new FileStream(archivoSinFirmar, FileMode.Open , FileAccess.Write); //Se crea una instancia para escribir el contenido del pdf en el archivo fisico PdfWriter writer = PdfWriter.GetInstance(comprobante, docCreado); #region Encabezado y Pie de Pagina string domicilioFiscalEmisor = ObtenerDomicilioFiscalEmisor(); //Se envia la informacion contenida en el encabezado de las paginas writer.PageEvent = new ZonasCFE.EventosPagina(infoComprobante, infoCAE, domicilioFiscalEmisor, rutaLogo, datosPDF.DocNum); //, datosPDF);//saint #endregion Encabezado y Pie de Pagina //Se abre el documento pdf a crear comprobante.Open(); ZonasCFE.CuerpoComprobante cuerpoComprobante = new ZonasCFE.CuerpoComprobante(); bool ticket = ComprobarTicket(infoComprobante.TipoCFEInt); #region Receptor //Genera la zona de informacion del receptor de la factura comprobante = cuerpoComprobante.Receptor(infoComprobante, comprobante, writer, ticket, datosPDF); #endregion Receptor #region Detalle Producto o Servicio if (infoComprobante.TipoCFEInt != 182 && infoComprobante.TipoCFEInt != 282) { //Verificar el si la factura es para productos o servicios if (infoComprobante.TipoDocumentoSAP.ToString().Equals("Servicio")) { opcFactura = 1; } //Comprueba si hay que agregar la adenda if (Adenda()) { estadoAdenda = true; } ///Genera el detalle de productos para la factura; comprobante = cuerpoComprobante.DetalleMercaderia(comprobante, opcFactura, kilosComprobante, tabla, datosPDF, infoComprobante, TablaCabezal); } else { List <ResguardoPdf> listaResguardo = new List <ResguardoPdf>(); foreach (ResguardoPdf facturaResguardo in resguardoPdf) { facturaResguardo.FechaFactura = infoComprobante.FechaComprobante; if (datosPDF.DescuentoGeneral > 0) { facturaResguardo.MontoImponible = (double.Parse(facturaResguardo.MontoImponible) - datosPDF.DescuentoGeneral).ToString(); } else if (datosPDF.DescuentoExtranjero > 0) { facturaResguardo.MontoImponible = (double.Parse(facturaResguardo.MontoImponible) - datosPDF.DescuentoExtranjero).ToString(); } listaResguardo.Add(facturaResguardo); } comprobante = cuerpoComprobante.DetalleResguardo(comprobante, listaResguardo, infoComprobante.FechaComprobante); } #endregion Detalle Producto o Servicio //Se cierran los documentos utilizados comprobante.Close(); docCreado.Close(); //Firma digitalmente al documento creado FirmaDigital firma = new FirmaDigital(); ManteUdoCertificadoDigital cerDigital = new ManteUdoCertificadoDigital(); //Se obtiene informacion del certificado digital string rutaCertificado = cerDigital.ObtenerRutaCertificado(); string passCertificado = cerDigital.ObtenerPassCertificado(); if (rutaCertificado.Equals("") || passCertificado.Equals("")) { errorCertificado = true; } else { if (firma.infoCertificado(archivoSinFirmar, archivoFirmado, rutaCertificado, passCertificado)) { //Valida que exista la ruta a borrar if (!archivoSinFirmar.Equals("")) { //Borra el archivo pdf sin la firma electronica System.IO.File.Delete(PDFs.archivoSinFirmar); } if (!FrmEstadoContingencia.estadoContingencia.Equals("Y")) { AccionesFueraHilo acciones = new AccionesFueraHilo(); #region Proceso_WebService //acciones.Imprimir(archivoFirmado); if (origenFE == null) { acciones.Imprimir(archivoFirmado); } else { string copiaArchivo = archivoFirmado.Replace(RutasCarpetas.RutaCarpetaComprobantes, RutasCarpetas.RutaCarpetaImpresion); System.IO.File.Copy(archivoFirmado, copiaArchivo, false); Program.colaImpresion.Enqueue(copiaArchivo); } #endregion Proceso_WebService DatosCorreo datosCorreo = new DatosCorreo(); datosCorreo.CorreoReceptor = infoComprobante.CorreoReceptor; datosCorreo.EstadoAdenda = estadoAdenda; datosCorreo.NombreCompuesto = nombreCompuesto; acciones.EjecutarCorreo(datosCorreo); resultado = true; } else { resultado = true; } } else { errorFirma = true; } } } catch (Exception ex) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: CrearPDF/ " + ex.ToString()); } finally { //Se quita el cursor de espera Cursor.Current = Cursors.AppStarting; } return(resultado); }
/// <summary> /// Metodo que llama a la generacion de documentos de tipo pdf /// Firmados digitalmente /// </summary> /// <param name="cfe"></param> /// <param name="cae"></param> /// <param name="kilosFactura"></param> /// <param name="tabla"></param> /// <param name="descuentoGeneral"></param> public void CrearPDF(CFE cfe, CAE cae, DatosPDF datosPdf, string tabla, List <ResguardoPdf> resguardoPdf, string tablaCabezal) { try { if (cae != null) { RutasCarpetas rutas = new RutasCarpetas(); rutas.generarCarpetas(); //Llamada a metodo para comprobar si hay datos de firma digital ObtenerFirmaDigital(); //Crear instancia de Pdfs pdfs = new PDFs(cfe, cae, datosPdf.KilosFactura); ////Se genera el archivo xml //ArchivoXml archXml = new ArchivoXml(); //archXml.generarXml(cfe, cae); //Crear pdf y validar creacion #region Proceso_WebService if (pdfs.CrearPDF(tabla, datosPdf, resguardoPdf, tablaCabezal)) //if (pdfs.CrearPDF(tabla, datosPdf, resguardoPdf, tablaCabezal, cfe.OrigenFE)) *** Se comenta porque se hace esto para todos los casos! #endregion Proceso_WebService { if (EventosPagina.errorRutaLogo) { //Se informa al usuario de que la ruta especificada para el logo es incorrecta app.MessageBox(Mensaje.errRutaLogoIncorrecta); EventosPagina.errorRutaLogo = false; } if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { AdminEventosUI.mostrarMensaje(Mensaje.sucFactura, AdminEventosUI.tipoMensajes.exito); } else { AdminEventosUI.mostrarMensaje(Mensaje.sucFacturaCorreo, AdminEventosUI.tipoMensajes.exito); } } else { if (!EventosPagina.errorRutaLogo && !PDFs.errorCertificado && !PDFs.errorFirma && !PDFs.errorCorreo && !PDFs.errorImprimir) { AdminEventosUI.mostrarMensaje(Mensaje.errFalloGenerarPdf, AdminEventosUI.tipoMensajes.error); } if (EventosPagina.errorRutaLogo) { AdminEventosUI.mostrarMensaje(Mensaje.errRutaLogoIncorrecta, AdminEventosUI.tipoMensajes.error); EventosPagina.errorRutaLogo = false; } if (PDFs.errorCertificado) { AdminEventosUI.mostrarMensaje(Mensaje.errDatosNoConfigurados, AdminEventosUI.tipoMensajes.error); PDFs.errorCertificado = false; } if (PDFs.errorFirma) { AdminEventosUI.mostrarMensaje(Mensaje.errFalloFirmaPdf, AdminEventosUI.tipoMensajes.error); PDFs.errorFirma = false; } if (PDFs.errorCorreo) { if (Mail.errorCorreo.Equals("")) { AdminEventosUI.mostrarMensaje(Mensaje.errConfErroneaCorreo, AdminEventosUI.tipoMensajes.error); } else { AdminEventosUI.mostrarMensaje(Mensaje.err + Mail.errorCorreo, AdminEventosUI.tipoMensajes.error); } PDFs.errorCorreo = false; } if (PDFs.errorImprimir) { AdminEventosUI.mostrarMensaje(Mensaje.errFalloImprimirPdf, AdminEventosUI.tipoMensajes.error); PDFs.errorImprimir = false; } } } else { AdminEventosUI.mostrarMensaje(Mensaje.errConfErroneaCae, AdminEventosUI.tipoMensajes.error); } } catch (Exception ex) { app.MessageBox("JobEnvioSobre/Error: " + ex.ToString()); } }
private void enviarFactura(int numeroDocumento, string formaPago, string adenda) { AdminEventosUI eventos = new AdminEventosUI(true); FacturaB1 facturaB1 = new FacturaB1(); DatosPDF datosPdf = new DatosPDF(); datosPdf = DocumentoB1.ObtenerkilosFactura(numeroDocumento, "INV1", datosPdf); datosPdf = DocumentoB1.ObtenerDatosPDF(numeroDocumento, "OINV", datosPdf); datosPdf.NombreVendedor = DocumentoB1.ObtenerNombreVendedor(numeroDocumento, "OINV"); datosPdf.NombreExtranjero = DocumentoB1.ObtenerNombreExtranjero(numeroDocumento, "OINV"); datosPdf.Titular = DocumentoB1.Titular(numeroDocumento, "OINV"); datosPdf = DocumentoB1.ObtenerDatosDireccion(datosPdf); datosPdf = DocumentoB1.ActualizarEstado(datosPdf); //Saint datosPdf = DocumentoB1.ActualizarCodigo(datosPdf); //Saint datosPdf = DocumentoB1.ActualizarNumPedido(datosPdf); //Obtener el objeto cfe a partir de los datos del documento creado cfe = facturaB1.ObtenerDatosFactura(numeroDocumento, Objetos.CAE.ESTipoCFECFC.EFactura, formaPago, adenda); if (cfe != null) { if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { cae = manteUdoCae.Consultar("999", cfe.SerieComprobante); } else { cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante); } //Actualizar datos del CFE en el documento creado facturaB1.ActualizarDatosCFEFActura(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString()); DocumentoB1.ActualizarCAEAsiento(int.Parse(datosPdf.DocNum), cfe.TipoCFEInt.ToString(), cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), "13", "F"); datosPdf.DescuentoGeneral = FacturaB1.descuentoGeneral; datosPdf.DescuentoExtranjero = FacturaB1.descuentoGeneralExtranjero; datosPdf.PorcentajeDescuento = FacturaB1.porcentajeDescuento; eventos.EnviarDocumento(cfe, cae, datosPdf, "INV1", null, "OINV"); //Cambio el estado a Procesado para no volver a enviarlo facturaB1.ActualizarEstadoDocumento(numeroDocumento, PROCESADO, cfe.CodigoSeguridad); cfe = null; cae = null; //Valida que el documento sea un resguardo if (manteDocumentos.ValidarDocumentoResguardo(numeroDocumento, "INV5")) { ResguardoB1 resguardoB1 = new ResguardoB1(); //Obtener el objeto cfe a partir de los datos del documento creado cfe = resguardoB1.ObtenerDatosResguardo(numeroDocumento, Objetos.CAE.ESTipoCFECFC.ERemito); List <ResguardoPdf> resguardoPdf = DocumentoB1.ObtenerResguardoPdf(numeroDocumento, "OINV", "INV1", "INV5"); if (cfe != null) { if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar("999", cfe.SerieComprobante); } else { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante); } //Actualizar datos del CFE en el documento creado resguardoB1.ActualizarDatosCFEResguardo(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString()); datosPdf.DescuentoGeneral = ResguardoB1.descuentoGeneral; datosPdf.DescuentoExtranjero = ResguardoB1.descuentoGeneralExtranjero; eventos.EnviarDocumento(cfe, cae, datosPdf, "INV1", resguardoPdf, "OINV"); //Cambio el estado a Procesado para no volver a enviarlo resguardoB1.ActualizarEstadoDocumento(numeroDocumento, PROCESADO, cfe.CodigoSeguridad); cfe = null; cae = null; } } } }