Connecteur Odoo PrestaShop

Manuel du connecteur Odoo PrestaShop

Ce manuel est pour l’instant en anglais.

For whoever installs and uses BK Modules' Odoo ↔ PrestaShop connector: what to do, in which order and what to decide. Every option in full detail is in the configuration reference (Réglages du connecteur Odoo PrestaShop) and every error code in the jobs and errors reference (Tâches et erreurs du connecteur Odoo PrestaShop), both in Spanish for now; this manual links to them instead of repeating them. In Spanish: Manual del conector Odoo PrestaShop. Button and field names are those of Odoo and PrestaShop in English.

What you need

  • Odoo Community 17, 18, 19 or 20 on your own server or Odoo.sh (Odoo Online does not accept third-party modules), with Sales. Inventory is optional: with it, Odoo handles the stock and the deliveries.
  • PrestaShop 1.7.6 to 9.x on PHP 7.1 to 8.4, multistore included, reachable over HTTPS from the Odoo server (a test shop, test., staging., .local, localhost…, can use http). Odoo does not need to be reachable from outside.
  • A license from bkmodules.com, with no keys: in your licenses area you link the address of each shop you connect (each production shop comes with a test place). It is for one Odoo version and does not work with another; your Odoo database and its test copies are recorded on their own and take no place.
  • Administrator access to Odoo and to the shop's back office.

1. Install the two pieces

First, in your licenses area on bkmodules.com, link the address of your shop to the license (the one the shop opens at, with its folder if it has one: myshop.com or myshop.com/en): that opens the download. Both pieces come from the same license: Odoo add-on and PrestaShop module (bkodooconnector-x.y.z.zip). Take the add-on for your Odoo version: the zip name starts with it (odoo-prestashop-17.0.1.3.0.zip for Odoo 17, odoo-prestashop-20.0.1.3.0.zip for Odoo 20). The area only shows the one for your license's version; while the license has no version yet, it shows one per version, and the license keeps the version of the first production database that connects to one of your shops. If no version is published yet, the area says so: your license already includes it and it appears there as soon as it comes out. They go together: each add-on version knows which module version it needs, and the wizard's Check step warns you when the shop's module is behind.

In Odoo

  1. Unzip the file into an add-ons folder of your Odoo (a path of addons_path); on Odoo.sh, push it to your repository branch. It holds three modules: bk_prestashop, the connector, and two bridges that install themselves when needed: bk_prestashop_stock, with Inventory, and bk_prestashop_payment_stripe, with Odoo's Stripe provider. The one for Odoo 17, 18 and 19 also holds bk_prestashop_website_sale, which installs itself with eCommerce (below).
  2. Restart Odoo. In Apps, with developer mode on, Update Apps List.
  3. Install PrestaShop Connector. The Sales › PrestaShop menu appears.
  4. Access rights (Settings › Users, PrestaShop section): User sees the shop orders, the catalog and the queue, and can retry or cancel a job; Administrator configures the connections, links customers, imports and manages the license. Every Settings administrator is a connector administrator.

Depending on your Odoo version

The four versions do the same; what changes is what Odoo does differently in each (all of it in the series matrix, , in Spanish). What you notice when using it:

  • Tax ID: in Odoo 20 the core checks its format; in 17, 18 and 19, the base_vat module, installed with the connector.
  • Unit price in the shop: in Odoo 20 it comes from the product's reference unit; in 17, 18 and 19 that unit belongs to eCommerce, so the shop only shows a unit price with eCommerce (website_sale) installed.
  • Tags sent to the shop: in Odoo 20 and 19, those visible to customers; in 18, all of them or, with eCommerce, those visible there; in 17, as in 18 and in the order they were created.
  • Orders with tax-included prices (to add up to what the shop charged): in Odoo 20, Odoo's own tax mode; in 17, 18 and 19, the PrestaShop prices field on the order and invoice form.
  • A customer without a company who brings a tax ID: a person in every version. In Odoo 20, which would make any contact with a tax ID a company, the Person (PrestaShop) box on the contact's PrestaShop tab marks it: untick it if it really is a company.
  • A unit price with more decimals than "Product Price" (a price converted to another currency, for several units): in Odoo 17 the order and invoice line carries it in the optional Exact unit price column; in the others, in the unit price itself.
  • Credit note of an invoice made in Odoo: in Odoo 17 it goes without taxes included; in the others, as the company says.
  • Followers: in Odoo 17 and 18, confirming the order and posting the invoice make the customer a follower (Odoo does it, without notifying them).
  • Products with variants: in Odoo 17, 18 and 19 the shop product has no reference and each combination carries its variant's. Odoo 17 has no combo products.

In PrestaShop

  1. Modules › Module Manager › Upload a module, with the module zip. On a multistore, in the all-shops context.
  2. Configure. The Connection tab shows the three values you paste in Odoo: Shop URL, Connection key (keep it private, like a password) and Back office URL.
  3. If the notice says PrestaShop is still issuing its own invoices, Turn off PrestaShop invoices: the legal invoice is Odoo's, and an order cannot carry two invoice numbers.
  4. If the shop filters requests (private shop, firewall, anti-bot, server password), let the module's address through; BK's own modules need nothing.
  5. Keep events for and Detailed log need no change: the detailed log is for support.

The license

There is nothing to type. The module of each shop asks bkmodules.com about its address and gives Odoo the signed answer; Odoo connects the linked shops, up to the ones you bought. Sales › PrestaShop › License shows, read-only, the status of each shop (valid, not linked, not valid or not checked, with the reason), the Odoo version of the license, the plan, whether there is a new version for your Odoo, what is sent to bkmodules.com and the link to your licenses area. If you link a shop later, press Check now (or wait for the daily check) and connect it. A license that stops being valid never stops the orders, the catalog or the stock of the shops already connected (license).

2. Set up a connection: the wizard

Sales › PrestaShop › Connections › New connection. Each step saves its own data; Continue later closes it and the connection resumes where it stopped with Continue the setup (setup wizard).

Step What you do
Connect A name and the three values from the module page. Connect tests the connection; if it fails, it says why (the code, under connection)
Check Review the versions, the shops found and the instant notification. If the shop's module is old, it lists the features you cannot use until you update it. It lists the BK Modules modules the shop has and what each one does for the connector
Warehouses With Inventory: whether Odoo or PrestaShop owns the shop's stock, and each shop's warehouse
Shops and journals Which shops import orders and with which invoice series; the journal of each payment method
Taxes The Odoo tax for each shop tax; those of the same rate come suggested
Order flow In which states orders come in, from which date and what Odoo does in each state; start from a template
Finish Lists what is still empty. Finish opens the connection; Finish and import from the shop opens the initial import

Nothing left empty stops the setup: an order that needs it waits with an error that says what is missing.

Tip: do the setup first on a test copy of your Odoo (a neutralized database): it does not take the production seat and writes nothing to the real shop until you connect it yourself.

3. The configuration, section by section

The connection form holds the rest. Every option starts with a value that writes nothing to the shop until you decide. Next to some options, a grey line names the BK Modules module that improves it (with its page in bkmodules.com or, if the shop already has it, how it helps); it is only information (BK Modules modules, in Spanish). What to decide in each section:

Section What you decide To start with
Connection Only the three values. Test connection reads the shop again (shops, states, taxes, payment methods) without changing your choices Press it after changing something in the shop
Shops Per shop: whether it is connected, imports orders, its invoice series, its pricelists per currency and whether it receives products Import orders, yes; publish products, no, until you have reviewed Who owns each field
Mappings Order states, payment methods, carriers, taxes, tax rules groups, customer groups, categories and the fallback language Taxes and payment methods, always; carriers, if you charge shipping
Products Which Odoo products count, whether they are linked or created in the shop, and what happens to one that stops counting Link existing catalog first: it links by reference without writing to the shop
Who owns each field Per field (name, price, tax, images, categories…): Odoo, Odoo on create, or PrestaShop What you already curate in the shop stays in PrestaShop; Simulate on a product shows what the shop would receive
Orders and Flow by state Which orders come in, and the steps per state: confirm, invoice, post, register payment, email from the shop, upload, cancel The Pay in advance template (you charge at checkout) or Invoice on shipping
Shipping With Inventory: what the shop learns when a delivery is validated (tracking number and shipped state, tracking number only, or nothing), the Validate delivery step, invoicing on validation Tracking number and shipped state
Customers Which keys recognize a customer (tax ID, email, phone, name), what gets updated, and the fallback customer Tax ID and email
Customer portal Whether customers see Odoo's quotations and invoices in their shop account, and how they are linked to your contacts Off; when you turn it on, link by hand
Validation rules When a tax ID is required, how it is checked (format or VIES) and the complete address The defaults
Payment methods Per payment method: whether the payment is registered, in which journal and with which fee With Stripe, the gateway's fee: the payment comes in net
Stock With Inventory: whether Odoo sends the stock, which quantity, from which warehouses and when PrestaShop until Odoo's stock is accurate
Alerts Who is told about a stopped job: activity, email or both You, with an activity

Linking shop customers with your contacts

Odoo recognizes the customers of the orders by itself. For the portal, or for a customer Odoo already had under another name, the administrator links by hand with Link a shop customer, in the contact's PrestaShop tab, in Links or in the portal section: it searches by email, name, company, tax ID or id, shows what each customer matches, its orders and the contacts it already goes with, and Link joins them. One shop customer can go with several contacts (the same person as a sole trader and as their company). Possible links collects the email or tax ID matches for you to link or dismiss (portal).

Coming from PrestaShop: the initial import

Import from the shop, on the connection, brings in once the products (with their combinations) and the customers (with their addresses). First Prepare the plan: each row says whether it will be created, linked with what Odoo already has, is already linked or is not imported and why; untick what you do not want and Import. Running it again duplicates nothing. Before it, leave in PrestaShop the fields the shop must keep (Who owns each field) and the stock in PrestaShop (initial import).

4. Going live

  1. Check in the order list (Sales › PrestaShop › Orders) runs the rules on shop orders without creating anything: fix what comes up before opening the tap.
  2. If you used to invoice by hand, Import past orders: each order already invoiced adopts its invoice instead of getting another one.
  3. Place a real order (or wait for the first one) and follow it until its invoice is in the customer's shop account.
  4. If Odoo owns the catalog: Simulate on a few products, then Send to PrestaShop, and Check consistency on the connection to see any remaining differences.

5. Day to day

Everything lives in Sales › PrestaShop:

Menu What for
Orders Every shop order Odoo knows, with its flow: which steps are done, which one failed and why. Retry resumes from the failed step
Catalog What will happen to each product in each shop (its plan), Send to PrestaShop, and Apply in PrestaShop for whatever deactivates or deletes something in the shop, which never goes out by itself
Links What is linked with each shop: products, combinations, customers and addresses, with View in PrestaShop
Possible links Shop customers that match a contact, to link or dismiss
Jobs The queue: what Odoo does with the shop, with its result or its error
Connections The configuration of each PrestaShop installation and its status (connected, or offline since…)
License The status of each shop, the Odoo version, the plan and the link to your licenses area

Odoo sends no email to customers: the shop sends them all, in the customer's language (invoice, shipping, state).

Subscription products: if the shop has BK Subscriptions with Stripe, tick Subscription product in the PrestaShop tab of the product and give it its plan (how often it renews, until the customer cancels or for a number of periods, trial, commitment, pause, shipping of each delivery and, per currency, renewal price and setup fee); the shop sells it by subscription, and each renewal arrives as a sales order marked as such, with the Renewals filter. PrestaShop › Subscriptions shows each subscription with its state today (active, payment pending, paused, ending, ended), kept up to date by itself when the customer cancels, pauses or is charged. A shop without that module does not publish those products (subscription products, in Spanish).

Refunds: refund an order wherever suits you, and Odoo ends up the same in all three cases. In Odoo, Refund in the shop on the PrestaShop order or on its invoice: write how much (everything left, by default) and why, tick whether the subscription of the order ends too, and confirm; the shop gives the money back to the customer with the method they paid with and emails them the credit slip, and a few seconds later the credit note arrives, already paid. It shows with the payment modules that refund from Odoo (today, BK Subscriptions with Stripe). In the shop, with the button of its payment module, or in the Stripe dashboard: the credit note arrives the same way, paid with the refund. If you charge with Stripe and the fee of the gateway, the refund goes into the Stripe journal for what really left it; the fee of the payment is not recovered (refunds, in Spanish).

6. What to do with an error

A stopped job alerts the users chosen in Alerts and shows in the queue and on the affected order. Every error gives its code, a message with the specific data (which order, which customer, which value), where to fix it (PrestaShop, Odoo or the configuration) with a direct link, and the folded technical detail for support.

Situation What it means What you do
Blocked The data does not allow it Fix it where it says and Retry (a change on the product itself queues it again by itself)
Failed A technical error that persisted after the retries Read the detail; if it comes from the shop, check it and Retry
Offline (shown at the top of the connection) The shop does not answer or rejects Odoo Fix the cause: the queue resumes by itself
On its way (activity) Waiting for an outside service (VIES, the payment gateway) Nothing: it retries by itself every 5 minutes

By family (each code, with when it appears, in Tâches et erreurs du connecteur Odoo PrestaShop):

