From 7a480e72529d5dd9117a7797aa872827a8bd0aca Mon Sep 17 00:00:00 2001 From: Ethan Hildick Date: Thu, 20 May 2021 18:32:29 +0200 Subject: [PATCH 01/47] [14.0][ADD] delivery_dhl_parcel: DHL Parcel integration with Odoo --- delivery_dhl_parcel/README.rst | 169 ++++++ delivery_dhl_parcel/__init__.py | 2 + delivery_dhl_parcel/__manifest__.py | 20 + .../Documentacion_Integracion_DHL_Parcel.pdf | Bin 0 -> 206536 bytes delivery_dhl_parcel/i18n/es.po | 271 +++++++++ delivery_dhl_parcel/models/__init__.py | 3 + .../models/delivery_carrier.py | 263 +++++++++ .../models/dhl_parcel_request.py | 213 +++++++ delivery_dhl_parcel/models/stock_picking.py | 52 ++ delivery_dhl_parcel/readme/CONFIGURE.rst | 10 + delivery_dhl_parcel/readme/CONTRIBUTORS.rst | 3 + delivery_dhl_parcel/readme/DESCRIPTION.rst | 14 + delivery_dhl_parcel/readme/INSTALL.rst | 5 + delivery_dhl_parcel/readme/ROADMAP.rst | 4 + delivery_dhl_parcel/readme/USAGE.rst | 58 ++ .../security/ir.model.access.csv | 2 + .../static/description/icon.png | Bin 0 -> 5865 bytes .../static/description/index.html | 543 ++++++++++++++++++ delivery_dhl_parcel/tests/__init__.py | 1 + .../tests/test_delivery_dhl_parcel.py | 167 ++++++ .../views/delivery_carrier_view.xml | 68 +++ .../views/stock_picking_views.xml | 62 ++ delivery_dhl_parcel/wizard/__init__.py | 1 + .../wizard/dhl_parcel_end_day_wizard.py | 37 ++ .../dhl_parcel_end_day_wizard_views.xml | 22 + 25 files changed, 1990 insertions(+) create mode 100644 delivery_dhl_parcel/README.rst create mode 100644 delivery_dhl_parcel/__init__.py create mode 100644 delivery_dhl_parcel/__manifest__.py create mode 100644 delivery_dhl_parcel/doc/Documentacion_Integracion_DHL_Parcel.pdf create mode 100644 delivery_dhl_parcel/i18n/es.po create mode 100644 delivery_dhl_parcel/models/__init__.py create mode 100644 delivery_dhl_parcel/models/delivery_carrier.py create mode 100644 delivery_dhl_parcel/models/dhl_parcel_request.py create mode 100644 delivery_dhl_parcel/models/stock_picking.py create mode 100644 delivery_dhl_parcel/readme/CONFIGURE.rst create mode 100644 delivery_dhl_parcel/readme/CONTRIBUTORS.rst create mode 100644 delivery_dhl_parcel/readme/DESCRIPTION.rst create mode 100644 delivery_dhl_parcel/readme/INSTALL.rst create mode 100644 delivery_dhl_parcel/readme/ROADMAP.rst create mode 100644 delivery_dhl_parcel/readme/USAGE.rst create mode 100644 delivery_dhl_parcel/security/ir.model.access.csv create mode 100644 delivery_dhl_parcel/static/description/icon.png create mode 100644 delivery_dhl_parcel/static/description/index.html create mode 100644 delivery_dhl_parcel/tests/__init__.py create mode 100644 delivery_dhl_parcel/tests/test_delivery_dhl_parcel.py create mode 100644 delivery_dhl_parcel/views/delivery_carrier_view.xml create mode 100644 delivery_dhl_parcel/views/stock_picking_views.xml create mode 100644 delivery_dhl_parcel/wizard/__init__.py create mode 100644 delivery_dhl_parcel/wizard/dhl_parcel_end_day_wizard.py create mode 100644 delivery_dhl_parcel/wizard/dhl_parcel_end_day_wizard_views.xml diff --git a/delivery_dhl_parcel/README.rst b/delivery_dhl_parcel/README.rst new file mode 100644 index 00000000000..cd5bbd86a11 --- /dev/null +++ b/delivery_dhl_parcel/README.rst @@ -0,0 +1,169 @@ +=================== +Delivery DHL Parcel +=================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-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_dhl_parcel + :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_dhl_parcel + :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 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Este módulo integra la API de DHL Parcel con Odoo. No es +válido para otras integraciones de DHL como el Express, que usan otras APIs. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +Depende de los módulos de OCA/delivery-carrier `delivery_package_number` y `delivery_state`. + +La API de DHL Parcel 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 *DHL Parcel* Como proveedor. +#. Configure los datos de servicio que tiene contratados y el producto de + envío que desea utilizar. + +El código de cliente es el UID con un guión y sin letras al final +i.e. UID = 08100000AB, tu Código de cliente sería 08-100000 + +Usage +===== + +Estas son las distintas operaciones posibles con este módulo: + +Grabar servicios +~~~~~~~~~~~~~~~~ + + #. Al confirmar el albarán, el servicio se grabará en DHL Parcel. + #. 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 DHL Parcel 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 DHL Parcel" 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 + DHL Parcel. + #. Para ello, vaya al albarán con un envío DHL Parcel ya grabado y en la pestaña de + *Información adicional* verá el botón *Actualizar seguimiento* para pedir + a la API que actualice el estado de este envío en Odoo. + +Cierre del día +~~~~~~~~~~~~~~~~~~~~ + + #. Desde un smart button en el formulario del transportista, se puede + cerrar el día manualmente. + +Depuración de errores +~~~~~~~~~~~~~~~~~~~~~ + + #. Es importante tener en cuenta que solo funcionará con códigos postales de + España. + #. En cada servicio DHL Parcel dispone de una pestaña llamada "Técnico" en la + que puede consultar la última petición y respuesta a la API de DHL Parcel. + 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 registrar 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 +~~~~~~~ + +* Studio73 + +Contributors +~~~~~~~~~~~~ + +* `Studio73 `_: + + * Ethan Hildick + +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_dhl_parcel/__init__.py b/delivery_dhl_parcel/__init__.py new file mode 100644 index 00000000000..9b4296142f4 --- /dev/null +++ b/delivery_dhl_parcel/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/delivery_dhl_parcel/__manifest__.py b/delivery_dhl_parcel/__manifest__.py new file mode 100644 index 00000000000..fe9e478781a --- /dev/null +++ b/delivery_dhl_parcel/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2021 Studio73 - Ethan Hildick +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Delivery DHL Parcel", + "summary": "Delivery Carrier implementation for DHL Parcel using their API", + "version": "14.0.1.0.0", + "category": "Stock", + "website": "https://github.com/OCA/l10n-spain", + "author": "Studio73, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["delivery_package_number", "delivery_state"], + "data": [ + "security/ir.model.access.csv", + "views/delivery_carrier_view.xml", + "views/stock_picking_views.xml", + "wizard/dhl_parcel_end_day_wizard_views.xml", + ], +} diff --git a/delivery_dhl_parcel/doc/Documentacion_Integracion_DHL_Parcel.pdf b/delivery_dhl_parcel/doc/Documentacion_Integracion_DHL_Parcel.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c7c5706d390d6bac277f777dbaa7da289840743c GIT binary patch literal 206536 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

SVF*VlO8Zso(}6D#Q}#^J;5n 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 literal 0 HcmV?d00001 diff --git a/delivery_dhl_parcel/i18n/es.po b/delivery_dhl_parcel/i18n/es.po new file mode 100644 index 00000000000..9969ef791af --- /dev/null +++ b/delivery_dhl_parcel/i18n/es.po @@ -0,0 +1,271 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * delivery_dhl_parcel +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-05-12 13:38+0000\n" +"PO-Revision-Date: 2021-05-12 13:38+0000\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_dhl_parcel +#: model_terms:ir.ui.view,arch_db:delivery_dhl_parcel.delivery_endday_wizard_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_dhl_parcel_endday_wizard__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_dhl_parcel_endday_wizard__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_dhl_parcel_endday_wizard__customer_accounts +msgid "Customer codes to end day for" +msgstr "Códigos de cliente para cerrar el día" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields.selection,name:delivery_dhl_parcel.selection__delivery_carrier__delivery_type__dhl_parcel +msgid "DHL Parcel" +msgstr "DHL Parcel" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/delivery_carrier.py:0 +#: code:addons/delivery_dhl_parcel/models/delivery_carrier.py:0 +#, python-format +msgid "" +"DHL Parcel API doesn't provide methods to compute delivery rates, so\n" +" you should rely on another price method instead or override this\n" +" one in your custom code." +msgstr "" +"DHL Parcel API no provee ninguna forma de calcular las tarifas de envío, por\n" +" lo tanto se deberia usar otro método o sobreescribir este en una herencia" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/delivery_carrier.py:0 +#, python-format +msgid "DHL Parcel Cancellation failed with reason: %s" +msgstr "Cancelación DHL Parcel fallado por: %s" + +#. module: delivery_dhl_parcel +#: model_terms:ir.ui.view,arch_db:delivery_dhl_parcel.view_delivery_carrier_form +msgid "DHL Parcel Configuration" +msgstr "Configuración DHL Parcel" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/delivery_carrier.py:0 +#, python-format +msgid "DHL Parcel End Day" +msgstr "Cerrar el día (DHL Parcel)" + +#. module: delivery_dhl_parcel +#: model_terms:ir.ui.view,arch_db:delivery_dhl_parcel.delivery_endday_wizard_form +msgid "DHL Parcel End day" +msgstr "Cerrar el día (DHL Parcel)" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/delivery_carrier.py:0 +#, python-format +msgid "DHL Parcel Expedition with reference %s cancelled" +msgstr "Expedición DHL Parcel con referencia %s cancelado" + +#. module: delivery_dhl_parcel +#: model_terms:ir.ui.view,arch_db:delivery_dhl_parcel.view_picking_form +msgid "DHL Parcel Label" +msgstr "Etiqueta DHL Parcel" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__dhl_parcel_password +msgid "DHL Parcel Password" +msgstr "Contraseña DHL Parcel" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_dhl_parcel_endday_wizard__carrier_id +msgid "DHL Parcel Service" +msgstr "Servicio DHL Parcel" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/delivery_carrier.py:0 +#, python-format +msgid "" +"DHL Parcel Shipping extra info:\n" +"Origin: {}, Customer: {}, AWB: {}, LP: {}" +msgstr "" +"Información adicional del envío DHL Parcel:\n" +"Orígen: {}, Cliente: {}, AWB: {}, LP: {}" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_stock_picking__dhl_parcel_public_tracking_ref +msgid "DHL Parcel Tracking reference" +msgstr "Referencia de seguimiento DHL Parcel" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__dhl_parcel_uid +msgid "DHL Parcel UID" +msgstr "UID DHL Parcel" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__dhl_parcel_customer_code +msgid "DHL Parcel customer code" +msgstr "Código de cliente DHL Parcel" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/stock_picking.py:0 +#, python-format +msgid "DHL Parcel label for %s" +msgstr "Etiqueta DHL Parcel para %s" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__dhl_parcel_last_end_day_report +msgid "DHL Parcel last manual end day report" +msgstr "Último informe DHL Parcel de cierro de día" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_stock_picking__dhl_parcel_shipment_held +msgid "DHL Parcel shipment on hold" +msgstr "Envío DHL Parcel retenido" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__display_name +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_dhl_parcel_endday_wizard__display_name +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_stock_picking__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: delivery_dhl_parcel +#: model_terms:ir.ui.view,arch_db:delivery_dhl_parcel.delivery_endday_wizard_form +#: model_terms:ir.ui.view,arch_db:delivery_dhl_parcel.view_delivery_carrier_form +msgid "End day" +msgstr "Cerrar el día" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/stock_picking.py:0 +#, python-format +msgid "Held shipment for {}" +msgstr "Envío {} retenido" + +#. module: delivery_dhl_parcel +#: model_terms:ir.ui.view,arch_db:delivery_dhl_parcel.view_picking_form +msgid "Hold DHL Parcel shipment" +msgstr "Retener envío DHL Parcel" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__id +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_dhl_parcel_endday_wizard__id +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_stock_picking__id +msgid "ID" +msgstr "ID" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,help:delivery_dhl_parcel.field_dhl_parcel_endday_wizard__customer_accounts +msgid "" +"If doing multiple, input them separated by commas without spaces.\n" +"i.e. '001-000001,002-000002'\n" +"You can also use 'ALL' to end all of them" +msgstr "" +"Si se están cerrando vários, introducelos separados por comas sin espacios\n" +"i.e. '001-000001,002-000002'\n" +"También se puede usar 'ALL' para cerrarlos todos" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__dhl_parcel_last_request +msgid "Last DHL Parcel API request" +msgstr "Último pedido a la API DHL Parcel" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__dhl_parcel_last_response +msgid "Last DHL Parcel API response" +msgstr "Última respuesta a la API DHL Parcel" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier____last_update +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_dhl_parcel_endday_wizard____last_update +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_stock_picking____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_dhl_parcel_endday_wizard__write_uid +msgid "Last Updated by" +msgstr "Última modificación por" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_dhl_parcel_endday_wizard__write_date +msgid "Last Updated on" +msgstr "Última modificación el" + +#. module: delivery_dhl_parcel +#: model:ir.model,name:delivery_dhl_parcel.model_dhl_parcel_endday_wizard +msgid "Manually end the day" +msgstr "Cerrar el día manualmente" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__dhl_parcel_last_end_day_report_name +msgid "Filename" +msgstr "Nombre fichero" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,field_description:delivery_dhl_parcel.field_delivery_carrier__delivery_type +msgid "Provider" +msgstr "Proveedor" + +#. module: delivery_dhl_parcel +#: model_terms:ir.ui.view,arch_db:delivery_dhl_parcel.view_picking_form +msgid "Release DHL Parcel shipment" +msgstr "Liberar envío DHL Parcel" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/stock_picking.py:0 +#, python-format +msgid "Released shipment for {}" +msgstr "Envío {} liberado" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/dhl_parcel_request.py:0 +#, python-format +msgid "Server not reachable, please try again later" +msgstr "El servidor no responde, por favor vuelve a intentarlo más tarde" + +#. module: delivery_dhl_parcel +#: model:ir.model,name:delivery_dhl_parcel.model_delivery_carrier +msgid "Shipping Methods" +msgstr "Métodos de envío" + +#. module: delivery_dhl_parcel +#: model_terms:ir.ui.view,arch_db:delivery_dhl_parcel.view_delivery_carrier_form +msgid "Technical" +msgstr "Técnico" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/dhl_parcel_request.py:0 +#, python-format +msgid "Timeout: the server did not reply within 60s" +msgstr "El servidor no ha contestado en 60s" + +#. module: delivery_dhl_parcel +#: model:ir.model,name:delivery_dhl_parcel.model_stock_picking +msgid "Transfer" +msgstr "Albarán" + +#. module: delivery_dhl_parcel +#: code:addons/delivery_dhl_parcel/models/dhl_parcel_request.py:0 +#, python-format +msgid "Unsupported request type, please only use 'GET' or 'POST'" +msgstr "Tipo de respuesta no soportado, por favor solo usa 'GET' o 'POST'" + +#. module: delivery_dhl_parcel +#: model:ir.model.fields,help:delivery_dhl_parcel.field_delivery_carrier__dhl_parcel_last_request +#: model:ir.model.fields,help:delivery_dhl_parcel.field_delivery_carrier__dhl_parcel_last_response +msgid "Used for debugging" +msgstr "Usado para debug" diff --git a/delivery_dhl_parcel/models/__init__.py b/delivery_dhl_parcel/models/__init__.py new file mode 100644 index 00000000000..4076e7fd43f --- /dev/null +++ b/delivery_dhl_parcel/models/__init__.py @@ -0,0 +1,3 @@ +from . import delivery_carrier +from . import dhl_parcel_request +from . import stock_picking diff --git a/delivery_dhl_parcel/models/delivery_carrier.py b/delivery_dhl_parcel/models/delivery_carrier.py new file mode 100644 index 00000000000..21f48c26d0f --- /dev/null +++ b/delivery_dhl_parcel/models/delivery_carrier.py @@ -0,0 +1,263 @@ +# Copyright 2021 Studio73 - Ethan Hildick +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import base64 + +from odoo import _, fields, models + +from .dhl_parcel_request import ( + DHL_PARCEL_DELIVERY_STATES_STATIC, + DHL_PARCEL_INCOTERMS_STATIC, + DhlParcelRequest, +) + + +class DeliveryCarrier(models.Model): + _inherit = "delivery.carrier" + + delivery_type = fields.Selection( + selection_add=[("dhl_parcel", "DHL Parcel")], + ondelete={"dhl_parcel": "set default"}, + ) + dhl_parcel_customer_code = fields.Char(string="DHL Parcel customer code") + dhl_parcel_incoterm = fields.Selection( + string="DHL Parcel incoterms", selection=DHL_PARCEL_INCOTERMS_STATIC + ) + dhl_parcel_uid = fields.Char(string="DHL Parcel UID") + dhl_parcel_password = fields.Char(string="DHL Parcel Password") + dhl_parcel_last_request = fields.Text( + string="Last DHL Parcel API request", help="Used for debugging", readonly=True + ) + dhl_parcel_last_response = fields.Text( + string="Last DHL Parcel API response", help="Used for debugging", readonly=True + ) + dhl_parcel_last_end_day_report = fields.Binary( + string="DHL Parcel last manual end day report" + ) + dhl_parcel_last_end_day_report_name = fields.Char(string="Filename") + + def dhl_parcel_get_tracking_link(self, picking): + """Provide tracking link for the customer""" + tracking_url = ( + "https://clientesparcel.dhl.es/seguimientoenvios/integra/" + "SeguimientoDocumentos.aspx?codigo={}&anno={}&lang=sp" + ) + return tracking_url.format( + picking.carrier_tracking_ref, fields.Date.today().year + ) + + def _get_dhl_parcel_receiver_info(self, picking): + partner = picking.partner_id + return { + "Name": partner.name or partner.parent_id.name or "", + "Address": partner.street or "", + "City": partner.city or "", + "PostalCode": partner.zip or "", + "Country": partner.country_id.code or "", + "Phone": partner.phone or "", + "Email": partner.email or "", + } + + def _get_dhl_parcel_sender_info(self, picking): + """Optional, if the sender information is not + sent, they will be fetched from DHL web Service B2B. + """ + partner = picking.picking_type_id.warehouse_id.partner_id + return { + "Name": partner.name or partner.parent_id.name or "", + "Address": partner.street or "", + "City": partner.city or "", + "PostalCode": partner.zip or "", + "Country": partner.country_id.code or "", + "Phone": partner.phone or "", + "Email": partner.email or "", + } + + def _prepare_dhl_parcel_shipping(self, picking): + """Convert picking values for dhl parcel api + :param picking record with picking to send + :returns dict values for the connector + """ + self.ensure_one() + return { + "Customer": self.dhl_parcel_customer_code, + "Receiver": self._get_dhl_parcel_receiver_info(picking), + "Sender": self._get_dhl_parcel_sender_info(picking), # [optional] + "Reference": picking.name, # [optional] + "Quantity": picking.number_of_packages, # 1-999 + "Weight": picking.shipping_weight, # in kg, 1-99999 + "WeightVolume": "", # [optional] Volume, in kg + "CODAmount": "", # [optional] + "CODExpenses": "", # [optional], mandatory if CODAmount filled + "CODCurrency": "", # [optional], mandatory if CODAmount filled + "InsuranceAmount": "", # [optional] + "InsuranceExpenses": "", # [optional], mandatory if InsuranceAmount filled + "InsuranceCurrency": "", # [optional], mandatory if InsuranceAmount filled + "DeliveryNote": "", # [optional] + "ServiceType": "", # [optional] + "Remarks1": "", # [optional] + "Remarks2": "", # [optional] + "Incoterms": self.dhl_parcel_incoterm, # CPT paid, EXW owed + "ContactName": "", # [optional] + "GoodsDescription": "", # [optional] + "CustomsValue": "", # [optional] + "CustomsCurrency": "", # [optional] + "Format": "PDF", # [optional] + "tracking_number": False, + "exact_price": 0, + } + + def dhl_parcel_send_shipping(self, pickings): + """Send the package to DHL Parcel + :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. + """ + dhl_parcel_request = DhlParcelRequest(self) + result = [] + for picking in pickings: + vals = self._prepare_dhl_parcel_shipping(picking) + response = dhl_parcel_request.create_shipment(vals) + if not response: + result.append(vals) + continue + vals["tracking_number"] = response.get("Tracking", "") + # We post an extra message in the chatter with the rest of the response + body = _( + "DHL Parcel Shipping extra info:\n" + "Origin: {}, Customer: {}, AWB: {}, LP: {}" + ).format( + response.get("Origin", "N/A"), + response.get("Customer", "N/A"), + response.get("AWB", "N/A"), + response.get("LP", "N/A"), + ) + attachment = [] + if response.get("Label"): + attachment = [ + ( + "dhl_parcel_{}.pdf".format(response.get("Tracking", "")), + base64.b64decode(response.get("Label")), + ) + ] + picking.message_post(body=body, attachments=attachment) + result.append(vals) + return result + + def dhl_parcel_tracking_state_update(self, picking): + """Tracking state update""" + self.ensure_one() + if not picking.carrier_tracking_ref: + return + dhl_parcel_request = DhlParcelRequest(self) + tracking_events = dhl_parcel_request.track_shipment( + picking.carrier_tracking_ref, "events" + ) + if not tracking_events: + return + picking.tracking_state_history = "\n".join( + [ + "{} {} - [{}] {}".format( + t.get("DateTime"), + t.get("Ubication"), + t.get("Code"), + t.get("Status"), + ) + for t in tracking_events + ] + ) + tracking = tracking_events.pop() + picking.tracking_state = "[{}] {}".format( + tracking.get("Code"), tracking.get("Status") + ) + picking.delivery_state = DHL_PARCEL_DELIVERY_STATES_STATIC.get( + tracking.get("Code"), "incidence" + ) + + def dhl_parcel_cancel_shipment(self, pickings): + """Cancel the expedition""" + dhl_parcel_request = DhlParcelRequest(self) + for picking in pickings.filtered("carrier_tracking_ref"): + response = dhl_parcel_request.cancel_shipment(picking.carrier_tracking_ref) + if not response: + msg = _( + "DHL Parcel Cancellation failed with reason: %s" + ) % response.get("Message", "Connection Error") + picking.message_post(body=msg) + continue + picking.carrier_tracking_ref = False + picking.message_post( + body=_("DHL Parcel Expedition with reference %s cancelled") + % picking.carrier_tracking_ref + ) + + def dhl_parcel_get_label(self, carrier_tracking_ref, label_format="pdf"): + """Generate label for picking + :param str carrier_tracking_ref - tracking reference + :returns base64 encoded label + """ + self.ensure_one() + if not carrier_tracking_ref: + return False + dhl_parcel_request = DhlParcelRequest(self) + label = dhl_parcel_request.print_shipment( + carrier_tracking_ref, label_format=label_format + ) + return label or False + + def dhl_parcel_hold_shipment(self, carrier_tracking_ref): + """Hold shipment + :param str carrier_tracking_ref - tracking reference + :returns boolean + """ + self.ensure_one() + if not carrier_tracking_ref: + return False + dhl_parcel_request = DhlParcelRequest(self) + return dhl_parcel_request.hold_shipment(carrier_tracking_ref) + + def dhl_parcel_release_shipment(self, carrier_tracking_ref): + """Release shipment + :param str carrier_tracking_ref - tracking reference + :returns boolean + """ + self.ensure_one() + if not carrier_tracking_ref: + return False + dhl_parcel_request = DhlParcelRequest(self) + return dhl_parcel_request.release_shipment(carrier_tracking_ref) + + def dhl_parcel_rate_shipment(self, order): + """Not implemented with DHL, these values are so it works with websites""" + return { + "success": True, + "price": self.product_id.lst_price, + "error_message": _( + """DHL Parcel API doesn't provide methods to compute delivery rates, so + you should rely on another price method instead or override this + one in your custom code.""" + ), + "warning_message": _( + """DHL Parcel API doesn't provide methods to compute delivery rates, so + you should rely on another price method instead or override this + one in your custom code.""" + ), + } + + def action_open_end_day(self): + """Action to launch the end day wizard""" + self.ensure_one() + wizard = self.env["dhl.parcel.endday.wizard"].create({"carrier_id": self.id}) + view_id = self.env.ref("delivery_dhl_parcel.delivery_endday_wizard_form").id + return { + "name": _("DHL Parcel End Day"), + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "dhl.parcel.endday.wizard", + "view_id": view_id, + "views": [(view_id, "form")], + "target": "new", + "res_id": wizard.id, + "context": self.env.context, + } diff --git a/delivery_dhl_parcel/models/dhl_parcel_request.py b/delivery_dhl_parcel/models/dhl_parcel_request.py new file mode 100644 index 00000000000..08cb2513699 --- /dev/null +++ b/delivery_dhl_parcel/models/dhl_parcel_request.py @@ -0,0 +1,213 @@ +# Copyright 2021 Studio73 - Ethan Hildick +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).. + +import requests + +from odoo import _, fields +from odoo.exceptions import UserError + +DHL_PARCEL_DELIVERY_STATES_STATIC = { + "A": "shipping_recorded_in_carrier", # Assigned + "T": "in_transit", # Transit + "R": "customer_delivered", # Received +} + +DHL_PARCEL_INCOTERMS_STATIC = [ + ("CPT", "Paid transport"), + ("EXW", "Owed transport"), +] + +DHL_PATH = "https://external.dhl.es/cimapi/api/v1/customer/" + + +class DhlParcelRequest(object): + """Interface between DHL Parcel API and Odoo recordset + Abstract DHL Parcel API Operations to connect them with Odoo + """ + + def __init__(self, carrier): + self.carrier_id = carrier + self.token = self._get_new_auth_token( + username=carrier.dhl_parcel_uid or "", + password=carrier.dhl_parcel_password or "", + ) + self.year = str(fields.Date.today().year)[-1] # last digit of the year + + def _send_api_request(self, request_type, url, data=None, skip_auth=False): + if data is None: + data = {} + try: + auth = {} + if not skip_auth: + auth = {"Authorization": "Bearer {}".format(self.token)} + if request_type == "GET": + res = requests.get(url=url, headers=auth) + elif request_type == "POST": + res = requests.post(url=url, json=data, headers=auth) + else: + raise UserError( + _("Unsupported request type, please only use 'GET' or 'POST'") + ) + res.raise_for_status() + self.carrier_id.write( + { + "dhl_parcel_last_request": ( + ("Request type: {}\nURL: {}\nData: {}").format( + request_type, url, data + ) + ), + "dhl_parcel_last_response": res.text or "", + } + ) + except requests.exceptions.Timeout: + raise UserError(_("Timeout: the server did not reply within 60s")) + except (ValueError, requests.exceptions.ConnectionError): + raise UserError(_("Server not reachable, please try again later")) + except requests.exceptions.HTTPError as e: + raise UserError( + _("{}\n{}".format(e, res.json().get("Message", "") if res.text else "")) + ) + return res + + def _get_new_auth_token(self, username, password): + res = self._send_api_request( + request_type="POST", + url=DHL_PATH + "authenticate", + data={"Username": username, "Password": password}, + skip_auth=True, + ) + return res.json() + + def create_shipment(self, vals): + """ + :param dict vals -- data to use in create request + :return dict with format + { + "Origin": "08", + "Customer": "001000", + "Tracking": "0870002260", + "AWB": "", + "LP": ["JJD00006080070002260001"], + "Label": "JVBERi0xL..........” (Label data in Base64) + } + """ + res = self._send_api_request( + request_type="POST", url=DHL_PATH + "shipment", data=vals + ) + return res.json() + + def track_shipment(self, reference=False, track="status"): + """Gets tracking info for shipment + Event Code meaning: + T - Transit + A - Assigned + R - Received + :param str reference -- public shipping reference + :param str track -- + - "events" (events) + - "status" (current status with latest event) + _ "both" + :returns: dict with format + { + "Year": "0", + "From": "20", + "Tracking": "2013902080", + "Origin": "San Sebastián", + "Destination": "Vitoria", + "Product": "EUROPLUS DOM", + "Parcels": 1, + "Weight": 86, + "Ship_Reference": "PXKW00340DM99901", + "AWB": "", + "Receiver": "", + "Events": [ + { + "DateTime": "2020-10-02T10:40:49", + "Code": "A", + "Status": "Es posible que la fecha prevista de entrega" + " se posponga un día hábil", + "Ubication": "Araba/Álava" + } + ] + } + """ + res = self._send_api_request( + request_type="GET", + url=(DHL_PATH + "track?id={}&idioma=es&show={}".format(reference, track)), + ) + return res.json() + + def print_shipment(self, reference=False, label_format="PDF"): + """Get shipping label for the given ref + :param str reference -- public shipping reference + :returns: base64 with pdf label or False + """ + res = self._send_api_request( + request_type="GET", + url=( + DHL_PATH + "shipment?" + "Year={}&Tracking={}&Action=PRINT" + "&LabelFrom={}&LabelTo={}&Format={}".format( + self.year, reference, 1, 1, label_format + ) + ), + ) + return res.json().get("Label", False) + + def cancel_shipment(self, reference=False): + """Delete shipment + :param str reference -- public shipping reference + :returns: str -- message text + """ + res = self._send_api_request( + request_type="GET", + url=DHL_PATH + "shipment?" + "Year={}&Tracking={}&Action=DELETE".format(self.year, reference), + ) + return True if res.status_code == 200 else False + + def hold_shipment(self, reference=False): + """Hold shipment, shipping will not be documented until it's released + :param str reference -- public shipping reference + :returns: Boolean + """ + res = self._send_api_request( + request_type="GET", + url=DHL_PATH + "shipment?" + "Year={}&Tracking={}&Action=HOLD".format(self.year, reference), + ) + return True if res.status_code == 200 else False + + def release_shipment(self, reference=False): + """Release shipment + :param str reference -- public shipping reference + :returns: Boolean + """ + res = self._send_api_request( + request_type="GET", + url=DHL_PATH + "shipment?" + "Year={}&Tracking={}&Action=RELEASE".format(self.year, reference), + ) + return True if res.status_code == 200 else False + + def end_day(self, customers="", report_type=""): + """End day + :param str customers -- Customer codes seperated by ',' or "ALL" for all of them + :param str report_type -- PDF, DOC, XLS, RTF + :returns: dict in format + { + "Shipments": [{ + "Origin": "08", + "Customer": "001000", + "Year": "1", + "Tracking": "0824005834" + }], + "Report": "JVBERi..." + } + """ + res = self._send_api_request( + request_type="POST", + url=DHL_PATH + "endday", + data={"Accounts": customers, "Report": report_type}, + ) + return res.json() diff --git a/delivery_dhl_parcel/models/stock_picking.py b/delivery_dhl_parcel/models/stock_picking.py new file mode 100644 index 00000000000..1ab5712831b --- /dev/null +++ b/delivery_dhl_parcel/models/stock_picking.py @@ -0,0 +1,52 @@ +# Copyright 2021 Studio73 - Ethan Hildick +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import base64 + +from odoo import _, fields, models + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + dhl_parcel_shipment_held = fields.Boolean(string="DHL Parcel shipment on hold") + + def dhl_parcel_get_label(self, label_format="pdf"): + """Get DHL Parcel Label for this picking expedition""" + self.ensure_one() + tracking_ref = self.carrier_tracking_ref + if self.delivery_type != "dhl_parcel" or not tracking_ref: + return + label = base64.b64decode( + self.carrier_id.dhl_parcel_get_label( + tracking_ref, label_format=label_format + ) + ) + label_name = "dhl_parcel_{}.{}".format( + tracking_ref, "txt" if label_format == "zpl" else "pdf" + ) + self.message_post( + body=(_("DHL Parcel label for %s") % tracking_ref), + attachments=[(label_name, label)], + ) + # We return label in case it wants to be printed in an inheritance + return label + + def dhl_parcel_toggle_hold_shipment(self): + """Toggle between holding and releasing the DHL Parcel shipment""" + self.ensure_one() + tracking_ref = self.carrier_tracking_ref + if self.delivery_type != "dhl_parcel" or not tracking_ref: + return + message = "" + carrier = self.carrier_id + if self.dhl_parcel_shipment_held: + self.dhl_parcel_shipment_held = not carrier.dhl_parcel_release_shipment( + tracking_ref + ) + message = _("Released shipment for {}").format(tracking_ref) + else: + self.dhl_parcel_shipment_held = carrier.dhl_parcel_hold_shipment( + tracking_ref + ) + message = _("Held shipment for {}").format(tracking_ref) + self.message_post(body=message) diff --git a/delivery_dhl_parcel/readme/CONFIGURE.rst b/delivery_dhl_parcel/readme/CONFIGURE.rst new file mode 100644 index 00000000000..30b659fe6cb --- /dev/null +++ b/delivery_dhl_parcel/readme/CONFIGURE.rst @@ -0,0 +1,10 @@ +Para configurar el transportista: + +#. Vaya a *Inventario > Configuración > Entrega > Método de envío* y cree uno + nuevo. +#. Escoja *DHL Parcel* Como proveedor. +#. Configure los datos de servicio que tiene contratados y el producto de + envío que desea utilizar. + +El código de cliente es el UID con un guión y sin letras al final +i.e. UID = 08100000AB, tu Código de cliente sería 08-100000 diff --git a/delivery_dhl_parcel/readme/CONTRIBUTORS.rst b/delivery_dhl_parcel/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..46bd7afc3cb --- /dev/null +++ b/delivery_dhl_parcel/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Studio73 `_: + + * Ethan Hildick diff --git a/delivery_dhl_parcel/readme/DESCRIPTION.rst b/delivery_dhl_parcel/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..e58da9796c5 --- /dev/null +++ b/delivery_dhl_parcel/readme/DESCRIPTION.rst @@ -0,0 +1,14 @@ +Este módulo integra la API de DHL Parcel con Odoo. No es +válido para otras integraciones de DHL como el Express, que usan otras APIs. + +IMPORTANTE: +Hay varias APIs distintas para DHL España y DHL Parcel, esta API solo funciona para +una de ellas. Para notificar y pedir las credenciales correctas a tu comercial +de integración, se puede pasar el documento que hay en /doc para indicar +exactamente cuál es la API que se quiere usar. +El formato de las credenciales que se usan en esta es el siguiente: + +Usuario: 11000000EMPRESA +Pass: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + +Puede que acepte algún otro, pero no puedo verificarlo. diff --git a/delivery_dhl_parcel/readme/INSTALL.rst b/delivery_dhl_parcel/readme/INSTALL.rst new file mode 100644 index 00000000000..ecb1c595fe1 --- /dev/null +++ b/delivery_dhl_parcel/readme/INSTALL.rst @@ -0,0 +1,5 @@ +Depende de los módulos de OCA/delivery-carrier `delivery_package_number` y `delivery_state`. + +La API de DHL Parcel 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_dhl_parcel/readme/ROADMAP.rst b/delivery_dhl_parcel/readme/ROADMAP.rst new file mode 100644 index 00000000000..7a2e7416179 --- /dev/null +++ b/delivery_dhl_parcel/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_dhl_parcel/readme/USAGE.rst b/delivery_dhl_parcel/readme/USAGE.rst new file mode 100644 index 00000000000..fe591ea750a --- /dev/null +++ b/delivery_dhl_parcel/readme/USAGE.rst @@ -0,0 +1,58 @@ +Estas son las distintas operaciones posibles con este módulo: + +Grabar servicios +~~~~~~~~~~~~~~~~ + + #. Al confirmar el albarán, el servicio se grabará en DHL Parcel. + #. 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 DHL Parcel 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 DHL Parcel" 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 + DHL Parcel. + #. Para ello, vaya al albarán con un envío DHL Parcel ya grabado y en la pestaña de + *Información adicional* verá el botón *Actualizar seguimiento* para pedir + a la API que actualice el estado de este envío en Odoo. + +Cierre del día +~~~~~~~~~~~~~~ + + #. Desde un smart button en el formulario del transportista, se puede + cerrar el día manualmente. + +Depuración de errores +~~~~~~~~~~~~~~~~~~~~~ + + #. Es importante tener en cuenta que solo funcionará con códigos postales de + España (por lo menos para el consignatario). + #. En cada servicio DHL Parcel dispone de una pestaña llamada "Técnico" en la + que puede consultar la última petición y respuesta a la API de DHL Parcel. + 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 registrar las + peticiones y las respuestas en el log. diff --git a/delivery_dhl_parcel/security/ir.model.access.csv b/delivery_dhl_parcel/security/ir.model.access.csv new file mode 100644 index 00000000000..4efcde8e45d --- /dev/null +++ b/delivery_dhl_parcel/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_dhl_parcel_endday_wizard_user,dhl.parcel.endday.wizard.user,model_dhl_parcel_endday_wizard,base.group_user,1,1,1,1 diff --git a/delivery_dhl_parcel/static/description/icon.png b/delivery_dhl_parcel/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c3a022453e8bcb3bd70a136033665a38750aa74c GIT binary patch literal 5865 zcmbVPbzD^6wm(yJjf6A|Ad=D}rIdhlDBU1Pmkdfbh=MedA|)l@Af3`6-6KdVNJ&a4 z@dowx?)}`q?t6QmbM`)~_UH3mYwf-E1?FM~kON>4C=?2TVLvb!33CP~xqP|p%B2UC z@nX;=@$@GlnLj6fmY(jx$>V!RygUxe)KMD2)P_G%~ZlKsOrSMenTV$fsZHhF0JWjjbVABE`aortaMRoqlh@Qe_ zom;1a@0xX5x2DR)oNYw=-FP(S@AGkJCAP^e_i@}j51pnwL!S@RQ>*0{wIg*sv##zE zuzg_xom}VQVeOZCeojQb3t044=lxh}zHSJSltr_nY36sEk&4xMF8c*S0hbnwobwAEe#diKXz#&+7bCCgHYy&~SIFLVD5GVi! z!6+!n$eG#TS8xz4to+iNu7Oww<6->{f`Ko9*lkDc(oGEF7w$vz%}s{PkoWIAJxM+| zP3I?xej=KcidAp@gpm-r>XkbqT53GaFLy{X*xFlMLT%jZnAXFTz=lRRM-ES zAnoXr#IR-c2box%wy?g=vx=mQ|}EWF4;+uH4UI zwaWisNN?b(y{R2UN8QwAm>@Oj{8h~8`X_49@9eyB#Ab%WlqEESZiX@OkN9P62olLI zfMQjfalCZ|R6qY2Jy{MFhfaIo7krv0)2D%<)^F^yxm5l2F94kj02?YoZ~z-75F7{$ z|8IPOu>>gm3ONEssikd^O(8HsCgT>D!_2}jsA(Rwv->+{u=|A+=q#5^AVH`pfs(nZ z(jYODtV!TjT2Iju`}=2USwx@Av-4i?SCy5xc2R*QesU2YExK7b)2Kt>gk0jjql3uf z>(AI78U%}y@+6)cG&NJ#)(pf+tDP4cYK8Kg+gq^X_BrWXlYA$U5H`Q`(YyUAig7(& zOlBX?d3!?Tz7`1!$!5-5&a@?lNyo;_Pw-5;Z}X@GC05&!BkTJU_t-{dn zTkR!$M8-xdeO;tx1tW^Otn7jgJ9|dsUb;UR@B8Q_Y7Tilx;EjW^;JhlL(D^Ki({Fd zg{#2UCLHd-rTjU(-Jx_{vcx-v>!sZi9iaj7U5G*X%*d10jf0%dZvEtmGF6p^FsM4GX?JU8ZNiumjNov09xr)Ixo{cypejr@%^2oJl(|3&+9UxvaF zuq))0ECSjVT5dsc**QBDGVvp$i)76Fa+>C?zX1nd0)CzgwNwnR#jrOAiIt25_nwUk(Ilc?W5xGS_Kca zZnUQMfT~I+!;rp?fy}{HL#p#|AtFuC=FyGie$J9C$fGPq1`8R}pFy6AOH{8ce)%JA zE4fG2-n1@M;irN>2{WFq54RCXX0WhND`TRVepnk9PTzLODX!Q-g?=c-H=12;b!}AA zEcbD*!=x*(_aKbj7>Tj8*7cY+I81JO2rexZ(P&=C>4V?-(DfcD5k$X|>>}i%&$E-U zb84GhKYaBcYRD2Q&%!Y4BgheHm51lh7x zZDx#)S^adqi>W?4N2?Y^=DGiHK0ml_MJ+vlewMg$vj=(T<7Z-L`3PN2_wIJHwdm*h zlS>EQBEx0}2uz4QJPH4J@X~?sEAdcr1gn6ckg$xF1sRKoY+N=4vn7mQdPGjs)y+LH zI0xOj^LMkwkpiD<_GQ@OXln`F{kFUp)_BW>)Tn)O=f~y5;G?qmGX&2=#NlR#?B?RA z7w_W66Yr7&f6la7ZCo3>c;)VdycVU@YD#^ z!dC~E#^FM3jBc!=^Rlnlvr7Rv$dfvrR&aZpx(l-$(bj&w6;vJK(D4l) zErb^yvO%NQ-nL+{;<`MudxdDm1I0~AGuVRhtmgQUkxnk^wt95md1AUHZAQt8)W! z@}7^hndAt^Qd%XWP(s%rE3=@st`m1V^`xCnnS-bj*C1yy=B~3We77FT5}ufACTav( z1l^Ukl{I)&i{Qc!7BJ_n#v0E#qXriqk2uYY>|7;NdKW&DBU6U&jfMfTmv3l)dqGl^ zn1d!|GX0n^YGdDK$&LP)=RxL)UvP)QqZebto?{12liVSOBi|YdglA2geEivE<~_@$ z^IqJteA|>?5O;#Ea7_KKSuoA_l!VC6lvgVIpVtVlEbQI0Z@Lg^7cSmVJz0#r$G;7| z(iEvr9ZsOzZ2r;oX-mNXew z3LZ3*f1t>J&e4OvnCh5DKDBdPXx`P<{ZL}O=u0Y+&Z5+=gvGAZI8$jk0WYDptMZGJ zdqAfUZtI6GxPl*RS^}h(>PGV1nD%-JF_r7x=;TVTo(n+vO(2y2O*iE;n~={kkXJ7_ zQzSjeC3QL&WCrjs9FyNp1&C4cPu_G55aTu0HhmvmKBv&QA@<(zkw$E7-O%a>cWpZP z&h1M3=ge(=R%J!z!uq+~X`)|7i%$`w9=xDiTWxcM117WfW2P+?L)hHpA;ab(2n@vm z{;7IE030EJ&B&cyGG^??I)bfvvRfBj1JVD~JyM7ZK(p=LrlZ=e58UcJ-y%oIbFSY} zf0_vwS~-Ai#_#FJO}P4UuGvhL&xo^l-1%r*^^^!?=!qam;T^<^kCE%LA};{<^?PQ( zVJ2LhMgPZ4R{*T;kd`|lZ_{q((YsZP!P)R|CHY;Q_nCf=&J+nM7`Mk!YUtUWagUOX zl!4R5o*ILWpVrSK3ZmJKo=@Dtv=;3@Nz;AREqZNPkNojY_?HoSgu;|p-Mo+%TNOd> zygIalaG_71;P%&IMXSd&!Pgl*I`M`KQe|UDQI0A_&wV}feQrM%ll-zDo2AbD#0UL; zfsQzaQpniWR7*Rp>E3%L%?CIpke|{5lMwnc%c8Zmz0BC3*eCLtnr7o*f*rpQZ?N?_ zWZhG49a;LCs0Cgz!+;li!+FbVE%Fm-(I?VEYB(BsR^X<-l-VgzlC+6DvhwG8;qEm= zHy_BMOWN2o({uswuZk+4+_{5HJN92m8)7X!b@35&ul0ThW$XZ5DGhy+sNcmmus*=M z^t|NFIu~r5bDx;ecP@iZU9h>i3U?|%Xzn-%gEK`MBdjG)p>Fh9`bmS?IKgoz`L&hx z!u}p@b|zshRZ5AlSGGCNII4q0+LwRe3WEZj3CpQN zP0ZmtDo0Q1H`MNGQH1E0AHT;2=(^OK1A~b#0KW?WM=&#s za3OFAm*)aF+#hmHPZ4d4xrJq67q|eTeY@2H{w#F?th%uaWc`=xV$+WUj=e}gAP^|_ zqWSk|gag0R@3N+89oZp6GxKYj|4zNj@)297#<8^P%zWo~ZRv4brlHYE@~R%RtJ%76 z_)NaZ=W$E^6$|^<^UdknktUHcO;KAbWrelmxQcqi8+UU^2pcS;iAmtjXmm(}dN2v; zGk*XLJoY~K|GKStL}Ljw!*ZCp`D$cyU}G^ig^Td1U0qh*XqEB!5q5Gp7sFmLm`xP- z%M&w3fa9+f>gsVKHX;M=!vT((Wh1_B<>eDDbBGmU$>^}W&gYzEv8Nhu=jxX61#s=r zX<`vvvW1d}$D_vivz}D1^mtIn;g8q6kc6dIw)FFAr5ktGuVtpKo^WS2iTEayH_nN4PNT= zNvW&b0{swQ-@KF^xKUHI6zJGZ>ZfqsKAJ?>c(3kKm1H2RVGm$50 z)b-DZTG)|=aj4$b5^KMPH9fTt?8GAzJE+3_n7CoyQc$Bf6crssH~R($HnpSuE;ZNX_$t+AuVOso$gg#VUw(WsrI7M8&8)Om7aihx;a-nn|NI|JGSLY z!me4)*+y_has`HY(wwm0u#RC!r{}wOzU*~W7H)k64z0fE5^;+NmXz}?0(WBCOyK}C zC^uw`K6iv?WTU|y&ebaLTPA;tR%lh1def6%1U$hqM6lBIr>-+bIQHx zPkAUsz%$f`ScpA|W*Y!-5jnosvcS)nZ4KJ!yiz1Peldml#k7UCb?R4AO_@X|7Fbrl z2J0+w(yH1b8m;^7tX^K)Xd$4XT8>5sTPM3&_K&U-z)|3oi3SO?KlWK9q7URNHqheT zJ3-n(oyZscdtFln5o{5sAgH)uBEf6k7%8fzu&(&)j1d)OTU_4TM9tyau_=3ZKOU>M z-6RrIdq&~bfS9#D=BL18rQHlpmQR`pQSiM1tLZMky$oCAT32k7i`=gv)l)epP64@E z8^fk~;QgA-re>BzOdThz7OE(Pu7qS^T951`?roF4$>$^0QR#JqK}~}A*@;9A)j#aM zJBI|-lqAiM=FR207G&3B@bxU;DB83a*Xe`5gHse)4OJMO_58tkbJ+g5=q8ui*}B@g z`4;=vGkxM?+8~k+2Ka1!%|w&gcq0ab1h=BKUF3&v)DqjW#-_gfNP_aJS_p`^092FT z8=+XDi1S8GDEY4B8acgUB=t1$b(@_bfYDx!L8c;~%Hz&_*gygxJ^R&hYpOkvuTt}_ z@Z!&9i6^qm8^wmh%@BpTMhbjeI21F-P-fhY%lgSW;Hsu<*>FvO*``3kr_V zx2*`DYD$U>m2J^M|cF$sPB< z!qH>h!Nn0xo_fl^&2j&>lJ5cz6zBybUhe-f_M4lvAs`3@ah<^K4jHP!JXWGUDZ#AG zf%>vAr8d=~;r8YX&4GdEY){$XYV66BWA0(PkOvyd4$7RO{WN}5@jv2rJ7@{v!Eg3N z<7&Yn&@t8?2I7>dpObTug(n(eN*p(LI9Y6iokWj0>!KLDq`0vWbfRG4=WvqBWd_X{-)WxU&0nyiH`~Uy| literal 0 HcmV?d00001 diff --git a/delivery_dhl_parcel/static/description/index.html b/delivery_dhl_parcel/static/description/index.html new file mode 100644 index 00000000000..751c1b7febb --- /dev/null +++ b/delivery_dhl_parcel/static/description/index.html @@ -0,0 +1,543 @@ + + + + + + +Delivery DHL Parcel + + + +

