flectra/addons/lunch/views/lunch_views.xml
2018-01-16 02:34:37 -08:00

691 lines
35 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<flectra>
<!-- Top menu item -->
<menuitem id='menu_lunch' name='Lunch' sequence="105" groups="group_lunch_user" web_icon="lunch,static/description/icon.png"/>
<menuitem name="My Lunch" parent="menu_lunch" id="menu_lunch_title" sequence="50" />
<menuitem name="Manager" parent="menu_lunch" id="menu_lunch_admin" sequence="51" groups="group_lunch_manager"/>
<menuitem name="Configuration" parent="menu_lunch" id="menu_lunch_config" sequence="53" groups="group_lunch_manager"/>
<!--View Search to group/filter by Supplier and time-->
<record id="lunch_order_line_view_search" model="ir.ui.view">
<field name="name">lunch.order.line.search</field>
<field name="model">lunch.order.line</field>
<field name="arch" type="xml">
<search string="Search">
<filter name='is_mine' string="My Orders" domain="[('user_id','=',uid)]"/>
<separator/>
<field name="name" string="Product" filter_domain="['|', ('name', 'ilike', self), ('note', 'ilike', self)]"/>
<filter name="not_confirmed" string="Not Received" domain="[('state','!=',('confirmed'))]"/>
<filter name="confirmed" string="Received" domain="[('state','=','confirmed')]"/>
<filter name="cancelled" string="Cancelled" domain="[('state','=','cancelled')]"/>
<separator/>
<filter name="today" string="Today" domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]"/>
<field name="user_id"/>
<group expand="0" string="Group By">
<filter name="group_by_order_id" string="By Order" context="{'group_by':'order_id'}"/>
<filter name="group_by_supplier" string="By Vendor" context="{'group_by':'supplier'}"/>
<filter name="group_by_date" string="Order Month" context="{'group_by':'date'}" help="Vendor Orders by Month"/>
</group>
</search>
</field>
</record>
<!--View Search to group by employee and input/output (cashmoves)-->
<record id="lunch_cashmove_view_search" model="ir.ui.view">
<field name='name'>lunch.cashmove.search</field>
<field name='model'>lunch.cashmove</field>
<field name='arch' type='xml'>
<search string="lunch employee payment">
<field name="description"/>
<field name="user_id"/>
<filter name='is_payment' string="Payment" domain="[('state','=','payment')]"/>
<separator/>
<filter name='is_mine_group' string="My Account grouped" domain="[('user_id','=',uid)]" context="{'group_by':'user_id'}"/>
<filter name="group_by_user" string="By User" context="{'group_by':'user_id'}"/>
</search>
</field>
</record>
<record id="lunch_cashmove_view_search_2" model="ir.ui.view">
<field name='name'>lunch.cashmove.search</field>
<field name='model'>lunch.cashmove</field>
<field name='arch' type='xml'>
<search string="lunch cashmove">
<field name="description"/>
<field name="user_id"/>
<group expand="0" string="Group By">
<filter name='group_by_user' string="By Employee" context="{'group_by':'user_id'}"/>
</group>
</search>
</field>
</record>
<record id="lunch_alert_view_search" model="ir.ui.view">
<field name="name">lunch.alert.search</field>
<field name="model">lunch.alert</field>
<field name="arch" type="xml">
<search string="Search">
<field name="message"/>
<filter name="inactive" string="Archived" domain="[('active','=',False)]"/>
</search>
</field>
</record>
<!--view for cashmove-->
<record id="lunch_cashmove_view_tree" model="ir.ui.view">
<field name="name">lunch.cashmove.tree</field>
<field name="model">lunch.cashmove</field>
<field name="arch" type="xml">
<tree string="cashmove tree">
<field name="date"/>
<field name="user_id"/>
<field name="description"/>
<field name="amount" sum="Total"/>
</tree>
</field>
</record>
<record id="view_lunch_cashmove_kanban" model="ir.ui.view">
<field name="name">lunch.cashmove.kanban</field>
<field name="model">lunch.cashmove</field>
<field name="arch" type="xml">
<kanban class="o_kanban_mobile">
<field name="date"/>
<field name="user_id"/>
<field name="description"/>
<field name="amount"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="row mb4">
<div class="col-xs-8">
<span>
<strong class="o_kanban_record_title"><t t-esc="record.description.value"/></strong>
</span>
</div>
<div class="col-xs-4 text-right">
<span class="badge">
<strong><i class="fa fa-money"/> <field name="amount"/></strong>
</span>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<i class="fa fa-clock-o"/>
<t t-esc="record.date.value"/>
</div>
<div class="col-xs-6">
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="lunch_cashmove_view_form" model="ir.ui.view">
<field name="name">lunch.cashmove.form</field>
<field name="model">lunch.cashmove</field>
<field name="arch" type="xml">
<form string="cashmove form">
<sheet>
<group>
<field name="user_id" required="1"/>
<field name="date"/>
<field name="amount"/>
</group>
<label for='description'/>
<field name="description"/>
</sheet>
</form>
</field>
</record>
<!--Action for Your Orders-->
<record id="lunch_order_action_form" model="ir.actions.act_window">
<field name="name">New Order</field>
<field name="res_model">lunch.order</field>
<field name="view_mode">form</field>
</record>
<menuitem name="New Order" parent="menu_lunch_title" id="lunch_order_menu_form" action="lunch_order_action_form" sequence="1"/>
<record id="lunch_order_line_action" model="ir.actions.act_window">
<field name="name">Your Orders</field>
<field name="res_model">lunch.order.line</field>
<field name="view_mode">tree,kanban,form</field>
<field name="search_view_id" ref="lunch_order_line_view_search"/>
<field name="context">{"search_default_is_mine":1}</field>
<field name="help" type="html">
<p>
There is no previous order recorded. Click on "My Lunch" and then create a new lunch order.
</p>
</field>
</record>
<menuitem name="Previous Orders" parent="menu_lunch_title" id="lunch_order_menu_tree" action="lunch_order_line_action" sequence="2"/>
<record id="lunch_cashmove_view_tree_2" model="ir.ui.view">
<field name="name">lunch.cashmove.tree</field>
<field name="model">lunch.cashmove</field>
<field name="arch" type="xml">
<tree string="cashmove tree" create='false'>
<field name="date"/>
<field name="description"/>
<field name="amount" sum="Total"/>
</tree>
</field>
</record>
<!--Action for Lunch cashmoves-->
<record id="lunch_cashmove_action_account" model="ir.actions.act_window">
<field name="name">Your Account</field>
<field name="res_model">lunch.cashmove</field>
<field name="view_mode">tree</field>
<field name="search_view_id" ref="lunch_cashmove_view_search"/>
<field name="context">{"search_default_is_mine_group":1}</field>
<field name="view_id" ref="lunch_cashmove_view_tree_2"/>
<field name="help" type="html">
<p>
Here you can see your cash moves.<br/>A cash moves can be either an expense or a payment.
An expense is automatically created when an order is received while a payment is a reimbursement to the company encoded by the manager.
</p>
</field>
</record>
<menuitem name="Your Lunch Account" parent="menu_lunch_title" id="lunch_cashmove_menu_form" action="lunch_cashmove_action_account" sequence="3"/>
<!--Action for Administrate Orders group by supplier-->
<record id="lunch_order_line_action_by_supplier" model="ir.actions.act_window">
<field name="name">Orders by Vendor</field>
<field name="res_model">lunch.order.line</field>
<field name="view_mode">tree,kanban</field>
<field name="search_view_id" ref="lunch_order_line_view_search"/>
<field name="context">{"search_default_group_by_supplier":1, "search_default_today":1}</field>
<field name="help" type="html">
<p>
Here you can see today's orders grouped by vendors.
</p>
<p>
- Click on the <span class="fa fa-phone text-success"/> to announce that the order is ordered <br/>
- Click on the <span class="fa fa-check text-success"/> to announce that the order is received <br/>
- Click on the <span class="fa fa-times-circle text-danger"/> to announce that the order isn't available
</p>
</field>
</record>
<menuitem name="Today's Orders" parent="menu_lunch_admin" id="lunch_order_line_menu_by_supplier" action="lunch_order_line_action_by_supplier" />
<!--Action for control Vendor -->
<record id="lunch_order_line_action_control_suppliers" model="ir.actions.act_window">
<field name="name">Control Vendors</field>
<field name="res_model">lunch.order.line</field>
<field name="view_mode">tree,kanban</field>
<field name="search_view_id" ref="lunch_order_line_view_search"/>
<field name="context">{"search_default_group_by_date":1, "search_default_group_by_supplier":1}</field>
<field name="help" type="html">
<p>
Summary of all lunch orders, grouped by vendor and by date.
</p>
<p>
- Click on the <span class="fa fa-phone text-success"/> to announce that the order is ordered <br/>
- Click on the <span class="fa fa-check text-success"/> to announce that the order is received <br/>
- Click on the <span class="fa fa-times-circle text-danger"/> red X to announce that the order isn't available
</p>
</field>
</record>
<menuitem name="Orders by Vendor" parent="menu_lunch_admin" id="lunch_order_line_menu_control_suppliers" action="lunch_order_line_action_control_suppliers" />
<!--Action for Control Accounts-->
<record id="lunch_cashmove_action_control_accounts" model="ir.actions.act_window">
<field name="name">Control Accounts</field>
<field name="res_model">lunch.cashmove</field>
<field name="view_mode">tree,kanban,form</field>
<field name="search_view_id" ref="lunch_cashmove_view_search_2"/>
<field name="context">{"search_default_group_by_user":1}</field>
<field name="view_id" ref="lunch_cashmove_view_tree"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new payment.
</p>
<p>
A cashmove can either be an expense or a payment.<br/>
An expense is automatically created at the order receipt.<br/>
A payment represents the employee reimbursement to the company.
</p>
</field>
</record>
<menuitem name="Control Accounts" parent="menu_lunch_admin" id="lunch_cashmove_menu_control_accounts" action="lunch_cashmove_action_control_accounts"/>
<!--Action for Payment cashmove-->
<record id="lunch_cashmove_action_payment" model="ir.actions.act_window">
<field name="name">Register Cash Moves</field>
<field name="res_model">lunch.cashmove</field>
<field name="view_mode">tree,kanban,form</field>
<field name="search_view_id" ref="lunch_cashmove_view_search"/>
<field name="context">{"search_default_is_payment":1}</field>
<field name="view_id" ref="lunch_cashmove_view_tree"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a payment.
</p>
<p>
Here you can see the employees' payment. A payment is a cash move from the employee to the company.
</p>
</field>
</record>
<menuitem name="Employee Payments" parent="menu_lunch_admin" id="lunch_cashmove_menu_payment" action="lunch_cashmove_action_payment"/>
<!--Action for Products-->
<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="oe_view_nocontent_create">
Click to create a product for lunch.
</p>
<p>
A product is defined by its name, category, price and vendor.
</p>
</field>
</record>
<menuitem name="Products" parent="menu_lunch_config" id="lunch_product_menu" action="lunch_product_action"/>
<!--Action for Product categories-->
<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</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a lunch category.
</p>
<p>
Here you can access all categories for the lunch products.
</p>
</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="Products Form">
<group>
<field name='name' string="Product Category: "/>
</group>
</form>
</field>
</record>
<menuitem name="Product Categories" parent="menu_lunch_config" id="lunch_product_category_menu" action="lunch_product_category_action" />
<!--Action for Alert-->
<record id="lunch_alert_action" model="ir.actions.act_window">
<field name="name">Alerts</field>
<field name="res_model">lunch.alert</field>
<field name="view_mode">tree,kanban,form</field>
<field name="search_view_id" ref="lunch_alert_view_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a lunch alert.
</p>
<p>
Alerts are used to warn employee from possible issues concerning the lunch orders.
To create a lunch alert you have to define its recurrence, the time interval during which the alert should be executed and the message to display.
</p>
<p>
Example: <br/>
- Recurency: Everyday<br/>
- Time interval: from 00h00 am to 11h59 pm<br/>
- Message: "You must order before 10h30 am"
</p>
</field>
</record>
<menuitem name="Alerts" parent="menu_lunch_config" id="lunch_alert_menu" action="lunch_alert_action" />
<!--View for Order lines-->
<record id="lunch_order_line_view_tree" model="ir.ui.view">
<field name="name">lunch.order.line.tree</field>
<field name="model">lunch.order.line</field>
<field name="arch" type="xml">
<tree string="Order lines Tree" create="false" edit="false">
<field name='date'/>
<field name='supplier' invisible='1'/>
<field name='product_id'/>
<field name='note'/>
<field name='state'/>
<field name='user_id'/>
<field name='price' sum="Total" string="Price"/>
<button name="order" string="Order" type="object" icon="fa-phone text-success" attrs="{'invisible': ['|',('state','=','confirmed'),('state','=','ordered')]}" groups="lunch.group_lunch_manager"/>
<button name="confirm" string="Receive" type="object" icon="fa-check text-success" attrs="{'invisible': [('state','!=','ordered')]}" groups="lunch.group_lunch_manager"/>
<button name="cancel" string="Cancel" type="object" icon="fa-times-circle text-danger" attrs="{'invisible': [('state','=','cancelled')]}" groups="lunch.group_lunch_manager"/>
</tree>
</field>
</record>
<record id='lunch_order_line_view_kanban' model='ir.ui.view'>
<field name="name">lunch.order.line.kanban</field>
<field name="model">lunch.order.line</field>
<field name="arch" type="xml">
<kanban>
<field name='product_id'/>
<field name='note'/>
<field name='state'/>
<field name='user_id'/>
<field name='date'/>
<field name="price"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title"><field name="product_id"/></strong>
</div>
<field name="state" widget="kanban_label_selection" options="{'classes': {'new': 'default', 'confirmed': 'success', 'cancelled':'danger'}}"/>
</div>
<div>
<field name="note"/>
</div>
<div class="row">
<div class="col-xs-6">
<i class="fa fa-money"/> <field name="price"/>
</div>
<div class="col-xs-6 text-right">
<i class="fa fa-clock-o"/> <field name="date"/>
</div>
</div>
<div class="row mt4">
<div class="col-xs-6">
<a class="btn btn-xs btn-success" name="order" string="Order" type="object" attrs="{'invisible': ['|',('state','=','confirmed'),('state','=','ordered')]}" groups="lunch.group_lunch_manager">
<i class="fa fa-phone"/>
</a>
<a class="btn btn-xs btn-info" name="confirm" string="Receive" type="object" attrs="{'invisible': [('state','!=','ordered')]}" groups="lunch.group_lunch_manager">
<i class="fa fa-check"/>
</a>
<a class="btn btn-xs btn-danger" name="cancel" string="Cancel" type="object" attrs="{'invisible': [('state','=','cancelled')]}" groups="lunch.group_lunch_manager">
<i class="fa fa-times"/>
</a>
</div>
<div class="col-xs-6">
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!--View for Your orders-->
<record id="lunch_order_view_tree" model="ir.ui.view">
<field name="name">lunch.order.tree</field>
<field name="model">lunch.order</field>
<field name="arch" type="xml">
<tree string="Orders Tree">
<field name="date"/>
<field name="order_line_ids"/>
<field name="state"/>
<field name="total" sum="Total"/>
</tree>
</field>
</record>
<record id="lunch_order_view_form" model="ir.ui.view">
<field name="name">lunch.order.form</field>
<field name="model">lunch.order</field>
<field name="arch" type="xml">
<form string='Orders Form' class="o_lunch">
<header>
<button name="%(action_lunch_order_line_lucky)d" type="action" string="Feeling Lucky" class="oe_highlight"/>
<field name='state' widget='statusbar' statusbar_visible='new,confirmed'/>
</header>
<sheet>
<field name="balance_visible" invisible="1"/>
<div class="oe_button_box" name="button_box">
<button class="oe_stat_button"
attrs="{'invisible': [('balance_visible', '=', False)]}"
name="%(lunch_cashmove_action_account)d"
icon="fa-money"
type="action">
<div class="o_field_widget o_stat_info">
<span class="o_stat_value"><field name="cash_move_balance" widget="monetary"/></span>
<span class="o_stat_text">Balance</span>
</div>
</button>
</div>
<group>
<group>
<field name='user_id' class="oe_inline" required='1'/>
<field name='date'/>
</group>
<div>
<div attrs="{'invisible': ['|',('state','!=','new'),('alerts','=',False)]}" class="alert alert-danger oe_edit_only">
<field name='alerts'/>
</div>
</div>
</group>
<div>
<field name='previous_order_widget' widget='previous_order' class='o_lunch_last_orders'/>
</div>
<separator string='Select your order'/>
<field name='order_line_ids'>
<tree string='List' editable='bottom'>
<field name='product_id'/>
<field name='note' />
<field name='price'/>
<field name='supplier' invisible="1"/>
<field name="state" invisible="1"/>
</tree>
</field>
<group class='oe_subtotal_footer oe_right'>
<field name='total' widget='monetary' options="{'currency_field': 'currency_id'}"/>
</group>
</sheet>
</form>
</field>
</record>
<!--View for Products-->
<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="name"/>
<field name="category_id"/>
<field name="supplier"/>
<field name="description"/>
<field name="price"/>
</tree>
</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="arch" type="xml">
<kanban class="o_kanban_mobile">
<field name="name"/>
<field name="category_id"/>
<field name="supplier"/>
<field name="description"/>
<field name="price"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title"><t t-esc="record.name.value"/></strong>
</div>
<span class="badge pull-right">
Price: <t t-esc="record.price.value"/>
</span>
</div>
<div>
<t t-esc="record.supplier.value"/>
</div>
<div>
<t t-esc="record.description.value"/>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="action_server_lunch_archive_product" model="ir.actions.server">
<field name="name">Lunch: Archive/Restore products</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_lunch_product" />
<field name="binding_model_id" ref="model_lunch_product" />
<field name="state">code</field>
<field name="code">records.toggle_active()</field>
</record>
<!-- Search for product -->
<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"/>
<field name="category_id"/>
<field name="supplier"/>
<field name="description"/>
<group expand="0" string="Group By">
<filter name="supplier" string="Vendor" context="{'group_by': 'supplier'}"/>
<filter name="category" string="Category" context="{'group_by': 'category_id'}"/>
<filter name="inactive" string="Archived" domain="[('active','=',False)]"/>
</group>
</search>
</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">
<header>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object"
class="oe_stat_button" icon="fa-archive">
<field name="active" widget="boolean_button"
options='{"terminology": "archive"}'/>
</button>
</div>
<group>
<group>
<field name='name'/>
<field name='category_id'/>
</group>
<group>
<field name='supplier'/>
<field name='price'/>
</group>
</group>
<label for='description'/>
<field name='description'/>
</sheet>
</form>
</field>
</record>
<!--view for alerts-->
<record id="lunch_alert_view_tree" model="ir.ui.view">
<field name="name">lunch.alert.tree</field>
<field name="model">lunch.alert</field>
<field name="arch" type="xml">
<tree>
<field name="message"/>
<field name="alert_type"/>
<field name='start_hour' widget='float_time'/>
<field name='end_hour' widget='float_time'/>
</tree>
</field>
</record>
<record id="view_lunch_alert_kanban" model="ir.ui.view">
<field name="name">lunch.alert.kanban</field>
<field name="model">lunch.alert</field>
<field name="arch" type="xml">
<kanban class="o_kanban_mobile">
<field name="message"/>
<field name="alert_type"/>
<field name='start_hour'/>
<field name='end_hour'/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="o_kanban_record_top">
<strong class="o_kanban_record_title"><t t-esc="record.message.value"/></strong>
</div>
<div class="row mb4">
<div class="col-xs-6">
Between: <t t-esc="record.start_hour.value"/> -
<t t-esc="record.end_hour.value"/>
</div>
<div class="col-xs-6">
<span class="badge pull-right">
<t t-esc="record.alert_type.value"/>
</span>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="lunch_alert_view_form" model="ir.ui.view">
<field name="name">lunch.alert.form</field>
<field name="model">lunch.alert</field>
<field name="arch" type="xml">
<form>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object"
class="oe_stat_button" icon="fa-archive">
<field name="active" widget="boolean_button"
options='{"terminology": "archive"}'/>
</button>
</div>
<group>
<group string="Schedule Date">
<field name="alert_type"/>
<field name="specific_day" attrs="{'invisible': [('alert_type','!=','specific')], 'required':[('alert_type','=','specific')]}"/>
</group>
<group string="Schedule Hour">
<field name='start_hour' widget='float_time'/>
<field name='end_hour' widget='float_time'/>
</group>
<group attrs="{'invisible': [('alert_type','!=','week')]}">
<group col="4">
<field name="monday"/>
<field name="tuesday"/>
<field name="wednesday"/>
<field name="thursday"/>
<field name="friday"/>
<field name="saturday"/>
<field name="sunday"/>
</group>
</group>
</group>
<group string='Message'>
<field name='message' nolabel='1' placeholder="Write the message you want to display during the defined period..."/>
</group>
</form>
</field>
</record>
</flectra>