Clean version of stat button of product quantity. Will also work in
creation mode and avoid unuseful computed string field
(fix parts of commit 52c3b52bf0)
256 lines
15 KiB
XML
256 lines
15 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<openerp>
|
|
<data>
|
|
|
|
<record id="view_stock_product_tree" model="ir.ui.view">
|
|
<field name="name">product.stock.tree.inherit</field>
|
|
<field name="model">product.product</field>
|
|
<field name="inherit_id" ref="product.product_product_tree_view"/>
|
|
<field name="arch" type="xml">
|
|
<tree position="attributes">
|
|
<attribute name="colors">{'red':virtual_available<0, 'blue':virtual_available>=0 and state in ('draft', 'end', 'obsolete'), 'black':virtual_available>=0 and state not in ('draft', 'end', 'obsolete')}</attribute>
|
|
</tree>
|
|
<field name="price" position="after">
|
|
<field name="qty_available"/>
|
|
<field name="virtual_available"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_stock_product_template_tree" model="ir.ui.view">
|
|
<field name="name">product.template.stock.tree.inherit</field>
|
|
<field name="model">product.template</field>
|
|
<field name="inherit_id" ref="product.product_template_tree_view"/>
|
|
<field name="arch" type="xml">
|
|
<tree position="attributes">
|
|
<attribute name="colors">{'red':virtual_available<0, 'blue':virtual_available>=0 and state in ('draft', 'end', 'obsolete'), 'black':virtual_available>=0 and state not in ('draft', 'end', 'obsolete')}</attribute>
|
|
</tree>
|
|
<field name="uom_id" position="after">
|
|
<field name="qty_available"/>
|
|
<field name="virtual_available"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
|
|
<record id="action_receive_move" model="ir.actions.act_window">
|
|
<field name="name">Receipts</field>
|
|
<field name="res_model">stock.move</field>
|
|
<field name="type">ir.actions.act_window</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,form</field>
|
|
<field name="domain" eval="[('picking_id.picking_type_id.code','=','incoming'), ('location_id.usage','!=','internal'), ('location_dest_id.usage', '=', 'internal')]"/>
|
|
<field name="view_id" ref="view_move_tree_receipt_picking"/>
|
|
<field name="context" eval="'{\'search_default_product_id\': [active_id]}'"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to register a receipt for this product.
|
|
</p><p>
|
|
Here you will find the history of all receipts related to
|
|
this product, as well as all future receipts you are waiting
|
|
from your suppliers.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_deliver_move" model="ir.actions.act_window">
|
|
<field name="name">Deliveries</field>
|
|
<field name="res_model">stock.move</field>
|
|
<field name="type">ir.actions.act_window</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,form</field>
|
|
<field name="view_id" ref="view_move_tree_receipt_picking"/>
|
|
<field name="domain" eval="[('picking_type_id.code','=','outgoing'), ('location_id.usage','=','internal'), ('location_dest_id.usage', '!=', 'internal')]"/>
|
|
<field name="context" eval="'{\'search_default_product_id\': [active_id]}'"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to add a delivery order for this product.
|
|
</p><p>
|
|
Here you will find the history of all past deliveries related to
|
|
this product, as well as all the products you must deliver to
|
|
customers.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Product Template -->
|
|
|
|
<record id="product_template_search_form_view_stock" model="ir.ui.view">
|
|
<field name="name">product.template.search.stock.form</field>
|
|
<field name="model">product.template</field>
|
|
<field name="inherit_id" ref="product.product_template_search_view"/>
|
|
<field name="arch" type="xml">
|
|
<field name="product_variant_ids" position="before">
|
|
<separator/>
|
|
<filter name="real_stock_available" string="Available Products" domain="[('qty_available','>',0)]"/>
|
|
<filter name="virtual_stock_available" string="Forecast Available Products" domain="[('virtual_available','>',0)]"/>
|
|
<filter name="real_stock_exhausted" string="Exhausted Stock" domain="[('qty_available','<=',0)]"/>
|
|
<filter name="virtual_stock_exhausted" string="Forecast Exhausted Stock" domain="[('virtual_available','<=',0)]"/>
|
|
<filter name="real_stock_negative" string="Negative Stock" domain="[('qty_available','<',0)]"/>
|
|
<filter name="virtual_stock_negative" string="Forecast Negative Stock" domain="[('virtual_available','<',0)]"/>
|
|
</field>
|
|
<filter name="consumable" position="before">
|
|
<filter string="Products" icon="terp-accessories-archiver" domain="[('type','=','product')]" help="Stockable products"/>
|
|
</filter>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_template_property_form" model="ir.ui.view">
|
|
<field name="name">product.template.stock.property.form.inherit</field>
|
|
<field name="model">product.template</field>
|
|
<field name="inherit_id" ref="product.product_template_form_view"/>
|
|
<field name="arch" type="xml">
|
|
<group name="sale_condition" position="inside">
|
|
<label for="sale_delay"/>
|
|
<div>
|
|
<field name="sale_delay" attrs="{'readonly':[('sale_ok','=',False)]}" class="oe_inline" style="vertical-align:baseline"/> days
|
|
</div>
|
|
</group>
|
|
<group name="status" position="before">
|
|
<group string="Stock and Expected Variations" attrs="{'invisible': [('type', '=', 'service')]}" groups="base.group_user">
|
|
<label for="qty_available"/>
|
|
<div>
|
|
<field name="qty_available" class="oe_inline"/>
|
|
<button name="%(action_view_change_product_quantity)d" string="⇒ Update"
|
|
type="action"
|
|
class="oe_link"/>
|
|
</div>
|
|
<label for="incoming_qty"/>
|
|
<div>
|
|
<field name="incoming_qty" class="oe_inline"/>
|
|
<button string="⇒ Request Procurement" name="%(stock.act_make_procurement)d" type="action" class="oe_link"/>
|
|
</div>
|
|
<field name="virtual_available"/>
|
|
</group>
|
|
</group>
|
|
<group name="status" position="after">
|
|
<group name="store" string="Storage Location" attrs="{'invisible':[('type','=','service')]}">
|
|
<field name="loc_rack"/>
|
|
<field name="loc_row"/>
|
|
<field name="loc_case"/>
|
|
</group>
|
|
</group>
|
|
<group name="status" position="before">
|
|
<group name="lot" groups="stock.group_production_lot" string="Lots" attrs="{'invisible':[('type','=','service')]}">
|
|
<field name="track_all" groups="stock.group_production_lot"/>
|
|
<field name="track_incoming" groups="stock.group_production_lot" attrs="{'invisible': [('track_all', '=', True)]}"/>
|
|
<field name="track_outgoing" groups="stock.group_production_lot" attrs="{'invisible': [('track_all', '=', True)]}"/>
|
|
</group>
|
|
</group>
|
|
<group name="weight" position="before">
|
|
<group name="store" groups="stock.group_locations" string="Counter-Part Locations Properties" attrs="{'invisible':[('type','=','service')]}">
|
|
<field name="property_stock_procurement" domain="[('usage','=','procurement')]"/>
|
|
<field name="property_stock_production" domain="[('usage','=','production')]"/>
|
|
<field name="property_stock_inventory" domain="[('usage','=','inventory')]"/>
|
|
</group>
|
|
</group>
|
|
<field name="product_manager" position="attributes">
|
|
<attribute name="context">{'default_groups_ref': ['base.group_user', 'base.group_sale_manager', 'stock.group_stock_manager']}</attribute>
|
|
</field>
|
|
<group name="procurement_uom" position="after" >
|
|
<group string="Supply Chain Information" attrs="{'invisible': [('type', '=', 'service')]}" groups="base.group_user">
|
|
<field name="route_ids" widget="many2many_checkboxes"/>
|
|
</group>
|
|
</group>
|
|
</field>
|
|
</record>
|
|
|
|
|
|
|
|
<record model="ir.ui.view" id="product_template_kanban_stock_view">
|
|
<field name="name">Product Template Kanban Stock</field>
|
|
<field name="model">product.template</field>
|
|
<field name="inherit_id" ref="product.product_template_kanban_view"/>
|
|
<field name="arch" type="xml">
|
|
<field name="lst_price" position="after">
|
|
<field name="type"/>
|
|
</field>
|
|
<ul position="inside">
|
|
<li t-if="record.type.raw_value != 'service'">On hand: <field name="qty_available"/> <field name="uom_id"/></li>
|
|
<li t-if="record.type.raw_value != 'service'">Forecasted: <field name="virtual_available"/> <field name="uom_id"/></li>
|
|
</ul>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Product Variant -->
|
|
|
|
<record id="product_search_form_view_stock" model="ir.ui.view">
|
|
<field name="name">product.search.stock.form</field>
|
|
<field name="model">product.product</field>
|
|
<field name="inherit_id" ref="product.product_search_form_view"/>
|
|
<field name="arch" type="xml">
|
|
<field name="pricelist_id" position="before">
|
|
<field name="location_id" widget="selection" context="{'location': self}"/>
|
|
<field name="warehouse_id" widget="selection" context="{'warehouse': self}"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="product_kanban_stock_view">
|
|
<field name="name">Product Kanban Stock</field>
|
|
<field name="model">product.product</field>
|
|
<field name="inherit_id" ref="product.product_kanban_view"/>
|
|
<field name="arch" type="xml">
|
|
<field name="lst_price" position="after">
|
|
<field name="reception_count"/>
|
|
<field name="delivery_count"/>
|
|
</field>
|
|
<xpath expr="//div[@name='tags']" position="inside">
|
|
<a name="%(action_receive_move)d" type="action" t-if="record.reception_count.raw_value>1">
|
|
<t t-esc="record.reception_count.value"/> Receipts
|
|
</a>
|
|
<a name="%(action_receive_move)d" type="action" t-if="record.reception_count.raw_value==1">
|
|
<t t-esc="record.reception_count.value"/> Receipt
|
|
</a>
|
|
<a name="%(action_deliver_move)d" type="action" t-if="record.delivery_count.raw_value>1">
|
|
<t t-esc="record.delivery_count.value"/> Deliveries
|
|
</a>
|
|
<a name="%(action_deliver_move)d" type="action" t-if="record.delivery_count.raw_value==1">
|
|
<t t-esc="record.delivery_count.value"/> Delivery
|
|
</a>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="product_form_view_procurement_button">
|
|
<field name="name">product.product.procurement</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='buttons']" position="inside">
|
|
<button class="oe_stat_button"
|
|
name="%(product_open_quants)d"
|
|
icon="fa-building-o"
|
|
type="action" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_locations">
|
|
<field name="qty_available2" widget="statinfo"/>
|
|
</button>
|
|
<button class="oe_inline oe_stat_button" string="Moves" name= "%(act_product_stock_move_open)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_stock_user" icon="fa-arrows-v"/>
|
|
<button class="oe_inline oe_stat_button" name="%(product_open_orderpoint)d" type="action"
|
|
attrs="{'invisible':[('type', '=', 'service')]}" icon="fa-refresh" string="Reordering Rules"/>
|
|
<button class="oe_inline oe_stat_button" name="action_view_routes" string="Routes" type="object" icon="fa-cogs" attrs="{'invisible':[('type', '=', 'service')]}" />
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="product_template_form_view_procurement_button">
|
|
<field name="name">product.template_procurement</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='buttons']" position="inside">
|
|
<button class="oe_stat_button"
|
|
name="action_open_quants"
|
|
icon="fa-building-o"
|
|
type="object" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_locations">
|
|
<field name="qty_available2" widget="statinfo"/>
|
|
</button>
|
|
<button class="oe_inline oe_stat_button" string="Moves" name= "action_view_stock_moves" type="object" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_stock_user" icon="fa-arrows-v"/>
|
|
<button class="oe_inline oe_stat_button" name="action_view_orderpoints" type="object"
|
|
attrs="{'invisible':[('type', '=', 'service')]}" icon="fa-refresh" string="Reordering Rules"/>
|
|
<button class="oe_inline oe_stat_button" name="action_view_routes" string="Routes" type="object" icon="fa-cogs" attrs="{'invisible':[('type', '=', 'service')]}" />
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
</data>
|
|
</openerp>
|