Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017-20 ForgeFlow S.L. (http://www.forgeflow.com)
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0) -->
<odoo>
<record id="mrp_bom_form_view" model="ir.ui.view">
<field name="name">mrp.bom.form - ddmrp</field>
<field name="model">mrp.bom</field>
<field name="inherit_id" ref="mrp.mrp_bom_form_view" />
<field name="arch" type="xml">
<field name="product_id" position="after">
<field name="is_buffered" />
<field name="buffer_id" />
<label for="dlt" />
<div class="o_row" style="width: 60% !important">
<field name="dlt" />
<field
name="context_location_id"
options="{'no_open': True}"
style="text-align: right;"
/>
<button
title="Change Location"
name="action_change_context_location"
icon="fa-exchange"
type="object"
/>
</div>
</field>
<xpath
expr="//field[@name='bom_line_ids']/tree/field[@name='product_uom_id']"
position="after"
>
<field name="is_buffered" />
<field name="buffer_id" />
<field name="dlt" />
<field name="context_location_id" />
</xpath>
</field>
</record>
<record id="mrp_bom_line_view_form" model="ir.ui.view">
<field name="name">mrp.bom.line.form</field>
<field name="model">mrp.bom.line</field>
<field name="inherit_id" ref="mrp.mrp_bom_line_view_form" />
<field name="arch" type="xml">
<field name="parent_product_tmpl_id" position="after">
<field name="buffer_id" />
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="mrp_production_tree_view" model="ir.ui.view">
<field name="name">mrp.production.tree</field>
<field name="model">mrp.production</field>
<field name="inherit_id" ref="mrp.mrp_production_tree_view" />
<field name="arch" type="xml">
<field name="date_planned_start" position="before">
<field name="buffer_id" invisible="1" />
<field name="execution_priority_level" invisible="1" />
<field
name="on_hand_percent"
options='{"buffer_id": "buffer_id", "color_from": "execution_priority_level", "field": "ddmrp_chart_execution"}'
widget="stock_buffer_info"
/>
</field>
</field>
</record>
<record id="view_mrp_production_filter" model="ir.ui.view">
<field name="name">mrp.production.select</field>
<field name="model">mrp.production</field>
<field name="inherit_id" ref="mrp.view_mrp_production_filter" />
<field name="arch" type="xml">
<field name="product_id" position="before">
<field name="execution_priority_level" />
<group name="execution_priority" string="On Hand Alert Zones">
<filter
name="execution_priority_level_red"
string="Red"
domain="[('execution_priority_level', '=', '1_red')]"
/>
<filter
name="execution_priority_level_yellow"
string="Yellow"
domain="[('execution_priority_level', '=', '2_yellow')]"
/>
<filter
name="execution_priority_level_green"
string="Green"
domain="[('execution_priority_level', '=', '3_green')]"
/>
</group>
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="ir.ui.view" id="view_product_adu_calculation_method_tree">
<field name="name">product.adu.calculation.method.tree</field>
<field name="model">product.adu.calculation.method</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="method" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_product_adu_calculation_method_form">
<field name="name">product.adu.calculation.method.form</field>
<field name="model">product.adu.calculation.method</field>
<field name="arch" type="xml">
<form>
<sheet>
<group name="name">
<field name="name" />
<field name="method" />
<field
name="company_id"
groups="base.group_multi_company"
widget="selection"
/>
</group>
<group name="configuration">
<group name="past">
<field name="source_past" />
<label for="horizon_past" />
<div name="horizon_past">
<field name="horizon_past" class="oe_inline" /> days
</div>
<field
name="factor_past"
attrs="{'invisible': [('method', '!=', 'blended')]}"
/>
</group>
<group name="future">
<field name="source_future" />
<label for="horizon_future" />
<div name="horizon_future">
<field name="horizon_future" class="oe_inline" /> days
</div>
<field
name="factor_future"
attrs="{'invisible': [('method', '!=', 'blended')]}"
/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_product_adu_calculation_method_search" model="ir.ui.view">
<field name="name">product.adu.calculation.method.search</field>
<field name="model">product.adu.calculation.method</field>
<field name="arch" type="xml">
<search string="Search ADU Calculatiion methods">
<field name="name" />
</search>
</field>
</record>
<record
model="ir.actions.act_window"
id="product_adu_calculation_method_form_action"
>
<field name="name">ADU calculation methods</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.adu.calculation.method</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_product_adu_calculation_method_search" />
</record>
<menuitem
id="menu_product_adu_calculation_method"
parent="ddmrp.menu_ddmrp_config"
action="product_adu_calculation_method_form_action"
/>
</odoo>

View file

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="product_normal_form_view_inherit" model="ir.ui.view">
<field name="name">product.product.form.inherit</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view" />
<field name="arch" type="xml">
<xpath
expr="//div[@name='button_box']/button[@name='action_view_mrp_area_parameters']"
position="after"
>
<button
type="object"
name="action_view_stock_buffers"
class="oe_stat_button"
icon="fa-flask"
attrs="{'invisible': [('buffer_count', '=', 0)]}"
>
<field
name="buffer_count"
widget="statinfo"
string="Stock Buffers"
/>
</button>
</xpath>
</field>
</record>
<record id="product_template_only_form_view_inherit" model="ir.ui.view">
<field name="name">product.template.product.form.inherit</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view" />
<field name="arch" type="xml">
<xpath
expr="//div[@name='button_box']/button[@name='action_view_mrp_area_parameters']"
position="after"
>
<button
type="object"
name="action_view_stock_buffers"
class="oe_stat_button"
icon="fa-flask"
attrs="{'invisible': [('buffer_count', '=', 0)]}"
>
<field
name="buffer_count"
widget="statinfo"
string="Stock Buffers"
/>
</button>
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017-18 ForgeFlow S.L. (http://www.forgeflow.com)
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0) -->
<odoo>
<record id="purchase_order_line_execution_tree" model="ir.ui.view">
<field name="name">purchase.order.line.tree - ddmrp</field>
<field name="model">purchase.order.line</field>
<field name="arch" type="xml">
<tree
default_order='execution_priority_level,on_hand_percent'
create="false"
editable="top"
delete="false"
multi_edit="1"
>
<field name="order_id" widget="many2one" readonly="True" />
<field name="partner_id" string="Vendor" />
<field name="execution_priority_level" invisible="1" />
<field
name="on_hand_percent"
options='{"buffer_id": "buffer_ids", "color_from": "execution_priority_level", "field": "ddmrp_chart_execution"}'
widget="stock_buffer_info"
/>
<field name="product_qty" readonly="True" />
<field name="product_id" readonly="True" />
<field
name="buffer_ids"
string="Buffers"
widget="many2many_tags"
readonly="1"
/>
<field name="date_planned" />
<field name="state" />
<field name="ddmrp_comment" />
</tree>
</field>
</record>
<record id="purchase_order_line_search" model="ir.ui.view">
<field name="name">purchase.order.line.search - ddmrp</field>
<field name="model">purchase.order.line</field>
<field name="inherit_id" ref="purchase.purchase_order_line_search" />
<field name="arch" type="xml">
<filter name="hide_cancelled" position="after">
<filter
name="hide_no_buffer"
string="Buffered"
domain="[('buffer_ids','!=',False), ('execution_priority_level','!=',False)]"
/>
<separator />
<group name="execution_priority" string="On Hand Alert Zones">
<filter
name="execution_priority_level_red"
string="Red"
domain="[('execution_priority_level', '=', '1_red')]"
/>
<filter
name="execution_priority_level_yellow"
string="Yellow"
domain="[('execution_priority_level', '=', '2_yellow')]"
/>
<filter
name="execution_priority_level_green"
string="Green"
domain="[('execution_priority_level', '=', '3_green')]"
/>
</group>
</filter>
</field>
</record>
<record id="po_line_execution_action" model="ir.actions.act_window">
<field name="name">PO lines On-Hand Status</field>
<field name="res_model">purchase.order.line</field>
<field name="view_id" ref="purchase_order_line_execution_tree" />
<field name="domain" />
<field name="context">{"search_default_hide_no_buffer":1}</field>
<field name="view_mode">tree</field>
</record>
<menuitem
id="menu_pol_execution"
action="po_line_execution_action"
parent="purchase.menu_procurement_management"
sequence="8"
/>
</odoo>

View file

@ -0,0 +1,70 @@
<?xml version="1.0" ?>
<!-- Copyright 2017-20 ForgeFlow S.L. (http://www.forgeflow.com)
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0) -->
<odoo>
<record id="purchase_order_form" model="ir.ui.view">
<field name="name">purchase.order.form - ddmrp</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_form" />
<field name="arch" type="xml">
<xpath
expr="//field[@name='order_line']//field[@name='date_planned']"
position="after"
>
<field name="buffer_ids" invisible="1" />
<field name="execution_priority_level" invisible="1" />
<field
name="on_hand_percent"
options='{"buffer_id": "buffer_ids", "color_from": "execution_priority_level", "field": "ddmrp_chart_execution"}'
widget="stock_buffer_info"
/>
</xpath>
<xpath
expr="//page[@name='purchase_delivery_invoice']/group/group"
position="inside"
>
<field name="ddmrp_comment" />
</xpath>
<xpath expr="//field[@name='order_line']/form//notebook" position="inside">
<page
name="buffers"
string="Stock Buffers"
groups="stock.group_stock_user"
>
<field name="buffer_ids" />
</page>
</xpath>
</field>
</record>
<record id="view_purchase_order_filter" model="ir.ui.view">
<field name="name">request.quotation.select - ddmrp</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.view_purchase_order_filter" />
<field name="arch" type="xml">
<filter name="order_date" position="before">
<filter
name="execution_priority_level_red"
string="On-Hand Alert: Red"
domain="[('order_line.execution_priority_level', '=', '1_red')]"
/>
<filter
name="execution_priority_level_yellow"
string="On-Hand Alert: Yellow"
domain="[('order_line.execution_priority_level', '=', '2_yellow')]"
/>
<separator />
</filter>
</field>
</record>
<record id="purchase_order_line_form2" model="ir.ui.view">
<field name="name">purchase.order.line.form2</field>
<field name="model">purchase.order.line</field>
<field name="inherit_id" ref="purchase.purchase_order_line_form2" />
<field name="arch" type="xml">
<field name="name" position="after">
<separator string="Stock Buffers" />
<field name="buffer_ids" />
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="ir.ui.view" id="view_stock_buffer_profile_lead_time_form">
<field name="name">stock.buffer.profile.lead.time.form</field>
<field name="model">stock.buffer.profile.lead.time</field>
<field name="arch" type="xml">
<form string="Buffer Profile Lead Time Factor">
<sheet>
<div class="oe_title">
<label for="name" class="oe_edit_only" />
<h1>
<field name="name" class="oe_inline" />
</h1>
</div>
<group>
<group name="factor">
<field name="factor" />
</group>
<group name="company" groups="base.group_multi_company">
<field name="company_id" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_stock_buffer_profile_lead_time_tree">
<field name="name">stock.buffer.profile.lead.time.tree</field>
<field name="model">stock.buffer.profile.lead.time</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="factor" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record id="view_stock_buffer_profile_lead_time_search" model="ir.ui.view">
<field name="name">stock.buffer.profile.lead.time.search</field>
<field name="model">stock.buffer.profile.lead.time</field>
<field name="arch" type="xml">
<search string="Search Buffer Profile Lead Time">
<field name="name" />
<field name="factor" />
<field name="company_id" groups="base.group_multi_company" />
</search>
</field>
</record>
<record
model="ir.actions.act_window"
id="stock_buffer_profile_lead_time_form_action"
>
<field name="name">Buffer Profile Lead Time Factor</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stock.buffer.profile.lead.time</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_stock_buffer_profile_lead_time_search" />
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new buffer profile lead time factor
</p>
</field>
</record>
<menuitem
id="menu_stock_buffer_profile_lead_time"
parent="ddmrp.menu_ddmrp_config"
action="stock_buffer_profile_lead_time_form_action"
/>
</odoo>

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="ir.ui.view" id="view_stock_buffer_profile_variability_form">
<field name="name">stock.buffer.profile.variability.form</field>
<field name="model">stock.buffer.profile.variability</field>
<field name="arch" type="xml">
<form string="Buffer Profile Variability Factor">
<sheet>
<div class="oe_title">
<label for="name" class="oe_edit_only" />
<h1>
<field name="name" class="oe_inline" />
</h1>
</div>
<group>
<group name="factor">
<field name="factor" />
</group>
<group name="company" groups="base.group_multi_company">
<field name="company_id" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_stock_buffer_profile_variability_tree">
<field name="name">stock.buffer.profile.variability.tree</field>
<field name="model">stock.buffer.profile.variability</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="factor" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record id="view_stock_buffer_profile_variability_search" model="ir.ui.view">
<field name="name">stock.buffer.profile.variability.search</field>
<field name="model">stock.buffer.profile.variability</field>
<field name="arch" type="xml">
<search string="Search Buffer Profile Variability">
<field name="name" />
<field name="factor" />
<field name="company_id" groups="base.group_multi_company" />
</search>
</field>
</record>
<record
model="ir.actions.act_window"
id="stock_buffer_profile_variability_form_action"
>
<field name="name">Buffer Profile Variability Factor</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stock.buffer.profile.variability</field>
<field name="view_mode">tree,form</field>
<field
name="search_view_id"
ref="view_stock_buffer_profile_variability_search"
/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new buffer profile variability factor
</p>
</field>
</record>
<menuitem
id="menu_stock_buffer_profile_variability"
parent="ddmrp.menu_ddmrp_config"
action="stock_buffer_profile_variability_form_action"
/>
</odoo>

View file

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_stock_buffer_profile_form" model="ir.ui.view">
<field name="name">stock.buffer.profile.form</field>
<field name="model">stock.buffer.profile</field>
<field name="arch" type="xml">
<form string="Buffer Profile">
<sheet>
<div class="oe_edit_only">
<label for="name" class="oe_inline" />
<h1>
<field name="name" />
</h1>
</div>
<group>
<group name="replenish_method">
<field name="replenish_method" />
</group>
<group name="item_type">
<field name="item_type" />
</group>
<group name="lead_time">
<field name="lead_time_id" />
</group>
<group name="variability">
<field name="variability_id" />
</group>
<group name="organization">
<field
name="company_id"
groups="base.group_multi_company"
options="{'no_create': True}"
/>
</group>
<group
name="distributed_options"
attrs="{'invisible': [('item_type', '!=', 'distributed')]}"
>
<field name="replenish_distributed_limit_to_free_qty" />
<field name="distributed_reschedule_max_proc_time" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_stock_buffer_profile_tree" model="ir.ui.view">
<field name="name">stock.buffer.profile.tree</field>
<field name="model">stock.buffer.profile</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="replenish_method" />
<field name="item_type" />
<field name="lead_time_id" />
<field name="variability_id" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record id="view_stock_buffer_profile_search" model="ir.ui.view">
<field name="name">stock.buffer.profile.search</field>
<field name="model">stock.buffer.profile</field>
<field name="arch" type="xml">
<search string="Search Buffer Profiles">
<field name="name" />
<separator />
<field name="item_type" />
<field name="replenish_method" />
<field name="lead_time_id" />
<field name="variability_id" />
<field name="company_id" groups="base.group_multi_company" />
</search>
</field>
</record>
<record id="stock_buffer_profile_form_action" model="ir.actions.act_window">
<field name="name">Buffer Profiles</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stock.buffer.profile</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_stock_buffer_profile_search" />
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new buffer profile
</p>
</field>
</record>
<menuitem
id="menu_ddmrp_config"
name="DDMRP"
parent="stock.menu_stock_config_settings"
/>
<menuitem
id="menu_stock_buffer_profile_mgt"
parent="ddmrp.menu_ddmrp_config"
action="stock_buffer_profile_form_action"
/>
</odoo>

View file

@ -0,0 +1,739 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="stock_buffer_view_tree" model="ir.ui.view">
<field name="name">stock.buffer.tree</field>
<field name="model">stock.buffer</field>
<field name="priority">50</field>
<field name="arch" type="xml">
<tree decoration-danger="procure_recommended_qty &gt; 0">
<header>
<button
name="action_request_procurement"
type="object"
string="Procure"
/>
</header>
<field name="product_id" />
<field name="product_vendor_code" optional="hide" />
<field name="warehouse_id" optional="show" />
<field name="location_id" groups="stock.group_stock_multi_locations" />
<field
name="product_uom"
string="UoM"
groups="uom.group_uom"
optional="hide"
/>
<field name="planning_priority_level" invisible="1" />
<field
name="net_flow_position_percent"
options='{"color_from": "planning_priority_level", "field": "ddmrp_chart"}'
widget="stock_buffer_info"
/>
<field
name="product_location_qty_available_not_res"
string="On-Hand"
optional="show"
/>
<field name="execution_priority_level" invisible="1" />
<field
name="on_hand_percent"
options='{"color_from": "execution_priority_level", "field": "ddmrp_chart_execution"}'
widget="stock_buffer_info"
/>
<button
title="Refresh Buffer"
name="refresh_buffer"
icon="fa-refresh"
type="object"
/>
<field name="incoming_dlt_qty" string="Incoming Within DLT" />
<field
name="incoming_outside_dlt_qty"
string="Incoming Outside DLT"
optional="hide"
/>
<field
name="incoming_total_qty"
string="Total Incoming"
optional="show"
/>
<button
title="Total Incoming"
name="action_view_supply_moves"
icon="fa-exchange"
type="object"
/>
<field name="qualified_demand" />
<field name="net_flow_position" />
<field name="procure_recommended_qty" />
<field name="procure_uom_id" groups="uom.group_uom" optional="show" />
<button
title="Create Procurement"
name="%(ddmrp.act_make_procurement_from_buffer)d"
icon="fa-cogs"
type="action"
/>
<button
title="Some incoming quantities are outside of the DLT Horizon and may require rescheduling. Press this button to display the involved supply orders"
name="action_view_supply_moves_outside_dlt_window"
icon="fa-warning"
type="object"
attrs="{'invisible':[('incoming_outside_dlt_qty', '=', 0)]}"
/>
<field name="rfq_total_qty" optional="hide" />
<field name="rfq_outside_dlt_qty" invisible="1" />
<button
title="Some RFQ quantities are outside of the DLT Horizon and may require rescheduling.
Press this button to display the involved RFQs"
name="action_view_supply_rfq_outside_dlt_window"
icon="fa-warning"
type="object"
attrs="{'invisible':[('rfq_outside_dlt_qty', '=', 0)]}"
/>
<field name="rfq_inside_dlt_qty" optional="hide" />
<button
title="Some RFQs are inside of the DLT Horizon and waiting validation to be accounted into the NFP.
Press this button to display them."
name="action_view_supply_rfq_inside_dlt_window"
icon="fa-warning"
type="object"
attrs="{'invisible':[('rfq_inside_dlt_qty', '=', 0)]}"
/>
<button
title="No stock available in source location for distributed buffer"
name="action_dummy"
icon="fa-warning"
type="object"
attrs="{'invisible':['|', ('distributed_source_location_id', '=', False), ('distributed_source_location_qty', '>', 0)]}"
/>
<field name="distributed_source_location_id" optional="hide" />
<field name="distributed_source_location_qty" optional="hide" />
<field name="item_type" optional="show" />
<field name="main_supplier_id" optional="show" />
<field name="adu" optional="hide" />
<field name="dlt" optional="hide" />
<field name="top_of_red" optional="hide" />
<field name="top_of_yellow" optional="hide" />
<field name="top_of_green" optional="hide" />
</tree>
</field>
</record>
<record id="stock_buffer_view_form" model="ir.ui.view">
<field name="name">stock.buffer.form</field>
<field name="model">stock.buffer</field>
<field name="arch" type="xml">
<form duplicate="0">
<header>
<button
string="Refresh Buffer"
name="refresh_buffer"
icon="fa-refresh"
type="object"
/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button
type="object"
name="action_view_yearly_consumption"
class="oe_stat_button"
string="Consumption"
icon="fa-fire"
/>
<button
type="object"
name="action_view_stock_demand_estimates"
class="oe_stat_button"
string="Estimates"
icon="fa-signal"
attrs="{'invisible': [('adu_calculation_method_type', '!=', 'future')]}"
/>
<button
type="object"
name="action_view_bom"
class="oe_stat_button"
string="Bill of Materials"
icon="fa-flask"
attrs="{'invisible': [('item_type', '!=', 'manufactured')]}"
/>
<button
type="object"
name="action_view_mrp_productions"
class="oe_stat_button"
string="Manufacturing Orders"
icon="fa-wrench"
attrs="{'invisible': [('item_type', '!=', 'manufactured')]}"
/>
<button
type="object"
name="action_view_purchase"
class="oe_stat_button"
string="Purchase Orders"
icon="fa-credit-card"
attrs="{'invisible': [('item_type', '!=', 'purchased')]}"
/>
<button
class="oe_stat_button"
name="action_used_in_bom"
type="object"
attrs="{'invisible':['|',('product_type', 'not in', ['product', 'consu']), ('used_in_bom_count', '=', 0)]}"
icon="fa-level-up"
>
<field
string="Used In"
name="used_in_bom_count"
widget="statinfo"
/>
</button>
</div>
<widget
name="web_ribbon"
title="Archived"
bg_color="bg-danger"
attrs="{'invisible': [('active', '=', True)]}"
/>
<group>
<group>
<field name="active" invisible="1" />
<field name="name" />
<field name="product_id" />
<field
name="product_uom"
options="{'no_open': True, 'no_create': True}"
groups="uom.group_uom"
/>
<field name="product_type" invisible="1" />
</group>
<group>
<field
name="location_id"
groups="stock.group_stock_multi_locations"
/>
<field
name="warehouse_id"
widget="selection"
groups="stock.group_stock_multi_locations"
/>
<field
name="company_id"
groups="base.group_multi_company"
options="{'no_create': True}"
/>
</group>
<group name="buffer_size_factors">
<group
name="main_buffer_size_factors"
string="Main Buffer size factors"
colspan="2"
>
<field name="buffer_profile_id" />
<field name="replenish_method" invisible="1" />
<field name="item_type" invisible="1" />
<field
name="green_override"
attrs="{'invisible': [('replenish_method', '!=', 'replenish_override')]}"
/>
<field
name="yellow_override"
attrs="{'invisible': [('replenish_method', '!=', 'replenish_override')]}"
/>
<field
name="red_override"
attrs="{'invisible': [('replenish_method', '!=', 'replenish_override')]}"
/>
<field name="adu_calculation_method" />
<field
name="adu_calculation_method_type"
invisible="1"
/>
<field
name="adu_fixed"
attrs="{'invisible': [('adu_calculation_method_type', '!=', 'fixed')]}"
/>
<label for="adu" />
<div name="adu" class="o_row">
<field
name="adu"
force_save="1"
class="oe_inline"
/>
<button
title="View ADU (Past - Direct Demand)"
name="action_view_past_adu_direct_demand"
icon="fa-search"
type="object"
attrs="{'invisible': ['|', ('adu_calculation_method_type', 'in', ['fixed', 'future']), ('adu', '=', 0)]}"
/>
<button
title="View ADU (Past - Indirect Demand)"
name="action_view_past_adu_indirect_demand"
icon="fa-search"
type="object"
attrs="{'invisible': ['|', '|', ('adu_calculation_method_type', 'in', ['fixed', 'future']), ('used_in_bom_count', '=', 0), ('adu', '=', 0)]}"
/>
<button
title="View ADU (Future - Direct Demand)"
name="action_view_future_adu_direct_demand"
icon="fa-search"
type="object"
attrs="{'invisible': ['|', ('adu_calculation_method_type', 'in', ['fixed', 'past']), ('adu', '=', 0)]}"
/>
<button
title="View ADU (Future - Indirect Demand)"
name="action_view_future_adu_indirect_demand"
icon="fa-search"
type="object"
attrs="{'invisible': ['|', '|', ('adu_calculation_method_type', 'in', ['fixed', 'past']), ('used_in_bom_count', '=', 0), ('adu', '=', 0)]}"
/>
</div>
<field
name="lead_days"
attrs="{'invisible': [('item_type', '!=', 'distributed')]}"
/>
<label for="dlt" />
<div name="dlt">
<field name="dlt" class="oe_inline" /> days
</div>
</group>
<group />
<group
name="secondary_buffer_size_factors"
string="Secondary Buffer size factors"
colspan="2"
>
<label for="extra_lead_time" />
<div name="extra_lead_time">
<field
name="extra_lead_time"
class="oe_inline"
/> days
</div>
<field name="minimum_order_quantity" />
<label for="order_cycle" />
<div name="order_cycle">
<field name="order_cycle" class="oe_inline" /> days
</div>
</group>
</group>
<group name="ddmrp_chart" string="Buffer summary">
<div colspan="2">
<field
name="ddmrp_chart"
widget="bokeh_chart"
nolabel="1"
attrs="{'invisible': [('show_execution_chart', '=', True)]}"
/>
<field
name="ddmrp_chart_execution"
widget="bokeh_chart"
nolabel="1"
attrs="{'invisible': [('show_execution_chart', '=', False)]}"
/>
</div>
<div cols="3">
<label
for="show_execution_chart"
string="Planning"
class="text-muted"
attrs="{'invisible': [('show_execution_chart', '=', False)]}"
/>
<label
for="show_execution_chart"
string="Planning"
style="font-weight: bold;"
attrs="{'invisible': [('show_execution_chart', '=', True)]}"
/>
<field
name="show_execution_chart"
widget="boolean_toggle"
nolabel="1"
options="{'autosave': False}"
/>
<label
for="show_execution_chart"
string="Execution"
class="text-muted"
attrs="{'invisible': [('show_execution_chart', '=', True)]}"
/>
<label
for="show_execution_chart"
string="Execution"
style="font-weight: bold;"
attrs="{'invisible': [('show_execution_chart', '=', False)]}"
/>
</div>
</group>
<group name="execution_settings">
<group
name="qualified_demand"
string="Qualified Demand"
colspan="2"
>
<label for="order_spike_horizon" />
<div name="order_spike_horizon">
<field
name="order_spike_horizon"
class="oe_inline"
/> days
</div>
<field name="order_spike_threshold" />
</group>
<group
name="procurement_settings"
string="Procurement Settings"
colspan="2"
>
<field name="procure_uom_id" groups="uom.group_uom" />
<field name="qty_multiple" />
<field name="procure_min_qty" />
<field name="procure_max_qty" />
<field
name="group_id"
groups="stock.group_adv_location"
/>
<field
name="distributed_source_location_id"
attrs="{'invisible': ['|', ('item_type', '!=', 'distributed'), ('distributed_source_location_id', '=', False)]}"
/>
<field
name="distributed_source_location_qty"
attrs="{'invisible': ['|', ('item_type', '!=', 'distributed'), ('distributed_source_location_id', '=', False)]}"
/>
<field
name="main_supplier_id"
attrs="{'invisible': [('item_type', '!=', 'purchased')]}"
/>
<field
name="product_vendor_code"
attrs="{'invisible': [('product_vendor_code', '=', False)]}"
/>
<field name="auto_procure" />
<field
name="auto_procure_option"
attrs="{'invisible': [('auto_procure', '=', False)]}"
/>
</group>
</group>
<group name="buffer_summary">
<group
name="buffer_information"
string="Buffer Information"
colspan="2"
>
<field name="product_location_qty_available_not_res" />
<label for="incoming_dlt_qty" />
<div name="incoming_dlt_qty" class="o_row">
<field name="incoming_dlt_qty" class="oe_inline" />
<button
title="View Incoming Moves (Within DLT)"
name="action_view_supply_moves_inside_dlt_window"
icon="fa-search"
type="object"
attrs="{'invisible': [('incoming_dlt_qty', '=', 0)]}"
/>
</div>
<label for="incoming_outside_dlt_qty" />
<div name="incoming_outside_dlt_qty" class="o_row">
<field
name="incoming_outside_dlt_qty"
class="oe_inline"
/>
<button
title="Some incoming qty is outside of the DLT Horizon and may require rescheduling.
Press this button to display the involved supply orders"
name="action_view_supply_moves_outside_dlt_window"
icon="fa-warning"
type="object"
attrs="{'invisible':[('incoming_outside_dlt_qty', '=', 0)]}"
/>
<field name="rfq_outside_dlt_qty" invisible="1" />
<button
title="Some incoming RFQs are outside of the DLT Horizon and may require rescheduling.
Press this button to display the involved supply orders"
name="action_view_supply_rfq_outside_dlt_window"
icon="fa-warning"
type="object"
attrs="{'invisible':[('rfq_outside_dlt_qty', '=', 0)]}"
/>
</div>
<label for="qualified_demand" />
<div name="qualified_demand" class="o_row">
<field name="qualified_demand" class="oe_inline" />
<field
name="qualified_demand_stock_move_ids"
invisible="1"
/>
<field
name="qualified_demand_mrp_move_ids"
invisible="1"
/>
<button
title="View Qualified Demand from Pickings"
name="action_view_qualified_demand_moves"
icon="fa-search"
type="object"
attrs="{'invisible': ['|', ('qualified_demand', '=', 0), ('qualified_demand_stock_move_ids', '=', [])]}"
/>
<button
title="View Qualified Demand from MRP"
name="action_view_qualified_demand_mrp"
icon="fa-search"
type="object"
attrs="{'invisible': ['|', ('qualified_demand', '=', 0), ('qualified_demand_mrp_move_ids', '=', [])]}"
/>
<field name="rfq_inside_dlt_qty" invisible="1" />
<button
title="Some RFQs are inside of the DLT Horizon and waiting validation to be accounted into the NFP.
Press this button to display them."
name="action_view_supply_rfq_inside_dlt_window"
icon="fa-warning"
type="object"
attrs="{'invisible':[('rfq_inside_dlt_qty', '=', 0)]}"
/>
</div>
<field name="net_flow_position" />
<label for="net_flow_position_percent" />
<div name="net_flow_position_percent">
<field
name="net_flow_position_percent"
class="oe_inline"
/> %
</div>
</group>
<group />
<group
name="buffer_target"
string="On Hand Target"
colspan="2"
>
<label for="on_hand_target_position" />
<div name="on_hand_target_position_uom" class="o_row">
<field name="on_hand_target_position" />
</div>
<label for="on_hand_target_min" />
<div name="on_hand_target_range">
<field
name="on_hand_target_min"
class="oe_inline"
/> -
<field
name="on_hand_target_max"
class="oe_inline"
/>
</div>
</group>
</group>
</group>
<notebook>
<page string="Supply &amp; Demand" name="demand_supply_bars">
<group>
<group string="Supply">
<div style="margin-top: 1em;">
<field
name="ddmrp_supply_chart"
style="height:400px"
widget="bokeh_chart"
nolabel="1"
/>
</div>
</group>
<group string="Demand">
<div style="margin-top: 1em;">
<field
name="ddmrp_demand_chart"
style="height:400px"
widget="bokeh_chart"
nolabel="1"
/>
</div>
</group>
</group>
</page>
<page name="zones_info" string="Zones Information">
<group col="3">
<group name="green_zone" string="Green zone">
<div class="no_print" colspan="2">
<p
class="oe_grey"
>The green zone determines the average order frequency and the order size. It is determined as the maximum of the following three factors: Minimum Order Cycle, Lead Time Factor and Minimum Order Quantity.</p>
</div>
<field name="green_zone_oc" />
<field name="green_zone_moq" />
<field name="green_zone_lt_factor" />
<field name="green_zone_qty" />
</group>
<group name="yellow_zone" string="Yellow zone">
<div class="no_print" colspan="2">
<p
class="oe_grey"
>The yellow zone represents the stock required to cover a full lead time.</p>
</div>
<field name="yellow_zone_qty" />
</group>
<group name="red_zone" string="Red zone">
<div class="no_print" colspan="2">
<p
class="oe_grey"
>The red zone is the embedded safety in the buffer. The larger the variability associated with the product, the larger the red zone will be. It is composed of two sub-zones: Red base and red safety.</p>
</div>
<field name="red_base_qty" />
<field name="red_safety_qty" />
<field name="red_zone_qty" />
</group>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="stock_buffer_search" model="ir.ui.view">
<field name="name">stock.buffer.search</field>
<field name="model">stock.buffer</field>
<field name="arch" type="xml">
<search>
<field
name="name"
string="Buffer"
filter_domain="[
'|', '|',
('name', 'ilike', self), ('product_id', 'ilike', self), ('location_id', 'ilike', self)]"
/>
<field name="buffer_profile_id" />
<field
name="warehouse_id"
groups="stock.group_stock_multi_warehouses"
/>
<field name="location_id" groups="stock.group_stock_multi_locations" />
<field name="main_supplier_id" />
<field name="company_id" groups="base.group_multi_company" />
<field name="product_id" />
<field name="product_categ_id" />
<field name="dlt" />
<field name="order_cycle" />
<field name="minimum_order_quantity" />
<field name="planning_priority_level" />
<field name="execution_priority_level" />
<group name="planning_priority" string="Planning Priority Zones">
<filter
name="planning_priority_level_red"
string="Red"
domain="[('planning_priority_level', '=', '1_red')]"
/>
<filter
name="planning_priority_level_yellow"
string="Yellow"
domain="[('planning_priority_level', '=', '2_yellow')]"
/>
<filter
name="planning_priority_level_green"
string="Green"
domain="[('planning_priority_level', '=', '3_green')]"
/>
</group>
<separator />
<group name="execution_priority" string="On Hand Alert Zones">
<filter
name="execution_priority_level_red"
string="Red"
domain="[('execution_priority_level', '=', '1_red')]"
/>
<filter
name="execution_priority_level_yellow"
string="Yellow"
domain="[('execution_priority_level', '=', '2_yellow')]"
/>
<filter
name="execution_priority_level_green"
string="Green"
domain="[('execution_priority_level', '=', '3_green')]"
/>
</group>
<separator />
<group name="item_type" string="Type">
<filter
name="item_type_manufactured"
string="Manufactured"
domain="[('item_type', '=', 'manufactured')]"
/>
<filter
name="item_type_purchased"
string="Purchased"
domain="[('item_type', '=', 'purchased')]"
/>
<filter
name="item_type_distributed"
string="Distributed"
domain="[('item_type', '=', 'distributed')]"
/>
</group>
<separator />
<group name="procure_recommendation" string="Procurement">
<filter
name="procure_recommended"
string="Procurement recommended"
domain="[('procure_recommended_qty', '>', 0.0)]"
/>
</group>
<separator />
<filter
name="has_long_term_supply"
string="Has Long Term Supply"
domain="['|', ('incoming_outside_dlt_qty', '>', 0), ('rfq_outside_dlt_qty', '>', 0)]"
/>
<separator />
<filter
name="has_distributed_source_location_qty"
string="Has Stock In Source Location"
domain="[('distributed_source_location_qty', '>', 0)]"
/>
<separator />
<filter
string="Archived"
name="inactive"
domain="[('active','=',False)]"
/>
<group expand="0" string="Group By">
<filter
string="Warehouse"
name="warehouse"
domain="[]"
context="{'group_by':'warehouse_id'}"
groups="stock.group_stock_multi_warehouses"
/>
<filter
string="Location"
name="location"
domain="[]"
context="{'group_by':'location_id'}"
groups="stock.group_stock_multi_locations"
/>
<filter
string="Main supplier"
name="main_supplier_group_filter"
domain="[]"
context="{'group_by':'main_supplier_id'}"
/>
<filter
string="Product Category"
name="product_categ_id"
domain="[]"
context="{'group_by': 'product_categ_id'}"
/>
</group>
</search>
</field>
</record>
<record id="action_stock_buffer" model="ir.actions.act_window">
<field name="name">Stock Buffers</field>
<field name="res_model">stock.buffer</field>
<field name="view_mode">tree,form</field>
<field name="context">{'location_id': False}</field>
</record>
<menuitem
id="menu_stock_buffer"
parent="stock.menu_stock_inventory_control"
action="action_stock_buffer"
/>
</odoo>

View file

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2018-20 ForgeFlow S.L. (http://www.forgeflow.com)
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0) -->
<odoo>
<record id="view_move_tree" model="ir.ui.view">
<field name="name">stock.move.tree</field>
<field name="model">stock.move</field>
<field name="inherit_id" ref="stock.view_move_tree" />
<field name="arch" type="xml">
<field name="state" position="after">
<button
title="Go to Source"
name="action_open_stock_move_source"
icon="fa-arrow-right"
type="object"
/>
</field>
</field>
</record>
<record id="view_move_form" model="ir.ui.view">
<field name="name">stock.move.form</field>
<field name="model">stock.move</field>
<field name="inherit_id" ref="stock.view_move_form" />
<field name="arch" type="xml">
<field name="date" position="attributes">
<attribute name="invisible">False</attribute>
</field>
<field name="move_dest_ids" position="after">
<field name="buffer_ids" />
</field>
</field>
</record>
<record id="view_move_consumption_pivot" model="ir.ui.view">
<field name="name">stock.move.consumption.pivot</field>
<field name="model">stock.move</field>
<field name="arch" type="xml">
<pivot string="Stock Moves Yearly Consumption">
<field name="date" interval="month" type="row" />
<field name="location_dest_id" type="col" />
<field name="product_uom_qty" type="measure" />
</pivot>
</field>
</record>
<record id="stock_move_year_consumption_action" model="ir.actions.act_window">
<field name="name">Stock Move Last Year Consumption</field>
<field name="res_model">stock.move</field>
<field name="view_id" ref="ddmrp.view_move_consumption_pivot" />
<field
name="context"
>{"time_ranges": {"field": "date", "range": "last_365_days"}}</field>
<field name="domain" />
<field name="view_mode">pivot</field>
</record>
</odoo>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_picking_form" model="ir.ui.view">
<field name="name">stock.picking.form.inherit</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form" />
<field name="arch" type="xml">
<div name="button_box" position="inside">
<button
name="action_stock_buffer_open"
type="object"
string="Product Buffers"
class="oe_stat_button"
icon="fa-tasks"
/>
</div>
</field>
</record>
</odoo>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2018 ForgeFlow S.L. (http://www.forgeflow.com)
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -->
<odoo>
<record id="view_warehouse" model="ir.ui.view">
<field name="name">stock.warehouse</field>
<field name="model">stock.warehouse</field>
<field name="inherit_id" ref="stock.view_warehouse" />
<field name="arch" type="xml">
<xpath expr="//page[@name='warehouse_config']/group" position="inside">
<group name="ddmrp" string="DDMRP">
<field name="nfp_incoming_safety_factor" />
</group>
</xpath>
</field>
</record>
</odoo>