Ejemplo n.º 1
0
        /// <summary>
        /// Genera el CFDI a partir de los datos ingresados
        /// </summary>
        /// <param name="Peticion"></param>
        /// <param name="RutaCertificado"></param>
        /// <param name="RutaLlavePrivada"></param>
        /// <param name="ContraseñaCertificado"></param>
        /// <returns></returns>
        public bool GeneraCFDI(CFDIPeticion Peticion, string RutaCertificado, string RutaLlavePrivada, string ContraseñaCertificado)
        {
            AdministradorArchivos = new Archivos();

            var Certificado  = AdministradorArchivos.ConvertirStreamToByte(AdministradorArchivos.Abrir(RutaCertificado));
            var LlavePrivada = AdministradorArchivos.ConvertirStreamToByte(AdministradorArchivos.Abrir(RutaLlavePrivada));

            return(GeneraCFDI(Peticion, Certificado, LlavePrivada, ContraseñaCertificado));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Genera el CFDI a partir de los datos ingresados
        /// </summary>
        /// <param name="Peticion"></param>
        /// <param name="Certificado"></param>
        /// <param name="LlavePrivada"></param>
        /// <param name="ContraseñaCertificado"></param>
        /// <returns></returns>
        public bool GeneraCFDI(CFDIPeticion Peticion, Stream Certificado, Stream LlavePrivada, string ContraseñaCertificado)
        {
            AdministradorArchivos = new Archivos();

            var arregloCertificado  = AdministradorArchivos.ConvertirStreamToByte(Certificado);
            var arregloLlavePrivada = AdministradorArchivos.ConvertirStreamToByte(LlavePrivada);

            return(GeneraCFDI(Peticion, arregloCertificado, arregloLlavePrivada, ContraseñaCertificado));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Genera el CFDI a partir de los datos ingresados
        /// </summary>
        /// <param name="Peticion"></param>
        /// <param name="Certificado"></param>
        /// <param name="LlavePrivada"></param>
        /// <param name="ContraseñaCertificado"></param>
        /// <returns></returns>
        public bool GeneraCFDI(CFDIPeticion Peticion, Byte[] Certificado, Byte[] LlavePrivada, string ContraseñaCertificado)
        {
            #region "Variables"
            MensajeError          = string.Empty;
            Mensaje               = string.Empty;
            Resultado             = false;
            AdministradorArchivos = new Archivos();
            Utilerias utilerias = new Utilerias();

            #endregion "Variables"

            #region "Valores Predeterminados"

            Peticion.DatosGenerales.Version    = "3.3";
            Peticion.DatosGenerales.SellaCFDI  = "true";
            Peticion.DatosGenerales.TimbraCFDI = "true";

            if (string.IsNullOrEmpty(Peticion.DatosGenerales.OpcionDecimales))
            {
                Peticion.DatosGenerales.OpcionDecimales = "2"; // Valores permitidos 1: Truncar (Operaciones exactas) 2: Redondear hacia arriba o hacia abajo las cantidades
            }
            if (string.IsNullOrEmpty(Peticion.DatosGenerales.NumeroDecimales))
            {
                Peticion.DatosGenerales.NumeroDecimales = "2";
            }

            var configuracion = new Configuracion();

            Resultado = configuracion.CargaCertificado(Certificado, LlavePrivada, ContraseñaCertificado, Peticion.Encabezado.Emisor.RFC);

            if (Resultado == true)
            {
                Peticion.DatosGenerales.CSD          = AdministradorArchivos.ConvertirByteToBase64(Certificado);
                Peticion.DatosGenerales.LlavePrivada = AdministradorArchivos.ConvertirByteToBase64(LlavePrivada);
                Peticion.DatosGenerales.CSDPassword  = ContraseñaCertificado;
            }
            else
            {
                Mensaje = configuracion.Mensaje;
            }

            if (Peticion.Encabezado.Emisor != null)
            {
                Resultado = utilerias.ValidaRFC(Peticion.Encabezado.Emisor.RFC);
                if (Resultado == false)
                {
                    Mensaje = "El RFC del emisor es incorrecto";
                    return(false);
                }
            }
            else
            {
                Mensaje = "El RFC del emisor es incorrecto";
                return(false);
            }

            if (Peticion.Encabezado.Receptor != null)
            {
                Resultado = utilerias.ValidaRFC(Peticion.Encabezado.Receptor.RFC);
                if (Resultado == false)
                {
                    Mensaje = "El RFC del receptor es incorrecto";
                    return(false);
                }
            }
            else
            {
                Mensaje = "El RFC del receptor es incorrecto";
                return(false);
            }

            if (!string.IsNullOrEmpty(Peticion.DatosGenerales.ReceptorEmail))
            {
                Resultado = utilerias.ValidaCorreos(Peticion.DatosGenerales.ReceptorEmail);
                if (Resultado == false)
                {
                    Mensaje = "El email del destinatario es incorrecto";
                    return(false);
                }
            }

            if (!string.IsNullOrEmpty(Peticion.DatosGenerales.ReceptorEmailCC))
            {
                Resultado = utilerias.ValidaCorreos(Peticion.DatosGenerales.ReceptorEmailCC);
                if (Resultado == false)
                {
                    Mensaje = "El email de la copia es incorrecto";
                    return(false);
                }
            }

            if (!string.IsNullOrEmpty(Peticion.DatosGenerales.ReceptorEmailCCO))
            {
                Resultado = utilerias.ValidaCorreos(Peticion.DatosGenerales.ReceptorEmailCCO);
                if (Resultado == false)
                {
                    Mensaje = "El email de la copia oculta es incorrecto";
                    return(false);
                }
            }

            #endregion "Valores Predeterminados"

            Resultado = false;
            WebServiceFacturoPorTi Api = new WebServiceFacturoPorTi(SandBox);
            Timbrado = Api.ConsumeServicio <CFDIPeticion, GeneraCFDIApiRespuesta>("ApiTimbrarCFDI", FacturoPorTi.Api.Cfdi.Genericos.TipoVerboHttp.Post, Peticion);

            if (Timbrado != null)
            {
                MensajeError = Api.MensajeError;

                if (Timbrado.Estatus.Codigo == "000")
                {
                    Resultado = true;
                    Mensaje   = "Factura generada correctamente";
                }
                else
                {
                    Mensaje = Timbrado.Estatus.Descripcion + Environment.NewLine + Environment.NewLine + Timbrado.Estatus.InformacionTecnica;
                }
            }
            else
            {
                MensajeError = Api.MensajeError;
                Mensaje      = "No se pudo realizar el timbrado si el problema persiste comuniquese a [email protected]";
            }

            return(Resultado);
        }