369 lines
16 KiB
XML
369 lines
16 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
© 2014-2016 Akretion (http://www.akretion.com/)
|
|
@author Alexis de Lattre <alexis.delattre@akretion.com>
|
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
-->
|
|
|
|
<odoo>
|
|
|
|
|
|
<record id="view_picking_form" model="ir.ui.view">
|
|
<field name="name">stock_usability.view_picking_form</field>
|
|
<field name="model">stock.picking</field>
|
|
<field name="inherit_id" ref="stock.view_picking_form" />
|
|
<field name="arch" type="xml">
|
|
<field name="backorder_id" position="attributes">
|
|
<attribute name="attrs">{}</attribute>
|
|
</field>
|
|
<field name="min_date" position="after">
|
|
<field name="date_done" states="done"/>
|
|
</field>
|
|
<field name="partner_id" position="attributes">
|
|
<attribute name="context">{'show_address': 1}</attribute>
|
|
<attribute name="options">{'always_reload': True}</attribute>
|
|
</field>
|
|
<!-- Maybe it's usefull to always display stock pack operations...
|
|
or maybe only for debugging... I haven't decided yet !
|
|
<page string="Operations" position="attributes">
|
|
<attribute name="attrs"></attribute>
|
|
</page>
|
|
-->
|
|
<button name="action_cancel" type="object" position="attributes">
|
|
<attribute name="confirm">Are you sure you want to cancel this picking?</attribute>
|
|
</button>
|
|
<!-- This sum is useful to check the 'number of items' to transfer... -->
|
|
<xpath expr="//field[@name='pack_operation_product_ids']/tree/field[@name='product_qty']" position="attributes">
|
|
<attribute name="sum">1</attribute>
|
|
</xpath>
|
|
<xpath expr="//field[@name='pack_operation_product_ids']/tree/field[@name='qty_done']" position="attributes">
|
|
<attribute name="sum">1</attribute>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="vpicktree" model="ir.ui.view">
|
|
<field name="name">stock_usability.view_picking_tree</field>
|
|
<field name="model">stock.picking</field>
|
|
<field name="inherit_id" ref="stock.vpicktree" />
|
|
<field name="arch" type="xml">
|
|
<field name="min_date" position="after">
|
|
<field name="date_done"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_picking_internal_search" model="ir.ui.view">
|
|
<field name="name">stock_usability.view_picking_search</field>
|
|
<field name="model">stock.picking</field>
|
|
<field name="inherit_id" ref="stock.view_picking_internal_search" />
|
|
<field name="arch" type="xml">
|
|
<group expand="0" position="inside">
|
|
<filter string="Partner" context="{'group_by': 'partner_id'}"/>
|
|
</group>
|
|
<filter context="{'group_by':'origin'}" position="replace"/>
|
|
<filter context="{'group_by':'min_date'}" position="after">
|
|
<filter name="date_done" string="Date Done"
|
|
context="{'group_by': 'date_done:day'}"/>
|
|
</filter>
|
|
<filter context="{'group_by':'min_date'}" position="attributes">
|
|
<!-- group per day -->
|
|
<attribute name="context">"{'group_by': 'min_date:day'}"</attribute>
|
|
</filter>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="stock_picking_pivot" model="ir.ui.view">
|
|
<field name="name">stock_usability.picking_pivot</field>
|
|
<field name="model">stock.picking</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Transfers">
|
|
<field name="date_done" type="row" interval="month"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="stock.action_picking_tree_all" model="ir.actions.act_window">
|
|
<field name="view_mode">tree,form,calendar,pivot</field> <!-- add pivot -->
|
|
</record>
|
|
|
|
<record id="stock.action_picking_tree_done" model="ir.actions.act_window">
|
|
<field name="view_mode">tree,form,calendar,graph</field> <!-- add graph -->
|
|
</record>
|
|
|
|
<record id="stock.action_picking_tree_ready" model="ir.actions.act_window">
|
|
<field name="view_mode">tree,form,calendar,graph</field> <!-- add graph -->
|
|
</record>
|
|
|
|
<record id="stock.action_picking_tree_done_grouped" model="ir.actions.act_window">
|
|
<field name="view_mode">tree,form,calendar,graph</field> <!-- add graph -->
|
|
</record>
|
|
|
|
<record id="stock.action_picking_tree_waiting" model="ir.actions.act_window">
|
|
<field name="view_mode">tree,form,calendar,graph</field> <!-- add graph -->
|
|
</record>
|
|
|
|
<record id="stock.action_picking_tree_late" model="ir.actions.act_window">
|
|
<field name="view_mode">tree,form,calendar,graph</field> <!-- add graph -->
|
|
</record>
|
|
|
|
<record id="stock.action_picking_tree_backorder" model="ir.actions.act_window">
|
|
<field name="view_mode">tree,form,calendar,graph</field> <!-- add graph -->
|
|
</record>
|
|
|
|
<record id="stock.action_picking_tree" model="ir.actions.act_window">
|
|
<field name="view_mode">tree,form,calendar,graph</field> <!-- add graph -->
|
|
</record>
|
|
|
|
<!-- Display route in stock moves -->
|
|
<record id="view_move_form" model="ir.ui.view">
|
|
<field name="name">stock.usability.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="state" position="before">
|
|
<button type="object" name="button_do_unreserve" string="Unreserve"
|
|
groups="stock.group_stock_user"
|
|
attrs="{'invisible': [('reserved_quant_ids', '=', [])]}"/>
|
|
</field>
|
|
<field name="picking_id" position="after">
|
|
<field name="inventory_id" readonly="1"/>
|
|
</field>
|
|
<group name="moved_quants_grp" position="after">
|
|
<notebook colspan="2">
|
|
<page string="Notes" name="notes">
|
|
<field name="note" nolabel="1"/>
|
|
</page>
|
|
<page string="Advanced Parameters" name="advanced-params" groups="stock.group_stock_manager">
|
|
<group name="advanced">
|
|
<field name="procurement_id"/>
|
|
<field name="route_ids" widget="many2many_tags"/>
|
|
<field name="rule_id" readonly="1"/>
|
|
<field name="push_rule_id" readonly="1"/>
|
|
<field name="propagate" readonly="1"/>
|
|
<field name="price_unit"
|
|
attrs="{'readonly': [('state', '=', 'done')]}"/>
|
|
<field name="reserved_quant_ids" readonly="1"/>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</group>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_move_picking_form" model="ir.ui.view">
|
|
<field name="name">stock.usability.stock.move.picking.form</field>
|
|
<field name="model">stock.move</field>
|
|
<field name="inherit_id" ref="stock.view_move_picking_form" />
|
|
<field name="arch" type="xml">
|
|
<field name="state" position="before">
|
|
<button type="object" name="button_do_unreserve" string="Unreserve"
|
|
groups="stock.group_stock_user"
|
|
attrs="{'invisible': [('reserved_quant_ids', '=', [])]}"/>
|
|
</field>
|
|
<field name="group_id" position="replace"/> <!-- in stock, this field has invisible="1" re-add it below as visible -->
|
|
<group name="moved_quants_grp" position="after">
|
|
<notebook colspan="2">
|
|
<page string="Notes" name="notes">
|
|
<field name="note" nolabel="1"/>
|
|
</page>
|
|
<page string="Advanced Parameters" name="advanced-params" groups="stock.group_stock_manager">
|
|
<group name="advanced">
|
|
<field name="partner_id"/>
|
|
<field name="procurement_id"/>
|
|
<field name="group_id"/>
|
|
<field name="route_ids" widget="many2many_tags"/>
|
|
<field name="rule_id" readonly="1"/>
|
|
<field name="push_rule_id" readonly="1"/>
|
|
<field name="propagate" readonly="1"/>
|
|
<field name="price_unit" readonly="1"/>
|
|
<field name="reserved_quant_ids" readonly="1"/>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</group>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_move_picking_tree" model="ir.ui.view">
|
|
<field name="name">stock_usability.src_location.in.picking.form</field>
|
|
<field name="model">stock.move</field>
|
|
<field name="inherit_id" ref="stock.view_move_picking_tree" />
|
|
<field name="arch" type="xml">
|
|
<field name="location_id" position="attributes">
|
|
<attribute name="invisible">0</attribute>
|
|
</field>
|
|
<field name="location_dest_id" position="attributes">
|
|
<attribute name="invisible">0</attribute>
|
|
</field>
|
|
<field name="state" position="after">
|
|
<button type="object" name="button_do_unreserve" string="Unreserve"
|
|
groups="stock.group_stock_user"
|
|
attrs="{'invisible': [('reserved_quant_ids', '=', [])]}"
|
|
icon="fa-ban"/>
|
|
<field name="reserved_quant_ids" invisible="1"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- By default, stock.move have:
|
|
_order = 'picking_id, sequence, id'
|
|
I don't know if they have a good reason to choose this order,
|
|
but, when you open tree view of move lines from product, you want
|
|
the most recent moves at the top, so we change the default
|
|
order in the tree view (lower impact than changing _order -->
|
|
<record id="view_move_tree" model="ir.ui.view">
|
|
<field name="name">stock_usability.move.tree.better.order</field>
|
|
<field name="model">stock.move</field>
|
|
<field name="inherit_id" ref="stock.view_move_tree" />
|
|
<field name="arch" type="xml">
|
|
<tree position="attributes">
|
|
<attribute name="default_order">date desc, picking_id, sequence</attribute>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_warehouse" model="ir.ui.view">
|
|
<field name="name">stock.usability.warehouse.form</field>
|
|
<field name="model">stock.warehouse</field>
|
|
<field name="inherit_id" ref="stock.view_warehouse" />
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='out_type_id']/.." position="after">
|
|
<group name="routes" string="Routes">
|
|
<field name="route_ids" widget="many2many_tags"/>
|
|
<field name="crossdock_route_id"/>
|
|
<field name="reception_route_id"/>
|
|
<field name="delivery_route_id"/>
|
|
<field name="resupply_route_ids"/>
|
|
</group>
|
|
</xpath>
|
|
<field name="wh_input_stock_loc_id" position="before">
|
|
<field name="lot_stock_id" readonly="1" required="0"/>
|
|
<field name="view_location_id" groups="base.group_no_one"
|
|
readonly="1" required="0"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_location_search" model="ir.ui.view">
|
|
<field name="name">stock.usability.stock.location.search</field>
|
|
<field name="model">stock.location</field>
|
|
<field name="inherit_id" ref="stock.view_location_search" />
|
|
<field name="arch" type="xml">
|
|
<filter name="inactive" position="after">
|
|
<group string="Group By" name="groupby">
|
|
<filter name="usage" string="Location Type"
|
|
context="{'group_by': 'usage'}"/>
|
|
</group>
|
|
</filter>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="location_open_orderpoint" model="ir.actions.act_window">
|
|
<field name="name">Reordering Rules</field>
|
|
<field name="res_model">stock.warehouse.orderpoint</field>
|
|
<field name="context">{'default_location_id': active_id, 'search_default_location_id': active_id}</field>
|
|
</record>
|
|
|
|
<record id="view_location_form" model="ir.ui.view">
|
|
<field name="name">stock.usability.stock.location.form</field>
|
|
<field name="model">stock.location</field>
|
|
<field name="inherit_id" ref="stock.view_location_form"/>
|
|
<field name="arch" type="xml">
|
|
<button class="oe_stat_button" icon="fa-filter" position="after">
|
|
<button type="action" name="%(location_open_orderpoint)d"
|
|
string="Reordering Rules"
|
|
class="oe_stat_button" icon="fa-refresh"/>
|
|
</button>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- By default, the menu entry for stock location is only under
|
|
Configuration > Warehouse management
|
|
But, the view of stock location is very useful to be able to list
|
|
of the items present on a particular stock location => so every user
|
|
should be able to access it. So I add a menu entry under Inventory Control. -->
|
|
|
|
<menuitem id="stock_location_menu" action="stock.action_location_form"
|
|
parent="stock.menu_stock_inventory_control"
|
|
groups="stock.group_stock_multi_locations"
|
|
sequence="50"/>
|
|
|
|
|
|
<record id="view_inventory_form" model="ir.ui.view">
|
|
<field name="name">usability.stock.inventory.form</field>
|
|
<field name="model">stock.inventory</field>
|
|
<field name="inherit_id" ref="stock.view_inventory_form"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='line_ids']/tree" position="attributes">
|
|
<!-- native : decoration-info="product_qty != theoretical_qty" decoration-danger="theoretical_qty < 0" -->
|
|
<attribute name="decoration-info">product_qty > theoretical_qty</attribute>
|
|
<attribute name="decoration-warning">product_qty < theoretical_qty</attribute>
|
|
</xpath>
|
|
<button name="reset_real_qty" type="object" position="attributes">
|
|
<attribute name="confirm">Are you sure you want to reset all quantities to 0 ?</attribute>
|
|
</button>
|
|
|
|
</field>
|
|
</record>
|
|
|
|
<record id="stock_location_route_view_search" model="ir.ui.view">
|
|
<field name="name">usability.stock.location.route.search</field>
|
|
<field name="model">stock.location.route</field>
|
|
<field name="inherit_id" ref="stock.stock_location_route_view_search"/>
|
|
<field name="arch" type="xml">
|
|
<filter name="inactive" position="before">
|
|
<field name="name"/>
|
|
</filter>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_stock_quant_tree" model="ir.ui.view">
|
|
<field name="name">stock.usability.quant.tree</field>
|
|
<field name="model">stock.quant</field>
|
|
<field name="inherit_id" ref="stock.view_stock_quant_tree"/>
|
|
<field name="arch" type="xml">
|
|
<field name="reservation_id" position="attributes">
|
|
<attribute name="invisible">0</attribute>
|
|
</field>
|
|
<field name="qty" position="attributes">
|
|
<attribute name="sum">Total Qty</attribute>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<!--
|
|
<record id="view_template_property_form" model="ir.ui.view">
|
|
<field name="name">stock.usability.product.template.form</field>
|
|
<field name="model">product.template</field>
|
|
<field name="inherit_id" ref="stock.view_template_property_form"/>
|
|
<field name="arch" type="xml">
|
|
<field name="virtual_available" position="before">
|
|
<field name="outgoing_qty"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
-->
|
|
|
|
<!-- more detailed stock.move tree view when using the button from product form -->
|
|
<!-- TODO TEST
|
|
<record id="stock.act_product_stock_move_open" model="ir.actions.act_window">
|
|
<field name="view_id" ref="stock.view_move_tree"/>
|
|
</record> -->
|
|
|
|
<!-- The native menu entry of quants is called "Inventory Valuation"
|
|
but it forces a group by on products that you can't remove
|
|
So I create another "regular" Quants" menu entry -->
|
|
<record id="stock_quant_action" model="ir.actions.act_window">
|
|
<field name="name">Quants List</field>
|
|
<field name="res_model">stock.quant</field>
|
|
<field name="view_mode">tree,form,pivot</field>
|
|
<field name="context">{'search_default_internal_loc': 1}</field>
|
|
</record>
|
|
|
|
<menuitem id="stock_quant_menu" action="stock_quant_action"
|
|
parent="stock.menu_warehouse_report"
|
|
sequence="135"/>
|
|
|
|
</odoo>
|