2 I create a draft Sale Order
4 !record {model: sale.order, id: sale_order_edi_1}:
5 partner_id: base.res_partner_2
6 partner_invoice_id: base.res_partner_address_3
7 partner_shipping_id: base.res_partner_address_3
10 - product_id: product.product_product_3
14 name: 'PC Assemble SC234'
16 - product_id: product.product_product_5
20 name: 'PC Assemble + Custom (PC on Demand)'
22 I confirm the sale order
24 !workflow {model: sale.order, ref: sale_order_edi_1, action: order_confirm}
26 Then I export the sale order via EDI
28 !python {model: edi.edi}: |
30 sale_order = self.pool.get('sale.order')
31 so = sale_order.browse(cr, uid, ref("sale_order_edi_1"))
32 edi_doc = self.generate_edi(cr, uid, [so])
33 assert isinstance(json.loads(edi_doc)[0], dict), 'EDI doc should be a JSON dict'
35 "Then I import a sample EDI document of a purchase order (v7.0)"
37 !python {model: edi.edi}: |
38 from openerp.tools import float_compare
39 sale_order_pool = self.pool.get('sale.order')
41 "__id": "purchase:5af12v70-dv70-1v70-bv70-701a04e25v70.purchase_order_test",
42 "__module": "purchase",
43 "__model": "purchase.order",
44 "__import_module": "sale",
45 "__import_model": "sale.order",
48 "date_order": "2011-09-12",
50 "__id": "base:5af12v70-dv70-1v70-bv70-701a04e25v70.EUR",
52 "__model": "res.currency",
56 "company_id": ["base:5af12v70-dv70-1v70-bv70-701a04e25v70.main_company", "Client S.A."],
58 "__id": "base:5af12v70-dv70-1v70-bv70-701a04e25v70.some_address",
60 "__model": "res.partner",
61 "phone": "(+32).81.81.37.00",
62 "street": "Chaussee de Namur 40",
65 "country_id": ["base:5af12v70-dv70-1v70-bv70-701a04e25v70.be", "Belgium"],
67 ["base:5af12v70-dv70-1v70-bv70-701a04e25v70.res_partner_bank-adaWadsadasdDJzGbp","Another bank: 032465700-156700"]
70 "partner_id": ["purchase:5af12v70-dv70-1v70-bv70-701a04e25v70.res_partner_test20", "jones white"],
72 "__id": "purchase:5af12v70-dv70-1v70-bv70-701a04e25v70.purchase_order_line-AlhsVDZGoKvJ",
73 "__module": "purchase",
74 "__model": "purchase.order.line",
75 "__import_module": "sale",
76 "__import_model": "sale.order.line",
77 "name": "PC Assemble SC234",
79 "product_id": ["product:5af12v70-dv70-1v70-bv70-701a04e25v70.product_product_3", "[PCSC234] PC Assemble SC234"],
81 "product_uom": ["product:5af12v70-dv70-1v70-bv70-701a04e25v70.product_uom_unit", "Unit"],
84 "__id": "purchase:5af12v70-dv70-1v70-bv70-701a04e25v70.purchase_order_line-Alsads33e",
85 "__module": "purchase",
86 "__model": "purchase.order.line",
87 "__import_module": "sale",
88 "__import_model": "sale.order.line",
89 "name": "PC on Demand",
91 "product_id": ["product:5af12v70-dv70-1v70-bv70-701a04e25v70.product_product_5", "[PC-DEM] PC on Demand"],
93 "product_uom": ["product:5af12v70-dv70-1v70-bv70-701a04e25v70.product_uom_unit", "Unit"],
96 new_sale_order_id = sale_order_pool.edi_import(cr, uid, edi_document, context=context)
97 assert new_sale_order_id, 'Sale order import failed'
98 order_new = sale_order_pool.browse(cr, uid, new_sale_order_id)
100 # check bank info on partner
101 assert order_new.partner_id.customer, "Imported partner should be a customer, as we just imported the document as a sale order"
102 assert len(order_new.partner_id.bank_ids) == 1, "Expected 1 bank entry related to partner"
103 bank_info = order_new.partner_id.bank_ids[0]
104 assert bank_info.acc_number == "Another bank: 032465700-156700", 'Expected "Another bank: 032465700-156700", got %s' % bank_info.acc_number
106 assert order_new.pricelist_id.name == 'Public Pricelist' , "Public Price list was not automatically assigned"
107 assert float_compare(order_new.amount_total, 350, precision_digits=2) == 0, "Amount total is wrong"
108 assert float_compare(order_new.amount_untaxed, 350, precision_digits=2) == 0, "Untaxed amount is wrong"
109 assert len(order_new.order_line) == 2, "Sale order lines mismatch"
110 for sale_line in order_new.order_line:
111 if sale_line.name == 'PC Assemble SC234':
112 assert sale_line.product_uom.name == "Unit" , "uom is not same"
113 assert float_compare(sale_line.price_unit, 150 , precision_digits=2) == 0, "unit price is not same, got %s, expected 150"%(sale_line.price_unit,)
114 assert sale_line.product_uom_qty == 1 , "product qty is not same"
115 elif sale_line.name == 'PC on Demand':
116 assert sale_line.product_uom.name == "Unit" , "uom is not same"
117 assert float_compare(sale_line.price_unit, 100, precision_digits=2) == 0, "unit price is not same, got %s, expected 100"%(sale_line.price_unit,)
118 assert sale_line.product_uom_qty == 2 , "product qty is not same"
120 raise AssertionError('unknown order line: %s' % sale_line)
122 "Then I import a sample EDI document of a purchase order (v6.1 - to test backwards compatibility)"
124 !python {model: edi.edi}: |
125 from openerp.tools import float_compare
126 sale_order_pool = self.pool.get('sale.order')
128 "__id": "purchase:5af1272e-dd26-11e0-b65e-701a04e25543.purchase_order_test",
129 "__module": "purchase",
130 "__model": "purchase.order",
131 "__import_module": "sale",
132 "__import_model": "sale.order",
133 "__version": [6,1,0],
134 "name": "PO00011-v61",
135 "date_order": "2011-09-12",
137 "__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.EUR",
139 "__model": "res.currency",
143 "company_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.main_company", "Client S.A."],
145 "__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.some_address",
147 "__model": "res.partner.address",
148 "phone": "(+32).81.81.37.00",
149 "street": "Chaussee de Namur 40",
152 "country_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.be", "Belgium"],
154 ["base:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_bank-adaWadsadasdDJzGbp","Ladies bank: 032465789-156113"]
157 "partner_id": ["purchase:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_test20", "jones white"],
159 "__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_address_7wdsjasdjh",
161 "__model": "res.partner.address",
162 "phone": "(+32).81.81.37.00",
163 "street": "Chaussee de Namur 40",
166 "country_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.be", "Belgium"],
169 "__id": "purchase:5af1272e-dd26-11e0-b65e-701a04e25543.purchase_order_line-AlhsVDZGoKvJ",
170 "__module": "purchase",
171 "__model": "purchase.order.line",
172 "__import_module": "sale",
173 "__import_model": "sale.order.line",
176 "product_id": ["product:5af1272e-dd26-11e0-b65e-701a04e25543.product_product_pc1", "[PC1] Basic PC"],
178 "product_uom": ["product:5af1272e-dd26-11e0-b65e-701a04e25543.product_uom_unit", "PCE"],
181 "__id": "purchase:5af1272e-dd26-11e0-b65e-701a04e25543.purchase_order_line-Alsads33e",
182 "__module": "purchase",
183 "__model": "purchase.order.line",
184 "__import_module": "sale",
185 "__import_model": "sale.order.line",
188 "product_id": ["product:5af1272e-dd26-11e0-b65e-701a04e25543.product_product_pc3", "[PC3] Medium PC"],
190 "product_uom": ["product:5af1272e-dd26-11e0-b65e-701a04e25543.product_uom_unit", "PCE"],
193 new_sale_order_id = sale_order_pool.edi_import(cr, uid, edi_document, context=context)
194 assert new_sale_order_id, 'Sale order import failed'
195 order_new = sale_order_pool.browse(cr, uid, new_sale_order_id)
197 # check bank info on partner
198 assert order_new.partner_id.customer, "Imported partner should be a customer, as we just imported the document as a sale order"
199 assert len(order_new.partner_id.bank_ids) == 1, "Expected 1 bank entry related to partner"
200 bank_info = order_new.partner_id.bank_ids[0]
201 assert bank_info.acc_number == "Ladies bank: 032465789-156113", 'Expected "Ladies bank: 032465789-156113", got %s' % bank_info.acc_number
203 assert order_new.pricelist_id.name == 'Public Pricelist' , "Public Price list was not automatically assigned"
204 assert float_compare(order_new.amount_total, 350, precision_digits=2) == 0, "Amount total is wrong"
205 assert float_compare(order_new.amount_untaxed, 350, precision_digits=2) == 0, "Untaxed amount is wrong"
206 assert len(order_new.order_line) == 2, "Sale order lines mismatch"
207 for sale_line in order_new.order_line:
208 if sale_line.name == 'Basic PC':
209 assert sale_line.product_uom.name == "PCE" , "uom is not same"
210 assert float_compare(sale_line.price_unit, 150, precision_digits=2) == 0, "unit price is not same, got %s, expected 150"%(sale_line.price_unit,)
211 assert sale_line.product_uom_qty == 1 , "product qty is not same"
212 elif sale_line.name == 'Medium PC':
213 assert sale_line.product_uom.name == "PCE" , "uom is not same"
214 assert float_compare(sale_line.price_unit, 100 , precision_digits=2) == 0, "unit price is not same, got %s, expected 100"%(sale_line.price_unit,)
215 assert sale_line.product_uom_qty == 2 , "product qty is not same"
217 raise AssertionError('unknown order line: %s' % sale_line)