se adicion campo fields.Amount

FossilOrigin-Name: b23b2c243daaf0788cf47736015d75eecae9f4eb55cd4d31b9e063d7fa9a0691
This commit is contained in:
bit4bit 2021-07-03 21:50:56 +00:00
parent 507ddbe558
commit b3e4a088b7
4 changed files with 22 additions and 4 deletions

View File

@ -42,7 +42,7 @@ class ModelBase(object, metaclass=ModelMeta):
if isinstance(v, fields.Field): if isinstance(v, fields.Field):
obj._order_fields.append(key) 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: if hasattr(v, 'default') and v.default is not None:
setattr(obj, key, v.default) setattr(obj, key, v.default)

View File

@ -4,8 +4,9 @@ from .one2many import One2Many
from .function import Function from .function import Function
from .virtual import Virtual from .virtual import Virtual
from .field import Field 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): def on_change(fields):
from functools import wraps from functools import wraps

View File

@ -489,3 +489,20 @@ def test_model_attributes_order():
assert '<Invoice><Line1 quantity="1"/><Line2 quantity="2"/><Line3 quantity="3"/></Invoice>' == invoice.to_xml() assert '<Invoice><Line1 quantity="1"/><Line2 quantity="2"/><Line3 quantity="3"/></Invoice>' == 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 amount="33"/>' == line.to_xml()

View File

@ -34,7 +34,7 @@ def _test_simple_invoice_cufe():
invoice.customer.party.id = '800199436' invoice.customer.party.id = '800199436'
line = invoice.lines.create() line = invoice.lines.create()
line.quantity = form.Quantity(1, '94') line.quantity = 1
line.price = form.Amount(1_500_000) line.price = 1_500_000
subtotal = line.taxtotal.subtotals.create() subtotal = line.taxtotal.subtotals.create()
subtotal.percent = 19.0 subtotal.percent = 19.0