[MERGE] merge with latest stable
[odoo/odoo.git] / addons / point_of_sale / test / point_of_sale_test.yml
1 -
2   In order to test the POS in module, To give business owners a convenient way of checking out customers and of recording sales.
3
4 -
5   I  configure all details for the Customer, Salesman and Product, Account.
6 -
7   I create View Account Type.
8 -
9   !record {model: account.account.type, id: account_account_type_view0}:
10     close_method: none
11     code: View
12     name: View
13     sign: 1
14 -
15   I create Income Account Type.
16 -
17   !record {model: account.account.type, id: account_account_type_income0}:
18     close_method: unreconciled
19     code: Income
20     name: Income
21     sign: 1
22 -
23   I create Expense Account Type.
24 -
25   !record {model: account.account.type, id: account_account_type_expense0}:
26     close_method: unreconciled
27     code: Expense
28     name: Expense
29     sign: 1
30 -
31   I create Cash Account Type.
32 -
33   !record {model: account.account.type, id: account_account_type_cash0}:
34     close_method: balance
35     code: Cash
36     name: Cash
37     sign: 1
38 -
39   I create Minimal Chart Account.
40 -
41   !record {model: account.account, id: account_pos_account_minimalchart}:
42     code: '0'
43     company_id: base.main_company
44     currency_mode: current
45     name: Minimal Chart
46     parent_left: 1
47     parent_right: 12
48     type: view
49     user_type: account_account_type_view0
50 -
51    I create Payable Account.
52 -
53   !record {model: account.account, id: account_pos_account_payable}:
54     code: AP
55     company_id: base.main_company
56     currency_mode: current
57     name: Payable
58     parent_id: account_pos_account_minimalchart
59     parent_left: 2
60     parent_right: 3
61     reconcile: true
62     type: payable
63     user_type: account_account_type_expense0
64 -
65    I create Receivable Account.
66 -
67   !record {model: account.account, id: account_pos_account_receivable}:
68     code: AR
69     company_id: base.main_company
70     currency_mode: current
71     name: Receivable
72     parent_id: account_pos_account_minimalchart
73     parent_left: 4
74     parent_right: 5
75     reconcile: true
76     type: receivable
77     user_type: account_account_type_income0
78 -
79   I create Cash Account.
80 -
81   !record {model: account.account, id: account_pos_account_cash}:
82     code: C
83     company_id: base.main_company
84     currency_mode: current
85     name: Cash
86     parent_id: account_pos_account_minimalchart
87     parent_left: 6
88     parent_right: 7
89     type: other
90     user_type: account_account_type_cash0
91 -
92   I create Purchases Account.
93 -
94   !record {model: account.account, id: account_pos_account_purchases}:
95     code: P
96     company_id: base.main_company
97     currency_mode: current
98     name: Purchases
99     parent_id: account_pos_account_minimalchart
100     parent_left: 8
101     parent_right: 9
102     type: other
103     user_type: account_account_type_expense0
104 -
105   I create Sales Account.
106 -
107   !record {model: account.account, id: account_pos_account_sales}:
108     code: Sale
109     company_id: base.main_company
110     currency_mode: current
111     name: Sales
112     parent_id: account_pos_account_minimalchart
113     parent_left: 10
114     parent_right: 11
115     type: other
116     user_type: account_account_type_income0
117 -
118   I create Purchase Journal.
119 -
120   !record {model: account.journal, id: account_pos_account_journal_purchasejournal}:
121     code: PUJ
122     company_id: base.main_company
123     default_credit_account_id: account_pos_account_purchases
124     default_debit_account_id: account_pos_account_purchases
125     name: Purchase Journal
126     sequence_id: account.sequence_purchase_journal
127     type: purchase
128     view_id: account.account_journal_view
129 -
130   I create Sale Journal.
131 -
132   !record {model: account.journal, id: account_pos_account_journal_salejournal}:
133     code: SAJ
134     company_id: base.main_company
135     default_credit_account_id: account_pos_account_sales
136     default_debit_account_id: account_pos_account_sales
137     name: Sale Journal
138     sequence_id: account.sequence_sale_journal
139     type: sale
140     view_id: account.account_journal_view
141 -
142   I create Bank Journal.
143 -
144   !record {model: account.journal, id: account_pos_account_journal_bankjournal}:
145     code: BNK
146     company_id: base.main_company
147     default_credit_account_id: account_pos_account_cash
148     default_debit_account_id: account_pos_account_cash
149     name: Bank Journal
150     sequence_id: account.sequence_journal
151     type: cash
152     view_id: account.account_journal_bank_view
153 -
154   I create property for account payable.
155 -
156   !record {model: ir.property, id: ir_property_propertyaccountexpensecateg0}:
157     company_id: base.main_company
158     fields_id: account.field_res_partner_property_account_payable
159     name: property_account_expense_categ
160     value_reference: account.account,5
161 -
162   I create property for account receivable.
163 -
164   !record {model: ir.property, id: ir_property_propertyaccountincomecateg0}:
165     company_id: base.main_company
166     fields_id: account.field_res_partner_property_account_receivable
167     name: property_account_income_categ
168     value_reference: account.account,6
169 -
170   I create Partner category Customers.
171 -
172   !record {model: res.partner.category, id: res_partner_category_customers0}:
173     name: Customers
174 -
175   I create partner
176 -
177   !record {model: res.partner, id: res_partner_cleartrail0}:
178     category_id:
179       - res_partner_category_customers0
180     name: Cleartrail
181 -
182   I create partner address.
183 -
184   !record {model: res.partner.address, id: res_partner_address_1}:
185     partner_id: res_partner_cleartrail0
186     street: onam plaza, 14 B palasia A B Road
187     type: contact
188 -
189   I create partner  invoice address.
190 -
191   !record {model: res.partner.address, id: res_partner_address_2}:
192     partner_id: res_partner_cleartrail0
193     type: invoice
194 -
195   I create partner delivery address.
196 -
197   !record {model: res.partner.address, id: res_partner_address_3}:
198     partner_id: res_partner_cleartrail0
199     street: sangam house 15 B palasia, A B Road
200     type: delivery
201 -
202   I create product category.
203 -
204   !record {model: product.category, id: product_category_allproductssellable0}:
205     name: Mobile Products Sellable
206 -
207    I create partner.
208 -
209   !record {model: res.partner, id: res_partner_microlinktechnologies0}:
210     address:
211       - street: Kailash Vaibhav, Parksite
212     name: Micro Link Technologies
213     property_account_payable: account_pos_account_payable
214     property_account_receivable: account_pos_account_receivable
215     supplier: true
216 -
217   I create partner address .
218 -
219   !record {model: res.partner.address, id: res_partner_address_0}:
220     country_id: base.in
221     partner_id: res_partner_microlinktechnologies0
222     street: Ash House, Ash Road
223     title: base.res_partner_title_miss
224 -
225   I create product category .
226 -
227   !record {model: product.category, id: product_category_services0}:
228     name: Mobile Services
229 -
230   I create product template .
231 -
232   !record {model: product.template, id: product_template_lgviewtysmart0}:
233     categ_id: product_category_allproductssellable0
234     cost_method: standard
235     list_price: 170.0
236     mes_type: fixed
237     name: LG Viewty Smart
238     procure_method: make_to_order
239     standard_price: 160.0
240     supply_method: produce
241     type: product
242     uom_id: product.product_uom_unit
243     uom_po_id: product.product_uom_unit
244 -
245   I create product  LG Viewty Smart.
246 -
247   !record {model: product.product, id: product_product_lgviewtysmart0}:
248     categ_id: product_category_allproductssellable0
249     cost_method: standard
250     list_price: 170.0
251     mes_type: fixed
252     name: LG Viewty Smart
253     procure_method: make_to_order
254     property_account_expense: account_pos_account_payable
255     property_account_income: account_pos_account_receivable
256     seller_delay: '1'
257     standard_price: 160.0
258     supply_method: produce
259     type: product
260     uom_id: product.product_uom_unit
261     uom_po_id: product.product_uom_unit
262 -
263   I create product category .
264 -
265   !record {model: product.category, id: product_category_computer0}:
266     name: Computer
267 -
268   I create product  HP Pavilion Desktop PCs
269 -
270   !record {model: product.product, id: product_product_hppaviliondesktoppcs0}:
271     categ_id: product_category_computer0
272     cost_method: standard
273     mes_type: fixed
274     list_price: 1000.0    
275     name: HP Pavilion Desktop PCs
276     procure_method: make_to_stock
277     seller_ids:
278       - delay: 1
279         name: res_partner_microlinktechnologies0
280         min_qty: 5.0
281     supply_method: buy
282     type: product
283     uom_id: product.product_uom_unit
284     uom_po_id: product.product_uom_unit
285     property_account_expense: account_pos_account_payable
286     property_account_income: account_pos_account_receivable
287 -
288   I create New Order by adding the details of Salesman and  "Product" as LG Viewty Smart Quantity as 10.
289 -
290   !record {model: pos.order, id: pos_order_pos0}:
291     company_id: base.main_company
292     date_order: !eval time.strftime('%Y-%m-%d %H:%M:%S')
293     date_validity: !eval "(datetime.now()+timedelta(180)).strftime('%Y-%m-%d')"
294     lines:
295       - company_id: base.main_company
296         name: Order Line/01
297         notice: No Discount
298         product_id: product_product_lgviewtysmart0
299         qty: 10.0
300         qty_rfd: 0.0
301     partner_id: base.res_partner_agrolait
302     name: POS/001
303     price_type: tax_excluded
304     pricelist_id: product.list0
305     sale_journal: account.sales_journal
306     shop_id: sale.shop
307     user_salesman_id: base.user_root
308
309   I add discount. 
310
311   !record {model: pos.discount, id: pos_discount_0}:
312     discount: 5.0
313     discount_notes: More then 5 product
314
315   I Apply the discount. 
316
317   !python {model: pos.discount}: |
318     self.apply_discount(cr, uid, [ref("pos_discount_0")], {"lang": "en_US", "active_model":
319       "pos.order", "active_ids": [ref("pos_order_pos0")], "tz": False, "active_id":
320       ref("pos_order_pos0"), })
321
322   I open the register.
323
324   !record {model: pos.open.statement, id: pos_open_statement_0}:
325     {}
326
327   I open the statement.
328
329   !python {model: pos.open.statement}: |
330     jou_obj = self.pool.get('account.journal')
331     statement_obj = self.pool.get('account.bank.statement')
332     cr.execute("SELECT DISTINCT journal_id FROM pos_journal_users "
333                     "WHERE user_id = %s ORDER BY journal_id"% (uid, ))
334     jou_ids = map(lambda x1: x1[0], cr.fetchall())
335     journal_ids = jou_obj.search(cr, uid, [('auto_cash', '=', True), ('type', '=', 'cash'), ('id', 'in', jou_ids)], context=context)
336     ids = statement_obj.search(cr, uid, [('state', '=', 'open'), ('user_id', '=', uid), ('journal_id', 'in', journal_ids)], context=context)
337     if not ids:
338         self.open_statement(cr, uid, [ref("pos_open_statement_0")], {"lang": "en_US", "active_model":
339           "ir.ui.menu", "active_ids": [ref("point_of_sale.menu_open_statement")], "tz":
340           False, "active_id": ref("point_of_sale.menu_open_statement"), })
341 -
342   I click on the "Make Payment" wizard.  
343
344   !record {model: pos.make.payment, id: pos_make_payment_0}:
345     amount: 1615.0
346     journal: 7
347     payment_date: !eval time.strftime("%Y-%m-%d")
348     payment_name: Payment
349     product_id: product_product_hppaviliondesktoppcs0
350     pricelist_id: product.list0
351     partner_id: base.res_partner_agrolait
352
353   I make the payment.
354
355   !python {model: pos.make.payment}: |
356     self.check(cr, uid, [ref("pos_make_payment_0")], {"lang": "en_US", "active_model":
357       "pos.order", "active_ids": [ref("point_of_sale.pos_order_pos0")], "tz":
358       False, "active_id": ref("point_of_sale.pos_order_pos0"), })
359 -
360   I check the Statement lines are created automatically when payment is done.
361 -
362   !python {model: pos.order}: |
363    order=self.browse(cr,uid,ref("pos_order_pos0"))
364    assert(order.statement_ids!=[]), "Statement lines not created"    
365 -
366   When I click on Return picking button , I get three option.
367 -
368   1. Cancel 2.Return Goods and Exchange 3.Return without Refund
369 -
370   When I click on  Return Goods and Exchange.  
371 -  
372   Then it allows me to define the quantity of products, which will return to the stock. 
373
374   I click on Return Picking button.
375
376   !record {model: pos.return, id: pos_return_0}:
377    {}
378
379   I Return the product.
380
381   !python {model: pos.return}: |
382     self.create_returns(cr, uid, [ref("pos_return_0")], {"lang": "en_US", "active_model":
383       "pos.order", "active_ids": [ref("point_of_sale.pos_order_pos0")], "tz":
384       False, "active_id": ref("point_of_sale.pos_order_pos0"), })
385
386   Then it allows me to define the quantity of products, which will return to the stock.
387 -
388   I select the  HP Pavilion Desktop PCs for exchange.   
389
390   !record {model: pos.add.product, id: pos_add_product_0}:
391     product_id: product_product_hppaviliondesktoppcs0
392     quantity: 5.0
393 -    
394   I click on close button.
395
396   !python {model: pos.add.product}: |
397     return_obj = self.pool.get('pos.return')
398     context['active_ids'] = [ref("pos_order_pos0")] 
399     return_obj.view_init(cr, uid, [],context=context)
400     self.close_action(cr, uid, [ref("pos_add_product_0")], {"lang": "en_US", "active_model":
401       "pos.order", "active_ids": [ref("pos_order_pos0")], "tz": False, "active_id": ref("pos_order_pos0"),
402       })
403 -    
404   I create payment.
405
406   !record {model: pos.make.payment, id: pos_make_payment_1}:
407     amount: 680.0
408     journal: 7
409     payment_date: !eval time.strftime("%Y-%m-%d")
410     payment_name: Payment
411     product_id: product_product_hppaviliondesktoppcs0
412     pricelist_id: product.list0
413     partner_id: base.res_partner_agrolait
414
415   For payment, I click on  Make Payment. 
416
417   !python {model: pos.make.payment}: |
418     self.check(cr, uid, [ref("pos_make_payment_1")], {"lang": "en_US", "active_model":
419       "pos.order", "active_ids": [ref("pos_order_pos0")], "tz":
420       False, "active_id": ref("pos_order_pos0"), })    
421
422   To check the Return without Refund . I click button "Return without Refund ".
423
424   !record {model: pos.return, id: pos_return_0}:
425    {}
426 -
427   The quantity which is selected in Return lines wizard is refunded.
428
429   !python {model: pos.return}: |
430     self.create_returns2(cr, uid, [ref("pos_return_0")], {"lang": "en_US", "active_model":
431       "pos.order", "active_ids": [ref("pos_order_pos0")], "tz":
432       False, "active_id": ref("pos_order_pos0"), })
433
434   To Close order, I use the wizard "Sale Confirm".
435
436   !record {model: pos.confirm, id: pos_confirm_0}:
437     {}
438
439   I close this order.
440
441   !python {model: pos.confirm}: |
442     self.action_confirm(cr, uid, [ref("pos_confirm_0")], {"lang": "en_US", "active_model":
443       "pos.order", "active_ids": [ref("pos_order_pos0")], "tz": False, "active_id": ref("pos_order_pos0"),
444       })
445
446   I check order state is done.
447
448   !python {model: pos.order}: |
449     order=self.browse(cr,uid,ref("pos_order_pos0"))    
450     assert(order.state=='done'), "Order is not done"