line/splitline: quantitiy-states korrigiert
This commit is contained in:
parent
b9b500624e
commit
bf84b092fc
3 changed files with 40 additions and 28 deletions
36
line.py
36
line.py
|
@ -6,22 +6,36 @@
|
|||
from decimal import Decimal
|
||||
from trytond.model import fields
|
||||
from trytond.pool import PoolMeta, Pool
|
||||
from trytond.pyson import Eval, Or, If
|
||||
from trytond.pyson import Eval, Or, If, And
|
||||
from trytond.exceptions import UserError
|
||||
from trytond.i18n import gettext
|
||||
from trytond.report import Report
|
||||
from trytond.modules.cashbook.line import STATES, DEPENDS
|
||||
from .mixin import SecondUomMixin
|
||||
|
||||
STATESQ = {
|
||||
'required': Eval('feature', '') == 'asset',
|
||||
'invisible': Eval('feature', '') != 'asset',
|
||||
STATESQ1 = {
|
||||
'invisible': And(
|
||||
Eval('feature', '') != 'asset',
|
||||
Eval('booktransf_feature', '') != 'asset',
|
||||
),
|
||||
'required': Or(
|
||||
Eval('feature', '') == 'asset',
|
||||
Eval('booktransf_feature', '') == 'asset',
|
||||
),
|
||||
'readonly': Or(
|
||||
STATES['readonly'],
|
||||
Eval('bookingtype', '').in_(['spin', 'spout']),
|
||||
),
|
||||
}
|
||||
DEPENDSQ = DEPENDS+['feature', 'quantity_digits', 'bookingtype']
|
||||
DEPENDSQ1 = ['feature', 'booktransf_feature', 'quantity_digits', 'bookingtype']
|
||||
DEPENDSQ1.extend(DEPENDS)
|
||||
|
||||
|
||||
STATESQ2 = {
|
||||
'invisible': Eval('feature', '') != 'asset',
|
||||
'required': Eval('feature', '') == 'asset',
|
||||
}
|
||||
DEPENDSQ2 = ['feature', 'quantity_digits', 'bookingtype']
|
||||
|
||||
|
||||
class Line(SecondUomMixin, metaclass=PoolMeta):
|
||||
|
@ -29,19 +43,13 @@ class Line(SecondUomMixin, metaclass=PoolMeta):
|
|||
|
||||
quantity = fields.Numeric(string='Quantity',
|
||||
digits=(16, Eval('quantity_digits', 4)),
|
||||
states=STATESQ, depends=DEPENDSQ)
|
||||
states=STATESQ1, depends=DEPENDSQ1)
|
||||
quantity_credit = fields.Numeric(string='Quantity Credit',
|
||||
digits=(16, Eval('quantity_digits', 4)), readonly=True,
|
||||
states={
|
||||
'invisible': STATESQ['invisible'],
|
||||
'required': STATESQ['required'],
|
||||
}, depends=DEPENDSQ)
|
||||
states=STATESQ2, depends=DEPENDSQ2)
|
||||
quantity_debit = fields.Numeric(string='Quantity Debit',
|
||||
digits=(16, Eval('quantity_digits', 4)), readonly=True,
|
||||
states={
|
||||
'invisible': STATESQ['invisible'],
|
||||
'required': STATESQ['required'],
|
||||
}, depends=DEPENDSQ)
|
||||
states=STATESQ2, depends=DEPENDSQ2)
|
||||
|
||||
quantity_digits = fields.Function(fields.Integer(string='Digits',
|
||||
readonly=True, states={'invisible': True}),
|
||||
|
|
26
splitline.py
26
splitline.py
|
@ -6,27 +6,27 @@
|
|||
|
||||
from trytond.pool import PoolMeta, Pool
|
||||
from trytond.model import fields
|
||||
from trytond.pyson import Eval, Or
|
||||
from trytond.pyson import Eval, Or, And
|
||||
from trytond.modules.cashbook.line import STATES
|
||||
from .mixin import SecondUomMixin
|
||||
from .line import STATESQ1, DEPENDSQ1
|
||||
|
||||
|
||||
STATES = {
|
||||
'readonly': Or(
|
||||
Eval('state', '') != 'edit',
|
||||
Eval('state_cashbook', '') != 'open',
|
||||
),
|
||||
'required': Eval('feature', '') == 'asset',
|
||||
'invisible': Eval('feature', '') != 'asset',
|
||||
}
|
||||
DEPENDS=['state', 'state_cashbook', 'feature']
|
||||
|
||||
STATESQ1A = {}
|
||||
STATESQ1A.update(STATESQ1)
|
||||
STATESQ1A['readonly'] = ~And(
|
||||
~STATES['readonly'],
|
||||
Eval('bookingtype', '').in_(['spin', 'spout']),
|
||||
Or(
|
||||
Eval('feature', '') == 'asset',
|
||||
Eval('booktransf_feature', '') == 'asset',
|
||||
))
|
||||
|
||||
class SplitLine(SecondUomMixin, metaclass=PoolMeta):
|
||||
__name__ = 'cashbook.split'
|
||||
|
||||
quantity = fields.Numeric(string='Quantity',
|
||||
digits=(16, Eval('quantity_digits', 4)),
|
||||
states=STATES, depends=DEPENDS+['quantity_digits'])
|
||||
states=STATESQ1A, depends=DEPENDSQ1)
|
||||
quantity_digits = fields.Function(fields.Integer(string='Digits',
|
||||
readonly=True, states={'invisible': True}),
|
||||
'on_change_with_quantity_digits')
|
||||
|
|
|
@ -600,6 +600,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase):
|
|||
self.assertEqual(book.lines[0].quantity_credit, None)
|
||||
self.assertEqual(book.lines[0].quantity_debit, None)
|
||||
self.assertEqual(book.lines[0].feature, 'gen')
|
||||
self.assertEqual(book.lines[0].booktransf_feature, 'asset')
|
||||
self.assertEqual(len(book2.lines), 0)
|
||||
self.assertEqual(book.lines[0].rec_name,
|
||||
'05/01/2022|to|-1.00 usd|Transfer Out [Asset-Book | 0.00 usd | Open | 0.0000 u]')
|
||||
|
@ -739,6 +740,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase):
|
|||
self.assertEqual(book.lines[0].quantity_credit, None)
|
||||
self.assertEqual(book.lines[0].quantity_debit, None)
|
||||
self.assertEqual(book.lines[0].feature, 'gen')
|
||||
self.assertEqual(book.lines[0].booktransf_feature, 'asset')
|
||||
self.assertEqual(len(book2.lines), 0)
|
||||
self.assertEqual(book.lines[0].rec_name,
|
||||
'05/01/2022|from|1.00 usd|Transfer In [Asset-Book | 0.00 usd | Open | 0.0000 u]')
|
||||
|
@ -863,6 +865,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase):
|
|||
self.assertEqual(book.lines[0].quantity_credit, Decimal('1.5'))
|
||||
self.assertEqual(book.lines[0].quantity_debit, Decimal('0.0'))
|
||||
self.assertEqual(book.lines[0].feature, 'asset')
|
||||
self.assertEqual(book.lines[0].booktransf_feature, 'asset')
|
||||
self.assertEqual(len(book2.lines), 0)
|
||||
self.assertEqual(book.lines[0].rec_name,
|
||||
'05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | 0.00 usd | Open | 0.0000 u]|1.5000 u')
|
||||
|
@ -1228,6 +1231,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase):
|
|||
{
|
||||
'lines': [('create', [{
|
||||
'bookingtype': 'spin',
|
||||
'date': date(2022, 5, 1),
|
||||
'splitlines': [('create', [{
|
||||
'amount': Decimal('5.0'),
|
||||
'splittype': 'cat',
|
||||
|
@ -1251,6 +1255,6 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase):
|
|||
self.assertEqual(book.lines[0].amount, Decimal('11.0'))
|
||||
self.assertEqual(book.lines[0].quantity, Decimal('4.0'))
|
||||
self.assertEqual(book.lines[0].quantity_uom.symbol, 'u')
|
||||
self.assertEqual(book.lines[0].rec_name, '01/15/2023|Rev/Sp|11.00 usd|- [-]|4.00 u')
|
||||
self.assertEqual(book.lines[0].rec_name, '05/01/2022|Rev/Sp|11.00 usd|- [-]|4.00 u')
|
||||
|
||||
# end CbInvTestCase
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue