diff --git a/addons/account/account.py b/addons/account/account.py index b6dd4bfb11b..85dc85fd2d8 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -30,6 +30,7 @@ import pooler import mx.DateTime from mx.DateTime import RelativeDateTime, now, DateTime, localtime +from tools import config class account_payment_term(osv.osv): _name = "account.payment.term" @@ -53,11 +54,11 @@ class account_payment_term(osv.osv): result = [] for line in pt.line_ids: if line.value == 'fixed': - amt = round(line.value_amount, 2) + amt = round(line.value_amount, int(config['price_accuracy'])) elif line.value == 'procent': - amt = round(value * line.value_amount, 2) + amt = round(value * line.value_amount, int(config['price_accuracy'])) elif line.value == 'balance': - amt = round(amount, 2) + amt = round(amount, int(config['price_accuracy'])) if amt: next_date = mx.DateTime.strptime(date_ref, '%Y-%m-%d') + RelativeDateTime(days=line.days) if line.days2 < 0: @@ -267,9 +268,9 @@ class account_account(osv.osv): 'child_parent_ids': fields.one2many('account.account','parent_id','Children'), 'child_consol_ids': fields.many2many('account.account', 'account_account_consol_rel', 'child_id', 'parent_id', 'Consolidated Children'), 'child_id': fields.function(_get_child_ids, method=True, type='many2many', relation="account.account", string="Child Accounts"), - 'balance': fields.function(__compute, digits=(16, 2), method=True, string='Balance', multi='balance'), - 'credit': fields.function(__compute, digits=(16, 2), method=True, string='Credit', multi='balance'), - 'debit': fields.function(__compute, digits=(16, 2), method=True, string='Debit', multi='balance'), + 'balance': fields.function(__compute, digits=(16, int(config['price_accuracy'])), method=True, string='Balance', multi='balance'), + 'credit': fields.function(__compute, digits=(16, int(config['price_accuracy'])), method=True, string='Credit', multi='balance'), + 'debit': fields.function(__compute, digits=(16, int(config['price_accuracy'])), method=True, string='Debit', multi='balance'), 'reconcile': fields.boolean('Reconcile', help="Check this if the user is allowed to reconcile entries in this account."), 'shortcut': fields.char('Shortcut', size=12), 'tax_ids': fields.many2many('account.tax', 'account_account_tax_default_rel', @@ -743,7 +744,7 @@ class account_move(osv.osv): 'line_id': fields.one2many('account.move.line', 'move_id', 'Entries', states={'posted':[('readonly',True)]}), 'to_check': fields.boolean('To Be Verified'), 'partner_id': fields.related('line_id', 'partner_id', type="many2one", relation="res.partner", string="Partner"), - 'amount': fields.function(_amount_compute, method=True, string='Amount', digits=(16,2)), + 'amount': fields.function(_amount_compute, method=True, string='Amount', digits=(16,int(config['price_accuracy']))), 'date': fields.date('Date', required=True), 'type': fields.selection([ ('pay_voucher','Cash Payment'), @@ -1109,7 +1110,7 @@ class account_tax_code(osv.osv): for rec in record.child_ids: amount += _rec_get(rec) * rec.sign return amount - res[record.id] = round(_rec_get(record), 2) + res[record.id] = round(_rec_get(record), int(config['price_accuracy'])) return res def _sum_year(self, cr, uid, ids, name, args, context): @@ -1380,9 +1381,9 @@ class account_tax(osv.osv): total = 0.0 for r in res: if r.get('balance',False): - r['amount'] = round(r['balance'] * quantity, 2) - total + r['amount'] = round(r['balance'] * quantity, int(config['price_accuracy'])) - total else: - r['amount'] = round(r['amount'] * quantity, 2) + r['amount'] = round(r['amount'] * quantity, int(config['price_accuracy'])) total += r['amount'] return res @@ -1477,9 +1478,9 @@ class account_tax(osv.osv): total = 0.0 for r in res: if r.get('balance',False): - r['amount'] = round(r['balance'] * quantity, 2) - total + r['amount'] = round(r['balance'] * quantity, int(config['price_accuracy'])) - total else: - r['amount'] = round(r['amount'] * quantity, 2) + r['amount'] = round(r['amount'] * quantity, int(config['price_accuracy'])) total += r['amount'] return res account_tax() @@ -1545,9 +1546,9 @@ class account_model_line(osv.osv): _columns = { 'name': fields.char('Name', size=64, required=True), 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the resources from lower sequences to higher ones"), - 'quantity': fields.float('Quantity', digits=(16,2), help="The optional quantity on entries"), - 'debit': fields.float('Debit', digits=(16,2)), - 'credit': fields.float('Credit', digits=(16,2)), + 'quantity': fields.float('Quantity', digits=(16, int(config['price_accuracy'])), help="The optional quantity on entries"), + 'debit': fields.float('Debit', digits=(16, int(config['price_accuracy']))), + 'credit': fields.float('Credit', digits=(16, int(config['price_accuracy']))), 'account_id': fields.many2one('account.account', 'Account', required=True, ondelete="cascade"), diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 467bf02f661..559f0a88156 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -233,21 +233,21 @@ class account_invoice(osv.osv): 'tax_line': fields.one2many('account.invoice.tax', 'invoice_id', 'Tax Lines', readonly=True, states={'draft':[('readonly',False)]}), 'move_id': fields.many2one('account.move', 'Invoice Movement', readonly=True, help="Link to the automatically generated account moves."), - 'amount_untaxed': fields.function(_amount_all, method=True, digits=(16,2),string='Untaxed', + 'amount_untaxed': fields.function(_amount_all, method=True, digits=(16, int(config['price_accuracy'])),string='Untaxed', 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'], 20), }, multi='all'), - 'amount_tax': fields.function(_amount_all, method=True, digits=(16,2), string='Tax', + 'amount_tax': fields.function(_amount_all, method=True, digits=(16, int(config['price_accuracy'])), string='Tax', 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'], 20), }, multi='all'), - 'amount_total': fields.function(_amount_all, method=True, digits=(16,2), string='Total', + 'amount_total': fields.function(_amount_all, method=True, digits=(16, int(config['price_accuracy'])), string='Total', store={ 'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line'], 20), 'account.invoice.tax': (_get_invoice_tax, None, 20), @@ -257,7 +257,7 @@ class account_invoice(osv.osv): 'currency_id': fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'journal_id': fields.many2one('account.journal', 'Journal', required=True,readonly=True, states={'draft':[('readonly',False)]}), 'company_id': fields.many2one('res.company', 'Company', required=True), - 'check_total': fields.float('Total', digits=(16,2), states={'open':[('readonly',True)],'close':[('readonly',True)]}), + 'check_total': fields.float('Total', digits=(16, int(config['price_accuracy'])), states={'open':[('readonly',True)],'close':[('readonly',True)]}), 'reconciled': fields.function(_reconciled, method=True, string='Paid/Reconciled', type='boolean', store={ 'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 50), # Check if we can remove ? @@ -267,7 +267,7 @@ class account_invoice(osv.osv): 'partner_bank': fields.many2one('res.partner.bank', 'Bank Account', help='The bank account to pay to or to be paid from'), 'move_lines':fields.function(_get_lines , method=True,type='many2many' , relation='account.move.line',string='Move Lines'), - 'residual': fields.function(_amount_residual, method=True, digits=(16,2),string='Residual', + 'residual': fields.function(_amount_residual, method=True, digits=(16, int(config['price_accuracy'])),string='Residual', store={ 'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line'], 50), 'account.invoice.tax': (_get_invoice_tax, None, 50), @@ -916,7 +916,7 @@ class account_invoice_line(osv.osv): cur = line.invoice_id.currency_id res[line.id] = cur_obj.round(cr, uid, cur, res[line.id]) else: - res[line.id] = round(line.price_unit * line.quantity * (1-(line.discount or 0.0)/100.0),2) + res[line.id] = round(line.price_unit * line.quantity * (1-(line.discount or 0.0)/100.0),int(config['price_accuracy'])) return res @@ -948,9 +948,9 @@ class account_invoice_line(osv.osv): 'product_id': fields.many2one('product.product', 'Product', ondelete='set null'), 'account_id': fields.many2one('account.account', 'Account', required=True, domain=[('type','<>','view'), ('type', '<>', 'closed')], help="The income or expense account related to the selected product."), 'price_unit': fields.float('Unit Price', required=True, digits=(16, int(config['price_accuracy']))), - 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal',store=True), + 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal',store=True, type="float", digits=(16, int(config['price_accuracy']))), 'quantity': fields.float('Quantity', required=True), - 'discount': fields.float('Discount (%)', digits=(16,2)), + 'discount': fields.float('Discount (%)', digits=(16, int(config['price_accuracy']))), 'invoice_line_tax_id': fields.many2many('account.tax', 'account_invoice_line_tax', 'invoice_line_id', 'tax_id', 'Taxes', domain=[('parent_id','=',False)]), 'note': fields.text('Notes'), 'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic Account'), @@ -1100,15 +1100,15 @@ class account_invoice_tax(osv.osv): 'invoice_id': fields.many2one('account.invoice', 'Invoice Line', ondelete='cascade', select=True), 'name': fields.char('Tax Description', size=64, required=True), 'account_id': fields.many2one('account.account', 'Tax Account', required=True, domain=[('type','<>','view'),('type','<>','income'), ('type', '<>', 'closed')]), - 'base': fields.float('Base', digits=(16,2)), - 'amount': fields.float('Amount', digits=(16,2)), + 'base': fields.float('Base', digits=(16,int(config['price_accuracy']))), + 'amount': fields.float('Amount', digits=(16,int(config['price_accuracy']))), 'manual': fields.boolean('Manual'), 'sequence': fields.integer('Sequence'), 'base_code_id': fields.many2one('account.tax.code', 'Base Code', help="The account basis of the tax declaration."), - 'base_amount': fields.float('Base Code Amount', digits=(16,2)), + 'base_amount': fields.float('Base Code Amount', digits=(16,int(config['price_accuracy']))), 'tax_code_id': fields.many2one('account.tax.code', 'Tax Code', help="The tax basis of the tax declaration."), - 'tax_amount': fields.float('Tax Code Amount', digits=(16,2)), + 'tax_amount': fields.float('Tax Code Amount', digits=(16,int(config['price_accuracy']))), } def base_change(self, cr, uid, ids, base,currency_id=False,company_id=False,date_invoice=False): cur_obj = self.pool.get('res.currency')