dev/lampone#1088
Corrige la validación de facturas de exportación (WSFEX) y dejan de fallar los post con errores de AFIP:
- Cotización de aduana de AFIP en moneda_ctz
- Nuevo res_currency.py: método get_pyafipws_currency_rate() que obtiene la cotización de AFIP vía GetParamCtz (wsfex) / ParamGetCotizacion (wsfe/wsbfe).
- wsfex_map_invoice_info usa esa cotización de aduana (con fallback a l10n_ar_currency_rate) para corregir el AFIP 2053.
- Fecha de vencimiento del CAE (account_move.py)
- do_pyafipws_request_cae parsea el vencimiento tolerando ambos formatos: YYYYMMDD (wsfe/wsbfe) y DD/MM/YYYY (wsfex).
- Correcciones de estructura en account_move_ws.py (los KeyError/AttributeError en cadena)
- commercial_partner → commercial_partner_id (Odoo 15).
- IVA de línea: vat_tax_id → filtro de tax_ids por grupo IVA local (l10n_ar_vat_afip_code).
- invoice_info["lines"] (no "line") en wsfex/wsbfe.
- fecha_cbte formateada a YYYYMMDD.
- permiso_existente, pais_dst_cmp, domicilio_cliente y obs_generales: siempre asignados (con o sin Incoterm).
- Soporte multi-línea (error AFIP 1610)
- invoice_map_info_lines ahora retorna todas las líneas (antes return dentro del for → solo la primera).
- WSBFE: sec del item generado por índice (enumerate) en vez de leer line["sec"].