Debugueo
Validar Layout es procesable
En ocasiones será necesario apoyarse en alguna herramienta para ver que es lo que se está creando como xml en la interface de facturación.
La forma más sencilla es descargar la página html que aparece en la siguiente liga
Abra la página con su navegador y copie y pegue su layout en el recuadro de texto.
Agregue a su layout la línea
DEBUG:opción
Opciones:
Opción | Descripción |
---|---|
0 | Timbrado normal |
1 | Generar XML completo y presentar xml (deberá ver código fuente de la página para ver xml creado) Esta opción se puede usar desde su aplicación para que descargue el xml y lo revise desde su aplicación |
cartaporte | Generar complemento de carta porte y presentar en navegador |
pago | Generar complemento de pago y presentar en navegador |
nomina | Genera complemento de nómina y presenta en el navegador |
complemento | Genera otros complementos diferentes a los anteriores y presenta en navegador |
Esto hará que el proceso de timbrado presente el xml que se ha generado y esto le permitirá validar:
- Si los valores se han colocado en los lugares que usted espera
- Valide si se generaron los nodos que usted espera, si faltan o están en desorden
- Validar si envió valores inválidos en el layout y que están ocasionado algún error de validación del PAC
- Poder relacionar mejor el error que reporta el PAC contra el XML
Ejemplo de un layout con debug para pago
EMPRESA:EXTERNOS|testext452|EKU9003173C9|CTE4049
DEBUG:pago
COMPROBANTE:4.0|VDP4|410114|04/05/2022|||0|0|XXX||0|P||20200||01
PDF:Aguascalientes, Ags|V9633|04/05/2022|Recibo Pago
RESPUESTA:HTML
RECEPTOR:MSO0206067S5|MICROFLOW SOFTWARE|||CP01||20218|603
RECEPTOR_DIRECCION:La calle|1000||La colonia|20000|Aguascalientes|Aguascalientes|Aguascalientes|México
LINEA:84111506||1|ACT||Pago|0|0||01
PAGOS:2.0
TOTALES:1|1||100|16|100|8||||500
PAGO:2022-05-04T12:00:00|03|MXN|1|500|123456789|BBA940707IE1||0001235485|BBA940707IE1|0006985412||||
PAGO_DOCRELACIONADO:3CACDB80-D1C0-4CB9-B312-FDC2193ECB32|A|88|MXN|1|1|500|500|0|02
RETENCION_DR:10|001|Tasa|0.100000|1
RETENCION_DR:10|002|Tasa|0.100000|1
TRASLADO_DR:100|002|Tasa|0.160000|16
TRASLADO_DR:100|002|Tasa|0.080000|8
RETENCION_P:001|1
RETENCION_P:002|1
TRASLADO_P:100|002|Tasa|0.160000|16
TRASLADO_P:100|002|Tasa|0.080000|8
PAGOS_FIN:
FIN:
Resultado
<pago20:Pagos Version="2.0">
<pago20:Totales TotalRetencionesIVA="1" TotalRetencionesISR="1" TotalTrasladosBaseIVA16="100" TotalTrasladosImpuestoIVA16="16" TotalTrasladosBaseIVA8="100" TotalTrasladosImpuestoIVA8="8" MontoTotalPagos="500" />
<pago20:Pago FechaPago="2022-05-04T12:00:00" FormaDePagoP="03" MonedaP="MXN" TipoCambioP="1" Monto="500" NumOperacion="123456789" RfcEmisorCtaOrd="BBA940707IE1" CtaOrdenante="0001235485" RfcEmisorCtaBen="BBA940707IE1" CtaBeneficiario="0006985412">
<pago20:DoctoRelacionado IdDocumento="3CACDB80-D1C0-4CB9-B312-FDC2193ECB32" Serie="A" Folio="88" MonedaDR="MXN" EquivalenciaDR="1" NumParcialidad="1" ImpSaldoAnt="500" ImpPagado="500" ImpSaldoInsoluto="0" ObjetoImpDR="02">
<pago20:ImpuestosDR>
<pago20:RetencionesDR>
<pago20:RetencionDR BaseDR="10" ImpuestoDR="001" TipoFactorDR="Tasa" TasaOCuotaDR="0.100000" ImporteDR="1" />
<pago20:RetencionDR BaseDR="10" ImpuestoDR="002" TipoFactorDR="Tasa" TasaOCuotaDR="0.100000" ImporteDR="1" />
</pago20:RetencionesDR>
<pago20:TrasladosDR>
<pago20:TrasladoDR BaseDR="100" ImpuestoDR="002" TipoFactorDR="Tasa" TasaOCuotaDR="0.160000" ImporteDR="16" />
<pago20:TrasladoDR BaseDR="100" ImpuestoDR="002" TipoFactorDR="Tasa" TasaOCuotaDR="0.080000" ImporteDR="8" />
</pago20:TrasladosDR>
</pago20:ImpuestosDR>
</pago20:DoctoRelacionado>
<pago20:ImpuestosP>
<pago20:RetencionesP>
<pago20:RetencionP ImpuestoP="001" ImporteP="1" />
<pago20:RetencionP ImpuestoP="002" ImporteP="1" />
</pago20:RetencionesP>
<pago20:TrasladosP>
<pago20:TrasladoP BaseP="100" ImpuestoP="002" TipoFactorP="Tasa" TasaOCuotaP="0.160000" ImporteP="16" />
<pago20:TrasladoP BaseP="100" ImpuestoP="002" TipoFactorP="Tasa" TasaOCuotaP="0.080000" ImporteP="8" />
</pago20:TrasladosP>
</pago20:ImpuestosP>
</pago20:Pago>
</pago20:Pagos>
Ejemplo, layout con complemento Servicio Parcial de la construcción
EMPRESA:EXTERNOS|testext452|EKU9003173C9|CTE4049|603
DEBUG:complemento
COMPROBANTE:4.0|V4|4123228|04/05/2022|03|Contado|1600.00|100.00|MXN|1|1660.00|I|PUE|20200||01
PDF:Aguascalientes, Ags|V9633|04/05/2022|Factura|1
RESPUESTA:HTML
RECEPTOR:MSO0206067S5|MICROFLOW SOFTWARE|||G01||20218|603
RECEPTOR_DIRECCION:La calle|1000||La colonia|20000|Aguascalientes|Aguascalientes|Aguascalientes|México
IMPUESTOS:|160.000000
IMPUESTO_TRASLADO:1000|002|Tasa|0.160000|160.00
IMPUESTO_TRASLADO:500|002|Tasa|0|0.00
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 1|600.00|600.00|100.00|02
IMPUESTO_LINEA:500.00|002|Tasa|0.160000|80.000000
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 2|500.00|500.00|0.00|02|
IMPUESTO_LINEA:500.00|002|Tasa|0.160000|80.000000
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 3|500.00|500.00|0.00|02|PREDIAL:12345678
IMPUESTO_LINEA:500.00|002|Tasa|0|0.000000
COMPLEMENTO_SERVCONST:0044444|calle|22|A|01|01|referencia|01|01|20000
FIN:
Resultado
<servicioparcial:parcialesconstruccion Version="1.0" NumPerLicoAut="0044444">
<servicioparcial:Inmueble Calle="calle" NoExterior="22" NoInterior="A" Colonia="01" Localidad="01" Referencia="referencia" Municipio="01" Estado="01" CodigoPostal="20000"/>
</servicioparcial:parcialesconstruccion>
Errores de timbrado del SAT
Siempre que el PAC genera un error de validación verá una clave y una descripción del error similar al siguiente mensaje
CFDI40145 - El campo Nombre del receptor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Receptor.
La clave marcada en negritas, nos indica que validación genera el error.
Las primeras siglas definen en que matriz de errores buscar la clave de error, por ejemplo:
- CFDI[version][número de error]: Errores del CFDI correspondiente a la versión.
- CFDI40145 : Matriz de errores de CFDI versión 4.0, error 145
- CFDI33300 : Matriz de errores de CFDI versión 3.3, error 330
- CRP[version][número error] : Complemento de Recepción de pagos
- NOM[número error] : Nómina
- CCE[número error] : Complemento comercio exterior
Tome el archivo de matriz de error correspondiente, localice el error.
Dependiendo el la versión del archivo de validación podrá encontrar varias columnas diferentes
Las columnas importantes son las siguientes
- Validación : Indica la regla que se aplicó
- Error : Error que se debe presentar al usuario
Otras columnas posiblemente disponibles
- Elemento : Que nodo del CFDI o complemento es el que ocasiona el error
- Atributo : Atributo que se usó para validar
Los errores pueden ser confusos o no definir la regla correctamente
Con los años hemos notado que las descripciones de error están mal redactadas, es mejor usar la columna de validación para entender la regla que se aplicó.
Ponga especial atención a la redacción para considerar cosas como : no debe, debe, hasta, por lo menos.
Guías de llenado
Las guías de llenado nos permiten darnos una idea sobre como llenar los datos que se deben incorporar en el layout. Además de dar casos de uso específicos en algunos giros o situaciones especiales como lo puede ser el complemento de Carta Porte, Exportación, etc.
Se recomienda tenerlos a la mano para poder resolver dudas de que valores de pueden o no incorporar en algún campo del CFDI o complemento.
Ligas a las matrices de errores y guías de llenado
Las ligas a las matrices de errores se localizan en las páginas del SAT, las siguientes ligas le pueden ayudar a localizar la que ocupe.
Considere que las ligas pueden ser obsoletas, si encuentra un error favor de reportar para corregirlas.
Complementos
http://omawww.sat.gob.mx/factura/Paginas/emite_complementosdefactura.htm
CFDI
http://omawww.sat.gob.mx/tramitesyservicios/Paginas/anexo_20_version3-3.htm