Repository
OCA/ddmrp · module folder · Try on Runboat
Module version
1.1.0
Category
Warehouse Management
Folder size
0.11 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/ddmrp
Last tracking update
2026-08-07 08:43:06
Authors
Odoo Community Association (OCA), ForgeFlow
Maintainers
Odoo Community Association (OCA), ForgeFlow
Committers
Weblate, ThiagoMForgeFlow, OCA-git-bot, oca-ci, DavidJForgeFlow
Odoo dependencies
Python dependencies
bokeh==3.6.3
System dependencies
None
Required by
ddmrp_packaging_product_replace
Description
Provides a tool for product replacement.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
stock_buffer_search stock.buffer.search - ddmrp_product_replace stock.buffer search Inherits ddmrp.stock_buffer_search
stock_buffer_view_form stock.buffer.form - ddmrp_product_replace stock.buffer form Inherits ddmrp.stock_buffer_view_form
stock_buffer_view_tree stock.buffer.tree - ddmrp_product_replace stock.buffer tree Inherits ddmrp.stock_buffer_view_tree
view_ddmrp_adjustment_sheet_wizard_form ddmrp.product.replace.form ddmrp.product.replace form New
view_make_procurement_buffer_wizard Request Procurement make.procurement.buffer Inherits ddmrp.view_make_procurement_buffer_wizard
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (4)

New fields (14)
  • buffer_ids Many2many → stock.buffer
    comodel_name='stock.buffer' compute='_compute_buffer_ids' readonly=False store=True string='Affected Buffers'
  • consider_past_demand Boolean
    default=True help='Consider Old product moves as demand for new product' string='Consider Old Product Demand'
  • copy_packaging Boolean
  • copy_putaway Boolean
    string='Copy Put Away Strategy'
  • copy_route Boolean
    string='Copy Routes'
  • is_already_replaced Boolean
    compute='_compute_is_already_replaced'
  • mode Selection
    default='new_buffer' required=True selection=[('new_buffer', 'Create a new buffer for the replacing product.'), ('use_existing', 'Replace product in existing buffers')]
  • multi_product Boolean
    compute='_compute_multi_product'
  • new_product_default_code Char
    string='New Product Internal Ref.'
  • new_product_id Many2one → product.product
    comodel_name='product.product' help='Product that is going to replace the other one.' string='Substitute Product'
  • new_product_name Char
  • old_product_ids Many2many → product.product
    comodel_name='product.product' help='Product to be replaced.' ondelete='cascade' required=True string='Replaced Products'
  • primary_old_product_id Many2one → product.product
    comodel_name='product.product' compute='_compute_primary_old_product_id' domain="[('id', 'in', old_product_ids)]" readonly=False store=True string='Primary Replaced Product'
  • use_existing Selection
    required=True selection=[('existing', 'Use Existing Product'), ('new', 'Create New Product')] string='Use Existing/New Product'
Public methods (1)
  • button_validate(self)

New fields (2)
  • has_replaced_buffers Boolean
    compute='_compute_replaced_by_alert_text'
  • replaced_by_alert_text Text
    compute='_compute_replaced_by_alert_text'
Public methods (0)

No public methods.

New fields (7)
  • demand_product_ids Many2many → product.product
    comodel_name='product.product' copy=False help='This field is used for a correct product replacement within a DDMRP buffer.' string='Considered As Demand'
  • is_replacement_product Boolean
    compute='_compute_is_replacement_product' help='The product of this buffer is replacing another product' store=True string='Replacement Product'
  • replaced_by_alert_text Char
    compute='_compute_replaced_by_alert_text'
  • replaced_by_id Many2one → stock.buffer
    comodel_name='stock.buffer' help='The product in this buffer is replaced by the product of selected buffer. When you replace another buffer:\n - Past Demand of the replacement buffer will include the past demand of this product\n - Several buffers can be replaced in chained and coexist at the same time: A replaces B that replaces C, then A aggregates both B and C where B only aggregates C' readonly=True string='Replaced by' tracking=True
  • replacement_for_count Integer
    compute='_compute_replacement_for_count'
  • replacement_for_ids One2many → stock.buffer
    comodel_name='stock.buffer' inverse_name='replaced_by_id' string='Replaces'
  • use_replacement_for_buffer_status Boolean
    compute='_compute_use_replacement_for_buffer_status' copy=False help='If you tick this option, the buffer will consider the incoming and on-hand of all products it replaces and this will impact its NFP.' readonly=False store=True string='Include Incoming & On-Hands of replaced products'
Public methods (1)
  • action_view_buffers_replaced(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…