Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • OpenERP-8:Use amount booked in the company currency on basis of the conversion into the voucher currency

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 920
    Comment on it

    Step-1 Install the account_voucher module and base module is also.

    Step-2 After that customize account_voucher module and sales module:

    In below example, I have customized account_voucher module. You can directly use the below account_voucher module in your addons and run in Odoo server .

    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                           

You must be logged in to access this page

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

You must be logged in to access this page

Reset Password
Fill out the form below and reset your password:

You must be logged in to access this page