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