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