From 24c7ad1cccf2b92943a499fd8c7198436919760d Mon Sep 17 00:00:00 2001
From: david
Date: Fri, 5 Jun 2020 09:58:25 +0200
Subject: [PATCH 01/48] [ADD] gls_asm_delivery: New module
[UPD] Update delivery_gls_asm.pot
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Translation: l10n-spain-12.0/l10n-spain-12.0-delivery_gls_asm
Translate-URL: https://translation.odoo-community.org/projects/l10n-spain-12-0/l10n-spain-12-0-delivery_gls_asm/
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Translation: l10n-spain-12.0/l10n-spain-12.0-delivery_gls_asm
Translate-URL: https://translation.odoo-community.org/projects/l10n-spain-12-0/l10n-spain-12-0-delivery_gls_asm/
---
delivery_gls_asm/README.rst | 178 +++
delivery_gls_asm/__init__.py | 2 +
delivery_gls_asm/__manifest__.py | 28 +
delivery_gls_asm/api/gls_asm_api.wsdl | 1361 +++++++++++++++++
delivery_gls_asm/data/delivery_asm_data.xml | 8 +
delivery_gls_asm/i18n/delivery_gls_asm.pot | 724 +++++++++
delivery_gls_asm/i18n/es.po | 750 +++++++++
delivery_gls_asm/models/__init__.py | 3 +
delivery_gls_asm/models/delivery_carrier.py | 246 +++
delivery_gls_asm/models/gls_asm_request.py | 409 +++++
delivery_gls_asm/models/stock_picking.py | 29 +
delivery_gls_asm/readme/CONFIGURE.rst | 14 +
delivery_gls_asm/readme/CONTRIBUTORS.rst | 3 +
delivery_gls_asm/readme/DESCRIPTION.rst | 2 +
delivery_gls_asm/readme/INSTALL.rst | 6 +
delivery_gls_asm/readme/ROADMAP.rst | 4 +
delivery_gls_asm/readme/USAGE.rst | 62 +
delivery_gls_asm/static/description/icon.png | Bin 0 -> 4444 bytes
delivery_gls_asm/static/description/icon.svg | 69 +
.../static/description/index.html | 551 +++++++
delivery_gls_asm/tests/__init__.py | 1 +
.../tests/test_delivery_gls_asm.py | 105 ++
delivery_gls_asm/views/delivery_asm_view.xml | 58 +
.../views/gls_asm_manifest_template.xml | 171 +++
.../views/stock_picking_views.xml | 24 +
delivery_gls_asm/wizard/__init__.py | 1 +
.../wizard/gls_asm_manifest_wizard.py | 40 +
.../wizard/gls_asm_manifest_wizard_views.xml | 26 +
28 files changed, 4875 insertions(+)
create mode 100644 delivery_gls_asm/README.rst
create mode 100644 delivery_gls_asm/__init__.py
create mode 100644 delivery_gls_asm/__manifest__.py
create mode 100644 delivery_gls_asm/api/gls_asm_api.wsdl
create mode 100644 delivery_gls_asm/data/delivery_asm_data.xml
create mode 100644 delivery_gls_asm/i18n/delivery_gls_asm.pot
create mode 100644 delivery_gls_asm/i18n/es.po
create mode 100644 delivery_gls_asm/models/__init__.py
create mode 100644 delivery_gls_asm/models/delivery_carrier.py
create mode 100644 delivery_gls_asm/models/gls_asm_request.py
create mode 100644 delivery_gls_asm/models/stock_picking.py
create mode 100644 delivery_gls_asm/readme/CONFIGURE.rst
create mode 100644 delivery_gls_asm/readme/CONTRIBUTORS.rst
create mode 100644 delivery_gls_asm/readme/DESCRIPTION.rst
create mode 100644 delivery_gls_asm/readme/INSTALL.rst
create mode 100644 delivery_gls_asm/readme/ROADMAP.rst
create mode 100644 delivery_gls_asm/readme/USAGE.rst
create mode 100644 delivery_gls_asm/static/description/icon.png
create mode 100644 delivery_gls_asm/static/description/icon.svg
create mode 100644 delivery_gls_asm/static/description/index.html
create mode 100644 delivery_gls_asm/tests/__init__.py
create mode 100644 delivery_gls_asm/tests/test_delivery_gls_asm.py
create mode 100644 delivery_gls_asm/views/delivery_asm_view.xml
create mode 100644 delivery_gls_asm/views/gls_asm_manifest_template.xml
create mode 100644 delivery_gls_asm/views/stock_picking_views.xml
create mode 100644 delivery_gls_asm/wizard/__init__.py
create mode 100644 delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
create mode 100644 delivery_gls_asm/wizard/gls_asm_manifest_wizard_views.xml
diff --git a/delivery_gls_asm/README.rst b/delivery_gls_asm/README.rst
new file mode 100644
index 00000000000..dd4a5e1360e
--- /dev/null
+++ b/delivery_gls_asm/README.rst
@@ -0,0 +1,178 @@
+================
+Delivery GLS-ASM
+================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--spain-lightgray.png?logo=github
+ :target: https://github.com/OCA/l10n-spain/tree/12.0/delivery_gls_asm
+ :alt: OCA/l10n-spain
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/l10n-spain-12-0/l10n-spain-12-0-delivery_gls_asm
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/189/12.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+Este módulo integra la API de GLS España (antigua API de ASM) con Odoo. No es
+válido para integraciones de GLS en otros países, que podrían usar otras APIs.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Installation
+============
+
+Este módulo necesita la librería python `suds` y depende igualmente de los
+módulos de OCA/delivery-carrier `delivery_package_number` y `delivery_state`.
+
+La API de GLS/ASM no provee métodos de cálculo de precio, de modo que para poder
+calcular los costes de envío sería recomendable instalar el módulo
+`delivery_price_method`.
+
+Configuration
+=============
+
+Para configurar el transportista:
+
+#. Vaya a *Inventario > Configuración > Entrega > Método de envío* y cree uno
+ nuevo.
+#. Escoja *GLS ASM* Como proveedor.
+#. Configure los datos de servicio que tiene contratados y el producto de
+ envío que desea utilizar.
+
+Si no tiene credenciales todavía, puede poner datos inventados y dejar el
+método de envío en "Entorno de prueba". Se utilizará el usuario de pruebas de
+la API GLS ASM.
+
+Si GLS cambiase en un futuro el usuario de prueba, puede cambiarlo en los
+*Parámetros del sistema* en la clave `delivery_gls_asm.api_user_demo`.
+
+Usage
+=====
+
+Estas son las distintas operaciones posibles con este módulo:
+
+Grabar servicios
+~~~~~~~~~~~~~~~~
+
+ #. Al confirmar el albarán, el servicio se grabará en GLS.
+ #. Con la respuesta, se registrará en el chatter la referencia de envío y
+ las etiquetas correspondientes.
+ #. Para gestionar los bultos del envío, se puede utilizar el campo de número
+ de bultos que añade `delivery_package_number` (ver el README para mayor
+ información) o bien el flujo nativo de Odoo con paquetes de envío. El
+ módulo mandará a la API de GLS/ASM el número correspondiente y podremos
+ descargar las etiquetas en PDF con su correspondiente numeración.
+
+Cancelar servicios
+~~~~~~~~~~~~~~~~~~
+
+ #. Al igual que en otros métodos de envío, en los albaranes de salida podemos
+ cancelar un servicio determinado mediante la acción correspondiente en la
+ pestaña de *Información Adicional*, sección *Información de entrega* una
+ vez el pedido esté confirmado y la expedición generada.
+ #. Podremos generar una nueva expedición una vez cancelado si fuese necesario.
+
+Obtener etiquetas
+~~~~~~~~~~~~~~~~~~
+
+ #. Si por error hubiésemos eliminado el adjunto de las etiquetas que obtuvimos
+ en la grabación del servicio, podemos obtenerlas de nuevo pulsando en el
+ botón "Etiqueta GLS" que tenemos en la parte superior de la vista
+ formulario del albarán.
+
+Seguimiento de envíos
+~~~~~~~~~~~~~~~~~~~~~
+
+ #. El módulo está integrado con `delivery_state` para poder recabar la
+ información de seguimiento de nuestros envíos directamente desde la API de
+ GLS-ASM.
+ #. Para ello, vaya al albarán con un envío GLS ya grabado y en la pestaña de
+ *Información adicional* verá el botón *Actualizar seguimiento* para pedir
+ a la API de GLS que actualice el estado de este envío en Odoo.
+
+Manifiesto de envíos
+~~~~~~~~~~~~~~~~~~~~
+
+ #. Para obtener el manifiesto de expediciones que firmaría el repartidor,
+ puede ir al menú *Inventario > Informes > Manifiesto de Envíos GLS*.
+ #. También puede obtener el manifiesto desde un smart button en el formulario
+ del transportista.
+ #. En el asistente, seleccione el servicio GLS del cual quiere sacar el
+ manifiesto y la fecha desde la que desea listar los envíos.
+ #. Pulse en el botón "Manifiesto GlS" para obtener un listado en PDF de los
+ envíos del servicio seleccionado.
+
+Depuración de errores
+~~~~~~~~~~~~~~~~~~~~~
+
+ #. En cada servicio GLS-ASM dispone de una pestaña llamada "Técnico" en la
+ que puede consultar la última petición y respuesta a la API de GLS-ASM.
+ Esto le servirá como ayuda a la hora de depurar posibles errores de
+ comunicación.
+ #. También puede activar Odoo con `--log-level=debug` para refistrar las
+ peticiones y las respuestas en el log.
+
+Known issues / Roadmap
+======================
+
+* La API no facilita métodos para cotizar el coste real de los envíos, por lo
+ que siempre se cotizan a 0. Si la cotización de envíos es necesaria,
+ puede instalarse el módulo OCA `delivery_price_method` o bien personalizar
+ el método de cotización para este tipo de transportista.
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Tecnativa
+
+Contributors
+~~~~~~~~~~~~
+
+* `Tecnativa `_:
+
+ * David Vidal
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/l10n-spain `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/delivery_gls_asm/__init__.py b/delivery_gls_asm/__init__.py
new file mode 100644
index 00000000000..9b4296142f4
--- /dev/null
+++ b/delivery_gls_asm/__init__.py
@@ -0,0 +1,2 @@
+from . import models
+from . import wizard
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
new file mode 100644
index 00000000000..6a711db2533
--- /dev/null
+++ b/delivery_gls_asm/__manifest__.py
@@ -0,0 +1,28 @@
+# Copyright 2020 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+{
+ "name": "Delivery GLS-ASM",
+ "summary": "Delivery Carrier implementation for GLS with ASMRed API",
+ "version": "12.0.1.0.0",
+ "category": "Stock",
+ "website": "https://github.com/OCA/l10n-spain",
+ "author": "Tecnativa, "
+ "Odoo Community Association (OCA)",
+ "license": "AGPL-3",
+ "application": False,
+ "installable": True,
+ "depends": [
+ "delivery_package_number",
+ "delivery_state",
+ ],
+ "external_dependencies" : {
+ "python" : ["suds"],
+ },
+ "data": [
+ "data/delivery_asm_data.xml",
+ "views/delivery_asm_view.xml",
+ "views/gls_asm_manifest_template.xml",
+ "views/stock_picking_views.xml",
+ "wizard/gls_asm_manifest_wizard_views.xml",
+ ],
+}
diff --git a/delivery_gls_asm/api/gls_asm_api.wsdl b/delivery_gls_asm/api/gls_asm_api.wsdl
new file mode 100644
index 00000000000..a2fc54d2322
--- /dev/null
+++ b/delivery_gls_asm/api/gls_asm_api.wsdl
@@ -0,0 +1,1361 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/delivery_gls_asm/data/delivery_asm_data.xml b/delivery_gls_asm/data/delivery_asm_data.xml
new file mode 100644
index 00000000000..4ceb87f9bd0
--- /dev/null
+++ b/delivery_gls_asm/data/delivery_asm_data.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ delivery_gls_asm.api_user_demo
+ 6BAB7A53-3B6D-4D5A-9450-702D2FAC0B11
+
+
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
new file mode 100644
index 00000000000..446f5ace645
--- /dev/null
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -0,0 +1,724 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * delivery_gls_asm
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "10:00 Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "14:00 Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "14H SOBRES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "24H SOBRES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "72H SOBRES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid " (Kg.)"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid " (Packages)"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "\n"
+" Carrier Signature / Stamp \n"
+" "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "TOTAL EXPEDITIONS: "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Company: "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Date of printing "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "GLS MANIFEST "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Manifest Date: "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Printed by "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "TOTAL "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ASM BUROFAX"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ASM GO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ASM0830"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ASMTRAVELLERS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "BICI"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,delivery_type:0
+msgid "Based on Rules"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "BusinessParcel"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "CAN MUESTRAS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "CARGA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "CARGA MARITIMA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "COMPRAS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "CORREO INTERNO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "COURIER"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+msgid "Cancelar"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_postage_type:0
+msgid "Cash On Delivery"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "City"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__create_date
+msgid "Created on"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Customer"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "DEVOLUCION"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "DISTRIBUCION PROPIA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "DISTRIBUCION RED"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__date_from
+msgid "Date From"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model,name:delivery_gls_asm.model_delivery_carrier
+msgid "Delivery Methods"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EASYBAG"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EURO ESTANDAR"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EURO SMALL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EUROBUSINESS PARCEL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EUROBUSINESS SMALL PARCEL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "EconomyParcel"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Ent. Pto. ASM"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,delivery_type:0
+msgid "Fixed Price"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Franja Horaria"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "GLASS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,delivery_type:0
+msgid "GLS ASM"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_public_tracking_ref
+msgid "GLS Barcode"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:204
+#, python-format
+msgid "GLS Cancellation failed with reason: %s"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
+msgid "GLS Configuration"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.ui.menu,name:delivery_gls_asm.menu_gls_asm_manifest
+msgid "GLS Deliveries Manifest"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:210
+#, python-format
+msgid "GLS Expedition with reference %s cancelled"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
+msgid "GLS Label"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:237
+#: model:ir.actions.act_window,name:delivery_gls_asm.action_delivery_gls_asm_manifest_wizard
+#: model:ir.actions.report,name:delivery_gls_asm.gls_asm_manifest_report
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+#, python-format
+msgid "GLS Manifest"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_service
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__carrier_id
+msgid "GLS Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:160
+#, python-format
+msgid "GLS Shipping extra info:\n"
+"barcode: %s"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_uid
+msgid "GLS UID"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/stock_picking.py:27
+#, python-format
+msgid "GLS label for %s"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:297
+#, python-format
+msgid "GLS returned an error trying to record the shipping for {}.\n"
+"Error:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:318
+#, python-format
+msgid "GLS: No response from server getting state from ref {}.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:347
+#, python-format
+msgid "GLS: No response from server printing label with ref {}.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+msgid "Get Manifest"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model,name:delivery_gls_asm.model_gls_asm_minifest_wizard
+msgid "Get the GLS Manifest for the given date range"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "IBEX"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
+msgid "ID"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "INT PAQUET"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "INTERC. EUROESTANDAR"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "INTERDIA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "INTERNACIONAL ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "INTERNACIONAL EXPRESS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "Int. WEB"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py:28
+#, python-format
+msgid "It wasn't possible to get the manifest. Maybe there aren'tdeliveries for the selected date."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_request
+msgid "Last GLS xml request"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_response
+msgid "Last GLS xml response"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "MR1"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
+msgid "Manifest"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Maritimo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Masivo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:404
+#, python-format
+msgid "No response from server getting manifisto for GLS.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:286
+#, python-format
+msgid "No response from server recording GLS delivery {}.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "OPERACIONES RED"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "OPTIPLUS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "OTROS PUENTES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "PREPAGO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "PROPIO AGENTE"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Packages"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "ParcelShop"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
+msgid "Postage Type"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
+msgid "Postage type, usually 'Prepaid'"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_postage_type:0
+msgid "Prepaid"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__delivery_type
+msgid "Provider"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RC. PARCEL SHOP"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RC.SELLADA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "REC. INT"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "REC. INT WW"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "REC. INTERCIUDAD ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECANALIZA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA CRUZADA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MEN. CAMION"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MEN. F.GRANDE"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MEN. FURGONETA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MEN. MOTO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MENSAJERO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA SIN MERCANCIA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RETORNO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Rec. en NAVE."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Ref."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL CAMION"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL F. GRANDE"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL FURGONETA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL MOTO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIOS ESPECIALES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIOS RUTAS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "SaturdayService"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_service
+msgid "Set the contracted GLS Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_shiptime
+msgid "Set the desired GLS shipping time for this carrier"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,delivery_type:0
+msgid "Seur"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_shiptime
+msgid "Shipping Time"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
+msgid "Technical"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model,name:delivery_gls_asm.model_stock_picking
+msgid "Transfer"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_request
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_response
+msgid "Used for issues debugging"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "VALIJA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Weight"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "ZIP Code"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "dPRO"
+msgstr ""
+
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
new file mode 100644
index 00000000000..2ab14c9707c
--- /dev/null
+++ b/delivery_gls_asm/i18n/es.po
@@ -0,0 +1,750 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * delivery_gls_asm
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-06-05 07:09+0000\n"
+"PO-Revision-Date: 2020-08-13 11:01+0200\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+"X-Generator: Poedit 2.3\n"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "10:00 Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "14:00 Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "14H SOBRES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "24H SOBRES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "72H SOBRES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid " (Kg.)"
+msgstr " (Kg.)"
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid " (Packages)"
+msgstr " (Bultos)"
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid ""
+"\n"
+" Carrier Signature / Stamp"
+"strong>\n"
+" "
+msgstr ""
+"\n"
+" Sello / Firma del "
+"Transportista \n"
+" "
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "TOTAL EXPEDITIONS: "
+msgstr "TOTAL EXPEDICIONES: "
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Company: "
+msgstr "Compañía: "
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Date of printing "
+msgstr "Fecha de impresión "
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "GLS MANIFEST "
+msgstr "MANIFIESTO GLS "
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Manifest Date: "
+msgstr "Fecha de manifiesto: "
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Printed by "
+msgstr "Imprimido por "
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "TOTAL "
+msgstr "TOTAL "
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ASM BUROFAX"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ASM GO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ASM0830"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ASMTRAVELLERS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "BICI"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,delivery_type:0
+msgid "Based on Rules"
+msgstr "En base a reglas"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "BusinessParcel"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "CAN MUESTRAS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "CARGA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "CARGA MARITIMA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "COMPRAS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "CORREO INTERNO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "COURIER"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+msgid "Cancelar"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_postage_type:0
+msgid "Cash On Delivery"
+msgstr "Reembolso"
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "City"
+msgstr "Ciudad"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__create_date
+msgid "Created on"
+msgstr "Creado el"
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Customer"
+msgstr "Cliente"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "DEVOLUCION"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "DISTRIBUCION PROPIA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "DISTRIBUCION RED"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__date_from
+msgid "Date From"
+msgstr "Fecha desde"
+
+#. module: delivery_gls_asm
+#: model:ir.model,name:delivery_gls_asm.model_delivery_carrier
+msgid "Delivery Methods"
+msgstr "Método de envío"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EASYBAG"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EURO ESTANDAR"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EURO SMALL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EUROBUSINESS PARCEL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "EUROBUSINESS SMALL PARCEL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "EconomyParcel"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Ent. Pto. ASM"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,delivery_type:0
+msgid "Fixed Price"
+msgstr "Precio fijo"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Franja Horaria"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "GLASS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,delivery_type:0
+msgid "GLS ASM"
+msgstr "GLS ASM"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_public_tracking_ref
+msgid "GLS Barcode"
+msgstr "Código de barras GLS"
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:204
+#, python-format
+msgid "GLS Cancellation failed with reason: %s"
+msgstr "La cancelación de GLS falló por esta causa: %s"
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
+msgid "GLS Configuration"
+msgstr "Configuración GLS"
+
+#. module: delivery_gls_asm
+#: model:ir.ui.menu,name:delivery_gls_asm.menu_gls_asm_manifest
+msgid "GLS Deliveries Manifest"
+msgstr "Manifiesto de Envíos GLS"
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:210
+#, python-format
+msgid "GLS Expedition with reference %s cancelled"
+msgstr "Expedición GLS con referencia %s cancelada"
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
+msgid "GLS Label"
+msgstr "Etiqueta GLS"
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:237
+#: model:ir.actions.act_window,name:delivery_gls_asm.action_delivery_gls_asm_manifest_wizard
+#: model:ir.actions.report,name:delivery_gls_asm.gls_asm_manifest_report
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+#, python-format
+msgid "GLS Manifest"
+msgstr "Manifiesto GLS"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_service
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__carrier_id
+msgid "GLS Service"
+msgstr "Servicio GLS"
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:160
+#, python-format
+msgid ""
+"GLS Shipping extra info:\n"
+"barcode: %s"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_uid
+msgid "GLS UID"
+msgstr "UID GLS"
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/stock_picking.py:27
+#, fuzzy, python-format
+msgid "GLS label for %s"
+msgstr "Etiqueta GLS"
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:297
+#, python-format
+msgid ""
+"GLS returned an error trying to record the shipping for {}.\n"
+"Error:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:318
+#, python-format
+msgid ""
+"GLS: No response from server getting state from ref {}.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:347
+#, python-format
+msgid ""
+"GLS: No response from server printing label with ref {}.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+msgid "Get Manifest"
+msgstr "Obtenter manifiesto"
+
+#. module: delivery_gls_asm
+#: model:ir.model,name:delivery_gls_asm.model_gls_asm_minifest_wizard
+msgid "Get the GLS Manifest for the given date range"
+msgstr "Obtener el Manifiesto de GLS para el rango de fechas indicado"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "IBEX"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
+msgid "ID"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "INT PAQUET"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "INTERC. EUROESTANDAR"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "INTERDIA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "INTERNACIONAL ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "INTERNACIONAL EXPRESS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "Int. WEB"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py:28
+#, python-format
+msgid ""
+"It wasn't possible to get the manifest. Maybe there aren'tdeliveries for the "
+"selected date."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_request
+msgid "Last GLS xml request"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_response
+msgid "Last GLS xml response"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
+msgid "Last Modified on"
+msgstr "Última modificación en"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización por"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización el"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "MR1"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
+msgid "Manifest"
+msgstr "Manifiesto"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Maritimo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Masivo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:404
+#, python-format
+msgid ""
+"No response from server getting manifisto for GLS.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:286
+#, python-format
+msgid ""
+"No response from server recording GLS delivery {}.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "OPERACIONES RED"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "OPTIPLUS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "OTROS PUENTES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "PREPAGO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "PROPIO AGENTE"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Packages"
+msgstr "Bultos"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "ParcelShop"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
+msgid "Postage Type"
+msgstr "Tipo de envío"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
+msgid "Postage type, usually 'Prepaid'"
+msgstr "Tipo de envío, normalment 'Prepago'"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_postage_type:0
+msgid "Prepaid"
+msgstr "Prepago"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__delivery_type
+msgid "Provider"
+msgstr "Proveedor"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RC. PARCEL SHOP"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RC.SELLADA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "REC. INT"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "REC. INT WW"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "REC. INTERCIUDAD ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECANALIZA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA CRUZADA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MEN. CAMION"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MEN. F.GRANDE"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MEN. FURGONETA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MEN. MOTO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA MENSAJERO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RECOGIDA SIN MERCANCIA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "RETORNO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "Rec. en NAVE."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Ref."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL CAMION"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL F. GRANDE"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL FURGONETA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIO LOCAL MOTO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIOS ESPECIALES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "SERVICIOS RUTAS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_shiptime:0
+msgid "SaturdayService"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_service
+msgid "Set the contracted GLS Service"
+msgstr "Establezca el servicio GLS contratado"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_shiptime
+msgid "Set the desired GLS shipping time for this carrier"
+msgstr "Establezca el tiempo de envío de las opciones de GLS"
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,delivery_type:0
+msgid "Seur"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_shiptime
+msgid "Shipping Time"
+msgstr "Tiempo de envío"
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
+msgid "Technical"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model,name:delivery_gls_asm.model_stock_picking
+msgid "Transfer"
+msgstr "Albarán"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_request
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_response
+msgid "Used for issues debugging"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "VALIJA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Weight"
+msgstr "Peso"
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "ZIP Code"
+msgstr "C.P."
+
+#. module: delivery_gls_asm
+#: selection:delivery.carrier,gls_asm_service:0
+msgid "dPRO"
+msgstr ""
+
+#~ msgid "Carrier"
+#~ msgstr "Transportista"
+
+#~ msgid "No carrier integration"
+#~ msgstr "Sin integración de transportista"
+
+#~ msgid "Product Packaging"
+#~ msgstr "Empaquetado del producto"
diff --git a/delivery_gls_asm/models/__init__.py b/delivery_gls_asm/models/__init__.py
new file mode 100644
index 00000000000..0c424d37f19
--- /dev/null
+++ b/delivery_gls_asm/models/__init__.py
@@ -0,0 +1,3 @@
+from . import gls_asm_request
+from . import delivery_carrier
+from . import stock_picking
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
new file mode 100644
index 00000000000..d2dc7593c9a
--- /dev/null
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -0,0 +1,246 @@
+# Copyright 2020 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo import _, fields, models
+from .gls_asm_request import GlsAsmRequest
+from .gls_asm_request import (
+ GLS_ASM_SERVICES, GLS_SHIPPING_TIMES, GLS_POSTAGE_TYPE,
+ GLS_DELIVERY_STATES_STATIC)
+
+
+class DeliveryCarrier(models.Model):
+ _inherit = "delivery.carrier"
+
+ delivery_type = fields.Selection(selection_add=[("gls_asm", "GLS ASM")])
+ gls_asm_uid = fields.Char(
+ string="GLS UID",
+ )
+ gls_asm_service = fields.Selection(
+ selection=GLS_ASM_SERVICES,
+ string="GLS Service",
+ help="Set the contracted GLS Service",
+ default="1", # Courier
+ )
+ gls_asm_shiptime = fields.Selection(
+ selection=GLS_SHIPPING_TIMES,
+ string="Shipping Time",
+ help="Set the desired GLS shipping time for this carrier",
+ default="0", # 10h
+ )
+ gls_asm_postage_type = fields.Selection(
+ selection=GLS_POSTAGE_TYPE,
+ string="Postage Type",
+ help="Postage type, usually 'Prepaid'",
+ default="P",
+ )
+ gls_last_request = fields.Text(
+ string="Last GLS xml request",
+ help="Used for issues debugging",
+ readonly=True,
+ )
+ gls_last_response = fields.Text(
+ string="Last GLS xml response",
+ help="Used for issues debugging",
+ readonly=True,
+ )
+
+ def _gls_asm_uid(self):
+ """The carrier can be put in test mode. The tests user must be set.
+ A default given by GLS is put in the config parameter data """
+ self.ensure_one()
+ uid = (
+ self.gls_asm_uid if self.prod_environment else
+ self.env['ir.config_parameter'].sudo().get_param(
+ 'delivery_gls_asm.api_user_demo', ''))
+ return uid
+
+ def gls_asm_get_tracking_link(self, picking):
+ """Provide tracking link for the customer"""
+ tracking_url = ("http://www.asmred.com/extranet/public/"
+ "ExpedicionASM.aspx?codigo={}&cpDst={}")
+ return tracking_url.format(
+ picking.carrier_tracking_ref, picking.partner_id.zip)
+
+ def _prepare_gls_asm_shipping(self, picking):
+ """Convert picking values for asm api
+ :param picking record with picking to send
+ :returns dict values for the connector
+ """
+ self.ensure_one()
+ # A picking can be delivered from any warehouse
+ sender_partner = (
+ picking.picking_type_id.warehouse_id.partner_id or
+ picking.company_id.partner_id)
+ return {
+ "fecha": fields.Date.today().strftime("%d/%m/%Y"),
+ "portes": self.gls_asm_postage_type,
+ "servicio": self.gls_asm_service,
+ "horario": self.gls_asm_shiptime,
+ "bultos": picking.number_of_packages,
+ "peso": round(picking.shipping_weight, 3),
+ "volumen": "", # [optional] Volume, in m3
+ "declarado": "", # [optional]
+ "dninomb": "0", # [optional]
+ "fechaentrega": "", # [optional]
+ "retorno": "0", # [optional]
+ "pod": "N", # [optional]
+ "podobligatorio": "N", # [deprecated]
+ "remite_plaza": "", # [optional] Origin agency
+ "remite_nombre": sender_partner.name,
+ "remite_direccion": sender_partner.street or "",
+ "remite_poblacion": sender_partner.city or "",
+ "remite_provincia": sender_partner.state_id.name or "",
+ "remite_pais": "34", # [mandatory] always 34=Spain
+ "remite_cp": sender_partner.zip or "",
+ "remite_telefono": sender_partner.phone or "",
+ "remite_movil": sender_partner.mobile or "",
+ "remite_email": sender_partner.email or "",
+ "remite_departamento": "",
+ "remite_nif": sender_partner.vat or "",
+ "remite_observaciones": "",
+ "destinatario_codigo": "",
+ "destinatario_plaza": "",
+ "destinatario_nombre": (
+ picking.partner_id.name or
+ picking.partner_id.commercial_partner_id.name),
+ "destinatario_direccion": picking.partner_id.street or "",
+ "destinatario_poblacion": picking.partner_id.city or "",
+ "destinatario_provincia": picking.partner_id.state_id.name or "",
+ "destinatario_pais": (
+ picking.partner_id.country_id.phone_code or ""),
+ "destinatario_cp": picking.partner_id.zip,
+ "destinatario_telefono": picking.partner_id.phone or "",
+ "destinatario_movil": picking.partner_id.mobile or "",
+ "destinatario_email": picking.partner_id.email or "",
+ "destinatario_observaciones": "",
+ "destinatario_att": "",
+ "destinatario_departamento": "",
+ "destinatario_nif": "",
+ "referencia_c": picking.name, # Our unique reference
+ "referencia_0": "", # Not used if the above is set
+ "importes_debido": "0", # The customer pays the shipping
+ "importes_reembolso": "", # TODO: Support Cash On Delivery
+ "seguro": "0", # [optional]
+ "seguro_descripcion": "", # [optional]
+ "seguro_importe": "", # [optional]
+ "etiqueta": "PDF", # Get Label in response
+ "etiqueta_devolucion": "PDF",
+ # [optional] GLS Customer Code
+ # (when customer have several codes in GLS)
+ "cliente_codigo": "",
+ "cliente_plaza": "",
+ "cliente_agente": "",
+ }
+
+ def gls_asm_send_shipping(self, pickings):
+ """Send the package to GLS
+ :param pickings: A recordset of pickings
+ :return list: A list of dictionaries although in practice it's
+ called one by one and only the first item in the dict is taken. Due
+ to this design, we have to inject vals in the context to be able to
+ add them to the message.
+ """
+ gls_request = GlsAsmRequest(self._gls_asm_uid())
+ result = []
+ for picking in pickings:
+ vals = self._prepare_gls_asm_shipping(picking)
+ vals.update({"tracking_number": False, "exact_price": 0})
+ response = gls_request._send_shipping(vals)
+ self.gls_last_request = response and response.get(
+ "gls_sent_xml", "")
+ self.gls_last_response = response or ""
+ if not response or response.get("_return", -1) < 0:
+ result.append(vals)
+ continue
+ # For compatibility we provide this number although we get
+ # two more codes: codbarras and uid
+ vals["tracking_number"] = response.get("_codexp")
+ picking.gls_asm_public_tracking_ref = response.get("_codbarras")
+ # We post an extra message in the chatter with the barcode and the
+ # label because there's clean way to override the one sent by core.
+ body = (_(
+ "GLS Shipping extra info:\n"
+ "barcode: %s") % response.get("_codbarras"))
+ attachment = []
+ if response.get("gls_label"):
+ attachment = [(
+ "gls_label_{}.pdf".format(response.get("_codbarras")),
+ response.get("gls_label")
+ )]
+ picking.message_post(body=body, attachments=attachment)
+ result.append(vals)
+ return result
+
+ def gls_asm_tracking_state_update(self, picking):
+ """Tracking state update"""
+ self.ensure_one()
+ if not picking.carrier_tracking_ref:
+ return
+ gls_request = GlsAsmRequest(self._gls_asm_uid())
+ tracking_states = gls_request._get_tracking_states(
+ picking.carrier_tracking_ref)
+ if not tracking_states:
+ return
+ picking.tracking_state_history = "\n".join([
+ "%s - [%s] %s" % (
+ t.get("fecha"), t.get("codigo"), t.get("evento"))
+ for t in tracking_states
+ ])
+ tracking = tracking_states.pop()
+ picking.tracking_state = "[{}] {}".format(
+ tracking.get("codigo"), tracking.get("evento"))
+ picking.delivery_state = GLS_DELIVERY_STATES_STATIC.get(
+ tracking.get("codigo"), 'incidence')
+
+ def gls_asm_cancel_shipment(self, pickings):
+ """Cancel the expedition"""
+ gls_request = GlsAsmRequest(self._gls_asm_uid())
+ for picking in pickings.filtered("carrier_tracking_ref"):
+ response = gls_request._cancel_shipment(
+ picking.carrier_tracking_ref)
+ self.gls_last_request = response and response.get(
+ "gls_sent_xml", "")
+ self.gls_last_response = response or ""
+ if not response or response.get("_return") < 0:
+ msg = (_(
+ "GLS Cancellation failed with reason: %s") %
+ response.get("value", "Connection Error"))
+ picking.message_post(body=msg)
+ continue
+ picking.gls_asm_public_tracking_ref = False
+ picking.message_post(body=_(
+ "GLS Expedition with reference %s cancelled") %
+ picking.carrier_tracking_ref)
+
+ def gls_asm_get_label(self, gls_asm_public_tracking_ref):
+ """Generate label for picking
+ :param picking - stock.picking record
+ :returns pdf file
+ """
+ self.ensure_one()
+ if not gls_asm_public_tracking_ref:
+ return False
+ gls_request = GlsAsmRequest(self._gls_asm_uid())
+ label = gls_request._shipping_label(gls_asm_public_tracking_ref)
+ if not label:
+ return False
+ return label
+
+ def action_get_manifest(self):
+ """Action to launch the manifest wizard"""
+ self.ensure_one()
+ wizard = self.env["gls.asm.minifest.wizard"].create({
+ "carrier_id": self.id})
+ view_id = self.env.ref(
+ "delivery_gls_asm.delivery_manifest_wizard_form"
+ ).id
+ return {
+ "name": _("GLS Manifest"),
+ "type": "ir.actions.act_window",
+ "view_mode": "form",
+ "res_model": "gls.asm.minifest.wizard",
+ "view_id": view_id,
+ "views": [(view_id, "form")],
+ "target": "new",
+ "res_id": wizard.id,
+ "context": self.env.context,
+ }
diff --git a/delivery_gls_asm/models/gls_asm_request.py b/delivery_gls_asm/models/gls_asm_request.py
new file mode 100644
index 00000000000..709d3308c91
--- /dev/null
+++ b/delivery_gls_asm/models/gls_asm_request.py
@@ -0,0 +1,409 @@
+# Copyright 2020 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo import _
+from odoo.exceptions import UserError
+import logging
+import binascii
+import os
+_logger = logging.getLogger(__name__)
+
+try:
+ from suds.client import Client
+ from suds.sax.text import Raw
+ from suds.sudsobject import asdict
+except (ImportError, IOError) as err:
+ _logger.debug(err)
+
+
+GLS_ASM_SERVICES = [
+ ('1', 'COURIER'),
+ ('2', 'VALIJA'),
+ ('5', 'BICI'),
+ ('6', 'CARGA'),
+ ('7', 'RECOGIDA'),
+ ('8', 'RECOGIDA CRUZADA'),
+ ('9', 'DEVOLUCION'),
+ ('10', 'RETORNO'),
+ ('11', 'IBEX'),
+ ('12', 'INTERNACIONAL EXPRESS'),
+ ('13', 'INTERNACIONAL ECONOMY'),
+ ('14', 'DISTRIBUCION PROPIA'),
+ ('15', 'OTROS PUENTES'),
+ ('16', 'PROPIO AGENTE'),
+ ('17', 'RECOGIDA SIN MERCANCIA'),
+ ('18', 'DISTRIBUCION RED'),
+ ('19', 'OPERACIONES RED'),
+ ('20', 'CARGA MARITIMA'),
+ ('21', 'GLASS'),
+ ('22', 'EURO SMALL'),
+ ('23', 'PREPAGO'),
+ ('24', 'OPTIPLUS'),
+ ('25', 'EASYBAG'),
+ ('26', 'CORREO INTERNO'),
+ ('27', '14H SOBRES'),
+ ('28', '24H SOBRES'),
+ ('29', '72H SOBRES'),
+ ('30', 'ASM0830'),
+ ('31', 'CAN MUESTRAS'),
+ ('32', 'RC.SELLADA'),
+ ('33', 'RECANALIZA'),
+ ('34', 'INT PAQUET'),
+ ('35', 'dPRO'),
+ ('36', 'Int. WEB'),
+ ('37', 'ECONOMY'),
+ ('38', 'SERVICIOS RUTAS'),
+ ('39', 'REC. INT'),
+ ('40', 'SERVICIO LOCAL MOTO'),
+ ('41', 'SERVICIO LOCAL FURGONETA'),
+ ('42', 'SERVICIO LOCAL F. GRANDE'),
+ ('43', 'SERVICIO LOCAL CAMION'),
+ ('44', 'SERVICIO LOCAL'),
+ ('45', 'RECOGIDA MEN. MOTO'),
+ ('46', 'RECOGIDA MEN. FURGONETA'),
+ ('47', 'RECOGIDA MEN. F.GRANDE'),
+ ('48', 'RECOGIDA MEN. CAMION'),
+ ('49', 'RECOGIDA MENSAJERO'),
+ ('50', 'SERVICIOS ESPECIALES'),
+ ('51', 'REC. INT WW'),
+ ('52', 'COMPRAS'),
+ ('53', 'MR1'),
+ ('54', 'EURO ESTANDAR'),
+ ('55', 'INTERC. EUROESTANDAR'),
+ ('56', 'RECOGIDA ECONOMY'),
+ ('57', 'REC. INTERCIUDAD ECONOMY'),
+ ('58', 'RC. PARCEL SHOP'),
+ ('59', 'ASM BUROFAX'),
+ ('60', 'ASM GO'),
+ ('66', 'ASMTRAVELLERS'),
+ ('74', 'EUROBUSINESS PARCEL'),
+ ('76', 'EUROBUSINESS SMALL PARCEL'),
+]
+
+GLS_SHIPPING_TIMES = [
+ ("0", "10:00 Service"),
+ ("2", "14:00 Service"),
+ ("3", "BusinessParcel"),
+ ("5", "SaturdayService"),
+ ("7", "INTERDIA"),
+ ("9", "Franja Horaria"),
+ ("4", "Masivo"),
+ ("10", "Maritimo"),
+ ("11", "Rec. en NAVE."),
+ ("13", "Ent. Pto. ASM"),
+ ("18", "EconomyParcel"),
+ ("19", "ParcelShop"),
+]
+
+GLS_POSTAGE_TYPE = [
+ ("P", "Prepaid"),
+ ("D", "Cash On Delivery"),
+]
+
+GLS_DELIVERY_STATES_STATIC = {
+ "-10": "shipping_recorded_in_carrier", # GRABADO
+ "0": "shipping_recorded_in_carrier", # MANIFESTADA
+ "2": "in_transit", # EN TRANSITO A DESTINO
+ "3": "in_transit", # EN DELEGACION DESTINO
+ "20": "incidence", # PERDIDA / ROTURA
+ "5": "canceled_shipment", # ANULADA
+ "6": "in_transit", # EN REPARTO
+ "7": "customer_delivered", # ENTREGADO
+ "8": "customer_delivered", # ENTREGA PARCIAL
+ "9": "in_transit", # ALMACENADO
+ "10": "incidence", # DEVUELTA
+ "11": "incidence", # PENDIENTE DATOS, EN DELEGACION
+ "1": "incidence", # RETENIDA EN DELEGACION
+ "91": "incidence", # CON INCIDENCIA
+ "90": "incidence", # CERRADO DEFINITIVO
+ "50": "in_transit", # PRECONFIRMADA ENTREGA
+ "51": "incidence", # ENTREGA ANULADA (DEVUELTA)
+ "12": "incidence", # DEVUELTA AL CLIENTE
+ "13": "incidence", # POSIBLE DEVOLUCION
+ "14": "incidence", # SOLICITUD DE DEVOLUCION
+ "15": "incidence", # EN DEVOLUCION
+ "16": "in_transit", # EN DELEGACION ORIGEN
+ "17": "incidence", # DESTRUIDO POR ORDEN DEL CLIENTE
+ "18": "incidence", # RETENIDO POR ORDEN DE PAGA
+ "19": "in_transit", # EN PLATAFORMA DE DESTINO
+ "21": "incidence", # RECANALIZADA (A EXTINGUIR)
+ "22": "in_transit", # ENTREGADO EN ASM PARCELSHOP
+ "25": "in_transit", # ASM PARCELSHOP CONFIRMA RECEPCION
+}
+
+
+class GlsAsmRequest():
+ """Interface between GLS-ASM SOAP API and Odoo recordset
+ Abstract GLS-ASM API Operations to connect them with Odoo
+
+ Not all the features are implemented, but could be easily extended with
+ the provided API. We leave the operations empty for future.
+ """
+
+ def __init__(self, uidcustomer=None):
+ """As the wsdl isn't public, we have to load it from local"""
+ wsdl_path = os.path.join(
+ os.path.dirname(os.path.realpath(__file__)),
+ '../api/gls_asm_api.wsdl')
+ self.uidcustomer = uidcustomer or ""
+ self.client = Client("file:{}".format(wsdl_path))
+
+ def _recursive_asdict(self, suds_object):
+ """As suds response is an special object, we convert it into
+ a more usable python dict. Taken form:
+ https://stackoverflow.com/a/15678861
+ """
+ out = {}
+ for k, v in asdict(suds_object).items():
+ if hasattr(v, '__keylist__'):
+ out[k] = self._recursive_asdict(v)
+ elif isinstance(v, list):
+ out[k] = []
+ for item in v:
+ if hasattr(item, '__keylist__'):
+ out[k].append(self._recursive_asdict(item))
+ else:
+ out[k].append(item)
+ else:
+ out[k] = v
+ return out
+
+ def _prepare_cancel_shipment_docin(self, **kwargs):
+ """ASM API is not very standard. Prepare parameters to pass them raw in
+ the SOAP message"""
+ return """
+
+
+
+ """.format(**kwargs)
+
+ def _prepare__get_manifest_docin(self, **kwargs):
+ """ASM API is not very standard. Prepare parameters to pass them raw in
+ the SOAP message"""
+ return """
+
+ {date_from}
+
+
+ """.format(**kwargs)
+
+ def _prepare_send_shipping_docin(self, **kwargs):
+ """ASM API is not very standard. Prepare parameters to pass them raw in
+ the SOAP message"""
+ return """
+
+
+ {fecha}
+ {portes}
+ {servicio}
+ {horario}
+ {bultos}
+ {peso}
+ {volumen}
+ {declarado}
+ {dninomb}
+ {fechaentrega}
+ {retorno}
+ {pod}
+ {podobligatorio}
+
+ {remite_plaza}
+ {remite_nombre}
+ {remite_direccion}
+ {remite_poblacion}
+ {remite_provincia}
+ {remite_pais}
+ {remite_cp}
+ {remite_telefono}
+ {remite_movil}
+ {remite_email}
+ {remite_departamento}
+ {remite_nif}
+ {remite_observaciones}
+
+
+ {destinatario_codigo}
+ {destinatario_plaza}
+ {destinatario_nombre}
+ {destinatario_direccion}
+ {destinatario_poblacion}
+ {destinatario_provincia}
+ {destinatario_pais}
+ {destinatario_cp}
+ {destinatario_telefono}
+ {destinatario_movil}
+ {destinatario_email}
+
+ {destinatario_observaciones}
+
+ {destinatario_att}
+ {destinatario_departamento}
+ {destinatario_nif}
+
+
+ {referencia_c}
+ {referencia_0}
+
+
+ {importes_debido}
+ {importes_reembolso}
+
+
+ {seguro_descripcion}
+ {seguro_importe}
+
+
+
+
+
+
+
+
+ {cliente_codigo}
+ {cliente_plaza}
+ {cliente_agente}
+
+
+
+ """.format(**kwargs)
+
+ def _send_shipping(self, vals):
+ """Create new shipment
+ :params vals dict of needed values
+ :returns dict with GLS response containing the shipping codes, labels,
+ an other relevant data
+ """
+ vals.update({
+ 'uidcustomer': self.uidcustomer,
+ })
+ xml = Raw(self._prepare_send_shipping_docin(**vals))
+ _logger.debug(xml)
+ try:
+ res = self.client.service.GrabaServicios(docIn=xml)
+ except Exception as e:
+ raise UserError(_(
+ "No response from server recording GLS delivery {}.\n"
+ "Traceback:\n{}").format(vals.get("referencia_c", ""), e))
+ # Convert result suds object to dict and set the root conveniently
+ # GLS API Errors have codes below 0 so we have to
+ # convert to int as well
+ res = self._recursive_asdict(res)['Servicios']['Envio']
+ res["gls_sent_xml"] = xml
+ _logger.debug(res)
+ res["_return"] = int(res["Resultado"]["_return"])
+ if res["_return"] < 0:
+ raise UserError(_(
+ "GLS returned an error trying to record the shipping for {}.\n"
+ "Error:\n{}").format(
+ vals.get("referencia_c", ""),
+ res.get("Errores", {}).get(
+ "Error", "code {}".format(res["_return"]))))
+ if res.get('Etiquetas', {}).get('Etiqueta', {}).get("value"):
+ res["gls_label"] = (
+ binascii.a2b_base64(res["Etiquetas"]["Etiqueta"]["value"]))
+ return res
+
+ def _get_delivery_info(self, reference=False):
+ """Get delivery info recorded in GLS for the given reference
+ :param str reference -- GLS tracking number
+ :returns: shipping info dict
+ """
+ try:
+ res = self.client.service.GetExpCli(
+ codigo=reference, uid=self.uidcustomer)
+ _logger.debug(res)
+ except Exception as e:
+ raise UserError(_(
+ "GLS: No response from server getting state from ref {}.\n"
+ "Traceback:\n{}").format(reference, e))
+ res = self._recursive_asdict(res)
+ return res
+
+ def _get_tracking_states(self, reference=False):
+ """Get just tracking states from GLS info for the given reference
+ :param str reference -- GLS tracking number
+ :returns: list of tracking states
+ """
+ res = self._get_delivery_info(reference)
+ res = res.get("expediciones", {}).get("exp", {}).get(
+ "tracking_list", {}).get("tracking", [])
+ # If there's just one state, we'll get a single dict, otherwise we
+ # get a list of dicts
+ if isinstance(res, dict):
+ return [res]
+ return res
+
+ def _shipping_label(self, reference=False):
+ """Get shipping label for the given ref
+ :param str reference -- public shipping reference
+ :returns: base64 with pdf label or False
+ """
+ try:
+ res = self.client.service.EtiquetaEnvio(reference, 'PDF')
+ _logger.debug(res)
+ except Exception as e:
+ raise UserError(_(
+ "GLS: No response from server printing label with ref {}.\n"
+ "Traceback:\n{}").format(reference, e))
+ res = self._recursive_asdict(res)
+ label = res.get("base64Binary")
+ return label and binascii.a2b_base64(str(label[0]))
+
+ def _cancel_shipment(self, reference=False):
+ """Cancel shipment for a given reference
+ :param str reference -- shipping reference to cancel
+ :returns: dict -- result of operation with format
+ {
+ 'value': str - response message,
+ '_return': int - response status
+ }
+ Possible response values:
+ 0 -> Expedición anulada
+ -1 -> No existe envío
+ -2 -> Tiene tracking operativo
+ """
+ xml = Raw(self._prepare_cancel_shipment_docin(
+ uidcustomer=self.uidcustomer, referencia=reference))
+ _logger.debug(xml)
+ try:
+ response = self.client.service.Anula(docIn=xml)
+ _logger.debug(response)
+ except Exception as e:
+ _logger.error(
+ "No response from server canceling GLS ref {}.\n"
+ "Traceback:\n{}".format(reference, e))
+ return {}
+ response = self._recursive_asdict(response.Servicios.Envio.Resultado)
+ response["gls_sent_xml"] = xml
+ response["_return"] = int(response["_return"])
+ return response
+
+ def _get_manifest(self, date_from):
+ """Get shipping manifest for a given range date
+ :param str date_from -- date in format "%d/%m&Y"
+ :returns: list of dicts with format
+ {
+ 'codplaza_pag': 771, 'codcli': 601, 'cliente': Pruebas WS
+ 'codplaza_org': 771, 'codexp': 468644476, 'codservicio': 74,
+ 'servicio': EUROBUSINESS PARCEL, 'codhorario': 3,
+ 'horario': BusinessParcel, 'codestado': -10, 'estado': GRABADO,
+ 'bultos': 1, 'kgs': 7,0, 'nombre_dst': TEST USER,
+ 'calle_dst': direccion, 'localidad_dst': Fontenay-Trésigny,
+ 'cp_dst': 77610, 'departamento_dst': , 'pais_dst': FR,
+ }
+ """
+ xml = Raw(self._prepare__get_manifest_docin(
+ uidcustomer=self.uidcustomer, date_from=date_from))
+ _logger.debug(xml)
+ try:
+ res = self.client.service.GetManifiesto(docIn=xml)
+ _logger.debug(res)
+ except Exception as e:
+ raise UserError(_(
+ "No response from server getting manifisto for GLS.\n"
+ "Traceback:\n{}").format(e))
+ res = self._recursive_asdict(res.Servicios.Envios).get("Envio", [])
+ res["gls_sent_xml"] = xml
+ return res
diff --git a/delivery_gls_asm/models/stock_picking.py b/delivery_gls_asm/models/stock_picking.py
new file mode 100644
index 00000000000..9b1e2a12309
--- /dev/null
+++ b/delivery_gls_asm/models/stock_picking.py
@@ -0,0 +1,29 @@
+# Copyright 2020 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo import _, fields, models
+
+
+class StockPicking(models.Model):
+ _inherit = "stock.picking"
+
+ # ASM API has two references for each delivery. This one is needed
+ # for some operations like getting the label
+ gls_asm_public_tracking_ref = fields.Char(
+ string="GLS Barcode",
+ readonly=True,
+ copy=False,
+ )
+
+ def gls_asm_get_label(self):
+ """Get GLS Label for this picking expedition"""
+ self.ensure_one()
+ if (self.delivery_type != "gls_asm" or not
+ self.gls_asm_public_tracking_ref):
+ return
+ pdf = self.carrier_id.gls_asm_get_label(
+ self.gls_asm_public_tracking_ref)
+ label_name = "gls_{}.pdf".format(self.gls_asm_public_tracking_ref)
+ self.message_post(
+ body=(_("GLS label for %s") % self.gls_asm_public_tracking_ref),
+ attachments=[(label_name, pdf)],
+ )
diff --git a/delivery_gls_asm/readme/CONFIGURE.rst b/delivery_gls_asm/readme/CONFIGURE.rst
new file mode 100644
index 00000000000..bfad09825f2
--- /dev/null
+++ b/delivery_gls_asm/readme/CONFIGURE.rst
@@ -0,0 +1,14 @@
+Para configurar el transportista:
+
+#. Vaya a *Inventario > Configuración > Entrega > Método de envío* y cree uno
+ nuevo.
+#. Escoja *GLS ASM* Como proveedor.
+#. Configure los datos de servicio que tiene contratados y el producto de
+ envío que desea utilizar.
+
+Si no tiene credenciales todavía, puede poner datos inventados y dejar el
+método de envío en "Entorno de prueba". Se utilizará el usuario de pruebas de
+la API GLS ASM.
+
+Si GLS cambiase en un futuro el usuario de prueba, puede cambiarlo en los
+*Parámetros del sistema* en la clave `delivery_gls_asm.api_user_demo`.
diff --git a/delivery_gls_asm/readme/CONTRIBUTORS.rst b/delivery_gls_asm/readme/CONTRIBUTORS.rst
new file mode 100644
index 00000000000..94b6ba95366
--- /dev/null
+++ b/delivery_gls_asm/readme/CONTRIBUTORS.rst
@@ -0,0 +1,3 @@
+* `Tecnativa `_:
+
+ * David Vidal
diff --git a/delivery_gls_asm/readme/DESCRIPTION.rst b/delivery_gls_asm/readme/DESCRIPTION.rst
new file mode 100644
index 00000000000..1228d7570de
--- /dev/null
+++ b/delivery_gls_asm/readme/DESCRIPTION.rst
@@ -0,0 +1,2 @@
+Este módulo integra la API de GLS España (antigua API de ASM) con Odoo. No es
+válido para integraciones de GLS en otros países, que podrían usar otras APIs.
diff --git a/delivery_gls_asm/readme/INSTALL.rst b/delivery_gls_asm/readme/INSTALL.rst
new file mode 100644
index 00000000000..4c250c4fc2a
--- /dev/null
+++ b/delivery_gls_asm/readme/INSTALL.rst
@@ -0,0 +1,6 @@
+Este módulo necesita la librería python `suds` y depende igualmente de los
+módulos de OCA/delivery-carrier `delivery_package_number` y `delivery_state`.
+
+La API de GLS/ASM no provee métodos de cálculo de precio, de modo que para poder
+calcular los costes de envío sería recomendable instalar el módulo
+`delivery_price_method`.
diff --git a/delivery_gls_asm/readme/ROADMAP.rst b/delivery_gls_asm/readme/ROADMAP.rst
new file mode 100644
index 00000000000..7a2e7416179
--- /dev/null
+++ b/delivery_gls_asm/readme/ROADMAP.rst
@@ -0,0 +1,4 @@
+* La API no facilita métodos para cotizar el coste real de los envíos, por lo
+ que siempre se cotizan a 0. Si la cotización de envíos es necesaria,
+ puede instalarse el módulo OCA `delivery_price_method` o bien personalizar
+ el método de cotización para este tipo de transportista.
diff --git a/delivery_gls_asm/readme/USAGE.rst b/delivery_gls_asm/readme/USAGE.rst
new file mode 100644
index 00000000000..2445f6de043
--- /dev/null
+++ b/delivery_gls_asm/readme/USAGE.rst
@@ -0,0 +1,62 @@
+Estas son las distintas operaciones posibles con este módulo:
+
+Grabar servicios
+~~~~~~~~~~~~~~~~
+
+ #. Al confirmar el albarán, el servicio se grabará en GLS.
+ #. Con la respuesta, se registrará en el chatter la referencia de envío y
+ las etiquetas correspondientes.
+ #. Para gestionar los bultos del envío, se puede utilizar el campo de número
+ de bultos que añade `delivery_package_number` (ver el README para mayor
+ información) o bien el flujo nativo de Odoo con paquetes de envío. El
+ módulo mandará a la API de GLS/ASM el número correspondiente y podremos
+ descargar las etiquetas en PDF con su correspondiente numeración.
+
+Cancelar servicios
+~~~~~~~~~~~~~~~~~~
+
+ #. Al igual que en otros métodos de envío, en los albaranes de salida podemos
+ cancelar un servicio determinado mediante la acción correspondiente en la
+ pestaña de *Información Adicional*, sección *Información de entrega* una
+ vez el pedido esté confirmado y la expedición generada.
+ #. Podremos generar una nueva expedición una vez cancelado si fuese necesario.
+
+Obtener etiquetas
+~~~~~~~~~~~~~~~~~~
+
+ #. Si por error hubiésemos eliminado el adjunto de las etiquetas que obtuvimos
+ en la grabación del servicio, podemos obtenerlas de nuevo pulsando en el
+ botón "Etiqueta GLS" que tenemos en la parte superior de la vista
+ formulario del albarán.
+
+Seguimiento de envíos
+~~~~~~~~~~~~~~~~~~~~~
+
+ #. El módulo está integrado con `delivery_state` para poder recabar la
+ información de seguimiento de nuestros envíos directamente desde la API de
+ GLS-ASM.
+ #. Para ello, vaya al albarán con un envío GLS ya grabado y en la pestaña de
+ *Información adicional* verá el botón *Actualizar seguimiento* para pedir
+ a la API de GLS que actualice el estado de este envío en Odoo.
+
+Manifiesto de envíos
+~~~~~~~~~~~~~~~~~~~~
+
+ #. Para obtener el manifiesto de expediciones que firmaría el repartidor,
+ puede ir al menú *Inventario > Informes > Manifiesto de Envíos GLS*.
+ #. También puede obtener el manifiesto desde un smart button en el formulario
+ del transportista.
+ #. En el asistente, seleccione el servicio GLS del cual quiere sacar el
+ manifiesto y la fecha desde la que desea listar los envíos.
+ #. Pulse en el botón "Manifiesto GlS" para obtener un listado en PDF de los
+ envíos del servicio seleccionado.
+
+Depuración de errores
+~~~~~~~~~~~~~~~~~~~~~
+
+ #. En cada servicio GLS-ASM dispone de una pestaña llamada "Técnico" en la
+ que puede consultar la última petición y respuesta a la API de GLS-ASM.
+ Esto le servirá como ayuda a la hora de depurar posibles errores de
+ comunicación.
+ #. También puede activar Odoo con `--log-level=debug` para refistrar las
+ peticiones y las respuestas en el log.
diff --git a/delivery_gls_asm/static/description/icon.png b/delivery_gls_asm/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..84c81ec42421dff8ae06546115f088975c32f9ca
GIT binary patch
literal 4444
zcmd5=S5y;Pvq+BaqxKaX0mw>cTr1vVl6FNjgl~6@`009vp^xgs@iXcQK
zq4yp_7YIcHyxi~i^FH6lKC{;O+H3DwGjq-xJ*YY(J%}Cv05EDiS2dtu@PBoUj&jO4
zO5rGQ-RHTPKLBvE_rIe0?)}M;a>*G0F%5X({W2iP&d&)D6cqH>)yv)A!Oq9&vA3Ud
z-i{my0Ju%mP*pYzMs4SZ1h5))z3R5EhaDwF3p?5kLa)VsV`8E;bL8ZP;DV16(dF~3WRbn
zi7c&FKB0&S{QW$F`aD2R
z?o1k{1Ck2Q*KSdcthCWN)Y?n*b>~5p2
zBCou+$n>|I3Z=P;x5OL9Nj8oTi@jJRssi-wH}Q}aI0{J3<+-2z
zNcRKH{8RWnrnJ|Hv-b9Ofv4!wh6ZG+9=y0Xs{dDmjeHaf;ynCNxShlyvRx3~6_nk}
zAR0Gva$xenCX6-9LJ^*!Nn6tmE3|4WOZZi{jVxIy{PaP2T2txOExSdk2W4vihHA^@
zZ^1vi5Kc#?^QrLua(+Ik
z+aXBz^^J|@$!Y@uNa5skGgni{m{fr`JLaa=7QHdQ?GDTtz|Y@7b{pgoEKM^3C;19`
znipq=d9&>@x2n`ZfK|pqX7wKJw(UQm^2f91Y**pZ+hV$&5khAhNUG<&tLD@~(x#oN
zKXdcG#ReT0;fdVVy`>XCF77cmui55+;C57-I7cY!mK-xd%&OLgPm93qJ18^#bkuN!
zM9cdUi@o<)L0fEFXs|`*;jw`#Em97gm-|$VBb4T0$^dksVOuLCeE19{s6fEMCaS*1
zeLI9?k|nF><#$x7HWo{-9MpC5(=B)l_n&23MO`vBs
zl)BV;6LK)v&-LXp;y~h9-Up*KZr4I{c6O+tqdQVhoKAb}v~zQ$g2y`2g?HJ&Z6?!M
zKV*Jct<=D8R(0`L)9Es=r%DPyxd$ZWW$oC2X*3)xxiLnS`sg=8iX)VNsD>F+&A55I
zKeIm#ISva6*;`5o`T8}wmV7EwOcbsYY9*=Iz&-q4(ke%`3*mH_d!KpQo+8d?-WlzT
zg(HQ{e`^fr)6lun;JGJ)41B`OLxqVYu@fGOVSR>I&dC^BH2Lj|rhtHeH`e24yE{%(
zL;Bh$qdpzumwUwmT(YKLesYHd;$KGzPSxLCS{}u+c!ko*_AdMm9Fsqne9_nX=vW(;
z+N+f46mRgUbXu#XR*T7f`{>9Uk8_}P_-=nbZ+&P*7YY9*=+}Jd0p|Yfpyd^qO~-Yu
z+I6qAwo-Rrgym=LNwWjgX@-}gRQrqKG9TI}BHVTj8>IL~y$rSItBOCgi)P@3{`kO
zW>iNi6*cvn{`Vf@Y`oqG9eQG94)j*IVC0oQd+3mExk(2IfT4r`=D*pJ;py$an-qw*
z1}(U_GIi@a57kGM7Y_%&l@3V79_4OyeeTwy8FZ0&3;*JKz4=3XMH&g+%|7ES0m`Qj
zlm;RriBZ0)v5o2ZhVFA~l%<@D@1NEXX~~8h0~aj%Tms1phYugB#%J#t|`%sxwR(Hj%5Z8Ev%4mRGd$3?rlZeMm?L1ecwnh@u7Mij{
zOs5=&tninYaH5$=)je?f)U%kBl(L13ca1JR4nNHvGIGw*aViigOmtVip$Lyzud2t3+v}q<98+{2gn1N4
zmAo&ni)um#K84-Pid8z|09Il(maExc?nhMnjQT#5nP2L4FLeBq=S-OBr+uE#WD_d1
zL3Z73#FW{pLDg
z|7e*&ABiXrT7iM$Fzq&%H-T5b0eiyRou#LbZb8b};aw?QOY5iZXE!kkC##G
zCPV%l8ucG4>eEQ>fesQN%6t;FdA3G;DT#xFLH^UI=GzzC{D)RuwCjTwoC
zqSD!PTOnf&VaN;GTb3c*%S(kCS;=CEQV{F3S85K7hg`rE;;Q&8qLVhPa6>$TKvU
zgav^tFrO-q362mkKA|Yr?uD6JpjPphDOXo^_~z=mnv9uYZ>P;A@-Wf#k*(
z>0R$yXc;PFx3Lk;t24H0_oA$DzGGJi`wCcTAaLq8{(^y*$#w3CpcpxHb$8og3^gqG
zr_7Auj@Q%nx+6<*p-YnFZq;n>R-0Mp#aM)tD^G+EH^s#zFDbq}8Mf{neXE`)4h1iM
zOH4Ou{qv%&kV+_++|*mSa^*pps_!L2gM7aFR5b+|J>ty2}b=jw+#6q#eay%Y;
z#-4uz5zPpbGA~=I=JY~eiBt}vMzj(DReJoUodF<5M$fIke`#KY-1J`3+jQQcjKjF$cBaUr($rqrkYbtckxu$#Lq|V3
z3&DqTS8$Xa?yXyf>$l_4}=i)#?7p3-Rf0G0FHxP|bSH
zv;HN4@QzE)f{-2Kk5Dc3QUlz~h}{Jz*C@DcYp+OrtxX{b48L1=D<9w@b0
z|JWMp?>6VqLjdV%wF*(nD+@|=5E=tRQ|y;h_aXF{>i3D8NF6TO_?VR0ukE+k-dZ#w
zur}n^!wyUOVW0NuO?@gmwFk?Q56z48ZWrE${{3|KL0NWeV`SGUANd@EC3bX#eX6Ke
z)IN5zRk~gvBb2`K&V`kpwq-U=B-d+`pibkA6Jn+Bvw4d8)hy!lrKwkXA8&ThwU47q
zK>p2q^ZYpj0gCJ!4ck0s2F?aij~arfti1Q#7Aw3RNyUbO!Q=r>fP_S&zHx=q(gXYy
zh>2+o-AiHapAlTrjI?CNmhZCx5R0zb+HLA_fqLRQRJHgmKT%P}<}!?~D2;$rf~hAV2^?bM-<0s8vX
zx_d@8h$OXaNoR@sBGIm!7R2@10tuem@Bht`&d?lCFMPZfuO4gxua9q
zUiBkLPbf7T2__;T8JK-Qb+R5sz23p_$xss=qjFV+^#QsUi$vGI&+Qg35WX+Pu#XZGZb}`eiD)ekEP?ux!LVM2SRRFNxFR6x-jzx=
zdCqJ4!W;mjLlJ*9@q6XoeRF+`XPzrpSlNvmf)_g)n-VTBuape;CyV-rEX)N}Uil}p
z9%?Sp7#IOVY#^=f4zfuo<
znd6ffiyB_&y1Vm*w5^6`_@l@y8DGD~?yqe=#eU~j2d!RjXBO
G5&r}CSG}zO
literal 0
HcmV?d00001
diff --git a/delivery_gls_asm/static/description/icon.svg b/delivery_gls_asm/static/description/icon.svg
new file mode 100644
index 00000000000..bca2a61d9dd
--- /dev/null
+++ b/delivery_gls_asm/static/description/icon.svg
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/delivery_gls_asm/static/description/index.html b/delivery_gls_asm/static/description/index.html
new file mode 100644
index 00000000000..7fb54d499d2
--- /dev/null
+++ b/delivery_gls_asm/static/description/index.html
@@ -0,0 +1,551 @@
+
+
+
+
+
+
+Delivery GLS-ASM
+
+
+
+
+
Delivery GLS-ASM
+
+
+
+
Este módulo integra la API de GLS España (antigua API de ASM) con Odoo. No es
+válido para integraciones de GLS en otros países, que podrían usar otras APIs.
+
Table of contents
+
+
+
+
Este módulo necesita la librería python suds y depende igualmente de los
+módulos de OCA/delivery-carrier delivery_package_number y delivery_state .
+
La API de GLS/ASM no provee métodos de cálculo de precio, de modo que para poder
+calcular los costes de envío sería recomendable instalar el módulo
+delivery_price_method .
+
+
+
+
Para configurar el transportista:
+
+Vaya a Inventario > Configuración > Entrega > Método de envío y cree uno
+nuevo.
+Escoja GLS ASM Como proveedor.
+Configure los datos de servicio que tiene contratados y el producto de
+envío que desea utilizar.
+
+
Si no tiene credenciales todavía, puede poner datos inventados y dejar el
+método de envío en “Entorno de prueba”. Se utilizará el usuario de pruebas de
+la API GLS ASM.
+
Si GLS cambiase en un futuro el usuario de prueba, puede cambiarlo en los
+Parámetros del sistema en la clave delivery_gls_asm.api_user_demo .
+
+
+
+
Estas son las distintas operaciones posibles con este módulo:
+
+
+
+
+Al confirmar el albarán, el servicio se grabará en GLS.
+Con la respuesta, se registrará en el chatter la referencia de envío y
+las etiquetas correspondientes.
+Para gestionar los bultos del envío, se puede utilizar el campo de número
+de bultos que añade delivery_package_number (ver el README para mayor
+información) o bien el flujo nativo de Odoo con paquetes de envío. El
+módulo mandará a la API de GLS/ASM el número correspondiente y podremos
+descargar las etiquetas en PDF con su correspondiente numeración.
+
+
+
+
+
+
+
+Al igual que en otros métodos de envío, en los albaranes de salida podemos
+cancelar un servicio determinado mediante la acción correspondiente en la
+pestaña de Información Adicional , sección Información de entrega una
+vez el pedido esté confirmado y la expedición generada.
+Podremos generar una nueva expedición una vez cancelado si fuese necesario.
+
+
+
+
+
+
+
+Si por error hubiésemos eliminado el adjunto de las etiquetas que obtuvimos
+en la grabación del servicio, podemos obtenerlas de nuevo pulsando en el
+botón “Etiqueta GLS” que tenemos en la parte superior de la vista
+formulario del albarán.
+
+
+
+
+
+
+
+El módulo está integrado con delivery_state para poder recabar la
+información de seguimiento de nuestros envíos directamente desde la API de
+GLS-ASM.
+Para ello, vaya al albarán con un envío GLS ya grabado y en la pestaña de
+Información adicional verá el botón Actualizar seguimiento para pedir
+a la API de GLS que actualice el estado de este envío en Odoo.
+
+
+
+
+
+
+
+Para obtener el manifiesto de expediciones que firmaría el repartidor,
+puede ir al menú Inventario > Informes > Manifiesto de Envíos GLS .
+También puede obtener el manifiesto desde un smart button en el formulario
+del transportista.
+En el asistente, seleccione el servicio GLS del cual quiere sacar el
+manifiesto y la fecha desde la que desea listar los envíos.
+Pulse en el botón “Manifiesto GlS” para obtener un listado en PDF de los
+envíos del servicio seleccionado.
+
+
+
+
+
+
+
+En cada servicio GLS-ASM dispone de una pestaña llamada “Técnico” en la
+que puede consultar la última petición y respuesta a la API de GLS-ASM.
+Esto le servirá como ayuda a la hora de depurar posibles errores de
+comunicación.
+También puede activar Odoo con –log-level=debug para refistrar las
+peticiones y las respuestas en el log.
+
+
+
+
+
+
+
+La API no facilita métodos para cotizar el coste real de los envíos, por lo
+que siempre se cotizan a 0. Si la cotización de envíos es necesaria,
+puede instalarse el módulo OCA delivery_price_method o bien personalizar
+el método de cotización para este tipo de transportista.
+
+
+
+
+
Bugs are tracked on GitHub Issues .
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+feedback .
+
Do not contact contributors directly about support or help with technical issues.
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+
+
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
This module is part of the OCA/l10n-spain project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute .
+
+
+
+
+
diff --git a/delivery_gls_asm/tests/__init__.py b/delivery_gls_asm/tests/__init__.py
new file mode 100644
index 00000000000..40bbcefad4c
--- /dev/null
+++ b/delivery_gls_asm/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_delivery_gls_asm
diff --git a/delivery_gls_asm/tests/test_delivery_gls_asm.py b/delivery_gls_asm/tests/test_delivery_gls_asm.py
new file mode 100644
index 00000000000..b3ba725401a
--- /dev/null
+++ b/delivery_gls_asm/tests/test_delivery_gls_asm.py
@@ -0,0 +1,105 @@
+# Copyright 2020 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from unittest import mock
+from odoo.tests import common, Form
+
+# We could rely on test user to make the tests, although we would rely on
+# the service stability wich could break CIs
+# It's better to mock the interface response and to test
+# Odoo flows regressions.
+_mock_class = (
+ "odoo.addons.delivery_gls_asm.models.gls_asm_request.GlsAsmRequest")
+
+
+class TestDeliveryGlsAsm(common.SavepointCase):
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.shipping_product = cls.env['product.product'].create({
+ 'type': 'service',
+ 'name': 'Test Shipping costs',
+ 'list_price': 10.0,
+ })
+ cls.carrier_gls_asm = cls.env['delivery.carrier'].create({
+ 'name': 'GLS ASM',
+ 'delivery_type': 'gls_asm',
+ 'product_id': cls.shipping_product.id,
+ 'prod_environment': False,
+ })
+ cls.product = cls.env['product.product'].create({
+ 'type': 'product',
+ 'name': 'Test product',
+ })
+ cls.partner = cls.env['res.partner'].create({
+ 'name': 'Mr. Odoo',
+ 'city': 'Odoo Ville',
+ 'zip': '28001',
+ 'street': 'Calle de La Rua, 3',
+ })
+ cls.partner_wh = cls.env['res.partner'].create({
+ 'name': 'WH Test Partner',
+ 'city': 'Odoo City',
+ 'zip': '08001',
+ 'street': 'Strasse Street, 1',
+ })
+ order_form = Form(
+ cls.env['sale.order'].with_context(tracking_disable=True))
+ order_form.partner_id = cls.partner
+ order_form.carrier_id = cls.carrier_gls_asm
+ with order_form.order_line.new() as line:
+ line.product_id = cls.product
+ line.product_uom_qty = 20.0
+ cls.sale_order = order_form.save()
+ cls.sale_order.action_confirm()
+ cls.picking = cls.sale_order.picking_ids
+ cls.picking.move_lines.quantity_done = 20
+
+ def test_01_gls_picking_confirm_simple(self):
+ """The picking is confirm and the shipping is recorded to GLS"""
+ mocked_response = {
+ "_codexp": "TEST123456789",
+ "_codbarras": "1234567890123",
+ "_return": 0,
+ }
+ with mock.patch(
+ _mock_class + '._send_shipping',
+ return_value=mocked_response,
+ ):
+ self.picking.button_validate()
+ self.assertEqual(self.picking.carrier_tracking_ref, "TEST123456789")
+ self.assertEqual(
+ self.picking.gls_asm_public_tracking_ref, "1234567890123")
+ # Cancel the expedition. The tracking refs go away
+ mocked_response = {
+ "_return": 0,
+ }
+ with mock.patch(
+ _mock_class + '._cancel_shipment',
+ return_value=mocked_response,
+ ):
+ self.picking.cancel_shipment()
+ self.assertFalse(self.picking.gls_asm_public_tracking_ref)
+ self.assertFalse(self.picking.carrier_tracking_ref)
+
+ def test_02_gls_manifest(self):
+ """Mock manifest response"""
+ mocked_response = [{
+ 'cliente': "Pruebas WS",
+ 'codexp': "467247191",
+ 'bultos': "1",
+ 'kgs': "1,0",
+ 'nombre_dst': "Mr. Odoo",
+ 'calle_dst': "Test Address",
+ 'localidad_dst': "Test location",
+ 'cp_dst': "28001",
+ }]
+ wizard = self.env["gls.asm.minifest.wizard"].create({
+ "carrier_id": self.carrier_gls_asm.id,
+ "date_from": "2020-05-31",
+ })
+ with mock.patch(
+ _mock_class + '._get_manifest',
+ return_value=mocked_response,
+ ):
+ report = wizard.get_manifest()
+ self.assertEqual(report["data"]["deliveries"], mocked_response)
diff --git a/delivery_gls_asm/views/delivery_asm_view.xml b/delivery_gls_asm/views/delivery_asm_view.xml
new file mode 100644
index 00000000000..d7b56d5c014
--- /dev/null
+++ b/delivery_gls_asm/views/delivery_asm_view.xml
@@ -0,0 +1,58 @@
+
+
+
+
+ delivery.carrier
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/delivery_gls_asm/views/gls_asm_manifest_template.xml b/delivery_gls_asm/views/gls_asm_manifest_template.xml
new file mode 100644
index 00000000000..c98d14a7c11
--- /dev/null
+++ b/delivery_gls_asm/views/gls_asm_manifest_template.xml
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+ GLS MANIFEST
+
+
+
+
+
+
+
+
+
+
+
+
+ Company:
+
+
+
+
+
+
+
+
+
+
+ Manifest Date:
+
+
+
+
+
+
+
+
+
+
+ Date of printing
+
+
+
+
+
+
+
+
+
+
+ Printed by
+
+
+
+
+
+
+
+
+
+
+ Carrier Signature / Stamp
+
+
+
+
+
+
+
+
+
+ Ref.
+ Customer
+ ZIP Code
+ City
+ Weight
+ Packages
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TOTAL
+
+
+
+
+ (Kg.)
+
+
+
+
+
+ (Packages)
+
+
+
+
+
+
+ TOTAL EXPEDITIONS:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/delivery_gls_asm/views/stock_picking_views.xml b/delivery_gls_asm/views/stock_picking_views.xml
new file mode 100644
index 00000000000..4421b667656
--- /dev/null
+++ b/delivery_gls_asm/views/stock_picking_views.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+ stock.picking
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/delivery_gls_asm/wizard/__init__.py b/delivery_gls_asm/wizard/__init__.py
new file mode 100644
index 00000000000..978fef2a04f
--- /dev/null
+++ b/delivery_gls_asm/wizard/__init__.py
@@ -0,0 +1 @@
+from . import gls_asm_manifest_wizard
diff --git a/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py b/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
new file mode 100644
index 00000000000..e728a77787a
--- /dev/null
+++ b/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
@@ -0,0 +1,40 @@
+# Copyright 2020 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo import _, fields, models
+from odoo.exceptions import UserError
+from ..models.gls_asm_request import GlsAsmRequest
+
+
+class DeliverySeurManifiestoWizard(models.TransientModel):
+ _name = "gls.asm.minifest.wizard"
+ _description = "Get the GLS Manifest for the given date range"
+
+ date_from = fields.Date(
+ required=True,
+ default=fields.Date.context_today,
+ )
+ carrier_id = fields.Many2one(
+ string="GLS Service",
+ comodel_name="delivery.carrier",
+ domain=[('delivery_type', '=', 'gls_asm')],
+ required=True,
+ )
+
+ def get_manifest(self):
+ """List of shippings for the given dates as GLS provides them"""
+ gls_request = GlsAsmRequest(self.carrier_id._gls_asm_uid())
+ manifest_data = gls_request._get_manifest(self.date_from)
+ if not manifest_data:
+ raise UserError(_(
+ "It wasn't possible to get the manifest. Maybe there aren't"
+ "deliveries for the selected date."))
+ datas = {
+ "ids": self.env.context.get('active_ids', []),
+ "model": "gls.asm.minifest.wizard",
+ "deliveries": manifest_data,
+ "date_from": self.date_from,
+ "company_name": self.carrier_id.company_id.name,
+ }
+ return self.env.ref(
+ "delivery_gls_asm.gls_asm_manifest_report"
+ ).report_action(self, data=datas)
diff --git a/delivery_gls_asm/wizard/gls_asm_manifest_wizard_views.xml b/delivery_gls_asm/wizard/gls_asm_manifest_wizard_views.xml
new file mode 100644
index 00000000000..924f7bf3123
--- /dev/null
+++ b/delivery_gls_asm/wizard/gls_asm_manifest_wizard_views.xml
@@ -0,0 +1,26 @@
+
+
+ gls.asm.minifest.wizard
+ form
+
+
+
+
+
+
From 2a86fb443980c13f35e384602e657bddba658f32 Mon Sep 17 00:00:00 2001
From: David Vidal
Date: Tue, 6 Oct 2020 07:56:06 +0000
Subject: [PATCH 02/48] Translated using Weblate (Spanish)
Currently translated at 68.4% (93 of 136 strings)
Translation: l10n-spain-12.0/l10n-spain-12.0-delivery_gls_asm
Translate-URL: https://translation.odoo-community.org/projects/l10n-spain-12-0/l10n-spain-12-0-delivery_gls_asm/es/
---
delivery_gls_asm/i18n/es.po | 115 ++++++++++++++++++++----------------
1 file changed, 65 insertions(+), 50 deletions(-)
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index 2ab14c9707c..f1482559c84 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -7,40 +7,40 @@ msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-05 07:09+0000\n"
-"PO-Revision-Date: 2020-08-13 11:01+0200\n"
-"Last-Translator: <>\n"
+"PO-Revision-Date: 2020-10-06 10:16+0000\n"
+"Last-Translator: David Vidal \n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: \n"
-"X-Generator: Poedit 2.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 3.10\n"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "10:00 Service"
-msgstr ""
+msgstr "10:00 Service"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "14:00 Service"
-msgstr ""
+msgstr "14:00 Service"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "14H SOBRES"
-msgstr ""
+msgstr "14H SOBRES"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "24H SOBRES"
-msgstr ""
+msgstr "24H SOBRES"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "72H SOBRES"
-msgstr ""
+msgstr "72H SOBRES"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
@@ -103,27 +103,27 @@ msgstr "TOTAL "
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "ASM BUROFAX"
-msgstr ""
+msgstr "ASM BUROFAX"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "ASM GO"
-msgstr ""
+msgstr "ASM GO"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "ASM0830"
-msgstr ""
+msgstr "ASM0830"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "ASMTRAVELLERS"
-msgstr ""
+msgstr "ASMTRAVELLERS"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "BICI"
-msgstr ""
+msgstr "BICI"
#. module: delivery_gls_asm
#: selection:delivery.carrier,delivery_type:0
@@ -133,47 +133,47 @@ msgstr "En base a reglas"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "BusinessParcel"
-msgstr ""
+msgstr "BusinessParcel"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "CAN MUESTRAS"
-msgstr ""
+msgstr "CAN MUESTRAS"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "CARGA"
-msgstr ""
+msgstr "CARGA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "CARGA MARITIMA"
-msgstr ""
+msgstr "CARGA MARITIMA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "COMPRAS"
-msgstr ""
+msgstr "COMPRAS"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "CORREO INTERNO"
-msgstr ""
+msgstr "CORREO INTERNO"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "COURIER"
-msgstr ""
+msgstr "COURIER"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
msgid "Cancelar"
-msgstr ""
+msgstr "Cancelar"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_postage_type:0
msgid "Cash On Delivery"
-msgstr "Reembolso"
+msgstr "Portes debidos"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
@@ -198,17 +198,17 @@ msgstr "Cliente"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "DEVOLUCION"
-msgstr ""
+msgstr "DEVOLUCION"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "DISTRIBUCION PROPIA"
-msgstr ""
+msgstr "DISTRIBUCION PROPIA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "DISTRIBUCION RED"
-msgstr ""
+msgstr "DISTRIBUCION RED"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__date_from
@@ -218,7 +218,7 @@ msgstr "Fecha desde"
#. module: delivery_gls_asm
#: model:ir.model,name:delivery_gls_asm.model_delivery_carrier
msgid "Delivery Methods"
-msgstr "Método de envío"
+msgstr "Métodos de envío"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
@@ -228,57 +228,57 @@ msgstr "Nombre mostrado"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "EASYBAG"
-msgstr ""
+msgstr "EASYBAG"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "ECONOMY"
-msgstr ""
+msgstr "ECONOMY"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "EURO ESTANDAR"
-msgstr ""
+msgstr "EURO ESTANDAR"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "EURO SMALL"
-msgstr ""
+msgstr "EURO SMALL"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "EUROBUSINESS PARCEL"
-msgstr ""
+msgstr "EUROBUSINESS PARCEL"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "EUROBUSINESS SMALL PARCEL"
-msgstr ""
+msgstr "EUROBUSINESS SMALL PARCEL"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "EconomyParcel"
-msgstr ""
+msgstr "EconomyParcel"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "Ent. Pto. ASM"
-msgstr ""
+msgstr "Ent. Pto. ASM"
#. module: delivery_gls_asm
#: selection:delivery.carrier,delivery_type:0
msgid "Fixed Price"
-msgstr "Precio fijo"
+msgstr "Fixed Price"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "Franja Horaria"
-msgstr ""
+msgstr "Franja Horaria"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "GLASS"
-msgstr ""
+msgstr "GLASS"
#. module: delivery_gls_asm
#: selection:delivery.carrier,delivery_type:0
@@ -339,6 +339,8 @@ msgid ""
"GLS Shipping extra info:\n"
"barcode: %s"
msgstr ""
+"Información extra de la expedición GLS:\n"
+"Código de barras: %s"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_uid
@@ -359,6 +361,9 @@ msgid ""
"Error:\n"
"{}"
msgstr ""
+"GLS ha devuelto un error tratando de registrar la expedición para {}.\n"
+"Error:\n"
+"{}"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:318
@@ -368,6 +373,10 @@ msgid ""
"Traceback:\n"
"{}"
msgstr ""
+"GLS: Si respuesta del servidor intentando recuperar el estado de la "
+"referencia {}.\n"
+"Traceback:\n"
+"{}"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:347
@@ -377,6 +386,10 @@ msgid ""
"Traceback:\n"
"{}"
msgstr ""
+"GLS: Sin respuesta del servidor trantando de imprimir la etiqueta con "
+"referencia {}.\n"
+"Traceback:\n"
+"{}"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
@@ -391,42 +404,42 @@ msgstr "Obtener el Manifiesto de GLS para el rango de fechas indicado"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "IBEX"
-msgstr ""
+msgstr "IBEX"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
msgid "ID"
-msgstr ""
+msgstr "ID"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "INT PAQUET"
-msgstr ""
+msgstr "INT PAQUET"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "INTERC. EUROESTANDAR"
-msgstr ""
+msgstr "INTERC. EUROESTANDAR"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "INTERDIA"
-msgstr ""
+msgstr "INTERDIA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "INTERNACIONAL ECONOMY"
-msgstr ""
+msgstr "INTERNACIONAL ECONOMY"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "INTERNACIONAL EXPRESS"
-msgstr ""
+msgstr "INTERNACIONAL EXPRESS"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "Int. WEB"
-msgstr ""
+msgstr "Int. WEB"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py:28
@@ -435,6 +448,8 @@ msgid ""
"It wasn't possible to get the manifest. Maybe there aren'tdeliveries for the "
"selected date."
msgstr ""
+"No fue posible obtener el manifiesto. Quizá no haya expediciones para la "
+"fecha seleccionada."
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_request
@@ -464,7 +479,7 @@ msgstr "Última actualización el"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "MR1"
-msgstr ""
+msgstr "MR1"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
@@ -474,7 +489,7 @@ msgstr "Manifiesto"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "Maritimo"
-msgstr ""
+msgstr "Maritimo"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
@@ -542,12 +557,12 @@ msgstr "Tipo de envío"
#. module: delivery_gls_asm
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
msgid "Postage type, usually 'Prepaid'"
-msgstr "Tipo de envío, normalment 'Prepago'"
+msgstr "Tipo de envío, normalmente 'Portes pagados'"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_postage_type:0
msgid "Prepaid"
-msgstr "Prepago"
+msgstr "Portes pagados"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__delivery_type
From 3da3a803fd51c3dba5a2e8293271bdee112c0e4e Mon Sep 17 00:00:00 2001
From: david
Date: Thu, 8 Oct 2020 17:17:32 +0200
Subject: [PATCH 03/48] [IMP] delivery_gls and delivery_seur: add informative
exceptions
Non implemented methods should raise informative exceptions if used
[UPD] Update delivery_gls_asm.pot
delivery_gls_asm 12.0.1.0.1
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Translation: l10n-spain-12.0/l10n-spain-12.0-delivery_gls_asm
Translate-URL: https://translation.odoo-community.org/projects/l10n-spain-12-0/l10n-spain-12-0-delivery_gls_asm/
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/i18n/delivery_gls_asm.pot | 12 +++++++++++-
delivery_gls_asm/i18n/es.po | 15 ++++++++++++++-
delivery_gls_asm/models/delivery_carrier.py | 8 ++++++++
4 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index 6a711db2533..d833356e42f 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "12.0.1.0.0",
+ "version": "12.0.1.0.1",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, "
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index 446f5ace645..385b53e96a7 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -13,6 +13,16 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:216
+#, python-format
+msgid "\n"
+" GLS ASM API doesn't provide methods to compute delivery rates, so\n"
+" you should relay on another price method instead or override this\n"
+" one in your custom code.\n"
+" "
+msgstr ""
+
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "10:00 Service"
@@ -308,7 +318,7 @@ msgid "GLS Label"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:237
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:245
#: model:ir.actions.act_window,name:delivery_gls_asm.action_delivery_gls_asm_manifest_wizard
#: model:ir.actions.report,name:delivery_gls_asm.gls_asm_manifest_report
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index f1482559c84..5ff6cf47636 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -17,6 +17,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10\n"
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:216
+#, python-format
+msgid ""
+"\n"
+" GLS ASM API doesn't provide methods to compute delivery rates, "
+"so\n"
+" you should relay on another price method instead or override "
+"this\n"
+" one in your custom code.\n"
+" "
+msgstr ""
+
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "10:00 Service"
@@ -318,7 +331,7 @@ msgid "GLS Label"
msgstr "Etiqueta GLS"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:237
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:245
#: model:ir.actions.act_window,name:delivery_gls_asm.action_delivery_gls_asm_manifest_wizard
#: model:ir.actions.report,name:delivery_gls_asm.gls_asm_manifest_report
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index d2dc7593c9a..4871c6e503b 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -211,6 +211,14 @@ def gls_asm_cancel_shipment(self, pickings):
"GLS Expedition with reference %s cancelled") %
picking.carrier_tracking_ref)
+ def gls_asm_rate_shipment(self):
+ """There's no public API so another price method should be used"""
+ raise NotImplementedError(_("""
+ GLS ASM API doesn't provide methods to compute delivery rates, so
+ you should relay on another price method instead or override this
+ one in your custom code.
+ """))
+
def gls_asm_get_label(self, gls_asm_public_tracking_ref):
"""Generate label for picking
:param picking - stock.picking record
From 99c128aae5eb9f85bba8c8f60977a764ceefbb32 Mon Sep 17 00:00:00 2001
From: david
Date: Fri, 9 Oct 2020 17:43:40 +0200
Subject: [PATCH 04/48] [FIX] delivery_gls_asm: manifest
delivery_gls_asm 12.0.1.0.2
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/models/gls_asm_request.py | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index d833356e42f..54b23b7f861 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "12.0.1.0.1",
+ "version": "12.0.1.0.2",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, "
diff --git a/delivery_gls_asm/models/gls_asm_request.py b/delivery_gls_asm/models/gls_asm_request.py
index 709d3308c91..d2012d1809e 100644
--- a/delivery_gls_asm/models/gls_asm_request.py
+++ b/delivery_gls_asm/models/gls_asm_request.py
@@ -405,5 +405,4 @@ def _get_manifest(self, date_from):
"No response from server getting manifisto for GLS.\n"
"Traceback:\n{}").format(e))
res = self._recursive_asdict(res.Servicios.Envios).get("Envio", [])
- res["gls_sent_xml"] = xml
return res
From bc6e5e12e274019e243801ab8640a38fe4379b2f Mon Sep 17 00:00:00 2001
From: david
Date: Thu, 15 Oct 2020 11:10:56 +0200
Subject: [PATCH 05/48] [FIX] delivery_gls_manifest: manifest destination name
The `cliente` key corresponds to the company not to the customer, wich
is `nombre_dst`
delivery_gls_asm 12.0.1.0.3
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/views/gls_asm_manifest_template.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index 54b23b7f861..853d2b08bc2 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "12.0.1.0.2",
+ "version": "12.0.1.0.3",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, "
diff --git a/delivery_gls_asm/views/gls_asm_manifest_template.xml b/delivery_gls_asm/views/gls_asm_manifest_template.xml
index c98d14a7c11..a93a8db2c3b 100644
--- a/delivery_gls_asm/views/gls_asm_manifest_template.xml
+++ b/delivery_gls_asm/views/gls_asm_manifest_template.xml
@@ -90,7 +90,7 @@
-
+
From c5d4e6e2861916caf1ed56ca898f3a40db125673 Mon Sep 17 00:00:00 2001
From: "Pedro M. Baeza"
Date: Wed, 17 Feb 2021 08:52:47 +0100
Subject: [PATCH 06/48] [FIX] delivery_gls_asm: Proper signature for
gls_asm_rate_shipment
Alhough it will raise another exception, at least it will show the
proper message and not a traceback.
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/models/delivery_carrier.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index 853d2b08bc2..cf033a0d03f 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "12.0.1.0.3",
+ "version": "12.0.1.0.4",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, "
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index 4871c6e503b..f5bce88f468 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -211,7 +211,7 @@ def gls_asm_cancel_shipment(self, pickings):
"GLS Expedition with reference %s cancelled") %
picking.carrier_tracking_ref)
- def gls_asm_rate_shipment(self):
+ def gls_asm_rate_shipment(self, order):
"""There's no public API so another price method should be used"""
raise NotImplementedError(_("""
GLS ASM API doesn't provide methods to compute delivery rates, so
From 36976aad84632e7079116aa2a50bc13393a0f132 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?=
Date: Thu, 25 Feb 2021 13:59:04 +0100
Subject: [PATCH 07/48] [IMP] delivery_gls_asm: black, isort, prettier
---
delivery_gls_asm/__manifest__.py | 12 +-
delivery_gls_asm/models/delivery_carrier.py | 125 ++++-----
delivery_gls_asm/models/gls_asm_request.py | 246 ++++++++++--------
delivery_gls_asm/models/stock_picking.py | 10 +-
.../tests/test_delivery_gls_asm.py | 107 ++++----
delivery_gls_asm/views/delivery_asm_view.xml | 15 +-
.../views/gls_asm_manifest_template.xml | 45 ++--
.../views/stock_picking_views.xml | 11 +-
.../wizard/gls_asm_manifest_wizard.py | 25 +-
.../wizard/gls_asm_manifest_wizard_views.xml | 3 +-
10 files changed, 321 insertions(+), 278 deletions(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index cf033a0d03f..66aae310a3d 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -6,18 +6,12 @@
"version": "12.0.1.0.4",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
- "author": "Tecnativa, "
- "Odoo Community Association (OCA)",
+ "author": "Tecnativa, " "Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
- "depends": [
- "delivery_package_number",
- "delivery_state",
- ],
- "external_dependencies" : {
- "python" : ["suds"],
- },
+ "depends": ["delivery_package_number", "delivery_state",],
+ "external_dependencies": {"python": ["suds"],},
"data": [
"data/delivery_asm_data.xml",
"views/delivery_asm_view.xml",
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index f5bce88f468..596229b8dfe 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -1,19 +1,21 @@
# Copyright 2020 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, fields, models
-from .gls_asm_request import GlsAsmRequest
+
from .gls_asm_request import (
- GLS_ASM_SERVICES, GLS_SHIPPING_TIMES, GLS_POSTAGE_TYPE,
- GLS_DELIVERY_STATES_STATIC)
+ GLS_ASM_SERVICES,
+ GLS_DELIVERY_STATES_STATIC,
+ GLS_POSTAGE_TYPE,
+ GLS_SHIPPING_TIMES,
+ GlsAsmRequest,
+)
class DeliveryCarrier(models.Model):
_inherit = "delivery.carrier"
delivery_type = fields.Selection(selection_add=[("gls_asm", "GLS ASM")])
- gls_asm_uid = fields.Char(
- string="GLS UID",
- )
+ gls_asm_uid = fields.Char(string="GLS UID",)
gls_asm_service = fields.Selection(
selection=GLS_ASM_SERVICES,
string="GLS Service",
@@ -33,14 +35,10 @@ class DeliveryCarrier(models.Model):
default="P",
)
gls_last_request = fields.Text(
- string="Last GLS xml request",
- help="Used for issues debugging",
- readonly=True,
+ string="Last GLS xml request", help="Used for issues debugging", readonly=True,
)
gls_last_response = fields.Text(
- string="Last GLS xml response",
- help="Used for issues debugging",
- readonly=True,
+ string="Last GLS xml response", help="Used for issues debugging", readonly=True,
)
def _gls_asm_uid(self):
@@ -48,17 +46,21 @@ def _gls_asm_uid(self):
A default given by GLS is put in the config parameter data """
self.ensure_one()
uid = (
- self.gls_asm_uid if self.prod_environment else
- self.env['ir.config_parameter'].sudo().get_param(
- 'delivery_gls_asm.api_user_demo', ''))
+ self.gls_asm_uid
+ if self.prod_environment
+ else self.env["ir.config_parameter"]
+ .sudo()
+ .get_param("delivery_gls_asm.api_user_demo", "")
+ )
return uid
def gls_asm_get_tracking_link(self, picking):
"""Provide tracking link for the customer"""
- tracking_url = ("http://www.asmred.com/extranet/public/"
- "ExpedicionASM.aspx?codigo={}&cpDst={}")
- return tracking_url.format(
- picking.carrier_tracking_ref, picking.partner_id.zip)
+ tracking_url = (
+ "http://www.asmred.com/extranet/public/"
+ "ExpedicionASM.aspx?codigo={}&cpDst={}"
+ )
+ return tracking_url.format(picking.carrier_tracking_ref, picking.partner_id.zip)
def _prepare_gls_asm_shipping(self, picking):
"""Convert picking values for asm api
@@ -68,8 +70,9 @@ def _prepare_gls_asm_shipping(self, picking):
self.ensure_one()
# A picking can be delivered from any warehouse
sender_partner = (
- picking.picking_type_id.warehouse_id.partner_id or
- picking.company_id.partner_id)
+ picking.picking_type_id.warehouse_id.partner_id
+ or picking.company_id.partner_id
+ )
return {
"fecha": fields.Date.today().strftime("%d/%m/%Y"),
"portes": self.gls_asm_postage_type,
@@ -100,13 +103,12 @@ def _prepare_gls_asm_shipping(self, picking):
"destinatario_codigo": "",
"destinatario_plaza": "",
"destinatario_nombre": (
- picking.partner_id.name or
- picking.partner_id.commercial_partner_id.name),
+ picking.partner_id.name or picking.partner_id.commercial_partner_id.name
+ ),
"destinatario_direccion": picking.partner_id.street or "",
"destinatario_poblacion": picking.partner_id.city or "",
"destinatario_provincia": picking.partner_id.state_id.name or "",
- "destinatario_pais": (
- picking.partner_id.country_id.phone_code or ""),
+ "destinatario_pais": (picking.partner_id.country_id.phone_code or ""),
"destinatario_cp": picking.partner_id.zip,
"destinatario_telefono": picking.partner_id.phone or "",
"destinatario_movil": picking.partner_id.mobile or "",
@@ -145,8 +147,7 @@ def gls_asm_send_shipping(self, pickings):
vals = self._prepare_gls_asm_shipping(picking)
vals.update({"tracking_number": False, "exact_price": 0})
response = gls_request._send_shipping(vals)
- self.gls_last_request = response and response.get(
- "gls_sent_xml", "")
+ self.gls_last_request = response and response.get("gls_sent_xml", "")
self.gls_last_response = response or ""
if not response or response.get("_return", -1) < 0:
result.append(vals)
@@ -157,15 +158,17 @@ def gls_asm_send_shipping(self, pickings):
picking.gls_asm_public_tracking_ref = response.get("_codbarras")
# We post an extra message in the chatter with the barcode and the
# label because there's clean way to override the one sent by core.
- body = (_(
- "GLS Shipping extra info:\n"
- "barcode: %s") % response.get("_codbarras"))
+ body = _("GLS Shipping extra info:\n" "barcode: %s") % response.get(
+ "_codbarras"
+ )
attachment = []
if response.get("gls_label"):
- attachment = [(
- "gls_label_{}.pdf".format(response.get("_codbarras")),
- response.get("gls_label")
- )]
+ attachment = [
+ (
+ "gls_label_{}.pdf".format(response.get("_codbarras")),
+ response.get("gls_label"),
+ )
+ ]
picking.message_post(body=body, attachments=attachment)
result.append(vals)
return result
@@ -176,48 +179,53 @@ def gls_asm_tracking_state_update(self, picking):
if not picking.carrier_tracking_ref:
return
gls_request = GlsAsmRequest(self._gls_asm_uid())
- tracking_states = gls_request._get_tracking_states(
- picking.carrier_tracking_ref)
+ tracking_states = gls_request._get_tracking_states(picking.carrier_tracking_ref)
if not tracking_states:
return
- picking.tracking_state_history = "\n".join([
- "%s - [%s] %s" % (
- t.get("fecha"), t.get("codigo"), t.get("evento"))
- for t in tracking_states
- ])
+ picking.tracking_state_history = "\n".join(
+ [
+ "{} - [{}] {}".format(t.get("fecha"), t.get("codigo"), t.get("evento"))
+ for t in tracking_states
+ ]
+ )
tracking = tracking_states.pop()
picking.tracking_state = "[{}] {}".format(
- tracking.get("codigo"), tracking.get("evento"))
+ tracking.get("codigo"), tracking.get("evento")
+ )
picking.delivery_state = GLS_DELIVERY_STATES_STATIC.get(
- tracking.get("codigo"), 'incidence')
+ tracking.get("codigo"), "incidence"
+ )
def gls_asm_cancel_shipment(self, pickings):
"""Cancel the expedition"""
gls_request = GlsAsmRequest(self._gls_asm_uid())
for picking in pickings.filtered("carrier_tracking_ref"):
- response = gls_request._cancel_shipment(
- picking.carrier_tracking_ref)
- self.gls_last_request = response and response.get(
- "gls_sent_xml", "")
+ response = gls_request._cancel_shipment(picking.carrier_tracking_ref)
+ self.gls_last_request = response and response.get("gls_sent_xml", "")
self.gls_last_response = response or ""
if not response or response.get("_return") < 0:
- msg = (_(
- "GLS Cancellation failed with reason: %s") %
- response.get("value", "Connection Error"))
+ msg = _("GLS Cancellation failed with reason: %s") % response.get(
+ "value", "Connection Error"
+ )
picking.message_post(body=msg)
continue
picking.gls_asm_public_tracking_ref = False
- picking.message_post(body=_(
- "GLS Expedition with reference %s cancelled") %
- picking.carrier_tracking_ref)
+ picking.message_post(
+ body=_("GLS Expedition with reference %s cancelled")
+ % picking.carrier_tracking_ref
+ )
def gls_asm_rate_shipment(self, order):
"""There's no public API so another price method should be used"""
- raise NotImplementedError(_("""
+ raise NotImplementedError(
+ _(
+ """
GLS ASM API doesn't provide methods to compute delivery rates, so
you should relay on another price method instead or override this
one in your custom code.
- """))
+ """
+ )
+ )
def gls_asm_get_label(self, gls_asm_public_tracking_ref):
"""Generate label for picking
@@ -236,11 +244,8 @@ def gls_asm_get_label(self, gls_asm_public_tracking_ref):
def action_get_manifest(self):
"""Action to launch the manifest wizard"""
self.ensure_one()
- wizard = self.env["gls.asm.minifest.wizard"].create({
- "carrier_id": self.id})
- view_id = self.env.ref(
- "delivery_gls_asm.delivery_manifest_wizard_form"
- ).id
+ wizard = self.env["gls.asm.minifest.wizard"].create({"carrier_id": self.id})
+ view_id = self.env.ref("delivery_gls_asm.delivery_manifest_wizard_form").id
return {
"name": _("GLS Manifest"),
"type": "ir.actions.act_window",
diff --git a/delivery_gls_asm/models/gls_asm_request.py b/delivery_gls_asm/models/gls_asm_request.py
index d2012d1809e..3cc35857049 100644
--- a/delivery_gls_asm/models/gls_asm_request.py
+++ b/delivery_gls_asm/models/gls_asm_request.py
@@ -1,10 +1,12 @@
# Copyright 2020 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-from odoo import _
-from odoo.exceptions import UserError
-import logging
import binascii
+import logging
import os
+
+from odoo import _
+from odoo.exceptions import UserError
+
_logger = logging.getLogger(__name__)
try:
@@ -16,67 +18,67 @@
GLS_ASM_SERVICES = [
- ('1', 'COURIER'),
- ('2', 'VALIJA'),
- ('5', 'BICI'),
- ('6', 'CARGA'),
- ('7', 'RECOGIDA'),
- ('8', 'RECOGIDA CRUZADA'),
- ('9', 'DEVOLUCION'),
- ('10', 'RETORNO'),
- ('11', 'IBEX'),
- ('12', 'INTERNACIONAL EXPRESS'),
- ('13', 'INTERNACIONAL ECONOMY'),
- ('14', 'DISTRIBUCION PROPIA'),
- ('15', 'OTROS PUENTES'),
- ('16', 'PROPIO AGENTE'),
- ('17', 'RECOGIDA SIN MERCANCIA'),
- ('18', 'DISTRIBUCION RED'),
- ('19', 'OPERACIONES RED'),
- ('20', 'CARGA MARITIMA'),
- ('21', 'GLASS'),
- ('22', 'EURO SMALL'),
- ('23', 'PREPAGO'),
- ('24', 'OPTIPLUS'),
- ('25', 'EASYBAG'),
- ('26', 'CORREO INTERNO'),
- ('27', '14H SOBRES'),
- ('28', '24H SOBRES'),
- ('29', '72H SOBRES'),
- ('30', 'ASM0830'),
- ('31', 'CAN MUESTRAS'),
- ('32', 'RC.SELLADA'),
- ('33', 'RECANALIZA'),
- ('34', 'INT PAQUET'),
- ('35', 'dPRO'),
- ('36', 'Int. WEB'),
- ('37', 'ECONOMY'),
- ('38', 'SERVICIOS RUTAS'),
- ('39', 'REC. INT'),
- ('40', 'SERVICIO LOCAL MOTO'),
- ('41', 'SERVICIO LOCAL FURGONETA'),
- ('42', 'SERVICIO LOCAL F. GRANDE'),
- ('43', 'SERVICIO LOCAL CAMION'),
- ('44', 'SERVICIO LOCAL'),
- ('45', 'RECOGIDA MEN. MOTO'),
- ('46', 'RECOGIDA MEN. FURGONETA'),
- ('47', 'RECOGIDA MEN. F.GRANDE'),
- ('48', 'RECOGIDA MEN. CAMION'),
- ('49', 'RECOGIDA MENSAJERO'),
- ('50', 'SERVICIOS ESPECIALES'),
- ('51', 'REC. INT WW'),
- ('52', 'COMPRAS'),
- ('53', 'MR1'),
- ('54', 'EURO ESTANDAR'),
- ('55', 'INTERC. EUROESTANDAR'),
- ('56', 'RECOGIDA ECONOMY'),
- ('57', 'REC. INTERCIUDAD ECONOMY'),
- ('58', 'RC. PARCEL SHOP'),
- ('59', 'ASM BUROFAX'),
- ('60', 'ASM GO'),
- ('66', 'ASMTRAVELLERS'),
- ('74', 'EUROBUSINESS PARCEL'),
- ('76', 'EUROBUSINESS SMALL PARCEL'),
+ ("1", "COURIER"),
+ ("2", "VALIJA"),
+ ("5", "BICI"),
+ ("6", "CARGA"),
+ ("7", "RECOGIDA"),
+ ("8", "RECOGIDA CRUZADA"),
+ ("9", "DEVOLUCION"),
+ ("10", "RETORNO"),
+ ("11", "IBEX"),
+ ("12", "INTERNACIONAL EXPRESS"),
+ ("13", "INTERNACIONAL ECONOMY"),
+ ("14", "DISTRIBUCION PROPIA"),
+ ("15", "OTROS PUENTES"),
+ ("16", "PROPIO AGENTE"),
+ ("17", "RECOGIDA SIN MERCANCIA"),
+ ("18", "DISTRIBUCION RED"),
+ ("19", "OPERACIONES RED"),
+ ("20", "CARGA MARITIMA"),
+ ("21", "GLASS"),
+ ("22", "EURO SMALL"),
+ ("23", "PREPAGO"),
+ ("24", "OPTIPLUS"),
+ ("25", "EASYBAG"),
+ ("26", "CORREO INTERNO"),
+ ("27", "14H SOBRES"),
+ ("28", "24H SOBRES"),
+ ("29", "72H SOBRES"),
+ ("30", "ASM0830"),
+ ("31", "CAN MUESTRAS"),
+ ("32", "RC.SELLADA"),
+ ("33", "RECANALIZA"),
+ ("34", "INT PAQUET"),
+ ("35", "dPRO"),
+ ("36", "Int. WEB"),
+ ("37", "ECONOMY"),
+ ("38", "SERVICIOS RUTAS"),
+ ("39", "REC. INT"),
+ ("40", "SERVICIO LOCAL MOTO"),
+ ("41", "SERVICIO LOCAL FURGONETA"),
+ ("42", "SERVICIO LOCAL F. GRANDE"),
+ ("43", "SERVICIO LOCAL CAMION"),
+ ("44", "SERVICIO LOCAL"),
+ ("45", "RECOGIDA MEN. MOTO"),
+ ("46", "RECOGIDA MEN. FURGONETA"),
+ ("47", "RECOGIDA MEN. F.GRANDE"),
+ ("48", "RECOGIDA MEN. CAMION"),
+ ("49", "RECOGIDA MENSAJERO"),
+ ("50", "SERVICIOS ESPECIALES"),
+ ("51", "REC. INT WW"),
+ ("52", "COMPRAS"),
+ ("53", "MR1"),
+ ("54", "EURO ESTANDAR"),
+ ("55", "INTERC. EUROESTANDAR"),
+ ("56", "RECOGIDA ECONOMY"),
+ ("57", "REC. INTERCIUDAD ECONOMY"),
+ ("58", "RC. PARCEL SHOP"),
+ ("59", "ASM BUROFAX"),
+ ("60", "ASM GO"),
+ ("66", "ASMTRAVELLERS"),
+ ("74", "EUROBUSINESS PARCEL"),
+ ("76", "EUROBUSINESS SMALL PARCEL"),
]
GLS_SHIPPING_TIMES = [
@@ -131,7 +133,7 @@
}
-class GlsAsmRequest():
+class GlsAsmRequest:
"""Interface between GLS-ASM SOAP API and Odoo recordset
Abstract GLS-ASM API Operations to connect them with Odoo
@@ -142,8 +144,8 @@ class GlsAsmRequest():
def __init__(self, uidcustomer=None):
"""As the wsdl isn't public, we have to load it from local"""
wsdl_path = os.path.join(
- os.path.dirname(os.path.realpath(__file__)),
- '../api/gls_asm_api.wsdl')
+ os.path.dirname(os.path.realpath(__file__)), "../api/gls_asm_api.wsdl"
+ )
self.uidcustomer = uidcustomer or ""
self.client = Client("file:{}".format(wsdl_path))
@@ -154,12 +156,12 @@ def _recursive_asdict(self, suds_object):
"""
out = {}
for k, v in asdict(suds_object).items():
- if hasattr(v, '__keylist__'):
+ if hasattr(v, "__keylist__"):
out[k] = self._recursive_asdict(v)
elif isinstance(v, list):
out[k] = []
for item in v:
- if hasattr(item, '__keylist__'):
+ if hasattr(item, "__keylist__"):
out[k].append(self._recursive_asdict(item))
else:
out[k].append(item)
@@ -175,7 +177,9 @@ def _prepare_cancel_shipment_docin(self, **kwargs):
xmlns="http://www.asmred.com/">
- """.format(**kwargs)
+ """.format(
+ **kwargs
+ )
def _prepare__get_manifest_docin(self, **kwargs):
"""ASM API is not very standard. Prepare parameters to pass them raw in
@@ -186,7 +190,9 @@ def _prepare__get_manifest_docin(self, **kwargs):
{date_from}
- """.format(**kwargs)
+ """.format(
+ **kwargs
+ )
def _prepare_send_shipping_docin(self, **kwargs):
"""ASM API is not very standard. Prepare parameters to pass them raw in
@@ -267,7 +273,9 @@ def _prepare_send_shipping_docin(self, **kwargs):
- """.format(**kwargs)
+ """.format(
+ **kwargs
+ )
def _send_shipping(self, vals):
"""Create new shipment
@@ -275,34 +283,43 @@ def _send_shipping(self, vals):
:returns dict with GLS response containing the shipping codes, labels,
an other relevant data
"""
- vals.update({
- 'uidcustomer': self.uidcustomer,
- })
+ vals.update(
+ {"uidcustomer": self.uidcustomer,}
+ )
xml = Raw(self._prepare_send_shipping_docin(**vals))
_logger.debug(xml)
try:
res = self.client.service.GrabaServicios(docIn=xml)
except Exception as e:
- raise UserError(_(
- "No response from server recording GLS delivery {}.\n"
- "Traceback:\n{}").format(vals.get("referencia_c", ""), e))
+ raise UserError(
+ _(
+ "No response from server recording GLS delivery {}.\n"
+ "Traceback:\n{}"
+ ).format(vals.get("referencia_c", ""), e)
+ )
# Convert result suds object to dict and set the root conveniently
# GLS API Errors have codes below 0 so we have to
# convert to int as well
- res = self._recursive_asdict(res)['Servicios']['Envio']
+ res = self._recursive_asdict(res)["Servicios"]["Envio"]
res["gls_sent_xml"] = xml
_logger.debug(res)
res["_return"] = int(res["Resultado"]["_return"])
if res["_return"] < 0:
- raise UserError(_(
- "GLS returned an error trying to record the shipping for {}.\n"
- "Error:\n{}").format(
+ raise UserError(
+ _(
+ "GLS returned an error trying to record the shipping for {}.\n"
+ "Error:\n{}"
+ ).format(
vals.get("referencia_c", ""),
res.get("Errores", {}).get(
- "Error", "code {}".format(res["_return"]))))
- if res.get('Etiquetas', {}).get('Etiqueta', {}).get("value"):
- res["gls_label"] = (
- binascii.a2b_base64(res["Etiquetas"]["Etiqueta"]["value"]))
+ "Error", "code {}".format(res["_return"])
+ ),
+ )
+ )
+ if res.get("Etiquetas", {}).get("Etiqueta", {}).get("value"):
+ res["gls_label"] = binascii.a2b_base64(
+ res["Etiquetas"]["Etiqueta"]["value"]
+ )
return res
def _get_delivery_info(self, reference=False):
@@ -311,13 +328,15 @@ def _get_delivery_info(self, reference=False):
:returns: shipping info dict
"""
try:
- res = self.client.service.GetExpCli(
- codigo=reference, uid=self.uidcustomer)
+ res = self.client.service.GetExpCli(codigo=reference, uid=self.uidcustomer)
_logger.debug(res)
except Exception as e:
- raise UserError(_(
- "GLS: No response from server getting state from ref {}.\n"
- "Traceback:\n{}").format(reference, e))
+ raise UserError(
+ _(
+ "GLS: No response from server getting state from ref {}.\n"
+ "Traceback:\n{}"
+ ).format(reference, e)
+ )
res = self._recursive_asdict(res)
return res
@@ -327,8 +346,12 @@ def _get_tracking_states(self, reference=False):
:returns: list of tracking states
"""
res = self._get_delivery_info(reference)
- res = res.get("expediciones", {}).get("exp", {}).get(
- "tracking_list", {}).get("tracking", [])
+ res = (
+ res.get("expediciones", {})
+ .get("exp", {})
+ .get("tracking_list", {})
+ .get("tracking", [])
+ )
# If there's just one state, we'll get a single dict, otherwise we
# get a list of dicts
if isinstance(res, dict):
@@ -341,12 +364,15 @@ def _shipping_label(self, reference=False):
:returns: base64 with pdf label or False
"""
try:
- res = self.client.service.EtiquetaEnvio(reference, 'PDF')
+ res = self.client.service.EtiquetaEnvio(reference, "PDF")
_logger.debug(res)
except Exception as e:
- raise UserError(_(
- "GLS: No response from server printing label with ref {}.\n"
- "Traceback:\n{}").format(reference, e))
+ raise UserError(
+ _(
+ "GLS: No response from server printing label with ref {}.\n"
+ "Traceback:\n{}"
+ ).format(reference, e)
+ )
res = self._recursive_asdict(res)
label = res.get("base64Binary")
return label and binascii.a2b_base64(str(label[0]))
@@ -364,8 +390,11 @@ def _cancel_shipment(self, reference=False):
-1 -> No existe envío
-2 -> Tiene tracking operativo
"""
- xml = Raw(self._prepare_cancel_shipment_docin(
- uidcustomer=self.uidcustomer, referencia=reference))
+ xml = Raw(
+ self._prepare_cancel_shipment_docin(
+ uidcustomer=self.uidcustomer, referencia=reference
+ )
+ )
_logger.debug(xml)
try:
response = self.client.service.Anula(docIn=xml)
@@ -373,7 +402,8 @@ def _cancel_shipment(self, reference=False):
except Exception as e:
_logger.error(
"No response from server canceling GLS ref {}.\n"
- "Traceback:\n{}".format(reference, e))
+ "Traceback:\n{}".format(reference, e)
+ )
return {}
response = self._recursive_asdict(response.Servicios.Envio.Resultado)
response["gls_sent_xml"] = xml
@@ -394,15 +424,21 @@ def _get_manifest(self, date_from):
'cp_dst': 77610, 'departamento_dst': , 'pais_dst': FR,
}
"""
- xml = Raw(self._prepare__get_manifest_docin(
- uidcustomer=self.uidcustomer, date_from=date_from))
+ xml = Raw(
+ self._prepare__get_manifest_docin(
+ uidcustomer=self.uidcustomer, date_from=date_from
+ )
+ )
_logger.debug(xml)
try:
res = self.client.service.GetManifiesto(docIn=xml)
_logger.debug(res)
except Exception as e:
- raise UserError(_(
- "No response from server getting manifisto for GLS.\n"
- "Traceback:\n{}").format(e))
+ raise UserError(
+ _(
+ "No response from server getting manifisto for GLS.\n"
+ "Traceback:\n{}"
+ ).format(e)
+ )
res = self._recursive_asdict(res.Servicios.Envios).get("Envio", [])
return res
diff --git a/delivery_gls_asm/models/stock_picking.py b/delivery_gls_asm/models/stock_picking.py
index 9b1e2a12309..c2d33cec5c9 100644
--- a/delivery_gls_asm/models/stock_picking.py
+++ b/delivery_gls_asm/models/stock_picking.py
@@ -9,19 +9,15 @@ class StockPicking(models.Model):
# ASM API has two references for each delivery. This one is needed
# for some operations like getting the label
gls_asm_public_tracking_ref = fields.Char(
- string="GLS Barcode",
- readonly=True,
- copy=False,
+ string="GLS Barcode", readonly=True, copy=False,
)
def gls_asm_get_label(self):
"""Get GLS Label for this picking expedition"""
self.ensure_one()
- if (self.delivery_type != "gls_asm" or not
- self.gls_asm_public_tracking_ref):
+ if self.delivery_type != "gls_asm" or not self.gls_asm_public_tracking_ref:
return
- pdf = self.carrier_id.gls_asm_get_label(
- self.gls_asm_public_tracking_ref)
+ pdf = self.carrier_id.gls_asm_get_label(self.gls_asm_public_tracking_ref)
label_name = "gls_{}.pdf".format(self.gls_asm_public_tracking_ref)
self.message_post(
body=(_("GLS label for %s") % self.gls_asm_public_tracking_ref),
diff --git a/delivery_gls_asm/tests/test_delivery_gls_asm.py b/delivery_gls_asm/tests/test_delivery_gls_asm.py
index b3ba725401a..2df183269a3 100644
--- a/delivery_gls_asm/tests/test_delivery_gls_asm.py
+++ b/delivery_gls_asm/tests/test_delivery_gls_asm.py
@@ -1,49 +1,51 @@
# Copyright 2020 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from unittest import mock
-from odoo.tests import common, Form
+
+from odoo.tests import Form, common
# We could rely on test user to make the tests, although we would rely on
# the service stability wich could break CIs
# It's better to mock the interface response and to test
# Odoo flows regressions.
-_mock_class = (
- "odoo.addons.delivery_gls_asm.models.gls_asm_request.GlsAsmRequest")
+_mock_class = "odoo.addons.delivery_gls_asm.models.gls_asm_request.GlsAsmRequest"
class TestDeliveryGlsAsm(common.SavepointCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
- cls.shipping_product = cls.env['product.product'].create({
- 'type': 'service',
- 'name': 'Test Shipping costs',
- 'list_price': 10.0,
- })
- cls.carrier_gls_asm = cls.env['delivery.carrier'].create({
- 'name': 'GLS ASM',
- 'delivery_type': 'gls_asm',
- 'product_id': cls.shipping_product.id,
- 'prod_environment': False,
- })
- cls.product = cls.env['product.product'].create({
- 'type': 'product',
- 'name': 'Test product',
- })
- cls.partner = cls.env['res.partner'].create({
- 'name': 'Mr. Odoo',
- 'city': 'Odoo Ville',
- 'zip': '28001',
- 'street': 'Calle de La Rua, 3',
- })
- cls.partner_wh = cls.env['res.partner'].create({
- 'name': 'WH Test Partner',
- 'city': 'Odoo City',
- 'zip': '08001',
- 'street': 'Strasse Street, 1',
- })
- order_form = Form(
- cls.env['sale.order'].with_context(tracking_disable=True))
+ cls.shipping_product = cls.env["product.product"].create(
+ {"type": "service", "name": "Test Shipping costs", "list_price": 10.0,}
+ )
+ cls.carrier_gls_asm = cls.env["delivery.carrier"].create(
+ {
+ "name": "GLS ASM",
+ "delivery_type": "gls_asm",
+ "product_id": cls.shipping_product.id,
+ "prod_environment": False,
+ }
+ )
+ cls.product = cls.env["product.product"].create(
+ {"type": "product", "name": "Test product",}
+ )
+ cls.partner = cls.env["res.partner"].create(
+ {
+ "name": "Mr. Odoo",
+ "city": "Odoo Ville",
+ "zip": "28001",
+ "street": "Calle de La Rua, 3",
+ }
+ )
+ cls.partner_wh = cls.env["res.partner"].create(
+ {
+ "name": "WH Test Partner",
+ "city": "Odoo City",
+ "zip": "08001",
+ "street": "Strasse Street, 1",
+ }
+ )
+ order_form = Form(cls.env["sale.order"].with_context(tracking_disable=True))
order_form.partner_id = cls.partner
order_form.carrier_id = cls.carrier_gls_asm
with order_form.order_line.new() as line:
@@ -62,20 +64,17 @@ def test_01_gls_picking_confirm_simple(self):
"_return": 0,
}
with mock.patch(
- _mock_class + '._send_shipping',
- return_value=mocked_response,
+ _mock_class + "._send_shipping", return_value=mocked_response,
):
self.picking.button_validate()
self.assertEqual(self.picking.carrier_tracking_ref, "TEST123456789")
- self.assertEqual(
- self.picking.gls_asm_public_tracking_ref, "1234567890123")
+ self.assertEqual(self.picking.gls_asm_public_tracking_ref, "1234567890123")
# Cancel the expedition. The tracking refs go away
mocked_response = {
"_return": 0,
}
with mock.patch(
- _mock_class + '._cancel_shipment',
- return_value=mocked_response,
+ _mock_class + "._cancel_shipment", return_value=mocked_response,
):
self.picking.cancel_shipment()
self.assertFalse(self.picking.gls_asm_public_tracking_ref)
@@ -83,23 +82,23 @@ def test_01_gls_picking_confirm_simple(self):
def test_02_gls_manifest(self):
"""Mock manifest response"""
- mocked_response = [{
- 'cliente': "Pruebas WS",
- 'codexp': "467247191",
- 'bultos': "1",
- 'kgs': "1,0",
- 'nombre_dst': "Mr. Odoo",
- 'calle_dst': "Test Address",
- 'localidad_dst': "Test location",
- 'cp_dst': "28001",
- }]
- wizard = self.env["gls.asm.minifest.wizard"].create({
- "carrier_id": self.carrier_gls_asm.id,
- "date_from": "2020-05-31",
- })
+ mocked_response = [
+ {
+ "cliente": "Pruebas WS",
+ "codexp": "467247191",
+ "bultos": "1",
+ "kgs": "1,0",
+ "nombre_dst": "Mr. Odoo",
+ "calle_dst": "Test Address",
+ "localidad_dst": "Test location",
+ "cp_dst": "28001",
+ }
+ ]
+ wizard = self.env["gls.asm.minifest.wizard"].create(
+ {"carrier_id": self.carrier_gls_asm.id, "date_from": "2020-05-31",}
+ )
with mock.patch(
- _mock_class + '._get_manifest',
- return_value=mocked_response,
+ _mock_class + "._get_manifest", return_value=mocked_response,
):
report = wizard.get_manifest()
self.assertEqual(report["data"]["deliveries"], mocked_response)
diff --git a/delivery_gls_asm/views/delivery_asm_view.xml b/delivery_gls_asm/views/delivery_asm_view.xml
index d7b56d5c014..2e1b9439d7a 100644
--- a/delivery_gls_asm/views/delivery_asm_view.xml
+++ b/delivery_gls_asm/views/delivery_asm_view.xml
@@ -1,4 +1,4 @@
-
+
@@ -47,11 +47,14 @@
-
+
diff --git a/delivery_gls_asm/views/gls_asm_manifest_template.xml b/delivery_gls_asm/views/gls_asm_manifest_template.xml
index a93a8db2c3b..a098fea4787 100644
--- a/delivery_gls_asm/views/gls_asm_manifest_template.xml
+++ b/delivery_gls_asm/views/gls_asm_manifest_template.xml
@@ -1,13 +1,15 @@
-
+
-
+
- GLS MANIFEST
+
+ GLS MANIFEST
+
@@ -23,9 +25,7 @@
Company:
-
+
@@ -37,22 +37,26 @@
+ t-esc="date_from"
+ t-options="{'widget': 'date'}"
+ />
-
+
Date of printing
-
+
-
+
@@ -65,7 +69,10 @@
-
+
Carrier Signature / Stamp
@@ -99,7 +106,9 @@
-
+
@@ -116,13 +125,17 @@
-
+
(Kg.)
-
+
(Packages)
@@ -141,7 +154,6 @@
-
-
-
-
diff --git a/delivery_gls_asm/views/stock_picking_views.xml b/delivery_gls_asm/views/stock_picking_views.xml
index 4421b667656..f7a5314f26e 100644
--- a/delivery_gls_asm/views/stock_picking_views.xml
+++ b/delivery_gls_asm/views/stock_picking_views.xml
@@ -1,14 +1,16 @@
-
+
-
stock.picking
-
+
-
+
-
diff --git a/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py b/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
index e728a77787a..fbb7945f7b7 100644
--- a/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
+++ b/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
@@ -2,6 +2,7 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, fields, models
from odoo.exceptions import UserError
+
from ..models.gls_asm_request import GlsAsmRequest
@@ -9,14 +10,11 @@ class DeliverySeurManifiestoWizard(models.TransientModel):
_name = "gls.asm.minifest.wizard"
_description = "Get the GLS Manifest for the given date range"
- date_from = fields.Date(
- required=True,
- default=fields.Date.context_today,
- )
+ date_from = fields.Date(required=True, default=fields.Date.context_today,)
carrier_id = fields.Many2one(
string="GLS Service",
comodel_name="delivery.carrier",
- domain=[('delivery_type', '=', 'gls_asm')],
+ domain=[("delivery_type", "=", "gls_asm")],
required=True,
)
@@ -25,16 +23,19 @@ def get_manifest(self):
gls_request = GlsAsmRequest(self.carrier_id._gls_asm_uid())
manifest_data = gls_request._get_manifest(self.date_from)
if not manifest_data:
- raise UserError(_(
- "It wasn't possible to get the manifest. Maybe there aren't"
- "deliveries for the selected date."))
+ raise UserError(
+ _(
+ "It wasn't possible to get the manifest. Maybe there aren't"
+ "deliveries for the selected date."
+ )
+ )
datas = {
- "ids": self.env.context.get('active_ids', []),
+ "ids": self.env.context.get("active_ids", []),
"model": "gls.asm.minifest.wizard",
"deliveries": manifest_data,
"date_from": self.date_from,
"company_name": self.carrier_id.company_id.name,
}
- return self.env.ref(
- "delivery_gls_asm.gls_asm_manifest_report"
- ).report_action(self, data=datas)
+ return self.env.ref("delivery_gls_asm.gls_asm_manifest_report").report_action(
+ self, data=datas
+ )
diff --git a/delivery_gls_asm/wizard/gls_asm_manifest_wizard_views.xml b/delivery_gls_asm/wizard/gls_asm_manifest_wizard_views.xml
index 924f7bf3123..ba7f41f10d2 100644
--- a/delivery_gls_asm/wizard/gls_asm_manifest_wizard_views.xml
+++ b/delivery_gls_asm/wizard/gls_asm_manifest_wizard_views.xml
@@ -7,7 +7,7 @@
-
+
@@ -22,5 +22,4 @@
-
From fda3621973673e176273a0d600b7dfd4a0da5910 Mon Sep 17 00:00:00 2001
From: david
Date: Tue, 9 Mar 2021 12:49:04 +0100
Subject: [PATCH 08/48] [FIX] delivery_gls_asm: escaping shipping vals for xml
Ensure that the values sent to the xml soap request are properly
escaped. A partner name like "Johnson & Johnson" would fail otherwise.
---
delivery_gls_asm/models/delivery_carrier.py | 11 +++++++----
delivery_gls_asm/tests/test_delivery_gls_asm.py | 8 +++++++-
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index 596229b8dfe..95674a77e09 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -1,5 +1,7 @@
# Copyright 2020 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from xml.sax.saxutils import escape
+
from odoo import _, fields, models
from .gls_asm_request import (
@@ -88,8 +90,8 @@ def _prepare_gls_asm_shipping(self, picking):
"pod": "N", # [optional]
"podobligatorio": "N", # [deprecated]
"remite_plaza": "", # [optional] Origin agency
- "remite_nombre": sender_partner.name,
- "remite_direccion": sender_partner.street or "",
+ "remite_nombre": escape(sender_partner.name),
+ "remite_direccion": escape(sender_partner.street) or "",
"remite_poblacion": sender_partner.city or "",
"remite_provincia": sender_partner.state_id.name or "",
"remite_pais": "34", # [mandatory] always 34=Spain
@@ -103,7 +105,8 @@ def _prepare_gls_asm_shipping(self, picking):
"destinatario_codigo": "",
"destinatario_plaza": "",
"destinatario_nombre": (
- picking.partner_id.name or picking.partner_id.commercial_partner_id.name
+ escape(picking.partner_id.name)
+ or escape(picking.partner_id.commercial_partner_id.name)
),
"destinatario_direccion": picking.partner_id.street or "",
"destinatario_poblacion": picking.partner_id.city or "",
@@ -117,7 +120,7 @@ def _prepare_gls_asm_shipping(self, picking):
"destinatario_att": "",
"destinatario_departamento": "",
"destinatario_nif": "",
- "referencia_c": picking.name, # Our unique reference
+ "referencia_c": escape(picking.name), # Our unique reference
"referencia_0": "", # Not used if the above is set
"importes_debido": "0", # The customer pays the shipping
"importes_reembolso": "", # TODO: Support Cash On Delivery
diff --git a/delivery_gls_asm/tests/test_delivery_gls_asm.py b/delivery_gls_asm/tests/test_delivery_gls_asm.py
index 2df183269a3..b97003e9994 100644
--- a/delivery_gls_asm/tests/test_delivery_gls_asm.py
+++ b/delivery_gls_asm/tests/test_delivery_gls_asm.py
@@ -31,7 +31,7 @@ def setUpClass(cls):
)
cls.partner = cls.env["res.partner"].create(
{
- "name": "Mr. Odoo",
+ "name": "Mr. Odoo & Co.",
"city": "Odoo Ville",
"zip": "28001",
"street": "Calle de La Rua, 3",
@@ -102,3 +102,9 @@ def test_02_gls_manifest(self):
):
report = wizard.get_manifest()
self.assertEqual(report["data"]["deliveries"], mocked_response)
+
+ def test_03_gls_escaping(self):
+ """We must ensure that the values we'll be putting into the XML are
+ properly escaped"""
+ vals = self.carrier_gls_asm._prepare_gls_asm_shipping(self.picking)
+ self.assertEqual(vals.get("destinatario_nombre"), "Mr. Odoo & Co.")
From ea947575e37255279e516b0af4b1818db320281e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?=
Date: Thu, 25 Feb 2021 16:55:59 +0100
Subject: [PATCH 09/48] [MIG] delivery_gls_asm: Migration to 13.0
[UPD] Update delivery_gls_asm.pot
[UPD] README.rst
---
delivery_gls_asm/README.rst | 19 +-
delivery_gls_asm/__manifest__.py | 8 +-
delivery_gls_asm/i18n/delivery_gls_asm.pot | 230 +++++++++---------
delivery_gls_asm/models/gls_asm_request.py | 11 +-
delivery_gls_asm/readme/CONTRIBUTORS.rst | 1 +
delivery_gls_asm/readme/INSTALL.rst | 2 +-
delivery_gls_asm/readme/USAGE.rst | 6 +-
.../static/description/index.html | 15 +-
.../tests/test_delivery_gls_asm.py | 78 ++----
.../views/gls_asm_manifest_template.xml | 1 -
10 files changed, 164 insertions(+), 207 deletions(-)
diff --git a/delivery_gls_asm/README.rst b/delivery_gls_asm/README.rst
index dd4a5e1360e..7c52a42b8fc 100644
--- a/delivery_gls_asm/README.rst
+++ b/delivery_gls_asm/README.rst
@@ -14,13 +14,13 @@ Delivery GLS-ASM
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--spain-lightgray.png?logo=github
- :target: https://github.com/OCA/l10n-spain/tree/12.0/delivery_gls_asm
+ :target: https://github.com/OCA/l10n-spain/tree/13.0/delivery_gls_asm
:alt: OCA/l10n-spain
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/l10n-spain-12-0/l10n-spain-12-0-delivery_gls_asm
+ :target: https://translation.odoo-community.org/projects/l10n-spain-13-0/l10n-spain-13-0-delivery_gls_asm
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/189/12.0
+ :target: https://runbot.odoo-community.org/runbot/189/13.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -36,7 +36,7 @@ válido para integraciones de GLS en otros países, que podrían usar otras APIs
Installation
============
-Este módulo necesita la librería python `suds` y depende igualmente de los
+Este módulo necesita la librería python `suds-py3` y depende igualmente de los
módulos de OCA/delivery-carrier `delivery_package_number` y `delivery_state`.
La API de GLS/ASM no provee métodos de cálculo de precio, de modo que para poder
@@ -114,17 +114,19 @@ Manifiesto de envíos
del transportista.
#. En el asistente, seleccione el servicio GLS del cual quiere sacar el
manifiesto y la fecha desde la que desea listar los envíos.
- #. Pulse en el botón "Manifiesto GlS" para obtener un listado en PDF de los
+ #. Pulse en el botón "Manifiesto GLS" para obtener un listado en PDF de los
envíos del servicio seleccionado.
Depuración de errores
~~~~~~~~~~~~~~~~~~~~~
+ #. Es importante tener en cuenta que solo funcionará con códigos postales de
+ España.
#. En cada servicio GLS-ASM dispone de una pestaña llamada "Técnico" en la
que puede consultar la última petición y respuesta a la API de GLS-ASM.
Esto le servirá como ayuda a la hora de depurar posibles errores de
comunicación.
- #. También puede activar Odoo con `--log-level=debug` para refistrar las
+ #. También puede activar Odoo con `--log-level=debug` para registrar las
peticiones y las respuestas en el log.
Known issues / Roadmap
@@ -141,7 +143,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -159,6 +161,7 @@ Contributors
* `Tecnativa `_:
* David Vidal
+ * Víctor Martínez
Maintainers
~~~~~~~~~~~
@@ -173,6 +176,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/l10n-spain `_ project on GitHub.
+This module is part of the `OCA/l10n-spain `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index 66aae310a3d..d0d0433bae9 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,15 +3,15 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "12.0.1.0.4",
+ "version": "13.0.1.0.0",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
- "author": "Tecnativa, " "Odoo Community Association (OCA)",
+ "author": "Tecnativa, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
- "depends": ["delivery_package_number", "delivery_state",],
- "external_dependencies": {"python": ["suds"],},
+ "depends": ["delivery_package_number", "delivery_state"],
+ "external_dependencies": {"python": ["suds-py3"]},
"data": [
"data/delivery_asm_data.xml",
"views/delivery_asm_view.xml",
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index 385b53e96a7..7cdad968187 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -1,12 +1,12 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * delivery_gls_asm
+# * delivery_gls_asm
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 12.0\n"
+"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: <>\n"
+"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -14,9 +14,10 @@ msgstr ""
"Plural-Forms: \n"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:216
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
-msgid "\n"
+msgid ""
+"\n"
" GLS ASM API doesn't provide methods to compute delivery rates, so\n"
" you should relay on another price method instead or override this\n"
" one in your custom code.\n"
@@ -24,27 +25,27 @@ msgid "\n"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__0
msgid "10:00 Service"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__2
msgid "14:00 Service"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__27
msgid "14H SOBRES"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__28
msgid "24H SOBRES"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__29
msgid "72H SOBRES"
msgstr ""
@@ -60,7 +61,8 @@ msgstr ""
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
-msgid "\n"
+msgid ""
+"\n"
" Carrier Signature / Stamp \n"
" "
msgstr ""
@@ -101,67 +103,62 @@ msgid "TOTAL "
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__59
msgid "ASM BUROFAX"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__60
msgid "ASM GO"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__30
msgid "ASM0830"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__66
msgid "ASMTRAVELLERS"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__5
msgid "BICI"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,delivery_type:0
-msgid "Based on Rules"
-msgstr ""
-
-#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__3
msgid "BusinessParcel"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__31
msgid "CAN MUESTRAS"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__6
msgid "CARGA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__20
msgid "CARGA MARITIMA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__52
msgid "COMPRAS"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__26
msgid "CORREO INTERNO"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__1
msgid "COURIER"
msgstr ""
@@ -171,7 +168,7 @@ msgid "Cancelar"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_postage_type:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_postage_type__d
msgid "Cash On Delivery"
msgstr ""
@@ -196,17 +193,17 @@ msgid "Customer"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__9
msgid "DEVOLUCION"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__14
msgid "DISTRIBUCION PROPIA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__18
msgid "DISTRIBUCION RED"
msgstr ""
@@ -215,73 +212,63 @@ msgstr ""
msgid "Date From"
msgstr ""
-#. module: delivery_gls_asm
-#: model:ir.model,name:delivery_gls_asm.model_delivery_carrier
-msgid "Delivery Methods"
-msgstr ""
-
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
msgid "Display Name"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__25
msgid "EASYBAG"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__37
msgid "ECONOMY"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__54
msgid "EURO ESTANDAR"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__22
msgid "EURO SMALL"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__74
msgid "EUROBUSINESS PARCEL"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__76
msgid "EUROBUSINESS SMALL PARCEL"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__18
msgid "EconomyParcel"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__13
msgid "Ent. Pto. ASM"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,delivery_type:0
-msgid "Fixed Price"
-msgstr ""
-
-#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__9
msgid "Franja Horaria"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__21
msgid "GLASS"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,delivery_type:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__delivery_type__gls_asm
msgid "GLS ASM"
msgstr ""
@@ -291,7 +278,7 @@ msgid "GLS Barcode"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:204
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
msgid "GLS Cancellation failed with reason: %s"
msgstr ""
@@ -307,7 +294,7 @@ msgid "GLS Deliveries Manifest"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:210
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
msgid "GLS Expedition with reference %s cancelled"
msgstr ""
@@ -318,7 +305,7 @@ msgid "GLS Label"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:245
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#: model:ir.actions.act_window,name:delivery_gls_asm.action_delivery_gls_asm_manifest_wizard
#: model:ir.actions.report,name:delivery_gls_asm.gls_asm_manifest_report
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
@@ -333,9 +320,10 @@ msgid "GLS Service"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:160
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
-msgid "GLS Shipping extra info:\n"
+msgid ""
+"GLS Shipping extra info:\n"
"barcode: %s"
msgstr ""
@@ -345,31 +333,34 @@ msgid "GLS UID"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/stock_picking.py:27
+#: code:addons/delivery_gls_asm/models/stock_picking.py:0
#, python-format
msgid "GLS label for %s"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:297
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
-msgid "GLS returned an error trying to record the shipping for {}.\n"
+msgid ""
+"GLS returned an error trying to record the shipping for {}.\n"
"Error:\n"
"{}"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:318
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
-msgid "GLS: No response from server getting state from ref {}.\n"
+msgid ""
+"GLS: No response from server getting state from ref {}.\n"
"Traceback:\n"
"{}"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:347
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
-msgid "GLS: No response from server printing label with ref {}.\n"
+msgid ""
+"GLS: No response from server printing label with ref {}.\n"
"Traceback:\n"
"{}"
msgstr ""
@@ -385,7 +376,7 @@ msgid "Get the GLS Manifest for the given date range"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__11
msgid "IBEX"
msgstr ""
@@ -395,39 +386,41 @@ msgid "ID"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__34
msgid "INT PAQUET"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__55
msgid "INTERC. EUROESTANDAR"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__7
msgid "INTERDIA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__13
msgid "INTERNACIONAL ECONOMY"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__12
msgid "INTERNACIONAL EXPRESS"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__36
msgid "Int. WEB"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py:28
+#: code:addons/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py:0
#, python-format
-msgid "It wasn't possible to get the manifest. Maybe there aren'tdeliveries for the selected date."
+msgid ""
+"It wasn't possible to get the manifest. Maybe there aren'tdeliveries for the"
+" selected date."
msgstr ""
#. module: delivery_gls_asm
@@ -456,7 +449,7 @@ msgid "Last Updated on"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__53
msgid "MR1"
msgstr ""
@@ -466,53 +459,55 @@ msgid "Manifest"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__10
msgid "Maritimo"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__4
msgid "Masivo"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:404
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
-msgid "No response from server getting manifisto for GLS.\n"
+msgid ""
+"No response from server getting manifisto for GLS.\n"
"Traceback:\n"
"{}"
msgstr ""
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:286
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
-msgid "No response from server recording GLS delivery {}.\n"
+msgid ""
+"No response from server recording GLS delivery {}.\n"
"Traceback:\n"
"{}"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__19
msgid "OPERACIONES RED"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__24
msgid "OPTIPLUS"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__15
msgid "OTROS PUENTES"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__23
msgid "PREPAGO"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__16
msgid "PROPIO AGENTE"
msgstr ""
@@ -522,7 +517,7 @@ msgid "Packages"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__19
msgid "ParcelShop"
msgstr ""
@@ -537,7 +532,7 @@ msgid "Postage type, usually 'Prepaid'"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_postage_type:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_postage_type__p
msgid "Prepaid"
msgstr ""
@@ -547,87 +542,87 @@ msgid "Provider"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__58
msgid "RC. PARCEL SHOP"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__32
msgid "RC.SELLADA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__39
msgid "REC. INT"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__51
msgid "REC. INT WW"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__57
msgid "REC. INTERCIUDAD ECONOMY"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__33
msgid "RECANALIZA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__7
msgid "RECOGIDA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__8
msgid "RECOGIDA CRUZADA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__56
msgid "RECOGIDA ECONOMY"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__48
msgid "RECOGIDA MEN. CAMION"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__47
msgid "RECOGIDA MEN. F.GRANDE"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__46
msgid "RECOGIDA MEN. FURGONETA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__45
msgid "RECOGIDA MEN. MOTO"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__49
msgid "RECOGIDA MENSAJERO"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__17
msgid "RECOGIDA SIN MERCANCIA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__10
msgid "RETORNO"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__11
msgid "Rec. en NAVE."
msgstr ""
@@ -637,42 +632,42 @@ msgid "Ref."
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__44
msgid "SERVICIO LOCAL"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__43
msgid "SERVICIO LOCAL CAMION"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__42
msgid "SERVICIO LOCAL F. GRANDE"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__41
msgid "SERVICIO LOCAL FURGONETA"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__40
msgid "SERVICIO LOCAL MOTO"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__50
msgid "SERVICIOS ESPECIALES"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__38
msgid "SERVICIOS RUTAS"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__5
msgid "SaturdayService"
msgstr ""
@@ -687,8 +682,8 @@ msgid "Set the desired GLS shipping time for this carrier"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,delivery_type:0
-msgid "Seur"
+#: model:ir.model,name:delivery_gls_asm.model_delivery_carrier
+msgid "Shipping Methods"
msgstr ""
#. module: delivery_gls_asm
@@ -713,7 +708,7 @@ msgid "Used for issues debugging"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__2
msgid "VALIJA"
msgstr ""
@@ -728,7 +723,6 @@ msgid "ZIP Code"
msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__35
msgid "dPRO"
msgstr ""
-
diff --git a/delivery_gls_asm/models/gls_asm_request.py b/delivery_gls_asm/models/gls_asm_request.py
index 3cc35857049..1729ff6e28a 100644
--- a/delivery_gls_asm/models/gls_asm_request.py
+++ b/delivery_gls_asm/models/gls_asm_request.py
@@ -283,9 +283,7 @@ def _send_shipping(self, vals):
:returns dict with GLS response containing the shipping codes, labels,
an other relevant data
"""
- vals.update(
- {"uidcustomer": self.uidcustomer,}
- )
+ vals.update({"uidcustomer": self.uidcustomer})
xml = Raw(self._prepare_send_shipping_docin(**vals))
_logger.debug(xml)
try:
@@ -309,12 +307,7 @@ def _send_shipping(self, vals):
_(
"GLS returned an error trying to record the shipping for {}.\n"
"Error:\n{}"
- ).format(
- vals.get("referencia_c", ""),
- res.get("Errores", {}).get(
- "Error", "code {}".format(res["_return"])
- ),
- )
+ ).format(vals.get("referencia_c", ""), res["_return"])
)
if res.get("Etiquetas", {}).get("Etiqueta", {}).get("value"):
res["gls_label"] = binascii.a2b_base64(
diff --git a/delivery_gls_asm/readme/CONTRIBUTORS.rst b/delivery_gls_asm/readme/CONTRIBUTORS.rst
index 94b6ba95366..d6b082dc5c0 100644
--- a/delivery_gls_asm/readme/CONTRIBUTORS.rst
+++ b/delivery_gls_asm/readme/CONTRIBUTORS.rst
@@ -1,3 +1,4 @@
* `Tecnativa `_:
* David Vidal
+ * Víctor Martínez
diff --git a/delivery_gls_asm/readme/INSTALL.rst b/delivery_gls_asm/readme/INSTALL.rst
index 4c250c4fc2a..8a5c693cc9b 100644
--- a/delivery_gls_asm/readme/INSTALL.rst
+++ b/delivery_gls_asm/readme/INSTALL.rst
@@ -1,4 +1,4 @@
-Este módulo necesita la librería python `suds` y depende igualmente de los
+Este módulo necesita la librería python `suds-py3` y depende igualmente de los
módulos de OCA/delivery-carrier `delivery_package_number` y `delivery_state`.
La API de GLS/ASM no provee métodos de cálculo de precio, de modo que para poder
diff --git a/delivery_gls_asm/readme/USAGE.rst b/delivery_gls_asm/readme/USAGE.rst
index 2445f6de043..f8cf9e20a8e 100644
--- a/delivery_gls_asm/readme/USAGE.rst
+++ b/delivery_gls_asm/readme/USAGE.rst
@@ -48,15 +48,17 @@ Manifiesto de envíos
del transportista.
#. En el asistente, seleccione el servicio GLS del cual quiere sacar el
manifiesto y la fecha desde la que desea listar los envíos.
- #. Pulse en el botón "Manifiesto GlS" para obtener un listado en PDF de los
+ #. Pulse en el botón "Manifiesto GLS" para obtener un listado en PDF de los
envíos del servicio seleccionado.
Depuración de errores
~~~~~~~~~~~~~~~~~~~~~
+ #. Es importante tener en cuenta que solo funcionará con códigos postales de
+ España.
#. En cada servicio GLS-ASM dispone de una pestaña llamada "Técnico" en la
que puede consultar la última petición y respuesta a la API de GLS-ASM.
Esto le servirá como ayuda a la hora de depurar posibles errores de
comunicación.
- #. También puede activar Odoo con `--log-level=debug` para refistrar las
+ #. También puede activar Odoo con `--log-level=debug` para registrar las
peticiones y las respuestas en el log.
diff --git a/delivery_gls_asm/static/description/index.html b/delivery_gls_asm/static/description/index.html
index 7fb54d499d2..3a2efd6b93f 100644
--- a/delivery_gls_asm/static/description/index.html
+++ b/delivery_gls_asm/static/description/index.html
@@ -367,7 +367,7 @@ Delivery GLS-ASM
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
Este módulo integra la API de GLS España (antigua API de ASM) con Odoo. No es
válido para integraciones de GLS en otros países, que podrían usar otras APIs.
Table of contents
@@ -396,7 +396,7 @@ Delivery GLS-ASM
-
Este módulo necesita la librería python suds y depende igualmente de los
+
Este módulo necesita la librería python suds-py3 y depende igualmente de los
módulos de OCA/delivery-carrier delivery_package_number y delivery_state .
La API de GLS/ASM no provee métodos de cálculo de precio, de modo que para poder
calcular los costes de envío sería recomendable instalar el módulo
@@ -482,7 +482,7 @@
del transportista.
En el asistente, seleccione el servicio GLS del cual quiere sacar el
manifiesto y la fecha desde la que desea listar los envíos.
-
Pulse en el botón “Manifiesto GlS” para obtener un listado en PDF de los
+ Pulse en el botón “Manifiesto GLS” para obtener un listado en PDF de los
envíos del servicio seleccionado.
@@ -491,11 +491,13 @@
+Es importante tener en cuenta que solo funcionará con códigos postales de
+España.
En cada servicio GLS-ASM dispone de una pestaña llamada “Técnico” en la
que puede consultar la última petición y respuesta a la API de GLS-ASM.
Esto le servirá como ayuda a la hora de depurar posibles errores de
comunicación.
-También puede activar Odoo con –log-level=debug para refistrar las
+ También puede activar Odoo con –log-level=debug para registrar las
peticiones y las respuestas en el log.
@@ -515,7 +517,7 @@
Bugs are tracked on GitHub Issues .
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback .
+
feedback .
Do not contact contributors directly about support or help with technical issues.
@@ -531,6 +533,7 @@
@@ -542,7 +545,7 @@
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/l10n-spain project on GitHub.
+
This module is part of the OCA/l10n-spain project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute .
diff --git a/delivery_gls_asm/tests/test_delivery_gls_asm.py b/delivery_gls_asm/tests/test_delivery_gls_asm.py
index b97003e9994..240b26bab9b 100644
--- a/delivery_gls_asm/tests/test_delivery_gls_asm.py
+++ b/delivery_gls_asm/tests/test_delivery_gls_asm.py
@@ -1,22 +1,18 @@
-# Copyright 2020 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-from unittest import mock
+# Copyright 2020 Tecnativa - David Vidal
+# Copyright 2021 Tecnativa - Víctor Martínez
+import time
+from odoo.exceptions import UserError
from odoo.tests import Form, common
-# We could rely on test user to make the tests, although we would rely on
-# the service stability wich could break CIs
-# It's better to mock the interface response and to test
-# Odoo flows regressions.
-_mock_class = "odoo.addons.delivery_gls_asm.models.gls_asm_request.GlsAsmRequest"
-
class TestDeliveryGlsAsm(common.SavepointCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.shipping_product = cls.env["product.product"].create(
- {"type": "service", "name": "Test Shipping costs", "list_price": 10.0,}
+ {"type": "service", "name": "Test Shipping costs", "list_price": 10.0}
)
cls.carrier_gls_asm = cls.env["delivery.carrier"].create(
{
@@ -27,7 +23,7 @@ def setUpClass(cls):
}
)
cls.product = cls.env["product.product"].create(
- {"type": "product", "name": "Test product",}
+ {"type": "product", "name": "Test product"}
)
cls.partner = cls.env["res.partner"].create(
{
@@ -37,71 +33,37 @@ def setUpClass(cls):
"street": "Calle de La Rua, 3",
}
)
- cls.partner_wh = cls.env["res.partner"].create(
- {
- "name": "WH Test Partner",
- "city": "Odoo City",
- "zip": "08001",
- "street": "Strasse Street, 1",
- }
- )
order_form = Form(cls.env["sale.order"].with_context(tracking_disable=True))
order_form.partner_id = cls.partner
- order_form.carrier_id = cls.carrier_gls_asm
with order_form.order_line.new() as line:
line.product_id = cls.product
line.product_uom_qty = 20.0
cls.sale_order = order_form.save()
+ cls.sale_order.carrier_id = cls.carrier_gls_asm.id
cls.sale_order.action_confirm()
cls.picking = cls.sale_order.picking_ids
cls.picking.move_lines.quantity_done = 20
def test_01_gls_picking_confirm_simple(self):
"""The picking is confirm and the shipping is recorded to GLS"""
- mocked_response = {
- "_codexp": "TEST123456789",
- "_codbarras": "1234567890123",
- "_return": 0,
- }
- with mock.patch(
- _mock_class + "._send_shipping", return_value=mocked_response,
- ):
- self.picking.button_validate()
- self.assertEqual(self.picking.carrier_tracking_ref, "TEST123456789")
- self.assertEqual(self.picking.gls_asm_public_tracking_ref, "1234567890123")
- # Cancel the expedition. The tracking refs go away
- mocked_response = {
- "_return": 0,
- }
- with mock.patch(
- _mock_class + "._cancel_shipment", return_value=mocked_response,
- ):
- self.picking.cancel_shipment()
- self.assertFalse(self.picking.gls_asm_public_tracking_ref)
+ # GLS API prevents duplicated references so in order to test we need a
+ # unique key that doesn't collide with any CI around, as every test really
+ # records an expedition
+ self.picking.name = "ODOO-TEST-{}".format(time.time())
+ self.picking.button_validate()
+ self.assertTrue(self.picking.carrier_tracking_ref)
+ self.assertTrue(self.picking.gls_asm_public_tracking_ref)
+ self.picking.cancel_shipment()
self.assertFalse(self.picking.carrier_tracking_ref)
+ self.assertFalse(self.picking.gls_asm_public_tracking_ref)
def test_02_gls_manifest(self):
- """Mock manifest response"""
- mocked_response = [
- {
- "cliente": "Pruebas WS",
- "codexp": "467247191",
- "bultos": "1",
- "kgs": "1,0",
- "nombre_dst": "Mr. Odoo",
- "calle_dst": "Test Address",
- "localidad_dst": "Test location",
- "cp_dst": "28001",
- }
- ]
+ """API work although without data"""
wizard = self.env["gls.asm.minifest.wizard"].create(
- {"carrier_id": self.carrier_gls_asm.id, "date_from": "2020-05-31",}
+ {"carrier_id": self.carrier_gls_asm.id, "date_from": "2050-05-31"}
)
- with mock.patch(
- _mock_class + "._get_manifest", return_value=mocked_response,
- ):
- report = wizard.get_manifest()
- self.assertEqual(report["data"]["deliveries"], mocked_response)
+ with self.assertRaises(UserError):
+ wizard.get_manifest()
def test_03_gls_escaping(self):
"""We must ensure that the values we'll be putting into the XML are
diff --git a/delivery_gls_asm/views/gls_asm_manifest_template.xml b/delivery_gls_asm/views/gls_asm_manifest_template.xml
index a098fea4787..79de1990fa5 100644
--- a/delivery_gls_asm/views/gls_asm_manifest_template.xml
+++ b/delivery_gls_asm/views/gls_asm_manifest_template.xml
@@ -166,7 +166,6 @@
id="action_delivery_gls_asm_manifest_wizard"
name="GLS Manifest"
res_model="gls.asm.minifest.wizard"
- view_type="form"
view_mode="form"
target="new"
/>
From 4e0af8b158d27b2e63378d150e03465a2a7a5550 Mon Sep 17 00:00:00 2001
From: brendapaniagua
Date: Fri, 19 Mar 2021 17:29:11 +0000
Subject: [PATCH 10/48] Added translation using Weblate (Catalan)
---
delivery_gls_asm/i18n/ca.po | 729 ++++++++++++++++++++++++++++++++++++
1 file changed, 729 insertions(+)
create mode 100644 delivery_gls_asm/i18n/ca.po
diff --git a/delivery_gls_asm/i18n/ca.po b/delivery_gls_asm/i18n/ca.po
new file mode 100644
index 00000000000..2ab3120acba
--- /dev/null
+++ b/delivery_gls_asm/i18n/ca.po
@@ -0,0 +1,729 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * delivery_gls_asm
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"\n"
+" GLS ASM API doesn't provide methods to compute delivery rates, so\n"
+" you should relay on another price method instead or override this\n"
+" one in your custom code.\n"
+" "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__0
+msgid "10:00 Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__2
+msgid "14:00 Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__27
+msgid "14H SOBRES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__28
+msgid "24H SOBRES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__29
+msgid "72H SOBRES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid " (Kg.)"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid " (Packages)"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid ""
+"\n"
+" Carrier Signature / Stamp \n"
+" "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "TOTAL EXPEDITIONS: "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Company: "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Date of printing "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "GLS MANIFEST "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Manifest Date: "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Printed by "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "TOTAL "
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__59
+msgid "ASM BUROFAX"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__60
+msgid "ASM GO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__30
+msgid "ASM0830"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__66
+msgid "ASMTRAVELLERS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__5
+msgid "BICI"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__3
+msgid "BusinessParcel"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__31
+msgid "CAN MUESTRAS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__6
+msgid "CARGA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__20
+msgid "CARGA MARITIMA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__52
+msgid "COMPRAS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__26
+msgid "CORREO INTERNO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__1
+msgid "COURIER"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+msgid "Cancelar"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_postage_type__d
+msgid "Cash On Delivery"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "City"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__create_date
+msgid "Created on"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Customer"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__9
+msgid "DEVOLUCION"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__14
+msgid "DISTRIBUCION PROPIA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__18
+msgid "DISTRIBUCION RED"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__date_from
+msgid "Date From"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__25
+msgid "EASYBAG"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__37
+msgid "ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__54
+msgid "EURO ESTANDAR"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__22
+msgid "EURO SMALL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__74
+msgid "EUROBUSINESS PARCEL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__76
+msgid "EUROBUSINESS SMALL PARCEL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__18
+msgid "EconomyParcel"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__13
+msgid "Ent. Pto. ASM"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__9
+msgid "Franja Horaria"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__21
+msgid "GLASS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__delivery_type__gls_asm
+msgid "GLS ASM"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_public_tracking_ref
+msgid "GLS Barcode"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid "GLS Cancellation failed with reason: %s"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
+msgid "GLS Configuration"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.ui.menu,name:delivery_gls_asm.menu_gls_asm_manifest
+msgid "GLS Deliveries Manifest"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid "GLS Expedition with reference %s cancelled"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
+msgid "GLS Label"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#: model:ir.actions.act_window,name:delivery_gls_asm.action_delivery_gls_asm_manifest_wizard
+#: model:ir.actions.report,name:delivery_gls_asm.gls_asm_manifest_report
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+#, python-format
+msgid "GLS Manifest"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_service
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__carrier_id
+msgid "GLS Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"GLS Shipping extra info:\n"
+"barcode: %s"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_uid
+msgid "GLS UID"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/stock_picking.py:0
+#, python-format
+msgid "GLS label for %s"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
+#, python-format
+msgid ""
+"GLS returned an error trying to record the shipping for {}.\n"
+"Error:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
+#, python-format
+msgid ""
+"GLS: No response from server getting state from ref {}.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
+#, python-format
+msgid ""
+"GLS: No response from server printing label with ref {}.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+msgid "Get Manifest"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model,name:delivery_gls_asm.model_gls_asm_minifest_wizard
+msgid "Get the GLS Manifest for the given date range"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__11
+msgid "IBEX"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
+msgid "ID"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__34
+msgid "INT PAQUET"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__55
+msgid "INTERC. EUROESTANDAR"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__7
+msgid "INTERDIA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__13
+msgid "INTERNACIONAL ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__12
+msgid "INTERNACIONAL EXPRESS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__36
+msgid "Int. WEB"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py:0
+#, python-format
+msgid ""
+"It wasn't possible to get the manifest. Maybe there aren'tdeliveries for the"
+" selected date."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_request
+msgid "Last GLS xml request"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_response
+msgid "Last GLS xml response"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__53
+msgid "MR1"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
+msgid "Manifest"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__10
+msgid "Maritimo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__4
+msgid "Masivo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
+#, python-format
+msgid ""
+"No response from server getting manifisto for GLS.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
+#, python-format
+msgid ""
+"No response from server recording GLS delivery {}.\n"
+"Traceback:\n"
+"{}"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__19
+msgid "OPERACIONES RED"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__24
+msgid "OPTIPLUS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__15
+msgid "OTROS PUENTES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__23
+msgid "PREPAGO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__16
+msgid "PROPIO AGENTE"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Packages"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__19
+msgid "ParcelShop"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
+msgid "Postage Type"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
+msgid "Postage type, usually 'Prepaid'"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_postage_type__p
+msgid "Prepaid"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__delivery_type
+msgid "Provider"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__58
+msgid "RC. PARCEL SHOP"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__32
+msgid "RC.SELLADA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__39
+msgid "REC. INT"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__51
+msgid "REC. INT WW"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__57
+msgid "REC. INTERCIUDAD ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__33
+msgid "RECANALIZA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__7
+msgid "RECOGIDA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__8
+msgid "RECOGIDA CRUZADA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__56
+msgid "RECOGIDA ECONOMY"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__48
+msgid "RECOGIDA MEN. CAMION"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__47
+msgid "RECOGIDA MEN. F.GRANDE"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__46
+msgid "RECOGIDA MEN. FURGONETA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__45
+msgid "RECOGIDA MEN. MOTO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__49
+msgid "RECOGIDA MENSAJERO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__17
+msgid "RECOGIDA SIN MERCANCIA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__10
+msgid "RETORNO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__11
+msgid "Rec. en NAVE."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Ref."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__44
+msgid "SERVICIO LOCAL"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__43
+msgid "SERVICIO LOCAL CAMION"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__42
+msgid "SERVICIO LOCAL F. GRANDE"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__41
+msgid "SERVICIO LOCAL FURGONETA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__40
+msgid "SERVICIO LOCAL MOTO"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__50
+msgid "SERVICIOS ESPECIALES"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__38
+msgid "SERVICIOS RUTAS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__5
+msgid "SaturdayService"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_service
+msgid "Set the contracted GLS Service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_shiptime
+msgid "Set the desired GLS shipping time for this carrier"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model,name:delivery_gls_asm.model_delivery_carrier
+msgid "Shipping Methods"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_shiptime
+msgid "Shipping Time"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
+msgid "Technical"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model,name:delivery_gls_asm.model_stock_picking
+msgid "Transfer"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_request
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_response
+msgid "Used for issues debugging"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__2
+msgid "VALIJA"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "Weight"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
+msgid "ZIP Code"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__35
+msgid "dPRO"
+msgstr ""
From e8914dc9c9132f5deafc42ab4564e69d9176047e Mon Sep 17 00:00:00 2001
From: brendapaniagua
Date: Fri, 19 Mar 2021 17:24:26 +0000
Subject: [PATCH 11/48] Translated using Weblate (Spanish)
Currently translated at 98.5% (135 of 137 strings)
Translation: l10n-spain-13.0/l10n-spain-13.0-delivery_gls_asm
Translate-URL: https://translation.odoo-community.org/projects/l10n-spain-13-0/l10n-spain-13-0-delivery_gls_asm/es/
---
delivery_gls_asm/i18n/es.po | 107 +++++++++++++++++++++---------------
1 file changed, 62 insertions(+), 45 deletions(-)
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index 5ff6cf47636..94eef0a4fa4 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -7,15 +7,15 @@ msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-05 07:09+0000\n"
-"PO-Revision-Date: 2020-10-06 10:16+0000\n"
-"Last-Translator: David Vidal \n"
+"PO-Revision-Date: 2021-03-19 19:46+0000\n"
+"Last-Translator: brendapaniagua \n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.10\n"
+"X-Generator: Weblate 4.3.2\n"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:216
@@ -29,6 +29,15 @@ msgid ""
" one in your custom code.\n"
" "
msgstr ""
+"\n"
+" La API de GLS ASM no proporciona métodos para calcular las tasas "
+"de \n"
+" entrega, por lo que debe confiar en otro método de precio en "
+"su \n"
+" lugar \n"
+" o anular este\n"
+" uno en su código personalizado.\n"
+" "
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
@@ -362,9 +371,9 @@ msgstr "UID GLS"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/stock_picking.py:27
-#, fuzzy, python-format
+#, python-format
msgid "GLS label for %s"
-msgstr "Etiqueta GLS"
+msgstr "Etiqueta GLS para% s"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:297
@@ -467,12 +476,12 @@ msgstr ""
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_request
msgid "Last GLS xml request"
-msgstr ""
+msgstr "Última solicitud xml de GLS"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_response
msgid "Last GLS xml response"
-msgstr ""
+msgstr "Última respuesta xml de GLS"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
@@ -507,7 +516,7 @@ msgstr "Maritimo"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "Masivo"
-msgstr ""
+msgstr "Masivo"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:404
@@ -517,6 +526,9 @@ msgid ""
"Traceback:\n"
"{}"
msgstr ""
+"No hay respuesta del servidor obteniendo manifisto para GLS.\n"
+"Rastrear:\n"
+"{}"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:286
@@ -526,31 +538,34 @@ msgid ""
"Traceback:\n"
"{}"
msgstr ""
+"No hay respuesta del servidor que registra la entrega de GLS {}.\n"
+"Rastrear:\n"
+"{}"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "OPERACIONES RED"
-msgstr ""
+msgstr "OPERACIONES RED"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "OPTIPLUS"
-msgstr ""
+msgstr "OPTIPLUS"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "OTROS PUENTES"
-msgstr ""
+msgstr "OTROS PUENTES"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "PREPAGO"
-msgstr ""
+msgstr "PREPAGO"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "PROPIO AGENTE"
-msgstr ""
+msgstr "PROPIO AGENTE"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
@@ -559,8 +574,9 @@ msgstr "Bultos"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
+#, fuzzy
msgid "ParcelShop"
-msgstr ""
+msgstr "ParcelShop"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
@@ -584,133 +600,134 @@ msgstr "Proveedor"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
+#, fuzzy
msgid "RC. PARCEL SHOP"
-msgstr ""
+msgstr "RC. PARCEL SHOP"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RC.SELLADA"
-msgstr ""
+msgstr "RC.SELLADA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "REC. INT"
-msgstr ""
+msgstr "REC. INT"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "REC. INT WW"
-msgstr ""
+msgstr "REC. INT WW"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "REC. INTERCIUDAD ECONOMY"
-msgstr ""
+msgstr "REC. ECONOMÍA INTERCIUDAD"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECANALIZA"
-msgstr ""
+msgstr "RECANALIZA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECOGIDA"
-msgstr ""
+msgstr "RECOGIDA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECOGIDA CRUZADA"
-msgstr ""
+msgstr "RECOGIDA CRUZADA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECOGIDA ECONOMY"
-msgstr ""
+msgstr "ECONOMÍA RECOGIDA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECOGIDA MEN. CAMION"
-msgstr ""
+msgstr "RECOGIDA MEN. CAMIÓN"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECOGIDA MEN. F.GRANDE"
-msgstr ""
+msgstr "RECOGIDA MEN. F.GRANDE"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECOGIDA MEN. FURGONETA"
-msgstr ""
+msgstr "RECOGIDA MEN. FURGONETA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECOGIDA MEN. MOTO"
-msgstr ""
+msgstr "RECOGIDA MEN. MOTO"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECOGIDA MENSAJERO"
-msgstr ""
+msgstr "RECOGIDA MENSAJERO"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RECOGIDA SIN MERCANCIA"
-msgstr ""
+msgstr "RECOGIDA SIN MERCANCIA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "RETORNO"
-msgstr ""
+msgstr "RETORNO"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "Rec. en NAVE."
-msgstr ""
+msgstr "Rec. en NAVE."
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
msgid "Ref."
-msgstr ""
+msgstr "Ref."
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "SERVICIO LOCAL"
-msgstr ""
+msgstr "SERVICIO LOCAL"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "SERVICIO LOCAL CAMION"
-msgstr ""
+msgstr "SERVICIO LOCAL CAMIÓN"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "SERVICIO LOCAL F. GRANDE"
-msgstr ""
+msgstr "SERVICIO LOCAL F. GRANDE"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "SERVICIO LOCAL FURGONETA"
-msgstr ""
+msgstr "SERVICIO LOCAL FURGONETA"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "SERVICIO LOCAL MOTO"
-msgstr ""
+msgstr "SERVICIO LOCAL MOTO"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "SERVICIOS ESPECIALES"
-msgstr ""
+msgstr "SERVICIOS ESPECIALES"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "SERVICIOS RUTAS"
-msgstr ""
+msgstr "SERVICIOS RUTAS"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "SaturdayService"
-msgstr ""
+msgstr "Servicio Sábado"
#. module: delivery_gls_asm
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_service
@@ -725,7 +742,7 @@ msgstr "Establezca el tiempo de envío de las opciones de GLS"
#. module: delivery_gls_asm
#: selection:delivery.carrier,delivery_type:0
msgid "Seur"
-msgstr ""
+msgstr "Seur"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_shiptime
@@ -735,7 +752,7 @@ msgstr "Tiempo de envío"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
msgid "Technical"
-msgstr ""
+msgstr "Técnico"
#. module: delivery_gls_asm
#: model:ir.model,name:delivery_gls_asm.model_stock_picking
@@ -746,12 +763,12 @@ msgstr "Albarán"
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_request
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_response
msgid "Used for issues debugging"
-msgstr ""
+msgstr "Se utiliza para la depuración de problemas"
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "VALIJA"
-msgstr ""
+msgstr "VALIJA"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
@@ -766,7 +783,7 @@ msgstr "C.P."
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_service:0
msgid "dPRO"
-msgstr ""
+msgstr "dPRO"
#~ msgid "Carrier"
#~ msgstr "Transportista"
From fd5eb211501423813ae5f01447088aa41a475349 Mon Sep 17 00:00:00 2001
From: brendapaniagua
Date: Mon, 22 Mar 2021 12:43:01 +0000
Subject: [PATCH 12/48] Translated using Weblate (Catalan)
Currently translated at 5.2% (7 of 134 strings)
Translation: l10n-spain-13.0/l10n-spain-13.0-delivery_gls_asm
Translate-URL: https://translation.odoo-community.org/projects/l10n-spain-13-0/l10n-spain-13-0-delivery_gls_asm/ca/
---
delivery_gls_asm/i18n/ca.po | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/delivery_gls_asm/i18n/ca.po b/delivery_gls_asm/i18n/ca.po
index 2ab3120acba..720f8ae6358 100644
--- a/delivery_gls_asm/i18n/ca.po
+++ b/delivery_gls_asm/i18n/ca.po
@@ -6,13 +6,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2021-03-22 14:46+0000\n"
+"Last-Translator: brendapaniagua \n"
"Language-Team: none\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.3.2\n"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
@@ -24,36 +26,42 @@ msgid ""
" one in your custom code.\n"
" "
msgstr ""
+"\n"
+" La API de GLS ASM no proporciona métodos para calcular las tasas "
+"de entrega, por lo que\n"
+" debe confiar en otro método de precio en su lugar o anular este\n"
+" uno en su código personalizado.\n"
+" "
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__0
msgid "10:00 Service"
-msgstr ""
+msgstr "10:00 Servicio"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__2
msgid "14:00 Service"
-msgstr ""
+msgstr "14:00 Servicio"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__27
msgid "14H SOBRES"
-msgstr ""
+msgstr "14H SOBRES"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__28
msgid "24H SOBRES"
-msgstr ""
+msgstr "24H SOBRES"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__29
msgid "72H SOBRES"
-msgstr ""
+msgstr "72H SOBRES"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
msgid " (Kg.)"
-msgstr ""
+msgstr " (Kg.)"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
From f71800e2bd689917bffd220a2bb83bb1570cdeb9 Mon Sep 17 00:00:00 2001
From: Ethan Hildick
Date: Thu, 15 Apr 2021 16:45:56 +0200
Subject: [PATCH 13/48] [13.0][IMP] delivery_gls_asm: black, isort, prettier
---
delivery_gls_asm/api/gls_asm_api.wsdl | 185 +++++++++++++++---
delivery_gls_asm/models/delivery_carrier.py | 14 +-
delivery_gls_asm/models/gls_asm_request.py | 12 +-
delivery_gls_asm/models/stock_picking.py | 4 +-
.../wizard/gls_asm_manifest_wizard.py | 5 +-
5 files changed, 176 insertions(+), 44 deletions(-)
diff --git a/delivery_gls_asm/api/gls_asm_api.wsdl b/delivery_gls_asm/api/gls_asm_api.wsdl
index a2fc54d2322..c1dfa803cbd 100644
--- a/delivery_gls_asm/api/gls_asm_api.wsdl
+++ b/delivery_gls_asm/api/gls_asm_api.wsdl
@@ -1,5 +1,16 @@
-
-
+
+
@@ -112,14 +123,24 @@
-
+
-
+
@@ -252,7 +273,12 @@
-
+
@@ -260,7 +286,12 @@
-
+
@@ -275,7 +306,12 @@
-
+
@@ -289,7 +325,12 @@
-
+
@@ -317,7 +358,12 @@
-
+
@@ -334,13 +380,24 @@
-
+
-
+
@@ -387,7 +444,11 @@
-
+
@@ -831,7 +892,10 @@
-
+
@@ -867,7 +931,10 @@
-
+
@@ -876,7 +943,10 @@
-
+
@@ -903,7 +973,10 @@
-
+
@@ -912,7 +985,10 @@
-
+
@@ -930,7 +1006,10 @@
-
+
@@ -939,7 +1018,10 @@
-
+
@@ -948,7 +1030,10 @@
-
+
@@ -957,7 +1042,10 @@
-
+
@@ -987,7 +1075,10 @@
-
+
@@ -1023,7 +1114,10 @@
-
+
@@ -1032,7 +1126,10 @@
-
+
@@ -1050,7 +1147,10 @@
-
+
@@ -1059,7 +1159,10 @@
-
+
@@ -1068,7 +1171,10 @@
-
+
@@ -1077,7 +1183,10 @@
-
+
@@ -1086,7 +1195,10 @@
-
+
@@ -1095,7 +1207,10 @@
-
+
@@ -1104,7 +1219,10 @@
-
+
@@ -1113,7 +1231,10 @@
-
+
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index 95674a77e09..0d0dd940bb8 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -17,7 +17,9 @@ class DeliveryCarrier(models.Model):
_inherit = "delivery.carrier"
delivery_type = fields.Selection(selection_add=[("gls_asm", "GLS ASM")])
- gls_asm_uid = fields.Char(string="GLS UID",)
+ gls_asm_uid = fields.Char(
+ string="GLS UID",
+ )
gls_asm_service = fields.Selection(
selection=GLS_ASM_SERVICES,
string="GLS Service",
@@ -37,15 +39,19 @@ class DeliveryCarrier(models.Model):
default="P",
)
gls_last_request = fields.Text(
- string="Last GLS xml request", help="Used for issues debugging", readonly=True,
+ string="Last GLS xml request",
+ help="Used for issues debugging",
+ readonly=True,
)
gls_last_response = fields.Text(
- string="Last GLS xml response", help="Used for issues debugging", readonly=True,
+ string="Last GLS xml response",
+ help="Used for issues debugging",
+ readonly=True,
)
def _gls_asm_uid(self):
"""The carrier can be put in test mode. The tests user must be set.
- A default given by GLS is put in the config parameter data """
+ A default given by GLS is put in the config parameter data"""
self.ensure_one()
uid = (
self.gls_asm_uid
diff --git a/delivery_gls_asm/models/gls_asm_request.py b/delivery_gls_asm/models/gls_asm_request.py
index 1729ff6e28a..d7c246bffa9 100644
--- a/delivery_gls_asm/models/gls_asm_request.py
+++ b/delivery_gls_asm/models/gls_asm_request.py
@@ -135,10 +135,10 @@
class GlsAsmRequest:
"""Interface between GLS-ASM SOAP API and Odoo recordset
- Abstract GLS-ASM API Operations to connect them with Odoo
+ Abstract GLS-ASM API Operations to connect them with Odoo
- Not all the features are implemented, but could be easily extended with
- the provided API. We leave the operations empty for future.
+ Not all the features are implemented, but could be easily extended with
+ the provided API. We leave the operations empty for future.
"""
def __init__(self, uidcustomer=None):
@@ -171,7 +171,7 @@ def _recursive_asdict(self, suds_object):
def _prepare_cancel_shipment_docin(self, **kwargs):
"""ASM API is not very standard. Prepare parameters to pass them raw in
- the SOAP message"""
+ the SOAP message"""
return """
@@ -183,7 +183,7 @@ def _prepare_cancel_shipment_docin(self, **kwargs):
def _prepare__get_manifest_docin(self, **kwargs):
"""ASM API is not very standard. Prepare parameters to pass them raw in
- the SOAP message"""
+ the SOAP message"""
return """
@@ -196,7 +196,7 @@ def _prepare__get_manifest_docin(self, **kwargs):
def _prepare_send_shipping_docin(self, **kwargs):
"""ASM API is not very standard. Prepare parameters to pass them raw in
- the SOAP message"""
+ the SOAP message"""
return """
diff --git a/delivery_gls_asm/models/stock_picking.py b/delivery_gls_asm/models/stock_picking.py
index c2d33cec5c9..22f739571f7 100644
--- a/delivery_gls_asm/models/stock_picking.py
+++ b/delivery_gls_asm/models/stock_picking.py
@@ -9,7 +9,9 @@ class StockPicking(models.Model):
# ASM API has two references for each delivery. This one is needed
# for some operations like getting the label
gls_asm_public_tracking_ref = fields.Char(
- string="GLS Barcode", readonly=True, copy=False,
+ string="GLS Barcode",
+ readonly=True,
+ copy=False,
)
def gls_asm_get_label(self):
diff --git a/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py b/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
index fbb7945f7b7..f62181d2614 100644
--- a/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
+++ b/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
@@ -10,7 +10,10 @@ class DeliverySeurManifiestoWizard(models.TransientModel):
_name = "gls.asm.minifest.wizard"
_description = "Get the GLS Manifest for the given date range"
- date_from = fields.Date(required=True, default=fields.Date.context_today,)
+ date_from = fields.Date(
+ required=True,
+ default=fields.Date.context_today,
+ )
carrier_id = fields.Many2one(
string="GLS Service",
comodel_name="delivery.carrier",
From 798762aae2d14d866761297d0547ac8d9b00b9ff Mon Sep 17 00:00:00 2001
From: Ethan Hildick
Date: Fri, 16 Apr 2021 11:50:20 +0200
Subject: [PATCH 14/48] [14.0][MIG] delivery_gls_asm: Migration to 14.0
---
delivery_gls_asm/__manifest__.py | 3 +-
delivery_gls_asm/i18n/delivery_gls_asm.pot | 16 ++
delivery_gls_asm/i18n/es.po | 40 +++--
delivery_gls_asm/models/delivery_carrier.py | 76 +++++----
delivery_gls_asm/models/gls_asm_request.py | 153 +++++++++++++++++-
delivery_gls_asm/security/ir.model.access.csv | 2 +
delivery_gls_asm/views/delivery_asm_view.xml | 13 --
.../views/gls_asm_manifest_template.xml | 27 ++--
8 files changed, 246 insertions(+), 84 deletions(-)
create mode 100644 delivery_gls_asm/security/ir.model.access.csv
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index d0d0433bae9..4e14ccff4a5 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "13.0.1.0.0",
+ "version": "14.0.1.0.0",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
@@ -14,6 +14,7 @@
"external_dependencies": {"python": ["suds-py3"]},
"data": [
"data/delivery_asm_data.xml",
+ "security/ir.model.access.csv",
"views/delivery_asm_view.xml",
"views/gls_asm_manifest_template.xml",
"views/stock_picking_views.xml",
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index 7cdad968187..efcc42a0c6b 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -177,6 +177,12 @@ msgstr ""
msgid "City"
msgstr ""
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid "Couldn't find the sender street"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__create_uid
msgid "Created by"
@@ -272,6 +278,16 @@ msgstr ""
msgid "GLS ASM"
msgstr ""
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"GLS ASM API doesn't provide methods to compute delivery rates, so\n"
+" you should relay on another price method instead or override this\n"
+" one in your custom code."
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_public_tracking_ref
msgid "GLS Barcode"
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index 94eef0a4fa4..30fa1f677b6 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -17,28 +17,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"
-#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:216
-#, python-format
-msgid ""
-"\n"
-" GLS ASM API doesn't provide methods to compute delivery rates, "
-"so\n"
-" you should relay on another price method instead or override "
-"this\n"
-" one in your custom code.\n"
-" "
-msgstr ""
-"\n"
-" La API de GLS ASM no proporciona métodos para calcular las tasas "
-"de \n"
-" entrega, por lo que debe confiar en otro método de precio en "
-"su \n"
-" lugar \n"
-" o anular este\n"
-" uno en su código personalizado.\n"
-" "
-
#. module: delivery_gls_asm
#: selection:delivery.carrier,gls_asm_shiptime:0
msgid "10:00 Service"
@@ -202,6 +180,12 @@ msgstr "Portes debidos"
msgid "City"
msgstr "Ciudad"
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid "Couldn't find the sender street"
+msgstr "No se ha podido encontrar la calle del remitente (obligatorio)"
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__create_uid
msgid "Created by"
@@ -307,6 +291,18 @@ msgstr "GLASS"
msgid "GLS ASM"
msgstr "GLS ASM"
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"GLS ASM API doesn't provide methods to compute delivery rates, so\n"
+" you should relay on another price method instead or override this\n"
+" one in your custom code."
+msgstr "La API de GLS ASM no proporciona métodos para calcular las tasas"
+"de entrega, por lo que debe confiar en otro método de precio en"
+"su lugar o anular este uno en su código personalizado."
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_public_tracking_ref
msgid "GLS Barcode"
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index 0d0dd940bb8..9466d141823 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -2,7 +2,8 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from xml.sax.saxutils import escape
-from odoo import _, fields, models
+from odoo import _, api, fields, models
+from odoo.exceptions import UserError
from .gls_asm_request import (
GLS_ASM_SERVICES,
@@ -16,7 +17,9 @@
class DeliveryCarrier(models.Model):
_inherit = "delivery.carrier"
- delivery_type = fields.Selection(selection_add=[("gls_asm", "GLS ASM")])
+ delivery_type = fields.Selection(
+ selection_add=[("gls_asm", "GLS ASM")], ondelete={"gls_asm": "set default"}
+ )
gls_asm_uid = fields.Char(
string="GLS UID",
)
@@ -38,16 +41,6 @@ class DeliveryCarrier(models.Model):
help="Postage type, usually 'Prepaid'",
default="P",
)
- gls_last_request = fields.Text(
- string="Last GLS xml request",
- help="Used for issues debugging",
- readonly=True,
- )
- gls_last_response = fields.Text(
- string="Last GLS xml response",
- help="Used for issues debugging",
- readonly=True,
- )
def _gls_asm_uid(self):
"""The carrier can be put in test mode. The tests user must be set.
@@ -81,6 +74,8 @@ def _prepare_gls_asm_shipping(self, picking):
picking.picking_type_id.warehouse_id.partner_id
or picking.company_id.partner_id
)
+ if not sender_partner.street:
+ raise UserError(_("Couldn't find the sender street"))
return {
"fecha": fields.Date.today().strftime("%d/%m/%Y"),
"portes": self.gls_asm_postage_type,
@@ -96,7 +91,9 @@ def _prepare_gls_asm_shipping(self, picking):
"pod": "N", # [optional]
"podobligatorio": "N", # [deprecated]
"remite_plaza": "", # [optional] Origin agency
- "remite_nombre": escape(sender_partner.name),
+ "remite_nombre": escape(
+ sender_partner.name or sender_partner.parent_id.name
+ ),
"remite_direccion": escape(sender_partner.street) or "",
"remite_poblacion": sender_partner.city or "",
"remite_provincia": sender_partner.state_id.name or "",
@@ -111,13 +108,16 @@ def _prepare_gls_asm_shipping(self, picking):
"destinatario_codigo": "",
"destinatario_plaza": "",
"destinatario_nombre": (
- escape(picking.partner_id.name)
- or escape(picking.partner_id.commercial_partner_id.name)
+ escape(picking.partner_id.name or picking.partner_id.parent_id.name)
+ or escape(
+ picking.partner_id.commercial_partner_id.name
+ or picking.partner_id.commercial_partner_id.parent_id.name
+ )
),
"destinatario_direccion": picking.partner_id.street or "",
"destinatario_poblacion": picking.partner_id.city or "",
"destinatario_provincia": picking.partner_id.state_id.name or "",
- "destinatario_pais": (picking.partner_id.country_id.phone_code or ""),
+ "destinatario_pais": picking.partner_id.country_id.phone_code or "",
"destinatario_cp": picking.partner_id.zip,
"destinatario_telefono": picking.partner_id.phone or "",
"destinatario_movil": picking.partner_id.mobile or "",
@@ -126,7 +126,9 @@ def _prepare_gls_asm_shipping(self, picking):
"destinatario_att": "",
"destinatario_departamento": "",
"destinatario_nif": "",
- "referencia_c": escape(picking.name), # Our unique reference
+ "referencia_c": escape(
+ picking.name.replace("\\", "/") # It errors with \ characters
+ ), # Our unique reference
"referencia_0": "", # Not used if the above is set
"importes_debido": "0", # The customer pays the shipping
"importes_reembolso": "", # TODO: Support Cash On Delivery
@@ -156,8 +158,11 @@ def gls_asm_send_shipping(self, pickings):
vals = self._prepare_gls_asm_shipping(picking)
vals.update({"tracking_number": False, "exact_price": 0})
response = gls_request._send_shipping(vals)
- self.gls_last_request = response and response.get("gls_sent_xml", "")
- self.gls_last_response = response or ""
+ self.log_xml(
+ response and response.get("gls_sent_xml", ""),
+ "GLS ASM Shipping Request",
+ )
+ self.log_xml(response or "", "GLS ASM Shipping Response")
if not response or response.get("_return", -1) < 0:
result.append(vals)
continue
@@ -191,6 +196,7 @@ def gls_asm_tracking_state_update(self, picking):
tracking_states = gls_request._get_tracking_states(picking.carrier_tracking_ref)
if not tracking_states:
return
+ self.log_xml(tracking_states or "", "GLS ASM Tracking Response")
picking.tracking_state_history = "\n".join(
[
"{} - [{}] {}".format(t.get("fecha"), t.get("codigo"), t.get("evento"))
@@ -210,8 +216,10 @@ def gls_asm_cancel_shipment(self, pickings):
gls_request = GlsAsmRequest(self._gls_asm_uid())
for picking in pickings.filtered("carrier_tracking_ref"):
response = gls_request._cancel_shipment(picking.carrier_tracking_ref)
- self.gls_last_request = response and response.get("gls_sent_xml", "")
- self.gls_last_response = response or ""
+ self.log_xml(
+ response and response.get("gls_sent_xml", ""), "GLS ASM Cancel Request"
+ )
+ self.log_xml(response or "", "GLS ASM Cancel Response")
if not response or response.get("_return") < 0:
msg = _("GLS Cancellation failed with reason: %s") % response.get(
"value", "Connection Error"
@@ -225,16 +233,22 @@ def gls_asm_cancel_shipment(self, pickings):
)
def gls_asm_rate_shipment(self, order):
- """There's no public API so another price method should be used"""
- raise NotImplementedError(
- _(
- """
- GLS ASM API doesn't provide methods to compute delivery rates, so
- you should relay on another price method instead or override this
- one in your custom code.
- """
- )
- )
+ """There's no public API so another price method should be used
+ Not implemented with GLS-ASM, these values are so it works with websites"""
+ return {
+ "success": True,
+ "price": self.product_id.lst_price,
+ "error_message": _(
+ """GLS ASM API doesn't provide methods to compute delivery rates, so
+ you should relay on another price method instead or override this
+ one in your custom code."""
+ ),
+ "warning_message": _(
+ """GLS ASM API doesn't provide methods to compute delivery rates, so
+ you should relay on another price method instead or override this
+ one in your custom code."""
+ ),
+ }
def gls_asm_get_label(self, gls_asm_public_tracking_ref):
"""Generate label for picking
diff --git a/delivery_gls_asm/models/gls_asm_request.py b/delivery_gls_asm/models/gls_asm_request.py
index d7c246bffa9..fbf126f35ff 100644
--- a/delivery_gls_asm/models/gls_asm_request.py
+++ b/delivery_gls_asm/models/gls_asm_request.py
@@ -132,6 +132,152 @@
"25": "in_transit", # ASM PARCELSHOP CONFIRMA RECEPCION
}
+GLS_SHIPMENT_ERROR_CODES = {
+ 36: "Error, Consignee Zipcode, wrong format.",
+ 38: "Error, Invalid consignee phone number.",
+ -36: "Error, Consignee Zipcode, wrong format.",
+ -38: "Error, Invalid consignee phone number.",
+ -1: (
+ "Exception. Timeout expired."
+ "Se ha forzado la interrupcion de una conexion existente por el host remoto."
+ ),
+ -3: "Error, The barcode of the shipment already exists.",
+ -33: """Error, Various reasons:
+ Cp destino no existe o no es de esa plaza
+ El reembolso debe ser mayor o igual a 0
+ Este contrato de valija no existe/esta dado de baja
+ Formato de codigo de barras no reconocido
+ Fecha expedición anterior a hoy
+ Los bultos no pueden ser 0 o negativos
+ No estas autorizado a grabar envíos de ese cliente
+ Sin tienda ps y horario ps
+ El servicio / horario es incorrecto""",
+ -48: "Error, EuroEstandar/EBP service: the number of parcels should always be 1.",
+ -49: "Error, EuroEstandar/EBP service: weight should be <= 31.5 kgs ().",
+ -50: "Error, EuroEstandar/EBP service: there can be no RCS (return stamped copy).",
+ -51: "Error, EuroEstandar/EBP service: there can be no SWAP ().",
+ -52: (
+ "Error, EuroEstandar/EBP service:"
+ "reported a country that is not included on the service."
+ ),
+ -53: (
+ "Error, EuroEstandar/EBP service:"
+ "agency is not authorized to insert EuroEstandar/EBP service."
+ ),
+ -54: (
+ "Error, EuroEstandar/EBP service:"
+ "The consignee mail address is required (.)."
+ ),
+ -55: (
+ "Error, EuroEstandar/EBP service:"
+ "The consignee mobile phone is required (.)."
+ ),
+ -57: (
+ "Error, EuroEstandar/EBP service:"
+ "reported a country that is not included on the service (.)."
+ ),
+ -69: "Error, I can not Channeling, wrong consignee zipcode.",
+ -70: "Error, The order number already exists to this date and customer code.",
+ -80: "EuroBusiness shipments. A mandatory field is missing.",
+ -81: "EuroBusiness shipments. A wrong format is transmitted in field.",
+ -82: (
+ "EuroBusiness shipments."
+ "Wrong zipcode /wrong country code."
+ "Error in zip code or its format, "
+ "and maybe a bad combination of city and zip code."
+ ),
+ -83: (
+ "EuroBusiness shipments."
+ "GLS internal error."
+ "No free parcel number is available within the range."
+ ),
+ -84: (
+ "EuroBusiness shipments."
+ "GLS internal error."
+ "A parameter is missing within the configuration file of the UNI-BOX."
+ ),
+ -85: "EuroBusiness shipments. Is not able to make the routing.",
+ -86: (
+ "EuroBusiness shipments."
+ "GLS internal error."
+ "A needed template-file cannot be found or opened."
+ ),
+ -87: "EuroBusiness shipments. GLS internal error. Duplicated sequence.",
+ -88: "EuroBusiness shipments. Other errors.",
+ -96: "Error, EBP service: Sequential error.",
+ -97: (
+ "Error, EuroEstandar/EBP service:"
+ " can't be 'D', can't be > 0."
+ ),
+ -99: "Warning, Webservices are temporarily out of service.",
+ -103: "Error, plaza solicita es null (alta).",
+ -104: "Error, plaza origen es null (alta).",
+ -106: "Error, CodCli es null (alta).",
+ -107: "Error, CodCliRed es null (alta).",
+ -108: "Error, Sender Name must be at least three characters.",
+ -109: "Error, Sender Address must be at least three characters.",
+ -110: "Error, Sender City must be at least three characters.",
+ -111: "Error, Sender Zipcode must be at least four characters.",
+ -117: "Error, los locales solo en la plaza de origen para la web.",
+ -118: "Error, customer reference is duplicated.",
+ -119: "Error, exception, uncontrolled error.",
+ -128: "Error, Consignee Name must be at least three characters.",
+ -129: "Error, Consignee Address must be at least three characters.",
+ -130: "Error, Consignee City must be at least three characters.",
+ -131: "Error, Consignee Zipcode must be at least four characters.",
+ -6565: "Error, Volume is incorrect, remember that the unit is m3.",
+}
+
+GLS_PICKUP_ERROR_CODES = {
+ -1: "Connection exception",
+ -103: "Impossible get the requesting agency",
+ -104: "Impossible get the origin agency.",
+ -105: "Collection date is empty o not informed.",
+ -106: "Impossible get the customer code (CodCli).",
+ -107: "Impossible get the CodCliRed.",
+ -108: "Collection name is empty or not informed.",
+ -109: "Collection Address name is empty or not informed.",
+ -110: "Collection City name is empty or not informed.",
+ -111: "Collection Zipcode is empty or not informed.",
+ -112: "Codsolicitud of agency is not valid.",
+ -113: "Generic zipcodes are not allowed.",
+ -114: "Collection interval must be greater than 2 hours.",
+ -115: "Minimum collection time is 8h.",
+ -116: "Maximum collection time is 22h.",
+ -117: "Los locales solo en la plaza de origen para la web.",
+ -118: "Customer reference is duplicated.",
+ -119: "Zonzoo no puede recoger en islas Portugal.",
+ -120: "Zipcode of consignee is incorrect.",
+ -122: "Login not exists or is deleted.",
+ -123: "Don't have permissions to insert on this agency.",
+ -125: "Can not ask a collect on festive.",
+ -126: (
+ "When country is not Spain (34) the Phone and Celullar are mandatory"
+ "(tags and inside )."
+ ),
+ -128: (
+ "It is mandatory to inform the Telephone or Email "
+ "where GLS must to collect (., . "
+ "or .)."
+ ),
+ -303: "Currency amounts must be allways greater than 0.",
+ -402: (
+ "If Amount of insured goods > 0 (in Seguro), "
+ "then tipo and descripcion are mandatory."
+ ),
+ -504: (
+ "Impossible get the last mile agency, "
+ "probably the consignee zipcode is wrong or not exists."
+ ),
+ -505: "Consignee name is not informed.",
+ -506: "Consignee address is not informed.",
+ -507: "Consignee city is not informed.",
+ -508: "Consignee zipcode is not informed.",
+ -602: "The reference must be informed.",
+ -603: "Shipment References, tipo not exists.",
+ -676: "Collection Zipcode is wrong, not exists.",
+}
+
class GlsAsmRequest:
"""Interface between GLS-ASM SOAP API and Odoo recordset
@@ -307,7 +453,10 @@ def _send_shipping(self, vals):
_(
"GLS returned an error trying to record the shipping for {}.\n"
"Error:\n{}"
- ).format(vals.get("referencia_c", ""), res["_return"])
+ ).format(
+ vals.get("referencia_c", ""),
+ GLS_SHIPMENT_ERROR_CODES.get(res["_return"], res["_return"]),
+ )
)
if res.get("Etiquetas", {}).get("Etiqueta", {}).get("value"):
res["gls_label"] = binascii.a2b_base64(
@@ -340,7 +489,7 @@ def _get_tracking_states(self, reference=False):
"""
res = self._get_delivery_info(reference)
res = (
- res.get("expediciones", {})
+ (res.get("expediciones") or {})
.get("exp", {})
.get("tracking_list", {})
.get("tracking", [])
diff --git a/delivery_gls_asm/security/ir.model.access.csv b/delivery_gls_asm/security/ir.model.access.csv
new file mode 100644
index 00000000000..d4dac9564d7
--- /dev/null
+++ b/delivery_gls_asm/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_gls_asm_manifest_wizard_user,gls.asm.manifest.wizard.user,model_gls_asm_minifest_wizard,base.group_user,1,1,1,1
diff --git a/delivery_gls_asm/views/delivery_asm_view.xml b/delivery_gls_asm/views/delivery_asm_view.xml
index 2e1b9439d7a..2a83500b3c2 100644
--- a/delivery_gls_asm/views/delivery_asm_view.xml
+++ b/delivery_gls_asm/views/delivery_asm_view.xml
@@ -33,19 +33,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+ GLS Manifest
+ gls.asm.minifest.wizard
+ qweb-pdf
+ delivery_gls_asm.gls_asm_manifest_report_view
+
+
+ GLS Manifest
+ gls.asm.minifest.wizard
+ form
+ new
+
From 20f9e3ce29e483e9a6c02cd5b59268d9bd9f1efb Mon Sep 17 00:00:00 2001
From: Ethan Hildick
Date: Mon, 29 Nov 2021 16:09:19 +0100
Subject: [PATCH 17/48] [12.0][FIX] delivery_gls_asm: Escape destination street
---
delivery_gls_asm/models/delivery_carrier.py | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index d38bf39f5bf..edff52fb865 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -118,14 +118,14 @@ def _prepare_gls_asm_shipping(self, picking):
"remite_nombre": escape(
sender_partner.name or sender_partner.parent_id.name
),
- "remite_direccion": escape(sender_partner.street) or "",
- "remite_poblacion": sender_partner.city or "",
- "remite_provincia": sender_partner.state_id.name or "",
+ "remite_direccion": escape(sender_partner.street or ""),
+ "remite_poblacion": escape(sender_partner.city or ""),
+ "remite_provincia": escape(sender_partner.state_id.name or ""),
"remite_pais": "34", # [mandatory] always 34=Spain
"remite_cp": sender_partner.zip or "",
"remite_telefono": sender_partner.phone or "",
"remite_movil": sender_partner.mobile or "",
- "remite_email": sender_partner.email or "",
+ "remite_email": escape(sender_partner.email or ""),
"remite_departamento": "",
"remite_nif": sender_partner.vat or "",
"remite_observaciones": "",
@@ -138,14 +138,14 @@ def _prepare_gls_asm_shipping(self, picking):
or picking.partner_id.commercial_partner_id.parent_id.name
)
),
- "destinatario_direccion": picking.partner_id.street or "",
- "destinatario_poblacion": picking.partner_id.city or "",
- "destinatario_provincia": picking.partner_id.state_id.name or "",
- "destinatario_pais": picking.partner_id.country_id.phone_code or "",
+ "destinatario_direccion": escape(picking.partner_id.street or ""),
+ "destinatario_poblacion": escape(picking.partner_id.city or ""),
+ "destinatario_provincia": escape(picking.partner_id.state_id.name or ""),
+ "destinatario_pais": (picking.partner_id.country_id.phone_code or ""),
"destinatario_cp": picking.partner_id.zip,
"destinatario_telefono": picking.partner_id.phone or "",
"destinatario_movil": picking.partner_id.mobile or "",
- "destinatario_email": picking.partner_id.email or "",
+ "destinatario_email": escape(picking.partner_id.email or ""),
"destinatario_observaciones": "",
"destinatario_att": "",
"destinatario_departamento": "",
From 1389f0d7fc5de0ae06cb600122b66ce9acb62934 Mon Sep 17 00:00:00 2001
From: david
Date: Wed, 12 Jan 2022 10:54:05 +0100
Subject: [PATCH 18/48] [FIX] delivery_gls_asm: escaped int
`res_country.phone_code` is an Integer field, thus it should not be
scaped.
TT33879
---
delivery_gls_asm/README.rst | 21 +-
delivery_gls_asm/i18n/delivery_gls_asm.pot | 271 +++++++++++++++---
delivery_gls_asm/models/delivery_carrier.py | 2 +-
.../static/description/index.html | 65 +++--
4 files changed, 294 insertions(+), 65 deletions(-)
diff --git a/delivery_gls_asm/README.rst b/delivery_gls_asm/README.rst
index 7c52a42b8fc..56df2c7a9c4 100644
--- a/delivery_gls_asm/README.rst
+++ b/delivery_gls_asm/README.rst
@@ -14,13 +14,13 @@ Delivery GLS-ASM
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--spain-lightgray.png?logo=github
- :target: https://github.com/OCA/l10n-spain/tree/13.0/delivery_gls_asm
+ :target: https://github.com/OCA/l10n-spain/tree/14.0/delivery_gls_asm
:alt: OCA/l10n-spain
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/l10n-spain-13-0/l10n-spain-13-0-delivery_gls_asm
+ :target: https://translation.odoo-community.org/projects/l10n-spain-14-0/l10n-spain-14-0-delivery_gls_asm
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/189/13.0
+ :target: https://runbot.odoo-community.org/runbot/189/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -78,6 +78,17 @@ Grabar servicios
módulo mandará a la API de GLS/ASM el número correspondiente y podremos
descargar las etiquetas en PDF con su correspondiente numeración.
+Pedir recogidas
+~~~~~~~~~~~~~~~
+
+ #. Al confirmar el albarán con un servicio de recogida,
+ el envío NO se grabará en GLS.
+ #. Aparecerá un botón de "Enviar recogida" en la parte superior para solicitarlo
+ #. Con la respuesta, se registrará en el chatter la referencia de envío
+ #. Para gestionar los bultos del envío, se puede utilizar el campo de número
+ de bultos que añade `delivery_package_number` (ver el README para mayor
+ información) o bien el flujo nativo de Odoo con paquetes de envío.
+
Cancelar servicios
~~~~~~~~~~~~~~~~~~
@@ -143,7 +154,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -176,6 +187,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/l10n-spain `_ project on GitHub.
+This module is part of the `OCA/l10n-spain `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index ef43b6a2e3b..6ec9f629213 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 13.0\n"
+"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -13,17 +13,6 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
-#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
-#, python-format
-msgid ""
-"\n"
-" GLS ASM API doesn't provide methods to compute delivery rates, so\n"
-" you should relay on another price method instead or override this\n"
-" one in your custom code.\n"
-" "
-msgstr ""
-
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__0
msgid "10:00 Service"
@@ -102,6 +91,11 @@ msgstr ""
msgid "TOTAL "
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__preconfirm
+msgid "A preconfirmar"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__59
msgid "ASM BUROFAX"
@@ -112,6 +106,11 @@ msgstr ""
msgid "ASM GO"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__parcelshop_confirm
+msgid "ASM PARCELSHOP CONFIRMA RECEPCIÓN"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__30
msgid "ASM0830"
@@ -122,6 +121,26 @@ msgstr ""
msgid "ASMTRAVELLERS"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__warehouse
+msgid "Almacenado"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__cancel
+msgid "Anualada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__cancel
+msgid "Anulada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__assigned
+msgid "Asignada"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__5
msgid "BICI"
@@ -162,6 +181,11 @@ msgstr ""
msgid "COURIER"
msgstr ""
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
+msgid "Cancel"
+msgstr ""
+
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
msgid "Cancelar"
@@ -172,6 +196,26 @@ msgstr ""
msgid "Cash On Delivery"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__closed
+msgid "Cerrado"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__closed_final
+msgid "Cerrado Definitivo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__closed_final
+msgid "Cerrado definitivo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__closed
+msgid "Cerrado por siniestro"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
#: model:ir.model.fields,help:delivery_gls_asm.field_stock_picking__gls_carrier_is_pickup_service
@@ -183,6 +227,11 @@ msgstr ""
msgid "City"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__incidence
+msgid "Con incidencia"
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
@@ -232,7 +281,24 @@ msgid "Date From"
msgstr ""
#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__destroyed
+msgid "Destruido por orden del cliente"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__return_agency
+msgid "Devuelta"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__return_customer
+msgid "Devuelta al cliente"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__display_name
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__display_name
msgid "Display Name"
msgstr ""
@@ -271,11 +337,71 @@ msgstr ""
msgid "EconomyParcel"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__agency_transit
+msgid "En delegación destino"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__origin
+msgid "En delegación origen"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__returning
+msgid "En devolución"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__in_platform
+msgid "En plataforma de destino"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__shipping
+msgid "En reparto"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__transit
+msgid "En tránsito al destino"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__13
msgid "Ent. Pto. ASM"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__cancel_returned
+msgid "Entrega anulada (devuelta)"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__partially_delivered
+msgid "Entrega parcial"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__delivered
+msgid "Entregado"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__parcelshop
+msgid "Entregado en ASM PARCELSHOP"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_shipment_state
+msgid "Estado envío GLS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_pickup_state
+msgid "Estado recogida GLS"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__9
msgid "Franja Horaria"
@@ -322,12 +448,6 @@ msgstr ""
msgid "GLS Deliveries Manifest"
msgstr ""
-#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
-#, python-format
-msgid "GLS Expedition with reference %s cancelled"
-msgstr ""
-
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
msgid "GLS Label"
@@ -345,7 +465,7 @@ msgstr ""
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
-msgid "GLS Pickup extra info: Tracking number: %s"
+msgid "GLS Pickup extra info: Tracking number: %s Bultos: %s"
msgstr ""
#. module: delivery_gls_asm
@@ -375,6 +495,7 @@ msgstr ""
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
"GLS returned an error trying to record the shipping for {}.\n"
@@ -410,13 +531,20 @@ msgstr ""
msgid "Get the GLS Manifest for the given date range"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__recorded
+msgid "Grabado"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__11
msgid "IBEX"
msgstr ""
#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__id
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__id
msgid "ID"
msgstr ""
@@ -459,17 +587,9 @@ msgid ""
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_request
-msgid "Last GLS xml request"
-msgstr ""
-
-#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_response
-msgid "Last GLS xml response"
-msgstr ""
-
-#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier____last_update
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking____last_update
msgid "Last Modified on"
msgstr ""
@@ -493,6 +613,11 @@ msgstr ""
msgid "Manifest"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__manifested
+msgid "Manifestada"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__10
msgid "Maritimo"
@@ -503,6 +628,11 @@ msgstr ""
msgid "Masivo"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__not_done
+msgid "No Realizada"
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
@@ -514,6 +644,7 @@ msgstr ""
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
"No response from server recording GLS delivery {}.\n"
@@ -556,12 +687,37 @@ msgstr ""
msgid "ParcelShop"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__pending
+msgid "Pendiente Gestión"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__held
+msgid "Pendiente autorización"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__pending
+msgid "Pendiente datos en delegación"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__pending_auth
+msgid "Pending Autorización"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_carrier_is_pickup_service
msgid "Pick-up service"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__possible_return
+msgid "Posible devolución"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
msgid "Postage Type"
@@ -572,6 +728,11 @@ msgstr ""
msgid "Postage type, usually 'Prepaid'"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__preconfirmed
+msgid "Preconfirmada enrega"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_postage_type__p
msgid "Prepaid"
@@ -662,16 +823,51 @@ msgstr ""
msgid "RETORNO"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__incidence
+msgid "Realizada con Incidencia"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__done
+msgid "Realizada con éxito"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__11
msgid "Rec. en NAVE."
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__extinguished
+msgid "Recanalizada (A extinguir)"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__picked_up_agency
+msgid "Recepcionada en Agencia"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__received
+msgid "Recibida"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__picked_up_customer
+msgid "Recogido en Cliente"
+msgstr ""
+
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
msgid "Ref."
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__held_order
+msgid "Retenido por orden de paga"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__44
msgid "SERVICIO LOCAL"
@@ -738,8 +934,13 @@ msgid "Shipping Time"
msgstr ""
#. module: delivery_gls_asm
-#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
-msgid "Technical"
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__recorded
+msgid "Solicitada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__requested_return
+msgid "Solicitud de devolución"
msgstr ""
#. module: delivery_gls_asm
@@ -748,9 +949,11 @@ msgid "Transfer"
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_request
-#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_response
-msgid "Used for issues debugging"
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"Unable to cancel GLS Expedition with reference {} as it is in state {}.\n"
+"Please manage the cancellation of this shipment/pickup with GLS via email."
msgstr ""
#. module: delivery_gls_asm
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index edff52fb865..ba6a3fd06cd 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -141,7 +141,7 @@ def _prepare_gls_asm_shipping(self, picking):
"destinatario_direccion": escape(picking.partner_id.street or ""),
"destinatario_poblacion": escape(picking.partner_id.city or ""),
"destinatario_provincia": escape(picking.partner_id.state_id.name or ""),
- "destinatario_pais": (picking.partner_id.country_id.phone_code or ""),
+ "destinatario_pais": picking.partner_id.country_id.phone_code or "",
"destinatario_cp": picking.partner_id.zip,
"destinatario_telefono": picking.partner_id.phone or "",
"destinatario_movil": picking.partner_id.mobile or "",
diff --git a/delivery_gls_asm/static/description/index.html b/delivery_gls_asm/static/description/index.html
index 3a2efd6b93f..c639ae527f0 100644
--- a/delivery_gls_asm/static/description/index.html
+++ b/delivery_gls_asm/static/description/index.html
@@ -367,7 +367,7 @@ Delivery GLS-ASM
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
Este módulo integra la API de GLS España (antigua API de ASM) con Odoo. No es
válido para integraciones de GLS en otros países, que podrían usar otras APIs.
Table of contents
@@ -377,19 +377,20 @@ Delivery GLS-ASM
Configuration
Usage
-Known issues / Roadmap
-Bug Tracker
-Credits
@@ -436,8 +437,22 @@
+
+
+
+
+Al confirmar el albarán con un servicio de recogida,
+el envío NO se grabará en GLS.
+Aparecerá un botón de “Enviar recogida” en la parte superior para solicitarlo
+Con la respuesta, se registrará en el chatter la referencia de envío
+Para gestionar los bultos del envío, se puede utilizar el campo de número
+de bultos que añade delivery_package_number (ver el README para mayor
+información) o bien el flujo nativo de Odoo con paquetes de envío.
+
+
+
-
+
Al igual que en otros métodos de envío, en los albaranes de salida podemos
@@ -449,7 +464,7 @@
-
+
Si por error hubiésemos eliminado el adjunto de las etiquetas que obtuvimos
@@ -460,7 +475,7 @@
-
+
El módulo está integrado con delivery_state para poder recabar la
@@ -473,7 +488,7 @@
-
+
Para obtener el manifiesto de expediciones que firmaría el repartidor,
@@ -488,7 +503,7 @@
-
+
Es importante tener en cuenta que solo funcionará con códigos postales de
@@ -504,7 +519,7 @@
-
+
La API no facilita métodos para cotizar el coste real de los envíos, por lo
que siempre se cotizan a 0. Si la cotización de envíos es necesaria,
@@ -513,23 +528,23 @@
-
+
Bugs are tracked on GitHub Issues .
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback .
+
feedback .
Do not contact contributors directly about support or help with technical issues.
-
+
-
+
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/l10n-spain project on GitHub.
+
This module is part of the OCA/l10n-spain project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute .
From 7bfc2c8df9c521e99511105d824c87dc8d1ed82e Mon Sep 17 00:00:00 2001
From: Reyes4711
Date: Wed, 23 Mar 2022 12:14:42 +0100
Subject: [PATCH 19/48] [14.0][FIX] delivery_gls_asm: stock_picking_batch fail
delivery_gls_asm 14.0.1.1.0
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/views/stock_picking_views.xml | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index 4e14ccff4a5..e0a630d9953 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "14.0.1.0.0",
+ "version": "14.0.1.1.0",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
diff --git a/delivery_gls_asm/views/stock_picking_views.xml b/delivery_gls_asm/views/stock_picking_views.xml
index 6f8c09ddc04..15bc021d061 100644
--- a/delivery_gls_asm/views/stock_picking_views.xml
+++ b/delivery_gls_asm/views/stock_picking_views.xml
@@ -75,6 +75,7 @@
}
+
\n"
-" Carrier Signature / Stamp \n"
+" Carrier Signature / Stamp"
+"strong>\n"
" "
msgstr ""
@@ -111,6 +95,11 @@ msgstr ""
msgid "TOTAL "
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__preconfirm
+msgid "A preconfirmar"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__59
msgid "ASM BUROFAX"
@@ -121,6 +110,11 @@ msgstr ""
msgid "ASM GO"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__parcelshop_confirm
+msgid "ASM PARCELSHOP CONFIRMA RECEPCIÓN"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__30
msgid "ASM0830"
@@ -131,6 +125,26 @@ msgstr ""
msgid "ASMTRAVELLERS"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__warehouse
+msgid "Almacenado"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__cancel
+msgid "Anualada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__cancel
+msgid "Anulada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__assigned
+msgid "Asignada"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__5
msgid "BICI"
@@ -171,6 +185,11 @@ msgstr ""
msgid "COURIER"
msgstr ""
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
+msgid "Cancel"
+msgstr ""
+
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
msgid "Cancelar"
@@ -181,11 +200,54 @@ msgstr ""
msgid "Cash On Delivery"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__closed
+msgid "Cerrado"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__closed_final
+msgid "Cerrado Definitivo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__closed_final
+msgid "Cerrado definitivo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__closed
+msgid "Cerrado por siniestro"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
+#: model:ir.model.fields,help:delivery_gls_asm.field_stock_picking__gls_carrier_is_pickup_service
+msgid "Checked if this service is used for pickups"
+msgstr ""
+
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
msgid "City"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__incidence
+msgid "Con incidencia"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid "Couldn't find the consignee street"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid "Couldn't find the sender street"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__create_uid
msgid "Created by"
@@ -222,7 +284,24 @@ msgid "Date From"
msgstr ""
#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__destroyed
+msgid "Destruido por orden del cliente"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__return_agency
+msgid "Devuelta"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__return_customer
+msgid "Devuelta al cliente"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__display_name
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__display_name
msgid "Display Name"
msgstr ""
@@ -261,11 +340,71 @@ msgstr ""
msgid "EconomyParcel"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__agency_transit
+msgid "En delegación destino"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__origin
+msgid "En delegación origen"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__returning
+msgid "En devolución"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__in_platform
+msgid "En plataforma de destino"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__shipping
+msgid "En reparto"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__transit
+msgid "En tránsito al destino"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__13
msgid "Ent. Pto. ASM"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__cancel_returned
+msgid "Entrega anulada (devuelta)"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__partially_delivered
+msgid "Entrega parcial"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__delivered
+msgid "Entregado"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__parcelshop
+msgid "Entregado en ASM PARCELSHOP"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_shipment_state
+msgid "Estado envío GLS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_pickup_state
+msgid "Estado recogida GLS"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__9
msgid "Franja Horaria"
@@ -281,6 +420,16 @@ msgstr ""
msgid "GLS ASM"
msgstr ""
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"GLS ASM API doesn't provide methods to compute delivery rates, so\n"
+" you should relay on another price method instead or override "
+"this\n"
+" one in your custom code."
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_public_tracking_ref
msgid "GLS Barcode"
@@ -302,12 +451,6 @@ msgstr ""
msgid "GLS Deliveries Manifest"
msgstr ""
-#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
-#, python-format
-msgid "GLS Expedition with reference %s cancelled"
-msgstr ""
-
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
msgid "GLS Label"
@@ -322,6 +465,12 @@ msgstr ""
msgid "GLS Manifest"
msgstr ""
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid "GLS Pickup extra info: Tracking number: %s Bultos: %s"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_service
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__carrier_id
@@ -356,6 +505,17 @@ msgid ""
"{}"
msgstr ""
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"GLS-ASM API doesn't admit a reference number higher than 15 characters. In "
+"order to handle it, they trim thereference and as the reference is unique to "
+"every customer we soon would have duplicated reference collisions. To "
+"prevent this, you should edit your picking sequence to a max of 15 "
+"characters."
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
@@ -384,13 +544,20 @@ msgstr ""
msgid "Get the GLS Manifest for the given date range"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__recorded
+msgid "Grabado"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__11
msgid "IBEX"
msgstr ""
#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__id
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__id
msgid "ID"
msgstr ""
@@ -428,22 +595,14 @@ msgstr ""
#: code:addons/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py:0
#, python-format
msgid ""
-"It wasn't possible to get the manifest. Maybe there aren'tdeliveries for the"
-" selected date."
-msgstr ""
-
-#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_request
-msgid "Last GLS xml request"
-msgstr ""
-
-#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_response
-msgid "Last GLS xml response"
+"It wasn't possible to get the manifest. Maybe there aren'tdeliveries for the "
+"selected date."
msgstr ""
#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier____last_update
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking____last_update
msgid "Last Modified on"
msgstr ""
@@ -467,6 +626,11 @@ msgstr ""
msgid "Manifest"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__manifested
+msgid "Manifestada"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__10
msgid "Maritimo"
@@ -477,6 +641,11 @@ msgstr ""
msgid "Masivo"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__not_done
+msgid "No Realizada"
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
@@ -530,6 +699,37 @@ msgstr ""
msgid "ParcelShop"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__pending
+msgid "Pendiente Gestión"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__held
+msgid "Pendiente autorización"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__pending
+msgid "Pendiente datos en delegación"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__pending_auth
+msgid "Pending Autorización"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_carrier_is_pickup_service
+msgid "Pick-up service"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__possible_return
+msgid "Posible devolución"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
msgid "Postage Type"
@@ -540,6 +740,11 @@ msgstr ""
msgid "Postage type, usually 'Prepaid'"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__preconfirmed
+msgid "Preconfirmada enrega"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_postage_type__p
msgid "Prepaid"
@@ -630,16 +835,51 @@ msgstr ""
msgid "RETORNO"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__incidence
+msgid "Realizada con Incidencia"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__done
+msgid "Realizada con éxito"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__11
msgid "Rec. en NAVE."
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__extinguished
+msgid "Recanalizada (A extinguir)"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__picked_up_agency
+msgid "Recepcionada en Agencia"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__received
+msgid "Recibida"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__picked_up_customer
+msgid "Recogido en Cliente"
+msgstr ""
+
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
msgid "Ref."
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__held_order
+msgid "Retenido por orden de paga"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__44
msgid "SERVICIO LOCAL"
@@ -680,6 +920,11 @@ msgstr ""
msgid "SaturdayService"
msgstr ""
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
+msgid "Send pick-up"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_service
msgid "Set the contracted GLS Service"
@@ -701,8 +946,13 @@ msgid "Shipping Time"
msgstr ""
#. module: delivery_gls_asm
-#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
-msgid "Technical"
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__recorded
+msgid "Solicitada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__requested_return
+msgid "Solicitud de devolución"
msgstr ""
#. module: delivery_gls_asm
@@ -711,9 +961,11 @@ msgid "Transfer"
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_request
-#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_response
-msgid "Used for issues debugging"
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"Unable to cancel GLS Expedition with reference {} as it is in state {}.\n"
+"Please manage the cancellation of this shipment/pickup with GLS via email."
msgstr ""
#. module: delivery_gls_asm
@@ -735,3 +987,20 @@ msgstr ""
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__35
msgid "dPRO"
msgstr ""
+
+#~ msgid ""
+#~ "\n"
+#~ " GLS ASM API doesn't provide methods to compute delivery "
+#~ "rates, so\n"
+#~ " you should relay on another price method instead or override "
+#~ "this\n"
+#~ " one in your custom code.\n"
+#~ " "
+#~ msgstr ""
+#~ "\n"
+#~ " La API de GLS ASM no proporciona métodos para calcular las "
+#~ "tasas de entrega, por lo que\n"
+#~ " debe confiar en otro método de precio en su lugar o anular "
+#~ "este\n"
+#~ " uno en su código personalizado.\n"
+#~ " "
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index 6ec9f629213..4421738d8c8 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -503,6 +503,17 @@ msgid ""
"{}"
msgstr ""
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"GLS-ASM API doesn't admit a reference number higher than 15 characters. In "
+"order to handle it, they trim thereference and as the reference is unique to"
+" every customer we soon would have duplicated reference collisions. To "
+"prevent this, you should edit your picking sequence to a max of 15 "
+"characters."
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index 24ad610a23f..66c5235b97d 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -18,27 +18,27 @@ msgstr ""
"X-Generator: Weblate 4.3.2\n"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__0
msgid "10:00 Service"
msgstr "10:00 Service"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__2
msgid "14:00 Service"
msgstr "14:00 Service"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__27
msgid "14H SOBRES"
msgstr "14H SOBRES"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__28
msgid "24H SOBRES"
msgstr "24H SOBRES"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__29
msgid "72H SOBRES"
msgstr "72H SOBRES"
@@ -101,80 +101,130 @@ msgid "TOTAL "
msgstr "TOTAL "
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__preconfirm
+msgid "A preconfirmar"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__59
msgid "ASM BUROFAX"
msgstr "ASM BUROFAX"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__60
msgid "ASM GO"
msgstr "ASM GO"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__parcelshop_confirm
+msgid "ASM PARCELSHOP CONFIRMA RECEPCIÓN"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__30
msgid "ASM0830"
msgstr "ASM0830"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__66
msgid "ASMTRAVELLERS"
msgstr "ASMTRAVELLERS"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
-msgid "BICI"
-msgstr "BICI"
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__warehouse
+msgid "Almacenado"
+msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,delivery_type:0
-msgid "Based on Rules"
-msgstr "En base a reglas"
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__cancel
+msgid "Anualada"
+msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__cancel
+msgid "Anulada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__assigned
+msgid "Asignada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__5
+msgid "BICI"
+msgstr "BICI"
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__3
msgid "BusinessParcel"
msgstr "BusinessParcel"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__31
msgid "CAN MUESTRAS"
msgstr "CAN MUESTRAS"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__6
msgid "CARGA"
msgstr "CARGA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__20
msgid "CARGA MARITIMA"
msgstr "CARGA MARITIMA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__52
msgid "COMPRAS"
msgstr "COMPRAS"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__26
msgid "CORREO INTERNO"
msgstr "CORREO INTERNO"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__1
msgid "COURIER"
msgstr "COURIER"
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
+msgid "Cancel"
+msgstr ""
+
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
msgid "Cancelar"
msgstr "Cancelar"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_postage_type:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_postage_type__d
msgid "Cash On Delivery"
msgstr "Portes debidos"
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__closed
+msgid "Cerrado"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__closed_final
+msgid "Cerrado Definitivo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__closed_final
+msgid "Cerrado definitivo"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__closed
+msgid "Cerrado por siniestro"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
#: model:ir.model.fields,help:delivery_gls_asm.field_stock_picking__gls_carrier_is_pickup_service
@@ -186,6 +236,11 @@ msgstr "Marcado si este servicio se usa para recogidas"
msgid "City"
msgstr "Ciudad"
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__incidence
+msgid "Con incidencia"
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
@@ -194,7 +249,6 @@ msgstr "No se ha podido encontrar la calle del consignatario (obligatorio)"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
msgid "Couldn't find the sender street"
msgstr "No se ha podido encontrar la calle del remitente (obligatorio)"
@@ -215,17 +269,17 @@ msgid "Customer"
msgstr "Cliente"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__9
msgid "DEVOLUCION"
msgstr "DEVOLUCION"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__14
msgid "DISTRIBUCION PROPIA"
msgstr "DISTRIBUCION PROPIA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__18
msgid "DISTRIBUCION RED"
msgstr "DISTRIBUCION RED"
@@ -235,86 +289,154 @@ msgid "Date From"
msgstr "Fecha desde"
#. module: delivery_gls_asm
-#: model:ir.model,name:delivery_gls_asm.model_delivery_carrier
-msgid "Delivery Methods"
-msgstr "Métodos de envío"
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__destroyed
+msgid "Destruido por orden del cliente"
+msgstr ""
#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__return_agency
+msgid "Devuelta"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__return_customer
+msgid "Devuelta al cliente"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__display_name
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__25
msgid "EASYBAG"
msgstr "EASYBAG"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__37
msgid "ECONOMY"
msgstr "ECONOMY"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__54
msgid "EURO ESTANDAR"
msgstr "EURO ESTANDAR"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__22
msgid "EURO SMALL"
msgstr "EURO SMALL"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__74
msgid "EUROBUSINESS PARCEL"
msgstr "EUROBUSINESS PARCEL"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__76
msgid "EUROBUSINESS SMALL PARCEL"
msgstr "EUROBUSINESS SMALL PARCEL"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__18
msgid "EconomyParcel"
msgstr "EconomyParcel"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__agency_transit
+msgid "En delegación destino"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__origin
+msgid "En delegación origen"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__returning
+msgid "En devolución"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__in_platform
+msgid "En plataforma de destino"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__shipping
+msgid "En reparto"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__transit
+msgid "En tránsito al destino"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__13
msgid "Ent. Pto. ASM"
msgstr "Ent. Pto. ASM"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,delivery_type:0
-msgid "Fixed Price"
-msgstr "Fixed Price"
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__cancel_returned
+msgid "Entrega anulada (devuelta)"
+msgstr ""
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__partially_delivered
+msgid "Entrega parcial"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__delivered
+msgid "Entregado"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__parcelshop
+msgid "Entregado en ASM PARCELSHOP"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_shipment_state
+msgid "Estado envío GLS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_pickup_state
+msgid "Estado recogida GLS"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__9
msgid "Franja Horaria"
msgstr "Franja Horaria"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__21
msgid "GLASS"
msgstr "GLASS"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,delivery_type:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__delivery_type__gls_asm
msgid "GLS ASM"
msgstr "GLS ASM"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
msgid ""
"GLS ASM API doesn't provide methods to compute delivery rates, so\n"
-" you should relay on another price method instead or override this\n"
+" you should relay on another price method instead or override "
+"this\n"
" one in your custom code."
-msgstr "La API de GLS ASM no proporciona métodos para calcular las tasas"
-"de entrega, por lo que debe confiar en otro método de precio en"
-"su lugar o anular este uno en su código personalizado."
+msgstr ""
+"La API de GLS ASM no proporciona métodos para calcular las tasasde entrega, "
+"por lo que debe confiar en otro método de precio ensu lugar o anular este "
+"uno en su código personalizado."
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_public_tracking_ref
@@ -322,7 +444,7 @@ msgid "GLS Barcode"
msgstr "Código de barras GLS"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:204
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
msgid "GLS Cancellation failed with reason: %s"
msgstr "La cancelación de GLS falló por esta causa: %s"
@@ -337,19 +459,13 @@ msgstr "Configuración GLS"
msgid "GLS Deliveries Manifest"
msgstr "Manifiesto de Envíos GLS"
-#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:210
-#, python-format
-msgid "GLS Expedition with reference %s cancelled"
-msgstr "Expedición GLS con referencia %s cancelada"
-
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
msgid "GLS Label"
msgstr "Etiqueta GLS"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:245
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#: model:ir.actions.act_window,name:delivery_gls_asm.action_delivery_gls_asm_manifest_wizard
#: model:ir.actions.report,name:delivery_gls_asm.gls_asm_manifest_report
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
@@ -360,8 +476,8 @@ msgstr "Manifiesto GLS"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
-msgid "GLS Pickup extra info: Tracking number: %s"
-msgstr "Información adicional de la recogida GLS: Número de seguimiento: %s"
+msgid "GLS Pickup extra info: Tracking number: %s Bultos: %s"
+msgstr ""
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_service
@@ -370,7 +486,7 @@ msgid "GLS Service"
msgstr "Servicio GLS"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/delivery_carrier.py:160
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
msgid ""
"GLS Shipping extra info:\n"
@@ -385,13 +501,13 @@ msgid "GLS UID"
msgstr "UID GLS"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/stock_picking.py:27
+#: code:addons/delivery_gls_asm/models/stock_picking.py:0
#, python-format
msgid "GLS label for %s"
msgstr "Etiqueta GLS para% s"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:297
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
"GLS returned an error trying to record the shipping for {}.\n"
@@ -403,7 +519,18 @@ msgstr ""
"{}"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:318
+#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
+#, python-format
+msgid ""
+"GLS-ASM API doesn't admit a reference number higher than 15 characters. In "
+"order to handle it, they trim thereference and as the reference is unique to "
+"every customer we soon would have duplicated reference collisions. To "
+"prevent this, you should edit your picking sequence to a max of 15 "
+"characters."
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
"GLS: No response from server getting state from ref {}.\n"
@@ -416,7 +543,7 @@ msgstr ""
"{}"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:347
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
"GLS: No response from server printing label with ref {}.\n"
@@ -439,47 +566,54 @@ msgid "Get the GLS Manifest for the given date range"
msgstr "Obtener el Manifiesto de GLS para el rango de fechas indicado"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__recorded
+msgid "Grabado"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__11
msgid "IBEX"
msgstr "IBEX"
#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__id
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__id
msgid "ID"
msgstr "ID"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__34
msgid "INT PAQUET"
msgstr "INT PAQUET"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__55
msgid "INTERC. EUROESTANDAR"
msgstr "INTERC. EUROESTANDAR"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__7
msgid "INTERDIA"
msgstr "INTERDIA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__13
msgid "INTERNACIONAL ECONOMY"
msgstr "INTERNACIONAL ECONOMY"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__12
msgid "INTERNACIONAL EXPRESS"
msgstr "INTERNACIONAL EXPRESS"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__36
msgid "Int. WEB"
msgstr "Int. WEB"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py:28
+#: code:addons/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py:0
#, python-format
msgid ""
"It wasn't possible to get the manifest. Maybe there aren'tdeliveries for the "
@@ -489,17 +623,9 @@ msgstr ""
"fecha seleccionada."
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_request
-msgid "Last GLS xml request"
-msgstr "Última solicitud xml de GLS"
-
-#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_last_response
-msgid "Last GLS xml response"
-msgstr "Última respuesta xml de GLS"
-
-#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier____last_update
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
@@ -514,7 +640,7 @@ msgid "Last Updated on"
msgstr "Última actualización el"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__53
msgid "MR1"
msgstr "MR1"
@@ -524,17 +650,27 @@ msgid "Manifest"
msgstr "Manifiesto"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__manifested
+msgid "Manifestada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__10
msgid "Maritimo"
msgstr "Maritimo"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__4
msgid "Masivo"
msgstr "Masivo"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:404
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__not_done
+msgid "No Realizada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
"No response from server getting manifisto for GLS.\n"
@@ -546,7 +682,7 @@ msgstr ""
"{}"
#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:286
+#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
"No response from server recording GLS delivery {}.\n"
@@ -558,27 +694,27 @@ msgstr ""
"{}"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__19
msgid "OPERACIONES RED"
msgstr "OPERACIONES RED"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__24
msgid "OPTIPLUS"
msgstr "OPTIPLUS"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__15
msgid "OTROS PUENTES"
msgstr "OTROS PUENTES"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__23
msgid "PREPAGO"
msgstr "PREPAGO"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__16
msgid "PROPIO AGENTE"
msgstr "PROPIO AGENTE"
@@ -588,17 +724,42 @@ msgid "Packages"
msgstr "Bultos"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__19
#, fuzzy
msgid "ParcelShop"
msgstr "ParcelShop"
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__pending
+msgid "Pendiente Gestión"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__held
+msgid "Pendiente autorización"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__pending
+msgid "Pendiente datos en delegación"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__pending_auth
+msgid "Pending Autorización"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_carrier_is_pickup_service
msgid "Pick-up service"
msgstr "Servicio de recogida"
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__possible_return
+msgid "Posible devolución"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_postage_type
msgid "Postage Type"
@@ -610,7 +771,12 @@ msgid "Postage type, usually 'Prepaid'"
msgstr "Tipo de envío, normalmente 'Portes pagados'"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_postage_type:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__preconfirmed
+msgid "Preconfirmada enrega"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_postage_type__p
msgid "Prepaid"
msgstr "Portes pagados"
@@ -620,133 +786,168 @@ msgid "Provider"
msgstr "Proveedor"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__58
#, fuzzy
msgid "RC. PARCEL SHOP"
msgstr "RC. PARCEL SHOP"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__32
msgid "RC.SELLADA"
msgstr "RC.SELLADA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__39
msgid "REC. INT"
msgstr "REC. INT"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__51
msgid "REC. INT WW"
msgstr "REC. INT WW"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__57
msgid "REC. INTERCIUDAD ECONOMY"
msgstr "REC. ECONOMÍA INTERCIUDAD"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__33
msgid "RECANALIZA"
msgstr "RECANALIZA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__7
msgid "RECOGIDA"
msgstr "RECOGIDA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__8
msgid "RECOGIDA CRUZADA"
msgstr "RECOGIDA CRUZADA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__56
msgid "RECOGIDA ECONOMY"
msgstr "ECONOMÍA RECOGIDA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__48
msgid "RECOGIDA MEN. CAMION"
msgstr "RECOGIDA MEN. CAMIÓN"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__47
msgid "RECOGIDA MEN. F.GRANDE"
msgstr "RECOGIDA MEN. F.GRANDE"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__46
msgid "RECOGIDA MEN. FURGONETA"
msgstr "RECOGIDA MEN. FURGONETA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__45
msgid "RECOGIDA MEN. MOTO"
msgstr "RECOGIDA MEN. MOTO"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__49
msgid "RECOGIDA MENSAJERO"
msgstr "RECOGIDA MENSAJERO"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__17
msgid "RECOGIDA SIN MERCANCIA"
msgstr "RECOGIDA SIN MERCANCIA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__10
msgid "RETORNO"
msgstr "RETORNO"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__incidence
+msgid "Realizada con Incidencia"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__done
+msgid "Realizada con éxito"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__11
msgid "Rec. en NAVE."
msgstr "Rec. en NAVE."
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__extinguished
+msgid "Recanalizada (A extinguir)"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__picked_up_agency
+msgid "Recepcionada en Agencia"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__received
+msgid "Recibida"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__picked_up_customer
+msgid "Recogido en Cliente"
+msgstr ""
+
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.gls_asm_manifest_report_view
msgid "Ref."
msgstr "Ref."
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__held_order
+msgid "Retenido por orden de paga"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__44
msgid "SERVICIO LOCAL"
msgstr "SERVICIO LOCAL"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__43
msgid "SERVICIO LOCAL CAMION"
msgstr "SERVICIO LOCAL CAMIÓN"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__42
msgid "SERVICIO LOCAL F. GRANDE"
msgstr "SERVICIO LOCAL F. GRANDE"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__41
msgid "SERVICIO LOCAL FURGONETA"
msgstr "SERVICIO LOCAL FURGONETA"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__40
msgid "SERVICIO LOCAL MOTO"
msgstr "SERVICIO LOCAL MOTO"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__50
msgid "SERVICIOS ESPECIALES"
msgstr "SERVICIOS ESPECIALES"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__38
msgid "SERVICIOS RUTAS"
msgstr "SERVICIOS RUTAS"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_shiptime:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__5
msgid "SaturdayService"
msgstr "Servicio Sábado"
@@ -766,9 +967,9 @@ msgid "Set the desired GLS shipping time for this carrier"
msgstr "Establezca el tiempo de envío de las opciones de GLS"
#. module: delivery_gls_asm
-#: selection:delivery.carrier,delivery_type:0
-msgid "Seur"
-msgstr "Seur"
+#: model:ir.model,name:delivery_gls_asm.model_delivery_carrier
+msgid "Shipping Methods"
+msgstr ""
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_shiptime
@@ -776,9 +977,14 @@ msgid "Shipping Time"
msgstr "Tiempo de envío"
#. module: delivery_gls_asm
-#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_delivery_carrier_form
-msgid "Technical"
-msgstr "Técnico"
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__recorded
+msgid "Solicitada"
+msgstr ""
+
+#. module: delivery_gls_asm
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_shipment_state__requested_return
+msgid "Solicitud de devolución"
+msgstr ""
#. module: delivery_gls_asm
#: model:ir.model,name:delivery_gls_asm.model_stock_picking
@@ -792,18 +998,12 @@ msgid ""
"Unable to cancel GLS Expedition with reference {} as it is in state {}.\n"
"Please manage the cancellation of this shipment/pickup with GLS via email."
msgstr ""
-"No es posible cancelar la expedición GLS con la reference {} ya que está"
-"en el estado {}. \nPor favor gestonia la cancelación de este envío/recogida"
-" con GLS por correo."
-
-#. module: delivery_gls_asm
-#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_request
-#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_last_response
-msgid "Used for issues debugging"
-msgstr "Se utiliza para la depuración de problemas"
+"No es posible cancelar la expedición GLS con la reference {} ya que estáen "
+"el estado {}. \n"
+"Por favor gestonia la cancelación de este envío/recogida con GLS por correo."
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__2
msgid "VALIJA"
msgstr "VALIJA"
@@ -818,10 +1018,41 @@ msgid "ZIP Code"
msgstr "C.P."
#. module: delivery_gls_asm
-#: selection:delivery.carrier,gls_asm_service:0
+#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__35
msgid "dPRO"
msgstr "dPRO"
+#~ msgid "Based on Rules"
+#~ msgstr "En base a reglas"
+
+#~ msgid "Delivery Methods"
+#~ msgstr "Métodos de envío"
+
+#~ msgid "Fixed Price"
+#~ msgstr "Fixed Price"
+
+#~ msgid "GLS Expedition with reference %s cancelled"
+#~ msgstr "Expedición GLS con referencia %s cancelada"
+
+#~ msgid "GLS Pickup extra info: Tracking number: %s"
+#~ msgstr ""
+#~ "Información adicional de la recogida GLS: Número de seguimiento: %s"
+
+#~ msgid "Last GLS xml request"
+#~ msgstr "Última solicitud xml de GLS"
+
+#~ msgid "Last GLS xml response"
+#~ msgstr "Última respuesta xml de GLS"
+
+#~ msgid "Seur"
+#~ msgstr "Seur"
+
+#~ msgid "Technical"
+#~ msgstr "Técnico"
+
+#~ msgid "Used for issues debugging"
+#~ msgstr "Se utiliza para la depuración de problemas"
+
#~ msgid "Carrier"
#~ msgstr "Transportista"
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index ba6a3fd06cd..3c4b2e8340a 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -243,6 +243,17 @@ def gls_asm_send_shipping(self, pickings):
for picking in pickings:
if picking.carrier_id.gls_is_pickup_service:
continue
+ if len(picking.name) > 15:
+ raise UserError(
+ _(
+ "GLS-ASM API doesn't admit a reference number higher than "
+ "15 characters. In order to handle it, they trim the"
+ "reference and as the reference is unique to every "
+ "customer we soon would have duplicated reference "
+ "collisions. To prevent this, you should edit your picking "
+ "sequence to a max of 15 characters."
+ )
+ )
vals = self._prepare_gls_asm_shipping(picking)
vals.update({"tracking_number": False, "exact_price": 0})
response = gls_request._send_shipping(vals)
diff --git a/delivery_gls_asm/tests/test_delivery_gls_asm.py b/delivery_gls_asm/tests/test_delivery_gls_asm.py
index 240b26bab9b..29de04f3f74 100644
--- a/delivery_gls_asm/tests/test_delivery_gls_asm.py
+++ b/delivery_gls_asm/tests/test_delivery_gls_asm.py
@@ -50,6 +50,9 @@ def test_01_gls_picking_confirm_simple(self):
# unique key that doesn't collide with any CI around, as every test really
# records an expedition
self.picking.name = "ODOO-TEST-{}".format(time.time())
+ with self.assertRaises(UserError):
+ self.picking.button_validate()
+ self.picking.name = "ODOO-{}".format(int(time.time()))
self.picking.button_validate()
self.assertTrue(self.picking.carrier_tracking_ref)
self.assertTrue(self.picking.gls_asm_public_tracking_ref)
From ceeb711b4e2d1123d400e92d6cfc42722ed15596 Mon Sep 17 00:00:00 2001
From: Ethan Hildick
Date: Fri, 1 Apr 2022 11:51:25 +0200
Subject: [PATCH 21/48] =?UTF-8?q?[14.0][IMP]=20delivery=5Fgls=5Fasm:=20Ref?=
=?UTF-8?q?erencia=20albar=C3=A1n?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
delivery_gls_asm/i18n/delivery_gls_asm.pot | 5 +++++
delivery_gls_asm/i18n/es.po | 5 +++++
delivery_gls_asm/models/delivery_carrier.py | 23 +++++++++++++++++++--
delivery_gls_asm/models/stock_picking.py | 3 +++
4 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index 4421738d8c8..c7a8f04149c 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -448,6 +448,11 @@ msgstr ""
msgid "GLS Deliveries Manifest"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_picking_ref
+msgid "GLS Picking Reference"
+msgstr ""
+
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
msgid "GLS Label"
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index 66c5235b97d..ec8d50c0bd5 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -459,6 +459,11 @@ msgstr "Configuración GLS"
msgid "GLS Deliveries Manifest"
msgstr "Manifiesto de Envíos GLS"
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_picking_ref
+msgid "GLS Picking Reference"
+msgstr "Referencia albarán GLS"
+
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
msgid "GLS Label"
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index 3c4b2e8340a..35ab30f7d77 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -268,7 +268,21 @@ def gls_asm_send_shipping(self, pickings):
# For compatibility we provide this number although we get
# two more codes: codbarras and uid
vals["tracking_number"] = response.get("_codexp")
- picking.gls_asm_public_tracking_ref = response.get("_codbarras")
+ gls_asm_picking_ref = ""
+ try:
+ references = response.get("Referencias", {}).get("Referencia", [])
+ for ref in references:
+ if ref.get("_tipo", "") == "N":
+ gls_asm_picking_ref = ref.get("value", "")
+ break
+ except Exception:
+ pass
+ picking.write(
+ {
+ "gls_asm_public_tracking_ref": response.get("_codbarras"),
+ "gls_asm_picking_ref": gls_asm_picking_ref,
+ }
+ )
# We post an extra message in the chatter with the barcode and the
# label because there's clean way to override the one sent by core.
body = _("GLS Shipping extra info:\n" "barcode: %s") % response.get(
@@ -411,7 +425,12 @@ def gls_asm_cancel_shipment(self, pickings):
)
picking.message_post(body=msg)
continue
- picking.gls_asm_public_tracking_ref = False
+ picking.write(
+ {
+ "gls_asm_public_tracking_ref": False,
+ "gls_asm_picking_ref": False,
+ }
+ )
self.gls_asm_tracking_state_update(picking=picking)
def gls_asm_rate_shipment(self, order):
diff --git a/delivery_gls_asm/models/stock_picking.py b/delivery_gls_asm/models/stock_picking.py
index ddf934b5eeb..545ae67ab53 100644
--- a/delivery_gls_asm/models/stock_picking.py
+++ b/delivery_gls_asm/models/stock_picking.py
@@ -11,6 +11,9 @@ class StockPicking(models.Model):
gls_asm_public_tracking_ref = fields.Char(
string="GLS Barcode", readonly=True, copy=False
)
+ gls_asm_picking_ref = fields.Char(
+ string="GLS Picking Reference", readonly=True, copy=False
+ )
gls_carrier_is_pickup_service = fields.Boolean(
related="carrier_id.gls_is_pickup_service"
)
From bd25f0d2e7db9ab1697fc5a438be58bcf8ac0644 Mon Sep 17 00:00:00 2001
From: Ethan Hildick
Date: Thu, 7 Apr 2022 14:02:26 +0200
Subject: [PATCH 22/48] [14.0][IMP] delivery_gls_asm: Cash on delivery
---
delivery_gls_asm/i18n/delivery_gls_asm.pot | 5 +++++
delivery_gls_asm/i18n/es.po | 5 +++++
delivery_gls_asm/models/delivery_carrier.py | 13 ++++++++++++-
delivery_gls_asm/views/delivery_asm_view.xml | 1 +
4 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index c7a8f04149c..d906f6d5d6f 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -196,6 +196,11 @@ msgstr ""
msgid "Cash On Delivery"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_cash_on_delivery
+msgid "Cash on delivery"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__closed
msgid "Cerrado"
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index ec8d50c0bd5..3ffdc4fcd7a 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -205,6 +205,11 @@ msgstr "Cancelar"
msgid "Cash On Delivery"
msgstr "Portes debidos"
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_cash_on_delivery
+msgid "Cash on delivery"
+msgstr "Contra reembolso"
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__closed
msgid "Cerrado"
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index 35ab30f7d77..d6907b42657 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -47,6 +47,14 @@ class DeliveryCarrier(models.Model):
help="Checked if this service is used for pickups",
compute="_compute_gls_pickup_service",
)
+ gls_asm_cash_on_delivery = fields.Boolean(
+ string="Cash on delivery",
+ help=(
+ "If checked, it means that the carrier is paid with cash. It assumes "
+ "there is a sale order linked and it will use that "
+ "total amount as the value to be paid"
+ ),
+ )
@api.depends("gls_asm_service")
def _compute_gls_pickup_service(self):
@@ -100,6 +108,9 @@ def _prepare_gls_asm_shipping(self, picking):
)
if not sender_partner.street:
raise UserError(_("Couldn't find the sender street"))
+ cash_amount = 0
+ if self.gls_asm_cash_on_delivery:
+ cash_amount = picking.sale_id.amount_total
return {
"fecha": fields.Date.today().strftime("%d/%m/%Y"),
"portes": self.gls_asm_postage_type,
@@ -155,7 +166,7 @@ def _prepare_gls_asm_shipping(self, picking):
), # Our unique reference
"referencia_0": "", # Not used if the above is set
"importes_debido": "0", # The customer pays the shipping
- "importes_reembolso": "", # TODO: Support Cash On Delivery
+ "importes_reembolso": cash_amount or "",
"seguro": "0", # [optional]
"seguro_descripcion": "", # [optional]
"seguro_importe": "", # [optional]
diff --git a/delivery_gls_asm/views/delivery_asm_view.xml b/delivery_gls_asm/views/delivery_asm_view.xml
index 2a83500b3c2..21c8f1d5c52 100644
--- a/delivery_gls_asm/views/delivery_asm_view.xml
+++ b/delivery_gls_asm/views/delivery_asm_view.xml
@@ -29,6 +29,7 @@
name="gls_asm_postage_type"
attrs="{'required': [('delivery_type', '=', 'gls_asm'), ('prod_environment', '!=', False)]}"
/>
+
From 97214cd6de9bdd66be920cd58f78b820d3e78fee Mon Sep 17 00:00:00 2001
From: david
Date: Tue, 10 May 2022 11:30:02 +0200
Subject: [PATCH 23/48] [IMP] delivery_gls_asm: master data
Add error codes meaning and rearrange master data in an independent
file.
TT34458
---
delivery_gls_asm/models/delivery_carrier.py | 4 +-
.../models/gls_asm_master_data.py | 325 +++++++++++++++++
delivery_gls_asm/models/gls_asm_request.py | 326 +-----------------
3 files changed, 329 insertions(+), 326 deletions(-)
create mode 100644 delivery_gls_asm/models/gls_asm_master_data.py
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index d6907b42657..0802e6f9b92 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -5,7 +5,7 @@
from odoo import _, api, fields, models
from odoo.exceptions import UserError
-from .gls_asm_request import (
+from .gls_asm_master_data import (
GLS_ASM_SERVICES,
GLS_DELIVERY_STATES_STATIC,
GLS_PICKUP_STATES_STATIC,
@@ -13,8 +13,8 @@
GLS_POSTAGE_TYPE,
GLS_SHIPMENT_TYPE_STATES,
GLS_SHIPPING_TIMES,
- GlsAsmRequest,
)
+from .gls_asm_request import GlsAsmRequest
class DeliveryCarrier(models.Model):
diff --git a/delivery_gls_asm/models/gls_asm_master_data.py b/delivery_gls_asm/models/gls_asm_master_data.py
new file mode 100644
index 00000000000..26010ecef9e
--- /dev/null
+++ b/delivery_gls_asm/models/gls_asm_master_data.py
@@ -0,0 +1,325 @@
+# Copyright 2020 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+GLS_ASM_SERVICES = [
+ ("1", "COURIER"),
+ ("2", "VALIJA"),
+ ("5", "BICI"),
+ ("6", "CARGA"),
+ ("7", "RECOGIDA"),
+ ("8", "RECOGIDA CRUZADA"),
+ ("9", "DEVOLUCION"),
+ ("10", "RETORNO"),
+ ("11", "IBEX"),
+ ("12", "INTERNACIONAL EXPRESS"),
+ ("13", "INTERNACIONAL ECONOMY"),
+ ("14", "DISTRIBUCION PROPIA"),
+ ("15", "OTROS PUENTES"),
+ ("16", "PROPIO AGENTE"),
+ ("17", "RECOGIDA SIN MERCANCIA"),
+ ("18", "DISTRIBUCION RED"),
+ ("19", "OPERACIONES RED"),
+ ("20", "CARGA MARITIMA"),
+ ("21", "GLASS"),
+ ("22", "EURO SMALL"),
+ ("23", "PREPAGO"),
+ ("24", "OPTIPLUS"),
+ ("25", "EASYBAG"),
+ ("26", "CORREO INTERNO"),
+ ("27", "14H SOBRES"),
+ ("28", "24H SOBRES"),
+ ("29", "72H SOBRES"),
+ ("30", "ASM0830"),
+ ("31", "CAN MUESTRAS"),
+ ("32", "RC.SELLADA"),
+ ("33", "RECANALIZA"),
+ ("34", "INT PAQUET"),
+ ("35", "dPRO"),
+ ("36", "Int. WEB"),
+ ("37", "ECONOMY"),
+ ("38", "SERVICIOS RUTAS"),
+ ("39", "REC. INT"),
+ ("40", "SERVICIO LOCAL MOTO"),
+ ("41", "SERVICIO LOCAL FURGONETA"),
+ ("42", "SERVICIO LOCAL F. GRANDE"),
+ ("43", "SERVICIO LOCAL CAMION"),
+ ("44", "SERVICIO LOCAL"),
+ ("45", "RECOGIDA MEN. MOTO"),
+ ("46", "RECOGIDA MEN. FURGONETA"),
+ ("47", "RECOGIDA MEN. F.GRANDE"),
+ ("48", "RECOGIDA MEN. CAMION"),
+ ("49", "RECOGIDA MENSAJERO"),
+ ("50", "SERVICIOS ESPECIALES"),
+ ("51", "REC. INT WW"),
+ ("52", "COMPRAS"),
+ ("53", "MR1"),
+ ("54", "EURO ESTANDAR"),
+ ("55", "INTERC. EUROESTANDAR"),
+ ("56", "RECOGIDA ECONOMY"),
+ ("57", "REC. INTERCIUDAD ECONOMY"),
+ ("58", "RC. PARCEL SHOP"),
+ ("59", "ASM BUROFAX"),
+ ("60", "ASM GO"),
+ ("66", "ASMTRAVELLERS"),
+ ("74", "EUROBUSINESS PARCEL"),
+ ("76", "EUROBUSINESS SMALL PARCEL"),
+]
+
+GLS_SHIPPING_TIMES = [
+ ("0", "10:00 Service"),
+ ("2", "14:00 Service"),
+ ("3", "BusinessParcel"),
+ ("5", "SaturdayService"),
+ ("7", "INTERDIA"),
+ ("9", "Franja Horaria"),
+ ("4", "Masivo"),
+ ("10", "Maritimo"),
+ ("11", "Rec. en NAVE."),
+ ("13", "Ent. Pto. ASM"),
+ ("18", "EconomyParcel"),
+ ("19", "ParcelShop"),
+]
+
+GLS_POSTAGE_TYPE = [("P", "Prepaid"), ("D", "Cash On Delivery")]
+
+GLS_DELIVERY_STATES_STATIC = {
+ "-10": "shipping_recorded_in_carrier", # GRABADO
+ "0": "shipping_recorded_in_carrier", # MANIFESTADA
+ "2": "in_transit", # EN TRANSITO A DESTINO
+ "3": "in_transit", # EN DELEGACION DESTINO
+ "20": "incidence", # PERDIDA / ROTURA
+ "5": "canceled_shipment", # ANULADA
+ "6": "in_transit", # EN REPARTO
+ "7": "customer_delivered", # ENTREGADO
+ "8": "customer_delivered", # ENTREGA PARCIAL
+ "9": "in_transit", # ALMACENADO
+ "10": "incidence", # DEVUELTA
+ "11": "incidence", # PENDIENTE DATOS, EN DELEGACION
+ "1": "incidence", # RETENIDA EN DELEGACION
+ "91": "incidence", # CON INCIDENCIA
+ "90": "incidence", # CERRADO DEFINITIVO
+ "50": "in_transit", # PRECONFIRMADA ENTREGA
+ "51": "incidence", # ENTREGA ANULADA (DEVUELTA)
+ "12": "incidence", # DEVUELTA AL CLIENTE
+ "13": "incidence", # POSIBLE DEVOLUCION
+ "14": "incidence", # SOLICITUD DE DEVOLUCION
+ "15": "incidence", # EN DEVOLUCION
+ "16": "in_transit", # EN DELEGACION ORIGEN
+ "17": "incidence", # DESTRUIDO POR ORDEN DEL CLIENTE
+ "18": "incidence", # RETENIDO POR ORDEN DE PAGA
+ "19": "in_transit", # EN PLATAFORMA DE DESTINO
+ "21": "incidence", # RECANALIZADA (A EXTINGUIR)
+ "22": "in_transit", # ENTREGADO EN ASM PARCELSHOP
+ "25": "in_transit", # ASM PARCELSHOP CONFIRMA RECEPCION
+}
+
+GLS_SHIPMENT_TYPE_STATES = {
+ "-10": "recorded", # GRABADO
+ "0": "manifested", # MANIFESTADA
+ "2": "transit", # EN TRANSITO A DESTINO
+ "3": "agency_transit", # EN DELEGACION DESTINO
+ "20": "closed", # CERRADO POR SINIESTRO
+ "5": "cancel", # ANULADA
+ "6": "shipping", # EN REPARTO
+ "7": "delivered", # ENTREGADO
+ "8": "partially_delivered", # ENTREGA PARCIAL
+ "9": "warehouse", # ALMACENADO
+ "10": "return_agency", # DEVUELTA
+ "11": "pending", # PENDIENTE DATOS. EN DELEGACIÓN
+ "1": "held", # PENDIENTE AUTORIZACIÓN
+ "91": "incidence", # CON INCIDENCIA
+ "90": "closed_final", # CERRADO DEFINITIVO
+ "50": "preconfirmed", # PRECONFIRMADA ENTREGA
+ "51": "cancel_returned", # ENTREGA ANULADA (DEVUELTA)
+ "12": "return_customer", # DEVUELTA AL CLIENTE
+ "13": "possible_return", # POSIBLE DEVOLUCIÓN
+ "14": "requested_return", # SOLICITUD DE DEVOLUCIÓN
+ "15": "returning", # EN DEVOLUCIÓN
+ "16": "origin", # EN DELEGACIÓN ORIGEN
+ "17": "destroyed", # DESTRUIDO POR ORDEN DEL CLIENTE
+ "18": "held_order", # RETENIDO POR ORDEN DE PAGA
+ "19": "in_platform", # EN PLATAFORMA DE DESTINO
+ "21": "extinguished", # RECANALIZADA (A EXTINGUIR)
+ "22": "parcelshop", # ENTREGADO EN ASM PARCELSHOP,
+ "25": "parcelshop_confirm", # ASM PARCELSHOP CONFIRMA RECEPCIÓN
+}
+
+GLS_PICKUP_STATES_STATIC = {
+ "0": "canceled_shipment", # ANULADA
+ "1": "shipping_recorded_in_carrier", # SOLICITADA
+ "2": "customer_delivered", # REALIZADA CON ÉXITO
+ "3": "in_transit", # NO REALIZADA
+ "4": "customer_delivered", # RECIBIDA
+ "5": "incidence", # REALIZADA CON INCIDENCIA
+ "6": "in_transit", # RECOGIDO EN CLIENTE
+ "7": "in_transit", # RECEPCIONADA EN AGENCIA
+ "9": "shipping_recorded_in_carrier", # ASIGNADA
+ "10": "shipping_recorded_in_carrier", # A PRECONFIRMAR
+ "11": "shipping_recorded_in_carrier", # PENDIENTE GESTIÓN
+ "12": "customer_delivered", # CERRADO
+ "13": "shipping_recorded_in_carrier", # PENDIENTE AUTORIZACIÓN
+ "20": "customer_delivered", # CERRADO DEFINITIVO
+}
+
+GLS_PICKUP_TYPE_STATES = {
+ "0": "cancel", # ANULADA
+ "1": "recorded", # SOLICITADA
+ "2": "done", # REALIZADA CON ÉXITO
+ "3": "not_done", # NO REALIZADA
+ "4": "received", # RECIBIDA
+ "5": "incidence", # REALIZADA CON INCIDENCIA
+ "6": "picked_up_customer", # RECOGIDO EN CLIENTE
+ "7": "picked_up_agency", # RECEPCIONADA EN AGENCIA
+ "9": "assigned", # ASIGNADA
+ "10": "preconfirm", # A PRECONFIRMAR
+ "11": "pending", # PENDIENTE GESTIÓN
+ "12": "closed", # CERRADO
+ "13": "pending_auth", # PENDIENTE AUTORIZACIÓN
+ "20": "closed_final", # CERRADO DEFINITIVO
+}
+
+GLS_SHIPMENT_ERROR_CODES = {
+ 36: "Error, Consignee Zipcode, wrong format.",
+ 38: "Error, Invalid consignee phone number.",
+ -36: "Error, Consignee Zipcode, wrong format.",
+ -38: "Error, Invalid consignee phone number.",
+ -1: (
+ "Exception. Timeout expired."
+ "Se ha forzado la interrupcion de una conexion existente por el host remoto."
+ ),
+ -3: "Error, The barcode of the shipment already exists.",
+ -33: """Error, Various reasons:
+ Cp destino no existe o no es de esa plaza
+ El reembolso debe ser mayor o igual a 0
+ Este contrato de valija no existe/esta dado de baja
+ Formato de codigo de barras no reconocido
+ Fecha expedición anterior a hoy
+ Los bultos no pueden ser 0 o negativos
+ No estas autorizado a grabar envíos de ese cliente
+ Sin tienda ps y horario ps
+ El servicio / horario es incorrecto""",
+ -48: "Error, EuroEstandar/EBP service: the number of parcels should always be 1.",
+ -49: "Error, EuroEstandar/EBP service: weight should be <= 31.5 kgs ().",
+ -50: "Error, EuroEstandar/EBP service: there can be no RCS (return stamped copy).",
+ -51: "Error, EuroEstandar/EBP service: there can be no SWAP ().",
+ -52: (
+ "Error, EuroEstandar/EBP service:"
+ "reported a country that is not included on the service."
+ ),
+ -53: (
+ "Error, EuroEstandar/EBP service:"
+ "agency is not authorized to insert EuroEstandar/EBP service."
+ ),
+ -54: (
+ "Error, EuroEstandar/EBP service:"
+ "The consignee mail address is required (.)."
+ ),
+ -55: (
+ "Error, EuroEstandar/EBP service:"
+ "The consignee mobile phone is required (.)."
+ ),
+ -57: (
+ "Error, EuroEstandar/EBP service:"
+ "reported a country that is not included on the service (.)."
+ ),
+ -69: "Error, I can not Channeling, wrong consignee zipcode.",
+ -70: "Error, The order number already exists to this date and customer code.",
+ -80: "EuroBusiness shipments. A mandatory field is missing.",
+ -81: "EuroBusiness shipments. A wrong format is transmitted in field.",
+ -82: (
+ "EuroBusiness shipments."
+ "Wrong zipcode /wrong country code."
+ "Error in zip code or its format, "
+ "and maybe a bad combination of city and zip code."
+ ),
+ -83: (
+ "EuroBusiness shipments."
+ "GLS internal error."
+ "No free parcel number is available within the range."
+ ),
+ -84: (
+ "EuroBusiness shipments."
+ "GLS internal error."
+ "A parameter is missing within the configuration file of the UNI-BOX."
+ ),
+ -85: "EuroBusiness shipments. Is not able to make the routing.",
+ -86: (
+ "EuroBusiness shipments."
+ "GLS internal error."
+ "A needed template-file cannot be found or opened."
+ ),
+ -87: "EuroBusiness shipments. GLS internal error. Duplicated sequence.",
+ -88: "EuroBusiness shipments. Other errors.",
+ -96: "Error, EBP service: Sequential error.",
+ -97: (
+ "Error, EuroEstandar/EBP service:"
+ " can't be 'D', can't be > 0."
+ ),
+ -99: "Warning, Webservices are temporarily out of service.",
+ -103: "Error, plaza solicita es null (alta).",
+ -104: "Error, plaza origen es null (alta).",
+ -106: "Error, CodCli es null (alta).",
+ -107: "Error, CodCliRed es null (alta).",
+ -108: "Error, Sender Name must be at least three characters.",
+ -109: "Error, Sender Address must be at least three characters.",
+ -110: "Error, Sender City must be at least three characters.",
+ -111: "Error, Sender Zipcode must be at least four characters.",
+ -117: "Error, los locales solo en la plaza de origen para la web.",
+ -118: "Error, customer reference is duplicated.",
+ -119: "Error, exception, uncontrolled error.",
+ -128: "Error, Consignee Name must be at least three characters.",
+ -129: "Error, Consignee Address must be at least three characters.",
+ -130: "Error, Consignee City must be at least three characters.",
+ -131: "Error, Consignee Zipcode must be at least four characters.",
+ -6565: "Error, Volume is incorrect, remember that the unit is m3.",
+}
+
+GLS_PICKUP_ERROR_CODES = {
+ -1: "Connection exception",
+ -103: "Impossible get the requesting agency",
+ -104: "Impossible get the origin agency.",
+ -105: "Collection date is empty o not informed.",
+ -106: "Impossible get the customer code (CodCli).",
+ -107: "Impossible get the CodCliRed.",
+ -108: "Collection name is empty or not informed.",
+ -109: "Collection Address name is empty or not informed.",
+ -110: "Collection City name is empty or not informed.",
+ -111: "Collection Zipcode is empty or not informed.",
+ -112: "Codsolicitud of agency is not valid.",
+ -113: "Generic zipcodes are not allowed.",
+ -114: "Collection interval must be greater than 2 hours.",
+ -115: "Minimum collection time is 8h.",
+ -116: "Maximum collection time is 22h.",
+ -117: "Los locales solo en la plaza de origen para la web.",
+ -118: "Customer reference is duplicated.",
+ -119: "Zonzoo no puede recoger en islas Portugal.",
+ -120: "Zipcode of consignee is incorrect.",
+ -122: "Login not exists or is deleted.",
+ -123: "Don't have permissions to insert on this agency.",
+ -125: "Can not ask a collect on festive.",
+ -126: (
+ "When country is not Spain (34) the Phone and Celullar are mandatory"
+ "(tags and inside )."
+ ),
+ -128: (
+ "It is mandatory to inform the Telephone or Email "
+ "where GLS must to collect (., . "
+ "or .)."
+ ),
+ -303: "Currency amounts must be allways greater than 0.",
+ -402: (
+ "If Amount of insured goods > 0 (in Seguro), "
+ "then tipo and descripcion are mandatory."
+ ),
+ -504: (
+ "Impossible get the last mile agency, "
+ "probably the consignee zipcode is wrong or not exists."
+ ),
+ -505: "Consignee name is not informed.",
+ -506: "Consignee address is not informed.",
+ -507: "Consignee city is not informed.",
+ -508: "Consignee zipcode is not informed.",
+ -602: "The reference must be informed.",
+ -603: "Shipment References, tipo not exists.",
+ -676: "Collection Zipcode is wrong, not exists.",
+}
diff --git a/delivery_gls_asm/models/gls_asm_request.py b/delivery_gls_asm/models/gls_asm_request.py
index d600cefd0c6..4042f700af2 100644
--- a/delivery_gls_asm/models/gls_asm_request.py
+++ b/delivery_gls_asm/models/gls_asm_request.py
@@ -7,6 +7,8 @@
from odoo import _
from odoo.exceptions import UserError
+from .gls_asm_master_data import GLS_PICKUP_ERROR_CODES, GLS_SHIPMENT_ERROR_CODES
+
_logger = logging.getLogger(__name__)
try:
@@ -17,330 +19,6 @@
_logger.debug(err)
-GLS_ASM_SERVICES = [
- ("1", "COURIER"),
- ("2", "VALIJA"),
- ("5", "BICI"),
- ("6", "CARGA"),
- ("7", "RECOGIDA"),
- ("8", "RECOGIDA CRUZADA"),
- ("9", "DEVOLUCION"),
- ("10", "RETORNO"),
- ("11", "IBEX"),
- ("12", "INTERNACIONAL EXPRESS"),
- ("13", "INTERNACIONAL ECONOMY"),
- ("14", "DISTRIBUCION PROPIA"),
- ("15", "OTROS PUENTES"),
- ("16", "PROPIO AGENTE"),
- ("17", "RECOGIDA SIN MERCANCIA"),
- ("18", "DISTRIBUCION RED"),
- ("19", "OPERACIONES RED"),
- ("20", "CARGA MARITIMA"),
- ("21", "GLASS"),
- ("22", "EURO SMALL"),
- ("23", "PREPAGO"),
- ("24", "OPTIPLUS"),
- ("25", "EASYBAG"),
- ("26", "CORREO INTERNO"),
- ("27", "14H SOBRES"),
- ("28", "24H SOBRES"),
- ("29", "72H SOBRES"),
- ("30", "ASM0830"),
- ("31", "CAN MUESTRAS"),
- ("32", "RC.SELLADA"),
- ("33", "RECANALIZA"),
- ("34", "INT PAQUET"),
- ("35", "dPRO"),
- ("36", "Int. WEB"),
- ("37", "ECONOMY"),
- ("38", "SERVICIOS RUTAS"),
- ("39", "REC. INT"),
- ("40", "SERVICIO LOCAL MOTO"),
- ("41", "SERVICIO LOCAL FURGONETA"),
- ("42", "SERVICIO LOCAL F. GRANDE"),
- ("43", "SERVICIO LOCAL CAMION"),
- ("44", "SERVICIO LOCAL"),
- ("45", "RECOGIDA MEN. MOTO"),
- ("46", "RECOGIDA MEN. FURGONETA"),
- ("47", "RECOGIDA MEN. F.GRANDE"),
- ("48", "RECOGIDA MEN. CAMION"),
- ("49", "RECOGIDA MENSAJERO"),
- ("50", "SERVICIOS ESPECIALES"),
- ("51", "REC. INT WW"),
- ("52", "COMPRAS"),
- ("53", "MR1"),
- ("54", "EURO ESTANDAR"),
- ("55", "INTERC. EUROESTANDAR"),
- ("56", "RECOGIDA ECONOMY"),
- ("57", "REC. INTERCIUDAD ECONOMY"),
- ("58", "RC. PARCEL SHOP"),
- ("59", "ASM BUROFAX"),
- ("60", "ASM GO"),
- ("66", "ASMTRAVELLERS"),
- ("74", "EUROBUSINESS PARCEL"),
- ("76", "EUROBUSINESS SMALL PARCEL"),
-]
-
-GLS_SHIPPING_TIMES = [
- ("0", "10:00 Service"),
- ("2", "14:00 Service"),
- ("3", "BusinessParcel"),
- ("5", "SaturdayService"),
- ("7", "INTERDIA"),
- ("9", "Franja Horaria"),
- ("4", "Masivo"),
- ("10", "Maritimo"),
- ("11", "Rec. en NAVE."),
- ("13", "Ent. Pto. ASM"),
- ("18", "EconomyParcel"),
- ("19", "ParcelShop"),
-]
-
-GLS_POSTAGE_TYPE = [("P", "Prepaid"), ("D", "Cash On Delivery")]
-
-GLS_DELIVERY_STATES_STATIC = {
- "-10": "shipping_recorded_in_carrier", # GRABADO
- "0": "shipping_recorded_in_carrier", # MANIFESTADA
- "2": "in_transit", # EN TRANSITO A DESTINO
- "3": "in_transit", # EN DELEGACION DESTINO
- "20": "incidence", # PERDIDA / ROTURA
- "5": "canceled_shipment", # ANULADA
- "6": "in_transit", # EN REPARTO
- "7": "customer_delivered", # ENTREGADO
- "8": "customer_delivered", # ENTREGA PARCIAL
- "9": "in_transit", # ALMACENADO
- "10": "incidence", # DEVUELTA
- "11": "incidence", # PENDIENTE DATOS, EN DELEGACION
- "1": "incidence", # RETENIDA EN DELEGACION
- "91": "incidence", # CON INCIDENCIA
- "90": "incidence", # CERRADO DEFINITIVO
- "50": "in_transit", # PRECONFIRMADA ENTREGA
- "51": "incidence", # ENTREGA ANULADA (DEVUELTA)
- "12": "incidence", # DEVUELTA AL CLIENTE
- "13": "incidence", # POSIBLE DEVOLUCION
- "14": "incidence", # SOLICITUD DE DEVOLUCION
- "15": "incidence", # EN DEVOLUCION
- "16": "in_transit", # EN DELEGACION ORIGEN
- "17": "incidence", # DESTRUIDO POR ORDEN DEL CLIENTE
- "18": "incidence", # RETENIDO POR ORDEN DE PAGA
- "19": "in_transit", # EN PLATAFORMA DE DESTINO
- "21": "incidence", # RECANALIZADA (A EXTINGUIR)
- "22": "in_transit", # ENTREGADO EN ASM PARCELSHOP
- "25": "in_transit", # ASM PARCELSHOP CONFIRMA RECEPCION
-}
-
-GLS_SHIPMENT_TYPE_STATES = {
- "-10": "recorded", # GRABADO
- "0": "manifested", # MANIFESTADA
- "2": "transit", # EN TRANSITO A DESTINO
- "3": "agency_transit", # EN DELEGACION DESTINO
- "20": "closed", # CERRADO POR SINIESTRO
- "5": "cancel", # ANULADA
- "6": "shipping", # EN REPARTO
- "7": "delivered", # ENTREGADO
- "8": "partially_delivered", # ENTREGA PARCIAL
- "9": "warehouse", # ALMACENADO
- "10": "return_agency", # DEVUELTA
- "11": "pending", # PENDIENTE DATOS. EN DELEGACIÓN
- "1": "held", # PENDIENTE AUTORIZACIÓN
- "91": "incidence", # CON INCIDENCIA
- "90": "closed_final", # CERRADO DEFINITIVO
- "50": "preconfirmed", # PRECONFIRMADA ENTREGA
- "51": "cancel_returned", # ENTREGA ANULADA (DEVUELTA)
- "12": "return_customer", # DEVUELTA AL CLIENTE
- "13": "possible_return", # POSIBLE DEVOLUCIÓN
- "14": "requested_return", # SOLICITUD DE DEVOLUCIÓN
- "15": "returning", # EN DEVOLUCIÓN
- "16": "origin", # EN DELEGACIÓN ORIGEN
- "17": "destroyed", # DESTRUIDO POR ORDEN DEL CLIENTE
- "18": "held_order", # RETENIDO POR ORDEN DE PAGA
- "19": "in_platform", # EN PLATAFORMA DE DESTINO
- "21": "extinguished", # RECANALIZADA (A EXTINGUIR)
- "22": "parcelshop", # ENTREGADO EN ASM PARCELSHOP,
- "25": "parcelshop_confirm", # ASM PARCELSHOP CONFIRMA RECEPCIÓN
-}
-
-GLS_PICKUP_STATES_STATIC = {
- "0": "canceled_shipment", # ANULADA
- "1": "shipping_recorded_in_carrier", # SOLICITADA
- "2": "customer_delivered", # REALIZADA CON ÉXITO
- "3": "in_transit", # NO REALIZADA
- "4": "customer_delivered", # RECIBIDA
- "5": "incidence", # REALIZADA CON INCIDENCIA
- "6": "in_transit", # RECOGIDO EN CLIENTE
- "7": "in_transit", # RECEPCIONADA EN AGENCIA
- "9": "shipping_recorded_in_carrier", # ASIGNADA
- "10": "shipping_recorded_in_carrier", # A PRECONFIRMAR
- "11": "shipping_recorded_in_carrier", # PENDIENTE GESTIÓN
- "12": "customer_delivered", # CERRADO
- "13": "shipping_recorded_in_carrier", # PENDIENTE AUTORIZACIÓN
- "20": "customer_delivered", # CERRADO DEFINITIVO
-}
-
-GLS_PICKUP_TYPE_STATES = {
- "0": "cancel", # ANULADA
- "1": "recorded", # SOLICITADA
- "2": "done", # REALIZADA CON ÉXITO
- "3": "not_done", # NO REALIZADA
- "4": "received", # RECIBIDA
- "5": "incidence", # REALIZADA CON INCIDENCIA
- "6": "picked_up_customer", # RECOGIDO EN CLIENTE
- "7": "picked_up_agency", # RECEPCIONADA EN AGENCIA
- "9": "assigned", # ASIGNADA
- "10": "preconfirm", # A PRECONFIRMAR
- "11": "pending", # PENDIENTE GESTIÓN
- "12": "closed", # CERRADO
- "13": "pending_auth", # PENDIENTE AUTORIZACIÓN
- "20": "closed_final", # CERRADO DEFINITIVO
-}
-
-GLS_SHIPMENT_ERROR_CODES = {
- 36: "Error, Consignee Zipcode, wrong format.",
- 38: "Error, Invalid consignee phone number.",
- -36: "Error, Consignee Zipcode, wrong format.",
- -38: "Error, Invalid consignee phone number.",
- -1: (
- "Exception. Timeout expired."
- "Se ha forzado la interrupcion de una conexion existente por el host remoto."
- ),
- -3: "Error, The barcode of the shipment already exists.",
- -33: """Error, Various reasons:
- Cp destino no existe o no es de esa plaza
- El reembolso debe ser mayor o igual a 0
- Este contrato de valija no existe/esta dado de baja
- Formato de codigo de barras no reconocido
- Fecha expedición anterior a hoy
- Los bultos no pueden ser 0 o negativos
- No estas autorizado a grabar envíos de ese cliente
- Sin tienda ps y horario ps
- El servicio / horario es incorrecto""",
- -48: "Error, EuroEstandar/EBP service: the number of parcels should always be 1.",
- -49: "Error, EuroEstandar/EBP service: weight should be <= 31.5 kgs ().",
- -50: "Error, EuroEstandar/EBP service: there can be no RCS (return stamped copy).",
- -51: "Error, EuroEstandar/EBP service: there can be no SWAP ().",
- -52: (
- "Error, EuroEstandar/EBP service:"
- "reported a country that is not included on the service."
- ),
- -53: (
- "Error, EuroEstandar/EBP service:"
- "agency is not authorized to insert EuroEstandar/EBP service."
- ),
- -54: (
- "Error, EuroEstandar/EBP service:"
- "The consignee mail address is required (.)."
- ),
- -55: (
- "Error, EuroEstandar/EBP service:"
- "The consignee mobile phone is required (.)."
- ),
- -57: (
- "Error, EuroEstandar/EBP service:"
- "reported a country that is not included on the service (.)."
- ),
- -69: "Error, I can not Channeling, wrong consignee zipcode.",
- -70: "Error, The order number already exists to this date and customer code.",
- -80: "EuroBusiness shipments. A mandatory field is missing.",
- -81: "EuroBusiness shipments. A wrong format is transmitted in field.",
- -82: (
- "EuroBusiness shipments."
- "Wrong zipcode /wrong country code."
- "Error in zip code or its format, "
- "and maybe a bad combination of city and zip code."
- ),
- -83: (
- "EuroBusiness shipments."
- "GLS internal error."
- "No free parcel number is available within the range."
- ),
- -84: (
- "EuroBusiness shipments."
- "GLS internal error."
- "A parameter is missing within the configuration file of the UNI-BOX."
- ),
- -85: "EuroBusiness shipments. Is not able to make the routing.",
- -86: (
- "EuroBusiness shipments."
- "GLS internal error."
- "A needed template-file cannot be found or opened."
- ),
- -87: "EuroBusiness shipments. GLS internal error. Duplicated sequence.",
- -88: "EuroBusiness shipments. Other errors.",
- -96: "Error, EBP service: Sequential error.",
- -97: (
- "Error, EuroEstandar/EBP service:"
- " can't be 'D', can't be > 0."
- ),
- -99: "Warning, Webservices are temporarily out of service.",
- -103: "Error, plaza solicita es null (alta).",
- -104: "Error, plaza origen es null (alta).",
- -106: "Error, CodCli es null (alta).",
- -107: "Error, CodCliRed es null (alta).",
- -108: "Error, Sender Name must be at least three characters.",
- -109: "Error, Sender Address must be at least three characters.",
- -110: "Error, Sender City must be at least three characters.",
- -111: "Error, Sender Zipcode must be at least four characters.",
- -117: "Error, los locales solo en la plaza de origen para la web.",
- -118: "Error, customer reference is duplicated.",
- -119: "Error, exception, uncontrolled error.",
- -128: "Error, Consignee Name must be at least three characters.",
- -129: "Error, Consignee Address must be at least three characters.",
- -130: "Error, Consignee City must be at least three characters.",
- -131: "Error, Consignee Zipcode must be at least four characters.",
- -6565: "Error, Volume is incorrect, remember that the unit is m3.",
-}
-
-GLS_PICKUP_ERROR_CODES = {
- -1: "Connection exception",
- -103: "Impossible get the requesting agency",
- -104: "Impossible get the origin agency.",
- -105: "Collection date is empty o not informed.",
- -106: "Impossible get the customer code (CodCli).",
- -107: "Impossible get the CodCliRed.",
- -108: "Collection name is empty or not informed.",
- -109: "Collection Address name is empty or not informed.",
- -110: "Collection City name is empty or not informed.",
- -111: "Collection Zipcode is empty or not informed.",
- -112: "Codsolicitud of agency is not valid.",
- -113: "Generic zipcodes are not allowed.",
- -114: "Collection interval must be greater than 2 hours.",
- -115: "Minimum collection time is 8h.",
- -116: "Maximum collection time is 22h.",
- -117: "Los locales solo en la plaza de origen para la web.",
- -118: "Customer reference is duplicated.",
- -119: "Zonzoo no puede recoger en islas Portugal.",
- -120: "Zipcode of consignee is incorrect.",
- -122: "Login not exists or is deleted.",
- -123: "Don't have permissions to insert on this agency.",
- -125: "Can not ask a collect on festive.",
- -126: (
- "When country is not Spain (34) the Phone and Celullar are mandatory"
- "(tags and inside )."
- ),
- -128: (
- "It is mandatory to inform the Telephone or Email "
- "where GLS must to collect (., . "
- "or .)."
- ),
- -303: "Currency amounts must be allways greater than 0.",
- -402: (
- "If Amount of insured goods > 0 (in Seguro), "
- "then tipo and descripcion are mandatory."
- ),
- -504: (
- "Impossible get the last mile agency, "
- "probably the consignee zipcode is wrong or not exists."
- ),
- -505: "Consignee name is not informed.",
- -506: "Consignee address is not informed.",
- -507: "Consignee city is not informed.",
- -508: "Consignee zipcode is not informed.",
- -602: "The reference must be informed.",
- -603: "Shipment References, tipo not exists.",
- -676: "Collection Zipcode is wrong, not exists.",
-}
-
-
class GlsAsmRequest:
"""Interface between GLS-ASM SOAP API and Odoo recordset
Abstract GLS-ASM API Operations to connect them with Odoo
From d05ea6347d4de1d6c80621c2d75cc67ac68ef86e Mon Sep 17 00:00:00 2001
From: david
Date: Tue, 10 May 2022 11:38:14 +0200
Subject: [PATCH 24/48] [IMP] delivery_gls_asm: fallback to commercial entity
phone
When we deliver to some destinations, the mobile phone and the email
address turn into required fields. We try to fallback to the ones
informed in the commercial entity data.
TT34458
delivery_gls_asm 14.0.1.1.2
[UPD] Update delivery_gls_asm.pot
delivery_gls_asm 14.0.1.2.0
[UPD] Update delivery_gls_asm.pot
delivery_gls_asm 14.0.1.3.0
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/i18n/delivery_gls_asm.pot | 18 +++++++++----
delivery_gls_asm/models/delivery_carrier.py | 28 +++++++++++----------
3 files changed, 29 insertions(+), 19 deletions(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index 40825dda117..482d5b81f16 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "14.0.1.1.1",
+ "version": "14.0.1.3.0",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index d906f6d5d6f..2318f1d8c4d 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -453,11 +453,6 @@ msgstr ""
msgid "GLS Deliveries Manifest"
msgstr ""
-#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_picking_ref
-msgid "GLS Picking Reference"
-msgstr ""
-
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
msgid "GLS Label"
@@ -472,6 +467,11 @@ msgstr ""
msgid "GLS Manifest"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_picking_ref
+msgid "GLS Picking Reference"
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
@@ -594,6 +594,14 @@ msgstr ""
msgid "INTERNACIONAL EXPRESS"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_cash_on_delivery
+msgid ""
+"If checked, it means that the carrier is paid with cash. It assumes there is"
+" a sale order linked and it will use that total amount as the value to be "
+"paid"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__36
msgid "Int. WEB"
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index 0802e6f9b92..3c646bf4d1f 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -106,6 +106,8 @@ def _prepare_gls_asm_shipping(self, picking):
picking.picking_type_id.warehouse_id.partner_id
or picking.company_id.partner_id
)
+ consignee = picking.partner_id
+ consignee_entity = picking.partner_id.commercial_partner_id
if not sender_partner.street:
raise UserError(_("Couldn't find the sender street"))
cash_amount = 0
@@ -143,20 +145,20 @@ def _prepare_gls_asm_shipping(self, picking):
"destinatario_codigo": "",
"destinatario_plaza": "",
"destinatario_nombre": (
- escape(picking.partner_id.name or picking.partner_id.parent_id.name)
- or escape(
- picking.partner_id.commercial_partner_id.name
- or picking.partner_id.commercial_partner_id.parent_id.name
- )
+ escape(consignee.name) or escape(consignee.commercial_partner_id.name)
+ ),
+ "destinatario_direccion": escape(consignee.street or ""),
+ "destinatario_poblacion": escape(consignee.city or ""),
+ "destinatario_provincia": escape(consignee.state_id.name or ""),
+ "destinatario_pais": consignee.country_id.phone_code or "",
+ "destinatario_cp": consignee.zip,
+ # For certain destinations the consignee mobile and email are required to
+ # make the expedition. Try to fallback to the commercial entity one
+ "destinatario_telefono": consignee.phone or consignee_entity.phone or "",
+ "destinatario_movil": consignee.mobile or consignee_entity.mobile or "",
+ "destinatario_email": escape(
+ consignee.email or consignee_entity.email or ""
),
- "destinatario_direccion": escape(picking.partner_id.street or ""),
- "destinatario_poblacion": escape(picking.partner_id.city or ""),
- "destinatario_provincia": escape(picking.partner_id.state_id.name or ""),
- "destinatario_pais": picking.partner_id.country_id.phone_code or "",
- "destinatario_cp": picking.partner_id.zip,
- "destinatario_telefono": picking.partner_id.phone or "",
- "destinatario_movil": picking.partner_id.mobile or "",
- "destinatario_email": escape(picking.partner_id.email or ""),
"destinatario_observaciones": "",
"destinatario_att": "",
"destinatario_departamento": "",
From 14fac24ded5b2b0fa4fa488b0956114e14c18574 Mon Sep 17 00:00:00 2001
From: Ethan Hildick
Date: Mon, 21 Feb 2022 15:25:38 +0100
Subject: [PATCH 25/48] [IMP] delivery_gls_asm: Mark as return
[UPD] Update delivery_gls_asm.pot
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/i18n/delivery_gls_asm.pot | 12 +++++++++++
delivery_gls_asm/i18n/es.po | 21 +++++++++++++++----
.../migrations/14.0.1.4.0/pre-migration.py | 20 ++++++++++++++++++
delivery_gls_asm/models/delivery_carrier.py | 14 ++++++++-----
delivery_gls_asm/views/delivery_asm_view.xml | 1 +
6 files changed, 60 insertions(+), 10 deletions(-)
create mode 100644 delivery_gls_asm/migrations/14.0.1.4.0/pre-migration.py
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index 482d5b81f16..fd6ac9dadf4 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "14.0.1.3.0",
+ "version": "14.0.1.4.0",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index 2318f1d8c4d..ff685a0edbc 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -221,6 +221,13 @@ msgstr ""
msgid "Cerrado por siniestro"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_with_return
+msgid ""
+"Check this field to mark the delivery as 'With return'. This means that the "
+"customer receiving the delivery also has a package to return."
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
#: model:ir.model.fields,help:delivery_gls_asm.field_stock_picking__gls_carrier_is_pickup_service
@@ -524,6 +531,11 @@ msgid ""
"characters."
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_with_return
+msgid "GLS/ASM With return"
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index 3ffdc4fcd7a..a7ebb487a65 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -4,11 +4,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 12.0\n"
+"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-06-05 07:09+0000\n"
-"PO-Revision-Date: 2021-03-19 19:46+0000\n"
-"Last-Translator: brendapaniagua \n"
+"POT-Creation-Date: 2022-05-23 09:29+0000\n"
+"PO-Revision-Date: 2022-05-23 09:29+0000\n"
+"Last-Translator: \n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
@@ -230,6 +230,14 @@ msgstr ""
msgid "Cerrado por siniestro"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_with_return
+msgid ""
+"Check this field to mark the delivery as 'With return'. This means that the "
+"customer receiving the delivery also has a package to return."
+msgstr "Marcar campo para indicar que el envío es 'Con recogida'. Esto significa que el cliente "
+"que recibe el envío también tiene un paquete para devolver."
+
#. module: delivery_gls_asm
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
#: model:ir.model.fields,help:delivery_gls_asm.field_stock_picking__gls_carrier_is_pickup_service
@@ -539,6 +547,11 @@ msgid ""
"characters."
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_with_return
+msgid "GLS/ASM With return"
+msgstr "Con recogida GLS/ASM"
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
diff --git a/delivery_gls_asm/migrations/14.0.1.4.0/pre-migration.py b/delivery_gls_asm/migrations/14.0.1.4.0/pre-migration.py
new file mode 100644
index 00000000000..ea15f6b9c05
--- /dev/null
+++ b/delivery_gls_asm/migrations/14.0.1.4.0/pre-migration.py
@@ -0,0 +1,20 @@
+# Copyright 2022 Studio73 - Ethan Hildick
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ if openupgrade.column_exists(env.cr, "delivery_carrier", "gls_asm_is_return"):
+ openupgrade.rename_fields(
+ env,
+ [
+ (
+ "delivery.carrier",
+ "delivery_carrier",
+ "gls_asm_is_return",
+ "gls_asm_with_return",
+ )
+ ],
+ )
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index 3c646bf4d1f..7c13c502a9d 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -55,6 +55,13 @@ class DeliveryCarrier(models.Model):
"total amount as the value to be paid"
),
)
+ gls_asm_with_return = fields.Boolean(
+ string="GLS/ASM With return",
+ help=(
+ "Check this field to mark the delivery as 'With return'. This means that "
+ "the customer receiving the delivery also has a package to return."
+ ),
+ )
@api.depends("gls_asm_service")
def _compute_gls_pickup_service(self):
@@ -124,7 +131,7 @@ def _prepare_gls_asm_shipping(self, picking):
"declarado": "", # [optional]
"dninomb": "0", # [optional]
"fechaentrega": "", # [optional]
- "retorno": "0", # [optional]
+ "retorno": "1" if self.gls_asm_with_return else "0", # [optional]
"pod": "N", # [optional]
"podobligatorio": "N", # [deprecated]
"remite_plaza": "", # [optional] Origin agency
@@ -439,10 +446,7 @@ def gls_asm_cancel_shipment(self, pickings):
picking.message_post(body=msg)
continue
picking.write(
- {
- "gls_asm_public_tracking_ref": False,
- "gls_asm_picking_ref": False,
- }
+ {"gls_asm_public_tracking_ref": False, "gls_asm_picking_ref": False}
)
self.gls_asm_tracking_state_update(picking=picking)
diff --git a/delivery_gls_asm/views/delivery_asm_view.xml b/delivery_gls_asm/views/delivery_asm_view.xml
index 21c8f1d5c52..a7543cfb311 100644
--- a/delivery_gls_asm/views/delivery_asm_view.xml
+++ b/delivery_gls_asm/views/delivery_asm_view.xml
@@ -30,6 +30,7 @@
attrs="{'required': [('delivery_type', '=', 'gls_asm'), ('prod_environment', '!=', False)]}"
/>
+
From feae64d5cf2318c71e65bae88ad1cc898b46c0fc Mon Sep 17 00:00:00 2001
From: Ethan Hildick
Date: Tue, 7 Jun 2022 18:04:24 +0200
Subject: [PATCH 26/48] [14.0][FIX] delivery_gls_asm: Convert into list if not
Iterable
- If the manifest only comes with 1 delivery it is in form of a singular dict instead of a list of dicts and this causes issues when iterating in the XML
delivery_gls_asm 14.0.1.4.1
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/wizard/gls_asm_manifest_wizard.py | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index fd6ac9dadf4..63a68213408 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "14.0.1.4.0",
+ "version": "14.0.1.4.1",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
diff --git a/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py b/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
index f62181d2614..5edb8b4ba78 100644
--- a/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
+++ b/delivery_gls_asm/wizard/gls_asm_manifest_wizard.py
@@ -32,6 +32,8 @@ def get_manifest(self):
"deliveries for the selected date."
)
)
+ if isinstance(manifest_data, dict):
+ manifest_data = [manifest_data]
datas = {
"ids": self.env.context.get("active_ids", []),
"model": "gls.asm.minifest.wizard",
From 388a0d6d98b9d93b04a524f2ebd31a80fe6e0a89 Mon Sep 17 00:00:00 2001
From: Ethan Hildick
Date: Wed, 13 Jul 2022 17:31:16 +0200
Subject: [PATCH 27/48] [IMP] delivery_gls_asm: International tracking links
---
delivery_gls_asm/README.rst | 4 ++++
delivery_gls_asm/models/delivery_carrier.py | 18 +++++++++++++-----
delivery_gls_asm/models/gls_asm_master_data.py | 13 +++++++++++++
delivery_gls_asm/readme/CONTRIBUTORS.rst | 4 ++++
delivery_gls_asm/views/stock_picking_views.xml | 4 ++++
5 files changed, 38 insertions(+), 5 deletions(-)
diff --git a/delivery_gls_asm/README.rst b/delivery_gls_asm/README.rst
index 56df2c7a9c4..1dbfb5436a7 100644
--- a/delivery_gls_asm/README.rst
+++ b/delivery_gls_asm/README.rst
@@ -174,6 +174,10 @@ Contributors
* David Vidal
* Víctor Martínez
+* `Studio73 `_:
+
+ * Ethan Hildick
+
Maintainers
~~~~~~~~~~~
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index 7c13c502a9d..f2acf4780e2 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -13,6 +13,7 @@
GLS_POSTAGE_TYPE,
GLS_SHIPMENT_TYPE_STATES,
GLS_SHIPPING_TIMES,
+ GLS_TRACKING_LINKS,
)
from .gls_asm_request import GlsAsmRequest
@@ -96,11 +97,18 @@ def _gls_asm_uid(self):
def gls_asm_get_tracking_link(self, picking):
"""Provide tracking link for the customer"""
- tracking_url = (
- "http://www.asmred.com/extranet/public/"
- "ExpedicionASM.aspx?codigo={}&cpDst={}"
- )
- return tracking_url.format(picking.carrier_tracking_ref, picking.partner_id.zip)
+ # International
+ if picking.gls_asm_picking_ref:
+ if picking.partner_id.country_id.code == "PT":
+ base_link = GLS_TRACKING_LINKS.get("INT_PT")
+ else:
+ base_link = GLS_TRACKING_LINKS.get("INT")
+ tracking_url = base_link.format(picking.gls_asm_picking_ref)
+ else:
+ tracking_url = GLS_TRACKING_LINKS.get("ASM").format(
+ picking.carrier_tracking_ref, picking.partner_id.zip
+ )
+ return tracking_url
def _prepare_gls_asm_shipping(self, picking):
"""Convert picking values for asm api
diff --git a/delivery_gls_asm/models/gls_asm_master_data.py b/delivery_gls_asm/models/gls_asm_master_data.py
index 26010ecef9e..018701ce974 100644
--- a/delivery_gls_asm/models/gls_asm_master_data.py
+++ b/delivery_gls_asm/models/gls_asm_master_data.py
@@ -323,3 +323,16 @@
-603: "Shipment References, tipo not exists.",
-676: "Collection Zipcode is wrong, not exists.",
}
+
+GLS_TRACKING_LINKS = {
+ "ASM": (
+ "http://www.asmred.com/extranet/public/ExpedicionASM.aspx?codigo={}&cpDst={}"
+ ),
+ "INT": (
+ "https://www.gls-spain.es/en/receiving-parcels/shipping-tracking/"
+ "?match={}&international=1"
+ ),
+ "INT_PT": (
+ "https://www.gls-portugal.pt/pt/seguimiento-envio/?match={}&international=1"
+ ),
+}
diff --git a/delivery_gls_asm/readme/CONTRIBUTORS.rst b/delivery_gls_asm/readme/CONTRIBUTORS.rst
index d6b082dc5c0..b9ee4e6b8da 100644
--- a/delivery_gls_asm/readme/CONTRIBUTORS.rst
+++ b/delivery_gls_asm/readme/CONTRIBUTORS.rst
@@ -2,3 +2,7 @@
* David Vidal
* Víctor Martínez
+
+* `Studio73 `_:
+
+ * Ethan Hildick
diff --git a/delivery_gls_asm/views/stock_picking_views.xml b/delivery_gls_asm/views/stock_picking_views.xml
index 15bc021d061..7027c5365c0 100644
--- a/delivery_gls_asm/views/stock_picking_views.xml
+++ b/delivery_gls_asm/views/stock_picking_views.xml
@@ -29,6 +29,10 @@
name="gls_asm_public_tracking_ref"
attrs="{'invisible':[('gls_asm_public_tracking_ref', '!=', 'False')]}"
/>
+
Date: Thu, 14 Jul 2022 10:59:11 +0200
Subject: [PATCH 28/48] [IMP] delivery_gls_asm: Add maintainers
[UPD] README.rst
delivery_gls_asm 14.0.1.4.2
---
delivery_gls_asm/README.rst | 11 +++++++++++
delivery_gls_asm/__manifest__.py | 3 ++-
delivery_gls_asm/static/description/index.html | 6 ++++++
3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/delivery_gls_asm/README.rst b/delivery_gls_asm/README.rst
index 1dbfb5436a7..d7b52924447 100644
--- a/delivery_gls_asm/README.rst
+++ b/delivery_gls_asm/README.rst
@@ -191,6 +191,17 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
+.. |maintainer-chienandalu| image:: https://github.com/chienandalu.png?size=40px
+ :target: https://github.com/chienandalu
+ :alt: chienandalu
+.. |maintainer-hildickethan-S73| image:: https://github.com/hildickethan-S73.png?size=40px
+ :target: https://github.com/hildickethan-S73
+ :alt: hildickethan-S73
+
+Current `maintainers `__:
+
+|maintainer-chienandalu| |maintainer-hildickethan-S73|
+
This module is part of the `OCA/l10n-spain `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index 63a68213408..bf6be434050 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "14.0.1.4.1",
+ "version": "14.0.1.4.2",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
@@ -20,4 +20,5 @@
"views/stock_picking_views.xml",
"wizard/gls_asm_manifest_wizard_views.xml",
],
+ "maintainers": ["chienandalu", "hildickethan-S73"],
}
diff --git a/delivery_gls_asm/static/description/index.html b/delivery_gls_asm/static/description/index.html
index c639ae527f0..e36f4e2988d 100644
--- a/delivery_gls_asm/static/description/index.html
+++ b/delivery_gls_asm/static/description/index.html
@@ -551,6 +551,10 @@
Víctor Martínez
+Studio73 :
+
@@ -560,6 +564,8 @@
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
+
Current maintainers :
+
This module is part of the OCA/l10n-spain project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute .
From fd33f19864d0a5e2b00d62cb0e692bbb02ec74d3 Mon Sep 17 00:00:00 2001
From: Abraham Anes
Date: Fri, 22 Jul 2022 13:27:21 +0200
Subject: [PATCH 29/48] [14.0][FIX] delivery_gls_asm: prevent escape of bool
delivery_gls_asm 14.0.1.4.3
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/models/delivery_carrier.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index bf6be434050..9faccaad267 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "14.0.1.4.2",
+ "version": "14.0.1.4.3",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index f2acf4780e2..d69a663519f 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -160,7 +160,7 @@ def _prepare_gls_asm_shipping(self, picking):
"destinatario_codigo": "",
"destinatario_plaza": "",
"destinatario_nombre": (
- escape(consignee.name) or escape(consignee.commercial_partner_id.name)
+ escape(consignee.name or consignee.commercial_partner_id.name or "")
),
"destinatario_direccion": escape(consignee.street or ""),
"destinatario_poblacion": escape(consignee.city or ""),
From ac400569e0a3d6f57a9e4fbdab00ced78654690e Mon Sep 17 00:00:00 2001
From: mariadforgeflow
Date: Tue, 18 Oct 2022 13:36:02 +0200
Subject: [PATCH 30/48] [IMP] delivery_gls_asm: hide cancel button for other
carriers
delivery_gls_asm 14.0.1.5.0
---
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/views/stock_picking_views.xml | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index 9faccaad267..d3607f29755 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "14.0.1.4.3",
+ "version": "14.0.1.5.0",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
diff --git a/delivery_gls_asm/views/stock_picking_views.xml b/delivery_gls_asm/views/stock_picking_views.xml
index 7027c5365c0..881b2af7b59 100644
--- a/delivery_gls_asm/views/stock_picking_views.xml
+++ b/delivery_gls_asm/views/stock_picking_views.xml
@@ -17,9 +17,11 @@
'|',
'|',
'|',
+ '|',
('carrier_tracking_ref','=',False),
('delivery_type','in', ['fixed', 'base_on_rule']),
('delivery_type','=',False),
+ ('delivery_type','!=','gls_asm'),
('state','=','done')]
}"
/>
From 0ae979e47055b824bb21410a2574a9da3a157c28 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?=
Date: Wed, 19 Oct 2022 15:39:34 +0200
Subject: [PATCH 31/48] [MIG] delivery_gls_asm: Migration to 15.0
TT37282
---
delivery_gls_asm/README.rst | 10 +-
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/i18n/ca.po | 17 ---
delivery_gls_asm/i18n/delivery_gls_asm.pot | 30 ++---
delivery_gls_asm/i18n/es.po | 122 ++++++------------
.../migrations/14.0.1.4.0/pre-migration.py | 20 ---
delivery_gls_asm/models/delivery_carrier.py | 12 +-
delivery_gls_asm/models/gls_asm_request.py | 67 +++++-----
.../static/description/index.html | 6 +-
.../tests/test_delivery_gls_asm.py | 2 +-
10 files changed, 111 insertions(+), 177 deletions(-)
delete mode 100644 delivery_gls_asm/migrations/14.0.1.4.0/pre-migration.py
diff --git a/delivery_gls_asm/README.rst b/delivery_gls_asm/README.rst
index d7b52924447..e8dcf75a3b9 100644
--- a/delivery_gls_asm/README.rst
+++ b/delivery_gls_asm/README.rst
@@ -14,13 +14,13 @@ Delivery GLS-ASM
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--spain-lightgray.png?logo=github
- :target: https://github.com/OCA/l10n-spain/tree/14.0/delivery_gls_asm
+ :target: https://github.com/OCA/l10n-spain/tree/15.0/delivery_gls_asm
:alt: OCA/l10n-spain
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/l10n-spain-14-0/l10n-spain-14-0-delivery_gls_asm
+ :target: https://translation.odoo-community.org/projects/l10n-spain-15-0/l10n-spain-15-0-delivery_gls_asm
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/189/14.0
+ :target: https://runbot.odoo-community.org/runbot/189/15.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -154,7 +154,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -202,6 +202,6 @@ Current `maintainers `__:
|maintainer-chienandalu| |maintainer-hildickethan-S73|
-This module is part of the `OCA/l10n-spain `_ project on GitHub.
+This module is part of the `OCA/l10n-spain `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index d3607f29755..f9a9b03acfa 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "14.0.1.5.0",
+ "version": "15.0.1.0.0",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
diff --git a/delivery_gls_asm/i18n/ca.po b/delivery_gls_asm/i18n/ca.po
index c12bdb167ee..d594d483c89 100644
--- a/delivery_gls_asm/i18n/ca.po
+++ b/delivery_gls_asm/i18n/ca.po
@@ -987,20 +987,3 @@ msgstr ""
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__35
msgid "dPRO"
msgstr ""
-
-#~ msgid ""
-#~ "\n"
-#~ " GLS ASM API doesn't provide methods to compute delivery "
-#~ "rates, so\n"
-#~ " you should relay on another price method instead or override "
-#~ "this\n"
-#~ " one in your custom code.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " La API de GLS ASM no proporciona métodos para calcular las "
-#~ "tasas de entrega, por lo que\n"
-#~ " debe confiar en otro método de precio en su lugar o anular "
-#~ "este\n"
-#~ " uno en su código personalizado.\n"
-#~ " "
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index ff685a0edbc..6b56c83c646 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 14.0\n"
+"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -308,9 +308,7 @@ msgid "Devuelta al cliente"
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__display_name
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__display_name
msgid "Display Name"
msgstr ""
@@ -482,7 +480,9 @@ msgstr ""
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
-msgid "GLS Pickup extra info: Tracking number: %s Bultos: %s"
+msgid ""
+"GLS Pickup extra info: Tracking number: %(codigo)s Bultos: "
+"%(bultos)s"
msgstr ""
#. module: delivery_gls_asm
@@ -515,9 +515,9 @@ msgstr ""
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"GLS returned an error trying to record the shipping for {}.\n"
+"GLS returned an error trying to record the shipping for %(ref).\n"
"Error:\n"
-"{}"
+"%(error)"
msgstr ""
#. module: delivery_gls_asm
@@ -540,18 +540,18 @@ msgstr ""
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"GLS: No response from server getting state from ref {}.\n"
+"GLS: No response from server getting state from ref %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"GLS: No response from server printing label with ref {}.\n"
+"GLS: No response from server printing label with ref %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
#. module: delivery_gls_asm
@@ -575,9 +575,7 @@ msgid "IBEX"
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__id
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__id
msgid "ID"
msgstr ""
@@ -628,9 +626,7 @@ msgid ""
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier____last_update
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking____last_update
msgid "Last Modified on"
msgstr ""
@@ -680,7 +676,7 @@ msgstr ""
msgid ""
"No response from server getting manifisto for GLS.\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
#. module: delivery_gls_asm
@@ -688,9 +684,9 @@ msgstr ""
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"No response from server recording GLS delivery {}.\n"
+"No response from server recording GLS delivery %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
#. module: delivery_gls_asm
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index a7ebb487a65..ee60d902995 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -6,16 +6,16 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-23 09:29+0000\n"
-"PO-Revision-Date: 2022-05-23 09:29+0000\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2022-10-20 12:24+0000\n"
+"PO-Revision-Date: 2022-10-20 14:26+0200\n"
+"Last-Translator: ethan@studio73.es\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.3.2\n"
+"X-Generator: Poedit 3.0.1\n"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__0
@@ -193,7 +193,7 @@ msgstr "COURIER"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
msgid "Cancel"
-msgstr ""
+msgstr "Cancelar"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
@@ -235,8 +235,9 @@ msgstr ""
msgid ""
"Check this field to mark the delivery as 'With return'. This means that the "
"customer receiving the delivery also has a package to return."
-msgstr "Marcar campo para indicar que el envío es 'Con recogida'. Esto significa que el cliente "
-"que recibe el envío también tiene un paquete para devolver."
+msgstr ""
+"Marcar campo para indicar que el envío es 'Con recogida'. Esto significa que "
+"el cliente que recibe el envío también tiene un paquete para devolver."
#. module: delivery_gls_asm
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
@@ -317,9 +318,7 @@ msgid "Devuelta al cliente"
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__display_name
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
@@ -472,11 +471,6 @@ msgstr "Configuración GLS"
msgid "GLS Deliveries Manifest"
msgstr "Manifiesto de Envíos GLS"
-#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_picking_ref
-msgid "GLS Picking Reference"
-msgstr "Referencia albarán GLS"
-
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.view_picking_form
msgid "GLS Label"
@@ -491,10 +485,17 @@ msgstr "Etiqueta GLS"
msgid "GLS Manifest"
msgstr "Manifiesto GLS"
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_picking_ref
+msgid "GLS Picking Reference"
+msgstr "Referencia albarán GLS"
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
-msgid "GLS Pickup extra info: Tracking number: %s Bultos: %s"
+msgid ""
+"GLS Pickup extra info: Tracking number: %(codigo)s Bultos: "
+"%(bultos)s"
msgstr ""
#. module: delivery_gls_asm
@@ -528,13 +529,13 @@ msgstr "Etiqueta GLS para% s"
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"GLS returned an error trying to record the shipping for {}.\n"
+"GLS returned an error trying to record the shipping for %(ref).\n"
"Error:\n"
-"{}"
+"%(error)"
msgstr ""
-"GLS ha devuelto un error tratando de registrar la expedición para {}.\n"
+"GLS ha devuelto un error tratando de registrar la expedición para %(ref).\n"
"Error:\n"
-"{}"
+"%(error)"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
@@ -556,27 +557,27 @@ msgstr "Con recogida GLS/ASM"
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"GLS: No response from server getting state from ref {}.\n"
+"GLS: No response from server getting state from ref %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
"GLS: Si respuesta del servidor intentando recuperar el estado de la "
-"referencia {}.\n"
+"referencia %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"GLS: No response from server printing label with ref {}.\n"
+"GLS: No response from server printing label with ref %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
"GLS: Sin respuesta del servidor trantando de imprimir la etiqueta con "
-"referencia {}.\n"
+"referencia %(ref)..\n"
"Traceback:\n"
-"{}"
+"%(error)"
#. module: delivery_gls_asm
#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
@@ -599,9 +600,7 @@ msgid "IBEX"
msgstr "IBEX"
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__id
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__id
msgid "ID"
msgstr "ID"
@@ -630,6 +629,13 @@ msgstr "INTERNACIONAL ECONOMY"
msgid "INTERNACIONAL EXPRESS"
msgstr "INTERNACIONAL EXPRESS"
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_cash_on_delivery
+msgid ""
+"If checked, it means that the carrier is paid with cash. It assumes there is "
+"a sale order linked and it will use that total amount as the value to be paid"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__36
msgid "Int. WEB"
@@ -646,9 +652,7 @@ msgstr ""
"fecha seleccionada."
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier____last_update
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
@@ -698,23 +702,23 @@ msgstr ""
msgid ""
"No response from server getting manifisto for GLS.\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
"No hay respuesta del servidor obteniendo manifisto para GLS.\n"
"Rastrear:\n"
-"{}"
+"%(error)"
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"No response from server recording GLS delivery {}.\n"
+"No response from server recording GLS delivery %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
-"No hay respuesta del servidor que registra la entrega de GLS {}.\n"
+"No hay respuesta del servidor que registra la entrega de GLS %(ref).\n"
"Rastrear:\n"
-"{}"
+"%(error)"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__19
@@ -748,7 +752,6 @@ msgstr "Bultos"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__19
-#, fuzzy
msgid "ParcelShop"
msgstr "ParcelShop"
@@ -810,7 +813,6 @@ msgstr "Proveedor"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__58
-#, fuzzy
msgid "RC. PARCEL SHOP"
msgstr "RC. PARCEL SHOP"
@@ -992,7 +994,7 @@ msgstr "Establezca el tiempo de envío de las opciones de GLS"
#. module: delivery_gls_asm
#: model:ir.model,name:delivery_gls_asm.model_delivery_carrier
msgid "Shipping Methods"
-msgstr ""
+msgstr "Métodos de envío"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_shiptime
@@ -1044,43 +1046,3 @@ msgstr "C.P."
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__35
msgid "dPRO"
msgstr "dPRO"
-
-#~ msgid "Based on Rules"
-#~ msgstr "En base a reglas"
-
-#~ msgid "Delivery Methods"
-#~ msgstr "Métodos de envío"
-
-#~ msgid "Fixed Price"
-#~ msgstr "Fixed Price"
-
-#~ msgid "GLS Expedition with reference %s cancelled"
-#~ msgstr "Expedición GLS con referencia %s cancelada"
-
-#~ msgid "GLS Pickup extra info: Tracking number: %s"
-#~ msgstr ""
-#~ "Información adicional de la recogida GLS: Número de seguimiento: %s"
-
-#~ msgid "Last GLS xml request"
-#~ msgstr "Última solicitud xml de GLS"
-
-#~ msgid "Last GLS xml response"
-#~ msgstr "Última respuesta xml de GLS"
-
-#~ msgid "Seur"
-#~ msgstr "Seur"
-
-#~ msgid "Technical"
-#~ msgstr "Técnico"
-
-#~ msgid "Used for issues debugging"
-#~ msgstr "Se utiliza para la depuración de problemas"
-
-#~ msgid "Carrier"
-#~ msgstr "Transportista"
-
-#~ msgid "No carrier integration"
-#~ msgstr "Sin integración de transportista"
-
-#~ msgid "Product Packaging"
-#~ msgstr "Empaquetado del producto"
diff --git a/delivery_gls_asm/migrations/14.0.1.4.0/pre-migration.py b/delivery_gls_asm/migrations/14.0.1.4.0/pre-migration.py
deleted file mode 100644
index ea15f6b9c05..00000000000
--- a/delivery_gls_asm/migrations/14.0.1.4.0/pre-migration.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2022 Studio73 - Ethan Hildick
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-
-from openupgradelib import openupgrade
-
-
-@openupgrade.migrate()
-def migrate(env, version):
- if openupgrade.column_exists(env.cr, "delivery_carrier", "gls_asm_is_return"):
- openupgrade.rename_fields(
- env,
- [
- (
- "delivery.carrier",
- "delivery_carrier",
- "gls_asm_is_return",
- "gls_asm_with_return",
- )
- ],
- )
diff --git a/delivery_gls_asm/models/delivery_carrier.py b/delivery_gls_asm/models/delivery_carrier.py
index d69a663519f..ccfd5470f36 100644
--- a/delivery_gls_asm/models/delivery_carrier.py
+++ b/delivery_gls_asm/models/delivery_carrier.py
@@ -1,5 +1,6 @@
# Copyright 2020 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+import logging
from xml.sax.saxutils import escape
from odoo import _, api, fields, models
@@ -17,6 +18,8 @@
)
from .gls_asm_request import GlsAsmRequest
+_logger = logging.getLogger(__name__)
+
class DeliveryCarrier(models.Model):
_inherit = "delivery.carrier"
@@ -303,8 +306,8 @@ def gls_asm_send_shipping(self, pickings):
if ref.get("_tipo", "") == "N":
gls_asm_picking_ref = ref.get("value", "")
break
- except Exception:
- pass
+ except Exception as e:
+ _logger.warning(e)
picking.write(
{
"gls_asm_public_tracking_ref": response.get("_codbarras"),
@@ -358,8 +361,9 @@ def gls_asm_send_pickup(self, pickings):
# We post an extra message in the chatter with the barcode and the
# label because there's clean way to override the one sent by core.
body = _(
- "GLS Pickup extra info: Tracking number: %s Bultos: %s"
- ) % (response.get("_codigo"), vals["bultos"])
+ "GLS Pickup extra info: "
+ "Tracking number: %(codigo)s Bultos: %(bultos)s",
+ ) % {"codigo": response.get("_codigo"), "bultos": vals["bultos"]}
picking.message_post(body=body)
result.append(vals)
return result
diff --git a/delivery_gls_asm/models/gls_asm_request.py b/delivery_gls_asm/models/gls_asm_request.py
index 4042f700af2..d84e54d5d8b 100644
--- a/delivery_gls_asm/models/gls_asm_request.py
+++ b/delivery_gls_asm/models/gls_asm_request.py
@@ -243,10 +243,11 @@ def _send_shipping(self, vals):
except Exception as e:
raise UserError(
_(
- "No response from server recording GLS delivery {}.\n"
- "Traceback:\n{}"
- ).format(vals.get("referencia_c", ""), e)
- )
+ "No response from server recording GLS delivery %(ref).\n"
+ "Traceback:\n%(error)"
+ )
+ % {"ref": vals.get("referencia_c", ""), "error": e}
+ ) from e
# Convert result suds object to dict and set the root conveniently
# GLS API Errors have codes below 0 so we have to
# convert to int as well
@@ -257,12 +258,15 @@ def _send_shipping(self, vals):
if res["_return"] < 0:
raise UserError(
_(
- "GLS returned an error trying to record the shipping for {}.\n"
- "Error:\n{}"
- ).format(
- vals.get("referencia_c", ""),
- GLS_SHIPMENT_ERROR_CODES.get(res["_return"], res["_return"]),
+ "GLS returned an error trying to record the shipping for %(ref).\n"
+ "Error:\n%(error)"
)
+ % {
+ "ref": vals.get("referencia_c", ""),
+ "error": GLS_SHIPMENT_ERROR_CODES.get(
+ res["_return"], res["_return"]
+ ),
+ }
)
if res.get("Etiquetas", {}).get("Etiqueta", {}).get("value"):
res["gls_label"] = binascii.a2b_base64(
@@ -284,10 +288,11 @@ def _send_pickup(self, vals):
except Exception as e:
raise UserError(
_(
- "No response from server recording GLS delivery {}.\n"
- "Traceback:\n{}"
- ).format(vals.get("referencia_c", ""), e)
- )
+ "No response from server recording GLS delivery %(ref).\n"
+ "Traceback:\n%(error)"
+ )
+ % {"ref": vals.get("referencia_c", ""), "error": e}
+ ) from e
# Convert result suds object to dict and set the root conveniently
# GLS API Errors have codes below 0 so we have to
# convert to int as well
@@ -298,12 +303,13 @@ def _send_pickup(self, vals):
if res["_return"] < 0:
raise UserError(
_(
- "GLS returned an error trying to record the shipping for {}.\n"
- "Error:\n{}"
- ).format(
- vals.get("referencia_c", ""),
- GLS_PICKUP_ERROR_CODES.get(res["_return"], res["_return"]),
+ "GLS returned an error trying to record the shipping for %(ref).\n"
+ "Error:\n%(error)"
)
+ % {
+ "ref": vals.get("referencia_c", ""),
+ "error": GLS_PICKUP_ERROR_CODES.get(res["_return"], res["_return"]),
+ }
)
return res
@@ -318,10 +324,11 @@ def _get_delivery_info(self, reference=False):
except Exception as e:
raise UserError(
_(
- "GLS: No response from server getting state from ref {}.\n"
- "Traceback:\n{}"
- ).format(reference, e)
- )
+ "GLS: No response from server getting state from ref %(ref).\n"
+ "Traceback:\n%(error)"
+ )
+ % {"ref": reference, "error": e}
+ ) from e
res = self._recursive_asdict(res)
return res
@@ -373,10 +380,11 @@ def _shipping_label(self, reference=False):
except Exception as e:
raise UserError(
_(
- "GLS: No response from server printing label with ref {}.\n"
- "Traceback:\n{}"
- ).format(reference, e)
- )
+ "GLS: No response from server printing label with ref %(ref).\n"
+ "Traceback:\n%(error)"
+ )
+ % {"ref": reference, "error": e}
+ ) from e
res = self._recursive_asdict(res)
label = res.get("base64Binary")
return label and binascii.a2b_base64(str(label[0]))
@@ -474,8 +482,9 @@ def _get_manifest(self, date_from):
raise UserError(
_(
"No response from server getting manifisto for GLS.\n"
- "Traceback:\n{}"
- ).format(e)
- )
+ "Traceback:\n%(error)"
+ )
+ % {"error": e}
+ ) from e
res = self._recursive_asdict(res.Servicios.Envios).get("Envio", [])
return res
diff --git a/delivery_gls_asm/static/description/index.html b/delivery_gls_asm/static/description/index.html
index e36f4e2988d..0c1fe74736e 100644
--- a/delivery_gls_asm/static/description/index.html
+++ b/delivery_gls_asm/static/description/index.html
@@ -367,7 +367,7 @@ Delivery GLS-ASM
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
Este módulo integra la API de GLS España (antigua API de ASM) con Odoo. No es
válido para integraciones de GLS en otros países, que podrían usar otras APIs.
Table of contents
@@ -532,7 +532,7 @@
Bugs are tracked on GitHub Issues .
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback .
+feedback .
Do not contact contributors directly about support or help with technical issues.
diff --git a/delivery_gls_asm/tests/test_delivery_gls_asm.py b/delivery_gls_asm/tests/test_delivery_gls_asm.py
index 29de04f3f74..5fcdbddfa41 100644
--- a/delivery_gls_asm/tests/test_delivery_gls_asm.py
+++ b/delivery_gls_asm/tests/test_delivery_gls_asm.py
@@ -7,7 +7,7 @@
from odoo.tests import Form, common
-class TestDeliveryGlsAsm(common.SavepointCase):
+class TestDeliveryGlsAsm(common.TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
From a93353beb54b54730bebda6593de8e207de8247d Mon Sep 17 00:00:00 2001
From: Ivorra78
Date: Wed, 5 Jul 2023 16:33:03 +0000
Subject: [PATCH 32/48] Translated using Weblate (Spanish)
Currently translated at 77.0% (144 of 187 strings)
Translation: l10n-spain-15.0/l10n-spain-15.0-delivery_gls_asm
Translate-URL: https://translation.odoo-community.org/projects/l10n-spain-15-0/l10n-spain-15-0-delivery_gls_asm/es/
---
delivery_gls_asm/i18n/es.po | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index ee60d902995..8f6fe347c97 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -7,15 +7,15 @@ msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-20 12:24+0000\n"
-"PO-Revision-Date: 2022-10-20 14:26+0200\n"
-"Last-Translator: ethan@studio73.es\n"
+"PO-Revision-Date: 2023-07-05 19:08+0000\n"
+"Last-Translator: Ivorra78 \n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Poedit 3.0.1\n"
+"X-Generator: Weblate 4.17\n"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_shiptime__0
@@ -497,6 +497,8 @@ msgid ""
"GLS Pickup extra info: Tracking number: %(codigo)s Bultos: "
"%(bultos)s"
msgstr ""
+"GLS Pickup información adicional: Número de seguimiento: %(codigo)s Bultos: %(bultos)s"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_service
@@ -547,6 +549,11 @@ msgid ""
"prevent this, you should edit your picking sequence to a max of 15 "
"characters."
msgstr ""
+"La API de GLS-ASM no admite un número de referencia superior a 15 "
+"caracteres. Para manejarlo, recortan la referencia y como la referencia es "
+"única para cada cliente pronto tendríamos colisiones de referencias "
+"duplicadas. Para evitar esto, debería editar su secuencia de picking a un "
+"máximo de 15 caracteres."
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_with_return
@@ -635,6 +642,9 @@ msgid ""
"If checked, it means that the carrier is paid with cash. It assumes there is "
"a sale order linked and it will use that total amount as the value to be paid"
msgstr ""
+"Si está marcada, significa que el transportista se paga en efectivo. Asume "
+"que hay una orden de venta vinculada y utilizará ese importe total como "
+"valor a pagar"
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__36
@@ -773,7 +783,7 @@ msgstr ""
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__pending_auth
msgid "Pending Autorización"
-msgstr ""
+msgstr "Pendiente de Autorización"
#. module: delivery_gls_asm
#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
From 09269b264720e22ec2d44ceaa113acf3b92bfb5b Mon Sep 17 00:00:00 2001
From: manu
Date: Tue, 25 Jul 2023 16:17:17 +0200
Subject: [PATCH 33/48] [FIX]delivery_gls_asm: Discontinued GetManifiesto API
method
---
delivery_gls_asm/README.rst | 15 ++--
delivery_gls_asm/__manifest__.py | 2 +-
delivery_gls_asm/i18n/ca.po | 72 +++++++++++------
delivery_gls_asm/i18n/delivery_gls_asm.pot | 16 ++--
delivery_gls_asm/i18n/es.po | 30 ++++---
delivery_gls_asm/models/gls_asm_request.py | 47 -----------
.../static/description/index.html | 80 ++++++++++---------
.../views/gls_asm_manifest_template.xml | 10 +--
.../wizard/gls_asm_manifest_wizard.py | 30 +++++--
.../wizard/gls_asm_manifest_wizard_views.xml | 4 +
10 files changed, 155 insertions(+), 151 deletions(-)
diff --git a/delivery_gls_asm/README.rst b/delivery_gls_asm/README.rst
index e8dcf75a3b9..167836d5d6a 100644
--- a/delivery_gls_asm/README.rst
+++ b/delivery_gls_asm/README.rst
@@ -2,10 +2,13 @@
Delivery GLS-ASM
================
-.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:5be2518454d3ae71ac94d97f339deaff6baa523ee42c9a0ad2168454e4379512
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
@@ -19,11 +22,11 @@ Delivery GLS-ASM
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/l10n-spain-15-0/l10n-spain-15-0-delivery_gls_asm
:alt: Translate me on Weblate
-.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/189/15.0
- :alt: Try me on Runbot
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-spain&target_branch=15.0
+ :alt: Try me on Runboat
-|badge1| |badge2| |badge3| |badge4| |badge5|
+|badge1| |badge2| |badge3| |badge4| |badge5|
Este módulo integra la API de GLS España (antigua API de ASM) con Odoo. No es
válido para integraciones de GLS en otros países, que podrían usar otras APIs.
@@ -153,7 +156,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
-If you spotted it first, help us smashing it by providing a detailed and welcomed
+If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback `_.
Do not contact contributors directly about support or help with technical issues.
diff --git a/delivery_gls_asm/__manifest__.py b/delivery_gls_asm/__manifest__.py
index f9a9b03acfa..ad1ba26d479 100644
--- a/delivery_gls_asm/__manifest__.py
+++ b/delivery_gls_asm/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Delivery GLS-ASM",
"summary": "Delivery Carrier implementation for GLS with ASMRed API",
- "version": "15.0.1.0.0",
+ "version": "15.0.1.0.1",
"category": "Stock",
"website": "https://github.com/OCA/l10n-spain",
"author": "Tecnativa, Odoo Community Association (OCA)",
diff --git a/delivery_gls_asm/i18n/ca.po b/delivery_gls_asm/i18n/ca.po
index d594d483c89..4899e6a4f0f 100644
--- a/delivery_gls_asm/i18n/ca.po
+++ b/delivery_gls_asm/i18n/ca.po
@@ -200,6 +200,11 @@ msgstr ""
msgid "Cash On Delivery"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_cash_on_delivery
+msgid "Cash on delivery"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__stock_picking__gls_pickup_state__closed
msgid "Cerrado"
@@ -220,6 +225,13 @@ msgstr ""
msgid "Cerrado por siniestro"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_with_return
+msgid ""
+"Check this field to mark the delivery as 'With return'. This means that the "
+"customer receiving the delivery also has a package to return."
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_is_pickup_service
#: model:ir.model.fields,help:delivery_gls_asm.field_stock_picking__gls_carrier_is_pickup_service
@@ -299,9 +311,7 @@ msgid "Devuelta al cliente"
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__display_name
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__display_name
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__display_name
msgid "Display Name"
msgstr ""
@@ -415,6 +425,14 @@ msgstr ""
msgid "GLASS"
msgstr ""
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+msgid ""
+"GLS API does no longer support the manifest creation, so keep in mind that "
+"the\n"
+" data will be retrieved from Odoo."
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__delivery_type__gls_asm
msgid "GLS ASM"
@@ -465,10 +483,17 @@ msgstr ""
msgid "GLS Manifest"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__gls_asm_picking_ref
+msgid "GLS Picking Reference"
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/delivery_carrier.py:0
#, python-format
-msgid "GLS Pickup extra info: Tracking number: %s Bultos: %s"
+msgid ""
+"GLS Pickup extra info: Tracking number: %(codigo)s Bultos: "
+"%(bultos)s"
msgstr ""
#. module: delivery_gls_asm
@@ -500,9 +525,9 @@ msgstr ""
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"GLS returned an error trying to record the shipping for {}.\n"
+"GLS returned an error trying to record the shipping for %(ref).\n"
"Error:\n"
-"{}"
+"%(error)"
msgstr ""
#. module: delivery_gls_asm
@@ -516,22 +541,27 @@ msgid ""
"characters."
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__gls_asm_with_return
+msgid "GLS/ASM With return"
+msgstr ""
+
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"GLS: No response from server getting state from ref {}.\n"
+"GLS: No response from server getting state from ref %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"GLS: No response from server printing label with ref {}.\n"
+"GLS: No response from server printing label with ref %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
#. module: delivery_gls_asm
@@ -555,9 +585,7 @@ msgid "IBEX"
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier__id
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard__id
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking__id
msgid "ID"
msgstr ""
@@ -586,6 +614,13 @@ msgstr ""
msgid "INTERNACIONAL EXPRESS"
msgstr ""
+#. module: delivery_gls_asm
+#: model:ir.model.fields,help:delivery_gls_asm.field_delivery_carrier__gls_asm_cash_on_delivery
+msgid ""
+"If checked, it means that the carrier is paid with cash. It assumes there is "
+"a sale order linked and it will use that total amount as the value to be paid"
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__36
msgid "Int. WEB"
@@ -600,9 +635,7 @@ msgid ""
msgstr ""
#. module: delivery_gls_asm
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_delivery_carrier____last_update
#: model:ir.model.fields,field_description:delivery_gls_asm.field_gls_asm_minifest_wizard____last_update
-#: model:ir.model.fields,field_description:delivery_gls_asm.field_stock_picking____last_update
msgid "Last Modified on"
msgstr ""
@@ -650,18 +683,9 @@ msgstr ""
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
msgid ""
-"No response from server getting manifisto for GLS.\n"
-"Traceback:\n"
-"{}"
-msgstr ""
-
-#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
-#, python-format
-msgid ""
-"No response from server recording GLS delivery {}.\n"
+"No response from server recording GLS delivery %(ref).\n"
"Traceback:\n"
-"{}"
+"%(error)"
msgstr ""
#. module: delivery_gls_asm
diff --git a/delivery_gls_asm/i18n/delivery_gls_asm.pot b/delivery_gls_asm/i18n/delivery_gls_asm.pot
index 6b56c83c646..2eeaab406cc 100644
--- a/delivery_gls_asm/i18n/delivery_gls_asm.pot
+++ b/delivery_gls_asm/i18n/delivery_gls_asm.pot
@@ -422,6 +422,13 @@ msgstr ""
msgid "GLASS"
msgstr ""
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+msgid ""
+"GLS API does no longer support the manifest creation, so keep in mind that the\n"
+" data will be retrieved from Odoo."
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__delivery_type__gls_asm
msgid "GLS ASM"
@@ -670,15 +677,6 @@ msgstr ""
msgid "No Realizada"
msgstr ""
-#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
-#, python-format
-msgid ""
-"No response from server getting manifisto for GLS.\n"
-"Traceback:\n"
-"%(error)"
-msgstr ""
-
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
diff --git a/delivery_gls_asm/i18n/es.po b/delivery_gls_asm/i18n/es.po
index 8f6fe347c97..2cfa68e7feb 100644
--- a/delivery_gls_asm/i18n/es.po
+++ b/delivery_gls_asm/i18n/es.po
@@ -432,6 +432,14 @@ msgstr "Franja Horaria"
msgid "GLASS"
msgstr "GLASS"
+#. module: delivery_gls_asm
+#: model_terms:ir.ui.view,arch_db:delivery_gls_asm.delivery_manifest_wizard_form
+msgid ""
+"GLS API does no longer support the manifest creation, so keep in mind that "
+"the\n"
+" data will be retrieved from Odoo."
+msgstr ""
+
#. module: delivery_gls_asm
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__delivery_type__gls_asm
msgid "GLS ASM"
@@ -706,18 +714,6 @@ msgstr "Masivo"
msgid "No Realizada"
msgstr ""
-#. module: delivery_gls_asm
-#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
-#, python-format
-msgid ""
-"No response from server getting manifisto for GLS.\n"
-"Traceback:\n"
-"%(error)"
-msgstr ""
-"No hay respuesta del servidor obteniendo manifisto para GLS.\n"
-"Rastrear:\n"
-"%(error)"
-
#. module: delivery_gls_asm
#: code:addons/delivery_gls_asm/models/gls_asm_request.py:0
#, python-format
@@ -1056,3 +1052,13 @@ msgstr "C.P."
#: model:ir.model.fields.selection,name:delivery_gls_asm.selection__delivery_carrier__gls_asm_service__35
msgid "dPRO"
msgstr "dPRO"
+
+#, python-format
+#~ msgid ""
+#~ "No response from server getting manifisto for GLS.\n"
+#~ "Traceback:\n"
+#~ "%(error)"
+#~ msgstr ""
+#~ "No hay respuesta del servidor obteniendo manifisto para GLS.\n"
+#~ "Rastrear:\n"
+#~ "%(error)"
diff --git a/delivery_gls_asm/models/gls_asm_request.py b/delivery_gls_asm/models/gls_asm_request.py
index d84e54d5d8b..1fe39fe54df 100644
--- a/delivery_gls_asm/models/gls_asm_request.py
+++ b/delivery_gls_asm/models/gls_asm_request.py
@@ -77,19 +77,6 @@ def _prepare_cancel_pickup_docin(self, **kwargs):
**kwargs
)
- def _prepare__get_manifest_docin(self, **kwargs):
- """ASM API is not very standard. Prepare parameters to pass them raw in
- the SOAP message"""
- return """
-
- {date_from}
-
-
- """.format(
- **kwargs
- )
-
def _prepare_send_shipping_docin(self, **kwargs):
"""ASM API is not very standard. Prepare parameters to pass them raw in
the SOAP message"""
@@ -454,37 +441,3 @@ def _cancel_pickup(self, reference=False):
response["gls_sent_xml"] = xml
response["_return"] = int(response["_return"])
return response
-
- def _get_manifest(self, date_from):
- """Get shipping manifest for a given range date
- :param str date_from -- date in format "%d/%m&Y"
- :returns: list of dicts with format
- {
- 'codplaza_pag': 771, 'codcli': 601, 'cliente': Pruebas WS
- 'codplaza_org': 771, 'codexp': 468644476, 'codservicio': 74,
- 'servicio': EUROBUSINESS PARCEL, 'codhorario': 3,
- 'horario': BusinessParcel, 'codestado': -10, 'estado': GRABADO,
- 'bultos': 1, 'kgs': 7,0, 'nombre_dst': TEST USER,
- 'calle_dst': direccion, 'localidad_dst': Fontenay-Trésigny,
- 'cp_dst': 77610, 'departamento_dst': , 'pais_dst': FR,
- }
- """
- xml = Raw(
- self._prepare__get_manifest_docin(
- uidcustomer=self.uidcustomer, date_from=date_from
- )
- )
- _logger.debug(xml)
- try:
- res = self.client.service.GetManifiesto(docIn=xml)
- _logger.debug(res)
- except Exception as e:
- raise UserError(
- _(
- "No response from server getting manifisto for GLS.\n"
- "Traceback:\n%(error)"
- )
- % {"error": e}
- ) from e
- res = self._recursive_asdict(res.Servicios.Envios).get("Envio", [])
- return res
diff --git a/delivery_gls_asm/static/description/index.html b/delivery_gls_asm/static/description/index.html
index 0c1fe74736e..73842699743 100644
--- a/delivery_gls_asm/static/description/index.html
+++ b/delivery_gls_asm/static/description/index.html
@@ -1,20 +1,20 @@
-
+
-
+
Delivery GLS-ASM