<?xml version="1.0"?>
<openerp>
    <data>

        <!-- Top menu item -->
        <menuitem name="Point of Sale"
            id="menu_point_root"
            groups="group_pos_manager,group_pos_user"
            sequence="30"/>

        <record model="ir.ui.view" id="view_pos_pos_form">
            <field name="name">pos.order</field>
            <field name="model">pos.order</field>
            <field name="arch" type="xml">
                <form string="Point of Sale Orders">
                    <header>
                        <button name="%(action_pos_payment)d" string="Payment" class="oe_highlight" type="action" states="draft" context="{'pos_session_id' : session_id}"/>
                        <button name="action_invoice" string="Invoice" type="object" states="paid" attrs="{'readonly': [('partner_id','=',False)]}"/>
                        <button name="refund" string="Return Products" type="object" 
                            attrs="{'invisible':[('state','=','draft')]}"/>
                        <button name="%(action_report_pos_receipt)d" string="Reprint" type="action" states="paid,done,invoiced"/>
                        <field name="state" widget="statusbar" statusbar_visible="draft,paid,done" statusbar_colors='{"cancel":"red"}'/>
                    </header>
                    <sheet>
                    <group col="4" colspan="4">
                        <field name="name"/>
                        <field name="date_order"/>
                        <field name="session_id" required="1"/>
                        <field name="partner_id" on_change="onchange_partner_id(partner_id, context)" domain="[('customer', '=', True)]" context="{'search_default_customer':1}" attrs="{'readonly': [('state','=','invoiced')]}"/>
                    </group>
                    <notebook colspan="4">
                        <page string="Products">
                            <field name="lines" colspan="4" nolabel="1">
                                <tree string="Order lines" editable="bottom">
                                    <field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,qty,parent.partner_id)"/>
                                    <field name="qty" on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
                                    <field name="price_unit" on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
                                    <field name="discount"  on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
                                    <field name="price_subtotal"/>
                                    <field name="price_subtotal_incl"/>
                                </tree>
                                <form string="Order lines">
                                    <group col="4">
                                        <field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,qty,parent.partner_id)"/>
                                        <field name="qty" on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
                                        <field name="discount"  on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
                                        <field name="price_unit" on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
                                        <field name="price_subtotal" invisible="1"/>
                                        <field name="price_subtotal_incl" invisible="1"/>
                                        <field name="notice"/>
                                    </group>
                                </form>
                            </field>
                            <group class="oe_subtotal_footer oe_right" colspan="2" name="order_total">
                                <field name="amount_tax"/>
                                <div class="oe_subtotal_footer_separator oe_inline">
                                    <label for="amount_total" />
                                    <button name="button_dummy"
                                        states="draft" string="(update)" class="oe_edit_only oe_link"/>
                                </div>
                                <field name="amount_total" nolabel="1" class="oe_subtotal_footer_separator"/>
                            </group>
                            <div class="oe_clear"/>
                        </page>
                        <page string="Payments">
                            <field name="statement_ids" colspan="4" nolabel="1">
                                <tree editable="bottom" string="Statement lines">
                                    <field name="journal_id"/>
                                    <field name="statement_id"/>
                                    <field name="amount"/>
                                </tree>
                            </field>
                        </page>
                        <page string="Extra Info">
                            <group string="General Information">
                                <field name="company_id" groups="base.group_multi_company"/>
                                <field name="location_id" widget="selection" groups="stock.group_locations"/>
                                <field name="user_id" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'point_of_sale.group_pos_user']}"/>
                                <field name="pricelist_id" groups="product.group_sale_pricelist" domain="[('type','=','sale')]"/>
                                <field name="picking_id" readonly="1"/>
                                <field name="pos_reference"/>
                            </group>
                            <group string="Accounting Information">
                                <field name="sale_journal" domain="[('type','=','sale')]"/>
                                <field name="invoice_id" readonly="1"
                                    attrs="{'invisible':[('state','&lt;&gt;','invoiced')]}"/>
                                <button name="%(pos_invoice_report)d" string="Re-Print"
                                    icon="gtk-print" type="action" attrs="{'invisible':[('state','&lt;&gt;','invoiced')]}"/>
                                <field name="account_move" readonly="1"
                                    attrs="{'invisible':[('state','&lt;&gt;','done')]}"/>
                            </group>
                        </page>
                        <page string="Notes" >
                            <field name="note"/>
                        </page>
                    </notebook>
                </sheet>
                </form>
            </field>
        </record>
        <record model="ir.actions.act_window" id="action_pos_pos_form">
            <field name="name">Orders</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">pos.order</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="view_id" eval="False"/>
            <field name="domain">[]</field>
            <field name="help" type="html">
              <p class="oe_view_nocontent_create">
                Click to create a new order.
              </p><p>
                Use this menu to browse previous orders. To record new
                orders, you may use the menu <i>Your Session</i> for
                the touchscreen interface.
              </p>
            </field>
        </record>
        <record model="ir.ui.view" id="view_pos_order_tree">
            <field name="name">Orders</field>
            <field name="model">pos.order</field>
            <field name="arch" type="xml">
                <tree string="POS Orders" colors="blue:state == 'draft';gray:state in ('done','cancel');black:state not in('done','cancel')">
                    <field name="name"/>
                    <field name="pos_reference"/>
                    <field name="partner_id"/>
                    <field name="date_order"/>
                    <field name="user_id"/>
                    <field name="invoice_id"/>
                    <field name="amount_total" sum="Amount total"/>
                    <field name="company_id" groups="base.group_multi_company"/>
                    <field name="state"/>
                    <field name="session_id" />
                </tree>
            </field>
        </record>
        <record id="view_pos_order_filter" model="ir.ui.view">
            <field name="name">pos.order.list.select</field>
            <field name="model">pos.order</field>
            <field name="arch" type="xml">
                <search string="Search Sales Order">
                    <field name="name" string="Sales Order"/>
                    <field name="date_order"/>
                    <field name="pos_reference"/>
                    <filter icon="terp-document-new" string="New" domain="[('state','=','draft')]"/>
                    <filter icon="gtk-apply" string="Done" domain="[('state','in',('paid','invoiced','done'))]"/>
                    <filter icon="terp-check" string="Invoiced" domain="[('state','=','invoiced')]"/>
                    <filter icon="gtk-convert" string="Posted" domain="[('state','=','done')]"/>
                    <field name="user_id"/>
                    <group expand="0" string="Group By">
                        <filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
                        <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
                        <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
                        <filter string="Order Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
                    </group>
                </search>
            </field>
        </record>

        <menuitem name="Daily Operations" id="menu_point_of_sale" parent="menu_point_root" sequence="10"/>
        <menuitem parent="menu_point_of_sale" id="menu_point_ofsale" action="action_pos_pos_form" sequence="2" groups="group_pos_manager,group_pos_user"/>
        <menuitem name="Products" id="menu_point_of_sale_product" parent="menu_point_root" sequence="15" />

        <record id="product_template_action" model="ir.actions.act_window">
            <field name="name">Products</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">product.template</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form,kanban</field>
            <field name="context" eval="{}"/>
            <field name="domain" eval="[('available_in_pos','&lt;&gt;',False)]"/>
            <field name="search_view_id" eval="False"/> <!-- Force empty -->
            <field name="view_id" eval="False"/> <!-- Force empty -->
            <field name="help" type="html">
              <p class="oe_view_nocontent_create">
                Click to add a new product.
              </p><p>
                You must define a product for everything you sell through
                the point of sale interface.
              </p><p>
                Do not forget to set the price and the point of sale category
                in which it should appear. If a product has no point of sale
                category, you can not sell it through the point of sale
                interface.
              </p>
            </field>
        </record>
        <menuitem
            action="product_template_action"
            id="menu_pos_products"
            parent="menu_point_of_sale_product" sequence="2"/>

        <record model="ir.ui.view" id="view_pos_order_line">
            <field name="name">Sale lines</field>
            <field name="model">pos.order.line</field>
            <field name="arch" type="xml">
                <tree string="POS Order lines">
                    <field name="product_id" readonly="1"/>
                    <field name="qty" readonly="1" sum="Total qty"/>
                    <field name="discount" readonly="1"/>
                    <field name="price_unit" readonly="1"/>
                    <field name="price_subtotal" readonly="1" sum="Sum of subtotals"/>
                    <field name="price_subtotal_incl" readonly="1" sum="Sum of subtotals"/>
                    <field name="create_date" readonly="1"/>
                </tree>
            </field>
        </record>

        <record model="ir.ui.view" id="view_pos_order_line_form">
            <field name="name">Sale line</field>
            <field name="model">pos.order.line</field>
            <field name="arch" type="xml">
                <form string="POS Order line">
                    <group col="4">
                        <field name="product_id" />
                        <field name="qty" />
                        <field name="discount" />
                        <field name="price_unit" />
                        <field name="create_date" />
                    </group>
                </form>
            </field>
        </record>

        <record model="ir.actions.act_window" id="action_pos_order_line">
            <field name="name">Sale line</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">pos.order.line</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree</field>
            <field name="view_id" ref="view_pos_order_line"/>
        </record>

        <record model="ir.actions.act_window" id="action_pos_order_line_form">
            <field name="name">Sale line</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">pos.order.line</field>
            <field name="view_type">form</field>
            <field name="view_mode">form,tree</field>
            <field name="view_id" ref="view_pos_order_line_form"/>
        </record>

        <record model="ir.actions.act_window" id="action_pos_order_line_day">
            <field name="name">Sale line</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">pos.order.line</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree</field>
            <field name="view_id" ref="view_pos_order_line"/>
            <field name="domain">[('create_date', '&gt;=', time.strftime('%Y-%m-%d 00:00:00')),('create_date', '&lt;=', time.strftime('%Y-%m-%d 23:59:59'))]</field>
        </record>



        <!-- report -->

        <record model="ir.ui.view" id="view_pos_trans_user_form">
            <field name="name">report.trans.pos.user.form</field>
            <field name="model">report.transaction.pos</field>
            <field name="arch" type="xml">
                <form string="POS ">
                    <group col="4">
                        <field name="user_id"/>
                        <field name="journal_id"/>
                        <field name="jl_id"/>
                        <field name="date_create" widget="date"/>
                        <field name="no_trans"/>
                        <field name="amount"/>
                        <field name="invoice_id"/>
                    </group>
                </form>
            </field>
        </record>


        <record model="ir.ui.view" id="view_trans_pos_user_tree">
            <field name="name">Sales by user</field>
            <field name="model">report.transaction.pos</field>
            <field name="arch" type="xml">
                <tree string="POS">
                    <field name="date_create" widget="date" />
                    <field name="user_id"/>
                    <field name="journal_id"/>
                    <field name="jl_id"/>
                    <field name="no_trans" sum="Total Transaction"/>
                    <field name="amount" sum="Amount total"/>
                    <field name="product_nb" />
                    <field name="invoice_id"/>
                    <field name="disc"/>
                </tree>
            </field>
        </record>

        <record model="ir.ui.view" id="view_report_transaction_pos_calendar">
            <field name="name">report.transaction.pos.calendar</field>
            <field name="model">report.transaction.pos</field>
            <field eval="2" name="priority"/>
            <field name="arch" type="xml">
                <calendar color="user_id" date_start="date_create" string="POS Report">
                    <field name="journal_id"/>
                    <field name="amount"/>
                </calendar>
            </field>
         </record>

         <record model="ir.ui.view" id="view_report_transaction_pos_graph">
            <field name="name">report.transaction.pos.graph</field>
            <field name="model">report.transaction.pos</field>
            <field eval="2" name="priority"/>
            <field name="arch" type="xml">
                <graph  type="bar" string="POS Report">
                    <field name="user_id" />
                    <field name="amount"/>
                    <field group="True" name="journal_id"/>
                </graph>
            </field>
         </record>

        <record model="ir.actions.act_window" id="action_trans_pos_tree_today">
            <field name="name">Sales by day</field>
            <field name="res_model">report.transaction.pos</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,calendar,form,graph</field>
            <field name="domain">[('date_create','=',time.strftime('%Y-%m-%d'))]</field>
        </record>


        <record model="ir.actions.act_window" id="action_trans_pos_tree_month">
            <field name="name">Sales by month</field>
            <field name="res_model">report.transaction.pos</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,calendar,form,graph</field>
            <field name="domain">[('date_create','like',time.strftime('%Y-%m'))]</field>
        </record>


        <record model="ir.actions.act_window" id="action_trans_pos_tree">
            <field name="name">Sales by user</field>
            <field name="res_model">report.transaction.pos</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,calendar,form,graph</field>
            <field name="view_id" ref="view_trans_pos_user_tree"/>
        </record>


        <record model="ir.ui.view" id="view_report_sales_by_user_pos_form">
            <field name="name">report.sales.by.user.pos.form</field>
            <field name="model">report.sales.by.user.pos</field>
            <field name="arch" type="xml">
                <form string="POS ">
                    <group col="4">
                        <field name="date_order" widget="date"/>
                        <field name="qty"/>
                        <field name="amount"/>
                        <field name="user_id"/>
                    </group>
                </form>
            </field>
        </record>


        <record model="ir.ui.view" id="view_report_sales_by_user_pos_tree">
            <field name="name">report.sales.by.user.pos.tree</field>
            <field name="model">report.sales.by.user.pos</field>
            <field name="arch" type="xml">
                <tree string="POS">
                    <field name="date_order" widget="date"/>
                    <field name="qty"/>
                    <field name="amount"/>
                    <field name="user_id"/>
                </tree>
            </field>
        </record>

        <record model="ir.ui.view" id="view_report_sales_by_user_pos_calendar">
            <field name="name">report.sales.by.user.pos.calendar</field>
            <field name="model">report.sales.by.user.pos</field>
            <field eval="2" name="priority"/>
            <field name="arch" type="xml">
                <calendar color="user_id" date_start="date_order" string="POS Report">
                    <field name="qty"/>
                    <field name="amount" />
                </calendar>
            </field>
         </record>

        <record model="ir.ui.view" id="view_report_sales_by_user_pos_graph">
            <field name="name">report.sales.by.user.pos.graph</field>
            <field name="model">report.sales.by.user.pos</field>
            <field eval="2" name="priority"/>
            <field name="arch" type="xml">
                <graph  type="bar" string="Sales by User">
                    <field name="user_id" />
                    <field name="amount"/>
                </graph>
            </field>
         </record>

         <record model="ir.actions.act_window" id="action_report_sales_by_user_pos_today">
            <field name="name">Sales by User</field>
            <field name="res_model">report.sales.by.user.pos</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,calendar,form,graph</field>
            <field name="domain">[('date_order','=',time.strftime('%Y-%m-%d'))]</field>
         </record>


        <!-- Sales of user by month -->

        <record model="ir.ui.view" id="view_report_sales_by_user_pos_month_form">
            <field name="name">report.sales.by.user.pos.month.form</field>
            <field name="model">report.sales.by.user.pos.month</field>
            <field name="arch" type="xml">
                <form string="POS ">
                    <group col="4">
                        <field name="date_order" widget="date"/>
                        <field name="qty"/>
                        <field name="amount"/>
                        <field name="user_id"/>
                    </group>
                </form>
            </field>
        </record>


        <record model="ir.ui.view" id="view_report_sales_by_user_pos_month_tree">
            <field name="name">report.sales.by.user.pos.month.tree</field>
            <field name="model">report.sales.by.user.pos.month</field>
            <field name="arch" type="xml">
                <tree string="POS">
                    <field name="date_order" widget="date"/>
                    <field name="qty"/>
                    <field name="amount"/>
                    <field name="user_id"/>
                </tree>
            </field>
        </record>

        <record model="ir.ui.view" id="view_report_sales_by_user_pos_month_calendar">
            <field name="name">report.sales.by.user.pos.month.calendar</field>
            <field name="model">report.sales.by.user.pos.month</field>
            <field eval="2" name="priority"/>
            <field name="arch" type="xml">
                <calendar color="user_id" date_start="date_order" string="POS Report">
                    <field name="qty"/>
                    <field name="amount" />
                </calendar>
            </field>
         </record>

        <record model="ir.ui.view" id="view_report_sales_by_user_pos_month_graph">
            <field name="name">report.sales.by.user.pos.month.graph</field>
            <field name="model">report.sales.by.user.pos.month</field>
            <field eval="2" name="priority"/>
            <field name="arch" type="xml">
                <graph  type="bar" string="Sales by User">
                    <field name="user_id" />
                    <field name="amount"/>
                </graph>
            </field>
         </record>


         <record model="ir.actions.act_window" id="action_report_sales_by_user_pos_month">
            <field name="name">Sales by User Monthly</field>
            <field name="res_model">report.sales.by.user.pos.month</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,calendar,form,graph</field>
            <field name="domain">[('date_order','like',time.strftime('%Y-%m'))]</field>
        </record>



        <!-- Product Public Categories -->
        <record id="product_pos_category_form_view" model="ir.ui.view">
            <field name="name">pos.category.form</field>
            <field name="model">pos.category</field>
            <field name="arch" type="xml">
                <form string="Pos Categories">
                    <sheet>
                        <field name="image_medium" widget='image' class="oe_avatar oe_right"/>
                        <div class="oe_left">
                            <group>
                                <field name="name"/>
                                <field name="parent_id"/>
                                <field name="sequence"/>
                            </group>
                        </div>
                    </sheet>
                </form>
            </field>
        </record>
        <record id="product_pos_category_tree_view" model="ir.ui.view">
            <field name="name">pos.category.tree</field>
            <field name="model">pos.category</field>
            <field name="field_parent" eval="False"/>
            <field name="arch" type="xml">
                <tree string="Product Product Categories">
                    <field name="sequence" widget="handle"/>
                    <field name="complete_name"/>
                </tree>
            </field>
        </record>
        <record id="product_pos_category_action" model="ir.actions.act_window">
            <field name="name">Pos Product Categories</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">pos.category</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="view_id" eval="False"/>
            <field name="help" type="html">
              <p class="oe_view_nocontent_create">
                Click to define a new category.
              </p><p>
                Categories are used to browse your products through the
                touchscreen interface.
              </p><p>
                If you put a photo on the category, the layout of the
                touchscreen interface will automatically. We suggest not to put
                a photo on categories for small (1024x768) screens.
              </p>
            </field>
        </record>
        <menuitem action="product_pos_category_action" id="menu_product_pos_category" parent="menu_point_of_sale_product" sequence="0" />
        <!-- END -->

        <record id="action_edit_ean" model="ir.actions.act_window">
            <field name="name">Edit Ean</field>
            <field name="res_model">pos.ean_wizard</field>
            <field name="target">new</field>
            <field name="view_type">form</field>
            <field name="view_mode">form</field>
        </record>

        <record id="product_template_form_view" model="ir.ui.view">
            <field name="name">product.template.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="website_and_pos" position="inside">
                    <group name="pos" string="Point of Sale">
                        <field name="pos_categ_id"/>
                        <field name="available_in_pos"/>
                        <field name="to_weight" />
                        <field name="income_pdt"/>
                        <field name="expense_pdt"/>
                    </group>
                </group>
            </field>
        </record>
        <record id="product_template_form_view_inherit_ean" model="ir.ui.view">
            <field name="name">product.template.only.form.inherit.ean</field>
            <field name="model">product.template</field>
            <field name="inherit_id" ref="product.product_template_only_form_view"/>
            <field name="arch" type="xml">
                <field name="ean13" position="after">
                    <button colspan="2" name="%(action_edit_ean)d" type="action" string="Set a Custom EAN"
                            attrs="{'invisible': [('product_variant_count', '>', 1)]}" class="oe_link oe_edit_only"/>
                </field>
            </field>
        </record>
        <record id="product_normal_form_view_inherit_ean" model="ir.ui.view">
            <field name="name">product.form.inherit.ean</field>
            <field name="model">product.product</field>
            <field name="inherit_id" ref="product.product_normal_form_view"/>
            <field name="arch" type="xml">
                <field name="ean13" position="after">
                    <button colspan="2" name="%(action_edit_ean)d" type="action" string="Set a Custom EAN" class="oe_link oe_edit_only"/>
                </field>
            </field>
        </record>
        <!-- END -->

        <menuitem name="Configuration" parent="menu_point_root"
            id="menu_point_config_product" sequence="25" groups="group_pos_manager"/>

        <record id="action_account_journal_form" model="ir.actions.act_window">
            <field name="name">Payment Methods</field>
            <field name="res_model">account.journal</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="context" eval="{'default_journal_user': 1, 'default_type': 'cash'}"/>
            <field name="domain">[('journal_user','=', 1)]</field>
            <field name="help" type="html">
              <p class="oe_view_nocontent_create">
                Click to add a payment method.
              </p><p>
                Payment methods are defined by accounting journals having the
                field <i>PoS Payment Method</i> checked. In order to be useable
                from the touchscreen interface, you must set the payment method
                on the <i>Point of Sale</i> configuration.
              </p>
            </field>
        </record>

        <menuitem action="action_account_journal_form"
            id="menu_action_account_journal_form_open"
            parent="menu_point_config_product"
            sequence="20"/>

        <record model="ir.ui.view" id="view_pos_order_tree_all_sales_lines">
            <field name="name">POS Sales Lines</field>
            <field name="model">pos.order.line</field>
            <field name="arch" type="xml">
                <tree string="POS Orders lines">
                    <field name="order_id" />
                    <field name="create_date" />
                    <field name="product_id" />
                    <field name="qty" />
                    <field name="price_unit" />
                </tree>
            </field>
        </record>
         <record model="ir.actions.act_window" id="action_pos_all_sales_lines">
            <field name="name">All sales lines</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">pos.order.line</field>
            <field name="view_type">form</field>
            <field name="view_id" ref="view_pos_order_tree_all_sales_lines" />
        </record>

        <!--  Miscellaneous Operations/Reporting -->
        <menuitem name="Point of Sale" parent="base.menu_reporting" id="menu_point_rep" sequence="50" groups="group_pos_manager"/>
        <!-- Invoice -->

        <record model="ir.actions.act_window" id="action_pos_invoice">
            <field name="name">Invoices</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">account.invoice</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="domain">[('origin','like','POS')]</field>
        </record>

        <menuitem icon="STOCK_PRINT" action="action_report_pos_details"
                id="menu_pos_details" parent="menu_point_rep" sequence="6" />

        <record model="ir.actions.act_url" id="action_pos_pos">
            <field name="name">Start Point of Sale</field>
            <field name="url">/pos/web/</field>
            <field name="target">self</field>
        </record>

        <!-- Top menu item -->
        <record model="ir.ui.view" id="view_pos_config_form">
            <field name="name">pos.config.form.view</field>
            <field name="model">pos.config</field>
            <field name="arch" type="xml">
                <form string="Point of Sale Configuration">
                    <header>
                        <button string="Set to Active" name="set_active" type="object" states="inactive,deprecated"/>
                        <button string="Set to Inactive" name="set_inactive" type="object" states="active" />
                        <button string="Set to Deprecated" name="set_deprecate" type="object" states="active,inactive" />
                        <div class="oe_right">
                            <field name="state" widget="statusbar" statusbar_visible="active,inactive,deprecated" statusbar_colors='{"deprecated" : "red"}' nolabel="1"/>
                        </div>
                    </header>

                    <sheet>
                        <label for="name" class="oe_edit_only"/>
                        <h1>
                            <field name="name"/>
                        </h1>
                        <group col="4">
                            <field name="picking_type_id" widget="selection" groups="stock.group_locations" 
                                on_change="onchange_picking_type_id(picking_type_id)"/>
                            <field name="stock_location_id" groups="stock.group_locations"/>
                            <field name="company_id" groups="base.group_multi_company"/>
                            <field name="pricelist_id" groups="product.group_sale_pricelist"/>
                            <field name="journal_id" widget="selection"/>
                            <field name="group_by" groups="account.group_account_user"/>
                            <field name="sequence_id" readonly="1" groups="base.group_no_one"/>
                            <field name="currency_id" invisible="1"/>
                        </group>
                        <separator string="Available Payment Methods" colspan="4"/>
                        <field name="journal_ids" colspan="4" nolabel="1" context="{'default_journal_user': 1}">
                            <tree string="Journals">
                                <field name="code" />
                                <field name="name" />
                                <field name="type" />
                                <field name="cash_control" />
                            </tree>
                        </field>
                        <group string="Features" >
                            <group>
                                <field name="iface_vkeyboard" />
                                <field name="iface_invoicing" />
                            </group>
                            <group>
                                <field name="iface_big_scrollbars" />
                            </group>
                        </group>
                        <group string="Hardware Proxy" >
                            <field name="proxy_ip" />
                            <field name="iface_print_via_proxy" />
                            <field name="iface_scan_via_proxy" />
                            <field name="iface_electronic_scale" />
                            <field name="iface_cashdrawer" />
                        </group>
                        <group string="Receipt" >
                            <field name="receipt_header" placeholder="A custom receipt header message"/>
                            <field name="receipt_footer" placeholder="A custom receipt footer message"/>
                        </group>
                        <group string="Barcode Types" col="1">
                            <p>
                                Barcode Patterns allow to match barcodes to actions or to embed information such as price and quantity in the barcode.
                                Barcode Patterns only work with EAN13 barcodes.
                            </p>
                            <p> 
                                Each type of barcode accepts a list of patterns seprated by commas. A scanned 
                                barcode will be attributed to a type if it matches one of its patterns. 
                                The patterns take the form of EAN13 barcodes. Numbers in the pattern must match
                                the number in the scanned barcode. A 'x' or a '*' in a pattern will match
                                any one number. If the patterns are shorter than EAN13 barcodes, they are assumed
                                to be prefixes and match at the beginning. Weight, Price and Discount patterns also
                                tell how the weight, price or discount is encoded in the barcode. 'N' indicate the
                                positions where the integer part is en encoded, and 'D' where the decimals are encoded.
                                If multiple pattern match one barcode, the longest pattern with the less 'x' or '*' is
                                considered the matching one. If a barcode matches no pattern it will not be found in
                                the POS.
                            </p>
                            <group col="4">

                                <field name="barcode_product" />
                                <field name="barcode_cashier" />
                                <field name="barcode_customer" />
                                <field name="barcode_weight" />
                                <field name="barcode_discount" />
                                <field name="barcode_price" />
                            </group>
                        </group>
                    </sheet>

                </form>
            </field>
        </record>

        <record model="ir.ui.view" id="view_pos_config_tree">
            <field name="name">pos.config.tree.view</field>
            <field name="model">pos.config</field>
            <field name="arch" type="xml">
                <tree string="Point of Sale Configuration" colors="grey:state == 'inactive'">
                    <field name="name" />
                    <field name="stock_location_id" groups="stock.group_locations"/>
                    <field name="state" />
                </tree>
            </field>
        </record>

        <record model="ir.ui.view" id="view_pos_config_search">
            <field name="name">pos.config.search.view</field>
            <field name="model">pos.config</field>
            <field name="arch" type="xml">
                <search string="Point of Sale Config">
                    <field name="name" />
                    <filter string="Active" domain="[('state', '=', 'active')]" />
                    <filter string="Inactive" domain="[('state', '=', 'inactive')]" />
                    <field name="stock_location_id" groups="stock.group_locations" />
                </search>
            </field>
        </record>

        <!-- Sessions -->

        <act_window
            id="act_pos_config_sessions"
            name="Sessions"
            src_model="pos.config"
            res_model="pos.session"
            domain="[('config_id', '=', active_id)]" />

        <record model="ir.actions.act_window" id="action_pos_config_pos">
            <field name="name">Point of Sales</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">pos.config</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="search_view_id" ref="view_pos_config_search" />
        </record>

        <menuitem
            parent="menu_point_config_product"
            action="action_pos_config_pos"
            id="menu_pos_config_pos"
            groups="group_pos_manager"/>

        <act_window
            id="act_pos_session_orders"
            name="Orders"
            src_model="pos.session"
            res_model="pos.order"
            context="{'search_default_session_id': active_id, 'default_session_id' : active_id }" />



        <record model="ir.ui.view" id="view_pos_session_form">
            <field name="name">pos.session.form.view</field>
            <field name="model">pos.session</field>
            <field name="arch" type="xml">
                <form string="Point of Sale Session">
                    <header>
                        <button name="open_cb" type="object" string="Validate &amp; Open Session" states="opening_control" class="oe_highlight"/>
                        <button name="open_frontend_cb" type="object" string="Continue Selling" states="opened"
                            class="oe_highlight"/>
                        <button name="cashbox_control" type="workflow" string="End of Session"
                            attrs="{'invisible' : ['|', ('cash_control', '=', False),('state', '!=', 'opened')]}" 
                            class="oe_highlight" />
                        <button name="close" type="workflow" string="Validate Closing &amp; Post Entries"
                            attrs="{'invisible' : ['|', ('cash_control', '=', True),('state', '!=', 'opened')]}"
                            class="oe_highlight" />
                        <button name="close" type="workflow" string="Validate Closing &amp; Post Entries" states="closing_control"
                            class="oe_highlight" />
                        
                        <field name="state" widget="statusbar" statusbar_visible="opening_control,opened,closing_control,closed" nolabel="1" />
                        
                    </header>
                    <sheet>
                        <div class="oe_right oe_button_box">
                            <button class="oe_stat_button" name="%(action_pos_box_in)d"
                                type="action" states="opened,closing_control" icon="fa-level-down">
                                <div>Put<br/>Money In</div>
                            </button>
                            <button class="oe_stat_button" name="%(action_pos_box_out)d"
                                type="action" states="opened,closing_control" icon="fa-level-up">
                                <div>Take<br/>Money Out</div>
                            </button>
                        </div>
                        <h1 class="oe_title">
                            Session:
                            <field name="name" attrs="{'invisible': [('name','=','/')]}" class="oe_inline"/>
                        </h1>
                        <group>
                            <field name="cash_control" invisible="1" />
                            <group>
                                <field name="user_id" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'point_of_sale.group_pos_manager', 'base.group_sale_manager']}"/>
                                <field name="currency_id" invisible="1"/>
                                <field name="config_id"/>
                            </group>
                            <group>
                                <field name="start_at" attrs="{'invisible' : [('state', '=', 'opening_control')]}"/>
                                <field name="stop_at" attrs="{'invisible' : [('state', '!=', 'closed')]}"/>
                            </group>
                            <newline/>
                            <group string="Opening Cash Control" attrs="{'invisible' : [('cash_control', '=', False)]}">
                                <field name="opening_details_ids" nolabel="1" colspan="2" attrs="{'readonly' : [('state', '!=', 'opening_control')]}">
                                    <tree string="Opening Cashbox Lines" editable="bottom">
                                        <field name="pieces" readonly="1" />
                                        <field name="number_opening" on_change="on_change_sub_opening(pieces, number_opening)" />
                                        <field name="subtotal_opening" string="Opening Subtotal" sum="Total"/>
                                    </tree>
                                </field>
                            </group>
                            <group string="Closing Cash Control" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '=', 'opening_control')]}">
                                <field name="details_ids" nolabel="1" colspan="2" attrs="{'readonly' : [('state', '=', 'closed')]}">
                                    <tree string="Cashbox Lines" editable="bottom">
                                        <field name="pieces" readonly="1" />
                                        <field name="number_closing" on_change="on_change_sub_closing(pieces, number_closing)"/>
                                        <field name="subtotal_closing" string="Closing Subtotal" sum="Total"/>
                                    </tree>
                                </field>
                            </group>

                            <div attrs="{'invisible' : [('cash_control', '=', False)]}">
                                <group class="oe_subtotal_footer oe_right">
                                    <field name="cash_register_balance_start" readonly="1" string="Opening Balance" class="oe_subtotal_footer_separator" widget="monetary" options="{'currency_field': 'currency_id'}"/>
                                    <label for="cash_register_total_entry_encoding" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="+ Transactions" class="oe_force_bold oe_opening_total"/>
                                    <field name="cash_register_total_entry_encoding" nolabel="1" attrs="{'invisible' : [('state', '=', 'opening_control')]}" class="oe_bold oe_pos_total" widget="monetary" options="{'currency_field': 'currency_id'}"/>
                                    <label for="cash_register_balance_end" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="= Theoretical Closing Balance" class="oe_force_bold oe_opening_total"/>
                                    <field name="cash_register_balance_end" nolabel="1" attrs="{'invisible' : [('state', '=', 'opening_control')]}" class="oe_bold oe_pos_total" widget="monetary" options="{'currency_field': 'currency_id'}"/>
                                </group>
                                <div class="oe_clear"/>
                                <div attrs="{'invisible' : ['|', ('cash_journal_id', '=', False), ('state', '!=', 'opening_control')]}" class="oe_view_nocontent" groups="point_of_sale.group_pos_manager">
                                    <p class="oe_view_nocontent_create">
                                    You can define another list of available currencies on the
                                    <i>Cash Registers</i> tab of the <b><field name="cash_journal_id" class="oe_inline"/></b>
                                    payment method.
                                    </p>
                                </div>
                            </div>
                            <div>
                                <group class="oe_subtotal_footer oe_right" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '=', 'opening_control')]}">
                                    <field name="cash_register_balance_end_real" string="Real Closing Balance" class="oe_subtotal_footer_separator" widget="monetary" options="{'currency_field': 'currency_id'}"/>
                                </group>
                                <group/>
                                <group/>
                                <group class="oe_subtotal_footer oe_right" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '=', 'opening_control')]}">
                                    <field name="cash_register_difference" class="oe_subtotal_footer_separator oe_right oe_pos_total oe_pos_difference" widget="monetary" options="{'currency_field': 'currency_id'}"/>
                                </group>
                            </div>
                        </group>
                        <separator string="Summary by Payment Methods" attrs="{'invisible' : [('state', '=', 'opening_control')]}"/>
                        <field name="statement_ids" attrs="{'invisible' : [('state', '=', 'opening_control')]}">
                            <tree string="Statements">
                                <field name="name" />
                                <field name="journal_id" />
                                <field name="balance_start" />
                                <field name="total_entry_encoding" />
                                <field name="balance_end_real" />
                                <field name="difference" />
                                <field name="currency" groups="base.group_multi_currency" />
                                <field name="state" />
                            </tree>
                        </field>

                    </sheet>
                </form>
            </field>
        </record>

        <record model="ir.ui.view" id="view_pos_session_tree">
            <field name="name">pos.session.tree.view</field>
            <field name="model">pos.session</field>
            <field name="arch" type="xml">
                <tree string="Point of Sale Session">
                    <field name="config_id" />
                    <field name="name" />
                    <field name="user_id" />
                    <field name="start_at" />
                    <field name="stop_at" />
                    <field name="state" />
                </tree>
            </field>
        </record>

        <record model="ir.ui.view" id="view_pos_session_search">
            <field name="name">pos.session.search.view</field>
            <field name="model">pos.session</field>
            <field name="arch" type="xml">
                <search string="Point of Sale Session">
                    <field name="name" />
                    <filter string="Open" domain="[('state', '=', 'opened')]" />
                    <separator/>
                    <filter string="Today" domain="[('start_at', '>=', datetime.datetime.combine(context_today(), datetime.time(0,0,0)))]" />
                    <field name="config_id" />
                    <field name="user_id" />
                    <group expand="0" string="Group By">
                        <filter string="User" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
                        <filter string="Point of Sales" domain="[]" context="{'group_by': 'user_id'}" />
                    </group>
                </search>
            </field>
        </record>


        <record model="ir.actions.act_window" id="action_pos_session">
            <field name="name">All Sessions</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">pos.session</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="search_view_id" ref="view_pos_session_search" />
            <field name="help" type="html">
              <p class="oe_view_nocontent_create">
                Click to start a new session.
              </p><p>
                A session is a period of time, usually one day, during which
                you sell through the point of sale. The user has to check the
                currencies in your cash registers at the beginning and the end
                of each session.
              </p><p>
                Note that you may use the menu <i>Your Session</i>
                to quickly open a new session.
              </p>
            </field>
        </record>

        <menuitem
            parent="menu_point_of_sale"
            action="action_pos_session"
            id="menu_pos_session_all"
            sequence="1"
            groups="group_pos_manager"/>

        <record id="view_pos_order_filter" model="ir.ui.view">
            <field name="name">pos.order.list.select</field>
            <field name="model">pos.order</field>
            <field name="arch" type="xml">
                <search string="Search Sales Order">
                    <field name="name"/>
                    <field name="date_order"/>
                    <filter icon="terp-document-new" string="New" domain="[('state','=','draft')]"/>
                    <filter icon="gtk-apply" string="Done" domain="[('state','in',('paid','invoiced','done'))]"/>
                    <filter icon="terp-check" string="Invoiced" domain="[('state','=','invoiced')]"/>
                    <filter icon="gtk-convert" string="Posted" domain="[('state','=','done')]"/>
                    <field name="user_id"/>
                    <field name="session_id"/>
                    <group expand="0" string="Group By">
                        <filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
                        <filter string="Salesman" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
                        <filter string="Session" icon="terp-personal" domain="[]" context="{'group_by':'session_id'}"/>
                        <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
                        <filter string="Order Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
                    </group>
                </search>
            </field>
        </record>

        <menuitem action="action_pos_session_opening"
            parent="menu_point_of_sale"
            id="menu_pos_session_opening" sequence="0"/>

        <record model="ir.ui.view" id="pos_ean13_generator">
            <field name="name">pos.ean_wizard</field>
            <field name="model">pos.ean_wizard</field>
            <field name="arch" type="xml">
                <form string="Ean13 Generator">  
                    <p class="oe_grey">
                        Enter a reference, it will be converted
                        automatically to a valid EAN number.
                    </p>
                    <group>
                        <field name="ean13_pattern" class="oe_inline"/>
                    </group>
                    <footer>
                        <button name="sanitize_ean13" type="object" string="Apply" class="oe_highlight"/> or 
                         <button icon="gtk-stop" special="cancel"
                            string="Cancel" class="oe_link"/>
                    </footer>
                </form>
            </field>
        </record>


    </data>
</openerp>
