TIP: You can type at any time to perform a new search.
Magento Connector
connector_magento · OCA/connector-magento
- Repository
- OCA/connector-magento · module folder · Try on Runboat
- Module version
- 1.1.7
- Category
- Connector
- Folder size
- 21.48 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- http://www.odoo-magento-connector.com
- Last tracking update
- 2026-08-07 07:31:59
- Authors
- Camptocamp, Akretion, Odoo Community Association (OCA), Sodexis
- Maintainers
- Camptocamp, Akretion, Odoo Community Association (OCA), Sodexis
- Committers
- Stefan Rijnhart, Holger Brunn, sebalix, Weblate, OCA Transbot, OCA-git-bot, oca-travis, Martin Pishpecki
- Odoo dependencies
- Python dependencies
- magento, requests, cachetools
- System dependencies
- None
- Required by
- None
- Description
Code Analysis ⓘ
Views touched (32)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_payment_mode_form_inherit |
account.payment.mode | form | Inherits connector_ecommerce.account_payment_mode_form_inherit | |
magento_binding_backend_read_form_view |
magento.binding.backend.read.form (in connector_magento) | magento.binding.backend.read | form | New |
product_normal_form_view |
product.product.form | product.product | form | Inherits connector_base_product.product_normal_form_view |
view_invoice_magento_form |
account.invoice.magento.form | account.invoice | form | Inherits connector_ecommerce.view_invoice_connector_form |
view_magento_account_invoice_form |
magento.account.invoice.form | magento.account.invoice | form | New |
view_magento_account_invoice_tree |
magento.account.invoice.tree | magento.account.invoice | tree | New |
view_magento_address_form |
magento.address.form | magento.address | form | New |
view_magento_address_tree |
magento.address.tree | magento.address | tree | New |
view_magento_backend_form |
magento.backend.form | magento.backend | form | New |
view_magento_backend_tree |
magento.backend.tree | magento.backend | tree | New |
view_magento_delivery_carrier_form |
magento.delivery.carrier.form | delivery.carrier | form | Inherits delivery.view_delivery_carrier_form |
view_magento_product_category_form |
magento.product.category.form | magento.product.category | form | New |
view_magento_product_category_tree |
magento.product.category.tree | magento.product.category | tree | New |
view_magento_product_form |
magento.product.product.form | magento.product.product | form | New |
view_magento_product_tree |
magento.product.product.tree | magento.product.product | tree | New |
view_magento_res_partner_form |
magento.res.partner.form | magento.res.partner | form | New |
view_magento_res_partner_tree |
magento.res.partner.tree | magento.res.partner | tree | New |
view_magento_sale_order_form |
magento.sale.order.form | magento.sale.order | form | New |
view_magento_sale_order_tree |
magento.sale.order.tree | magento.sale.order | tree | New |
view_magento_stock_picking_out_form |
magento.stock.picking.form | magento.stock.picking | form | New |
view_magento_stock_picking_out_tree |
magento.stock.picking.tree | magento.stock.picking | tree | New |
view_magento_store_form |
magento.store.form | magento.store | form | New |
view_magento_store_tree |
magento.store.tree | magento.store | tree | New |
view_magento_storeview_form |
magento.storeview.form | magento.storeview | form | New |
view_magento_storeview_tree |
magento.storeview.tree | magento.storeview | tree | New |
view_magento_website_form |
magento.website.form | magento.website | form | New |
view_magento_website_tree |
magento.website.tree | magento.website | tree | New |
view_partner_category_form |
res.partner.category.form | res.partner.category | form | Inherits base.view_partner_category_form |
view_partner_form |
res.partner.form | res.partner | form | Inherits connector.view_partner_connector_form |
view_product_category_form |
product.category.form.magento | product.category | form | Inherits product.product_category_form_view |
view_sale_order_magento_form |
sale.order.magento.form | sale.order | form | Inherits connector_ecommerce.view_order_connector_form |
view_stock_picking_out_magento_form |
stock.picking.magento.form | stock.picking | form | Inherits connector_ecommerce.view_stock_picking_out_connector_form |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (27)
New fields (1)
-
magento_bind_idsOne2many → magento.account.invoicecomodel_name='magento.account.invoice'inverse_name='odoo_id'string='Magento Bindings'
No public methods.
New fields (1)
-
create_invoice_onSelectionhelp='Should the invoice be created in Magento when it is validated or when it is paid in Odoo?\nIf nothing is set, the option falls back to the same option on the Magento store related to the sales order.'selection=[('open', 'Validate'), ('paid', 'Paid')]string='Create invoice on action'
No public methods.
New fields (4)
-
magento_carrier_codeCharcompute='_compute_carrier_code'string='Magento Base Carrier Code' -
magento_codeCharrequired=Falsestring='Magento Carrier Code' -
magento_export_trackingBooleandefault=Truestring='Export tracking numbers' -
magento_tracking_titleCharrequired=Falsestring='Magento Tracking Title'
No public methods.
New fields (2)
-
magento_order_idMany2one → magento.sale.ordercomodel_name='magento.sale.order'ondelete='set null'string='Magento Sale Order' -
odoo_idMany2one → account.invoicecomodel_name='account.invoice'ondelete='cascade'required=Truestring='Invoice'
-
export_record(self)@job(default_channel='root.magento')@related_action(action='related_action_unwrap_binding')@api.multiExport a validated or paid invoice.
New fields (9)
-
backend_idMany2one → magento.backendcomodel_name='magento.backend'readonly=Truerelated='magento_partner_id.backend_id'required=Falsestore=Truestring='Magento Backend' -
created_atDatetimereadonly=Truestring='Created At (on Magento)' -
is_default_billingBooleanstring='Default Invoice' -
is_default_shippingBooleanstring='Default Shipping' -
is_magento_order_addressBooleanstring='Address from a Magento Order' -
magento_partner_idMany2one → magento.res.partnercomodel_name='magento.res.partner'ondelete='cascade'required=Truestring='Magento Partner' -
odoo_idMany2one → res.partnercomodel_name='res.partner'ondelete='cascade'required=Truestring='Partner' -
updated_atDatetimereadonly=Truestring='Updated At (on Magento)' -
website_idMany2one → magento.websitecomodel_name='magento.website'readonly=Truerelated='magento_partner_id.website_id'store=Truestring='Magento Website'
No public methods.
New fields (26)
-
account_analytic_idMany2one → account.analytic.accountcomodel_name='account.analytic.account'help='If specified, this analytic account will be used to fill the field on the sale order created by the connector. The value can also be specified on website or the store or the store view.'string='Analytic account' -
admin_locationCharstring='Admin Location' -
auth_basic_passwordCharhelp='Basic access authentication web server side password'string='Basic Auth. Password' -
auth_basic_usernameCharhelp='Basic access authentication web server side username'string='Basic Auth. Username' -
company_idMany2one → res.companycomodel_name='res.company'readonly=Truerelated='warehouse_id.company_id'string='Company' -
default_category_idMany2one → product.categorycomodel_name='product.category'help='If a default category is selected, products imported without a category will be linked to it.'string='Default Product Category' -
default_lang_idMany2one → res.langcomodel_name='res.lang'help='If a default language is selected, the records will be imported in the translation of this language.\nNote that a similar configuration exists for each storeview.'string='Default Language' -
fiscal_position_idMany2one → account.fiscal.positioncomodel_name='account.fiscal.position'help='If specified, this fiscal position will be used to fill the field fiscal position on the sale order created by the connector.The value can also be specified on website or the store or the store view.'string='Fiscal position' -
import_categories_from_dateDatetimestring='Import categories from date' -
import_products_from_dateDatetimestring='Import products from date' -
is_multi_companyBooleanhelp='If this flag is set, it is possible to choose warehouse at each level. When import partner, ignore company_id if this flag is set.'string='Is Backend Multi-Company' -
locationCharhelp='Url to magento application'required=Truestring='Location' -
nameCharrequired=Truestring='Name' -
order_import_delayIntegerdefault=0help='Only import orders created earlier than ... minutes ago.' -
passwordCharhelp='Webservice password'string='Password' -
product_binding_idsOne2many → magento.product.productcomodel_name='magento.product.product'inverse_name='backend_id'readonly=Truestring='Magento Products' -
product_stock_field_idMany2one → ir.model.fieldscomodel_name='ir.model.fields'default=_get_stock_field_iddomain="[('model', 'in', ['product.product', 'product.template']), ('ttype', '=', 'float')]"help='Choose the field of the product which will be used for stock inventory updates.\nIf empty, Quantity Available is used.'string='Stock Field' -
sale_prefixCharhelp="A prefix put before the name of imported sales orders.\nFor instance, if the prefix is 'mag-', the sales order 100000692 in Magento, will be named 'mag-100000692' in Odoo."string='Sale Prefix' -
tokenCharhelp='Authentication token for Magento 2.0+. See https://devdocs. magento.com/guides/v2.3/get-started/authentication/gs-authentication-token.html' -
use_auth_basicBooleanhelp='Use a Basic Access Authentication for the API. The Magento server could be configured to restrict access using a HTTP authentication based on a username and a password.'string='Use HTTP Auth Basic' -
use_custom_api_pathBooleanhelp="The default API path is '/index.php/api/xmlrpc'. Check this box if you use a custom API path, in that case, the location has to be completed with the custom API path "string='Custom Api Path' -
usernameCharhelp='Webservice user'string='Username' -
verify_sslBooleandefault=Truehelp='Only for Magento 2.0+'string='Verify SSL certificate' -
versionSelectionrequired=Trueselection='select_versions' -
warehouse_idMany2one → stock.warehousecomodel_name='stock.warehouse'help='Warehouse used to compute the stock quantities.'required=Truestring='Warehouse' -
website_idsOne2many → magento.websitecomodel_name='magento.website'inverse_name='backend_id'readonly=Truestring='Website'
-
add_checkpoint(self, record)@api.multi -
check_magento_structure(self)@api.multiUsed in each data import. Verify if a website exists for each backend before starting the import. -
import_customer_groups(self)@api.multi -
import_partners(self)@api.multiImport partners from all websites -
import_product_categories(self)@api.multi -
import_product_product(self)@api.multi -
import_sale_orders(self)@api.multiImport sale orders from all store views -
select_versions(self)@api.modelAvailable versions in the backend. Can be inherited to add custom versions. Using this method to add a version from an ``_inherit`` does not constrain to redefine the ``version`` field in the ``_inherit`` model. -
synchronize_metadata(self)@api.multi -
update_product_stock_qty(self)@api.multi -
work_on(self, model_name, **kwargs)@contextmanager@api.multi
New fields (2)
-
backend_idMany2one → magento.backendcomodel_name='magento.backend'ondelete='restrict'required=Truestring='Magento Backend' -
external_idCharoldname='magento_id'string='ID on Magento'
-
export_delete_record(self, backend, external_id)@job(default_channel='root.magento')@related_action(action='related_action_magento_link')Delete a record on Magento -
export_record(self, fields=None)@job(default_channel='root.magento')@related_action(action='related_action_unwrap_binding')@api.multiExport a record on Magento -
import_batch(self, backend, filters=None)@job(default_channel='root.magento')@api.modelPrepare the import of records modified on Magento -
import_record(self, backend, external_id, force=False)@job(default_channel='root.magento')@related_action(action='related_action_magento_link')@api.modelImport a Magento record
New fields (6)
-
dataBinaryreadonly=True args: 'File' -
magento_backend_idMany2one → magento.backenddefault=_default_magento_backend_idreadonly=Truerequired=True args: 'magento.backend' -
magento_binding_modelSelectionrequired=True args: '_get_magento_binding_model' -
magento_idCharrequired=True args: 'Magento Id' -
nameCharreadonly=True args: 'File Name' -
stateSelectiondefault='choose' args: [('choose', 'choose'), ('get', 'get')]
-
action_get_info(self)@api.multi
New fields (6)
-
account_analytic_idMany2one → account.analytic.accountcomodel_name='account.analytic.account'compute='_compute_account_analytic_id'string='Analytic account' -
fiscal_position_idMany2one → account.fiscal.positioncomodel_name='account.fiscal.position'compute='_compute_fiscal_position_id'string='Fiscal position' -
specific_account_analytic_idMany2one → account.analytic.accountcomodel_name='account.analytic.account'help='If specified, this analytic account will be used to fill the field on the sale order created by the connector. The value can also be specified on website or the store or the store view.'string='Specific analytic account' -
specific_fiscal_position_idMany2one → account.fiscal.positioncomodel_name='account.fiscal.position'help='If specified, this fiscal position will be used to fill the field fiscal position on the sale order created by the connector.The value can also be specified on website or the store or the store view.'string='Specific fiscal position' -
specific_warehouse_idMany2one → stock.warehousecomodel_name='stock.warehouse'help='If specified, this warehouse will be used to load fill the field warehouse (and company) on the sale order created by the connector.The value can also be specified on website or the store or the store view.'string='Specific warehouse' -
warehouse_idMany2one → stock.warehousecomodel_name='stock.warehouse'compute='_compute_warehouse_id'string='warehouse'
No public methods.
New fields (4)
-
descriptionTexttranslate=True -
magento_child_idsOne2many → magento.product.categorycomodel_name='magento.product.category'inverse_name='magento_parent_id'string='Magento Child Categories' -
magento_parent_idMany2one → magento.product.categorycomodel_name='magento.product.category'ondelete='cascade'string='Magento Parent Category' -
odoo_idMany2one → product.categorycomodel_name='product.category'ondelete='cascade'required=Truestring='Product Category'
No public methods.
New fields (10)
-
backordersSelectiondefault='use_default'required=Trueselection=[('use_default', 'Use Default Config'), ('no', 'No Sell'), ('yes', 'Sell Quantity < 0'), ('yes-and-notification', 'Sell Quantity < 0 and Use Customer Notification')]string='Manage Inventory Backorders' -
created_atDateargs: 'Created At (on Magento)' -
magento_internal_idCharhelp='In Magento2, we have to keep track of both the external_id (the product SKU) which is used in the Magento2 REST API, as well as the Magento internal id as used in the admin URL.' -
magento_qtyFloathelp='Last computed quantity to send on Magento.'string='Computed Quantity' -
manage_stockSelectiondefault='use_default'required=Trueselection=[('use_default', 'Use Default Config'), ('no', 'Do Not Manage Stock'), ('yes', 'Manage Stock')]string='Manage Stock Level' -
no_stock_syncBooleanhelp='Check this to exclude the product from stock synchronizations.'required=Falsestring='No Stock Synchronization' -
odoo_idMany2one → product.productcomodel_name='product.product'ondelete='restrict'required=Truestring='Odoo Product' -
product_typeSelectiondefault='simple'required=Trueselection='product_type_get'string='Magento Product Type' -
updated_atDateargs: 'Updated At (on Magento)' -
website_idsMany2many → magento.websitecomodel_name='magento.website'readonly=Truestring='Websites'
-
export_inventory(self, fields=None)@job(default_channel='root.magento')@related_action(action='related_action_unwrap_binding')@api.multiExport the inventory configuration and quantity of a product. -
product_type_get(self)@api.model -
recompute_magento_qty(self)@api.multiCheck if the quantity in the stock location configured on the backend has changed since the last export. If it has changed, write the updated quantity on `magento_qty`. The write on `magento_qty` will trigger an `on_record_write` event that will create an export job. It groups the products by backend to avoid to read the backend informations for each product.
New fields (11)
-
backend_idMany2one → magento.backendcomodel_name='magento.backend'readonly=Truerelated='website_id.backend_id'required=Falsestore=Truestring='Magento Backend' -
consider_as_companyBooleanhelp="An account imported with a 'company' in the billing address is considered as a company.\n The partner takes the name of the company and is not merged with the billing address."string='Considered as company' -
created_atDatetimereadonly=Truestring='Created At (on Magento)' -
emailidCharstring='E-mail address' -
group_idMany2one → magento.res.partner.categorycomodel_name='magento.res.partner.category'string='Magento Group (Category)' -
guest_customerBooleanstring='Guest Customer' -
newsletterBooleanstring='Newsletter' -
odoo_idMany2one → res.partnercomodel_name='res.partner'ondelete='cascade'required=Truestring='Partner' -
taxvatCharstring='Magento VAT' -
updated_atDatetimereadonly=Truestring='Updated At (on Magento)' -
website_idMany2one → magento.websitecomodel_name='magento.website'ondelete='restrict'required=Truestring='Magento Website'
No public methods.
New fields (2)
-
odoo_idMany2one → res.partner.categorycomodel_name='res.partner.category'ondelete='cascade'required=Truestring='Partner Category' -
tax_class_idIntegerstring='Tax Class ID'
No public methods.
New fields (8)
-
magento_order_idIntegerhelp="'order_id' field in Magento"string='Magento Order ID' -
magento_order_line_idsOne2many → magento.sale.order.linecomodel_name='magento.sale.order.line'inverse_name='magento_order_id'string='Magento Order Lines' -
magento_parent_idMany2one → magento.sale.ordercomodel_name='magento.sale.order'string='Parent Magento Order' -
odoo_idMany2one → sale.ordercomodel_name='sale.order'ondelete='cascade'required=Truestring='Sale Order' -
store_idMany2onereadonly=Truerelated='storeview_id.store_id'string='Storeview' -
storeview_idMany2one → magento.storeviewcomodel_name='magento.storeview'string='Magento Storeview' -
total_amountFloatdigits=dp.get_precision('Account')string='Total amount' -
total_amount_taxFloatdigits=dp.get_precision('Account')string='Total amount w. tax'
-
export_state_change(self, allowed_states=None, comment=None, notify=None)@job(default_channel='root.magento')@api.multiChange state of a sales order on Magento -
import_batch(self, backend, filters=None)@job(default_channel='root.magento')@api.modelPrepare the import of Sales Orders from Magento
New fields (5)
-
backend_idMany2onereadonly=Truerelated='magento_order_id.backend_id'required=Falsestore=Truestring='Magento Backend' -
magento_order_idMany2one → magento.sale.ordercomodel_name='magento.sale.order'index=Trueondelete='cascade'required=Truestring='Magento Sale Order' -
notesChar -
odoo_idMany2one → sale.order.linecomodel_name='sale.order.line'ondelete='cascade'required=Truestring='Sale Order Line' -
tax_rateFloatdigits=dp.get_precision('Account')string='Tax Rate'
-
create(self, vals)@api.model
New fields (3)
-
magento_order_idMany2one → magento.sale.ordercomodel_name='magento.sale.order'ondelete='set null'string='Magento Sale Order' -
odoo_idMany2one → stock.pickingcomodel_name='stock.picking'ondelete='cascade'required=Truestring='Stock Picking' -
picking_methodSelectionrequired=Trueselection=[('complete', 'Complete'), ('partial', 'Partial')]string='Picking Method'
-
export_picking_done(self, with_tracking=True)@job(default_channel='root.magento')@related_action(action='related_action_unwrap_binding')@api.multiExport a complete or partial delivery order. -
export_tracking_number(self)@job(default_channel='root.magento')@related_action(action='related_action_unwrap_binding')@api.multiExport the tracking number of a delivery order.
New fields (8)
-
backend_idMany2one → magento.backendcomodel_name='magento.backend'readonly=Truerelated='website_id.backend_id'required=Falsestore=Truestring='Magento Backend' -
create_invoice_onSelectiondefault='paid'help="Should the invoice be created in Magento when it is validated or when it is paid in Odoo?\nThis only takes effect if the sales order's related payment method is not giving an option for this by itself. (See Payment Methods)"required=Trueselection=[('open', 'Validate'), ('paid', 'Paid')]string='Create invoice on action' -
is_multi_companyBooleanrelated='backend_id.is_multi_company' -
nameChar -
send_invoice_paid_mailBooleanhelp='Does the invoice export/creation should send an email notification on Magento side?'string='Send email notification on invoice validated/paid' -
send_picking_done_mailBooleanhelp='Does the picking export/creation should send an email notification on Magento side?'string='Send email notification on picking done' -
storeview_idsOne2many → magento.storeviewcomodel_name='magento.storeview'inverse_name='store_id'readonly=Truestring='Storeviews' -
website_idMany2one → magento.websitecomodel_name='magento.website'ondelete='cascade'readonly=Truerequired=Truestring='Magento Website'
No public methods.
New fields (13)
-
backend_idMany2one → magento.backendcomodel_name='magento.backend'readonly=Truerelated='store_id.website_id.backend_id'required=Falsestore=Truestring='Magento Backend' -
base_media_urlCharhelp='Base URL to retrieve product images. Used for Magento2 only. For example: http://magento/media' -
catalog_price_tax_includedBooleanstring='Prices include tax' -
codeCharreadonly=True -
enabledBooleanreadonly=Truestring='Enabled' -
import_orders_from_dateDatetimehelp='do not consider non-imported sale orders before this date. Leave empty to import all sale orders'string='Import sale orders from date' -
is_multi_companyBooleanrelated='backend_id.is_multi_company' -
lang_idMany2one → res.langcomodel_name='res.lang'string='Language' -
nameCharreadonly=Truerequired=True -
no_sales_order_syncBooleanhelp='Check if the storeview is active in Magento but its sales orders should not be imported.'string='No Sales Order Synchronization' -
sort_orderIntegerreadonly=Truestring='Sort Order' -
store_idMany2one → magento.storecomodel_name='magento.store'ondelete='cascade'readonly=Truestring='Store' -
team_idMany2one → crm.teamcomodel_name='crm.team'string='Sales Team'
-
import_sale_orders(self)@api.multi
New fields (7)
-
codeCharreadonly=True -
import_partners_from_dateDatetimestring='Import partners from date' -
is_multi_companyBooleanrelated='backend_id.is_multi_company' -
nameCharreadonly=Truerequired=True -
product_binding_idsMany2many → magento.product.productcomodel_name='magento.product.product'readonly=Truestring='Magento Products' -
sort_orderIntegerreadonly=Truestring='Sort Order' -
store_idsOne2many → magento.storecomodel_name='magento.store'inverse_name='website_id'readonly=Truestring='Stores'
-
import_partners(self)@api.multi
New fields (1)
-
magento_bind_idsOne2many → magento.product.categorycomodel_name='magento.product.category'inverse_name='odoo_id'string='Magento Bindings'
No public methods.
New fields (1)
-
magento_bind_idsOne2many → magento.product.productcomodel_name='magento.product.product'inverse_name='odoo_id'string='Magento Bindings'
No public methods.
New fields (0)
No new fields.
Public methods (1)-
related_action_magento_link(self, backend_id_pos=0, external_id_pos=1)@api.multiOpen a Magento URL on the admin page to view/edit the record related to the job.
New fields (4)
-
birthdayDatestring='Birthday' -
companyCharstring='Company name (in Magento)' -
magento_address_bind_idsOne2many → magento.addresscomodel_name='magento.address'inverse_name='odoo_id'string='Magento Address Bindings' -
magento_bind_idsOne2many → magento.res.partnercomodel_name='magento.res.partner'inverse_name='odoo_id'string='Magento Bindings'
-
import_batch(self, backend, filters=None)@job(default_channel='root.magento')@api.model
New fields (1)
-
magento_bind_idsOne2many → magento.res.partner.categorycomodel_name='magento.res.partner.category'inverse_name='odoo_id'readonly=Truestring='Magento Bindings'
No public methods.
New fields (1)
-
magento_bind_idsOne2many → magento.sale.ordercomodel_name='magento.sale.order'inverse_name='odoo_id'string='Magento Bindings'
-
copy(self, default=None)@api.multi -
get_parent_id(self)@api.depends('magento_bind_ids', 'magento_bind_ids.magento_parent_id')Return the parent order. For Magento sales orders, the magento parent order is stored in the binding, get it from there. -
write(self, vals)@api.multi
New fields (1)
-
magento_bind_idsOne2many → magento.sale.order.linecomodel_name='magento.sale.order.line'inverse_name='odoo_id'string='Magento Bindings'
-
copy_data(self, default=None)@api.multi -
create(self, vals)@api.model
New fields (1)
-
magento_bind_idsOne2many → magento.stock.pickingcomodel_name='magento.stock.picking'inverse_name='odoo_id'string='Magento Bindings'
No public methods.
Loading…
- Status
- Open migration PR — not merged yet for this version
- CI status
- no CI data
- Open since
- 3089 days ago
- Last activity
- 752 days ago
- Repository
- OCA/connector-magento
- Pull request
- [11.0] [MIG] connector_magento (#274)
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 27 days ago
- Last activity
- 14 days ago
- Repository
- OCA/connector-magento
- Pull request
- [18.0][MIG] connector_magento: Migration to 18.0 (#340)