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