[FIX] sale,stock_location: Fixed runbot errors.
[odoo/odoo.git] / addons / sale / test / picking_order_policy.yml
1 -
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'
4 -
5   !record {model: sale.order, id: sale_order_so7}:
6     date_order: !eval time.strftime('%Y-%m-%d')
7     invoice_quantity: order
8     name: Test_SO007
9     order_line:
10       - name: Slider Mobile
11         price_unit: 200
12         product_uom: product.product_uom_unit
13         product_uom_qty: 500.0
14         state: draft
15         delay: 7.0
16         product_id: sale.product_product_slidermobile0
17         product_uos_qty: 500.0
18         th_weight: 0.0
19         type: make_to_order
20     order_policy: picking
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
27     shop_id: sale.shop
28 -
29   I confirm the sale order.
30 -
31   !workflow {model: sale.order, action: order_confirm, ref: sale_order_so7}
32 -
33   I verify that picking has been generated for the sale order.
34 -
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"
38 -
39   Then I done the picking
40 -
41   !python {model: stock.picking }: |
42    import time
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')])
46    if picking_id:
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])
54 -
55   Then I click on 'Create Invoices' button
56 -
57   !python {model: stock.invoice.onshipping}: |
58     import time
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]})
65 -
66   I check that an invoice has been created.
67 -
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"
71 -
72   I open the Invoice for the SO.
73 -
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"))
77     import netsvc
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)
82 -
83   Assign analytic journal into bank journal
84 -
85   !record {model: account.journal, id: sale.account_journal_bankjournal0}:
86     analytic_journal_id: account.cose_journal_sale
87 -
88   I pay the invoice
89 -
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'),
98         name='test')
99 -
100   I verify the invoice is in paid state.
101 -
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."
108 -
109   I check that Paid has been set to true.
110 -
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"
114 -
115   I verify that a procurement has been generated for so
116 -
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!')
123 -
124   Then I click on the "Run Procurement" button
125 -
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"))
129     import netsvc
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)
134 -
135   I verify that a procurement state is "running"
136 -
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!')
147 -
148   I verify that a purchase order has been generated
149 -
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')
160 -
161   I click on the "Confirm" button to confirm the purchase order
162 -
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"))
171         import netsvc
172         wf_service = netsvc.LocalService("workflow")
173         pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
174         for pur in pur_ids:
175           wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_confirm', cr)
176 -
177   I click on the "Approved by supplier" button to approve the purchase order
178 -
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"))
187         import netsvc
188         wf_service = netsvc.LocalService("workflow")
189         pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
190         for pur in pur_ids:
191           wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
192 -
193   I verify that a picking related to purchase order has been generated and I process it
194 -
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])
211 -
212   I verify that picking for purchase order has been done.
213 -
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!')
227 -
228   I verify that delivery order has been generated for sale order, and process it
229 -
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])
242 -
243   I verify that delivery state is done
244 -
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)])
249    if picking_id:
250      pick = self.browse(cr,uid,picking_id[0])
251      assert (pick.state) =='done', "Picking for SO is not in done state."
252 -
253   I verify that the sale order is marked as delivered
254 -
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"
258 -
259   I verify that a sale order is in done state
260 -
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."
264