+

Delivery DHL Parcel

+ + +

Beta License: LGPL-3 OCA/l10n-spain Translate me on Weblate Try me on Runbot

+

Este módulo integra la API de DHL Parcel con Odoo. No es +válido para otras integraciones de DHL como el Express, que usan otras APIs.

+

Table of contents

+ +
+

Installation

+

Depende de los módulos de OCA/delivery-carrier delivery_package_number y delivery_state.

+

La API de DHL Parcel 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:

+
    +
  1. Vaya a Inventario > Configuración > Entrega > Método de envío y cree uno +nuevo.
  2. +
  3. Escoja DHL Parcel Como proveedor.
  4. +
  5. Configure los datos de servicio que tiene contratados y el producto de +envío que desea utilizar.
  6. +
+

El código de cliente es el UID con un guión y sin letras al final +i.e. UID = 08100000AB, tu Código de cliente sería 08-100000

+
+
+

Usage

+

Estas son las distintas operaciones posibles con este módulo:

+
+

Grabar servicios

+
+
    +
  1. Al confirmar el albarán, el servicio se grabará en DHL Parcel.
  2. +
  3. Con la respuesta, se registrará en el chatter la referencia de envío y +las etiquetas correspondientes.
  4. +
  5. 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 DHL Parcel el número correspondiente y podremos +descargar las etiquetas en PDF con su correspondiente numeración.
  6. +
