/// <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); }
/// <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); }