2 In order to test the POS in module, To give business owners a convenient way of checking out customers and of recording sales.
5 I configure all details for the Customer, Salesman and Product, Account.
7 I create View Account Type.
9 !record {model: account.account.type, id: account_account_type_view0}:
15 I create Income Account Type.
17 !record {model: account.account.type, id: account_account_type_income0}:
18 close_method: unreconciled
23 I create Expense Account Type.
25 !record {model: account.account.type, id: account_account_type_expense0}:
26 close_method: unreconciled
31 I create Cash Account Type.
33 !record {model: account.account.type, id: account_account_type_cash0}:
39 I create Minimal Chart Account.
41 !record {model: account.account, id: account_pos_account_minimalchart}:
43 company_id: base.main_company
44 currency_mode: current
49 user_type: account_account_type_view0
51 I create Payable Account.
53 !record {model: account.account, id: account_pos_account_payable}:
55 company_id: base.main_company
56 currency_mode: current
58 parent_id: account_pos_account_minimalchart
63 user_type: account_account_type_expense0
65 I create Receivable Account.
67 !record {model: account.account, id: account_pos_account_receivable}:
69 company_id: base.main_company
70 currency_mode: current
72 parent_id: account_pos_account_minimalchart
77 user_type: account_account_type_income0
79 I create Cash Account.
81 !record {model: account.account, id: account_pos_account_cash}:
83 company_id: base.main_company
84 currency_mode: current
86 parent_id: account_pos_account_minimalchart
90 user_type: account_account_type_cash0
92 I create Purchases Account.
94 !record {model: account.account, id: account_pos_account_purchases}:
96 company_id: base.main_company
97 currency_mode: current
99 parent_id: account_pos_account_minimalchart
103 user_type: account_account_type_expense0
105 I create Sales Account.
107 !record {model: account.account, id: account_pos_account_sales}:
109 company_id: base.main_company
110 currency_mode: current
112 parent_id: account_pos_account_minimalchart
116 user_type: account_account_type_income0
118 I create Purchase Journal.
120 !record {model: account.journal, id: account_pos_account_journal_purchasejournal}:
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
128 view_id: account.account_journal_view
130 I create Sale Journal.
132 !record {model: account.journal, id: account_pos_account_journal_salejournal}:
134 company_id: base.main_company
135 default_credit_account_id: account_pos_account_sales
136 default_debit_account_id: account_pos_account_sales
138 sequence_id: account.sequence_sale_journal
140 view_id: account.account_journal_view
142 I create Bank Journal.
144 !record {model: account.journal, id: account_pos_account_journal_bankjournal}:
146 company_id: base.main_company
147 default_credit_account_id: account_pos_account_cash
148 default_debit_account_id: account_pos_account_cash
150 sequence_id: account.sequence_journal
152 view_id: account.account_journal_bank_view
154 I create property for account payable.
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
162 I create property for account receivable.
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
170 I create Partner category Customers.
172 !record {model: res.partner.category, id: res_partner_category_customers0}:
177 !record {model: res.partner, id: res_partner_cleartrail0}:
179 - res_partner_category_customers0
182 I create partner address.
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
189 I create partner invoice address.
191 !record {model: res.partner.address, id: res_partner_address_2}:
192 partner_id: res_partner_cleartrail0
195 I create partner delivery address.
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
202 I create product category.
204 !record {model: product.category, id: product_category_allproductssellable0}:
205 name: Mobile Products Sellable
209 !record {model: res.partner, id: res_partner_microlinktechnologies0}:
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
217 I create partner address .
219 !record {model: res.partner.address, id: res_partner_address_0}:
221 partner_id: res_partner_microlinktechnologies0
222 street: Ash House, Ash Road
223 title: base.res_partner_title_miss
225 I create product category .
227 !record {model: product.category, id: product_category_services0}:
228 name: Mobile Services
230 I create product template .
232 !record {model: product.template, id: product_template_lgviewtysmart0}:
233 categ_id: product_category_allproductssellable0
234 cost_method: standard
237 name: LG Viewty Smart
238 procure_method: make_to_order
239 standard_price: 160.0
240 supply_method: produce
242 uom_id: product.product_uom_unit
243 uom_po_id: product.product_uom_unit
245 I create product LG Viewty Smart.
247 !record {model: product.product, id: product_product_lgviewtysmart0}:
248 categ_id: product_category_allproductssellable0
249 cost_method: standard
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
257 standard_price: 160.0
258 supply_method: produce
260 uom_id: product.product_uom_unit
261 uom_po_id: product.product_uom_unit
263 I create product category .
265 !record {model: product.category, id: product_category_computer0}:
268 I create product HP Pavilion Desktop PCs
270 !record {model: product.product, id: product_product_hppaviliondesktoppcs0}:
271 categ_id: product_category_computer0
272 cost_method: standard
275 name: HP Pavilion Desktop PCs
276 procure_method: make_to_stock
279 name: res_partner_microlinktechnologies0
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
288 I create New Order by adding the details of Salesman and "Product" as LG Viewty Smart Quantity as 10.
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')"
295 - company_id: base.main_company
298 product_id: product_product_lgviewtysmart0
301 partner_id: base.res_partner_agrolait
303 price_type: tax_excluded
304 pricelist_id: product.list0
305 sale_journal: account.sales_journal
307 user_salesman_id: base.user_root
311 !record {model: pos.discount, id: pos_discount_0}:
313 discount_notes: More then 5 product
315 I Apply the discount.
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"), })
324 !record {model: pos.open.statement, id: pos_open_statement_0}:
327 I open the statement.
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)
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"), })
342 I click on the "Make Payment" wizard.
344 !record {model: pos.make.payment, id: pos_make_payment_0}:
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
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"), })
360 I check the Statement lines are created automatically when payment is done.
362 !python {model: pos.order}: |
363 order=self.browse(cr,uid,ref("pos_order_pos0"))
364 assert(order.statement_ids!=[]), "Statement lines not created"
366 When I click on Return picking button , I get three option.
368 1. Cancel 2.Return Goods and Exchange 3.Return without Refund
370 When I click on Return Goods and Exchange.
372 Then it allows me to define the quantity of products, which will return to the stock.
374 I click on Return Picking button.
376 !record {model: pos.return, id: pos_return_0}:
379 I Return the product.
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"), })
386 Then it allows me to define the quantity of products, which will return to the stock.
388 I select the HP Pavilion Desktop PCs for exchange.
390 !record {model: pos.add.product, id: pos_add_product_0}:
391 product_id: product_product_hppaviliondesktoppcs0
394 I click on close button.
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"),
406 !record {model: pos.make.payment, id: pos_make_payment_1}:
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
415 For payment, I click on Make Payment.
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"), })
422 To check the Return without Refund . I click button "Return without Refund ".
424 !record {model: pos.return, id: pos_return_0}:
427 The quantity which is selected in Return lines wizard is refunded.
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"), })
434 To Close order, I use the wizard "Sale Confirm".
436 !record {model: pos.confirm, id: pos_confirm_0}:
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"),
446 I check order state is done.
448 !python {model: pos.order}: |
449 order=self.browse(cr,uid,ref("pos_order_pos0"))
450 assert(order.state=='done'), "Order is not done"