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