TIP: You can type at any time to perform a new search.
DDMRP
ddmrp · OCA/ddmrp
- Repository
- OCA/ddmrp · module folder · Try on Runboat
- Module version
- Category
- Warehouse
- Folder size
- 1.12 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://github.com/OCA/ddmrp
- Last tracking update
- 2026-08-14 17:39:02
- Authors
- Odoo Community Association (OCA), ForgeFlow
- Maintainers
- Odoo Community Association (OCA), ForgeFlow
- Committers
- Lois Rilo, Jordi Ballester Alomar, Don Kendall, Weblate, OCA-git-bot, oca-ci, DavidJForgeFlow, Paula Marfull, dkendall
- Odoo dependencies
- Python dependencies
- bokeh==3.9.0
- System dependencies
- None
- Required by
- ddmrp_adjustment, ddmrp_chatter, ddmrp_coverage_days, ddmrp_exclude_moves_adu_calc, ddmrp_history, ddmrp_purchase_hide_onhand_status, ddmrp_report_part_flow_index, ddmrp_warning, stock_buffer_capacity_limit, stock_buffer_route, stock_buffer_sales_analysis
- Description
Demand Driven Material Requirements Planning is a formal multi-echelon planning and execution method developed by Ms. Carol Ptak and Mr. Chad Smith. DDMRP combines blended aspects of Material Requirements Planning (MRP), Distribution Requirements Planning (DRP) with the pull and visibility emphases found in Lean and the Theory of Constraints and the variability reduction emphasis of Six Sigma. This method has five sequential components: 1. *Strategic Inventory Positioning*. Answers the question "Given our system and environment, where should we place inventory to have the best protection?" and determines where should decoupling points of inventory be placed. 2. *Buffer Profiles and Levels*. Determine the amount of protection at those decoupling points. 3. *Dynamic Adjustments*. Allow the company to adapt buffers to group and individual part trait changes over time through the use of several types of adjustments. 4. *Demand Driven Planning*. Allow to launch purchase orders (POs), manufacturing orders (MOs) and Transfer Orders (TOs) based on the priority dictated by the buffers. 5. *Visible and Collaborative Execution*. These POs, MOs and TOs have to be effectively managed to synchronize with the changes that often occur within the "execution horizon." These five components work together to greatly dampen, if not eliminate, the nervousness of traditional MRP systems and the bullwhip effect in complex and challenging environments. This approach provides real information about those parts that are truly at risk of negatively impacting the planned availability of inventory. DDMRP sorts the significant few items that require attention from the many parts that are being managed. Under the DDMRP approach, fewer planners can make better decisions more quickly. That means companies will be better able to leverage their working and human capital. Demand Driven Material Requirements Planning is quickly being adopted by a wide variety of leading companies across the world. Some of the benefits reported by the DDMRP method include: - High fill rate performance - Lead time reductions - Inventory reductions, while improving customer service - Eliminate costs related to expedite - Planners see priorities instead of constantly fighting the conflicting messages of MRP It is highly recommended to read the book 'Demand Driven Material Requirements Planning (DDMRP)' by Carol Ptak and Chad Smith.
Code Analysis ⓘ
Views touched (39)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
ddmrp_duplicate_buffer_wizard |
Ddmrp Duplicate Buffer Wizard | ddmrp.duplicate.buffer | form | New |
mrp_bom_change_location_wizard |
Mrp Bom Change Location Wizard | mrp.bom.change.location | form | New |
mrp_bom_form_view |
mrp.bom.form - ddmrp | mrp.bom | form | Inherits mrp.mrp_bom_form_view |
mrp_bom_line_view_form |
mrp.bom.line.form | mrp.bom.line | form | Inherits mrp.mrp_bom_line_view_form |
mrp_production_tree_view |
mrp.production.tree | mrp.production | tree | Inherits mrp.mrp_production_tree_view |
product_normal_form_view_inherit |
product.product.form.inherit | product.product | form | Inherits product.product_normal_form_view |
product_template_only_form_view_inherit |
product.template.product.form.inherit | product.template | form | Inherits product.product_template_only_form_view |
purchase_order_form |
purchase.order.form - ddmrp | purchase.order | form | Inherits purchase.purchase_order_form |
purchase_order_line_execution_tree |
purchase.order.line.tree - ddmrp | purchase.order.line | list | New |
purchase_order_line_form2 |
purchase.order.line.form2 | purchase.order.line | Inherits purchase.purchase_order_line_form2 | |
purchase_order_line_search |
purchase.order.line.search - ddmrp | purchase.order.line | search | Inherits purchase.purchase_order_line_search |
report_mrp_bom_inherit_ddmrp |
report_mrp_bom_inherit_ddmrp | ir.ui.view | qweb | Inherits mrp.report_mrp_bom |
report_mrp_bom_pdf_line_inherit_ddmrp |
report_mrp_bom_pdf_line_inherit_ddmrp | ir.ui.view | qweb | Inherits mrp.report_mrp_bom_pdf_line |
res_config_settings_view_form |
res.config.settings.view.form.inherit.ddmrp | res.config.settings | form | Inherits base.res_config_settings_view_form |
stock_buffer_search |
stock.buffer.search | stock.buffer | search | New |
stock_buffer_view_form |
stock.buffer.form | stock.buffer | form | New |
stock_buffer_view_tree |
stock.buffer.tree | stock.buffer | list | New |
view_make_procurement_buffer_wizard |
Request Procurement | make.procurement.buffer | form | New |
view_move_consumption_pivot |
stock.move.consumption.pivot | stock.move | pivot | New |
view_move_form |
stock.move.form | stock.move | form | Inherits stock.view_move_form |
view_move_search |
stock.move.search | stock.move | search | Inherits stock.view_move_search |
view_move_tree |
stock.move.tree | stock.move | tree | Inherits stock.view_move_tree |
view_mrp_production_filter |
mrp.production.select | mrp.production | Inherits mrp.view_mrp_production_filter | |
view_picking_form |
stock.picking.form.inherit | stock.picking | form | Inherits stock.view_picking_form |
view_product_adu_calculation_method_form |
product.adu.calculation.method.form | product.adu.calculation.method | form | New |
view_product_adu_calculation_method_search |
product.adu.calculation.method.search | product.adu.calculation.method | search | New |
view_product_adu_calculation_method_tree |
product.adu.calculation.method.tree | product.adu.calculation.method | list | New |
view_purchase_order_filter |
request.quotation.select - ddmrp | purchase.order | Inherits purchase.view_purchase_order_filter | |
view_run_ddmrp_wizard |
ddmrp.run.form | ddmrp.run | form | New |
view_stock_buffer_profile_form |
stock.buffer.profile.form | stock.buffer.profile | form | New |
view_stock_buffer_profile_lead_time_form |
stock.buffer.profile.lead.time.form | stock.buffer.profile.lead.time | form | New |
view_stock_buffer_profile_lead_time_search |
stock.buffer.profile.lead.time.search | stock.buffer.profile.lead.time | search | New |
view_stock_buffer_profile_lead_time_tree |
stock.buffer.profile.lead.time.tree | stock.buffer.profile.lead.time | list | New |
view_stock_buffer_profile_search |
stock.buffer.profile.search | stock.buffer.profile | search | New |
view_stock_buffer_profile_tree |
stock.buffer.profile.tree | stock.buffer.profile | list | New |
view_stock_buffer_profile_variability_form |
stock.buffer.profile.variability.form | stock.buffer.profile.variability | form | New |
view_stock_buffer_profile_variability_search |
stock.buffer.profile.variability.search | stock.buffer.profile.variability | search | New |
view_stock_buffer_profile_variability_tree |
stock.buffer.profile.variability.tree | stock.buffer.profile.variability | list | New |
view_warehouse |
stock.warehouse | stock.warehouse | Inherits stock.view_warehouse |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (27)
New fields (3)
-
location_idMany2one → stock.locationcomodel_name='stock.location'string='New Location' -
product_idMany2one → product.productcomodel_name='product.product'string='New Product' -
typeSelectionrequired=Trueselection=[('both', 'Change both values'), ('product', 'Change Product'), ('location', 'Change Location')]string='Duplication Type'
-
action_duplicate_buffer(self) -
default_get(self, fields_list)@api.model
New fields (0)
No new fields.
Public methods (2)-
run_cron_ddmrp(self) -
run_cron_ddmrp_adu(self)
New fields (2)
-
item_idsOne2many → make.procurement.buffer.itemcomodel_name='make.procurement.buffer.item'inverse_name='wiz_id'string='Items' -
partner_idMany2one → res.partnercomodel_name='res.partner'help='If set, will be used as preferred vendor for purchase routes.'string='Vendor'
-
default_get(self, fields)@api.model -
make_procurement(self)
New fields (9)
-
buffer_idMany2one → stock.buffercomodel_name='stock.buffer'readonly=Falsestring='Stock Buffer' -
date_plannedDatetimerequired=Falsestring='Planned Date' -
location_idMany2one → stock.locationcomodel_name='stock.location'readonly=Truestring='Location' -
product_idMany2one → product.productcomodel_name='product.product'readonly=Truestring='Product' -
qtyFloat -
recommended_qtyFloatreadonly=True -
uom_idMany2one → uom.uomcomodel_name='uom.uom'string='Unit of Measure' -
warehouse_idMany2one → stock.warehousecomodel_name='stock.warehouse'readonly=Truestring='Warehouse' -
wiz_idMany2one → make.procurement.buffercomodel_name='make.procurement.buffer'ondelete='cascade'readonly=Truerequired=Truestring='Wizard'
-
onchange_uom_id(self)@api.onchange('uom_id')
New fields (4)
-
buffer_idMany2one → stock.buffercomodel_name='stock.buffer'compute='_compute_buffer'string='Stock Buffer' -
context_location_idMany2one → stock.locationcomodel_name='stock.location'compute='_compute_context_location'string='Stock Location' -
dltFloatcompute='_compute_dlt'string='Decoupled Lead Time (days)' -
is_bufferedBooleancompute='_compute_is_buffered'help='True when the product has an DDMRP buffer associated.'string='Buffered?'
-
action_change_context_location(self)
New fields (1)
-
location_idMany2one → stock.locationcomodel_name='stock.location'
-
action_change_location(self) -
default_get(self, fields_list)@api.model
New fields (4)
-
buffer_idMany2one → stock.buffercomodel_name='stock.buffer'compute='_compute_is_buffered'string='Stock Buffer' -
context_location_idMany2onerelated='bom_id.context_location_id' -
dltFloatcompute='_compute_dlt'string='Decoupled Lead Time (days)' -
is_bufferedBooleancompute='_compute_is_buffered'help='True when the product has an DDMRP buffer associated.'string='Buffered?'
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (3)
-
buffer_idMany2one → stock.buffercomodel_name='stock.buffer'index=Truestring='Stock Buffer' -
execution_priority_levelSelectionreadonly=Trueselection=_PRIORITY_LEVELstring='Buffer On-Hand Alert Level' -
on_hand_percentFloatstring='On Hand/TOR (%)'
-
create(self, vals_list)@api.model_create_multi
New fields (9)
-
company_idMany2one → res.companycomodel_name='res.company'string='Company' -
factor_futureFloatdefault=0.5help='When using a blended method, this is the relative weight assigned to the future part of the combination.'string='Future Factor' -
factor_pastFloatdefault=0.5help='When using a blended method, this is the relative weight assigned to the past part of the combination.'string='Past Factor' -
horizon_futureFloathelp='Length-of-period horizon in days looking forward.'string='Future Horizon' -
horizon_pastFloathelp='Length-of-period horizon in days looking past.'string='Past Horizon' -
methodSelectionselection='_get_calculation_method'string='Calculation method' -
nameCharrequired=True -
source_futureSelectionhelp='Information source used for future calculation.'selection='_get_source_selection'string='Future Source' -
source_pastSelectionhelp='Information source used for past calculation.'selection='_get_source_selection'string='Past Source'
No public methods.
New fields (2)
-
buffer_countIntegercompute='_compute_buffer_count' -
buffer_idsOne2many → stock.buffercomodel_name='stock.buffer'inverse_name='product_id'string='Stock Buffers'
-
action_view_stock_buffers(self) -
write(self, values)
New fields (1)
-
buffer_countIntegercompute='_compute_buffer_count'
-
action_view_stock_buffers(self)
New fields (1)
-
ddmrp_commentTextstring='Follow-up Notes'
No public methods.
New fields (4)
-
buffer_idsMany2many → stock.buffercomodel_name='stock.buffer'copy=Falsereadonly=Truestring='Stock Buffers' -
ddmrp_commentTextreadonly=Falserelated='order_id.ddmrp_comment' -
execution_priority_levelSelectionreadonly=Trueselection=_PRIORITY_LEVELstring='Buffer On-Hand Status Level' -
on_hand_percentFloatreadonly=Truestring='On Hand/TOR (%)'
-
create(self, vals) -
write(self, vals)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (3)
-
ddmrp_adu_calc_include_scrapBooleanstring='Include scrap locations in ADU calculation' -
ddmrp_auto_update_nfpBooleanhelp="Transfer status changes can trigger the update of relevant buffer's NFP."string='Update NFP on Stock Buffers on relevant events.' -
ddmrp_qty_multiple_toleranceFloatstring='Qty Multiple Tolerance'
No public methods.
New fields (11)
-
ddmrp_adu_calc_include_scrapBooleanreadonly=Falserelated='company_id.ddmrp_adu_calc_include_scrap' -
ddmrp_auto_update_nfpBooleanreadonly=Falserelated='company_id.ddmrp_auto_update_nfp' -
ddmrp_qty_multiple_toleranceFloatreadonly=Falserelated='company_id.ddmrp_qty_multiple_tolerance' -
module_ddmrp_adjustmentBooleanstring='apply adjustments to dynamically alter buffers' -
module_ddmrp_chatterBooleanstring='Chatter in Stock Buffers' -
module_ddmrp_coverage_daysBooleanstring='Shows the current on-hand for stock buffers expressed as coverage days.' -
module_ddmrp_historyBooleanstring='Store historical data from stock buffers' -
module_ddmrp_packagingBooleanstring='Use packagings on stock buffers.' -
module_ddmrp_purchase_hide_onhand_statusBooleanstring='Hide Purchase On-Hand Status' -
module_ddmrp_warningBooleanstring='Configuration Warnings in Stock Buffers' -
module_stock_buffer_capacity_limitBooleanstring='Storage Capacity Limits'
No public methods.
New fields (79)
-
activeBooleandefault=True -
aduFloatdefault=0.0digits='Average Daily Usage'help='Average Daily Usage'readonly=Truestring='ADU' -
adu_calculation_methodMany2one → product.adu.calculation.methodcomodel_name='product.adu.calculation.method'required=Truestring='ADU calculation method' -
adu_calculation_method_source_futureSelectionrelated='adu_calculation_method.source_future' -
adu_calculation_method_source_pastSelectionrelated='adu_calculation_method.source_past' -
adu_calculation_method_typeSelectionrelated='adu_calculation_method.method' -
adu_fixedFloatdefault=1.0digits='Average Daily Usage'string='Fixed ADU' -
auto_procureBooleandefault=Falsehelp='Whenever the buffer is recomputed, if this option is set, it will procure automatically if needed.' -
auto_procure_optionSelectiondefault='standard'required=Trueselection=[('standard', 'When recommended (NFP below TOY)'), ('stockout', 'When in stockout')] -
buffer_profile_idMany2one → stock.buffer.profilecomodel_name='stock.buffer.profile'required=Truestring='Buffer Profile' -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>required=Truestring='Company' -
ddmrp_chartTextcompute='_compute_ddmrp_chart_planning'string='DDMRP Chart' -
ddmrp_chart_executionTextcompute='_compute_ddmrp_chart_execution'string='DDMRP Execution Chart' -
ddmrp_demand_chartTextcompute='_compute_ddmrp_demand_supply_chart'string='DDMRP Demand Chart' -
ddmrp_supply_chartTextcompute='_compute_ddmrp_demand_supply_chart'string='DDMRP Supply Chart' -
demand_stock_move_idsMany2many → stock.movecomodel_name='stock.move'help='All demand stock moves for this buffer' -
distributed_source_location_idMany2one → stock.locationcomodel_name='stock.location'help='Source location from where goods will be replenished. Computed when buffer is refreshed from following the Stock Rules.'index=Truereadonly=Truestring='Replenishment Location' -
distributed_source_location_qtyFloatcompute='_compute_distributed_source_location_qty'help='Quantity free for distributed buffer in the source location. When a procurement is requested, if the option is active on the profile, it will be limited to this quantity.'search='_search_distributed_source_location_qty'string='Source Location Free Quantity (distributed)' -
dltFloatcompute='_compute_dlt'help='Decoupled Lead Time (days)'string='DLT (days)' -
execution_priority_levelSelectionreadonly=Trueselection=_PRIORITY_LEVELstore=Truestring='On-Hand Alert Level' -
extra_lead_timeFloatdefault=0.0help="When defined, this lead time will be added to the decoupled lead time for the computation of the zones size (it won't affect planned date for procurements).\nThis is particularly useful in situations of infrequent but periodic demand. E.g. We receive a large order every 30 days, whereas the supplier takes 10 days to supply. \nIn this case the yellow zone must cover for the entire cycle of 30 days of demand.\nIn situations with infrequent demand the ADU tends to be very small, and every new order would be treated as a spike, when \nin reality this is not an exceptional situation."string='Extra lead time (for Sizing)' -
green_overrideFloatstring='Green Zone (Override)' -
green_zone_lt_factorFloatcompute='_compute_green_zone'help='Green zone Lead Time Factor'store=Truestring='Green Zone Lead Time Factor' -
green_zone_moqFloatcompute='_compute_green_zone'digits='Product Unit of Measure'help='Green zone qty option considering minimum order quantity'store=Truestring='Green Zone Minimum Order Quantity' -
green_zone_ocFloatcompute='_compute_green_zone'help='Green zone qty option considering desired Order Cycle'store=Truestring='Green Zone Order Cycle' -
green_zone_qtyFloatcompute='_compute_green_zone'digits='Product Unit of Measure'store=True -
group_idMany2one → stock.rulecomodel_name='stock.rule'copy=Falsehelp='Moves created through this buffer will be put in this procurement group. If none is given, the moves generated by stock rules will be grouped into one big picking.'string='Procurement Group' -
incoming_dlt_qtyFloatreadonly=Truestring='Incoming (Within DLT)' -
incoming_outside_dlt_qtyFloatreadonly=Truestring='Incoming (Outside DLT)' -
incoming_total_qtyFloatreadonly=Truestring='Total Incoming' -
item_typeSelectionrelated='buffer_profile_id.item_type' -
lead_daysIntegerdefault=1help='Lead time for distributed products.' args: 'Lead Time (Distributed)' -
location_idMany2one → stock.locationcomodel_name='stock.location'ondelete='cascade'required=Truestring='Location' -
main_supplier_idMany2one → res.partnercomodel_name='res.partner'compute='_compute_main_supplier'help='The main supplier is the first listed supplier defined on the product that is valid for this product variant. Any date restrictions are not taken into account.'index=Truestore=Truestring='Main Supplier' -
minimum_order_quantityFloatdigits='Product Unit of Measure' -
mrp_production_idsOne2many → mrp.productioncomodel_name='mrp.production'inverse_name='buffer_id'string='Manufacturing Orders' -
nameCharcopy=Falsedefault=<expr>required=True -
net_flow_positionFloatdigits='Product Unit of Measure'readonly=True -
net_flow_position_percentFloatreadonly=Truestring='Net flow position (% of TOG)' -
on_hand_percentFloatreadonly=Truestore=Truestring='On Hand/TOR (%)' -
on_hand_target_maxFloatcompute='_compute_on_hand_target_max'help='It denotes how far you are on average from the target'string='Target On Hand (Max)' -
on_hand_target_minFloathelp='It denotes what the target stock on hand range is.'related='top_of_red'string='On Hand Target Range' -
on_hand_target_positionFloatcompute='_compute_on_hand_target_position'help='It denotes what the target stock on hand is. The computation is: OH Target = TOR + Green Zone / 2 'string='Avg On Hand Target Position' -
order_cycleFloatstring='Minimum Order Cycle (days)' -
order_spike_horizonFloat -
order_spike_thresholdFloatcompute='_compute_order_spike_threshold'digits='Product Unit of Measure'store=True -
planning_priority_levelSelectionreadonly=Trueselection=_PRIORITY_LEVEL -
procure_max_qtyFloatdigits='Product Unit of Measure'help='Maximum qty for a single procurement'string='Maximum Procure Batch' -
procure_min_qtyFloatdigits='Product Unit of Measure'help='Minimum qty for a single procurement'string='Minimum Procure Batch' -
procure_recommended_qtyFloatcompute='_compute_procure_recommended_qty'store=Truestring='Procure Recommendation' -
procure_uom_idMany2one → uom.uomcomodel_name='uom.uom'compute='_compute_procure_uom_id'domain="[('id', 'in', valid_uom_ids)]"readonly=Falsestore=Truestring='Procurement UoM' -
product_categ_idMany2one → product.categorycomodel_name='product.category'readonly=Truerelated='product_id.categ_id'store=Truestring='Product Category' -
product_idMany2one → product.productcomodel_name='product.product'domain=[('is_storable', '=', True)]ondelete='cascade'required=Truestring='Product' -
product_location_qty_available_not_resFloathelp='Quantity available in this stock buffer, this is the total quantity on hand minus the outgoing reservations.'readonly=Truestring='Quantity On Hand (Unreserved)' -
product_typeSelectionreadonly=Truerelated='product_id.type' -
product_uomMany2onerelated='product_id.uom_id' -
product_vendor_codeCharcompute='_compute_product_vendor_code'string='Vendor Code' -
purchase_line_idsMany2many → purchase.order.linecomodel_name='purchase.order.line'copy=Falsereadonly=Truestring='Purchase Order Lines' -
qty_multipleFloatdefault=1digits='Product Unit of Measure'help='The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used.'required=True -
qualified_demandFloatdigits='Product Unit of Measure'readonly=True -
qualified_demand_mrp_move_idsMany2many → mrp.movecomodel_name='mrp.move' -
qualified_demand_stock_move_idsMany2many → stock.movecolumn1='stock_buffer_id'column2='stock_move_id'comodel_name='stock.move'help='Stock moves considered qualified demand for this buffer'relation='stock_buffer_qualified_demand_stock_move_rel' -
red_base_qtyFloatcompute='_compute_red_zone'digits='Product Unit of Measure'store=True -
red_overrideFloatstring='Red Zone (Override)' -
red_safety_qtyFloatcompute='_compute_red_zone'digits='Product Unit of Measure'store=True -
red_zone_qtyFloatcompute='_compute_red_zone'digits='Product Unit of Measure'store=True -
replenish_methodSelectionrelated='buffer_profile_id.replenish_method' -
rfq_inside_dlt_qtyFloathelp='Request for Quotation total quantity that is planned inside of the DLT horizon.'readonly=Truestring='RFQ Qty (Inside DLT)' -
rfq_outside_dlt_qtyFloathelp='Request for Quotation total quantity that is planned outside of the DLT horizon.'readonly=Truestring='RFQ Qty (Outside DLT)' -
rfq_total_qtyFloathelp='Request for Quotation total quantity that is planned'readonly=Truestring='RFQ Total Qty' -
show_execution_chartBoolean -
top_of_greenFloatcompute='_compute_green_zone'digits='Product Unit of Measure'store=True -
top_of_redFloatrelated='red_zone_qty'store=Truestring='Top Of Red' -
top_of_yellowFloatcompute='_compute_yellow_zone'digits='Product Unit of Measure'store=True -
used_in_bom_countIntegerrelated='product_id.used_in_bom_count' -
valid_uom_idsMany2many → uom.uomcomodel_name='uom.uom'compute='_compute_valid_uom_ids' -
warehouse_idMany2one → stock.warehousecomodel_name='stock.warehouse'ondelete='cascade'required=Truestring='Warehouse' -
yellow_overrideFloatstring='Yellow Zone (Override)' -
yellow_zone_qtyFloatcompute='_compute_yellow_zone'digits='Product Unit of Measure'store=True
-
action_dummy(self) -
action_request_procurement(self) -
action_used_in_bom(self) -
action_view_bom(self) -
action_view_future_adu_direct_demand(self) -
action_view_future_adu_indirect_demand(self) -
action_view_mrp_productions(self) -
action_view_past_adu_direct_demand(self) -
action_view_past_adu_indirect_demand(self) -
action_view_purchase(self) -
action_view_qualified_demand_moves(self) -
action_view_qualified_demand_mrp(self) -
action_view_stock_demand_estimates(self) -
action_view_supply_moves(self) -
action_view_supply_moves_inside_dlt_window(self) -
action_view_supply_moves_outside_dlt_window(self) -
action_view_supply_rfq_inside_dlt_window(self) -
action_view_supply_rfq_outside_dlt_window(self) -
action_view_yearly_consumption(self) -
create(self, vals_list)@api.model_create_multi -
cron_actions(self, only_nfp=False)This method is meant to be inherited by other modules in order to enhance extensibility. -
cron_ddmrp(self, automatic=False, domain=None)@api.modelCalculate key DDMRP parameters for each buffer. Called by cronjob. -
cron_ddmrp_adu(self, automatic=False, domain=None)@api.modelcalculate ADU for each DDMRP buffer. Called by cronjob. -
default_get(self, fields)@api.model -
do_auto_procure(self) -
get_ddmrp_chart_execution(self) -
get_ddmrp_chart_planning(self) -
onchange_warehouse_id(self)@api.onchange('warehouse_id') -
refresh_buffer(self) -
write(self, vals)
New fields (8)
-
company_idMany2one → res.companyargs: 'res.company', 'Company' -
distributed_reschedule_max_proc_timeFloatdefault=0.0help='When you request procurement from a buffer, their scheduled date is rescheduled to now + this procurement time (in minutes). Their scheduled date represents the latest the transfers should be done, and therefore, past this timestamp, considered late.'string='Re-Schedule Procurement Max Proc. Time (minutes)' -
item_typeSelectionrequired=Trueselection=_ITEM_TYPES -
lead_time_idMany2one → stock.buffer.profile.lead.timecomodel_name='stock.buffer.profile.lead.time'string='Lead Time Factor' -
nameCharcompute='_compute_name'store=True -
replenish_distributed_limit_to_free_qtyBooleandefault=Falsehelp='When activated, the recommended quantity will be maxed at the quantity available in the replenishment source location.'string='Limit replenishment to free quantity' -
replenish_methodSelectionrequired=Trueselection=_REPLENISH_METHODSstring='Replenishment method' -
variability_idMany2one → stock.buffer.profile.variabilitycomodel_name='stock.buffer.profile.variability'string='Variability Factor'
No public methods.
New fields (3)
-
company_idMany2one → res.companyargs: 'res.company', 'Company' -
factorFloatrequired=Truestring='Lead Time Factor' -
nameCharrequired=True
No public methods.
New fields (3)
-
company_idMany2one → res.companyargs: 'res.company', 'Company' -
factorFloatrequired=Truestring='Variability Factor' -
nameCharrequired=True
No public methods.
New fields (2)
-
buffer_idsMany2many → stock.buffercomodel_name='stock.buffer'string='Linked Stock Buffers' -
qualified_demand_buffer_idsMany2many → stock.buffercolumn1='stock_move_id'column2='stock_buffer_id'comodel_name='stock.buffer'relation='stock_buffer_qualified_demand_stock_move_rel'string='Qualified Demand For Buffers'
-
action_open_stock_move_source(self)Open the source record of the stock move, if it exists. -
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (1)
-
stateSelectionindex=True
No public methods.
New fields (0)
No new fields.
Public methods (1)-
action_stock_buffer_open(self)Open a stock.buffer list related to products of the stock.picking.
New fields (0)
No new fields.
Public methods (1)-
run(self, procurements, raise_user_error=True)@api.model
New fields (1)
-
nfp_incoming_safety_factorFloathelp='Factor used to compute the number of days to look into the future for incoming shipments for the purposes of the Net Flow position calculation.' args: 'Net Flow Position Incoming Safety Factor'
No public methods.
New fields (0)
No new fields.
Public methods (1)-
create(self, vals_list)@api.model_create_multi
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…