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