Add account_asset.diff # [account_asset] issue9767: Add revisions when updating an asset (delete this patch in 6.2)

Adapt account_asset_update_asset.diff # [account_asset] decimals when updata asset #044767.

040820
This commit is contained in:
Juanjo Garcia 2021-10-06 13:28:01 +02:00
parent e5e98b3df6
commit 2da7f746d3
3 changed files with 409 additions and 33 deletions

382
account_asset.diff Normal file
View File

@ -0,0 +1,382 @@
diff --git a/trytond/trytond/modules/account_asset/__init__.py b/trytond/trytond/modules/account_asset/__init__.py
index 6d428c0..9bfe4aa 100644
--- a/trytond/trytond/modules/account_asset/__init__.py
+++ b/trytond/trytond/modules/account_asset/__init__.py
@@ -14,7 +14,7 @@ def register():
asset.AssetLine,
asset.AssetUpdateMove,
asset.CreateMovesStart,
- asset.UpdateAssetStart,
+ asset.AssetRevision,
asset.UpdateAssetShowDepreciation,
asset.PrintDepreciationTableStart,
product.Category,
diff --git a/trytond/trytond/modules/account_asset/asset.py b/trytond/trytond/modules/account_asset/asset.py
index 35a24f4..2d6a395 100644
--- a/trytond/trytond/modules/account_asset/asset.py
+++ b/trytond/trytond/modules/account_asset/asset.py
@@ -210,6 +210,8 @@ class Asset(Workflow, ModelSQL, ModelView):
},
depends=['company'])
comment = fields.Text('Comment')
+ revisions = fields.One2Many(
+ 'account.asset.revision', 'asset', "Revisions", readonly=True)
@classmethod
def __setup__(cls):
@@ -798,14 +800,6 @@ class CreateMoves(Wizard):
return 'end'
-class UpdateAssetStart(ModelView):
- 'Update Asset Start'
- __name__ = 'account.asset.update.start'
- value = fields.Numeric('Asset Value', required=True)
- residual_value = fields.Numeric('Residual Value', required=True)
- end_date = fields.Date('End Date', required=True)
-
-
class UpdateAssetShowDepreciation(ModelView):
'Update Asset Show Depreciation'
__name__ = 'account.asset.update.show_depreciation'
@@ -830,8 +824,8 @@ class UpdateAssetShowDepreciation(ModelView):
class UpdateAsset(Wizard):
'Update Asset'
__name__ = 'account.asset.update'
- start = StateView('account.asset.update.start',
- 'account_asset.asset_update_start_view_form', [
+ start = StateView('account.asset.revision',
+ 'account_asset.asset_revision_view_form', [
Button('Cancel', 'end', 'tryton-cancel'),
Button('OK', 'update_asset', 'tryton-ok', True),
])
@@ -849,6 +843,7 @@ class UpdateAsset(Wizard):
'value': self.record.value,
'residual_value': self.record.residual_value,
'end_date': self.record.end_date,
+ 'asset': self.record.id,
}
def transition_update_asset(self):
@@ -934,9 +929,68 @@ class UpdateAsset(Wizard):
'end_date': self.start.end_date,
})
self.model.create_lines([self.record])
+ self.start.asset = self.record
+ self.start.save()
return 'end'
+class AssetRevision(ModelSQL, ModelView):
+ "Asset Revision"
+ __name__ = 'account.asset.revision'
+ currency = fields.Function(
+ fields.Many2One('currency.currency', "Currency"),
+ 'on_change_with_currency')
+ currency_digits = fields.Function(
+ fields.Integer("Currency Digits"), 'on_change_with_currency_digits')
+ value = fields.Numeric(
+ "Asset Value", digits=(16, Eval('currency_digits', 2)),
+ depends=['currency_digits'], required=True)
+ residual_value = fields.Numeric(
+ "Residual Value", digits=(16, Eval('currency_digits', 2)),
+ required=True, depends=['currency_digits'])
+ end_date = fields.Date("End Date", required=True)
+ origin = fields.Reference("Origin", selection='get_origins', select=True)
+ description = fields.Char("Description")
+ asset = fields.Many2One(
+ 'account.asset', "Asset", select=True, required=True)
+
+ @classmethod
+ def __setup__(cls):
+ super().__setup__()
+ cls.__access__.add('asset')
+
+ @fields.depends('asset', '_parent_asset.currency')
+ def on_change_with_currency(self, name=None):
+ if self.asset and self.asset.currency:
+ return self.asset.currency.id
+
+ @fields.depends('asset', '_parent_asset.currency')
+ def on_change_with_currency_digits(self, name=None):
+ if self.asset and self.asset.currency:
+ return self.asset.currency.digits
+
+ @fields.depends('origin', 'value', 'asset', '_parent_asset.value')
+ def on_change_origin(self, name=None):
+ pool = Pool()
+ InvoiceLine = pool.get('account.invoice.line')
+ if isinstance(self.origin, InvoiceLine) and self.origin.id >= 0:
+ self.value = self.asset.value + self.origin.amount
+
+ @staticmethod
+ def _get_origin():
+ "Return list of Model names for origin Reference"
+ return ['account.invoice.line']
+
+ @classmethod
+ def get_origins(cls):
+ pool = Pool()
+ IrModel = pool.get('ir.model')
+
+ get_name = IrModel.get_name
+ models = cls._get_origin()
+ return [(None, '')] + [(m, get_name(m)) for m in models]
+
+
class AssetDepreciationTable(CompanyReport):
'Asset Depreciation Table'
__name__ = 'account.asset.depreciation_table'
diff --git a/trytond/trytond/modules/account_asset/asset.xml b/trytond/trytond/modules/account_asset/asset.xml
index 6cd4e5b..cadb5ad 100644
--- a/trytond/trytond/modules/account_asset/asset.xml
+++ b/trytond/trytond/modules/account_asset/asset.xml
@@ -180,8 +180,20 @@
<field name="name">asset_create_moves_start_form</field>
</record>
- <record model="ir.ui.view" id="asset_update_start_view_form">
- <field name="model">account.asset.update.start</field>
+ <record model="ir.ui.view" id="revision_view_form">
+ <field name="model">account.asset.revision</field>
+ <field name="type">form</field>
+ <field name="name">revision_form</field>
+ </record>
+
+ <record model="ir.ui.view" id="revision_view_tree">
+ <field name="model">account.asset.revision</field>
+ <field name="type">tree</field>
+ <field name="name">revision_tree</field>
+ </record>
+
+ <record model="ir.ui.view" id="asset_revision_view_form">
+ <field name="model">account.asset.revision</field>
<field name="type">form</field>
<field name="name">asset_update_start_form</field>
</record>
diff --git a/trytond/trytond/modules/account_asset/locale/ca.po b/trytond/trytond/modules/account_asset/locale/ca.po
index ec19011..1b5ba6f 100644
--- a/trytond/trytond/modules/account_asset/locale/ca.po
+++ b/trytond/trytond/modules/account_asset/locale/ca.po
@@ -82,6 +82,10 @@ msgctxt "field:account.asset,residual_value:"
msgid "Residual Value"
msgstr "Valor residual"
+msgctxt "field:account.asset,revisions:"
+msgid "Revisions"
+msgstr ""
+
msgctxt "field:account.asset,start_date:"
msgid "Start Date"
msgstr "Data inicial"
@@ -170,6 +174,38 @@ msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
msgid "Start Date"
msgstr "Data inicial"
+msgctxt "field:account.asset.revision,asset:"
+msgid "Asset"
+msgstr "Actiu"
+
+msgctxt "field:account.asset.revision,currency:"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.asset.revision,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimals de la moneda"
+
+msgctxt "field:account.asset.revision,description:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "field:account.asset.revision,end_date:"
+msgid "End Date"
+msgstr "Data finalització"
+
+msgctxt "field:account.asset.revision,origin:"
+msgid "Origin"
+msgstr "Origen"
+
+msgctxt "field:account.asset.revision,residual_value:"
+msgid "Residual Value"
+msgstr "Valor residual"
+
+msgctxt "field:account.asset.revision,value:"
+msgid "Asset Value"
+msgstr "Valor d'actiu"
+
msgctxt "field:account.asset.update.show_depreciation,amount:"
msgid "Amount"
msgstr "Import"
@@ -362,6 +398,10 @@ msgctxt "model:account.asset.print_depreciation_table.start,name:"
msgid "Asset Depreciation Table Start"
msgstr "Taula d'amortització d'actiu - Inici"
+msgctxt "model:account.asset.revision,name:"
+msgid "Asset Revision"
+msgstr ""
+
msgctxt "model:account.asset.update.show_depreciation,name:"
msgid "Update Asset Show Depreciation"
msgstr "Actualitza actius - Mostra amortització"
diff --git a/trytond/trytond/modules/account_asset/locale/es.po b/trytond/trytond/modules/account_asset/locale/es.po
index 2391f1d..ee47435 100644
--- a/trytond/trytond/modules/account_asset/locale/es.po
+++ b/trytond/trytond/modules/account_asset/locale/es.po
@@ -82,6 +82,10 @@ msgctxt "field:account.asset,residual_value:"
msgid "Residual Value"
msgstr "Valor residual"
+msgctxt "field:account.asset,revisions:"
+msgid "Revisions"
+msgstr ""
+
msgctxt "field:account.asset,start_date:"
msgid "Start Date"
msgstr "Fecha inicial"
@@ -170,6 +174,38 @@ msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
msgid "Start Date"
msgstr "Fecha inicial"
+msgctxt "field:account.asset.revision,asset:"
+msgid "Asset"
+msgstr "Activo"
+
+msgctxt "field:account.asset.revision,currency:"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.asset.revision,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimales de la moneda"
+
+msgctxt "field:account.asset.revision,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.asset.revision,end_date:"
+msgid "End Date"
+msgstr "Fecha finalización"
+
+msgctxt "field:account.asset.revision,origin:"
+msgid "Origin"
+msgstr "Origen"
+
+msgctxt "field:account.asset.revision,residual_value:"
+msgid "Residual Value"
+msgstr "Valor residual"
+
+msgctxt "field:account.asset.revision,value:"
+msgid "Asset Value"
+msgstr "Valor de activo"
+
msgctxt "field:account.asset.update.show_depreciation,amount:"
msgid "Amount"
msgstr "Importe"
@@ -362,6 +398,10 @@ msgctxt "model:account.asset.print_depreciation_table.start,name:"
msgid "Asset Depreciation Table Start"
msgstr "Tabla de amortización de activo - Inicio"
+msgctxt "model:account.asset.revision,name:"
+msgid "Asset Revision"
+msgstr ""
+
msgctxt "model:account.asset.update.show_depreciation,name:"
msgid "Update Asset Show Depreciation"
msgstr "Actualizar activo - Mostrar amortización"
diff --git a/trytond/trytond/modules/account_asset/tests/scenario_account_asset.rst b/trytond/trytond/modules/account_asset/tests/scenario_account_asset.rst
index eae63a7..780b751 100644
--- a/trytond/trytond/modules/account_asset/tests/scenario_account_asset.rst
+++ b/trytond/trytond/modules/account_asset/tests/scenario_account_asset.rst
@@ -170,7 +170,7 @@ Create Moves for 3 months::
Update the asset::
>>> update = Wizard('account.asset.update', [asset])
- >>> update.form.value = Decimal('1100')
+ >>> update.form.value = Decimal('1100.00')
>>> update.execute('update_asset')
>>> update.form.amount
Decimal('100.00')
@@ -192,7 +192,10 @@ Update the asset::
>>> update.execute('create_move')
>>> asset.reload()
>>> asset.value
- Decimal('1100')
+ Decimal('1100.00')
+ >>> revision, = asset.revisions
+ >>> revision.value
+ Decimal('1100.00')
>>> [l.depreciation for l in asset.lines[:3]]
[Decimal('37.50'), Decimal('37.50'), Decimal('37.50')]
>>> [l.depreciation for l in asset.lines[3:-1]] == [Decimal('42.26')] * 20
diff --git a/trytond/trytond/modules/account_asset/view/asset_form.xml b/trytond/trytond/modules/account_asset/view/asset_form.xml
index e9a83ad..cf95e97 100644
--- a/trytond/trytond/modules/account_asset/view/asset_form.xml
+++ b/trytond/trytond/modules/account_asset/view/asset_form.xml
@@ -45,6 +45,9 @@
<separator name="comment" colspan="4"/>
<field name="comment" colspan="4"/>
</page>
+ <page name="revisions">
+ <field name="revisions" colspan="4"/>
+ </page>
</notebook>
<label name="state"/>
<field name="state"/>
diff --git a/trytond/trytond/modules/account_asset/view/asset_update_start_form.xml b/trytond/trytond/modules/account_asset/view/asset_update_start_form.xml
index 752d6b5..f873eb2 100644
--- a/trytond/trytond/modules/account_asset/view/asset_update_start_form.xml
+++ b/trytond/trytond/modules/account_asset/view/asset_update_start_form.xml
@@ -1,11 +1,16 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of this
repository contains the full copyright notices and license terms. -->
-<form>
+<form col="6">
<label name="value"/>
<field name="value"/>
<label name="residual_value"/>
<field name="residual_value"/>
<label name="end_date"/>
<field name="end_date"/>
+ <label name="origin"/>
+ <field name="origin" colspan="2"/>
+ <label name="description"/>
+ <field name="description" colspan="2"/>
+ <field name="asset" invisible="1"/>
</form>
diff --git a/trytond/trytond/modules/account_asset/view/revision_form.xml b/trytond/trytond/modules/account_asset/view/revision_form.xml
new file mode 100644
index 0000000..6e7ae7f
--- /dev/null
+++ b/trytond/trytond/modules/account_asset/view/revision_form.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form>
+ <label name="value"/>
+ <field name="value"/>
+ <label name="end_date"/>
+ <field name="end_date"/>
+ <label name="origin"/>
+ <field name="origin"/>
+ <label name="description"/>
+ <field name="description"/>
+</form>
diff --git a/trytond/trytond/modules/account_asset/view/revision_tree.xml b/trytond/trytond/modules/account_asset/view/revision_tree.xml
new file mode 100644
index 0000000..7291a7b
--- /dev/null
+++ b/trytond/trytond/modules/account_asset/view/revision_tree.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tree>
+ <field name="asset"/>
+ <field name="end_date"/>
+ <field name="value" expand="1"/>
+ <field name="description"/>
+ <field name="origin" expand="1"/>
+</tree>

View File

@ -1,33 +1,8 @@
diff --git a/trytond/trytond/modules/account_asset/asset.py b/trytond/trytond/modules/account_asset/asset.py
index 35a24f4..569423d 100644
index 2d6a395..a5a0a3c 100644
--- a/trytond/trytond/modules/account_asset/asset.py
+++ b/trytond/trytond/modules/account_asset/asset.py
@@ -801,15 +801,32 @@ class CreateMoves(Wizard):
class UpdateAssetStart(ModelView):
'Update Asset Start'
__name__ = 'account.asset.update.start'
- value = fields.Numeric('Asset Value', required=True)
- residual_value = fields.Numeric('Residual Value', required=True)
+ value = fields.Numeric('Asset Value',
+ digits=(16, Eval('currency_digits', 2)),
+ depends=['currency_digits'], required=True)
+ residual_value = fields.Numeric('Residual Value',
+ digits=(16, Eval('currency_digits', 2)),
+ depends=['currency_digits'], required=True)
end_date = fields.Date('End Date', required=True)
+ currency_digits = fields.Integer('Currency Digits', required=True)
+
+ @staticmethod
+ def default_currency_digits():
+ Asset = Pool().get('account.asset')
+
+ context = Transaction().context
+ active_id = context.get('active_id')
+ if active_id:
+ return Asset(active_id).currency_digits
+ return 2
@@ -803,7 +803,9 @@ class CreateMoves(Wizard):
class UpdateAssetShowDepreciation(ModelView):
'Update Asset Show Depreciation'
__name__ = 'account.asset.update.show_depreciation'
@ -38,7 +13,7 @@ index 35a24f4..569423d 100644
date = fields.Date('Date', required=True,
domain=[
('date', '>=', Eval('latest_move_date')),
@@ -825,6 +842,17 @@ class UpdateAssetShowDepreciation(ModelView):
@@ -819,6 +821,17 @@ class UpdateAssetShowDepreciation(ModelView):
'Depreciation Account', readonly=True)
counterpart_account = fields.Many2One('account.account',
'Counterpart Account')
@ -53,6 +28,23 @@ index 35a24f4..569423d 100644
+ if active_id:
+ return Asset(active_id).currency_digits
+ return 2
class UpdateAsset(Wizard):
@@ -959,6 +972,16 @@ class AssetRevision(ModelSQL, ModelView):
super().__setup__()
cls.__access__.add('asset')
+ @staticmethod
+ def default_currency_digits():
+ Asset = Pool().get('account.asset')
+
+ context = Transaction().context
+ active_id = context.get('active_id')
+ if active_id:
+ return Asset(active_id).currency_digits
+ return 2
+
@fields.depends('asset', '_parent_asset.currency')
def on_change_with_currency(self, name=None):
if self.asset and self.asset.currency:

8
series
View File

@ -25,8 +25,10 @@ issue9797.diff # [account_payment_sepa] Slowness processing sepa
issue9802.diff # [stock] Improve performance when partially assigning moves
account_asset_update_asset.diff # [account_asset] decimals when updata asset #044767
issue10464.diff # [currency] Update currency rates fails
issue10680.diff # [product] Fix get_template in reference field case
issue10680.diff # [product] Fix get_template in reference field case
account_asset.diff # [account_asset] issue9767: Add revisions when updating an asset (delete this patch in 6.2)
account_asset_update_asset.diff # [account_asset] decimals when updata asset #044767