Use string digits
This commit is contained in:
1 parent
2935c11b34
commit
29a75edbf9
2 files changed
+69
-13
No files matched your search
+63
-11
@@ -149,8 +149,7 @@ class PaymentTermLine(OSV):
|
||||
'invisible': "type != 'percent'",
|
||||
'required': "type == 'percent'",
|
||||
})
|
||||
#TODO digits depends of currency
|
||||
amount = fields.Numeric('Amount', digits=(16, 2),
|
||||
amount = fields.Numeric('Amount', digits="(16, currency_digits)",
|
||||
states={
|
||||
'invisible': "type != 'fixed'",
|
||||
'required': "type == 'fixed'",
|
||||
@@ -160,6 +159,8 @@ class PaymentTermLine(OSV):
|
||||
'invisible': "type != 'fixed'",
|
||||
'required': "type == 'fixed'",
|
||||
})
|
||||
currency_digits = fields.Function('get_currency_digits', type='integer',
|
||||
string='Currency Digits', on_change_with=['currency'])
|
||||
days = fields.Integer('Number of Days')
|
||||
delay = fields.Selection('get_delay', 'Condition', required=True)
|
||||
|
||||
@@ -197,6 +198,24 @@ class PaymentTermLine(OSV):
|
||||
res['percent'] = Decimal('0.0')
|
||||
return res
|
||||
|
||||
def on_change_with_currency_digits(self, cursor, user, ids, vals,
|
||||
context=None):
|
||||
currency_obj = self.pool.get('currency.currency')
|
||||
if vals.get('currency'):
|
||||
currency = currency_obj.browse(cursor, user, vals['currency'],
|
||||
context=context)
|
||||
return currency.digits
|
||||
return 2
|
||||
|
||||
def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
|
||||
res = {}
|
||||
for line in self.browse(cursor, user, ids, context=context):
|
||||
if line.currency:
|
||||
res[line.id] = line.currency.digits
|
||||
else:
|
||||
res[line.id] = 2
|
||||
return res
|
||||
|
||||
PaymentTermLine()
|
||||
|
||||
|
||||
@@ -234,6 +253,8 @@ class Invoice(OSV):
|
||||
required=True, states=_STATES, domain="[('party', '=', party)]")
|
||||
currency = fields.Many2One('currency.currency', 'Currency', required=True,
|
||||
states=_STATES)
|
||||
currency_digits = fields.Function('get_currency_digits', type='integer',
|
||||
string='Currency Digits', on_change_with=['currency'])
|
||||
journal = fields.Many2One('account.journal', 'Journal', required=True,
|
||||
states=_STATES, domain=[('centralisation', '=', False)])
|
||||
move = fields.Many2One('account.move', 'Move', readonly=True)
|
||||
@@ -247,13 +268,12 @@ class Invoice(OSV):
|
||||
taxes = fields.One2Many('account.invoice.tax', 'invoice', 'Tax Lines',
|
||||
states=_STATES)
|
||||
comment = fields.Text('Comment')
|
||||
#TODO digits must depend of currency
|
||||
untaxed_amount = fields.Function('get_untaxed_amount', type='numeric',
|
||||
digits=(16, 2), string='Untaxed')
|
||||
digits="(16, currency_digits)", string='Untaxed')
|
||||
tax_amount = fields.Function('get_tax_amount', type='numeric',
|
||||
digits=(16, 2), string='Tax')
|
||||
digits="(16, currency_digits)", string='Tax')
|
||||
total_amount = fields.Function('get_total_amount', type='numeric',
|
||||
digits=(16, 2), string='Total')
|
||||
digits="(16, currency_digits)", string='Total')
|
||||
reconciled = fields.Function('get_reconciled', type='boolean',
|
||||
string='Reconciled')
|
||||
lines_to_pay = fields.Function('get_lines_to_pay', type='one2many',
|
||||
@@ -262,9 +282,11 @@ class Invoice(OSV):
|
||||
'invoice_payment_lines_rel', 'invoice', 'line', readonly=True,
|
||||
string='Payment Lines')
|
||||
amount_to_pay_today = fields.Function('get_amount_to_pay',
|
||||
type='numeric', digits=(16, 2), string='Amount to Pay Today')
|
||||
type='numeric', digits="(16, currency_digits)",
|
||||
string='Amount to Pay Today')
|
||||
amount_to_pay = fields.Function('get_amount_to_pay',
|
||||
type='numeric', digits=(16, 2), string='Amount to Pay')
|
||||
type='numeric', digits="(16, currency_digits)",
|
||||
string='Amount to Pay')
|
||||
invoice_report = fields.Binary('Invoice Report', readonly=True)
|
||||
invoice_report_format = fields.Char('Invoice Report Format', readonly=True)
|
||||
|
||||
@@ -403,6 +425,21 @@ class Invoice(OSV):
|
||||
res['payment_term'], context=context)[0]
|
||||
return res
|
||||
|
||||
def on_change_with_currency_digits(self, cursor, user, ids, vals,
|
||||
context=None):
|
||||
currency_obj = self.pool.get('currency.currency')
|
||||
if vals.get('currency'):
|
||||
currency = currency_obj.browse(cursor, user, vals['currency'],
|
||||
context=context)
|
||||
return currency.digits
|
||||
return 2
|
||||
|
||||
def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
|
||||
res = {}
|
||||
for invoice in self.browse(cursor, user, ids, context=context):
|
||||
res[invoice.id] = invoice.currency.digits
|
||||
return res
|
||||
|
||||
def get_type_name(self, cursor, user, ids, name, arg, context=None):
|
||||
res = {}
|
||||
type2name = {}
|
||||
@@ -1124,9 +1161,11 @@ class InvoiceLine(OSV):
|
||||
'required': "type == 'line'",
|
||||
})
|
||||
amount = fields.Function('get_amount', type='numeric', string='Amount',
|
||||
digits="(16, parent.currency_digits)",
|
||||
states={
|
||||
'invisible': "type not in ('line', 'subtotal')",
|
||||
})
|
||||
}, on_change_with=['type', 'quantity', 'unit_price',
|
||||
'parent.currency'])
|
||||
description = fields.Char('Description', size=None, required=True)
|
||||
taxes = fields.Many2Many('account.tax', 'account_invoice_line_account_tax',
|
||||
'line', 'tax', 'Taxes', domain=[('parent', '=', False)],
|
||||
@@ -1166,6 +1205,19 @@ class InvoiceLine(OSV):
|
||||
def default_unit_price(self, cursor, user, context=None):
|
||||
return Decimal('0.0')
|
||||
|
||||
def on_change_with_amount(self, cursor, user, ids, vals, context=None):
|
||||
currency_obj = self.pool.get('currency.currency')
|
||||
if vals.get('type') == 'line':
|
||||
if isinstance(vals.get('parent.currency'), (int, long)):
|
||||
currency = currency_obj.browse(cursor, user,
|
||||
vals['parent.currency'], context=context)
|
||||
else:
|
||||
currency = vals['parent.currency']
|
||||
return currency_obj.round(cursor, user, currency,
|
||||
Decimal(str(vals.get('quantity') or '0.0')) * \
|
||||
(vals.get('unit_price') or Decimal('0.0')))
|
||||
return Decimal('0.0')
|
||||
|
||||
def get_amount(self, cursor, user, ids, name, arg, context=None):
|
||||
currency_obj = self.pool.get('currency.currency')
|
||||
res = {}
|
||||
@@ -1418,11 +1470,11 @@ class InvoiceTax(OSV):
|
||||
account = fields.Many2One('account.account', 'Account', required=True,
|
||||
domain="[('kind', '!=', 'view'), " \
|
||||
"('company', '=', parent.company)]")
|
||||
base = fields.Numeric('Base', digits=(16, 2),
|
||||
base = fields.Numeric('Base', digits="(16, parent.currency_digits)",
|
||||
states={
|
||||
'invisible': "manual",
|
||||
})
|
||||
amount = fields.Numeric('Amount', digits=(16, 2))
|
||||
amount = fields.Numeric('Amount', digits="(16, parent.currency_digits)")
|
||||
manual = fields.Boolean('Manual')
|
||||
base_code = fields.Many2One('account.tax.code', 'Base Code',
|
||||
domain="[('company', '=', parent.company)]",
|
||||
|
||||
+6
-2
@@ -27,6 +27,7 @@
|
||||
<field name="days"/>
|
||||
<field name="delay"/>
|
||||
<field name="sequence" tree_invisible="1"/>
|
||||
<field name="currency_digits" tree_invisible="1"/>
|
||||
</tree>
|
||||
<form string="Payment Term Lines">
|
||||
<label name="type"/>
|
||||
@@ -45,6 +46,7 @@
|
||||
<field name="days"/>
|
||||
<label name="delay"/>
|
||||
<field name="delay"/>
|
||||
<field name="currency_digits" invisible="1"/>
|
||||
</form>
|
||||
</field>
|
||||
</form>
|
||||
@@ -273,6 +275,7 @@
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
<field name="currency_digits" invisible="1"/>
|
||||
</form>
|
||||
]]>
|
||||
</field>
|
||||
@@ -294,6 +297,7 @@
|
||||
<field name="state" select="1"/>
|
||||
<field name="amount_to_pay_today"/>
|
||||
<field name="description" select="2"/>
|
||||
<field name="currency_digits" tree_invisible="1"/>
|
||||
</tree>
|
||||
]]>
|
||||
</field>
|
||||
@@ -520,10 +524,10 @@
|
||||
<field name="quantity"/>
|
||||
<label name="unit"/>
|
||||
<field name="unit"/>
|
||||
<label name="amount"/>
|
||||
<field name="amount"/>
|
||||
<label name="unit_price"/>
|
||||
<field name="unit_price"/>
|
||||
<label name="amount"/>
|
||||
<field name="amount"/>
|
||||
<separator name="taxes" colspan="4"/>
|
||||
<field name="taxes" colspan="4"/>
|
||||
</form>
|
||||
|
||||
Reference in new issue
Block a user