Socorro!!! Mis facturas no están sincronizadas con las facturas de AFIP!

18 de setiembre de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Este es un problema sencillo, pero que cuando uno lo tiene se requiere un bombero de verdad. El problema es el siguiente. Cuando uno trabaja con la factura electrónica en Argentina, uno debe tener sus facturas sincronizadas con las de AFIP. No solo las facturas sino tambien la numeración de las mismas.

Bueno, eso es lo que se debe hacer. Ahora cuando se pierda esa sincronía podemos ver un mensaje como el que podemos observar a continuación:


O el siguiente mensaje de error de AFIP:

Code 10016: El numero o fecha del comprobante no se corresponde con el próximo a autorizar. Consultar método FECompUltimoAutorizado

Origen del error

El problema es que originalmente la primeras versiones de la localización tenían un error de concepto que era mantener la secuencia de los comprobantes utilizando el mecanismo de secuencias que brinda Odoo. Mecanismo que tiene problemas, Por ejemplo si se obtiene una nueva secuencia y luego ocurre un error, la secuencia no vuelve atrás.

Y este problema en el manejo de las secuencias, tarde o temprano traía problemas (sobre todo cuando se creaban notas de crédito gracias a la opción del wizard que validaba el documento como un documento preimpreso).

Entonces cuando ocurría cualquier error, o el documento tenía una secuencia incorrecta, observabamos el error antes descripto al momento de validar la factura / nota de crédito

Solución aplicada

Lo que hicimos por nuestra parte para solucionar el problema es en el momento de validar la factura, tomar el número de documento provisto por AFIP y luego validar la factura con dicho número (al fin y al cabo, AFIP es mejor que Odoo manteniendo las secuencias, por más que más de uno ponga el grito en el cielo). Y luego actualizar el nro de documento del registro de account.move con el número de documento provisto por AFIP.

Primero obtenemos el número de AFIP

 ws_next_invoice_number = int(
inv.l10n_latam_document_type_id.get_pyafipws_last_invoice(inv)['result']) + 1
cbt_desde = cbt_hasta = cbte_nro = ws_next_invoice_number


Y luego invocar la creación de la factura con dichos datos:

ws.CrearFactura(
concepto, tipo_doc, nro_doc, doc_afip_code, pos_number,
cbt_desde, cbt_hasta, imp_total, imp_tot_conc, imp_neto,
imp_iva,
imp_trib, imp_op_ex, fecha_cbte, fecha_venc_pago,
fecha_serv_desde, fecha_serv_hasta,
moneda_id, round(moneda_ctz,2)
)

Para luego actualizar los datos de la factura de la siguiente manera:

inv.write({
​'afip_auth_mode': 'CAE',
​'afip_auth_code': ws.CAE,
​'afip_auth_code_due': vto,
​'afip_result': ws.Resultado,
​'afip_message': msg,
​'afip_xml_request': ws.XmlRequest,
​'afip_xml_response': ws.XmlResponse,
​'document_number': str(pos_number).zfill(5) + '-' + str(cbte_nro).zfill(8),
​​'name': inv.l10n_latam_document_type_id.doc_code_prefix + ' ' + str(pos_number).zfill(5) + '-' + str(cbte_nro).zfill(8),
})

La mayor parte de esta lógica la encontramos en la localización de AdHoc desde hace muchos años (por lo menos cinco). Nosotros lo único que hicimos fue simplemente asegurarnos que se invocaba a AFIP la creación de la factura con el número de secuencia provisto por AFIP, y luego actualizar los documentos con el número provisto por AFIP.

El código en detalle lo pueden encontrar aca, por si quieren chequearlo. Mi consejo es, revisen la localización que estan usando para asegurarse que el mecanismo de validación de facturas no se guia mediante el mecanismo de secuencias de Odoo para determinar el siguiente documento a validar.

Que hacer con las facturas faltantes o las facturas que tienen mal actualizados los datos

Aca es donde se necesita el bombero. Si la factura se encuentra en AFIP y no esta validada en Odoo, se debe obtener de la misma (cualquier localizacion permite hacerlo) el numero de CAE, actualizarlo en la factura y validarla (esto solo actualiza el estado de la factura sin validarla en AFIP, ya que asume que fue hecho). Asi para todas las facturas.

Si las facturas validadas tienen los numeros mal asignados (no se corresponden con el numero de AFIP) algo que se puede hacer es un script de xmlrpc que lee el request de cada factura (que es donde tenemos el numero de documento que va a tomar AFIP) y actualizar el numero de documento de Odoo con el numero de documento del request. Esto es facil con xmlrpc.

Y por ultimo, supongamos que la factura esta presente en AFIP pero no en Odoo. Aca pueden crearla manualmente, y cargar el numero de CAE para luego validarla. Odoo confirmara el numero de factura sin validarla en AFIP.

Gustavo Orrillo 18 de setiembre de 2023
Compartir
Archivar
Identificarse dejar un comentario