Allow resetting running assets without moves to draft
issue9939 review351821003
This commit is contained in:
1 parent
1da3145f22
commit
a00524e44c
5 files changed
+38
-5
No files matched your search
@@ -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)
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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,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>
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
Reference in new issue
Block a user