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
    • 220
    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                           
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: