openERP- How to connect OpenERP with external Systems, AkretionAkretion base...

  • View
    9.738

  • Download
    0

  • Category

    Business

Preview:

DESCRIPTION

 

Citation preview

BASE EXTERNAL REFERENTIALHOW TO CONNECT OPENERP

WITH EXTERNAL SYSTEMS

OpenERP Community daysApril 12th, 2012

Sébastien BeauSebastien.beau@akretion.comConsultant at Akretion

Context● June 2009 : Akretion and OpenLabs start a new project

« MagentoERPconnect », the new connector for Magento and OpenERP.

● June 2011 : MagentoERPconnect project is now maintained by the group « MagentoERPconnect Core Editor » composed of Akretion, Camptocamp, OpenLabs and ZikzakMedia.

● February 2012 : Camptocamp and Akretion release a new connector for Prestashop : PrestashopERPconnect

● March 2012 : Akretion release File Exchange, a new way to synchronise automatically files with OpenERP

● Soon : AmazonERPconnect

Goals in 2009Example connection with Magento

● What is needed by my customer :● Must be multi-referential● Must be flexible● Must report errors of synchronisation● Must synchronise all of the data (product, sale

order, picking, invoice, ...)● Must be cheaper

=> These are generic needs !!

Generic needs

MagentoERPconnect

Product m2m

Category

Product Images

Olbs

Base Sale Multichannels

Base External Referentials

MagentoERPconnectBundle Product

MagentoERPconnectProduct Variant

Product Variant Multi

Sale Bundle Product

generic part of the project

Specific partto magento

Product links

Must be multi-referential

● Connecting one Magento is great, but it's better to connect to various Magentos at the same time

=> do not add a new column on each object to store external_id

=> using the table « ir_model_data » to store external ids

Must be flexible ;)

● The mapping (link between OpenERP field and Magento field) should not be hard-coded !

Must be flexible ;)

● Base_external_referential => the magic box

MAPPING1.5.0.0 +

MAPPING1.3.2.4 +

DATA DATA

Must be flexible ;)

● Next step : add generic mapping

MAPPING1.5.0.0 +

MAPPING1.3.2.4 +

DATA DATA

GENERICMAPPING

How does a mappinglook like?

How does a mappinglook like?

3 kinds of mapping lines

● 1. Direct mapping :

Map an OpenERP field with an external field

3 kinds of mapping lines

● 2. Function mapping :

Use some lines of Python to evaluate a field

3 kinds of mapping lines

● 3. Submapping : a field will be evaluated using another mapping object

Example : the field “order_line” of the “sale_order” will be evaluated by the mapping of the “order_ line”

More information about sub-mapping

_transform_external_resources

for each line

_transform_one__resource

_get_mapping if not exist

merge_with_default_value

_transform_sub_mapping

_transform_one_resource

code to convert data

code to merge converted data with default value

merge_with_default_value

for each submapping

_transform_sub_mapping

_transform_resources

ONE SALE ORDER

How can I make my own mapping?

● Step 1 : Add mapping in OpenERP with the interface and test it

● Step 2 : Export it and put it in a module● Step 3 : Take a drink... you're done, and your

boss can not imagine that you have already finished ;)

Error management

Before :● If a synchronisation failed, everything had to be

restarted from the beginning. No incremental import.

● No easy way to understand what happened, what raised an error, what worked

● Bugs can not be reproduced and fixed easily

Error management NOW

RAPPORT

DATA DATA

MAPPING1.5.0.0 +

MAPPING1.3.2.4 +

Soon : email notification ;)

Error management NOW

● Incremental import / export => resources are exported one by one. After importing / exporting a resource, everything is committed

Synchronize orders

import one order and commit it

import one order and commit it

import one order and commit it

Error management NOW

A report is generated for each synchronisation

Error management NOW

● For each failure, a report line is generated and can be replayed easily

Base external is great but...

E-commerce needs more than a generic module of synchronisation. We also need to :● Import orders● Play on_change on order lines and sale orders● Play workflow● Compute or use external taxes● Export products, stock levels, ...

Base_sale_multichannels● An abstract module to make OpenERP a

MULTI-SALE-CHANNELS software

Base_sale_multichannels

Base_sale_multichannelsOpenERP

E-Commerce

56971236

56971236

sale order waiting for approval validation

sale order validated

+shipping

confirmed

e-mail with invoice

invoice created

automatically and

confirmed

Payment by check

send

Base_sale_multichannels

Payment configuration

Generic is great buthow does it work ?

● If two modules like MagentoERPconnect and PrestashopERPconnect are installed and overwrite the method “import_orders”, how can it work ?

Button : import_order

import_order (from Magento) import_order (from PrestaShop)

????????

Generic is great, but how does it work ?

● We have to test where we are :(

Decorators are great ;)

Last improvement of the week

● Synchronizing data with Magento is long, very very very very very long !

=> we have to optimize the data sent to Magento

Last improvement of the week

● Before :

When we send a resource (product, category...) in multi-lang, we send x time all fields of a resource => sending X time a not translatable product is useless

● Now :

Base_external_referentials generates a dictionary with all resource information :

{'en_US': {all of data}, 'fr_FR': {only translatable field}, ...}

Last improvement of the week● Before :

If one field changes on a resource, all fields of the resource are synchronised again

● Now :

Ability to create a group of fields that will have their own “last update date”

Modules that use base_external_referentials

and base_sale_multichannels

● MagentoERPconnect● PrestashopERPconnect● File Exchange● AmazonERPconnect

MagentoERPconnect'sroadmap

● For May:● Huge re-factoring is coming● RMA synchronisation● Invoice export● Delivery time synchronisation

PrestashopERPconnect'sroadmap

DONE in 4.5 days:● shop/websites import● customer import● languages & country synchronisation● product import● order import (still missing taxes and shipping costs)

TODO :● finish order import● stock level export● product export ● invoice export (PDF report)● picking export

File_exchangeWhat is it ?

A new way to synchronize data with file system

STEP 1 : create mapping

File_exchangeWhat is it?

STEP 2 : build your model file●

AmazonERPconnect

Will be released in May 2012● Sale order import● Bank statement import

TODO :● stock level export● product export● picking export

Project hosted on launchpad

● https://launchpad.net/openobject-extension● https://launchpad.net/e-commerce-addons● https://launchpad.net/prestashoperpconnect● https://launchpad.net/magentoerpconnect

Modules in extra-addons are deprecated and will be remove soon. Use the specific branches.

Thank you for your attention

twitter : seb_beau