Beispiel #1
0
 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;
 }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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());
            }
        }
Beispiel #5
0
        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;
                    }
                }
            }
        }