+
+
+
+

Cancelar servicios

+
+
    +
  1. 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.
  2. +
  3. Podremos generar una nueva expedición una vez cancelado si fuese necesario.
  4. +
+
+
+
+

Obtener etiquetas

+
+
    +
  1. 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 DHL Parcel” que tenemos en la parte superior de la vista +formulario del albarán.
  2. +
+
+
+
+

Seguimiento de envíos

+
+
    +
  1. 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 +DHL Parcel.
  2. +
  3. Para ello, vaya al albarán con un envío DHL Parcel ya grabado y en la pestaña de +Información adicional verá el botón Actualizar seguimiento para pedir +a la API que actualice el estado de este envío en Odoo.
  4. +
+
+
+
+

Cierre del día

+
+
    +
  1. Desde un smart button en el formulario del transportista, se puede +cerrar el día manualmente.
  2. +
+
+
+
+

Depuración de errores

+
+
    +
  1. Es importante tener en cuenta que solo funcionará con códigos postales de +España.
  2. +
  3. 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.
  4. +
  5. También puede activar Odoo con –log-level=debug para registrar las +peticiones y las respuestas en el log.
  6. +
+
+
+
+
+

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

+
    +
  • Studio73
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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_dhl_parcel/tests/__init__.py b/delivery_dhl_parcel/tests/__init__.py new file mode 100644 index 00000000000..65fe03356ca --- /dev/null +++ b/delivery_dhl_parcel/tests/__init__.py @@ -0,0 +1 @@ +from . import test_delivery_dhl_parcel diff --git a/delivery_dhl_parcel/tests/test_delivery_dhl_parcel.py b/delivery_dhl_parcel/tests/test_delivery_dhl_parcel.py new file mode 100644 index 00000000000..b8a6189f3c0 --- /dev/null +++ b/delivery_dhl_parcel/tests/test_delivery_dhl_parcel.py @@ -0,0 +1,167 @@ +# Copyright 2021 Studio73 - Ethan Hildick +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import time +from unittest import mock + +from odoo.tests import Form, common + +request_model = ( + "odoo.addons.delivery_dhl_parcel.models.dhl_parcel_request.DhlParcelRequest" +) + +# There is also no public test user so we mock all API requests + + +class TestDeliveryDhlParcel(common.SingleTransactionCase): + @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_dhl_parcel = cls.env["delivery.carrier"].create( + { + "name": "DHL Parcel", + "delivery_type": "dhl_parcel", + "product_id": cls.shipping_product.id, + } + ) + cls.product = cls.env["product.product"].create( + {"type": "product", "name": "Test product"} + ) + cls.partner = cls.env["res.partner"].create( + { + "name": "Mr. Odoo & Co.", + "city": "Odoo Ville", + "zip": "28001", + "street": "Calle de La Rua, 3", + } + ) + order_form = Form(cls.env["sale.order"].with_context(tracking_disable=True)) + order_form.partner_id = cls.partner + 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_dhl_parcel.id + cls.sale_order.action_confirm() + cls.picking = cls.sale_order.picking_ids[0] + cls.picking.move_lines.quantity_done = 20 + + @mock.patch("%s._get_new_auth_token" % request_model, return_value="12345") + @mock.patch( + "%s.create_shipment" % request_model, + return_value={ + "Origin": "08", + "Customer": "001000", + "Tracking": "0870002260", + "AWB": "", + "LP": ["JJD00006080070002260001"], + "Label": "JVBERiasdasdsdcfnsdhfbasdf==", + }, + ) + def test_01_dhl_parcel_picking_confirm_success(self, redirect_mock, *args): + self.picking.name = "ODOO-TEST-{}".format(time.time()) + self.picking.button_validate() + self.assertEqual( + self.picking.carrier_tracking_ref, + "0870002260", + "Tracking doesn't match test data", + ) + + @mock.patch("%s._get_new_auth_token" % request_model, return_value="12345") + @mock.patch( + "%s.track_shipment" % request_model, + return_value=[ + { + "DateTime": "2020-10-02T10:40:49", + "Code": "A", + "Status": "Es posible que la fecha prevista de entrega" + " se posponga un día hábil", + "Ubication": "Araba/Álava", + } + ], + ) + def test_02_dhl_parcel_picking_update(self, redirect_mock, *args): + self.picking.tracking_state_update() + self.assertEqual( + self.picking.tracking_state_history, + ( + "2020-10-02T10:40:49 Araba/Álava - [A] Es posible que la fecha" + " prevista de entrega se posponga un día hábil" + ), + "History doesn't match test data", + ) + self.assertEqual( + self.picking.tracking_state, + ( + "[A] Es posible que la fecha" + " prevista de entrega se posponga un día hábil" + ), + "State doesn't match test data", + ) + self.assertEqual( + self.picking.delivery_state, + "shipping_recorded_in_carrier", + "Delivery state doesn't match test data", + ) + + @mock.patch("%s._get_new_auth_token" % request_model, return_value="12345") + @mock.patch("%s.hold_shipment" % request_model, return_value=True) + @mock.patch("%s.release_shipment" % request_model, return_value=True) + def test_03_dhl_parcel_picking_toggle_hold(self, redirect_mock, *args): + self.assertFalse(self.picking.dhl_parcel_shipment_held) + self.picking.dhl_parcel_toggle_hold_shipment() # hold + self.assertTrue(self.picking.dhl_parcel_shipment_held) + self.picking.dhl_parcel_toggle_hold_shipment() # release + self.assertFalse(self.picking.dhl_parcel_shipment_held) + + @mock.patch("%s._get_new_auth_token" % request_model, return_value="12345") + @mock.patch( + "%s.end_day" % request_model, + return_value={ + "Shipments": [ + { + "Origin": "08", + "Customer": "001000", + "Year": "1", + "Tracking": "0824005834", + } + ], + "Report": "JVBERiasdasdsdcfnsdhfbasdf==", + }, + ) + def test_04_dhl_parcel_endday(self, redirect_mock, *args): + wizard = self.env["dhl.parcel.endday.wizard"].browse( + self.carrier_dhl_parcel.action_open_end_day().get("res_id") + ) + wizard.button_end_day() + self.assertTrue(self.carrier_dhl_parcel.dhl_parcel_last_end_day_report) + + def test_05_dhl_parcel_get_tracking_link(self): + tracking = self.carrier_dhl_parcel.get_tracking_link(self.picking) + self.assertTrue(tracking) + + @mock.patch("%s._get_new_auth_token" % request_model, return_value="12345") + @mock.patch( + "%s.print_shipment" % request_model, return_value="JVBERiasdasdsdcfnsdhfbasdf==" + ) + def test_06_dhl_parcel_get_label(self, redirect_mock, *args): + label = self.picking.dhl_parcel_get_label() + self.assertTrue(label) + + def test_07_dhl_parcel_rate_shipment(self): + msg = self.carrier_dhl_parcel.dhl_parcel_rate_shipment( + order=self.env["sale.order"] + ) + self.assertIsInstance(msg, dict) + + @mock.patch("%s._get_new_auth_token" % request_model, return_value="12345") + @mock.patch("%s.cancel_shipment" % request_model, return_value=True) + def test_08_dhl_parcel_picking_cancel(self, redirect_mock, *args): + self.picking.cancel_shipment() + self.assertFalse(self.picking.carrier_tracking_ref) + self.picking.cancel_shipment() + self.picking.dhl_parcel_toggle_hold_shipment() + self.picking.dhl_parcel_get_label() + self.picking.tracking_state_update() diff --git a/delivery_dhl_parcel/views/delivery_carrier_view.xml b/delivery_dhl_parcel/views/delivery_carrier_view.xml new file mode 100644 index 00000000000..bc4c027c9ba --- /dev/null +++ b/delivery_dhl_parcel/views/delivery_carrier_view.xml @@ -0,0 +1,68 @@ + + + + delivery.carrier + + + + + + + + + + + + + + + + + + + + + + + + + + + +