WSCPE reproceso

Al ejecutar alguno de los métodos autorizadores del CPE debe preverse (más allá de la posible respuesta de aceptación o rechazo por parte de AFIP) que no se reciba la respuesta por fallas de conexión o demoras en la red por time out. (descartando que no sea una falta de conexión permanente por ejemplo por no tener internet algo que se puede comprobar con el test de conexión o por no estar usando el procotolo TLS por lo citado en el post)

En estos casos debe verificarse si la ultima carta de porte electrónica enviada fue o no autorizado (ya que la falla pudo ocurrir DESPUÉS que el servidor de AFIP envie la respuesta pero ANTES que se la reciba).

Después de ejecutar el método cpeAutorizar para una sucursal, tipo de comprobante y número, en caso de no recibir respuesta (la propiedad timeout puede usarse para configurar en milisegundos cuando tiempo la interfaz espera la respuesta del servidor antes de dar por perdida la conexión) puede usarse el método cpeConsultar para ese sucursal, tipo de comprobante y número. Esté método recupera todos los datos archivados por AFIP. Si el método cpeConsultar devuelve falso indicará que el error de conexión se originó antes de que AFIP procesara la respuesta (tener en cuenta que el método también puede estar en timeout, ver nota al pie). En este caso se debe volver a ejecutar el método cpeAutorizar con los MISMOS datos.

Alternativamente puede usarse el método cpeconsultarUltNroOrdenS que devuelve para un punto de venta y tipo de comprobante el último numero procesado en AFIP (tener en cuenta que este método también puede estar en timeout, ver nota al pie). Tener en cuenta que es recomendable almacenar localmente la numeración de comprobante y solo recurrir a este método antes fallos de conexión para verificar si el último comprobante fue autorizado. Ya que invocar al método cpeconsultarUltNroOrdenS y cpeAutorizar implica una doble conexión y puede originar que se ejecuten varios cpeAutorizar sumando 1 en la numeración de cada comprobante que quedan duplicados.

En cuando a reducir la frecuencia con la que se recibe el error de tiemout, aunque es algo externo al código hay una guía básica para tratar este error.

La misma guia se aplica si se está intentando otra operación que no es Autorizar (por ejemplo Rechazar). En ese caso si el método cpeRechazar no deja un resultado concreto (ok uo error) se debe aplicar la misma guia usando el método cpeConsultar que recupera los datos del comprobante incluido su estado que permite saber si el método cpgRechazar anterior fue o no procesado por AFIP.

NOTA reproceso para grandes cantidades de comprobantes:

En la guia anterior uno de los pasos es ejecutar el método cpeConsultar para recuperar la CPE (perdida o no recibida en una conexión que demoró mucho tiempo) pero si el timeout o saturación en el servidor de AFIP es extensa este mismo método puede estar también en timeout ( por unos segundos devolver que un comprobante no existe cuando ese número en realidad ya fue autorizado). Esto no afecta la guia para el reproceso que se mantiene con los mismos pasos teniendo en cuenta que:

si cpeAutorizar devuelve timeout se debe ejecutar cpeConsultar que tiene 2 resultados posibles:

1.a) devuelve cae (el ya obtenido que no se llego a recibir antes). seguir con el proceso normal.

1.b) devuelve que el comprobante no existe (aunque puede que no sea correcto por un timeout temporal de AFIP, eso no cambia los pasos del reproceso). simplemente volver a ejecutar cpeAutorizxar (con los MISMOS datos y número de comprobante) el ciclo vuelva a empezar y cpeAutorizar devolverá:

2.a) numero no correlativo (el servidor ya lo autorizó y ya no está en timeout ahora si cpeConsultar devolverá que el numero y el coe están, seguir con el proceso normal)

2.b) devuelve cae (en los pasos anteriores el servidor no habia llegado a procesar el comprobante, seguir con el proceso normal)

2.c) continua timeout.