Beispiel #1
0
        /// <summary>
        /// Valida tipo de documento receptor segun la especificacion en la documentacion oficial Formato_CFE_v10 seccion A-60
        /// </summary>
        /// <param name="tipoCFE"></param>
        /// <param name="tipoDocumentoReceptor"></param>
        /// <param name="codigoPaisReceptor"></param>
        /// <param name="numDocReceptorUruguayo"></param>
        /// <param name="numDocReceptorExtrangero"></param>
        /// <param name="totalMontoNoGravado"></param>
        /// <param name="totalMontoExportacionAsimilados"></param>
        /// <param name="totalMontoImpuestoPercibido"></param>
        /// <param name="totalMontoIVASuspenso"></param>
        /// <param name="totalMontoNetoIVATasaMinima"></param>
        /// <param name="totalMontoNetoIVATasaBasica"></param>
        /// <param name="totalMontoNetoIVAOtraTasa"></param>
        /// <returns></returns>
        public static bool TipoDocumentoReceptor(CFE.ESTipoCFECFC tipoCFE, CFE.ESTipoDocumentoReceptor tipoDocumentoReceptor, string codigoPaisReceptor, string numDocReceptorUruguayo,
                                                 string numDocReceptorExtrangero, double totalMontoNoGravado, double totalMontoExportacionAsimilados, double totalMontoImpuestoPercibido,
                                                 double totalMontoIVASuspenso, double totalMontoNetoIVATasaMinima, double totalMontoNetoIVATasaBasica, double totalMontoNetoIVAOtraTasa)
        {
            double montoNeto = 0;

            if (tipoDocumentoReceptor != 0)
            {
                if (codigoPaisReceptor != "" && (numDocReceptorUruguayo != "" || numDocReceptorExtrangero != ""))
                {
                    if ((tipoCFE == CFE.ESTipoCFECFC.EFactura || tipoCFE == CFE.ESTipoCFECFC.NCEFactura || tipoCFE == CFE.ESTipoCFECFC.NDEFactura) && tipoDocumentoReceptor == CFE.ESTipoDocumentoReceptor.RUC)
                    {
                        return(true);
                    }
                    else if ((tipoCFE == CFE.ESTipoCFECFC.ETicket || tipoCFE == CFE.ESTipoCFECFC.NCETicket || tipoCFE == CFE.ESTipoCFECFC.NDETicket))
                    {
                        montoNeto = totalMontoNoGravado + totalMontoExportacionAsimilados + totalMontoImpuestoPercibido + totalMontoIVASuspenso + totalMontoNetoIVATasaMinima + totalMontoNetoIVAOtraTasa;

                        if (montoNeto > 10000)
                        {
                            if (tipoDocumentoReceptor == CFE.ESTipoDocumentoReceptor.RUC || tipoDocumentoReceptor == CFE.ESTipoDocumentoReceptor.CI || tipoDocumentoReceptor == CFE.ESTipoDocumentoReceptor.Otros ||
                                tipoDocumentoReceptor == CFE.ESTipoDocumentoReceptor.Pasaporte || tipoDocumentoReceptor == CFE.ESTipoDocumentoReceptor.DNI)
                            {
                                return(true);
                            }
                        }
                        else
                        {
                            return(true);
                        }
                    }
                    else
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Beispiel #2
0
        /// <summary>
        /// Realiza la transformacion del certificado previo al certificado no firmado apliacando el formato oficial de la DGI
        /// </summary>
        /// <param name="numeroCertificado"></param>
        /// <returns></returns>
        public static bool TransformarCertificado(int tipo, string serie, string numeroCertificado, CFE.ESTipoCFECFC tipoCFE, CFE.ESTipoDocumentoReceptor tipoDocReceptor, bool referenciaGlobal = false)
        {
            try
            {
                XslCompiledTransform proc = new XslCompiledTransform();

                //Carga el estilo del certificado dependiendo del tipo del certificado procesado
                switch (tipoCFE)
                {
                case CFE.ESTipoCFECFC.ETicket:

                    if (tipoDocReceptor == CFE.ESTipoDocumentoReceptor.RUC || tipoDocReceptor == CFE.ESTipoDocumentoReceptor.CI)
                    {
                        proc.Load(@"Certificados\Xml\xslt\ETicket.xslt");
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\ETicketExtranjero.xslt");
                    }

                    break;

                case CFE.ESTipoCFECFC.ETicketContingencia:

                    if (tipoDocReceptor == CFE.ESTipoDocumentoReceptor.RUC || tipoDocReceptor == CFE.ESTipoDocumentoReceptor.CI)
                    {
                        proc.Load(@"Certificados\Xml\xslt\ETicket.xslt");
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\ETicketExtranjero.xslt");
                    }

                    break;

                case CFE.ESTipoCFECFC.NCETicket:

                    if (tipoDocReceptor == CFE.ESTipoDocumentoReceptor.RUC || tipoDocReceptor == CFE.ESTipoDocumentoReceptor.CI)
                    {
                        if (referenciaGlobal)
                        {
                            proc.Load(@"Certificados\Xml\xslt\NCETicketRefGlobal.xslt");
                        }
                        else
                        {
                            proc.Load(@"Certificados\Xml\xslt\NCETicket.xslt");
                        }
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\NCETicketExtranjero.xslt");
                    }

                    break;

                case CFE.ESTipoCFECFC.NCETicketContingencia:

                    if (tipoDocReceptor == CFE.ESTipoDocumentoReceptor.RUC || tipoDocReceptor == CFE.ESTipoDocumentoReceptor.CI)
                    {
                        proc.Load(@"Certificados\Xml\xslt\NCETicket.xslt");
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\NCETicketExtranjero.xslt");
                    }

                    break;

                case CFE.ESTipoCFECFC.NDETicket:

                    if (tipoDocReceptor == CFE.ESTipoDocumentoReceptor.RUC || tipoDocReceptor == CFE.ESTipoDocumentoReceptor.CI)
                    {
                        if (referenciaGlobal)
                        {
                            proc.Load(@"Certificados\Xml\xslt\NDETicketRefGlobal.xslt");
                        }
                        else
                        {
                            proc.Load(@"Certificados\Xml\xslt\NDETicket.xslt");
                        }
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\NDETicketExtranjero.xslt");
                    }

                    break;

                case CFE.ESTipoCFECFC.NDETicketContingencia:

                    if (tipoDocReceptor == CFE.ESTipoDocumentoReceptor.RUC || tipoDocReceptor == CFE.ESTipoDocumentoReceptor.CI)
                    {
                        proc.Load(@"Certificados\Xml\xslt\NDETicket.xslt");
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\NDETicketExtranjero.xslt");
                    }

                    break;

                case CFE.ESTipoCFECFC.EFactura:

                    proc.Load(@"Certificados\Xml\xslt\EFactura.xslt");

                    break;

                case CFE.ESTipoCFECFC.EFacturaContingencia:

                    proc.Load(@"Certificados\Xml\xslt\EFactura.xslt");

                    break;

                case CFE.ESTipoCFECFC.NCEFactura:

                    if (referenciaGlobal)
                    {
                        proc.Load(@"Certificados\Xml\xslt\NCEFacturaRefGlobal.xslt");
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\NCEFactura.xslt");
                    }

                    break;

                case CFE.ESTipoCFECFC.NCEFacturaContingencia:

                    proc.Load(@"Certificados\Xml\xslt\NCEFactura.xslt");

                    break;

                case CFE.ESTipoCFECFC.NDEFactura:

                    if (referenciaGlobal)
                    {
                        proc.Load(@"Certificados\Xml\xslt\NDEFacturaRefGlobal.xslt");
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\NDEFactura.xslt");
                    }

                    break;

                case CFE.ESTipoCFECFC.NDEFacturaContingencia:

                    proc.Load(@"Certificados\Xml\xslt\NDEFactura.xslt");

                    break;

                case CFE.ESTipoCFECFC.ERemito:

                    proc.Load(@"Certificados\Xml\xslt\ERemito.xslt");

                    break;

                case CFE.ESTipoCFECFC.ERemitoContingencia:

                    proc.Load(@"Certificados\Xml\xslt\ERemito.xslt");

                    break;

                case CFE.ESTipoCFECFC.EResguardo:

                    proc.Load(@"Certificados\Xml\xslt\EResguardo.xslt");

                    break;

                case CFE.ESTipoCFECFC.EResguardoContingencia:

                    proc.Load(@"Certificados\Xml\xslt\EResguardo.xslt");

                    break;

                case CFE.ESTipoCFECFC.EFacturaExportacion:

                    proc.Load(@"Certificados\Xml\xslt\EFacturaExportacion.xslt");

                    break;

                case CFE.ESTipoCFECFC.EFacturaExportacionContingencia:

                    proc.Load(@"Certificados\Xml\xslt\EFacturaExportacion.xslt");

                    break;

                case CFE.ESTipoCFECFC.NCEFacturaExportacion:

                    #region FE_EXPORTACION
                    //proc.Load(@"Certificados\Xml\xslt\NCEFacturaExportacion.xslt");
                    if (referenciaGlobal)
                    {
                        proc.Load(@"Certificados\Xml\xslt\NCEFacturaExportacionRefGlobal.xslt");
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\NCEFacturaExportacion.xslt");
                    }
                    #endregion FE_EXPORTACION

                    break;

                case CFE.ESTipoCFECFC.NCEFacturaExportacionContingencia:

                    proc.Load(@"Certificados\Xml\xslt\NCEFacturaExportacion.xslt");

                    break;

                case CFE.ESTipoCFECFC.NDEFacturaExportacion:

                    #region FE_EXPORTACION
                    //proc.Load(@"Certificados\Xml\xslt\NDEFacturaExportacion.xslt");
                    if (referenciaGlobal)
                    {
                        proc.Load(@"Certificados\Xml\xslt\NDEFacturaExportacionRefGlobal.xslt");
                    }
                    else
                    {
                        proc.Load(@"Certificados\Xml\xslt\NDEFacturaExportacion.xslt");
                    }
                    #endregion FE_EXPORTACION

                    break;

                case CFE.ESTipoCFECFC.NDEFacturaExportacionContingencia:

                    proc.Load(@"Certificados\Xml\xslt\NDEFacturaExportacion.xslt");

                    break;

                case CFE.ESTipoCFECFC.ERemitoExportacion:

                    proc.Load(@"Certificados\Xml\xslt\ERemitoExportacion.xslt");

                    break;

                case CFE.ESTipoCFECFC.ERemitoExportacionContingencia:

                    proc.Load(@"Certificados\Xml\xslt\ERemitoExportacion.xslt");

                    break;

                default:
                    break;
                }

                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    RUTA_CERTIFICADOS = RutasCarpetas.RutaCarpetaContingenciaComprobantes;
                }
                else
                {
                    RUTA_CERTIFICADOS = RutasCarpetas.RutaCarpetaCertificadosTemporales;
                }
                proc.Transform(RUTA_CERTIFICADOS + "\\" + tipo + "" + serie + "" + numeroCertificado + "_prev.xml", RUTA_CERTIFICADOS + "\\" + tipo + "" + serie + "" + numeroCertificado + "_nf.xml");

                //Eliminar certificado previo
                File.Delete(RUTA_CERTIFICADOS + "\\" + tipo + "" + serie + "" + numeroCertificado + "_prev.xml");
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }