[IMP] point_of_sale: make the sequence field configurable
[odoo/odoo.git] / addons / point_of_sale / point_of_sale_view.xml
1 <?xml version="1.0"?>
2 <openerp>
3     <data>
4
5         <!-- Top menu item -->
6         <menuitem name="Point of Sale"
7             id="menu_point_root"
8             groups="group_pos_manager,group_pos_user"
9             sequence="30"/>
10
11         <record model="ir.ui.view" id="view_pos_pos_form">
12             <field name="name">pos.order</field>
13             <field name="model">pos.order</field>
14             <field name="arch" type="xml">
15                 <form string="Point of Sale Orders">
16                     <header>
17                         <button name="%(action_pos_payment)d" string="Payment" class="oe_highlight" type="action" states="draft" context="{'pos_session_id' : session_id}"/>
18                         <button name="action_invoice" string="Invoice" type="object" states="paid" attrs="{'readonly': [('partner_id','=',False)]}"/>
19                         <button name="refund" string="Return Products" type="object" 
20                             attrs="{'invisible':[('state','=','draft')]}"/>
21                         <button name="%(action_report_pos_receipt)d" string="Reprint" type="action" states="paid,done,invoiced"/>
22                         <field name="state" widget="statusbar" statusbar_visible="draft,paid,done" statusbar_colors='{"cancel":"red"}'/>
23                     </header>
24                     <sheet>
25                     <group col="4" colspan="4">
26                         <field name="name"/>
27                         <field name="date_order"/>
28                         <field name="session_id" required="1"/>
29                         <field name="partner_id" on_change="onchange_partner_id(partner_id, context)" context="{'search_default_customer':1}" attrs="{'readonly': [('state','=','invoiced')]}"/>
30                     </group>
31                     <notebook colspan="4">
32                         <page string="Products">
33                             <field name="lines" colspan="4" nolabel="1">
34                                 <tree string="Order lines" editable="bottom">
35                                     <field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,qty,parent.partner_id)"/>
36                                     <field name="qty" on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
37                                     <field name="price_unit" on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
38                                     <field name="discount"  on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
39                                     <field name="price_subtotal"/>
40                                     <field name="price_subtotal_incl"/>
41                                 </tree>
42                                 <form string="Order lines">
43                                     <group col="4">
44                                         <field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,qty,parent.partner_id)"/>
45                                         <field name="qty" on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
46                                         <field name="discount"  on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
47                                         <field name="price_unit" on_change="onchange_qty(product_id, discount, qty, price_unit, context)"/>
48                                         <field name="price_subtotal" invisible="1"/>
49                                         <field name="price_subtotal_incl" invisible="1"/>
50                                         <field name="notice"/>
51                                     </group>
52                                 </form>
53                             </field>
54                             <group class="oe_subtotal_footer oe_right" colspan="2" name="order_total">
55                                 <field name="amount_tax"/>
56                                 <div class="oe_subtotal_footer_separator oe_inline">
57                                     <label for="amount_total" />
58                                     <button name="button_dummy"
59                                         states="draft" string="(update)" class="oe_edit_only oe_link"/>
60                                 </div>
61                                 <field name="amount_total" nolabel="1" class="oe_subtotal_footer_separator"/>
62                             </group>
63                             <div class="oe_clear"/>
64                         </page>
65                         <page string="Payments">
66                             <field name="statement_ids" colspan="4" nolabel="1">
67                                 <tree editable="bottom" string="Statement lines">
68                                     <field name="journal_id"/>
69                                     <field name="statement_id"/>
70                                     <field name="amount"/>
71                                 </tree>
72                             </field>
73                         </page>
74                         <page string="Extra Info">
75                             <group string="General Information">
76                                 <field name="company_id" groups="base.group_multi_company"/>
77                                 <field name="location_id" widget="selection" groups="stock.group_locations"/>
78                                 <field name="user_id" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'point_of_sale.group_pos_user']}"/>
79                                 <field name="pricelist_id" groups="product.group_sale_pricelist" domain="[('type','=','sale')]"/>
80                                 <field name="picking_id" readonly="1"/>
81                                 <field name="pos_reference"/>
82                             </group>
83                             <group string="Accounting Information">
84                                 <field name="sale_journal" domain="[('type','=','sale')]"/>
85                                 <field name="invoice_id" readonly="1"
86                                     attrs="{'invisible':[('state','&lt;&gt;','invoiced')]}"/>
87                                 <button name="%(pos_invoice_report)d" string="Re-Print"
88                                     icon="gtk-print" type="action" attrs="{'invisible':[('state','&lt;&gt;','invoiced')]}"/>
89                                 <field name="account_move" readonly="1"
90                                     attrs="{'invisible':[('state','&lt;&gt;','done')]}"/>
91                             </group>
92                         </page>
93                         <page string="Notes" >
94                             <field name="note"/>
95                         </page>
96                     </notebook>
97                 </sheet>
98                 </form>
99             </field>
100         </record>
101         <record model="ir.actions.act_window" id="action_pos_pos_form">
102             <field name="name">Orders</field>
103             <field name="type">ir.actions.act_window</field>
104             <field name="res_model">pos.order</field>
105             <field name="view_type">form</field>
106             <field name="view_mode">tree,form</field>
107             <field name="view_id" eval="False"/>
108             <field name="domain">[]</field>
109             <field name="help" type="html">
110               <p class="oe_view_nocontent_create">
111                 Click to create a new order.
112               </p><p>
113                 Use this menu to browse previous orders. To record new
114                 orders, you may use the menu <i>Your Session</i> for
115                 the touchscreen interface.
116               </p>
117             </field>
118         </record>
119         <record model="ir.ui.view" id="view_pos_order_tree">
120             <field name="name">Orders</field>
121             <field name="model">pos.order</field>
122             <field name="arch" type="xml">
123                 <tree string="POS Orders" colors="blue:state == 'draft';gray:state in ('done','cancel');black:state not in('done','cancel')">
124                     <field name="name"/>
125                     <field name="pos_reference"/>
126                     <field name="partner_id"/>
127                     <field name="date_order"/>
128                     <field name="user_id"/>
129                     <field name="invoice_id"/>
130                     <field name="amount_total" sum="Amount total"/>
131                     <field name="company_id" groups="base.group_multi_company"/>
132                     <field name="state"/>
133                     <field name="session_id" />
134                 </tree>
135             </field>
136         </record>
137         <record id="view_pos_order_filter" model="ir.ui.view">
138             <field name="name">pos.order.list.select</field>
139             <field name="model">pos.order</field>
140             <field name="arch" type="xml">
141                 <search string="Search Sales Order">
142                     <field name="name" string="Sales Order"/>
143                     <field name="date_order"/>
144                     <field name="pos_reference"/>
145                     <filter icon="terp-document-new" string="New" domain="[('state','=','draft')]"/>
146                     <filter icon="gtk-apply" string="Done" domain="[('state','in',('paid','invoiced','done'))]"/>
147                     <filter icon="terp-check" string="Invoiced" domain="[('state','=','invoiced')]"/>
148                     <filter icon="gtk-convert" string="Posted" domain="[('state','=','done')]"/>
149                     <field name="user_id"/>
150                     <group expand="0" string="Group By">
151                         <filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
152                         <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
153                         <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
154                         <filter string="Order Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
155                     </group>
156                 </search>
157             </field>
158         </record>
159
160         <menuitem name="Daily Operations" id="menu_point_of_sale" parent="menu_point_root" sequence="10"/>
161         <menuitem parent="menu_point_of_sale" id="menu_point_ofsale" action="action_pos_pos_form" sequence="2" groups="group_pos_manager,group_pos_user"/>
162         <menuitem name="Products" id="menu_point_of_sale_product" parent="menu_point_root" sequence="15" />
163
164         <record id="product_template_action" model="ir.actions.act_window">
165             <field name="name">Products</field>
166             <field name="type">ir.actions.act_window</field>
167             <field name="res_model">product.template</field>
168             <field name="view_type">form</field>
169             <field name="view_mode">tree,form,kanban</field>
170             <field name="context" eval="{}"/>
171             <field name="domain" eval="[('available_in_pos','&lt;&gt;',False)]"/>
172             <field name="search_view_id" eval="False"/> <!-- Force empty -->
173             <field name="view_id" eval="False"/> <!-- Force empty -->
174             <field name="help" type="html">
175               <p class="oe_view_nocontent_create">
176                 Click to add a new product.
177               </p><p>
178                 You must define a product for everything you sell through
179                 the point of sale interface.
180               </p><p>
181                 Do not forget to set the price and the point of sale category
182                 in which it should appear. If a product has no point of sale
183                 category, you can not sell it through the point of sale
184                 interface.
185               </p>
186             </field>
187         </record>
188         <menuitem
189             action="product_template_action"
190             id="menu_pos_products"
191             parent="menu_point_of_sale_product" sequence="2"/>
192
193         <record model="ir.ui.view" id="view_pos_order_line">
194             <field name="name">Sale lines</field>
195             <field name="model">pos.order.line</field>
196             <field name="arch" type="xml">
197                 <tree string="POS Order lines">
198                     <field name="product_id" readonly="1"/>
199                     <field name="qty" readonly="1" sum="Total qty"/>
200                     <field name="discount" readonly="1"/>
201                     <field name="price_unit" readonly="1"/>
202                     <field name="price_subtotal" readonly="1" sum="Sum of subtotals"/>
203                     <field name="price_subtotal_incl" readonly="1" sum="Sum of subtotals"/>
204                     <field name="create_date" readonly="1"/>
205                 </tree>
206             </field>
207         </record>
208
209         <record model="ir.ui.view" id="view_pos_order_line_form">
210             <field name="name">Sale line</field>
211             <field name="model">pos.order.line</field>
212             <field name="arch" type="xml">
213                 <form string="POS Order line">
214                     <group col="4">
215                         <field name="product_id" />
216                         <field name="qty" />
217                         <field name="discount" />
218                         <field name="price_unit" />
219                         <field name="create_date" />
220                     </group>
221                 </form>
222             </field>
223         </record>
224
225         <record model="ir.actions.act_window" id="action_pos_order_line">
226             <field name="name">Sale line</field>
227             <field name="type">ir.actions.act_window</field>
228             <field name="res_model">pos.order.line</field>
229             <field name="view_type">form</field>
230             <field name="view_mode">tree</field>
231             <field name="view_id" ref="view_pos_order_line"/>
232         </record>
233
234         <record model="ir.actions.act_window" id="action_pos_order_line_form">
235             <field name="name">Sale line</field>
236             <field name="type">ir.actions.act_window</field>
237             <field name="res_model">pos.order.line</field>
238             <field name="view_type">form</field>
239             <field name="view_mode">form,tree</field>
240             <field name="view_id" ref="view_pos_order_line_form"/>
241         </record>
242
243         <record model="ir.actions.act_window" id="action_pos_order_line_day">
244             <field name="name">Sale line</field>
245             <field name="type">ir.actions.act_window</field>
246             <field name="res_model">pos.order.line</field>
247             <field name="view_type">form</field>
248             <field name="view_mode">tree</field>
249             <field name="view_id" ref="view_pos_order_line"/>
250             <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>
251         </record>
252
253
254
255         <!-- report -->
256
257         <record model="ir.ui.view" id="view_pos_trans_user_form">
258             <field name="name">report.trans.pos.user.form</field>
259             <field name="model">report.transaction.pos</field>
260             <field name="arch" type="xml">
261                 <form string="POS ">
262                     <group col="4">
263                         <field name="user_id"/>
264                         <field name="journal_id"/>
265                         <field name="jl_id"/>
266                         <field name="date_create" widget="date"/>
267                         <field name="no_trans"/>
268                         <field name="amount"/>
269                         <field name="invoice_id"/>
270                     </group>
271                 </form>
272             </field>
273         </record>
274
275
276         <record model="ir.ui.view" id="view_trans_pos_user_tree">
277             <field name="name">Sales by user</field>
278             <field name="model">report.transaction.pos</field>
279             <field name="arch" type="xml">
280                 <tree string="POS">
281                     <field name="date_create" widget="date" />
282                     <field name="user_id"/>
283                     <field name="journal_id"/>
284                     <field name="jl_id"/>
285                     <field name="no_trans" sum="Total Transaction"/>
286                     <field name="amount" sum="Amount total"/>
287                     <field name="product_nb" />
288                     <field name="invoice_id"/>
289                     <field name="disc"/>
290                 </tree>
291             </field>
292         </record>
293
294         <record model="ir.ui.view" id="view_report_transaction_pos_calendar">
295             <field name="name">report.transaction.pos.calendar</field>
296             <field name="model">report.transaction.pos</field>
297             <field eval="2" name="priority"/>
298             <field name="arch" type="xml">
299                 <calendar color="user_id" date_start="date_create" string="POS Report">
300                     <field name="journal_id"/>
301                     <field name="amount"/>
302                 </calendar>
303             </field>
304          </record>
305
306          <record model="ir.ui.view" id="view_report_transaction_pos_graph">
307             <field name="name">report.transaction.pos.graph</field>
308             <field name="model">report.transaction.pos</field>
309             <field eval="2" name="priority"/>
310             <field name="arch" type="xml">
311                 <graph  type="bar" string="POS Report">
312                     <field name="user_id" />
313                     <field name="amount"/>
314                     <field group="True" name="journal_id"/>
315                 </graph>
316             </field>
317          </record>
318
319         <record model="ir.actions.act_window" id="action_trans_pos_tree_today">
320             <field name="name">Sales by day</field>
321             <field name="res_model">report.transaction.pos</field>
322             <field name="view_type">form</field>
323             <field name="view_mode">tree,calendar,form,graph</field>
324             <field name="domain">[('date_create','=',time.strftime('%Y-%m-%d'))]</field>
325         </record>
326
327
328         <record model="ir.actions.act_window" id="action_trans_pos_tree_month">
329             <field name="name">Sales by month</field>
330             <field name="res_model">report.transaction.pos</field>
331             <field name="view_type">form</field>
332             <field name="view_mode">tree,calendar,form,graph</field>
333             <field name="domain">[('date_create','like',time.strftime('%Y-%m'))]</field>
334         </record>
335
336
337         <record model="ir.actions.act_window" id="action_trans_pos_tree">
338             <field name="name">Sales by user</field>
339             <field name="res_model">report.transaction.pos</field>
340             <field name="view_type">form</field>
341             <field name="view_mode">tree,calendar,form,graph</field>
342             <field name="view_id" ref="view_trans_pos_user_tree"/>
343         </record>
344
345
346         <record model="ir.ui.view" id="view_report_sales_by_user_pos_form">
347             <field name="name">report.sales.by.user.pos.form</field>
348             <field name="model">report.sales.by.user.pos</field>
349             <field name="arch" type="xml">
350                 <form string="POS ">
351                     <group col="4">
352                         <field name="date_order" widget="date"/>
353                         <field name="qty"/>
354                         <field name="amount"/>
355                         <field name="user_id"/>
356                     </group>
357                 </form>
358             </field>
359         </record>
360
361
362         <record model="ir.ui.view" id="view_report_sales_by_user_pos_tree">
363             <field name="name">report.sales.by.user.pos.tree</field>
364             <field name="model">report.sales.by.user.pos</field>
365             <field name="arch" type="xml">
366                 <tree string="POS">
367                     <field name="date_order" widget="date"/>
368                     <field name="qty"/>
369                     <field name="amount"/>
370                     <field name="user_id"/>
371                 </tree>
372             </field>
373         </record>
374
375         <record model="ir.ui.view" id="view_report_sales_by_user_pos_calendar">
376             <field name="name">report.sales.by.user.pos.calendar</field>
377             <field name="model">report.sales.by.user.pos</field>
378             <field eval="2" name="priority"/>
379             <field name="arch" type="xml">
380                 <calendar color="user_id" date_start="date_order" string="POS Report">
381                     <field name="qty"/>
382                     <field name="amount" />
383                 </calendar>
384             </field>
385          </record>
386
387         <record model="ir.ui.view" id="view_report_sales_by_user_pos_graph">
388             <field name="name">report.sales.by.user.pos.graph</field>
389             <field name="model">report.sales.by.user.pos</field>
390             <field eval="2" name="priority"/>
391             <field name="arch" type="xml">
392                 <graph  type="bar" string="Sales by User">
393                     <field name="user_id" />
394                     <field name="amount"/>
395                 </graph>
396             </field>
397          </record>
398
399          <record model="ir.actions.act_window" id="action_report_sales_by_user_pos_today">
400             <field name="name">Sales by User</field>
401             <field name="res_model">report.sales.by.user.pos</field>
402             <field name="view_type">form</field>
403             <field name="view_mode">tree,calendar,form,graph</field>
404             <field name="domain">[('date_order','=',time.strftime('%Y-%m-%d'))]</field>
405          </record>
406
407
408         <!-- Sales of user by month -->
409
410         <record model="ir.ui.view" id="view_report_sales_by_user_pos_month_form">
411             <field name="name">report.sales.by.user.pos.month.form</field>
412             <field name="model">report.sales.by.user.pos.month</field>
413             <field name="arch" type="xml">
414                 <form string="POS ">
415                     <group col="4">
416                         <field name="date_order" widget="date"/>
417                         <field name="qty"/>
418                         <field name="amount"/>
419                         <field name="user_id"/>
420                     </group>
421                 </form>
422             </field>
423         </record>
424
425
426         <record model="ir.ui.view" id="view_report_sales_by_user_pos_month_tree">
427             <field name="name">report.sales.by.user.pos.month.tree</field>
428             <field name="model">report.sales.by.user.pos.month</field>
429             <field name="arch" type="xml">
430                 <tree string="POS">
431                     <field name="date_order" widget="date"/>
432                     <field name="qty"/>
433                     <field name="amount"/>
434                     <field name="user_id"/>
435                 </tree>
436             </field>
437         </record>
438
439         <record model="ir.ui.view" id="view_report_sales_by_user_pos_month_calendar">
440             <field name="name">report.sales.by.user.pos.month.calendar</field>
441             <field name="model">report.sales.by.user.pos.month</field>
442             <field eval="2" name="priority"/>
443             <field name="arch" type="xml">
444                 <calendar color="user_id" date_start="date_order" string="POS Report">
445                     <field name="qty"/>
446                     <field name="amount" />
447                 </calendar>
448             </field>
449          </record>
450
451         <record model="ir.ui.view" id="view_report_sales_by_user_pos_month_graph">
452             <field name="name">report.sales.by.user.pos.month.graph</field>
453             <field name="model">report.sales.by.user.pos.month</field>
454             <field eval="2" name="priority"/>
455             <field name="arch" type="xml">
456                 <graph  type="bar" string="Sales by User">
457                     <field name="user_id" />
458                     <field name="amount"/>
459                 </graph>
460             </field>
461          </record>
462
463
464          <record model="ir.actions.act_window" id="action_report_sales_by_user_pos_month">
465             <field name="name">Sales by User Monthly</field>
466             <field name="res_model">report.sales.by.user.pos.month</field>
467             <field name="view_type">form</field>
468             <field name="view_mode">tree,calendar,form,graph</field>
469             <field name="domain">[('date_order','like',time.strftime('%Y-%m'))]</field>
470         </record>
471
472
473
474         <!-- Product Public Categories -->
475         <record id="product_pos_category_form_view" model="ir.ui.view">
476             <field name="name">pos.category.form</field>
477             <field name="model">pos.category</field>
478             <field name="arch" type="xml">
479                 <form string="Pos Categories">
480                     <sheet>
481                         <field name="image_medium" widget='image' class="oe_avatar oe_right"/>
482                         <div class="oe_left">
483                             <group>
484                                 <field name="name"/>
485                                 <field name="parent_id"/>
486                                 <field name="sequence"/>
487                             </group>
488                         </div>
489                     </sheet>
490                 </form>
491             </field>
492         </record>
493         <record id="product_pos_category_tree_view" model="ir.ui.view">
494             <field name="name">pos.category.tree</field>
495             <field name="model">pos.category</field>
496             <field name="field_parent" eval="False"/>
497             <field name="arch" type="xml">
498                 <tree string="Product Product Categories">
499                     <field name="sequence" widget="handle"/>
500                     <field name="complete_name"/>
501                 </tree>
502             </field>
503         </record>
504         <record id="product_pos_category_action" model="ir.actions.act_window">
505             <field name="name">Pos Product Categories</field>
506             <field name="type">ir.actions.act_window</field>
507             <field name="res_model">pos.category</field>
508             <field name="view_type">form</field>
509             <field name="view_mode">tree,form</field>
510             <field name="view_id" eval="False"/>
511             <field name="help" type="html">
512               <p class="oe_view_nocontent_create">
513                 Click to define a new category.
514               </p><p>
515                 Categories are used to browse your products through the
516                 touchscreen interface.
517               </p><p>
518                 If you put a photo on the category, the layout of the
519                 touchscreen interface will automatically. We suggest not to put
520                 a photo on categories for small (1024x768) screens.
521               </p>
522             </field>
523         </record>
524         <menuitem action="product_pos_category_action" id="menu_product_pos_category" parent="menu_point_of_sale_product" sequence="0" />
525         <!-- END -->
526
527         <record id="action_edit_ean" model="ir.actions.act_window">
528             <field name="name">Edit Ean</field>
529             <field name="res_model">pos.ean_wizard</field>
530             <field name="target">new</field>
531             <field name="view_type">form</field>
532             <field name="view_mode">form</field>
533         </record>
534
535         <record id="product_template_form_view" model="ir.ui.view">
536             <field name="name">product.template.form.inherit</field>
537             <field name="model">product.template</field>
538             <field name="inherit_id" ref="product.product_template_form_view"/>
539             <field name="arch" type="xml">
540                 <group name="website_and_pos" position="inside">
541                     <group name="pos" string="Point of Sale">
542                         <field name="pos_categ_id"/>
543                         <field name="available_in_pos"/>
544                         <field name="to_weight" />
545                         <field name="income_pdt"/>
546                         <field name="expense_pdt"/>
547                     </group>
548                 </group>
549             </field>
550         </record>
551         <record id="product_template_form_view_inherit_ean" model="ir.ui.view">
552             <field name="name">product.template.only.form.inherit.ean</field>
553             <field name="model">product.template</field>
554             <field name="inherit_id" ref="product.product_template_only_form_view"/>
555             <field name="arch" type="xml">
556                 <field name="ean13" position="after">
557                     <button colspan="2" name="%(action_edit_ean)d" type="action" string="Set a Custom EAN"
558                             attrs="{'invisible': [('product_variant_count', '>', 1)]}" class="oe_link oe_edit_only"/>
559                 </field>
560             </field>
561         </record>
562         <record id="product_normal_form_view_inherit_ean" model="ir.ui.view">
563             <field name="name">product.form.inherit.ean</field>
564             <field name="model">product.product</field>
565             <field name="inherit_id" ref="product.product_normal_form_view"/>
566             <field name="arch" type="xml">
567                 <field name="ean13" position="after">
568                     <button colspan="2" name="%(action_edit_ean)d" type="action" string="Set a Custom EAN" class="oe_link oe_edit_only"/>
569                 </field>
570             </field>
571         </record>
572         <!-- END -->
573
574         <menuitem name="Configuration" parent="menu_point_root"
575             id="menu_point_config_product" sequence="25" groups="group_pos_manager"/>
576
577         <record id="action_account_journal_form" model="ir.actions.act_window">
578             <field name="name">Payment Methods</field>
579             <field name="res_model">account.journal</field>
580             <field name="view_type">form</field>
581             <field name="view_mode">tree,form</field>
582             <field name="context" eval="{'default_journal_user': 1, 'default_type': 'cash'}"/>
583             <field name="domain">[('journal_user','=', 1)]</field>
584             <field name="help" type="html">
585               <p class="oe_view_nocontent_create">
586                 Click to add a payment method.
587               </p><p>
588                 Payment methods are defined by accounting journals having the
589                 field <i>PoS Payment Method</i> checked. In order to be useable
590                 from the touchscreen interface, you must set the payment method
591                 on the <i>Point of Sale</i> configuration.
592               </p>
593             </field>
594         </record>
595
596         <menuitem action="action_account_journal_form"
597             id="menu_action_account_journal_form_open"
598             parent="menu_point_config_product"
599             sequence="20"/>
600
601         <record model="ir.ui.view" id="view_pos_order_tree_all_sales_lines">
602             <field name="name">POS Sales Lines</field>
603             <field name="model">pos.order.line</field>
604             <field name="arch" type="xml">
605                 <tree string="POS Orders lines">
606                     <field name="order_id" />
607                     <field name="create_date" />
608                     <field name="product_id" />
609                     <field name="qty" />
610                     <field name="price_unit" />
611                 </tree>
612             </field>
613         </record>
614          <record model="ir.actions.act_window" id="action_pos_all_sales_lines">
615             <field name="name">All sales lines</field>
616             <field name="type">ir.actions.act_window</field>
617             <field name="res_model">pos.order.line</field>
618             <field name="view_type">form</field>
619             <field name="view_id" ref="view_pos_order_tree_all_sales_lines" />
620         </record>
621
622         <!--  Miscellaneous Operations/Reporting -->
623         <menuitem name="Point of Sale" parent="base.menu_reporting" id="menu_point_rep" sequence="50" groups="group_pos_manager"/>
624         <!-- Invoice -->
625
626         <record model="ir.actions.act_window" id="action_pos_invoice">
627             <field name="name">Invoices</field>
628             <field name="type">ir.actions.act_window</field>
629             <field name="res_model">account.invoice</field>
630             <field name="view_type">form</field>
631             <field name="view_mode">tree,form</field>
632             <field name="domain">[('origin','like','POS')]</field>
633         </record>
634
635         <menuitem icon="STOCK_PRINT" action="action_report_pos_details"
636                 id="menu_pos_details" parent="menu_point_rep" sequence="6" />
637
638         <record model="ir.actions.act_url" id="action_pos_pos">
639             <field name="name">Start Point of Sale</field>
640             <field name="url">/pos/web/</field>
641             <field name="target">self</field>
642         </record>
643
644         <!-- Top menu item -->
645         <record model="ir.ui.view" id="view_pos_config_form">
646             <field name="name">pos.config.form.view</field>
647             <field name="model">pos.config</field>
648             <field name="arch" type="xml">
649                 <form string="Point of Sale Configuration">
650                     <header>
651                         <button string="Set to Active" name="set_active" type="object" states="inactive,deprecated"/>
652                         <button string="Set to Inactive" name="set_inactive" type="object" states="active" />
653                         <button string="Set to Deprecated" name="set_deprecate" type="object" states="active,inactive" />
654                         <div class="oe_right">
655                             <field name="state" widget="statusbar" statusbar_visible="active,inactive,deprecated" statusbar_colors='{"deprecated" : "red"}' nolabel="1"/>
656                         </div>
657                     </header>
658
659                     <sheet>
660                         <label for="name" class="oe_edit_only"/>
661                         <h1>
662                             <field name="name"/>
663                         </h1>
664                         <group col="4">
665                             <field name="picking_type_id" widget="selection" groups="stock.group_locations" 
666                                 on_change="onchange_picking_type_id(picking_type_id)"/>
667                             <field name="stock_location_id" groups="stock.group_locations"/>
668                             <field name="company_id" groups="base.group_multi_company"/>
669                             <field name="pricelist_id" groups="product.group_sale_pricelist"/>
670                             <field name="journal_id" widget="selection"/>
671                             <field name="group_by" groups="account.group_account_user"/>
672                             <field name="sequence_id" readonly="1" groups="base.group_no_one"/>
673                             <field name="currency_id" invisible="1"/>
674                         </group>
675                         <separator string="Available Payment Methods" colspan="4"/>
676                         <field name="journal_ids" colspan="4" nolabel="1">
677                             <tree string="Journals">
678                                 <field name="code" />
679                                 <field name="name" />
680                                 <field name="type" />
681                                 <field name="cash_control" />
682                             </tree>
683                         </field>
684                         <group string="Features" >
685                             <group>
686                                 <field name="iface_vkeyboard" />
687                                 <field name="iface_invoicing" />
688                             </group>
689                             <group>
690                                 <field name="iface_big_scrollbars" />
691                             </group>
692                         </group>
693                         <group string="Hardware Proxy" >
694                             <field name="proxy_ip" />
695                             <field name="iface_print_via_proxy" />
696                             <field name="iface_scan_via_proxy" />
697                             <field name="iface_electronic_scale" />
698                             <field name="iface_cashdrawer" />
699                         </group>
700                         <group string="Receipt" >
701                             <field name="receipt_header" placeholder="A custom receipt header message"/>
702                             <field name="receipt_footer" placeholder="A custom receipt header footage"/>
703                         </group>
704                         <group string="Barcode Types" col="1">
705                             <p>
706                                 Barcode Patterns allow to match barcodes to actions or to embed information such as price and quantity in the barcode.
707                                 Barcode Patterns only work with EAN13 barcodes.
708                             </p>
709                             <p> 
710                                 Each type of barcode accepts a list of patterns seprated by commas. A scanned 
711                                 barcode will be attributed to a type if it matches one of its patterns. 
712                                 The patterns take the form of EAN13 barcodes. Numbers in the pattern must match
713                                 the number in the scanned barcode. A 'x' or a '*' in a pattern will match
714                                 any one number. If the patterns are shorter than EAN13 barcodes, they are assumed
715                                 to be prefixes and match at the beginning. Weight, Price and Discount patterns also
716                                 tell how the weight, price or discount is encoded in the barcode. 'N' indicate the
717                                 positions where the integer part is en encoded, and 'D' where the decimals are encoded.
718                                 If multiple pattern match one barcode, the longest pattern with the less 'x' or '*' is
719                                 considered the matching one. If a barcode matches no pattern it will not be found in
720                                 the POS.
721                             </p>
722                             <group col="4">
723
724                                 <field name="barcode_product" />
725                                 <field name="barcode_cashier" />
726                                 <field name="barcode_customer" />
727                                 <field name="barcode_weight" />
728                                 <field name="barcode_discount" />
729                                 <field name="barcode_price" />
730                             </group>
731                         </group>
732                     </sheet>
733
734                 </form>
735             </field>
736         </record>
737
738         <record model="ir.ui.view" id="view_pos_config_tree">
739             <field name="name">pos.config.tree.view</field>
740             <field name="model">pos.config</field>
741             <field name="arch" type="xml">
742                 <tree string="Point of Sale Configuration" colors="grey:state == 'inactive'">
743                     <field name="name" />
744                     <field name="stock_location_id" groups="stock.group_locations"/>
745                     <field name="state" />
746                 </tree>
747             </field>
748         </record>
749
750         <record model="ir.ui.view" id="view_pos_config_search">
751             <field name="name">pos.config.search.view</field>
752             <field name="model">pos.config</field>
753             <field name="arch" type="xml">
754                 <search string="Point of Sale Config">
755                     <field name="name" />
756                     <filter string="Active" domain="[('state', '=', 'active')]" />
757                     <filter string="Inactive" domain="[('state', '=', 'inactive')]" />
758                     <field name="stock_location_id" groups="stock.group_locations" />
759                 </search>
760             </field>
761         </record>
762
763         <!-- Sessions -->
764
765         <act_window
766             id="act_pos_config_sessions"
767             name="Sessions"
768             src_model="pos.config"
769             res_model="pos.session"
770             domain="[('config_id', '=', active_id)]" />
771
772         <record model="ir.actions.act_window" id="action_pos_config_pos">
773             <field name="name">Point of Sales</field>
774             <field name="type">ir.actions.act_window</field>
775             <field name="res_model">pos.config</field>
776             <field name="view_type">form</field>
777             <field name="view_mode">tree,form</field>
778             <field name="search_view_id" ref="view_pos_config_search" />
779         </record>
780
781         <menuitem
782             parent="menu_point_config_product"
783             action="action_pos_config_pos"
784             id="menu_pos_config_pos"
785             groups="group_pos_manager"/>
786
787         <act_window
788             id="act_pos_session_orders"
789             name="Orders"
790             src_model="pos.session"
791             res_model="pos.order"
792             context="{'search_default_session_id': active_id, 'default_session_id' : active_id }" />
793
794
795
796         <record model="ir.ui.view" id="view_pos_session_form">
797             <field name="name">pos.session.form.view</field>
798             <field name="model">pos.session</field>
799             <field name="arch" type="xml">
800                 <form string="Point of Sale Session">
801                     <header>
802                         <button name="open_cb" type="object" string="Validate &amp; Open Session" states="opening_control" class="oe_highlight"/>
803                         <button name="open_frontend_cb" type="object" string="Continue Selling" states="opened"
804                             class="oe_highlight"/>
805                         <button name="cashbox_control" type="workflow" string="End of Session"
806                             attrs="{'invisible' : ['|', ('cash_control', '=', False),('state', '!=', 'opened')]}" 
807                             class="oe_highlight" />
808                         <button name="close" type="workflow" string="Validate Closing &amp; Post Entries"
809                             attrs="{'invisible' : ['|', ('cash_control', '=', True),('state', '!=', 'opened')]}"
810                             class="oe_highlight" />
811                         <button name="close" type="workflow" string="Validate Closing &amp; Post Entries" states="closing_control"
812                             class="oe_highlight" />
813                         
814                         <field name="state" widget="statusbar" statusbar_visible="opening_control,opened,closing_control,closed" nolabel="1" />
815                         
816                     </header>
817                     <sheet>
818                         <div class="oe_right oe_button_box">
819                             <button class="oe_stat_button" name="%(action_pos_box_in)d"
820                                 type="action" states="opened,closing_control" icon="fa-level-down">
821                                 <div>Put<br/>Money In</div>
822                             </button>
823                             <button class="oe_stat_button" name="%(action_pos_box_out)d"
824                                 type="action" states="opened,closing_control" icon="fa-level-up">
825                                 <div>Take<br/>Money Out</div>
826                             </button>
827                         </div>
828                         <h1 class="oe_title">
829                             Session:
830                             <field name="name" attrs="{'invisible': [('name','=','/')]}" class="oe_inline"/>
831                         </h1>
832                         <group>
833                             <field name="cash_control" invisible="1" />
834                             <group>
835                                 <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']}"/>
836                                 <field name="currency_id" invisible="1"/>
837                                 <field name="config_id"/>
838                             </group>
839                             <group>
840                                 <field name="start_at" attrs="{'invisible' : [('state', '=', 'opening_control')]}"/>
841                                 <field name="stop_at" attrs="{'invisible' : [('state', '!=', 'closed')]}"/>
842                             </group>
843                             <newline/>
844                             <group string="Opening Cash Control" attrs="{'invisible' : [('cash_control', '=', False)]}">
845                                 <field name="opening_details_ids" nolabel="1" colspan="2" attrs="{'readonly' : [('state', '!=', 'opening_control')]}">
846                                     <tree string="Opening Cashbox Lines" editable="bottom">
847                                         <field name="pieces" readonly="1" />
848                                         <field name="number_opening" on_change="on_change_sub_opening(pieces, number_opening)" />
849                                         <field name="subtotal_opening" string="Opening Subtotal" sum="Total"/>
850                                     </tree>
851                                 </field>
852                             </group>
853                             <group string="Closing Cash Control" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '=', 'opening_control')]}">
854                                 <field name="details_ids" nolabel="1" colspan="2" attrs="{'readonly' : [('state', '=', 'closed')]}">
855                                     <tree string="Cashbox Lines" editable="bottom">
856                                         <field name="pieces" readonly="1" />
857                                         <field name="number_closing" on_change="on_change_sub_closing(pieces, number_closing)"/>
858                                         <field name="subtotal_closing" string="Closing Subtotal" sum="Total"/>
859                                     </tree>
860                                 </field>
861                             </group>
862
863                             <div attrs="{'invisible' : [('cash_control', '=', False)]}">
864                                 <group class="oe_subtotal_footer oe_right">
865                                     <field name="cash_register_balance_start" readonly="1" string="Opening Balance" class="oe_subtotal_footer_separator" widget="monetary" options="{'currency_field': 'currency_id'}"/>
866                                     <label for="cash_register_total_entry_encoding" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="+ Transactions" class="oe_force_bold oe_opening_total"/>
867                                     <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'}"/>
868                                     <label for="cash_register_balance_end" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="= Theoretical Closing Balance" class="oe_force_bold oe_opening_total"/>
869                                     <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'}"/>
870                                 </group>
871                                 <div class="oe_clear"/>
872                                 <div attrs="{'invisible' : ['|', ('cash_journal_id', '=', False), ('state', '!=', 'opening_control')]}" class="oe_view_nocontent" groups="point_of_sale.group_pos_manager">
873                                     <p class="oe_view_nocontent_create">
874                                     You can define another list of available currencies on the
875                                     <i>Cash Registers</i> tab of the <b><field name="cash_journal_id" class="oe_inline"/></b>
876                                     payment method.
877                                     </p>
878                                 </div>
879                             </div>
880                             <div>
881                                 <group class="oe_subtotal_footer oe_right" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '=', 'opening_control')]}">
882                                     <field name="cash_register_balance_end_real" string="Real Closing Balance" class="oe_subtotal_footer_separator" widget="monetary" options="{'currency_field': 'currency_id'}"/>
883                                 </group>
884                                 <group/>
885                                 <group/>
886                                 <group class="oe_subtotal_footer oe_right" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '=', 'opening_control')]}">
887                                     <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'}"/>
888                                 </group>
889                             </div>
890                         </group>
891                         <separator string="Summary by Payment Methods" attrs="{'invisible' : [('state', '=', 'opening_control')]}"/>
892                         <field name="statement_ids" attrs="{'invisible' : [('state', '=', 'opening_control')]}">
893                             <tree string="Statements">
894                                 <field name="name" />
895                                 <field name="journal_id" />
896                                 <field name="balance_start" />
897                                 <field name="total_entry_encoding" />
898                                 <field name="balance_end_real" />
899                                 <field name="difference" />
900                                 <field name="currency" groups="base.group_multi_currency" />
901                                 <field name="state" />
902                             </tree>
903                         </field>
904
905                     </sheet>
906                 </form>
907             </field>
908         </record>
909
910         <record model="ir.ui.view" id="view_pos_session_tree">
911             <field name="name">pos.session.tree.view</field>
912             <field name="model">pos.session</field>
913             <field name="arch" type="xml">
914                 <tree string="Point of Sale Session">
915                     <field name="config_id" />
916                     <field name="name" />
917                     <field name="user_id" />
918                     <field name="start_at" />
919                     <field name="stop_at" />
920                     <field name="state" />
921                 </tree>
922             </field>
923         </record>
924
925         <record model="ir.ui.view" id="view_pos_session_search">
926             <field name="name">pos.session.search.view</field>
927             <field name="model">pos.session</field>
928             <field name="arch" type="xml">
929                 <search string="Point of Sale Session">
930                     <field name="name" />
931                     <filter string="Open" domain="[('state', '=', 'opened')]" />
932                     <separator/>
933                     <filter string="Today" domain="[('start_at', '>=', time.strftime('%%Y-%%m-%%d 00:00:00'))]" />
934                     <field name="config_id" />
935                     <field name="user_id" />
936                     <group expand="0" string="Group By">
937                         <filter string="User" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
938                         <filter string="Point of Sales" domain="[]" context="{'group_by': 'user_id'}" />
939                     </group>
940                 </search>
941             </field>
942         </record>
943
944
945         <record model="ir.actions.act_window" id="action_pos_session">
946             <field name="name">All Sessions</field>
947             <field name="type">ir.actions.act_window</field>
948             <field name="res_model">pos.session</field>
949             <field name="view_type">form</field>
950             <field name="view_mode">tree,form</field>
951             <field name="search_view_id" ref="view_pos_session_search" />
952             <field name="help" type="html">
953               <p class="oe_view_nocontent_create">
954                 Click to start a new session.
955               </p><p>
956                 A session is a period of time, usually one day, during which
957                 you sell through the point of sale. The user has to check the
958                 currencies in your cash registers at the beginning and the end
959                 of each session.
960               </p><p>
961                 Note that you may use the menu <i>Your Session</i>
962                 to quickly open a new session.
963               </p>
964             </field>
965         </record>
966
967         <menuitem
968             parent="menu_point_of_sale"
969             action="action_pos_session"
970             id="menu_pos_session_all"
971             sequence="1"
972             groups="group_pos_manager"/>
973
974         <record id="view_pos_order_filter" model="ir.ui.view">
975             <field name="name">pos.order.list.select</field>
976             <field name="model">pos.order</field>
977             <field name="arch" type="xml">
978                 <search string="Search Sales Order">
979                     <field name="name"/>
980                     <field name="date_order"/>
981                     <filter icon="terp-document-new" string="New" domain="[('state','=','draft')]"/>
982                     <filter icon="gtk-apply" string="Done" domain="[('state','in',('paid','invoiced','done'))]"/>
983                     <filter icon="terp-check" string="Invoiced" domain="[('state','=','invoiced')]"/>
984                     <filter icon="gtk-convert" string="Posted" domain="[('state','=','done')]"/>
985                     <field name="user_id"/>
986                     <field name="session_id"/>
987                     <group expand="0" string="Group By">
988                         <filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
989                         <filter string="Salesman" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
990                         <filter string="Session" icon="terp-personal" domain="[]" context="{'group_by':'session_id'}"/>
991                         <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
992                         <filter string="Order Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
993                     </group>
994                 </search>
995             </field>
996         </record>
997
998         <menuitem action="action_pos_session_opening"
999             parent="menu_point_of_sale"
1000             id="menu_pos_session_opening" sequence="0"/>
1001
1002         <record model="ir.ui.view" id="pos_ean13_generator">
1003             <field name="name">pos.ean_wizard</field>
1004             <field name="model">pos.ean_wizard</field>
1005             <field name="arch" type="xml">
1006                 <form string="Ean13 Generator">  
1007                     <p class="oe_grey">
1008                         Enter a reference, it will be converted
1009                         automatically to a valid EAN number.
1010                     </p>
1011                     <group>
1012                         <field name="ean13_pattern" class="oe_inline"/>
1013                     </group>
1014                     <footer>
1015                         <button name="sanitize_ean13" type="object" string="Apply" class="oe_highlight"/> or 
1016                          <button icon="gtk-stop" special="cancel"
1017                             string="Cancel" class="oe_link"/>
1018                     </footer>
1019                 </form>
1020             </field>
1021         </record>
1022
1023
1024     </data>
1025 </openerp>