/// <summary> /// Ajustar el formulario /// </summary> /// <param name="formUID"></param> protected override void AjustarFormulario(string formUID) { string rutaLogo = ""; int TimeImp = 0; try { ManteUdoLogo mante = new ManteUdoLogo(); rutaLogo = mante.Consultar(true); TimeImp = mante.ConsultarTimeImp(true); ((EditText)Formulario.Items.Item("txtTimeImp").Specific).Value = TimeImp.ToString(); ((EditText)Formulario.Items.Item("txtRuta").Specific).Value = rutaLogo; } catch (Exception) { } }
/// <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); }