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