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