Buscar en este blog

viernes, 5 de octubre de 2018

(VirtualXML) CRP213 El campo CtaOrdenante no cumple con el patrón requerido

Lo sabía, lo sabía, lo sabía.

Conforme avanza la implementación del Complemento de Recepción de Pago (CRP) también conocido como Recibo Electrónico de Pago (REP) entre nuestros emisores, surgen distintos casos, muchas dudas, y problemas que "antes no pasaban".

Uno de ellos, que es por el que mas nos han llamado esta semana es un error que dice textualmente lo siguiente:

"CRP213 El campo CtaOrdenante no cumple con el patrón requerido."


Y venga la avalancha de llamadas de..... es que me esta rechazando pagos que antes si dejaba pasar....

Bien aclaremos y resolvamos esta incógnita de una vez y para siempre.

Para dar con el culpable, tendremos que irnos al Catálogo de Complemento de Pagos, publicado por el SAT en:


 Este catálogo es una hoja de Excel, donde el primer libro, llamado c_FormaPago tiene la respuesta a nuestras preguntas.

En este libro tenemos el Catálogo de Formas de Pago que tendremos que usar para llenar nuestro complemento y esta divido, entre otras en las siguientes columnas, que son las que nos importan realmente:
  • Clave de la Forma de Pago
  • Descripción
  • Bancarizado
  • Numero de operacion
  • RFC del emisor de la cuenta ordenante
  • Cuenta ordenate y.......
  • PATRON PARA LA CUENTA ORDENANTE
O lo que es lo mismo:


Como podemos ver, en la columna Patrón para cuenta ordenante, está definida la EXPRESION REGULAR (Regular Expression) que define como debe de ir conformado el numero de cuenta ordenante.

No voy a entrar en detalle de lo que es una expresión regular, asumo que ya lo sabes, pero por si acaso, te dejo el link de la Wikipedia para mas información:


Bien, volviendo al tema, si revisamos las RegEx (Regular Expressions) de los patrones de cuenta ordenante lo primero que podemos apreciar, es que el patrones que define el pago con Cheque nominativo no es el mismo que el patrón que define el pago con Transferencia electrónica de fondos, ni el mismo de la tarjeta de crédito.

Veamos:

Para pago con cheque nominativo la RegEx es: 

[0-9]{11}|[0-9]{18}

Que significa lo siguiente:

Este patron acepta 2 formatos:
  1. 11 digitos del 0 al 9
  2. 18 digitos del 0 al 9 (esto equivale a la Clave Bancaria Estandarizada CLABE) 
Hasta aquí aparentemente no hay problema, si nos pagan con cheque nominativo entonces la cuenta debe de ir expresada con 11 dígitos, o bien debo poner la CLABE que siempre van a ser 18 digitos.

¿ Que pasa si la cuenta tiene menos de 11 dígitos ?, por ejemplo una cuenta de Banamex tiene solo 7 dígitos, muy fácil, rellenaré con ceros "0" a la izquierda, hasta alcanzar los 11 dígitos, por ejemplo:

La cuenta Banamex: 4575787
Quedaría como: 00004575787

Pero si utilizo la CLABE no tengo problema: 002180065145757870

Analicemos ahora la RegEx para el pago con transferencia electrónica de fondos:

[0-9]{10}|[0-9]{16}|[0-9]{18}

A diferencia del anterior, este patrón acepta 3 formatos:
  1. 10 dígitos del 0 al 9
  2. 16 dígitos del 0 al 9
  3. 18 dígitos del 0 al 9
Vemos que salvo el caso de la CLABE (18 digitos), el patrón para pago con cheque NO ES EL MISMO QUE EL PATRON PARA PAGO CON TRANSFERENCIA, por lo tanto NO PODEMOS USAR EL MISMO NUMERO DE CUENTA QUE USAMOS EN EL PAGO CON CHEQUE QUE EN EL PAGO CON TRANSFERENCIA.

Volviendo al ejemplo de Banamex:

La cuenta Banamex: 4575787
Para pago con cheque quedaría: 00004575787
Para pago con transferencia quedaría: 0004575787
Para pago con cheque y transferencia indistintamente: 002180065145757870

Nota que para el pago con cheque he tenido que añadir 4 ceros a la izquierda para alcanzar la logitud de 11 caracteres mientras que para el pago con transferencia he tenido que agregar solo 3 ceros para alcanzar la longitud de 10 dígitos.

¿ No es incoherente que para un caso la cuenta se maneje con 10 dígitos mientras que para otra forma de pago la misma cuenta se maneje con 11 dígitos ?

Probablemente sí, sin embargo hay una solución universal para este problema: Utilizar la CLAve Bancaria Estandarizada (CLABE), que siempre tiene una longitud de 18 dígitos y que todo parece indicar que el SAT junto con BANXICO quieren fomentar su uso, en el complemento de pagos.

Con esto queda revelado el misterio de porqué "el campo CuentaOrdenante no cumple con el patrón requerido".

¿ Porque algunas veces no timbra otros documentos que antes si timbraba ?, no hay misterio, seguramente estas metiendo el numero de cuenta que usabas para el pago con cheque en el pago con transferencia o viceversa.

Pare de sufrir:  utiliza siempre la CLABE y te olvidas de problemas que si con 10 dígitos cuando es transferencia ú 11 dígitos cuando es cheque.

1 comentario: