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