İçereği Atla
Menü
Bu soru işaretlendi
1 Cevapla
4316 Görünümler

Can we use openerp out from the box to generate interest for late payment? for example using tax feature etc...

Avatar
Vazgeç
Üretici En İyi Yanıt

To acheive this we need to create a module or change account_invoice:

Add three fields to account_invoice

'calc_increment': fields.function(_calc_increment, string = "Increment"), 
'incremented': fields.boolean('Incremented'), 
'amount_incr': fields.float('Amount Incremented'), 


Add a function called _calc_increment: 

def _calc_increment(self, cr, uid, ids, name, args, context = None): 
    res = {} 
    for invoice in self.browse(cr, uid, ids, context = context): 
        date = invoice.date_due 
        if date and date < time.strftime('%Y-%m-%d') and not invoice.incremented: 
            mount =invoice.amount_total * .10 # the interest rate ar 10% 
            self.write(cr, uid, ids, {'amount_incr': mount, 'incremented':True}, context = context) 
            res[invoice.id] = 0.0 
    return res 


Edit the_amount_all function 

def _amount_all(self, cr, uid, ids, name, args, context=None): 
    res = {} 
    for invoice in self.browse(cr, uid, ids, context=context): 

    incr = invoice.amount_incr 

    res[invoice.id] = { 
           'amount_untaxed': 0.0, 
           'amount_tax': 0.0, 
           'amount_total': 0.0 
    }

 
    for line in invoice.invoice_line: 
        res[invoice.id]['amount_untaxed'] += line.price_subtotal 
    for line in invoice.tax_line: 
        res[invoice.id]['amount_tax'] += line.amount 
        res[invoice.id]['amount_total'] = res[invoice.id]['amount_tax'] + res[invoice.id]['amount_untaxed'] + incr 
    return res 

Edit the amount_all field :


'amount_total': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Total', 
store={ 
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line'], 20), 
'account.invoice.tax': (_get_invoice_tax, None, 20), 
'account.invoice.line': (_get_invoice_line, ['price_unit','invoice_line_tax_id','quantity','discount','invoice_id'], 20), 
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['amount_incr'],21), 
}, 
 

Add calc_increment to your view with invisible attribute... 

Good Luck
 

 

 

Avatar
Vazgeç
İlgili Gönderiler Cevaplar Görünümler Aktivite
3
Oca 25
3440
2
Haz 25
2087
2
Haz 25
5990
0
Kas 23
1517
0
Mar 23
1609