22
22
# You should have received a copy of the GNU Affero General Public License
23
23
# along with this program. If not, see <http://www.gnu.org/licenses/>.
24
################################################################################
26
from osv import fields, osv
28
from tools.translate import _
24
##########################################################################
26
from openerp.osv import osv, fields
27
import openerp.tools as tools
28
from openerp.tools.translate import _
29
30
from tools import config
31
import openerp.netsvc as netsvc
31
32
import decimal_precision as dp
32
from tools.sql import drop_view_if_exists
34
class product_product(osv.osv):
33
from openerp.tools.sql import drop_view_if_exists
37
class product_product(osv.Model):
36
39
_inherit = 'product.product'
39
41
def _search_price_list_item_c(self, cr, uid, ids, field_name, arg, context={}):
40
42
item_obj = self.pool.get('product.pricelist.item')
42
for product in self.browse(cr,uid,ids,context=context):
43
item_ids = item_obj.search(cr,uid,[('categ_id','=',product.categ_id.id)],context=context)
44
if context.get('query',True):
44
for product in self.browse(cr, uid, ids, context=context):
45
item_ids = item_obj.search(cr, uid, [(
46
'categ_id', '=', product.categ_id.id)], context=context)
47
if context.get('query', True):
45
48
sql_str = item_ids and len(ids) == 1 and '''UPDATE product_pricelist_item set
46
49
product_active_id=%d
47
WHERE id %s %s '''%(product.id,len(item_ids) > 1 and 'in' or '=',len(item_ids) > 1 and tuple(item_ids) or item_ids[0])
50
WHERE id %s %s ''' % (product.id, len(item_ids) > 1 and 'in' or '=', len(item_ids) > 1 and tuple(item_ids) or item_ids[0])
48
51
sql_str and cr.execute(sql_str)
49
52
item_ids and len(ids) == 1 and cr.commit()
50
53
res[product.id] = item_ids
55
57
def _search_price_list_item_p(self, cr, uid, ids, field_name, arg, context={}):
57
59
item_obj = self.pool.get('product.pricelist.item')
59
for product in self.browse(cr,uid,ids,context=context):
60
item_ids = item_obj.search(cr,uid,[('product_id','=',product.id)],context=context)
61
if context.get('query',True):
61
for product in self.browse(cr, uid, ids, context=context):
62
item_ids = item_obj.search(cr, uid, [(
63
'product_id', '=', product.id)], context=context)
64
if context.get('query', True):
62
65
sql_str = item_ids and len(ids) == 1 and '''UPDATE product_pricelist_item set
63
66
product_active_id=%d
64
WHERE id %s %s '''%(product.id,len(item_ids) > 1 and 'in' or '=',len(item_ids) > 1 and tuple(item_ids) or item_ids[0])
67
WHERE id %s %s ''' % (product.id, len(item_ids) > 1 and 'in' or '=', len(item_ids) > 1 and tuple(item_ids) or item_ids[0])
65
68
sql_str and cr.execute(sql_str)
66
69
item_ids and len(ids) == 1 and cr.commit()
67
70
res[product.id] = item_ids
70
73
def _write_price_list_item_p(obj, cr, uid, id, name, value, fnct_inv_arg, context={}):
73
sql_str = val[2].get('price_discount',False) and """UPDATE product_pricelist_item set
76
sql_str = val[2].get('price_discount', False) and """UPDATE product_pricelist_item set
74
77
price_discount='%s'
75
WHERE id=%d """ % (val[2].get('price_discount'), val[1])
76
val[2].get('price_discount',False) and cr.execute(sql_str)
78
WHERE id=%d """ % (val[2].get('price_discount'), val[1])
79
val[2].get('price_discount', False) and cr.execute(sql_str)
83
#'price_list_item_ids':fields.one2many('product.pricelit.item','product_id','Price List Item',help='Percent to compute cost from Price list item'),
84
'price_list_item_ids': fields.function(_search_price_list_item_p, relation='product.pricelist.item',fnct_inv=_write_price_list_item_p,method=True, string="Price item by product", type='one2many'),
85
'category_item_ids': fields.function(_search_price_list_item_c, relation='product.pricelist.item', method=True, string="Price item by category", type='one2many'),
83
#'price_list_item_ids':fields.one2many('product.pricelit.item','product_id','Price List Item',help='Percent to compute cost from Price list item'),
84
'price_list_item_ids': fields.function(_search_price_list_item_p, relation='product.pricelist.item', fnct_inv=_write_price_list_item_p, method=True, string="Price item by product", type='one2many'),
85
'category_item_ids': fields.function(_search_price_list_item_c, relation='product.pricelist.item', method=True, string="Price item by category", type='one2many'),
92
class inherit_product_category(osv.osv):
91
class inherit_product_category(osv.Model):
95
_inherit='product.category'
94
_inherit = 'product.category'
98
96
def _search_price_list_item(self, cr, uid, ids, field_name, arg, context={}):
100
98
item_obj = self.pool.get('product.pricelist.item')
102
for category in self.browse(cr,uid,ids,context=context):
103
res[category.id] = item_obj.search(cr,uid,[('categ_id','=',category.id)],context=context)
100
for category in self.browse(cr, uid, ids, context=context):
101
res[category.id] = item_obj.search(cr, uid, [(
102
'categ_id', '=', category.id)], context=context)
107
105
def _write_price_list_item(obj, cr, uid, id, name, value, fnct_inv_arg, context={}):
108
106
for val in value:
110
sql_str = val[2].get('price_discount',False) and """UPDATE product_pricelist_item set
108
sql_str = val[2].get('price_discount', False) and """UPDATE product_pricelist_item set
111
109
price_discount='%s'
112
WHERE id=%d """ % (val[2].get('price_discount'), val[1])
113
val[2].get('price_discount',False) and cr.execute(sql_str)
110
WHERE id=%d """ % (val[2].get('price_discount'), val[1])
111
val[2].get('price_discount', False) and cr.execute(sql_str)
118
'price_list_item_ids': fields.function(_search_price_list_item, relation='product.pricelist.item',fnct_inv=_write_price_list_item,method=True, string="Price item by category", type='one2many'),
116
'price_list_item_ids': fields.function(_search_price_list_item, relation='product.pricelist.item', fnct_inv=_write_price_list_item, method=True, string="Price item by category", type='one2many'),
122
inherit_product_category()