Skip to content
Health
60/100
fair
  • Security25/25
    No findings
  • Activity25/25
    Human commit this month
  • Required by5/25
    0 modules depend on it
  • Maturity5/25
    In 1 Odoo series since 19.0

Heuristic over the facts below, not an audit · How it's computed

Security findings
Grave / minor (static analysis)
Required by
0
Modules depending on it
External deps
3 pip · 0 bin
Python packages / system binaries
License
AGPL-3
No conflicts with its dependencies
Folder size
0.17 MB
Module directory on disk
Code analysis 0 migration notes 6 models 8 views 0 HTTP endpoints

Description

Bind Mercado Libre listings to Odoo products and keep price and seller stock aligned.

Listings are matched by the SELLER_SKU attribute, then by seller_custom_field, then by the product internal reference. A listing that does not match stays unbound. Create missing products is off by default.

Price export uses the Mercado Libre Prices API. Stock export sends available_quantity for legacy items and PUT /user-products/{id}/stock/type/seller_warehouse when the backend version is User products. Fulfillment stock is read-only.

Dependencies

Odoo dependencies
Python dependencies
requests, openupgradelib, cachetools
System dependencies
None
Required by
None

Code analysis

Extracted from the source by best-effort static analysis (no code is executed); details may be incomplete.

Views touched 8

XML IDNameModelTypeStatus
mercadolibre_backend_view_form_catalog mercadolibre.backend.form.catalog mercadolibre.backend form Inherits connector_mercadolibre.mercadolibre_backend_view_form
mercadolibre_category_view_form mercadolibre.category.form mercadolibre.category form New
mercadolibre_category_view_list mercadolibre.category.list mercadolibre.category list New
mercadolibre_product_view_form mercadolibre.product.product.form mercadolibre.product.product form New
mercadolibre_product_view_list mercadolibre.product.product.list mercadolibre.product.product list New
mercadolibre_product_view_search mercadolibre.product.product.search mercadolibre.product.product search New
product_product_view_form_mercadolibre product.product.form.mercadolibre product.product form Inherits product.product_normal_form_view
product_template_view_form_mercadolibre product.template.form.mercadolibre product.template form Inherits product.product_template_form_view

HTTP endpoints 0

No HTTP endpoints found for this module.

Models touched 6

New fields (8)
  • create_missing_products Boolean
    default=False
  • export_prices Boolean
    default=True
  • export_stock Boolean
    default=False
  • import_products Boolean
    default=True
  • last_product_sync_at Datetime
    copy=False readonly=True
  • product_binding_count Integer
    compute='_compute_product_binding_count'
  • product_binding_ids One2many → mercadolibre.product.product
    comodel_name='mercadolibre.product.product' inverse_name='backend_id'
  • warehouse_mapping_ids One2many → mercadolibre.warehouse.mapping
    comodel_name='mercadolibre.warehouse.mapping' inverse_name='backend_id'
Public methods (4)
  • action_view_products(self)
  • button_import_listings(self)
  • button_refresh_categories(self)
  • cron_import_listings(self)
    @api.model

New fields (9)
  • attribute_schema Json
    readonly=True
  • backend_id Many2one → mercadolibre.backend
    comodel_name='mercadolibre.backend' index=True ondelete='cascade' required=True
  • external_id Char
    index=True required=True
  • listing_allowed Boolean
  • name Char
  • parent_external_id Char
  • parent_id Many2one → mercadolibre.category
    comodel_name='mercadolibre.category' index=True ondelete='cascade'
  • parent_path Char
    index=True
  • sync_date Datetime
    readonly=True
Public methods (0)

No public methods.

New fields (16)
  • backend_id Many2one → mercadolibre.backend
    comodel_name='mercadolibre.backend' index=True ondelete='restrict' required=True
  • category_id Many2one → mercadolibre.category
    comodel_name='mercadolibre.category'
  • currency_id Many2one → res.currency
    comodel_name='res.currency'
  • default_code Char
    related='odoo_id.default_code'
  • external_id Char
    index=True required=True
  • fulfillment Boolean
  • listing_status Selection
    selection=[('active', 'Active'), ('paused', 'Paused'), ('closed', 'Closed'), ('under_review', 'Under review'), ('inactive', 'Inactive')]
  • lst_price Float
    related='odoo_id.lst_price'
  • marketplace_qty Float
    string='Marketplace quantity'
  • odoo_id Many2one → product.product
    comodel_name='product.product' index=True ondelete='cascade'
  • permalink Char
  • picture_url_text Text
    compute='_compute_picture_url_text'
  • picture_urls Json
  • seller_sku Char
    index=True string='Seller SKU'
  • user_product_id Char
    index=True
  • variation_id Char
    index=True
Public methods (4)
  • button_export_price(self)
  • button_export_stock(self)
  • button_match(self)
  • init(self)

New fields (7)
  • backend_id Many2one → mercadolibre.backend
    comodel_name='mercadolibre.backend' index=True ondelete='cascade' required=True
  • company_id Many2one → res.company
    comodel_name='res.company' related='backend_id.company_id' store=True
  • location_id Many2one → stock.location
    comodel_name='stock.location' related='warehouse_id.lot_stock_id' store=True
  • network_node_id Char
  • stock_type Selection
    default='seller_warehouse' required=True selection=[('seller_warehouse', 'Seller warehouse'), ('selling_address', 'Selling address'), ('fulfillment', 'Fulfillment')]
  • store_id Char
    string='Store ID'
  • warehouse_id Many2one → stock.warehouse
    comodel_name='stock.warehouse' domain="[('company_id', '=', company_id)]" required=True
Public methods (0)

No public methods.

New fields (2)
  • mercadolibre_bind_count Integer
    compute='_compute_mercadolibre_bind_count'
  • mercadolibre_bind_ids One2many → mercadolibre.product.product
    comodel_name='mercadolibre.product.product' inverse_name='odoo_id'
Public methods (1)
  • action_view_mercadolibre_bindings(self)

New fields (1)
  • mercadolibre_bind_count Integer
    compute='_compute_mercadolibre_bind_count'
Public methods (1)
  • action_view_mercadolibre_bindings(self)