diff --git a/facho/model/__init__.py b/facho/model/__init__.py index 0c2f73c..59b8d55 100644 --- a/facho/model/__init__.py +++ b/facho/model/__init__.py @@ -42,7 +42,7 @@ class ModelBase(object, metaclass=ModelMeta): if isinstance(v, fields.Field): obj._order_fields.append(key) - if isinstance(v, fields.Attribute) or isinstance(v, fields.Many2One) or isinstance(v, fields.Function): + if isinstance(v, fields.Attribute) or isinstance(v, fields.Many2One) or isinstance(v, fields.Function) or isinstance(v, fields.Amount): if hasattr(v, 'default') and v.default is not None: setattr(obj, key, v.default) diff --git a/facho/model/fields/__init__.py b/facho/model/fields/__init__.py index 6e9408d..081f195 100644 --- a/facho/model/fields/__init__.py +++ b/facho/model/fields/__init__.py @@ -4,8 +4,9 @@ from .one2many import One2Many from .function import Function from .virtual import Virtual from .field import Field +from .amount import Amount -__all__ = [Attribute, One2Many, Many2One, Virtual, Field] +__all__ = [Attribute, One2Many, Many2One, Virtual, Field, Amount] def on_change(fields): from functools import wraps diff --git a/tests/test_model.py b/tests/test_model.py index f6ae1ee..7104920 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -489,3 +489,20 @@ def test_model_attributes_order(): assert '' == invoice.to_xml() + +def test_field_amount(): + class Line(facho.model.Model): + __name__ = 'Line' + + amount = fields.Amount(name='Amount', precision=0) + amount_as_attribute = fields.Attribute('amount') + + @fields.on_change(['amount']) + def on_amount(self, name, value): + self.amount_as_attribute = self.amount + + line = Line() + line.amount = 33 + + assert '' == line.to_xml() + diff --git a/tests/test_model_invoice.py b/tests/test_model_invoice.py index 6472fd0..79d3604 100644 --- a/tests/test_model_invoice.py +++ b/tests/test_model_invoice.py @@ -34,7 +34,7 @@ def _test_simple_invoice_cufe(): invoice.customer.party.id = '800199436' line = invoice.lines.create() - line.quantity = form.Quantity(1, '94') - line.price = form.Amount(1_500_000) + line.quantity = 1 + line.price = 1_500_000 subtotal = line.taxtotal.subtotals.create() subtotal.percent = 19.0