1
1
# -*- encoding: utf-8 -*-
4
from tools.translate import _
2
from openerp.osv import fields, osv
3
from openerp.tools.translate import _
5
5
import decimal_precision as dp
7
class sale_commission(osv.osv):
9
def _get_commission(self, cr, uid,ids,name,args,context=None):
12
for so_brw in self.browse(cr,uid,ids):
8
class sale_commission(osv.Model):
10
def _get_commission(self, cr, uid, ids, name, args, context=None):
13
for so_brw in self.browse(cr, uid, ids):
14
15
for sol_brw in so_brw.order_line:
15
res[so_brw.id]+=sol_brw.commission
16
res[so_brw.id] += sol_brw.commission
18
19
def _get_order_line(self, cr, uid, ids, context=None):
20
21
for line in self.pool.get('sale.order.line').browse(cr, uid, ids, context=context):
21
22
res[line.order_id.id] = True
24
_inherit ='sale.order'
26
'commission': fields.function(_get_commission, method=True, type='float', string='Commission',digits_compute= dp.get_precision('Commission'),
28
'sale.order': (lambda self, cr, uid, ids, c={}: ids,['order_line','state'], 25),
29
'sale.order.line': (_get_order_line, ['gain', 'commission'], 15),})
25
_inherit = 'sale.order'
27
'commission': fields.function(_get_commission, method=True, type='float', string='Commission', digits_compute=dp.get_precision('Commission'),
29
'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line', 'state'], 25),
30
'sale.order.line': (_get_order_line, ['gain', 'commission'], 15), })
33
class sale_commission_line(osv.osv):
36
def get_abs_commission(self, cr, uid,ids,name,args,context=None):
34
class sale_commission_line(osv.Model):
36
def get_abs_commission(self, cr, uid, ids, name, args, context=None):
38
38
bar_obj = self.pool.get('baremo.book')
40
for sol_brw in self.browse(cr,uid,ids):
40
for sol_brw in self.browse(cr, uid, ids):
41
41
bar_id = sol_brw.company_id.bar_id and sol_brw.company_id.bar_id.id or False
42
print '--------------- bar_id -------------',bar_id
42
print '--------------- bar_id -------------', bar_id
44
44
# TODO: raise exception, levantar excepcion.
45
45
# de momento esta asi como se muestra, enviando
46
46
# un calculo igual a cero para cuando no haya
47
47
# establecido en la company un tipo de baremo
48
48
print 'NO HAY BAREMO EN LA COMPANY'
51
51
rate = sol_brw.gain
52
rate_comm=bar_obj._calc_comm(cr,uid,ids,bar_id,rate,0.0,context=None)['rate_comm']
53
res[sol_brw.id]=sol_brw.price_subtotal * rate_comm / 100
54
print 'res[%s] = subtotal(%s) * tasa(%s) => %s'%(sol_brw.id, sol_brw.price_subtotal,rate_comm,res[sol_brw.id])
52
rate_comm = bar_obj._calc_comm(
53
cr, uid, ids, bar_id, rate, 0.0, context=None)['rate_comm']
54
res[sol_brw.id] = sol_brw.price_subtotal * rate_comm / 100
55
print 'res[%s] = subtotal(%s) * tasa(%s) => %s' % (sol_brw.id, sol_brw.price_subtotal, rate_comm, res[sol_brw.id])
57
def get_gain(self, cr, uid,ids,name,args,context=None):
62
for sol_brw in self.browse(cr,uid,ids):
58
def get_gain(self, cr, uid, ids, name, args, context=None):
63
for sol_brw in self.browse(cr, uid, ids):
63
64
if sol_brw.product_id:
64
65
product_cost = sol_brw.product_id.standard_price
65
66
if product_cost != 0.0:
66
67
product_pu = sol_brw.price_unit
67
res[sol_brw.id]=((product_pu-product_cost)/product_cost)*100
69
product_pu-product_cost)/product_cost)*100
69
raise osv.except_osv(_("User Error"), _("The product standard price can't be 0.0!"))
71
raise osv.except_osv(_("User Error"), _(
72
"The product standard price can't be 0.0!"))
75
78
_inherit = 'sale.order.line'
77
'gain':fields.function(get_gain,method=True, type='float',string='Gain',digits_compute= dp.get_precision('Commission'),
79
'sale.order.line':(lambda self, cr, uid, ids, c={}: ids, ['price_unit','price_subtotal','product_uom_qty'], 15),
81
'commission': fields.function(get_abs_commission,method=True, type='float',string='Commission',digits_compute= dp.get_precision('Commission'),
83
'sale.order.line':(lambda self, cr, uid, ids, c={}: ids, None, 25),
80
'gain': fields.function(get_gain, method=True, type='float', string='Gain', digits_compute=dp.get_precision('Commission'),
82
'sale.order.line': (lambda self, cr, uid, ids, c={}: ids, ['price_unit', 'price_subtotal', 'product_uom_qty'], 15),
84
'commission': fields.function(get_abs_commission, method=True, type='float', string='Commission', digits_compute=dp.get_precision('Commission'),
86
'sale.order.line': (lambda self, cr, uid, ids, c={}: ids, None, 25),
87
sale_commission_line()