[MERGE] product: clean yml tests

bzr revid: rco@openerp.com-20120105131207-erz6s3xo2us24amt
This commit is contained in:
Raphael Collet
2012-01-05 14:12:07 +01:00
9 changed files with 159 additions and 179 deletions
+4 -4
View File
@@ -61,10 +61,10 @@ Print product labels with barcode.
'partner_view.xml',
'process/product_process.xml'
],
'test':[
'test/product_test.yml',
'test/product_price_list.yml',
'test/product_report.yml',
'test': [
'product_pricelist_demo.yml',
'test/product_uom.yml',
'test/product_pricelist.yml',
],
'installable': True,
'active': False,
+1 -1
View File
@@ -271,7 +271,7 @@ class product_pricelist(osv.osv):
if price is not False:
price_limit = price
price = price * (1.0+(res['price_discount'] or 0.0))
price = rounding(price, res['price_round'])
price = rounding(price, res['price_round']) #TOFIX: rounding with tools.float_rouding
price += (res['price_surcharge'] or 0.0)
if res['price_min_margin']:
price = max(price, price_limit+res['price_min_margin'])
+2 -1
View File
@@ -412,10 +412,11 @@ class product_product(osv.osv):
context = {}
quantity = context.get('quantity') or 1.0
pricelist = context.get('pricelist', False)
partner = context.get('partner', False)
if pricelist:
for id in ids:
try:
price = self.pool.get('product.pricelist').price_get(cr,uid,[pricelist], id, quantity, context=context)[pricelist]
price = self.pool.get('product.pricelist').price_get(cr,uid,[pricelist], id, quantity, partner=partner, context=context)[pricelist]
except:
price = 0.0
res[id] = price
+62
View File
@@ -0,0 +1,62 @@
-
!record {model: product.product, id: product_product_pc2}:
uom_id: product_uom_unit
categ_id: product_category_pc
-
!record {model: product.pricelist, id: customer_pricelist}:
name: Customer Pricelist
type: sale
version_id:
- name: v1.0
date_start: 2012-01-01
items_id:
- name: Default pricelist
base: -1
base_pricelist_id: list0
- name: 10% Discount on PC2
sequence: 1
product_id: product_product_pc2
base: !eval (ref('product.list_price'))
price_discount: -0.10
- name: 1 surchange on PC3
sequence: 1
product_id: product_product_pc3
base: !eval (ref('product.list_price'))
price_surcharge: 1
- name: 5% Discount on all IT components
sequence: 1
min_quantity: 2
base: !eval (ref('product.list_price'))
categ_id: product_category_10
price_discount: -0.05
- name: v2.0 (Special Discount on all products during last 5 days in current year)
date_start: 2011-12-27
date_end: 2011-12-31
items_id:
- name: 30% Discount on all products
price_discount: -0.30
sequence: 1
base: !eval (ref('product.list_price'))
-
!record {model: product.pricelist, id: supplier_pricelist}:
name: Supplier Pricelist
type: sale
version_id:
- name: v1.0
items_id:
- name: 20% Discount given by my supplier
sequence: 1
price_min_margin: 2
price_max_margin: -5
product_id: product_product_pc2
base: -2
-
!record {model: pricelist.partnerinfo, id: supplier_pricelist0_product_pc2}:
suppinfo_id: supplierinfo6
min_quantity: 3
price: 405
-
!record {model: pricelist.partnerinfo, id: supplier_pricelist1_product_pc2}:
suppinfo_id: supplierinfo6
min_quantity: 1
price: 455
-124
View File
@@ -1,124 +0,0 @@
-
In order to check the calculation of price of the products according to selected pricelist,
I create a pricelist rule for giving discount on some quantities of product.
-
!record {model: product.pricelist.item, id: item0}:
name: Default Public Pricelist for More Qty
min_quantity: 15
price_discount: -0.10
-
I check whether the product consumes the price, based on the given quantities, correctly or not.
-
!python {model: product.pricelist}: |
product_obj = self.pool.get("product.product")
result = self.price_get_multi(cr, uid, [ref("product.list0")], [(ref("product_product_pc1"),15,False)])
new_price = result[ref("product_product_pc1")].values()
context.update({'pricelist': ref("product.list0"), 'quantity': 15})
product_price = product_obj.browse(cr, uid, ref("product_product_pc1"), context=context).price
assert new_price[0] == product_price,"Discount is not given on price of the product."
-
I create a pricelist rule to give discount for a specific product.
-
!record {model: product.pricelist.item, id: pricelist_rules_for_pc2}:
name: Default Public Pricelist for PC2
min_quantity: 1
product_id: product.product_product_pc2
sequence: 4
base: !eval (ref('product.list_price'))
price_version_id: product.ver0
price_discount: -0.20
-
I check whether the selected product is having the price correctly or not.
-
!python {model: product.pricelist}: |
result = self.price_get_multi(cr, uid, [ref("product.list0")], [(ref("product_product_pc2"),1,False)])
product_obj = self.pool.get("product.product")
new_price = result[ref("product_product_pc2")].values()
context.update({'pricelist': ref("product.list0"), 'quantity': 1})
product_price = product_obj.browse(cr, uid, ref("product_product_pc2"), context=context).price
assert new_price[0] == product_price,"Discount is not given on price of the special product."
-
I create a pricelist rule to give discount for a specific category of products.
-
!record {model: product.pricelist.item, id: pricelist_rules_category_1}:
name: Default Public Pricelist for Category
min_quantity: 1
categ_id: product.cat1
sequence: 3
base: !eval (ref('product.list_price'))
price_version_id: product.ver0
price_discount: -0.25
-
I check whether the price of products of selected product category is correctly set or not.
-
!python {model: product.pricelist}: |
result = self.price_get_multi(cr, uid, [ref("product.list0")], [(ref("product_product_fan2"),1,False)])
product_obj = self.pool.get("product.product")
new_price = result[ref("product_product_fan2")].values()
context.update({'pricelist': ref("product.list0"), 'quantity': 1})
product_price = product_obj.browse(cr, uid, ref("product_product_fan2"), context=context).price
assert new_price[0] == product_price,"Discount is not given on price of the special category of products."
-
I create a pricelist to give the discount at the end of year.
-
!record {model: product.pricelist, id: product_price_list_end_year}:
name: End of Year Price List
type: sale
version_id:
- name: End of Year Price List Version
items_id:
- name: End of Year Price List Version Rule
min_quantity: 1
base: !eval (ref('product.list_price'))
price_discount: -0.30
-
!record {model: product.pricelist.item, id: pricelist_rules_for_end_year1}:
name: End of Year Price List Version Rule - Public Pricelist
min_quantity: 1
sequence: 2
base: -1
price_version_id: product.ver0
base_pricelist_id: product_price_list_end_year
-
Now, I check that the end of the year pricelist rule is applied on products.
-
!python {model: product.pricelist}: |
result = self.price_get_multi(cr, uid, [ref("product.list0")], [(ref("product_product_pc1"),1,False)])
new_price = result[ref("product_product_pc1")].values()
product_obj = self.pool.get("product.product")
context.update({'pricelist': ref("product.list0"), 'quantity': 1})
product_price = product_obj.browse(cr, uid, ref("product_product_pc1"), context=context).price
assert new_price[0] == product_price,"Discount is not given on price of product at the end of the year."
-
I create a pricelist for special customers by which they can get discount on products.
-
!record {model: product.pricelist, id: special_customer_price_list1}:
name: Price List For Special Customer
type: sale
version_id:
- name: Special Customer Price List Version
items_id:
- name: Special Customer Price List Version Rule
min_quantity: 1
base: !eval (ref('product.list_price'))
price_discount: -0.40
-
!record {model: res.partner, id: base.res_partner_agrolait}:
property_product_pricelist: special_customer_price_list1
-
I check that the customer is getting the discount according to the pricelist.
-
!python {model: product.pricelist}: |
result = self.price_get_multi(cr, uid, [ref("product.special_customer_price_list1")], [(ref("product_product_pc4"),1,ref("base.res_partner_agrolait"))])
product_obj = self.pool.get("product.product")
new_price = result[ref("product_product_pc4")].values()
context.update({'pricelist': ref("product.special_customer_price_list1"), 'quantity': 1})
product_price = product_obj.browse(cr, uid, ref("product_product_pc4"), context=context).price
assert new_price[0] == product_price,"Discount is not given to special customer."
-
I set the supplier pricelist for a product to get the discount at the time of purchase.
-
!record {model: product.supplierinfo, id: supplierinfo5}:
pricelist_ids:
- min_quantity: 10
price: 200
+75
View File
@@ -0,0 +1,75 @@
-
In order to check the calculation of price of the products according to pricelist,
-
I check sale price of PC2.
-
!python {model: product.product}: |
context.update({'pricelist': ref("customer_pricelist"), 'quantity':1})
product = self.browse(cr, uid, ref("product_product_pc2"), context=context)
assert product.price == product.lst_price-product.lst_price*(0.10), "Sell price is not correspond."
-
I check sale price of PC3.
-
!python {model: product.product}: |
product = self.browse(cr, uid, ref("product_product_pc3"), context=context)
assert product.price == product.lst_price + 1, "Sell price is not correspond."
-
I check sale price of IT componet.
-
!python {model: product.product}: |
product = self.browse(cr, uid, ref("product_product_mb1"), context=context)
assert product.price == product.lst_price, "Sell price is not correspond."
-
I check sale price of IT componet if more than 3 PCE.
-
!python {model: product.product}: |
context.update({'quantity':5})
product = self.browse(cr, uid, ref("product_product_mb1"), context=context)
assert product.price == product.lst_price-product.lst_price*(0.05), "Sell price is not correspond."
-
I check sale price of PC4.
-
!python {model: product.product}: |
context.update({'quantity':1})
product = self.browse(cr, uid, ref("product_product_pc4"), context=context)
assert product.price == product.lst_price, "Sell price is not correspond."
-
I check sale price of PC4 on end of year.
-
!python {model: product.product}: |
context.update({'quantity':1, 'date': '2011-12-31'})
product = self.browse(cr, uid, ref("product_product_pc4"), context=context)
assert product.price == product.lst_price-product.lst_price*(0.30), "Sell price is not correspond."
-
I check cost price of PC2.
-
!python {model: product.product}: |
context.update({'quantity':1, 'date': False, 'partner': ref('base.res_partner_4'), 'pricelist': ref("supplier_pricelist")})
product = self.browse(cr, uid, ref("product_product_pc2"), context=context)
assert product.price == 450, "cost price is not correspond."
-
I check cost price of PC2 if more than 3 PCE.
-
!python {model: product.product}: |
context.update({'quantity':3})
product = self.browse(cr, uid, ref("product_product_pc2"), context=context)
assert product.price == 400, "cost price is not correspond."
-
I print the sale prices report.
-
!python {model: product.product}: |
ctx = {'model': 'product.product', 'date': '2011-12-30', 'active_ids': [ref('product.product_product_pc1'), ref('product.product_product_pc2'), ref('product.product_product_pc3'), ref('product.product_product_pc4')]}
data_dict = {
'qty1': 1,
'qty2': 5,
'qty3': 10,
'qty4': 15,
'qty5': 30,
'price_list':ref('customer_pricelist'),
}
from tools import test_reports
test_reports.try_report_action(cr, uid, 'action_product_price_list',wiz_data=data_dict, context=ctx, our_module='product')
-16
View File
@@ -1,16 +0,0 @@
-
Print the Products Pricelists Report through the wizard
-
!python {model: product.product}: |
ctx={}
ctx.update({'model': 'product.product','active_ids': [ref('product.product_product_pc1'), ref('product.product_product_pc3')]})
data_dict = {'qty1': 1,
'qty2': 5,
'qty3': 10,
'qty4': 0,
'qty5': 0,
'price_list':ref('product.list0')}
from tools import test_reports
test_reports.try_report_action(cr, uid, 'action_product_price_list',wiz_data=data_dict, context=ctx, our_module='product')
-33
View File
@@ -1,33 +0,0 @@
-
In order to test product,I start by creating a 20KG UOM for 'Sugar'
-
!record {model: product.uom, id: product_20k_uom_sugar}:
name: 20KG
uom_type: bigger
category_id: product.product_uom_categ_kgm
factor_inv: 20
-
I create a 10KG UOM for 'Sugar'
-
!record {model: product.uom, id: product_10k_uom_sugar}:
name: 10KG
uom_type: bigger
category_id: product.product_uom_categ_kgm
factor_inv: 10
-
I create a new product 'Sugar' in 20KG UOM.
-
!record {model: product.product, id: product_sugar_id1}:
categ_id: 'product.product_category_rawmaterial0'
name: Sugar 20KG
procure_method: make_to_order
standard_price: 400.0
uom_id: product.product_20k_uom_sugar
uom_po_id: product.product_20k_uom_sugar
-
I test onchanged on UOM, Create Duplicate Product and Delete original Product.
-
!python {model: product.product}: |
self.onchange_uom(cr ,uid, [ref("product_sugar_id1")], ref("product.product_20k_uom_sugar"), ref("product.product_10k_uom_sugar"))
self.copy(cr, uid, ref("product_sugar_id1"))
self.unlink(cr, uid, [ref("product_sugar_id1")])
+15
View File
@@ -0,0 +1,15 @@
-
In order to test conversation of UOM,
-
I convert Grams into TON with price.
-
!python {model: product.uom}: |
from_uom_id = ref("product_uom_gram")
to_uom_id = ref("product_uom_ton")
price = 2
qty = 1020000
price = self._compute_price(cr, uid, from_uom_id, price, to_uom_id)
qty = self._compute_qty(cr, uid, from_uom_id, qty, to_uom_id)
assert qty == 1.02, "Qty is not correspond."
assert price == 2000000.0, "Price is not correspond."