groups="group_pos_manager,group_pos_user"
sequence="30"/>
- <record id="categ_others" model="pos.category">
- <field name="name">Others</field>
- </record>
-
<record model="ir.ui.view" id="view_pos_pos_form">
<field name="name">pos.order</field>
<field name="model">pos.order</field>
<div class="oe_subtotal_footer_separator oe_inline">
<label for="amount_total" />
<button name="button_dummy"
- states="draft" string="(update)" type="object" class="oe_edit_only oe_link"/>
+ states="draft" string="(update)" class="oe_edit_only oe_link"/>
</div>
<field name="amount_total" nolabel="1" class="oe_subtotal_footer_separator"/>
</group>
<page string="Extra Info">
<group string="General Information">
<field name="company_id" groups="base.group_multi_company"/>
- <field name="shop_id" widget="selection"/>
- <field name="user_id" context="{'default_groups_ref': ['point_of_sale.group_pos_user']}"/>
+ <field name="warehouse_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"/>
<p class="oe_view_nocontent_create">
Click to create a new order.
</p><p>
- Use this menu to browse your preceeding orders. To record new
- orders, you should better use the menu <i>Your Session</i> for
+ 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>
<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 Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
+ <filter string="Order Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
</group>
</search>
</field>
<field name="res_model">product.product</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,kanban</field>
- <field name="context" eval="{'default_pos_categ_id': ref('point_of_sale.categ_others')}"/>
- <field name="domain" eval="[('pos_categ_id','<>',False)]"/>
+ <field name="context" eval="{}"/>
+ <field name="domain" eval="[('available_in_pos','<>',False)]"/>
<field name="view_id" ref="product.product_product_tree_view"/>
<field name="search_view_id" ref="product.product_search_form_view"/>
<field name="help" type="html">
<group name="sale" position="inside">
<group name="pos" string="Point of Sale">
<field name="available_in_pos"/>
- <field name="pos_categ_id"/>
<field name="to_weight" />
<field name="income_pdt"/>
<field name="expense_pdt"/>
</record>
<!-- Categories tree view -->
- <record id="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="Product PoS Categories" version="7.0">
- <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="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 PoS Categories">
- <field name="sequence" invisible="1"/>
- <field name="complete_name"/>
- </tree>
- </field>
- </record>
- <record id="pos_category_action" model="ir.actions.act_window">
- <field name="name">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="pos_category_action" id="menu_pos_category" parent="menu_point_of_sale_product" sequence="0" />
+ <menuitem action="product.product_public_category_action" id="menu_product_public_category" parent="menu_point_of_sale_product" sequence="0" />
<!-- END -->
<menuitem name="Configuration" parent="menu_point_root"
<menuitem icon="STOCK_PRINT" action="action_report_pos_details"
id="menu_pos_details" parent="menu_point_rep" sequence="6" />
- <record model="ir.actions.client" id="action_pos_pos">
+ <record model="ir.actions.act_url" id="action_pos_pos">
<field name="name">Start Point of Sale</field>
- <field name="tag">pos.ui</field>
+ <field name="url">/pos/web/</field>
+ <field name="target">self</field>
</record>
<!-- Top menu item -->
</header>
<sheet>
- <group>
- <field name="name"/>
- <field name="shop_id" widget="selection" groups="stock.group_locations" />
- <field name="journal_id" widget="selection" />
- <field name="sequence_id" readonly="1" groups="base.group_no_one" />
- <field name="group_by" groups="account.group_account_user" />
+ <label for="name" class="oe_edit_only"/>
+ <h1>
+ <field name="name"/>
+ </h1>
+ <group col="4">
+ <field name="warehouse_id" widget="selection" groups="stock.group_locations" />
+ <field name="pricelist_id" groups="product.group_sale_pricelist"/>
+ <field name="currency_id" invisible="1"/>
+ <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"/>
</group>
<separator string="Available Payment Methods" colspan="4"/>
<field name="journal_ids" colspan="4" nolabel="1">
<field name="cash_control" />
</tree>
</field>
- <group string="Material Interfaces" >
+ <group string="Features" >
<group>
- <field name="iface_self_checkout" />
- <field name="iface_cashdrawer" />
- <field name="iface_payment_terminal" />
+ <field name="iface_vkeyboard" />
+ <field name="iface_invoicing" />
</group>
<group>
- <field name="iface_electronic_scale" />
- <field name="iface_vkeyboard" />
- <field name="iface_print_via_proxy" />
+ <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 header footage"/>
+ </group>
</sheet>
</form>
<field name="arch" type="xml">
<tree string="Point of Sale Configuration" colors="grey:state == 'inactive'">
<field name="name" />
- <field name="shop_id" />
+ <field name="warehouse_id" groups="stock.group_locations"/>
<field name="state" />
</tree>
</field>
<field name="name" />
<filter string="Active" domain="[('state', '=', 'active')]" />
<filter string="Inactive" domain="[('state', '=', 'inactive')]" />
- <field name="shop_id" />
+ <field name="warehouse_id" groups="stock.group_locations" />
</search>
</field>
</record>
class="oe_highlight" />
<button name="close" type="workflow" string="Validate Closing & Post Entries" states="closing_control"
class="oe_highlight" />
- <div class="oe_right">
- <field name="state" widget="statusbar" statusbar_visible="opening_control,opened,closing_control,closed" nolabel="1" />
- </div>
+
+ <field name="state" widget="statusbar" statusbar_visible="opening_control,opened,closing_control,closed" nolabel="1" />
+
</header>
<sheet>
<div class="oe_right oe_button_box">
<group>
<field name="cash_control" invisible="1" />
<group>
- <field name="user_id" context="{'default_groups_ref': ['point_of_sale.group_pos_manager', 'base.group_sale_manager']}"/>
+ <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>
</group>
<newline/>
<group string="Opening Cash Control" attrs="{'invisible' : [('cash_control', '=', False)]}">
- <field name="opening_details_ids" nolabel="1" colspan="2" attrs="{'readonly' : [('state', 'not in', ('opening_control',))]}">
+ <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>
</group>
<group string="Closing Cash Control" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '=', 'opening_control')]}">
- <field name="details_ids" nolabel="1" colspan="2">
+ <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" />
- <field name="subtotal_closing"/>
+ <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"/>
- <field name="cash_register_total_entry_encoding" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="+ Transactions"/>
- <field name="cash_register_balance_end" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="= Theoretical Balance"/>
+ <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>
</div>
</div>
-
-
- <group class="oe_subtotal_footer oe_right" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '=', 'opening_control')]}">
- <field name="cash_register_balance_end_real" class="oe_subtotal_footer_separator"/>
- <field name="cash_register_difference" class="oe_subtotal_footer_separator"/>
- </group>
+ <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">
currencies in your cash registers at the beginning and the end
of each session.
</p><p>
- Note that you should better to use the menu <i>Your Session</i>
+ Note that you may use the menu <i>Your Session</i>
to quickly open a new session.
</p>
</field>
<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 Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
+ <filter string="Order Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
</group>
</search>
</field>