1
# -*- encoding: utf-8 -*-
4
import decimal_precision as dp
6
class invoice_commission(osv.osv):
8
def _get_commission(self, cr, uid,ids,name,args,context=None):
10
for ai_brw in self.browse(cr,uid,ids):
12
if ai_brw.type in ['out_invoice','out_refound']:
13
for iol_brw in ai_brw.invoice_line:
14
res[ai_brw.id]+=iol_brw.commission
17
def _get_invoice_line(self, cr, uid, ids, context=None):
19
for line in self.pool.get('account.invoice.line').browse(cr, uid, ids, context=context):
20
res[line.invoice_id.id] = True
23
_inherit = 'account.invoice'
25
'commission': fields.function(_get_commission, method=True, type='float', string='Commission',digits_compute= dp.get_precision('Commission'),
27
'account.invoice': (lambda self, cr, uid, ids, c={}: ids,['invoice_line','state'], 25),
28
'account.invoice.line': (_get_invoice_line, ['gain', 'commission'], 15),})
33
class invoice_commission_line(osv.osv):
35
def get_abs_commission(self, cr, uid,ids,name,args,context=None):
36
bar_obj = self.pool.get('baremo.book')
38
for ail_brw in self.browse(cr,uid,ids):
39
bar_id = ail_brw.company_id.bar_id and ail_brw.company_id.bar_id.id or False
41
# TODO: raise exception, levantar excepcion.
42
# de momento esta asi como se muestra, enviando
43
# un calculo igual a cero para cuando no haya
44
# establecido en la company un tipo de baremo
45
print 'NO HAY BAREMO EN LA COMPANY'
49
rate_comm=bar_obj._calc_comm(cr,uid,ids,bar_id,rate,0.0,context=None)['rate_comm']
50
res[ail_brw.id]=ail_brw.price_subtotal * rate_comm / 100
51
print 'res[%s] = subtotal(%s) * tasa(%s) => %s'%(ail_brw.id, ail_brw.price_subtotal,rate_comm,res[ail_brw.id])
54
def get_gain(self, cr, uid,ids,name,args,context=None):
59
for ail_brw in self.browse(cr,uid,ids):
60
if ail_brw.product_id:
61
product_cost = ail_brw.product_id.standard_price
62
product_pu = ail_brw.price_unit
63
res[ail_brw.id]=((product_pu-product_cost)/product_cost)*100
69
_inherit = 'account.invoice.line'
71
'gain':fields.function(get_gain,method=True, type='float',string='Gain',digits_compute= dp.get_precision('Commission'),
73
'account.invoice.line':(lambda self, cr, uid, ids, c={}: ids, ['price_unit','price_subtotal','product_uom_qty'], 15),
75
'commission': fields.function(get_abs_commission,method=True, type='float',string='Commission',digits_compute= dp.get_precision('Commission'),
77
'account.invoice.line':(lambda self, cr, uid, ids, c={}: ids, None, 25),
80
invoice_commission_line()