[FIX] sale,stock_location: Fixed runbot errors.
[odoo/odoo.git] / addons / sale / test / prepaid_order_policy.yml
1 -
2   I create a Sale Order for LG Viewty Smart for qty 500 having Shipping Policy is 'Payment Before Delivery'
3 -
4   !record {model: sale.order, id: sale_order_so1}:
5     date_order: !eval time.strftime('%Y-%m-%d')
6     invoice_quantity: order
7     name: Test_SO001
8     order_line:
9       - name: Slider Mobile
10         price_unit: 200
11         product_uom: product.product_uom_unit
12         product_uom_qty: 500.0
13         state: draft
14         delay: 7.0
15         product_id: sale.product_product_slidermobile0
16         product_uos_qty: 500.0
17         th_weight: 0.0
18         type: make_to_order
19     order_policy: prepaid
20     partner_id: sale.res_partner_cleartrail0
21     partner_invoice_id: sale.res_partner_address_2
22     partner_order_id: sale.res_partner_address_1
23     partner_shipping_id: sale.res_partner_address_3
24     picking_policy: direct
25     pricelist_id: product.list0
26     shop_id: sale.shop
27 -
28   I confirm the sale order.
29 -
30   !workflow {model: sale.order, action: order_confirm, ref: sale_order_so1}
31 -
32   I verify whether the invoice has been generated for SO since Shipping policy is 'Payment Before Delivery'
33 -
34   !python {model: sale.order}: |
35     so = self.browse(cr, uid, ref("sale_order_so1"))
36     assert so.invoice_ids, "Invoices has not been generated for sale_order_so1"
37 -
38   I verify there are no pickings attached to this sale order
39 -
40   !python {model: stock.picking }: |
41    sale_order_obj = self.pool.get('sale.order')
42    so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
43    picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
44    assert not picking_id,"As the order policy is prepaid, the sale order shouldn't have already a picking."
45 -
46   I open the Invoice for the SO.
47 -
48   !python {model: account.invoice}: |
49     sale_order_obj = self.pool.get('sale.order')
50     so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
51     import netsvc
52     wf_service = netsvc.LocalService("workflow")
53     invoice_ids = so.invoice_ids
54     for invoice in invoice_ids:
55       wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
56 -
57   I assign an analytic journal to the Bank journal
58 -
59   !record {model: account.journal, id: sale.account_journal_bankjournal0}:
60     analytic_journal_id: account.cose_journal_sale
61 -
62   I pay the invoice
63 -
64   !python {model: account.invoice}: |
65     sale_order_obj = self.pool.get('sale.order')
66     so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
67     invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
68     self.pay_and_reconcile(cr, uid, invoice_id,
69         85000.0, ref('account.cash'), ref('account.period_8'),
70         ref('sale.account_journal_bankjournal0'), ref('account.cash'),
71         ref('account.period_5'), ref('sale.account_journal_bankjournal0'),
72         name='test002')
73 -
74   I verify the invoice is in done state or not.
75 -
76   !python {model: account.invoice}: |
77     sale_order_obj = self.pool.get('sale.order')
78     so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
79     invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','paid')])
80     assert invoice_id, "Invoice for SO is not in done state."
81 -
82   I check that Paid has been set to true.
83 -
84   !python {model: sale.order}: |
85     sale_id=self.browse(cr, uid, ref("sale_order_so1"))
86     assert(sale_id.invoiced == True), "Paid has not been set to true"
87 -
88   I verify the picking associated with the sale order sale_order_so1
89 -
90   !python {model: sale.order}: |
91     so = self.browse(cr, uid, ref("sale_order_so1"))
92     assert so.picking_ids,"Picking has not been generated"
93 -
94   Products are delivered to the Cleartrail Customer.
95 -
96   !python {model: stock.picking }: |
97    import time
98    sale_order_obj = self.pool.get('sale.order')
99    so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
100    picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
101    if picking_id:
102       pick=self.browse(cr,uid,picking_id[0])
103       pick.force_assign(cr, uid)
104       stock_partial_picking = self.pool.get('stock.partial.picking')
105       partial_id = stock_partial_picking.create(cr, uid, {},
106               context={'active_model': 'stock.picking',
107                        'active_ids': [pick.id]})
108       stock_partial_picking.do_partial(cr, uid, [partial_id])
109 -
110   I verify that picking order is in done state.
111 -
112   !python {model: stock.picking }: |
113    sale_order_obj = self.pool.get('sale.order')
114    so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
115    picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
116    pick = self.browse(cr,uid,picking_id[0])
117    assert (pick.state) =='done', "Picking for SO is not in done state."
118 -
119   I verify that a procurement has been generated for so
120 -
121   !python {model: procurement.order}: |
122     from tools.translate import _
123     sale_order_obj = self.pool.get('sale.order')
124     so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
125     proc_ids = self.search(cr, uid, [('origin','=',so.name)])
126     assert proc_ids, _('No Procurements!')
127 -
128   Then I click on the "Run Procurement" button
129 -
130   !python {model: procurement.order}: |
131     sale_order_obj = self.pool.get('sale.order')
132     so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
133     import netsvc
134     wf_service = netsvc.LocalService("workflow")
135     proc_ids = self.search(cr, uid, [('origin','=',so.name)])
136     for proc in proc_ids:
137       wf_service.trg_validate(uid, 'procurement.order',proc,'button_check', cr)
138 -
139   I verify that a procurement state is "running"
140 -
141   !python {model: procurement.order}: |
142     from tools.translate import _
143     modules = self.pool.get('ir.module.module')
144     mod_pur = modules.search(cr, uid, [('name','=','purchase')])
145     mod_brw = modules.browse(cr,uid,mod_pur)[0]
146     if(mod_brw.state == 'installed'):
147         sale_order_obj = self.pool.get('sale.order')
148         so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
149         proc_ids = self.search(cr, uid, [('origin','=',so.name),('state','=','running')])
150         assert proc_ids, _('Procurement is not in the running state!')
151 -
152   I verify that a purchase order has been generated
153 -
154   !python {model: sale.order}: |
155     from tools.translate import _
156     modules = self.pool.get('ir.module.module')
157     mod_pur = modules.search(cr, uid, [('name','=','purchase')])
158     mod_brw = modules.browse(cr,uid,mod_pur)[0]
159     if(mod_brw.state == 'installed'):
160         so = self.browse(cr, uid, ref("sale_order_so1"))
161         pur_obj=self.pool.get('purchase.order')
162         pur_id=pur_obj.search(cr, uid, [('origin','=',so.name)])
163         assert pur_id, _('Purchase order has not been generated')
164 -
165   I click on the "Confirm" button to confirm the purchase order
166 -
167   !python {model: sale.order}: |
168     from tools.translate import _
169     modules = self.pool.get('ir.module.module')
170     mod_pur = modules.search(cr, uid, [('name','=','purchase')])
171     mod_brw = modules.browse(cr,uid,mod_pur)[0]
172     if(mod_brw.state == 'installed'):
173         pur_obj=self.pool.get('purchase.order')
174         so = self.browse(cr, uid, ref("sale_order_so1"))
175         import netsvc
176         wf_service = netsvc.LocalService("workflow")
177         pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
178         for pur in pur_ids:
179           wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_confirm', cr)
180 -
181   I click on the "Approved by supplier" button to approve the purchase order
182 -
183   !python {model: sale.order}: |
184     from tools.translate import _
185     modules = self.pool.get('ir.module.module')
186     mod_pur = modules.search(cr, uid, [('name','=','purchase')])
187     mod_brw = modules.browse(cr,uid,mod_pur)[0]
188     if (mod_brw.state == 'installed'):
189         pur_obj = self.pool.get('purchase.order')
190         so = self.browse(cr, uid, ref("sale_order_so1"))
191         import netsvc
192         wf_service = netsvc.LocalService("workflow")
193         pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
194         for pur in pur_ids:
195           wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
196 -
197   I verify that a picking related to purchase order has been generated and I process it
198 -
199   !python {model: sale.order}: |
200     modules = self.pool.get('ir.module.module')
201     mod_pur = modules.search(cr, uid, [('name','=','purchase')])
202     mod_brw = modules.browse(cr,uid,mod_pur)[0]
203     if (mod_brw.state == 'installed'):
204         pur_obj = self.pool.get('purchase.order')
205         so = self.browse(cr, uid, ref("sale_order_so1"))
206         pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
207         po = pur_obj.browse(cr, uid, pur_id)[0]
208         assert(po.picking_ids),"Picking for purchase order has not been generated"
209         picking, = po.picking_ids
210         stock_partial_picking = self.pool.get('stock.partial.picking')
211         partial_id = stock_partial_picking.create(cr, uid, {},
212                 context={'active_model': 'stock.picking',
213                          'active_ids': [picking.id]})
214         stock_partial_picking.do_partial(cr, uid, [partial_id])
215         picking_obj = self.pool.get('stock.picking')
216         ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id),('state', '=', 'done')])
217         assert ids, 'Picking should be marked done!'
218 -
219   I verify that the sale order is marked as delivered
220 -
221   !python {model: sale.order}: |
222     so = self.browse(cr, uid, ref("sale_order_so1"))
223     assert (so.shipped == True), "Sale order is not marked as delivered"
224 -
225   I verify that a sale order is in done state
226 -
227    !python {model: sale.order}: |
228     so = self.browse(cr, uid, ref("sale_order_so1"))
229     assert (so.state == 'done'), "Sale order is not in the done state."