Allow resetting running assets without moves to draft

issue9939
review351821003
This commit is contained in:
Cédric Krier committed 2021-05-18 22:02:25 +02:00
1 parent 1da3145f22
commit a00524e44c
5 files changed
+38 -5

No files matched your search

+3
View File
@@ -1,3 +1,6 @@
* Allow resetting running assets without moves to draft
* Allow refreshing pending asset lines
Version 6.0.0 - 2021-05-03
* Bug fixes (see mercurial logs for details)
+25 -5
View File
@@ -222,8 +222,14 @@ class Asset(Workflow, ModelSQL, ModelView):
cls._transitions |= set((
('draft', 'running'),
('running', 'closed'),
('running', 'draft'),
))
cls._buttons.update({
'draft': {
'invisible': (Eval('lines', [])
| (Eval('state') != 'running')),
'depends': ['state'],
},
'run': {
'invisible': Eval('state') != 'draft',
'depends': ['state'],
@@ -233,13 +239,12 @@ class Asset(Workflow, ModelSQL, ModelView):
'depends': ['state'],
},
'create_lines': {
'invisible': (Eval('lines', [])
| (Eval('state') != 'draft')),
'invisible': ~Eval('state').in_(['draft', 'running']),
'depends': ['state'],
},
'clear_lines': {
'invisible': (~Eval('lines', [0])
| (Eval('state') != 'draft')),
| ~Eval('state').in_(['draft', 'running'])),
'depends': ['state'],
},
'update': {
@@ -407,7 +412,10 @@ class Asset(Workflow, ModelSQL, ModelView):
# dateutil >= 2.0 has replace __nonzero__ by __bool__ which doesn't
# work in Python < 3
if delta == relativedelta.relativedelta():
return [self.end_date]
if not self.lines:
return [self.end_date]
else:
return []
if self.frequency == 'monthly':
rule = rrule.rrule(rrule.MONTHLY, dtstart=self.start_date,
bymonthday=int(config.get_multivalue(
@@ -510,7 +518,6 @@ class Asset(Workflow, ModelSQL, ModelView):
def create_lines(cls, assets):
pool = Pool()
Line = pool.get('account.asset.line')
cls.clear_lines(assets)
lines = []
for asset in assets:
@@ -577,6 +584,8 @@ class Asset(Workflow, ModelSQL, ModelView):
Move = pool.get('account.move')
Line = pool.get('account.asset.line')
cls.create_lines(assets)
moves = []
lines = []
for asset_ids in grouped_slice(assets):
@@ -657,6 +666,16 @@ class Asset(Workflow, ModelSQL, ModelView):
'asset_sequence', company=asset.company.id).get()
cls.save(assets)
@classmethod
@ModelView.button
@Workflow.transition('draft')
def draft(cls, assets):
for asset in assets:
if asset.lines:
raise AccessError(
gettext('account_asset.msg_draft_lines',
asset=asset.rec_name))
@classmethod
@ModelView.button
@Workflow.transition('running')
@@ -933,6 +952,7 @@ class UpdateAsset(Wizard):
'residual_value': self.start.residual_value,
'end_date': self.start.end_date,
})
self.model.clear_lines([self.record])
self.model.create_lines([self.record])
return 'end'
+6
View File
@@ -132,6 +132,12 @@
<field name="perm_delete" eval="True"/>
</record>
<record model="ir.model.button" id="asset_draft_button">
<field name="name">draft</field>
<field name="string">Draft</field>
<field name="model" search="[('model', '=', 'account.asset')]"/>
</record>
<record model="ir.model.button" id="asset_close_button">
<field name="name">close</field>
<field name="string">Close</field>
+3
View File
@@ -3,6 +3,9 @@
this repository contains the full copyright notices and license terms. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="msg_asset_draft_lines">
<field name="text">You cannot reset to draft asset "%(asset)s" because it has lines.</field>
</record>
<record model="ir.message" id="msg_asset_delete_draft">
<field name="text">You cannot delete asset "%(asset)s" because it is not in "draft" state.</field>
</record>
+1
View File
@@ -49,6 +49,7 @@
<label name="state"/>
<field name="state"/>
<group col="-1" colspan="4" id="buttons">
<button name="draft" icon="tryton-back"/>
<button name="clear_lines" icon="tryton-clear"/>
<button name="create_lines" icon="tryton-launch"/>
<button name="update" icon="tryton-create"/>