Codes What you do
CONN_UNREACHABLE, CONN_BLOCKED The shop is unreachable or something stops the request before the module (the message says what: redirect, 401, 403, 404, 413, maintenance). Fix it on the server or in the shop
CONN_SIGNATURE The connection key is not the shop's: copy it again from the module page
CONN_CLOCK The servers' clocks differ by more than 5 minutes: synchronize them
CONN_INSECURE The shop URL uses http://: enable SSL in the shop and set the URL with https:// (only a test shop can use http)
CONN_REPLAY The shop had already received that request: something between Odoo and the shop (a proxy, a firewall) repeats the requests. It retries by itself; if it persists, check that element
CONN_CONTRACT The shop's module is old: update it and Test connection
PS_ERROR Internal error of the shop; it retries by itself. If it persists, send the detail to support
ORDER_VAT_MISSING, ORDER_VAT_INVALID, ORDER_VAT_VIES Correct the tax ID on the shop address, or Accept tax ID and invoice if it is right as it is
ORDER_ADDRESS_INCOMPLETE, ORDER_MISSING_IN_PS, REFUND_EXCEEDS_INVOICE Fixed in the shop: the address, the order or the credit slip
REFUND_EXCEEDS_PAYMENT, REFUND_REFUSED Refunding from Odoo gave nothing back: write a smaller amount (the message says how much is left) or check in the Stripe dashboard why it refuses it
ORDER_TAX_UNMAPPED, ORDER_CARRIER_UNMAPPED, ORDER_PAYMENT_UNMAPPED, ORDER_STATE_MISSING_IN_PS, ORDER_PRICELIST_MISSING, ORDER_CUSTOMER_MISSING, ORDER_CONFIG_MISSING, TRACKING_STATE_UNMAPPED A mapping or a value is missing in the configuration: the message says which; fill it in and Retry
ORDER_PRODUCT_UNLINKED, ORDER_PRODUCT_AMBIGUOUS Link the product in Odoo (or correct the reference in the shop), or choose what to do with unlinked products (Orders)
ORDER_TOTAL_MISMATCH The order does not add up to what was charged: the message gives the difference line by line and, when it would fix it, the Odoo tax rounding that would match
ORDER_INVOICE_POLICY, ORDER_STEP_FAILED, ORDER_CURRENCY_INACTIVE, REFUND_WITHOUT_INVOICE, DOCUMENT_PDF_MISSING, DOCUMENT_PDF_INVALID Fixed in Odoo: the product, the period, the currency or the invoice the message names
ORDER_CHANGED_AFTER_INVOICE, ORDER_ADOPT_MISMATCH You decide: a credit note by hand if the amount changed, or correct the invoice that was to be adopted; then Retry
PAYMENT_DETAILS_UNAVAILABLE The shop's payment module cannot read the payment: check its key in the back office (the link takes you there)
GATEWAY_UNAVAILABLE, VIES_UNAVAILABLE Nothing: it retries by itself
PRODUCT_TAX_UNMAPPED, PRODUCT_REF_DUPLICATE, PRODUCT_ORIGIN_INVALID, PRODUCT_DYNAMIC_ATTRIBUTES, PRODUCT_UNIT_UNKNOWN, PRODUCT_SUBSCRIPTION_UNSUPPORTED, PRODUCT_PS_REJECTED The product cannot be sent as it is: the message gives the field and the value. Fixed on the product, it queues again by itself; in a mapping or in the shop, Retry
PRODUCT_MISSING_IN_PS The linked product is no longer in the shop: link it again or remove the link
PRODUCT_APPLY_REQUIRED The product deactivates or deletes something in the shop: review it and Apply in PrestaShop
CUSTOMER_MISSING_IN_PS The linked customer no longer exists in the shop: unlink it in the contact's PrestaShop tab
TRACKING_NUMBER_INVALID, TRACKING_CARRIER_MISSING Correct or remove the delivery's tracking reference; it queues again by itself
IMPORT_PLAN_CHANGED, IMPORT_PRODUCT_MISSING, IMPORT_ATTRIBUTES_UNEVEN, IMPORT_ODOO_REJECTED They stay on their row of the import; fix what it says and prepare a new import

A code prefixed with another module's name belongs to a custom extension, which documents it.

7. Copies, moving servers and updating

  • A neutralized copy of your Odoo leaves its connections inactive and without a key: it never writes to the real shop. To test against another shop, create a new connection in the copy.
  • Moving your Odoo to another server: there is nothing to release; the new database is recorded on its own in your license as soon as it connects to your shops, and you can remove the old one from the list in your licenses area. Moving a shop to another address: link the new one in your area (remove the old one if you have no places left; production ones, up to three times a year) and Check now.
  • Updating: download both new pieces from your licenses area (the add-on for your Odoo version), replace the add-on folder and upgrade the module in Odoo, and in PrestaShop upload the new zip over the old one; then Test connection. The license and the module page tell you when there is a new version for your Odoo version.
  • Moving to another Odoo version: the license is for one version and the add-on for another is different code; contact support before migrating. In the migrated database the license of the previous version is not valid: the connected shops keep working, but no other shop connects until you have the key for the new version.

8. Support

Through the contact form on bkmodules.com (in the module page's Help tab, Contact support). It helps to send: the error code and its technical detail (folded in the error), the versions Test connection shows and, if support asks, the module's detailed log. Whatever only your shop has is custom development.

Dites-nous ce dont votre entreprise a besoin

Un module, une application, un serveur qui pose problème ou quelque chose d’urgent. Nous répondons sous 24 heures, avec un devis ferme, prix et date compris.