From e1cc0ce4d2426225060b57baacf82491d7edb6da Mon Sep 17 00:00:00 2001 From: "John Holton (hojo)" Date: Thu, 22 Aug 2024 13:46:24 -0700 Subject: [PATCH] [IMP] Inventory: rewrite DHL integration closes odoo/documentation#10836 Signed-off-by: John Holton (hojo) --- .../setup_configuration.rst | 1 - .../setup_configuration/dhl_credentials.rst | 137 ++++++++++++++++-- .../dhl_credentials/dhl-form.png | Bin 0 -> 31715 bytes 3 files changed, 124 insertions(+), 14 deletions(-) create mode 100644 content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dhl_credentials/dhl-form.png diff --git a/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration.rst b/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration.rst index 64801e5d9..0d0afcdcb 100644 --- a/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration.rst +++ b/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration.rst @@ -285,4 +285,3 @@ delivery order. To add or change the delivery method on the delivery itself, go setup_configuration/label_type setup_configuration/multipack setup_configuration/print_on_validation - diff --git a/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dhl_credentials.rst b/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dhl_credentials.rst index 56eabee3c..40b9419a2 100644 --- a/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dhl_credentials.rst +++ b/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dhl_credentials.rst @@ -1,22 +1,133 @@ -===================================================== -How to get DHL credentials for integration with Odoo? -===================================================== +=============== +DHL integration +=============== -In order to use the Odoo DHL API, you will need: +DHL is one of the shipping carriers for which a *shipping connector* is available in Odoo's +**Inventory** app. By enabling the shipping connector in the app's settings, and configuring at +least one *shipping method*, the process of :doc:`calculating shipping rates +<../setup_configuration>` and :doc:`generating shipping labels ` is greatly simplified. -- A DHL.com SiteID +.. note:: + While a variety of shipping connectors are available for different carriers, this documentation + details the configuration settings specific to integrating DHL. For instructions on configuring + the integration settings common to all shippers, see the documentation on :doc:`third-party + shippers `. -- A DHL Password +Enable DHL shipping connector +============================= -- A DHL Account Number +Before creating a DHL shipping method, it is necessary to enable the carrier's shipping connector. +To do so, navigate to :menuselection:`Inventory app --> Configuration --> Settings`. +Scroll down to the :guilabel:`Shipping Connectors` section, and tick the checkbox next to +:guilabel:`DHL Express Connector`. Finally, click :guilabel:`Save` to apply the changes. -Getting SiteID and password for countries other than United States (UK and Rest of the world) -============================================================================================= +Once the connector has been enabled, a :icon:`oi-arrow-right` :guilabel:`DHL Shipping Methods` link +appears below. Click the link to open a page showing all shipping methods configured for DHL. -You should contact DHL account manager and request integration for XML Express API. The presales should provide you live credentials. +Configure DHL shipping method +============================= -Getting SiteID and Password for United States -============================================== +After enabling the shipping connector for DHL, shipping methods can be configured for the carrier. +Once configured, a shipping method can be added as a line item to sales orders (SOs), which allows +for automatic computation of shipping rates, and generation of shipping labels. -You need to write to xmlrequests@dhl.com along with your full Account details like account number, region, address, etc. to get API Access. +To create a new DHL shipping method, navigate to :menuselection:`Inventory app --> Configuration --> +Settings`. In the :guilabel:`Shipping Connectors` section, select the :guilabel:`DHL Shipping +Methods` link below the :guilabel:`DHL Express Connector` checkbox. + +.. note:: + It is also possible to see existing shipping methods for every carrier, by navigating to + :menuselection:`Inventory app --> Configuration --> Shipping Methods`. + +Click :guilabel:`New` to open a blank shipping method form. If a shipping method has already been +created, it can be selected from this screen. + +.. image:: dhl_credentials/dhl-form.png + :align: center + :alt: The form for a DHL shipping method. + +General information +------------------- + +Begin configuring the shipping method by entering its title in the :guilabel:`Shipping Method` +field. + +In the :guilabel:`Provider` drop-down menu, select the :guilabel:`DHL` option. After doing so, a new +:guilabel:`DHL Configuration` tab appears at the bottom of the form. + +All other fields in this section are identical on the shipping method forms for each shipping +carrier. See the documentation on :doc:`third-party shippers ` for instructions +on how to properly configure them. + +DHL Configuration +----------------- + +The :guilabel:`DHL Configuration` tab on the shipping method form is used to connect the user's DHL +account to Odoo, and configure the shipping method's details. + +DHL SiteID, password, and account number +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A DHL SiteID, password, and account number are used to link a DHL account with third-party services, +like Odoo's **Inventory** app. The SiteID and password are different credentials than the ones used +to log in to a DHL account. + +To obtain a DHL SiteID, password, and account number, it is necessary to register on the `DHL API +Developer Portal `_, by filling out the following +information: + +- :guilabel:`First name` +- :guilabel:`Last name` +- :guilabel:`Email address` +- :guilabel:`Username` +- :guilabel:`Company Name` +- :guilabel:`Country` + +After filling out all of the fields, tick the :guilabel:`I have read and accept the terms of use and +the privacy policy` checkbox, and click :guilabel:`Send` to register. + +After registering, a confirmation email is sent to verify the application. Click the link inside the +email to activate the developer portal account, and set a password. + +This email also includes the account number for the developer portal account. Enter the number in +the :guilabel:`DHL Account Number` field on the shipping method form. + +Once the developer portal account has been confirmed, log in to the portal using the username and +password. Click on the user avatar in the top-right corner of the screen to open the user dashboard. + +On the dashboard, click on the :guilabel:`Apps` tab, and select an app. In the +:guilabel:`Credentials` section, click the :guilabel:`Show key` button below the :guilabel:`API Key` +and :guilabel:`API Secret` fields. + +Return to the shipping method form in the Odoo database. Enter the *DHL API Key* in the +:guilabel:`DHL SiteID` field, and the *API Secret* in the :guilabel:`DHL Password` field. + +Shipping details +~~~~~~~~~~~~~~~~ + +The rest of the fields in the :guilabel:`DHL Configuration` tab are used to configure the shipping +method itself: + +- :guilabel:`Region`: the region in which the shipping method is used. +- :guilabel:`DHL Product`: the shipping service purchased from DHL (e.g. Express Worldwide). +- :guilabel:`DHL Package Type`: the type of DHL package used for delivery (e.g. DHL Box). +- :guilabel:`Package Weight Unit`: the unit of measure used to display package weight. +- :guilabel:`Package Dimension Unit`: the unit of measure used to display package size. +- :guilabel:`Label Format`: the file format used to generate shipping labels. +- :guilabel:`Label Template`: the paper size used to print shipping labels. + +.. important:: + Before selecting service options for a shipping method, make sure those services are actually + available for the DHL account. Available services depend on the contract negotiated with DHL. + +Options +~~~~~~~ + +Additional settings are available in the :guilabel:`Options` section at the bottom of the +:guilabel:`DHL Configuration` tab: + +- :guilabel:`Generate Return Label`: Enable this option to automatically generate a return label + after validating a delivery order. +- :guilabel:`Dutiable Material`: Enable this option if the shipping method is liable to customs or + other duties. diff --git a/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dhl_credentials/dhl-form.png b/content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dhl_credentials/dhl-form.png new file mode 100644 index 0000000000000000000000000000000000000000..4240b9f911cf7dc9599811decfb70cbea89f10d5 GIT binary patch literal 31715 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 D{32d8 literal 0 HcmV?d00001