2 In order to test the Sale module in OpenERP,
3 I create a Sale Order for Slider Mobile for qty 500 having Shipping Policy is 'Invoice from Picking'
5 !record {model: sale.order, id: sale_order_so7}:
6 date_order: !eval time.strftime('%Y-%m-%d')
7 invoice_quantity: order
12 product_uom: product.product_uom_unit
13 product_uom_qty: 500.0
16 product_id: sale.product_product_slidermobile0
17 product_uos_qty: 500.0
21 partner_id: sale.res_partner_cleartrail0
22 partner_invoice_id: sale.res_partner_address_2
23 partner_order_id: sale.res_partner_address_1
24 partner_shipping_id: sale.res_partner_address_3
25 picking_policy: direct
26 pricelist_id: product.list0
29 I confirm the sale order.
31 !workflow {model: sale.order, action: order_confirm, ref: sale_order_so7}
33 I verify that picking has been generated for the sale order.
35 !python {model: sale.order}: |
36 so = self.browse(cr, uid, ref("sale_order_so7"))
37 assert so.picking_ids,"Picking has not been generated for sale_order_so7"
39 Then I done the picking
41 !python {model: stock.picking }: |
43 sale_order_obj = self.pool.get('sale.order')
44 so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
45 picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
47 pick=self.browse(cr,uid,picking_id[0])
48 pick.force_assign(cr, uid)
49 stock_partial_picking = self.pool.get('stock.partial.picking')
50 partial_id = stock_partial_picking.create(cr, uid, {},
51 context={'active_model': 'stock.picking',
52 'active_ids': [pick.id]})
53 stock_partial_picking.do_partial(cr, uid, [partial_id])
55 Then I click on 'Create Invoices' button
57 !python {model: stock.invoice.onshipping}: |
59 sale_obj=self.pool.get('sale.order')
60 sale_id=sale_obj.browse(cr, uid, ref("sale_order_so7"))
61 ids = [x.id for x in sale_id.picking_ids]
62 wiz_id = self.create(cr, uid, {'invoice_date': time.strftime('%Y-%m-%d'), 'journal_id': ref('account.sales_journal')},
63 {'active_ids': ids, 'active_model': 'stock.picking'})
64 self.create_invoice(cr, uid, [wiz_id], {"active_ids": ids, "active_id": ids[0]})
66 I check that an invoice has been created.
68 !python {model: sale.order}: |
69 sale_id=self.browse(cr, uid, ref("sale_order_so7"))
70 assert(sale_id.invoice_ids), "Invoice has not been created"
72 I open the Invoice for the SO.
74 !python {model: account.invoice}: |
75 sale_order_obj = self.pool.get('sale.order')
76 so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
78 wf_service = netsvc.LocalService("workflow")
79 invoice_ids = so.invoice_ids
80 for invoice in invoice_ids:
81 wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
83 Assign analytic journal into bank journal
85 !record {model: account.journal, id: sale.account_journal_bankjournal0}:
86 analytic_journal_id: account.cose_journal_sale
90 !python {model: account.invoice}: |
91 sale_order_obj = self.pool.get('sale.order')
92 so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
93 invoice_id = self.search(cr, uid, [('origin','like',so.name),('state','=','open')])
94 self.pay_and_reconcile(cr, uid, invoice_id,
95 255000.0, ref('account.cash'), ref('account.period_8'),
96 ref('sale.account_journal_bankjournal0'), ref('account.cash'),
97 ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
100 I verify the invoice is in paid state.
102 !python {model: account.invoice}: |
103 sale_order_obj = self.pool.get('sale.order')
104 so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
105 invoice_ids = so.invoice_ids
106 for invoice in invoice_ids:
107 assert (invoice.state) =='paid', "Invoice for SO is not in done state."
109 I check that Paid has been set to true.
111 !python {model: sale.order}: |
112 sale_id=self.browse(cr, uid, ref("sale_order_so7"))
113 assert(sale_id.invoiced == True), "Paid has not been set to true"
115 I verify that a procurement has been generated for so
117 !python {model: procurement.order}: |
118 from tools.translate import _
119 sale_order_obj = self.pool.get('sale.order')
120 so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
121 proc_ids = self.search(cr, uid, [('origin','=',so.name)])
122 assert proc_ids, _('No Procurements!')
124 Then I click on the "Run Procurement" button
126 !python {model: procurement.order}: |
127 sale_order_obj = self.pool.get('sale.order')
128 so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
130 wf_service = netsvc.LocalService("workflow")
131 proc_ids = self.search(cr, uid, [('origin','=',so.name)])
132 for proc in proc_ids:
133 wf_service.trg_validate(uid, 'procurement.order',proc,'button_check', cr)
135 I verify that a procurement state is "running"
137 !python {model: procurement.order}: |
138 from tools.translate import _
139 modules = self.pool.get('ir.module.module')
140 mod_pur = modules.search(cr, uid, [('name','=','purchase')])
141 mod_brw = modules.browse(cr,uid,mod_pur)[0]
142 if (mod_brw.state == 'installed'):
143 sale_order_obj = self.pool.get('sale.order')
144 so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
145 proc_ids = self.search(cr, uid, [('origin','=',so.name),('state','=','running')])
146 assert proc_ids, _('Procurement is not in the running state!')
148 I verify that a purchase order has been generated
150 !python {model: sale.order}: |
151 from tools.translate import _
152 modules = self.pool.get('ir.module.module')
153 mod_pur = modules.search(cr, uid, [('name','=','purchase')])
154 mod_brw = modules.browse(cr,uid,mod_pur)[0]
155 if (mod_brw.state == 'installed'):
156 so = self.browse(cr, uid, ref("sale_order_so7"))
157 pur_obj=self.pool.get('purchase.order')
158 pur_id=pur_obj.search(cr, uid, [('origin','=',so.name)])
159 assert pur_id, _('Purchase order has not been generated')
161 I click on the "Confirm" button to confirm the purchase order
163 !python {model: sale.order}: |
164 from tools.translate import _
165 modules = self.pool.get('ir.module.module')
166 mod_pur = modules.search(cr, uid, [('name','=','purchase')])
167 mod_brw = modules.browse(cr,uid,mod_pur)[0]
168 if (mod_brw.state == 'installed'):
169 pur_obj=self.pool.get('purchase.order')
170 so = self.browse(cr, uid, ref("sale_order_so7"))
172 wf_service = netsvc.LocalService("workflow")
173 pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
175 wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_confirm', cr)
177 I click on the "Approved by supplier" button to approve the purchase order
179 !python {model: sale.order}: |
180 from tools.translate import _
181 modules = self.pool.get('ir.module.module')
182 mod_pur = modules.search(cr, uid, [('name','=','purchase')])
183 mod_brw = modules.browse(cr,uid,mod_pur)[0]
184 if (mod_brw.state == 'installed'):
185 pur_obj = self.pool.get('purchase.order')
186 so = self.browse(cr, uid, ref("sale_order_so7"))
188 wf_service = netsvc.LocalService("workflow")
189 pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
191 wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
193 I verify that a picking related to purchase order has been generated and I process it
195 !python {model: sale.order}: |
196 modules = self.pool.get('ir.module.module')
197 mod_pur = modules.search(cr, uid, [('name','=','purchase')])
198 mod_brw = modules.browse(cr,uid,mod_pur)[0]
199 if (mod_brw.state == 'installed'):
200 pur_obj = self.pool.get('purchase.order')
201 so = self.browse(cr, uid, ref("sale_order_so7"))
202 pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
203 po = pur_obj.browse(cr, uid, pur_id)[0]
204 assert(po.picking_ids),"Picking for purchase order has not been generated"
205 picking, = po.picking_ids
206 stock_partial_picking = self.pool.get('stock.partial.picking')
207 partial_id = stock_partial_picking.create(cr, uid, {},
208 context={'active_model': 'stock.picking',
209 'active_ids': [picking.id]})
210 stock_partial_picking.do_partial(cr, uid, [partial_id])
212 I verify that picking for purchase order has been done.
214 !python {model: sale.order}: |
215 from tools.translate import _
216 modules = self.pool.get('ir.module.module')
217 mod_pur = modules.search(cr, uid, [('name','=','purchase')])
218 mod_brw = modules.browse(cr,uid,mod_pur)[0]
219 if (mod_brw.state == 'installed'):
220 pur_obj = self.pool.get('purchase.order')
221 so = self.browse(cr, uid, ref("sale_order_so7"))
222 pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
223 po = pur_obj.browse(cr, uid, pur_id)[0]
224 picking_obj = self.pool.get('stock.picking')
225 ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id ),('state', '=', 'done')])
226 assert ids, _('Picking is not in the done state!')
228 I verify that delivery order has been generated for sale order, and process it
230 !python {model: stock.picking }: |
231 sale_order_obj = self.pool.get('sale.order')
232 so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
233 picking_id = self.search(cr, uid, [('origin','=',so.name)])
234 assert (picking_id),"Delivery order has not been generated"
235 pick=self.browse(cr,uid,picking_id[0])
236 pick.force_assign(cr, uid)
237 stock_partial_picking = self.pool.get('stock.partial.picking')
238 partial_id = stock_partial_picking.create(cr, uid, {},
239 context={'active_model': 'stock.picking',
240 'active_ids': [pick.id]})
241 stock_partial_picking.do_partial(cr, uid, [partial_id])
243 I verify that delivery state is done
245 !python {model: stock.picking }: |
246 sale_order_obj = self.pool.get('sale.order')
247 so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
248 picking_id = self.search(cr, uid, [('origin','=',so.name)])
250 pick = self.browse(cr,uid,picking_id[0])
251 assert (pick.state) =='done', "Picking for SO is not in done state."
253 I verify that the sale order is marked as delivered
255 !python {model: sale.order}: |
256 so = self.browse(cr, uid, ref("sale_order_so7"))
257 assert (so.shipped == True), "Picked has not been set to True"
259 I verify that a sale order is in done state
261 !python {model: sale.order}: |
262 so = self.browse(cr, uid, ref("sale_order_so7"))
263 assert (so.state == 'done'), "Sale order is not in the done state."