Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
1 Rispondi
4294 Visualizzazioni

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

Avatar
Abbandona
Autore Risposta migliore

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
Abbandona
Post correlati Risposte Visualizzazioni Attività
3
gen 25
3375
2
giu 25
2051
2
giu 25
5955
0
nov 23
1510
0
mar 23
1598