예제 #1
0
        /// <summary>
        /// Metodo para crear sobre para el comprobante
        /// </summary>
        /// <param name="cfe"></param>
        private Sobre CrearSobre(CFE cfe, bool sobreDgi)
        {
            Sobre  sobre           = new Sobre(cfe);
            string infoCertificado = "";

            try
            {
                infoCertificado = ProcTransformacion.ObtenerCadenaCertificado();

                if (infoCertificado.Equals(""))
                {
                    sobre = null;
                }
                else
                {
                    if (sobreDgi)
                    {
                        ManteUdoDocumento manteUdoDocumento = new ManteUdoDocumento();
                        string            rutConfigurado    = manteUdoDocumento.ObtenerRut();
                        //Proceso para DGI
                        if (rutConfigurado != null)
                        {
                            sobre.RucReceptor = rutConfigurado;//214844360018;//219999830019
                        }
                        else
                        {
                            sobre.RucReceptor = "214844360018";//219999830019
                        }
                        sobre.X509Certificate = infoCertificado;
                        sobre.ObtenerCertificadosCreados(listaCertificadosCreados);

                        string xmlSobreDGI = ProcSerializacion.CrearXmlSobre(sobre);

                        ProcTransformacion.GuardarSobrePrevio(sobre.NombrePrev, xmlSobreDGI, true);
                        ProcTransformacion.TransformarSobre(sobre.NombrePrev, sobre.Nombre, sobre.ListaCertificados, "", true);
                    }
                    else
                    {
                        //Proceso para Tercero

                        sobre.X509Certificate = infoCertificado;
                        sobre.ObtenerCertificadosCreados(listaCertificadosCreados);

                        string xmlSobreCliente = ProcSerializacion.CrearXmlSobre(sobre);

                        ProcTransformacion.GuardarSobrePrevio(sobre.NombrePrev, xmlSobreCliente, false);

                        if (!cfe.TextoLibreAdenda.Equals(""))
                        {
                            ProcTransformacion.TransformarSobre(sobre.NombrePrev, sobre.Nombre, sobre.ListaCertificados, cfe.TextoLibreAdenda, false);
                        }
                        else
                        {
                            ProcTransformacion.TransformarSobre(sobre.NombrePrev, sobre.Nombre, sobre.ListaCertificados, "", false);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: " + ex.ToString());
            }

            return(sobre);
        }
예제 #2
0
        /// <summary>
        /// Crea los archivos de xml para los certificados
        /// </summary>
        /// <param name="cfe"></param>
        private string CrearCertificado(CFE cfe)
        {
            string codSeguridad = "";

            try
            {
                int  i            = 0;
                bool estadoAdenda = false;

                if (cfe.Items != null)
                {
                    while (i < cfe.Items.Count)
                    {
                        if (cfe.Items[i].UnidadMedida.Length > 4)
                        {
                            cfe.Items[i].UnidadMedida = "N/A";
                        }
                        i++;
                    }
                }

                //Limpia la lista de certificados creados
                listaCertificadosCreados.Clear();

                //Agregar certificado a lista de certificados creados
                listaCertificadosCreados.Add(cfe);

                String xmlCertificado = ProcSerializacion.CrearXmlCFE(cfe);
                string adenda         = ProcTransformacion.ObtenerAdenda(cfe);
                ProcTransformacion.GuardarCertificadoPrevio(cfe.TipoCFEInt, cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), xmlCertificado);

                if (cfe.InfoReferencia.Count > 0)
                {
                    //Valida que la referencia sea global o especifica
                    if (cfe.InfoReferencia[0].IndicadorReferenciaGlobal == CFEInfoReferencia.ESIndicadorReferenciaGlobal.ReferenciaGlobal)
                    {
                        ProcTransformacion.TransformarCertificado(cfe.TipoCFEInt, cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), cfe.TipoCFE, cfe.TipoDocumentoReceptor, true);
                    }
                    else
                    {
                        ProcTransformacion.TransformarCertificado(cfe.TipoCFEInt, cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), cfe.TipoCFE, cfe.TipoDocumentoReceptor);
                    }
                }
                else
                {
                    ProcTransformacion.TransformarCertificado(cfe.TipoCFEInt, cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), cfe.TipoCFE, cfe.TipoDocumentoReceptor);
                }

                if (!adenda.Equals(""))
                {
                    ProcTransformacion.GenerarCFEAdenda(cfe.TipoCFEInt, cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), adenda);
                    estadoAdenda = true;
                }

                ProcTransformacion.FirmarCertificado(RUTA_CERTIFICADO, cfe.TipoCFEInt, cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), CLAVE_CERTIFICADO, false, ref codSeguridad);

                if (estadoAdenda)
                {
                    ProcTransformacion.FirmarCertificado(RUTA_CERTIFICADO, cfe.TipoCFEInt, cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), CLAVE_CERTIFICADO, estadoAdenda, ref codSeguridad);
                }
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: " + ex.ToString());
            }
            return(codSeguridad);
        }