~vauxoo/addons-vauxoo/7.0-account_move_folio-dev-hbto

« back to all changes in this revision

Viewing changes to invoice_commission/invoice_commission.py

  • Committer: nhomar at vauxoo
  • Date: 2012-03-08 18:57:36 UTC
  • mfrom: (134.1.16 addons-vauxoo)
  • Revision ID: nhomar@vauxoo.com-20120308185736-chu9pu4gpg5yp6w2
[MERGE] from Nhomar and Miguel branch, web and commision

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- encoding: utf-8 -*-
 
2
from osv import osv
 
3
from osv import fields
 
4
import decimal_precision as dp
 
5
 
 
6
class invoice_commission(osv.osv):
 
7
 
 
8
    def _get_commission(self, cr, uid,ids,name,args,context=None):
 
9
        res={}
 
10
        for ai_brw in self.browse(cr,uid,ids):
 
11
            res[ai_brw.id]=0.0
 
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
 
15
        return res
 
16
 
 
17
    def _get_invoice_line(self, cr, uid, ids, context=None):
 
18
        res = {}
 
19
        for line in self.pool.get('account.invoice.line').browse(cr, uid, ids, context=context):
 
20
            res[line.invoice_id.id] = True
 
21
        return res.keys()
 
22
 
 
23
    _inherit = 'account.invoice'
 
24
    _columns = {
 
25
        'commission': fields.function(_get_commission, method=True, type='float', string='Commission',digits_compute= dp.get_precision('Commission'),
 
26
            store={
 
27
                'account.invoice': (lambda  self, cr, uid, ids, c={}: ids,['invoice_line','state'], 25),
 
28
                'account.invoice.line': (_get_invoice_line, ['gain', 'commission'], 15),})
 
29
    }
 
30
invoice_commission()
 
31
 
 
32
 
 
33
class invoice_commission_line(osv.osv):
 
34
 
 
35
    def get_abs_commission(self, cr, uid,ids,name,args,context=None):
 
36
        bar_obj = self.pool.get('baremo.book')
 
37
        res={}
 
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
 
40
            if not bar_id:
 
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'
 
46
                res[ail_brw.id]=0.0
 
47
                continue
 
48
            rate = ail_brw.gain
 
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])
 
52
        return res
 
53
    
 
54
    def get_gain(self, cr, uid,ids,name,args,context=None):
 
55
        res={}
 
56
        product_price = 0 
 
57
        product_pu = 0 
 
58
        gain = 0 
 
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
 
64
            else:
 
65
                res[ail_brw.id]=0.0
 
66
        print 'get_gain'
 
67
        return res
 
68
  
 
69
    _inherit = 'account.invoice.line'
 
70
    _columns = {
 
71
        'gain':fields.function(get_gain,method=True, type='float',string='Gain',digits_compute= dp.get_precision('Commission'),
 
72
            store={
 
73
                'account.invoice.line':(lambda self, cr, uid, ids, c={}: ids, ['price_unit','price_subtotal','product_uom_qty'], 15),
 
74
            }),
 
75
        'commission': fields.function(get_abs_commission,method=True, type='float',string='Commission',digits_compute= dp.get_precision('Commission'),
 
76
            store={
 
77
                'account.invoice.line':(lambda self, cr, uid, ids, c={}: ids, None, 25),
 
78
            }),
 
79
    }
 
80
invoice_commission_line()
 
81
 
 
82