~unifield-team/unifield-wm/us-826

« back to all changes in this revision

Viewing changes to tender_flow/test/tender_flow.yml

UF-358 [ADD] Initial creation : backup of this day

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
    
2
 
3
 
  Creating a res.partner record
4
 
5
 
  !record {model: res.partner, id: res_partner_0}:
6
 
    credit_limit: 0.0
7
 
    debit_limit: 0.0
8
 
    name: Partner0
9
 
    supplier: true
10
 
    customer_lt: 1
11
 
    procurement_lt: 2
12
 
    transport_0_lt: 3
13
 
    transport_0: 'air'
14
 
    
15
 
16
 
  Creating a res.partner.address record
17
 
18
 
  !record {model: res.partner.address, id: res_partner_address_0}:
19
 
    partner_id: res_partner_0
20
 
    street: A
21
 
    
22
 
23
 
  Creating a res.partner record
24
 
25
 
  !record {model: res.partner, id: res_partner_1}:
26
 
    credit_limit: 0.0
27
 
    debit_limit: 0.0
28
 
    name: Partner1
29
 
    supplier: true
30
 
    
31
 
    
32
 
33
 
  Creating a res.partner.address record
34
 
35
 
  !record {model: res.partner.address, id: res_partner_address_1}:
36
 
    partner_id: res_partner_1
37
 
    street: B
38
 
    
39
 
-
40
 
  I create product template .
41
 
-
42
 
  !record {model: product.template, id: product_template_p0}:
43
 
    categ_id: product.cat0
44
 
    cost_method: standard
45
 
    mes_type: fixed
46
 
    name: Product0 - tender test
47
 
    procure_method: make_to_order
48
 
    standard_price: 160.0
49
 
    supply_method: buy
50
 
    type: product
51
 
    uom_id: product.product_uom_unit
52
 
    uom_po_id: product.product_uom_unit
53
 
    
54
 
55
 
  Creating a product.product record
56
 
57
 
  !record {model: product.product, id: product_product_p0}:
58
 
    
59
 
    standard_price: 1.0
60
 
    valuation: manual_periodic
61
 
    volume: 0.0
62
 
    warranty: 0.0
63
 
    weight: 0.0
64
 
    weight_net: 0.0
65
 
    product_tmpl_id: product_template_p0
66
 
    international_status: itc
67
 
    
68
 
    
69
 
70
 
  Creating a product.supplierinfo record
71
 
72
 
  !record {model: product.supplierinfo, id: product_supplierinfo_0}:
73
 
    delay: 1
74
 
    min_qty: 0.0
75
 
    name: res_partner_0
76
 
    product_id: product_template_p0
77
 
    
78
 
    
79
 
80
 
  Creating a product.supplierinfo record
81
 
82
 
  !record {model: product.supplierinfo, id: product_supplierinfo_1}:
83
 
    delay: 1
84
 
    min_qty: 0.0
85
 
    name: res_partner_1
86
 
    product_id: product_template_p0
87
 
    sequence: 10
88
 
-
89
 
  Create the partner
90
 
-
91
 
  !record {model: res.partner, id: supplier1}:
92
 
    credit_limit: 0.0
93
 
    debit_limit: 0.0
94
 
    name: Berthe
95
 
    supplier: true
96
 
-
97
 
  I create the corresponding addresses
98
 
-
99
 
  !record {model: res.partner.address, id: supplier_address_1}:
100
 
    country_id: base.fr
101
 
    partner_id: supplier1
102
 
    street: street
103
 
    type: default
104
 
-
105
 
  In order to test the procurement list module, I start by creating a new product category
106
 
-
107
 
  !record {model: product.category, id: product_cat1}:
108
 
    name: Categ1
109
 
-
110
 
  Creating a sale.order record
111
 
112
 
  !record {model: sale.order, id: sale_order_tender_so0}:
113
 
    amount_tax: 0.0
114
 
    amount_total: 1.0
115
 
    amount_untaxed: 1.0
116
 
    company_id: base.main_company
117
 
    date_order: '2011-04-13'
118
 
    invoice_quantity: order
119
 
    order_policy: manual
120
 
    partner_id: res_partner_0
121
 
    partner_invoice_id: res_partner_address_0
122
 
    partner_order_id: res_partner_address_0
123
 
    partner_shipping_id: res_partner_address_0
124
 
    picking_policy: direct
125
 
    pricelist_id: product.list0
126
 
    shop_id: sale.shop
127
 
    priority: normal
128
 
    categ: medical
129
 
    
130
 
    
131
 
132
 
  Creating a sale.order.line record
133
 
134
 
  !record {model: sale.order.line, id: sale_order_line_tender_p0}:
135
 
    company_id: base.main_company
136
 
    delay: 7.0
137
 
    order_id: sale_order_tender_so0
138
 
    order_partner_id: res_partner_0
139
 
    price_unit: 1.0
140
 
    product_id: product_product_p0
141
 
    product_uom: product.product_uom_unit
142
 
    product_uom_qty: 1.0
143
 
    salesman_id: base.user_admin
144
 
    state: draft
145
 
    th_weight: 0.0
146
 
    type: make_to_stock
147
 
    
148
 
-
149
 
 
150
 
  I check the sourcing line
151
 
 
152
 
-
153
 
  !python {model: sale.order.line}: |
154
 
    sol = self.browse(cr, uid, ref("sale_order_line_tender_p0"))
155
 
    
156
 
    count = 0
157
 
    
158
 
    for sourcing in sol.sourcing_line_ids:
159
 
      count = count + 1
160
 
      assert sourcing.sale_order_id.id == ref("sale_order_tender_so0"), 'sourcing line, sale order id is wrong (%i, %i)'%(sourcing.sale_order_id, ref("sale_order_tender_so0"))
161
 
      assert int(sourcing.sale_order_line_id) == ref("sale_order_line_tender_p0"), 'sourcing line, sale order line id is wrong (%i, %i)'%(sourcing.sale_order_line_id, ref("sale_order_line_tender_p0"))
162
 
      assert sourcing.type == 'make_to_stock', 'sourcing type wrong'
163
 
      assert sourcing.state == 'draft', 'sourcing state wrong (draft, %s)'%sourcing.state
164
 
      assert sourcing.state == sourcing.sale_order_line_state, 'states wrong'
165
 
      assert not sourcing.supplier.id, 'make_to_stock: sourcing has a supplier !'
166
 
      
167
 
      sourcing.write({'type':'make_to_order', 'supplier':ref("res_partner_1"), 'po_cft':'cft',})
168
 
      
169
 
      assert not sol.supplier, 'sol supplier is wrong after update of sourcing line (%s, %s)'%(sol.supplier, False)
170
 
      assert sol.type == 'make_to_order', 'sol type is wrong after update of sourcing line (%s, %s)'%(sol.type, 'make_to_order')
171
 
      assert sol.po_cft == 'cft', 'po_cft is wrong after update of sourcing line (%s, %s)'%(sol.po_cft, 'cft')
172
 
      
173
 
    assert count == 1, 'number of sourcing line wrong (%i)'%(count)
174
 
-
175
 
 
176
 
  I trigger the workflow
177
 
 
178
 
-
179
 
  !python {model: sale.order.line}: |
180
 
    import netsvc
181
 
    wf_service = netsvc.LocalService("workflow")
182
 
    wf_service.trg_validate(uid, 'sale.order', ref("sale_order_tender_so0"), 'order_confirm', cr)
183
 
    
184
 
 
185
 
-
186
 
 
187
 
  I check the new procurement order
188
 
 
189
 
-
190
 
  !python {model: procurement.order}: |
191
 
    ids = self.search(cr, uid, [('name', '=', 'Product0 - tender test'),], context=context)
192
 
    assert len(ids) == 1, 'wrong number of procurement. %s-%s'%(len(ids), 1)
193
 
    
194
 
-
195
 
 
196
 
  I run the scheduler
197
 
  
198
 
-
199
 
 
200
 
  !function {model: procurement.order, name: run_scheduler}:
201
 
    - model: procurement.order
202
 
      search: "[]"
203
 
 
204
 
-
205
 
 
206
 
  I check a tender has been created with one corresponding line
207
 
 
208
 
-
209
 
 
210
 
  !python {model: tender}: |
211
 
    ids = self.search(cr, uid, [('sale_order_id', '=', ref("sale_order_tender_so0")),], context=context)
212
 
    
213
 
    assert len(ids) == 1, 'number of tender is wrong. %s-%s'%(len(ids), 1)
214
 
    
215
 
    # create suppliers. table: tender_supplier_rel
216
 
    cr.execute('insert into tender_supplier_rel (tender_id,supplier_id) values (%s,%s)', (ids[0], ref("res_partner_0")))
217
 
    # generate the po
218
 
    import netsvc
219
 
    wf_service = netsvc.LocalService("workflow")
220
 
    wf_service.trg_validate(uid, 'tender', ids[0], 'button_generate', cr)
221
 
 
222
 
-
223
 
 
224
 
  check the number of po
225
 
 
226
 
-
227
 
 
228
 
  !python {model: purchase.order}: |
229
 
    # as an order point has been generated with the same partner, we must specify the origin also as beeing not 'SCHEDULER'
230
 
    ids = self.search(cr, uid, [('partner_id', '=', ref("res_partner_0")), ('origin', '!=', 'SCHEDULER'),], context=context)
231
 
    assert len(ids) == 1, 'number of rfq is wrong. %s-%s'%(len(ids), 1)
232
 
    
233
 
    # update the price_unit of purchase order line
234
 
    tender_id = False
235
 
    for po in self.browse(cr, uid, ids):
236
 
      # update valid till date
237
 
      po.write({'valid_till': '2011-10-31',})
238
 
      for pol in po.order_line:
239
 
        pol.write({'price_unit':10024})
240
 
      tender_id = po.tender_id
241
 
      # trigger the workflow
242
 
      import netsvc
243
 
      wf_service = netsvc.LocalService("workflow")
244
 
      wf_service.trg_validate(uid, 'purchase.order', po.id, 'rfq_sent', cr)
245
 
      wf_service.trg_validate(uid, 'purchase.order', po.id, 'rfq_updated', cr)
246
 
    
247
 
    # simulate the compare rfq wizard
248
 
    wiz_obj = self.pool.get('wizard.compare.rfq')
249
 
    action_dic = wiz_obj.start_compare_rfq(cr, uid, ids, context=dict(context, active_ids=ids, tender_id=tender_id))
250
 
    wiz_id = action_dic['res_id']
251
 
    wiz = wiz_obj.browse(cr, uid, wiz_id)
252
 
    wiz_line = wiz.line_ids[0]
253
 
    # choose the supplier
254
 
    choose_dic = wiz_line.choose_supplier()
255
 
    choose_id = choose_dic['res_id']
256
 
    
257
 
    # choose supplier wizard
258
 
    choose_obj = self.pool.get('wizard.choose.supplier')
259
 
    choose_line = choose_obj.browse(cr, uid, choose_id).line_ids[0]
260
 
    choose_line.choose_supplier()
261
 
    
262
 
    # back to first wizard
263
 
    wiz.update_tender()
264
 
    
265
 
-
266
 
 
267
 
  verify price_unit in tender line and validate the tender
268
 
 
269
 
-
270
 
 
271
 
  !python {model: tender}: |
272
 
    ids = self.search(cr, uid, [('sale_order_id', '=', ref("sale_order_tender_so0")),], context=context)
273
 
    assert ids, 'ids is empty'
274
 
    tender = self.browse(cr, uid, ids[0])
275
 
    assert tender.tender_line_ids[0].price_unit == 10024, 'price_unit has not been updated. %s-10024'%tender.tender_line_ids[0].price_unit
276
 
    # update context in order analytic distribution not to be tested
277
 
    context.update({'update_mode': 'init'})
278
 
    po_id = self.create_po(cr, uid, tender.id, context=context)
279
 
    
280
 
    import netsvc
281
 
    wf_service = netsvc.LocalService("workflow")
282
 
    wf_service.trg_validate(uid, 'tender', tender.id, 'button_done', cr)
283
 
    
284
 
    # all rfqs must be rfq_done
285
 
    for rfq in tender.rfq_ids:
286
 
      assert rfq.state == 'done', 'the state of the rfq is not done : done - %s'%rfq.state
287
 
       
288
 
    # the final po must have state = 'confirmed'
289
 
    po_obj = self.pool.get('purchase.order')
290
 
    so_obj = self.pool.get('sale.order')
291
 
    so = so_obj.browse(cr, uid, ref("sale_order_tender_so0"))
292
 
    so_ids = po_obj.search(cr, uid, [])
293
 
    ids = po_obj.search(cr, uid, [('origin', '=', so.name + ';' + tender.name),('id', '=', po_id)])
294
 
    assert ids, 'The origin of the generated purchase order is not correct'
295
 
    po = po_obj.browse(cr, uid, ids[0])
296
 
    assert po.state == 'draft', 'the state of purchase order is wrong. %s-draft'%po.state # state depends on the installation or not of double validation module for purchase order
297