Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • How to booked an amount in company currency as basis of the conversion into the voucher currency in OpenERP

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 173
    Comment on it

    If you want to use the amount booked in the company currency as the basis of the conversion into the voucher currency in OpenERP(Odoo) follow the below given steps-
    Step-1 Install the account_voucher module.
    Step-2 After that customize account_voucher module
    In below example, I have customized
    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_ine_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: