Files
odoo_source/addons/lunch/views/lunch_product_views.xml
T
Anh Thao Pham (pta) 8b6b09fc26 [IMP] lunch: add list view for lunch.product.report
- Move code from kanban view that is common with list view in common files
- Add action to add selected products to cart
- Add/update tests

closes odoo/odoo#47556

Taskid: 2160048
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-04-30 11:40:39 +00:00

374 lines
18 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="lunch_product_view_search" model="ir.ui.view">
<field name="name">lunch.product.search</field>
<field name="model">lunch.product</field>
<field name="arch" type="xml">
<search string="Product Search">
<field name="name" string="Product"/>
<field name="category_id" string="Category"/>
<field name="supplier_id"/>
<field name="description"/>
<separator/>
<filter name="inactive" string="Archived" domain="[('active', '=', False)]"/>
<group expand="0" string="Group By">
<filter name="group_by_supplier" string="Vendor" context="{'group_by': 'supplier_id'}"/>
<filter name="group_by_category" string="Category" context="{'group_by': 'category_id'}"/>
</group>
<searchpanel>
<field name="category_id" select="multi" string="Categories" icon="fa-cutlery" color="#875A7B"/>
<field name="supplier_id" select="multi" string="Vendors" icon="fa-truck"/>
</searchpanel>
</search>
</field>
</record>
<record id="lunch_product_report_view_search" model="ir.ui.view">
<field name="name">lunch.product.report.search</field>
<field name="model">lunch.product.report</field>
<field name="arch" type="xml">
<search string="Product Search">
<field name="name" string="Product"/>
<field name="category_id" string="Category"/>
<field name="supplier_id"/>
<field name="description"/>
<group expand="0" string="Group By">
<filter name="group_by_supplier" string="Vendor" context="{'group_by': 'supplier_id'}"/>
<filter name="group_by_category" string="Category" context="{'group_by': 'category_id'}"/>
</group>
<searchpanel>
<field name="category_id" select="multi" string="Categories" icon="fa-cutlery" color="#875A7B"/>
<field name="supplier_id" select="multi" string="Vendors" icon="fa-truck"/>
</searchpanel>
</search>
</field>
</record>
<record id="lunch_product_view_tree" model="ir.ui.view">
<field name="name">lunch.product.tree</field>
<field name="model">lunch.product</field>
<field name="arch" type="xml">
<tree string="Products Tree">
<field name="currency_id" invisible="1"/>
<field name="name"/>
<field name="category_id"/>
<field name="supplier_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="description"/>
<field name="price" widget="monetary"/>
</tree>
</field>
</record>
<record id="lunch_product_view_form" model="ir.ui.view">
<field name="name">lunch.product.form</field>
<field name="model">lunch.product</field>
<field name="arch" type="xml">
<form string="Products Form">
<field name="currency_id" invisible="1"/>
<sheet>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="image_1920" widget="image" class="oe_avatar" options="{'preview_image': 'image_128'}"/>
<div class="oe_title">
<label for="name" class="oe-edit-only"/>
<h1>
<field name='name'/>
</h1>
</div>
<group>
<group>
<field name="active" invisible="1"/>
<field name='category_id'/>
<field name='supplier_id'/>
<field name='price' widget="monetary"/>
</group>
<group>
<field name="new_until"/>
<field name='description'/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="lunch_product_report_view_tree" model="ir.ui.view">
<field name="name">lunch.product.tree</field>
<field name="model">lunch.product.report</field>
<field name="priority">999</field>
<field name="arch" type="xml">
<tree js_class="lunch_list">
<field name="name"/>
<field name="category_id"/>
<field name="supplier_id"/>
<field name="description"/>
<field name="product_id" invisible="1"/>
<field name="price" widget="monetary"/>
</tree>
</field>
</record>
<record id="view_lunch_product_kanban_order" model="ir.ui.view">
<field name="name">lunch.product.kanban</field>
<field name="model">lunch.product.report</field>
<field name="priority">999</field>
<field name="arch" type="xml">
<kanban js_class="lunch_kanban" create="0" edit="0" group_create="0" class="o_kanban_mobile">
<field name="id"/>
<field name="name"/>
<field name="category_id"/>
<field name="supplier_id"/>
<field name="description"/>
<field name="currency_id"/>
<field name="user_id"/>
<field name="product_id"/>
<field name="is_new"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click o_kanban_record_has_image_fill o_kanban_record">
<field name="image_128" class="o_lunch_image o_kanban_image_fill_left d-none d-md-block" options="{'placeholder': '/lunch/static/img/lunch.png'}" widget="image"/>
<div class="oe_kanban_details">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title">
<div>
<span class="pr-1"><field name="is_favorite" widget="boolean_favorite" nolabel="1"/></span>
<div class="float-right o_lunch_purple">
<field name="price" widget="monetary"/>
</div>
<div t-if="record.is_new.raw_value" class="float-right o_lunch_new_product mr-1 badge-pill badge-success">
New
</div>
<strong><span t-esc="record.name.value"/></strong>
</div>
</strong>
<span class="o_kanban_record_subtitle"><span t-esc="record.supplier_id.value"/></span>
</div>
</div>
<div class="o_kanban_record_bottom">
<ul>
<li t-esc="record.description.value" class="text-muted"/>
</ul>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="view_lunch_product_kanban" model="ir.ui.view">
<field name="name">lunch.product.kanban</field>
<field name="model">lunch.product</field>
<field name="priority">5</field>
<field name="arch" type="xml">
<kanban create="1" edit="0" class="o_kanban_mobile">
<field name="id"/>
<field name="name"/>
<field name="category_id"/>
<field name="supplier_id"/>
<field name="description"/>
<field name="currency_id"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click o_kanban_record_has_image_fill o_kanban_record">
<div class="o_kanban_image_fill_left d-none d-md-block"
t-attf-style="background-image:url('#{kanban_image('lunch.product', 'image_128', record.id.raw_value)}')"/>
<div class="oe_kanban_details">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title">
<div>
<div class="float-right">
<field name="price" widget="monetary"/>
</div>
<strong><span t-esc="record.name.value"/></strong>
</div>
</strong>
<span class="o_kanban_record_subtitle"><span t-esc="record.supplier_id.value"/></span>
</div>
</div>
<div class="o_kanban_record_bottom">
<ul>
<li t-esc="record.description.value" class="text-muted"/>
</ul>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="lunch_product_action_statbutton" model="ir.actions.act_window">
<field name="name">Products</field>
<field name="res_model">lunch.product</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{'search_default_group_by_supplier': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new product for lunch
</p><p>
A product is defined by its name, category, price and vendor.
</p>
</field>
</record>
<record id="lunch_product_category_view_tree" model="ir.ui.view">
<field name="name">Product category Tree</field>
<field name="model">lunch.product.category</field>
<field name="arch" type="xml">
<tree string="Products List">
<field name='name' string="Product Category"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="lunch_product_category_view_form" model="ir.ui.view">
<field name="name">Product category Form</field>
<field name="model">lunch.product.category</field>
<field name="arch" type="xml">
<form string="Product Categories Form">
<sheet>
<div class="oe_button_box" name="button_box">
<button class="oe_stat_button" type="action" name="%(lunch.lunch_product_action_statbutton)d"
context="{'search_default_category_id': active_id,'default_category_id': active_id}"
attrs="{'invisible': [('product_count', '=', 0)]}"
icon="fa-cutlery">
<field string="Products" name="product_count" widget="statinfo"/>
</button>
</div>
<field name="image_1920" widget="image" class="oe_avatar" options="{'preview_image': 'image_128'}"/>
<div class="oe_title">
<label for="name" class="oe-edit-only"/>
<h1>
<field name="name"/>
</h1>
</div>
<group>
<group>
<field name="topping_label_1"/>
<field name="topping_quantity_1"/>
</group>
<div>
<field name="topping_ids_1" nolabel="1">
<tree editable="bottom">
<field name="name"/>
<field name="currency_id" invisible="1"/>
<field name="price" widget="monetary"/>
</tree>
</field>
</div>
<group>
<field name="topping_label_2"/>
<field name="topping_quantity_2"/>
</group>
<div>
<field name="topping_ids_2" nolabel="1">
<tree editable="bottom">
<field name="name"/>
<field name="currency_id" invisible="1"/>
<field name="price" widget="monetary"/>
</tree>
</field>
</div>
<group>
<field name="topping_label_3"/>
<field name="topping_quantity_3"/>
</group>
<div>
<field name="topping_ids_3" nolabel="1">
<tree editable="bottom">
<field name="name"/>
<field name="currency_id" invisible="1"/>
<field name="price" widget="monetary"/>
</tree>
</field>
</div>
</group>
</sheet>
</form>
</field>
</record>
<record id="lunch_product_category_view_kanban" model="ir.ui.view">
<field name="name">Product category Kanban</field>
<field name="model">lunch.product.category</field>
<field name="arch" type="xml">
<kanban class="o_kanban_mobile">
<field name="id"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click o_kanban_record_has_image_fill o_kanban_record">
<div class="o_kanban_image_fill_left d-none d-md-block"
t-attf-style="background-image:url('#{kanban_image('lunch.product.category', 'image_128', record.id.raw_value)}')"/>
<div class="oe_kanban_details">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<div class="float-right">
<button class="badge badge-primary" type="action"
name="%(lunch.lunch_product_action_statbutton)d"
context="{'search_default_category_id': active_id,'default_category_id': active_id}"
attrs="{'invisible': [('product_count', '=', 0)]}">
<field string="Products" name="product_count" widget="statinfo"/>
</button>
</div>
</div>
</div>
<div class="o_kanban_record_body">
<strong><field name="name"/></strong><br/>
<field name="company_id" groups="base.group_multi_company"/>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="lunch_product_action" model="ir.actions.act_window">
<field name="name">Products</field>
<field name="res_model">lunch.product</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new product for lunch
</p><p>
A product is defined by its name, category, price and vendor.
</p>
</field>
</record>
<record id="lunch_product_action_order" model="ir.actions.act_window">
<field name="name">Order Your Lunch</field>
<field name="res_model">lunch.product.report</field>
<field name="view_mode">kanban,tree</field>
<field name="view_id" ref="view_lunch_product_kanban_order"/>
<field name="search_view_id" ref="lunch_product_report_view_search"/>
<field name="domain">[('supplier_id.available_today', '=', True), '|', ('user_id', '=', False), ('user_id', '=', uid)]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
There is no product available today
</p><p>
To see some products, check if your vendors are available today and that you have configured some products
</p>
</field>
</record>
<record id="lunch_product_category_action" model="ir.actions.act_window">
<field name="name">Product Categories</field>
<field name="res_model">lunch.product.category</field>
<field name="view_mode">tree,form,kanban</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new product category
</p><p>
Here you can access all categories for the lunch products.
</p>
</field>
</record>
</odoo>