[FIX] point_of_sale: Fix some bugs
[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                     </group>
645                 </form>
646             </field>
647         </record>
648         <record id="pos_category_tree_view" model="ir.ui.view">
649             <field name="name">pos.category.tree</field>
650             <field name="model">pos.category</field>
651             <field name="type">tree</field>
652             <field name="field_parent" eval="False"/>
653             <field name="arch" type="xml">
654                 <tree string="PoS Categories">
655                     <field name="sequence" invisible="1"/>
656                     <field name="complete_name"/>
657                 </tree>
658             </field>
659         </record>
660         <record id="pos_category_action" model="ir.actions.act_window">
661             <field name="name">PoS Categories</field>
662             <field name="type">ir.actions.act_window</field>
663             <field name="res_model">pos.category</field>
664             <field name="view_type">form</field>
665             <field name="view_mode">tree,form</field>
666             <field name="view_id" eval="False"/>
667         </record>
668         <menuitem action="pos_category_action" id="menu_pos_category" parent="menu_point_of_sale_product" sequence="0" />
669         <!-- END -->
670
671         <menuitem name="Configuration" parent="menu_point_root"
672             id="menu_point_config_product" sequence="25" groups="group_pos_manager"/>
673
674         <record id="action_account_journal_form" model="ir.actions.act_window">
675             <field name="name">Payment Methods</field>
676             <field name="res_model">account.journal</field>
677             <field name="view_type">form</field>
678             <field name="view_mode">tree,form</field>
679             <field name="context" eval="{'default_journal_user': 1, 'default_view_id': ref('account.account_journal_bank_view'), 'default_type': 'cash'}"/>
680             <field name="domain">[('journal_user','=', 1)]</field>
681             <field name="help">Payment methods are defined by accounting journals having the field Payment Method checked.</field>
682         </record>
683
684         <menuitem action="action_account_journal_form"
685             id="menu_action_account_journal_form_open"
686             parent="menu_point_config_product"
687             sequence="20"/>
688
689         <record model="ir.ui.view" id="view_pos_order_tree_all_sales_lines">
690             <field name="name">POS Sales Lines</field>
691             <field name="model">pos.order.line</field>
692             <field name="type">tree</field>
693             <field name="arch" type="xml">
694                 <tree string="POS Orders lines">
695                     <field name="order_id" />
696                     <field name="create_date" />
697                     <field name="product_id" />
698                     <field name="qty" />
699                     <field name="price_unit" />
700                 </tree>
701             </field>
702         </record>
703          <record model="ir.actions.act_window" id="action_pos_all_sales_lines">
704             <field name="name">All sales lines</field>
705             <field name="type">ir.actions.act_window</field>
706             <field name="res_model">pos.order.line</field>
707             <field name="view_type">form</field>
708             <field name="view_id" ref="view_pos_order_tree_all_sales_lines" />
709         </record>
710
711         <!--  Miscelleanous Operations/Reporting -->
712         <menuitem name="Point of Sale" parent="base.menu_reporting" id="menu_point_rep" sequence="50" groups="group_pos_manager"/>
713         <!-- Invoice -->
714
715         <record model="ir.actions.act_window" id="action_pos_sale_all">
716             <field name="name">All Sales Orders</field>
717             <field name="type">ir.actions.act_window</field>
718             <field name="res_model">pos.order</field>
719             <field name="view_type">form</field>
720             <field name="view_mode">tree,form</field>
721             <field name="domain">[]</field>
722         </record>
723         <menuitem parent="menu_point_rep" id="menu_point_ofsale_all" action="action_pos_sale_all" sequence="1"/>
724
725         <record model="ir.actions.act_window" id="action_pos_invoice">
726             <field name="name">Invoices</field>
727             <field name="type">ir.actions.act_window</field>
728             <field name="res_model">account.invoice</field>
729             <field name="view_type">form</field>
730             <field name="view_mode">tree,form</field>
731             <field name="domain">[('origin','like','POS')]</field>
732         </record>
733
734                 <menuitem name="Reporting" id="menu_point_of_sale_reporting" parent="menu_point_root" sequence="20" />
735                 
736         <menuitem icon="STOCK_PRINT" action="action_report_pos_details"
737                 id="menu_pos_details" parent="menu_point_of_sale_reporting" sequence="6" />
738
739         <record model="ir.actions.client" id="action_pos_pos">
740             <field name="name">Start Point of Sale</field>
741             <field name="tag">pos.ui</field>
742         </record>
743
744         <record id="menu_point_root_touchscreen" model="ir.ui.menu">
745           <field name="name">Point of Sale</field>
746           <field name="sequence" eval="21"/>
747           <field name="action" ref="action_pos_pos"/>
748         </record>
749
750         <!-- use menuitem to add web_icon and web_icon_hover above -->
751         <menuitem id="menu_point_root_touchscreen"
752             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"/>
753
754         <record model="ir.ui.view" id="view_pos_config_form">
755             <field name="name">pos.config.form.view</field>
756             <field name="model">pos.config</field>
757             <field name="type">form</field>
758             <field name="arch" type="xml">
759                 <form string="PoS Configuration">
760                     <field name="name" />
761                     <notebook colspan="4">
762                         <page string="Payment Methods">
763                             <field name="journal_ids" colspan="4" nolabel="1">
764                                 <tree string="Journals">
765                                     <field name="code" />
766                                     <field name="name" />
767                                     <field name="type" />
768                                     <field name="opening_control" />
769                                     <field name="closing_control" />
770                                 </tree>
771                             </field>
772                         </page>
773                         <page string="Accounting">
774                             <separator string="Accounting" colspan="4" />
775                             <field name="shop_id" widget="selection" />
776                             <field name="journal_id" widget="selection" />
777
778                             <separator string="Cash Differences" colspan="4" />
779                             <field name="profit_account_id" />
780                             <field name="loss_account_id" />
781                             <field name="authorized_cashbox_diff" />
782                             <field name="authorized_cashbox_diff_fixed" />
783
784                         </page>
785                         <page string="Interfaces">
786                             <field name="iface_self_checkout" />
787                             <field name="iface_websql" />
788                             <field name="iface_led" />
789                             <field name="iface_cashdrawer" />
790                             <field name="iface_payment_terminal" />
791                             <field name="iface_electronic_scale" />
792                             <field name="iface_barscan" />
793                             <field name="iface_vkeyboard" />
794                         </page>
795                         <page string="Other">
796                             <field name="user_id" />
797                             <field name="sequence_id" />
798                         </page>
799
800
801                     </notebook>
802
803                     <group colspan="4" col="6">
804                         <field name="state" widget="statusbar" statusbar_visible="draft,active,inactive,deprecated" statusbar_colors='{"active":"green", "deprecated" : "red"}'/>
805                         <button string="Set to Draft" name="set_draft" type="object" states="deprecated"/>
806                         <button string="Set to Active" name="set_active" type="object" states="draft,inactive"/>
807                         <button string="Set to Inactive" name="set_inactive" type="object" states="active" />
808                         <button string="Set to Deprecated" name="set_deprecate" type="object" states="active,inactive" />
809                     </group>
810                 </form>
811             </field>
812         </record>
813
814         <record model="ir.ui.view" id="view_pos_config_tree">
815             <field name="name">pos.config.tree.view</field>
816             <field name="model">pos.config</field>
817             <field name="type">tree</field>
818             <field name="arch" type="xml">
819                 <tree string="PoS Configuration">
820                     <field name="name" />
821                     <field name="state" />
822                 </tree>
823             </field>
824         </record>
825
826         <act_window 
827             id="act_pos_config_sessions" 
828             name="Sessions"
829             src_model="pos.config"
830             res_model="pos.session"
831             domain="[('config_id', '=', active_id)]" />         
832
833         <record model="ir.actions.act_window" id="action_pos_config_pos">
834             <field name="name">Point of Sales</field>
835             <field name="type">ir.actions.act_window</field>
836             <field name="res_model">pos.config</field>
837             <field name="view_type">form</field>
838             <field name="view_mode">tree,form</field>
839         </record>
840
841         <menuitem
842             parent="menu_point_config_product"
843             action="action_pos_config_pos"
844             id="menu_pos_config_pos"
845             groups="group_pos_manager"/>
846
847
848         <record model="ir.ui.view" id="view_pos_session_form">
849             <field name="name">pos.session.form.view</field>
850             <field name="model">pos.session</field>
851             <field name="type">form</field>
852             <field name="arch" type="xml">
853                 <form string="PoS Session">
854                     <group colspan="4" col="6">
855                         <field name="config_id" />
856                         <field name="name" />
857                         <field name="user_id" />
858                         <field name="start_at" />
859                         <field name="stop_at" />
860                     </group>
861                     <notebook colspan="4">
862                         <page string="Cash">
863                             <field name="cash_register_id" invisible="0" />
864                             <field name="details_ids" colspan="4" nolabel="1">
865                                 <tree string="" editable="bottom">
866                                     <field name="pieces" readonly="1" />
867                                     <field name="number_opening" string="Opening Unit Numbers" on_change="on_change_sub_opening(pieces, number_opening, parent.balance_end)" />
868                                     <field name="subtotal_opening" string="Opening Subtotal"/>
869                                     <field name="number_closing" string="Closing Unit Numbers" on_change="on_change_sub_closing(pieces, number_closing, parent.balance_end)" />
870                                     <field name="subtotal_closing" string="Closing Subtotal"/>
871                                 </tree>
872                             </field>
873                         </page>
874                     </notebook>
875
876                     <group colspan="4" col="5">
877                         <field name="state" widget="statusbar" statusbar_visible="new,opened,closed,posted" statusbar_colors='{"posted":"green"}'/>
878                         <button name="open" type="workflow" string="Open" states="new" />
879                         <button name="close" type="workflow" string="Close" states="opened" />
880                         <button name="post" type="workflow" string="Post" states="closed" />
881                     </group>
882                 </form>
883             </field>
884         </record>
885
886         <record model="ir.ui.view" id="view_pos_session_tree">
887             <field name="name">pos.session.tree.view</field>
888             <field name="model">pos.session</field>
889             <field name="type">tree</field>
890             <field name="arch" type="xml">
891                 <tree string="PoS Session">
892                     <field name="config_id" />
893                     <field name="name" />
894                     <field name="user_id" />
895                     <field name="start_at" />
896                     <field name="stop_at" />
897                 </tree>
898             </field>
899         </record>
900
901         <record model="ir.ui.view" id="view_pos_session_search">
902             <field name="name">pos.session.search.view</field>
903             <field name="model">pos.session</field>
904             <field name="type">search</field>
905             <field name="arch" type="xml">
906                 <search string="PoS Session">
907                     <filter string="Open" domain="[('state', '=', 'opened')]" />
908                     <separator orientation="vertical"/>
909                     <filter string="Today" domain="[('start_at', '>=', time.strftime('%%Y-%%m-%%d 00:00:00'))]" />
910                     <separator orientation="vertical"/>
911                     <field name="config_id" />
912                     <field name="name" />
913                     <field name="user_id" />
914
915                     <newline />
916                     <group expand="0" string="Group By...">
917                         <filter string="User" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
918                         <filter string="PoS" domain="[]" context="{'group_by': 'user_id'}" />
919                     </group>
920                 </search>
921             </field>
922         </record>
923
924
925         <record model="ir.actions.act_window" id="action_pos_session">
926             <field name="name">PoS Sessions</field>
927             <field name="type">ir.actions.act_window</field>
928             <field name="res_model">pos.session</field>
929             <field name="view_type">form</field>
930             <field name="view_mode">tree,form</field>
931             <field name="search_view_id" ref="view_pos_session_search" />
932         </record>
933
934         <menuitem
935             parent="menu_point_of_sale"
936             action="action_pos_session"
937             id="menu_pos_session"
938             groups="group_pos_manager"/>
939
940         <act_window 
941             id="act_pos_session_orders" 
942             name="Orders"
943             src_model="pos.session"
944             res_model="pos.order"
945             domain="[('session_id', '=', active_id)]" />
946
947         <act_window
948             id="act_pos_session_statements"
949             name="Statements"
950             src_model="pos.session"
951             res_model="account.bank.statement"
952             domain="[]"
953             context="{'pos_session_id' : active_id}" />
954
955         <record id="view_pos_order_filter" model="ir.ui.view">
956             <field name="name">pos.order.list.select</field>
957             <field name="model">pos.order</field>
958             <field name="type">search</field>
959             <field name="arch" type="xml">
960                 <search string="Search Sales Order">
961                     <filter icon="terp-document-new" string="New" domain="[('state','=','draft')]"/>
962                     <filter icon="gtk-apply" string="Done" domain="[('state','in',('paid','invoiced','done'))]"/>
963                     <separator orientation="vertical"/>
964                     <filter icon="terp-check" string="Invoiced" domain="[('state','=','invoiced')]"/>
965                     <filter icon="gtk-convert" string="Posted" domain="[('state','=','done')]"/>
966                     <separator orientation="vertical"/>
967                     <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'))]"/>
968                     <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'))]"/>
969                     <separator orientation="vertical"/>
970                     <field name="name"/>
971                     <field name="user_id"/>
972                     <newline/>
973                     <group expand="0" string="Group By..." groups="base.group_extended">
974                         <filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
975                         <filter string="Salesman" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
976                         <separator string="" orientation="vertical"/>
977                         <filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
978                         <separator string="" orientation="vertical"/>
979                         <filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
980                     </group>
981                </search>
982             </field>
983         </record>
984     </data>
985 </openerp>