-
Notifications
You must be signed in to change notification settings - Fork 9
Solución a Errores con AFIP
Un error muy común al validar una factura por primera vez es recibir un mensaje de error con la siguiente estructura:
AFIP Validation Error. Falla SOAP sopa:Client: Server was unable to read request. --→ There is an error in XML document(5, 1494) --→ Input string was not in a correct format.
Posiblemente se deba a que los impuestos no están correctamente configurados con el grupo de impuestos. Para esto nos vamos a dirigir a Facturación / Contabilidad > Configuración > Impuestos y vamos a buscar los impuestos de Ventas (como IVA 21% Ventas o IVA 10.5% Ventas) y a cada uno de esos impuestos los colocaremos en el grupo de impuestos tipo IVA. Esto se realiza desde la pestaña Opciones Avanzadas, seleccionando el campo Grupo de Impuestos (sin editar, para que nos lleve a dicho grupo). Ya en el grupo en cuestión lo editaremos, modificando el campo Tipo de Impuestos (que normalmente se encontrará vacío) para que diga IVA.
Al intentar conectarse a AFIP se recibe el siguiente error:
Could not connect. This is the what we received: AttributeError: 'bytes' object has no attribute 'encode'
Este error se ha registrado en una instalación realizada sobre CentOS 7.
Solución: Ingresar al paquete pyafipws instalado en el directorio de python y editar el archivo wsaa.py
. Buscar la línea return tra.as_xml().encode('utf-8')
y reemplazarla por return tra.as_xml()
. Reiniciar el servidor de Odoo.
Al intentar conectarse a AFIP se recibe el siguiente error:
Could not connect. This is the what we received: AttributeError: 'bytes' object has no attribute 'encode'
Este es un error de sistemas y está relacionado con el paquete pyafipws y su instalación. La solución requiere conocimientos básicos en Python. Nos vamos a dirigir a la ruta donde se instaló el paquete y editamos el archivo wsaa.py
. Debemos buscar cada función write
y agregarle un encode('utf-8')
. Por ejemplo en lugar de esto: f.write(bio.read())
debe quedar asi: f.write(bio.encode('utf-8').read())
Reiniciamos el servidor de Odoo.
Este error ocurre en instalaciones OnPremise Enterprise cuando el servidor no tiene sincronizado el reloj interno. Ocurre al hacer un test desde ajustes de los certificados. El mesaje suele ser el siguiente:
* wsfe: Conexión fallida. generationTime posee formato o dato inválido (ej: en el futuro o más de 24 horas de antigüedad)
Se resuelve ingresando al servidor y ejecutando el siguiente comando:
sudo timedatectl set-ntp on
Al ejecutar timedatectl
tiene que devolver el siguiente mensaje:
Local time: mié 2022-11-16 18:16:29 -03
Universal time: mié 2022-11-16 21:16:29 UTC
RTC time: mié 2022-11-16 21:16:30
Time zone: America/Argentina/Buenos_Aires (-03, -0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Revisar principalmente que System clock synchronized
diga yes, si dice no seguirá mal. Al reiniciar el service de Odoo se debería poder ejecutar el test perfectamente. Recordar tener la Zona horaria bien configurada.
Ocurre cuando está caído AFIP. Solo se puede esperar o intentar comunicarse con el servicio de AFIP.
En algunos request como puede ser el padrón o una instalación sobre un entorno Python moderno, la versión de http2lib verifica que la conexión sea segura mediante SSL. En caso de que no lo sea nos dirá lo siguiente:
No se puede conectar. Esto es lo que recibimos: ValueError: Cannot set verify_mode to CERT_NONE when check_hostname is enabled
Este error ocurre al utilizar la rama py3k de pyafipws en sistemas actuales, se recomienda utilizar la rama main. Sin embargo, si se desea saltear la verificación, deberemos dirigirnos al directorio donde se encuentra instalado http2lib, generalmente:
/usr/local/lib/python3.9/dist-packages/httplib2
Cambiar python3.9 por lo que corresponda. Vamos a editar el archivo init.py, buscaremos la función _build_ssl_context y dentro de ellas una de las primeras líneas:
context.verify_mode = ssl.CERT_NONE if disable_ssl_certificate_validation else ssl.CERT_REQUIRED
Vamos a comentar dicha línea y debajo de la misma agregaremos lo siguiente:
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
Guardamos el archivo, reiniciamos el service, y ya podremos utilizarlo sin dicho error.
Odoo AR 🇦🇷
- Instalación Odoo Community
- Instalación Odoo Enterprise
- Instalación Odoo en Docker
- Instalación de un Módulo de Odoo
- Optimización NGINX
- Optimización PostgreSQL
- Idioma del Servidor (Debian)
- Solución a Errores Comunes
- Solución a Errores en Desarrollo
- Solución a Errores con AFIP