Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • Use amount booked in the company currency for conversion into voucher currency in Odoo

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 160
    Comment on it

    To Use amount booked in the company currency in openerp Follow these step to given below
    Step-1 Install the account_voucher module.
    Step-2 After that custmozie account_voucher module.
    In below example, I have custmozied account_voucher module. You can directly use the below account_voucher module in your addons.

    res['amount_original'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, move_line.credit or move_line.debit or 0.0, context=ctx) 
                    res['amount_unreconciled'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, abs(move_line.amount_residual), context=ctx)
            rs_data[line.id] = res 
        return rs_data 
    
    def _currency_id(self, cr, uid, ids, name, args, context=None): 
        ''' 
        This function returns the currency id of a voucher line. It's either the currency of the 
        associated move line (if any) or the currency of the voucher or the company currency. 
        ''' 
        res = {} 
        for line in self.browse(cr, uid, ids, context=context): 
            move_line = line.move_line_id 
            if move_line: 
                res[line.id] = move_line.currency_id and move_line.currency_id.id or move_line.company_id.currency_id.id 
            else: 
                res[line.id] = line.voucher_id.currency_id and line.voucher_id.currency_id.id or line.voucher_id.company_id.currency_id.id 
        return res 
    
    _columns = { 
        'voucher_id':fields.many2one('account.voucher', 'Voucher', required=1, ondelete='cascade'), 
        'name':fields.char('Description', size=256), 
        'account_id':fields.many2one('account.account','Account', required=True), 
        'partner_id':fields.related('voucher_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'), 
        'untax_amount':fields.float('Untax Amount'), 
        'amount':fields.float('Amount', digits_compute=dp.get_precision('Account')), 
        'reconcile': fields.boolean('Full Reconcile'), 
        'type':fields.selection([('dr','Debit'),('cr','Credit')], 'Dr/Cr'), 
        'account_analytic_id':  fields.many2one('account.analytic.account', 'Analytic Account'), 
        'move_line_id': fields.many2one('account.move.line', 'Journal Item'), 
        'date_original': fields.related('move_line_id','date', type='date', relation='account.move.line', string='Date', readonly=1), 
        'date_due': fields.related('move_line_id','date_maturity', type='date', relation='account.move.line', string='Due Date', readonly=1), 
        'amount_original': fields.function(_compute_balance, multi='dc', type='float', string='Original Amount', store=True, digits_compute=dp.get_precision('Account')), 
        'amount_unreconciled': fields.function(_compute_balance, multi='dc', type='float', string='Open Balance', store=True, digits_compute=dp.get_precision('Account')), 
        'company_id': fields.related('voucher_id','company_id', relation='res.company', type='many2one', string='Company', store=True, readonly=True), 
        'currency_id': fields.function(_currency_id, string='Currency', type='many2one', relation='res.currency', readonly=True), 
    } 
    _defaults = { 
        'name': '', 
    } 
    
    def onchange_reconcile(self, cr, uid, ids, reconcile, amount, amount_unreconciled, context=None): 
        vals = {'amount': 0.0} 
        if reconcile: 
            vals = { 'amount': amount_unreconciled} 
        return {'value': vals} 
    
    def onchange_amount(self, cr, uid, ids, amount, amount_unreconciled, context=None): 
        vals = {} 
        if amount: 
            vals['reconcile'] = (amount == amount_unreconciled) 
        return {'value': vals} 
    
    def onchange_move_line_id(self, cr, user, ids, move_line_id, context=None): 
        """ 
        Returns a dict that contains new values and context 
    
        @param move_line_id: latest value from user input for field move_line_id 
        @param args: other arguments 
        @param context: context arguments, like lang, time zone 
    
        @return: Returns a dict which contains new values, and context 
        """ 
        res = {} 
        move_line_pool = self.pool.get('account.move.line') 
        if move_line_id: 
            move_line = move_line_pool.browse(cr, user, move_line_id, context=context) 
            if move_line.credit: 
                ttype = 'dr' 
            else: 
                ttype = 'cr' 
            res.update({ 
                'account_id': move_line.account_id.id, 
                'type': ttype, 
                'currency_id': move_line.currency_id and move_line.currency_id.id or move_line.company_id.currency_id.id, 
            }) 
        return { 
            'value':res, 
        }
    

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: