[IMP]sale: Improve the code
[odoo/odoo.git] / addons / sale / test / edi_sale_order.yml
1 -
2   I create a draft Sale Order
3 -
4   !record {model: sale.order, id: sale_order_edi_1}:
5     partner_id: base.res_partner_agrolait
6     partner_invoice_id: base.res_partner_address_8invoice
7     partner_order_id: base.res_partner_address_8invoice
8     partner_shipping_id: base.res_partner_address_8invoice
9     pricelist_id: 1
10     order_line:
11       - product_id: product.product_product_pc1
12         product_uom_qty: 1.0
13         product_uom: 1
14         price_unit: 150.0
15         name: 'Basic pc'
16     order_line:
17       - product_id: product.product_product_pc3
18         product_uom_qty: 10.0
19         product_uom: 1
20         price_unit: 200.0
21         name: 'Medium pc'
22 -
23   I confirm the sale order
24 -
25   !workflow {model: sale.order, ref: sale_order_edi_1, action: order_confirm}
26 -
27   Then I export the sale order via EDI
28 -
29   !python {model: edi.document}: |
30     sale_order = self.pool.get('sale.order')
31     so = sale_order.browse(cr, uid, ref("sale_order_edi_1"))
32     token = self.export_edi(cr, uid, [so])
33     assert token, 'Invalid EDI Token'
34 -
35   Then I import a sample EDI document of a purchase order
36 -
37   !python {model: edi.document}: |
38     sale_order_pool = self.pool.get('sale.order')
39     edi_document = {
40         "__id": "purchase:5af1272e-dd26-11e0-b65e-701a04e25543.purchase_order_test",
41         "__module": "purchase",
42         "__model": "purchase.order",
43         "__import_module": "sale",
44         "__import_model": "sale.order",
45         "__version": [6,1,0],
46         "name": "PO00011",
47         "date_order": "2011-09-12",
48         "currency": {
49                 "__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.EUR",
50                 "__module": "base",
51                 "__model": "res.currency",
52                 "code": "EUR",
53                 "symbol": "€",
54         },
55         "company_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.main_company", "Client S.A."],
56         "company_address": {
57                 "__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.some_address",
58                 "__module": "base",
59                 "__model": "res.partner.address",
60                 "phone": "(+32).81.81.37.00", 
61                 "street": "Chaussee de Namur 40", 
62                 "city": "Gerompont", 
63                 "zip": "1367", 
64                 "country_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.be", "Belgium"],
65                 "bank_ids": [
66                     ["base:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_bank-adaWadsadasdDJzGbp","Ladies bank: 032465789-156113"]
67                 ],
68         }, 
69         "partner_id": ["purchase:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_test20", "jones white"], 
70         "partner_address": {
71                 "__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_address_7wdsjasdjh",
72                 "__module": "base",
73                 "__model": "res.partner.address",
74                 "phone": "(+32).81.81.37.00", 
75                 "street": "Chaussee de Namur 40", 
76                 "city": "Gerompont", 
77                 "zip": "1367", 
78                 "country_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.be", "Belgium"], 
79         },
80         "order_line": [{
81                 "__id": "purchase:5af1272e-dd26-11e0-b65e-701a04e25543.purchase_order_line-AlhsVDZGoKvJ", 
82                 "__module": "purchase", 
83                 "__model": "purchase.order.line",
84                 "__import_module": "sale", 
85                 "__import_model": "sale.order.line", 
86                 "name": "Basic PC", 
87                 "date_planned": "2011-09-30", 
88                 "price_unit": 150.0, 
89                 "product_id": ["product:5af1272e-dd26-11e0-b65e-701a04e25543.product_product_pc1", "[PC1] Basic PC"],
90                 "product_qty": 1.0, 
91                 "product_uom": ["product:5af1272e-dd26-11e0-b65e-701a04e25543.product_uom_unit", "PCE"], 
92         },
93         {
94                 "__id": "purchase:5af1272e-dd26-11e0-b65e-701a04e25543.purchase_order_line-Alsads33e", 
95                 "__module": "purchase", 
96                 "__model": "purchase.order.line",
97                 "__import_module": "sale", 
98                 "__import_model": "sale.order.line",
99                 "name": "Medium PC", 
100                 "date_planned": "2011-09-15", 
101                 "price_unit": 100.0, 
102                 "product_id": ["product:5af1272e-dd26-11e0-b65e-701a04e25543.product_product_pc3", "[PC3] Medium PC"],
103                 "product_qty": 2.0, 
104                 "product_uom": ["product:5af1272e-dd26-11e0-b65e-701a04e25543.product_uom_unit", "PCE"], 
105         }], 
106     }
107     new_sale_order_id = sale_order_pool.edi_import(cr, uid, edi_document, context=context)
108     assert new_sale_order_id,  'Sale order import failed'
109     order_new = sale_order_pool.browse(cr, uid, new_sale_order_id)
110
111     # check bank info on partner
112     assert len(order_new.partner_id.bank_ids) == 1, "Expected 1 bank entry related to partner"
113     bank_info = order_new.partner_id.bank_ids[0]
114     assert bank_info.acc_number == "Ladies bank: 032465789-156113", 'Expected "Ladies bank: 032465789-156113", got %s' % bank_info.acc_number
115
116     assert order_new.pricelist_id.name == 'Public Pricelist' , "Public Price list was not automatically assigned"
117     assert order_new.amount_total == 350, "Amount total is wrong"
118     assert order_new.amount_untaxed == 350, "Untaxed amount is wrong"
119     assert len(order_new.order_line) == 2, "Sale order lines mismatch"
120     for sale_line in order_new.order_line:
121         if sale_line.name == 'Basic PC':
122             assert sale_line.delay == 18 , "incorrect delay: got %s, expected 18"%(sale_line.delay,)
123             assert sale_line.product_uom.name == "PCE" , "uom is not same"
124             assert sale_line.price_unit == 150 , "unit price is not same, got %s, expected 150"%(sale_line.price_unit,)
125             assert sale_line.product_uom_qty == 1 , "product qty is not same"
126         elif sale_line.name == 'Medium PC':
127             assert sale_line.delay == 3 , "incorrect delay: got %s, expected 3"%(sale_line.delay,)
128             assert sale_line.product_uom.name == "PCE" , "uom is not same"
129             assert sale_line.price_unit == 100 , "unit price is not same, got %s, expected 100"%(sale_line.price_unit,)
130             assert sale_line.product_uom_qty == 2 , "product qty is not same"
131         else:
132             raise AssertionError('unknown order line: %s' % sale_line)