Merge PR #736 into 11.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2019-06-17 17:01:15 +00:00
30 changed files with 1676 additions and 3 deletions

View File

@@ -21,8 +21,10 @@ env:
matrix:
- LINT_CHECK="1"
- TESTS="1" ODOO_REPO="odoo/odoo" MAKEPOT="1"
- TESTS="1" ODOO_REPO="OCA/OCB
- TESTS="1" ODOO_REPO="odoo/odoo" MAKEPOT="1" INCLUDE="account_asset_disposal"
- TESTS="1" ODOO_REPO="OCA/OCB" INCLUDE="account_asset_disposal"
- TESTS="1" ODOO_REPO="odoo/odoo" MAKEPOT="1" EXCLUDE="account_asset_disposal"
- TESTS="1" ODOO_REPO="OCA/OCB" EXCLUDE="account_asset_disposal"
install:

View File

@@ -0,0 +1,112 @@
======================
Account asset disposal
======================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--financial--tools-lightgray.png?logo=github
:target: https://github.com/OCA/account-financial-tools/tree/11.0/account_asset_disposal
:alt: OCA/account-financial-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-financial-tools-11-0/account-financial-tools-11-0-account_asset_disposal
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/92/11.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
This module enables a real asset disposal with the proper accounting entries.
When an asset gets broken or is totally depreciated, you can close it and Odoo
will generate automatically the asset close move (and compute the loss if a
residual value is pending).
You can also cancel this disposal for returning to the previous state.
**Table of contents**
.. contents::
:local:
Configuration
=============
#. Go to *Accounting > Configuration > Management > Asset Types*.
#. There's a new field called "Loss Account" for setting the default loss
account when disposing assets.
Usage
=====
#. Go to *Accounting > Adviser > Assets*.
#. There you will find a 'Dispose' button (instead of standard 'Set to Close').
#. After clicking it, a wizard pops-up for asking disposal date and loss
account to use if any residual value is pending.
#. Click on "Dispose asset".
#. A new screen will appear with the disposal account entry.
#. On the asset, all remaining depreciation lines are removed, and a new one
appears for the disposal move.
You can cancel afterwards the disposal:
#. Click on "Undo disposal" on the asset.
#. The disposal entry is removed.
#. The depreciation board is restored with all the remaining depreciations.
Known issues / Roadmap
======================
* Include a specific message type for notifying the disposal.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-financial-tools/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/account-financial-tools/issues/new?body=module:%20account_asset_disposal%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Tecnativa
Contributors
~~~~~~~~~~~~
* Tecnativa (https://www.tecnativa.com):
* Pedro M. Baeza <pedro.baeza@tecnativa.com>
* Antonio Espinosa <antonio.espinosa@tecnativa.com>
* Luis M. Ontalba <luis.martinez@tecnativa.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/account-financial-tools <https://github.com/OCA/account-financial-tools/tree/11.0/account_asset_disposal>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models
from . import wizards

View File

@@ -0,0 +1,24 @@
# Copyright 2016 Tecnativa - Antonio Espinosa
# Copyright 2017 Tecnativa - Luis M. Ontalba
# Copyright 2017-2018 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Account asset disposal",
"summary": "Makes asset close account move automatically",
"version": "11.0.1.0.0",
"category": "Accounting & Finance",
"website": "http://github.com/OCA/account-financial-tools",
"author": "Tecnativa, "
"Odoo Community Association (OCA)",
"license": "AGPL-3",
"installable": True,
"depends": [
"account_asset",
],
"data": [
"views/account_asset_asset_views.xml",
"views/account_asset_category_views.xml",
"wizards/account_asset_disposal_wizard_view.xml",
],
}

View File

@@ -0,0 +1,151 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_asset_disposal
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_category
msgid "Asset category"
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:40
#, python-format
msgid "Asset depreciation"
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:24
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
#, python-format
msgid "Asset disposal"
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:171
#, python-format
msgid "Asset disposal cancelled."
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:136
#, python-format
msgid "Asset disposed."
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:55
#, python-format
msgid "Asset loss"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_asset
msgid "Asset/Revenue Recognition"
msgstr ""
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
msgid "Close"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_create_uid
msgid "Created by"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_create_date
msgid "Created on"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_display_name
msgid "Display Name"
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:143
#, python-format
msgid "Disposal Move"
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:146
#, python-format
msgid "Disposal Moves"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_asset_disposal_date
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_disposal_date
msgid "Disposal date"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_asset_disposal_move_id
msgid "Disposal move"
msgstr ""
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.view_account_asset_asset_form
msgid "Dispose"
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:91
#, python-format
msgid "Dispose Asset"
msgstr ""
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
msgid "Dispose asset"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_id
msgid "ID"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard___last_update
msgid "Last Modified on"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_write_date
msgid "Last Updated on"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_category_account_loss_id
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_loss_account_id
msgid "Loss Account"
msgstr ""
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.view_account_asset_asset_form
msgid "Undo disposal"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_disposal_wizard
msgid "account.asset.disposal.wizard"
msgstr ""

View File

@@ -0,0 +1,158 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_asset_disposal
#
# Translators:
# Rudolf Schnapka <rs@techno-flex.de>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-22 23:20+0000\n"
"PO-Revision-Date: 2017-12-22 23:20+0000\n"
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>, 2017\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_category
msgid "Asset category"
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:41
#, fuzzy, python-format
msgid "Asset depreciation"
msgstr "Abschreibungsposition"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:25
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
#, fuzzy, python-format
msgid "Asset disposal"
msgstr "Entsorgung Rückgängig"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:172
#, python-format
msgid "Asset disposal cancelled."
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:137
#, python-format
msgid "Asset disposed."
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:56
#, python-format
msgid "Asset loss"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_asset
msgid "Asset/Revenue Recognition"
msgstr "Anlage/Umsatz Anerkennung"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
msgid "Close"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_create_uid
msgid "Created by"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_create_date
msgid "Created on"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_display_name
#, fuzzy
msgid "Display Name"
msgstr "Entsorgungsdatum"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:144
#, fuzzy, python-format
msgid "Disposal Move"
msgstr "Entsorgungsbuchung"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:147
#, fuzzy, python-format
msgid "Disposal Moves"
msgstr "Entsorgungsbuchung"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_asset_disposal_date
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_disposal_date
msgid "Disposal date"
msgstr "Entsorgungsdatum"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_asset_disposal_move_id
msgid "Disposal move"
msgstr "Entsorgungsbuchung"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.view_account_asset_asset_form
#, fuzzy
msgid "Dispose"
msgstr "Entsorgungsdatum"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:92
#, fuzzy, python-format
msgid "Dispose Asset"
msgstr "Entsorgungsdatum"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
#, fuzzy
msgid "Dispose asset"
msgstr "Entsorgungsdatum"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_id
msgid "ID"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard___last_update
msgid "Last Modified on"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_write_date
msgid "Last Updated on"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_category_account_loss_id
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_loss_account_id
msgid "Loss Account"
msgstr ""
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.view_account_asset_asset_form
msgid "Undo disposal"
msgstr "Entsorgung Rückgängig"
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_disposal_wizard
msgid "account.asset.disposal.wizard"
msgstr ""

View File

@@ -0,0 +1,156 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_asset_disposal
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-25 12:17+0000\n"
"PO-Revision-Date: 2017-11-25 12:17+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_category
msgid "Asset category"
msgstr "Categoría de activo"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:41
#, python-format
msgid "Asset depreciation"
msgstr "Amortización del activo"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:25
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
#, python-format
msgid "Asset disposal"
msgstr "Baja del activo"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:172
#, python-format
msgid "Asset disposal cancelled."
msgstr "Baja del activo cancelada."
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:137
#, python-format
msgid "Asset disposed."
msgstr "Activo dado de baja."
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:56
#, python-format
msgid "Asset loss"
msgstr "Pérdida del activo"
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_asset
msgid "Asset/Revenue Recognition"
msgstr "Activo/Reconocimiento de beneficio"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
msgid "Close"
msgstr "Cerrar"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_create_uid
msgid "Created by"
msgstr "Creado por"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_create_date
msgid "Created on"
msgstr "Creado el"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_display_name
msgid "Display Name"
msgstr "Nombre a mostrar"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:144
#, python-format
msgid "Disposal Move"
msgstr "Asiento de baja"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:147
#, python-format
msgid "Disposal Moves"
msgstr "Asientos de baja"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_asset_disposal_date
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_disposal_date
msgid "Disposal date"
msgstr "Fecha de baja"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_asset_disposal_move_id
msgid "Disposal move"
msgstr "Asiento de baja"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.view_account_asset_asset_form
msgid "Dispose"
msgstr "Dar de baja"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:92
#, python-format
msgid "Dispose Asset"
msgstr "Dar de baja activo"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
msgid "Dispose asset"
msgstr "Dar de baja activo"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_id
msgid "ID"
msgstr "ID"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard___last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_category_account_loss_id
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_loss_account_id
msgid "Loss Account"
msgstr "Cuenta de pérdidas"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.view_account_asset_asset_form
msgid "Undo disposal"
msgstr "Cancelar baja"
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_disposal_wizard
msgid "account.asset.disposal.wizard"
msgstr ""
#~ msgid "Journal Item"
#~ msgstr "Apunte contable"

View File

@@ -0,0 +1,159 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_asset_disposal
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-23 01:41+0000\n"
"PO-Revision-Date: 2018-02-23 01:41+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 2017\n"
"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_category
msgid "Asset category"
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:41
#, fuzzy, python-format
msgid "Asset depreciation"
msgstr "Stavka amortizacije"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:25
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
#, fuzzy, python-format
msgid "Asset disposal"
msgstr "Vrati iz otpisa"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:172
#, python-format
msgid "Asset disposal cancelled."
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:137
#, python-format
msgid "Asset disposed."
msgstr ""
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:56
#, python-format
msgid "Asset loss"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_asset
msgid "Asset/Revenue Recognition"
msgstr "Priznavanje troškova"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
msgid "Close"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_create_uid
msgid "Created by"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_create_date
msgid "Created on"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_display_name
#, fuzzy
msgid "Display Name"
msgstr "Datum otpisa"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:144
#, fuzzy, python-format
msgid "Disposal Move"
msgstr "Temeljnica otpisa"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:147
#, fuzzy, python-format
msgid "Disposal Moves"
msgstr "Temeljnica otpisa"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_asset_disposal_date
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_disposal_date
msgid "Disposal date"
msgstr "Datum otpisa"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_asset_disposal_move_id
msgid "Disposal move"
msgstr "Temeljnica otpisa"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.view_account_asset_asset_form
#, fuzzy
msgid "Dispose"
msgstr "Datum otpisa"
#. module: account_asset_disposal
#: code:addons/account_asset_disposal/models/account_asset_asset.py:92
#, fuzzy, python-format
msgid "Dispose Asset"
msgstr "Datum otpisa"
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.account_asset_disposal_wizard_form
#, fuzzy
msgid "Dispose asset"
msgstr "Datum otpisa"
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_id
msgid "ID"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard___last_update
msgid "Last Modified on"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_write_date
msgid "Last Updated on"
msgstr ""
#. module: account_asset_disposal
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_category_account_loss_id
#: model:ir.model.fields,field_description:account_asset_disposal.field_account_asset_disposal_wizard_loss_account_id
msgid "Loss Account"
msgstr ""
#. module: account_asset_disposal
#: model:ir.ui.view,arch_db:account_asset_disposal.view_account_asset_asset_form
msgid "Undo disposal"
msgstr "Vrati iz otpisa"
#. module: account_asset_disposal
#: model:ir.model,name:account_asset_disposal.model_account_asset_disposal_wizard
msgid "account.asset.disposal.wizard"
msgstr ""

View File

@@ -0,0 +1,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import account_asset_category
from . import account_asset_asset

View File

@@ -0,0 +1,175 @@
# Copyright 2016 Tecnativa - Antonio Espinosa
# Copyright 2017 Tecnativa - Luis M. Ontalba
# Copyright 2017 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api, _
from odoo.tools import float_is_zero
class AccountAssetAsset(models.Model):
_inherit = "account.asset.asset"
state = fields.Selection(
selection_add=[('disposed', 'Disposed')],
)
disposal_date = fields.Date(string="Disposal date")
disposal_move_id = fields.Many2one(
comodel_name='account.move', string="Disposal move",
)
def _disposal_line_asset_prepare(self, date):
self.ensure_one()
return {
'name': _('Asset disposal'),
'journal_id': self.category_id.journal_id.id,
'account_id': self.category_id.account_asset_id.id,
'date': date,
'debit': 0.0,
'credit': self.value,
}
def _disposal_line_depreciation_prepare(self, date):
self.ensure_one()
loss_value = self.salvage_value
if not float_is_zero(self.value_residual,
precision_rounding=self.currency_id.rounding):
loss_value += self.value_residual
depreciation_value = self.value - loss_value
return {
'name': _('Asset depreciation'),
'journal_id': self.category_id.journal_id.id,
'account_id': self.category_id.account_depreciation_id.id,
'date': date,
'debit': depreciation_value,
'credit': 0.0,
}
def _disposal_line_loss_prepare(self, date, loss_account):
self.ensure_one()
loss_value = self.salvage_value
if not float_is_zero(self.value_residual,
precision_rounding=self.currency_id.rounding):
loss_value += self.value_residual
return {
'name': _('Asset loss'),
'journal_id': self.category_id.journal_id.id,
'account_id': loss_account.id,
'analytic_account_id': self.category_id.account_analytic_id.id,
'date': date,
'debit': loss_value,
'credit': 0.0,
}
def _disposal_move_prepare(self, date, loss_account):
self.ensure_one()
journal = self.category_id.journal_id
lines = [
(0, False, self._disposal_line_asset_prepare(date)),
(0, False, self._disposal_line_depreciation_prepare(date)),
]
loss_value = self.salvage_value
if not float_is_zero(self.value_residual,
precision_rounding=self.currency_id.rounding):
loss_value += self.value_residual
if loss_value:
lines.append((
0, False, self._disposal_line_loss_prepare(date, loss_account)
))
return {
'journal_id': journal.id,
'ref': self.name,
'date': date,
'line_ids': lines,
}
@api.multi
def action_disposal(self):
wizard_view_id = self.env.ref(
'account_asset_disposal.account_asset_disposal_wizard_form')
return {
'name': _('Dispose Asset'),
'res_model': 'account.asset.disposal.wizard',
'type': 'ir.actions.act_window',
'view_type': 'tree,form',
'view_mode': 'form',
'view_id': wizard_view_id.id,
'target': 'new',
'context': self.env.context,
}
@api.multi
def dispose(self, date, loss_account):
moves = self.env['account.move']
for asset in self:
move = self.env['account.move'].create(
asset._disposal_move_prepare(date, loss_account)
)
asset.disposal_move_id = move.id
move.post()
unposted_lines = asset.depreciation_line_ids.filtered(
lambda x: not x.move_check
)
if unposted_lines:
# Remove all unposted depreciation lines
asset.write({
'depreciation_line_ids': [
(2, line_id.id) for line_id in unposted_lines
],
})
# Create a new depr. line with the residual amount and post it
sequence = (
len(asset.depreciation_line_ids) - len(unposted_lines) + 1
)
vals = {
'amount': asset.value_residual,
'asset_id': asset.id,
'sequence': sequence,
'name': (asset.code or '') + '/' + str(sequence),
'remaining_value': 0,
# the asset is completely depreciated
'depreciated_value': asset.value - asset.salvage_value,
'depreciation_date': date,
'move_id': move.id,
}
asset.depreciation_line_ids.create(vals)
asset.message_post(body=_('Asset disposed.'))
moves += move
self.write({
'disposal_date': date,
'state': 'disposed',
})
if moves:
name = _('Disposal Move')
view_mode = 'form'
if len(moves) > 1:
name = _('Disposal Moves')
view_mode = 'tree,form'
return {
'name': name,
'domain': [('id', 'in', moves.ids)],
'view_type': 'form',
'view_mode': view_mode,
'res_model': 'account.move',
'type': 'ir.actions.act_window',
'target': 'current',
'res_id': moves[:1].id,
}
@api.multi
def action_disposal_undo(self):
for asset in self.with_context(asset_disposal_undo=True):
if asset.disposal_move_id:
asset.disposal_move_id.button_cancel()
asset.disposal_move_id.unlink()
asset.depreciation_line_ids[-1].unlink()
if asset.currency_id.is_zero(asset.value_residual):
asset.state = 'close'
else:
asset.state = 'open'
asset.compute_depreciation_board()
asset.message_post(body=_('Asset disposal cancelled.'))
return self.write({
'disposal_date': False,
'disposal_move_id': False,
})

View File

@@ -0,0 +1,14 @@
# Copyright 2016 Tecnativa - Antonio Espinosa
# Copyright 2017 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields
class AccountAssetCategory(models.Model):
_inherit = "account.asset.category"
account_loss_id = fields.Many2one(
comodel_name="account.account", string="Loss Account",
oldname='loss_account_id',
)

View File

@@ -0,0 +1,3 @@
#. Go to *Accounting > Configuration > Management > Asset Types*.
#. There's a new field called "Loss Account" for setting the default loss
account when disposing assets.

View File

@@ -0,0 +1,4 @@
* Tecnativa (https://www.tecnativa.com):
* Pedro M. Baeza <pedro.baeza@tecnativa.com>
* Antonio Espinosa <antonio.espinosa@tecnativa.com>
* Luis M. Ontalba <luis.martinez@tecnativa.com>

View File

@@ -0,0 +1,7 @@
This module enables a real asset disposal with the proper accounting entries.
When an asset gets broken or is totally depreciated, you can close it and Odoo
will generate automatically the asset close move (and compute the loss if a
residual value is pending).
You can also cancel this disposal for returning to the previous state.

View File

@@ -0,0 +1 @@
* Include a specific message type for notifying the disposal.

View File

@@ -0,0 +1,14 @@
#. Go to *Accounting > Adviser > Assets*.
#. There you will find a 'Dispose' button (instead of standard 'Set to Close').
#. After clicking it, a wizard pops-up for asking disposal date and loss
account to use if any residual value is pending.
#. Click on "Dispose asset".
#. A new screen will appear with the disposal account entry.
#. On the asset, all remaining depreciation lines are removed, and a new one
appears for the disposal move.
You can cancel afterwards the disposal:
#. Click on "Undo disposal" on the asset.
#. The disposal entry is removed.
#. The depreciation board is restored with all the remaining depreciations.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,462 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.14: http://docutils.sourceforge.net/" />
<title>Account asset disposal</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="account-asset-disposal">
<h1 class="title">Account asset disposal</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/account-financial-tools/tree/11.0/account_asset_disposal"><img alt="OCA/account-financial-tools" src="https://img.shields.io/badge/github-OCA%2Faccount--financial--tools-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/account-financial-tools-11-0/account-financial-tools-11-0-account_asset_disposal"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/92/11.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module enables a real asset disposal with the proper accounting entries.</p>
<p>When an asset gets broken or is totally depreciated, you can close it and Odoo
will generate automatically the asset close move (and compute the loss if a
residual value is pending).</p>
<p>You can also cancel this disposal for returning to the previous state.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="id1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="id2">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="id3">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id4">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id5">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id6">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id7">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id8">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#id1">Configuration</a></h1>
<ol class="arabic simple">
<li>Go to <em>Accounting &gt; Configuration &gt; Management &gt; Asset Types</em>.</li>
<li>Theres a new field called “Loss Account” for setting the default loss
account when disposing assets.</li>
</ol>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id2">Usage</a></h1>
<ol class="arabic simple">
<li>Go to <em>Accounting &gt; Adviser &gt; Assets</em>.</li>
<li>There you will find a Dispose button (instead of standard Set to Close).</li>
<li>After clicking it, a wizard pops-up for asking disposal date and loss
account to use if any residual value is pending.</li>
<li>Click on “Dispose asset”.</li>
<li>A new screen will appear with the disposal account entry.</li>
<li>On the asset, all remaining depreciation lines are removed, and a new one
appears for the disposal move.</li>
</ol>
<p>You can cancel afterwards the disposal:</p>
<ol class="arabic simple">
<li>Click on “Undo disposal” on the asset.</li>
<li>The disposal entry is removed.</li>
<li>The depreciation board is restored with all the remaining depreciations.</li>
</ol>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#id3">Known issues / Roadmap</a></h1>
<ul class="simple">
<li>Include a specific message type for notifying the disposal.</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id4">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-financial-tools/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/account-financial-tools/issues/new?body=module:%20account_asset_disposal%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id5">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id6">Authors</a></h2>
<ul class="simple">
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id7">Contributors</a></h2>
<ul class="simple">
<li>Tecnativa (<a class="reference external" href="https://www.tecnativa.com">https://www.tecnativa.com</a>):
* Pedro M. Baeza &lt;<a class="reference external" href="mailto:pedro.baeza&#64;tecnativa.com">pedro.baeza&#64;tecnativa.com</a>&gt;
* Antonio Espinosa &lt;<a class="reference external" href="mailto:antonio.espinosa&#64;tecnativa.com">antonio.espinosa&#64;tecnativa.com</a>&gt;
* Luis M. Ontalba &lt;<a class="reference external" href="mailto:luis.martinez&#64;tecnativa.com">luis.martinez&#64;tecnativa.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id8">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-financial-tools/tree/11.0/account_asset_disposal">OCA/account-financial-tools</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_account_asset_disposal

View File

@@ -0,0 +1,90 @@
# Copyright 2016 Tecnativa - Antonio Espinosa
# Copyright 2017 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields
from odoo.tests import common
class TestAccountAsset(common.TransactionCase):
def setUp(self):
super(TestAccountAsset, self).setUp()
# Create a journal for assets
self.journal_asset = self.env['account.journal'].create({
'name': 'Asset journal',
'code': 'JRNL',
'type': 'general',
'update_posted': True,
})
# Create an account for assets
self.account_asset = self.env['account.account'].create({
'name': 'Asset',
'code': '216x',
'user_type_id': (
self.env.ref('account.data_account_type_fixed_assets').id
),
})
# Create an account for assets depreciation
self.account_asset_depreciation = self.env['account.account'].create({
'name': 'Asset depreciation',
'code': '2816x',
'user_type_id': (
self.env.ref('account.data_account_type_fixed_assets').id
),
})
# Create an account for assets expense
self.account_asset_expense = self.env['account.account'].create({
'name': 'Asset expense',
'code': '681x',
'user_type_id': (
self.env.ref('account.data_account_type_expenses').id
),
})
# Create an account for assets loss
self.account_asset_loss = self.env['account.account'].create({
'name': 'Asset loss',
'code': '671x',
'user_type_id': (
self.env.ref('account.data_account_type_expenses').id
),
})
# Create an asset category
self.asset_category = self.env['account.asset.category'].create({
'name': 'Asset category for testing',
'journal_id': self.journal_asset.id,
'account_asset_id': self.account_asset.id,
'account_depreciation_id': self.account_asset_depreciation.id,
'account_depreciation_expense_id': self.account_asset_expense.id,
'account_loss_id': self.account_asset_loss.id,
})
# Create an invoice
self.asset = self.env['account.asset.asset'].create({
'name': 'Test Asset',
'value': 100.00,
'category_id': self.asset_category.id,
'method_number': 10,
})
self.asset.validate()
def test_asset_disposal(self):
self.assertEqual(len(self.asset.depreciation_line_ids), 10)
# Depreciate the first line
self.asset.depreciation_line_ids[0].create_move()
# Dispose asset
disposal_date = fields.Date.today()
wizard = self.env['account.asset.disposal.wizard'].with_context(
active_ids=self.asset.ids, active_id=self.asset.id,
).create({
'disposal_date': disposal_date,
})
self.assertEqual(wizard.loss_account_id, self.account_asset_loss)
wizard.action_dispose()
self.assertEqual(self.asset.disposal_date, disposal_date)
self.assertEqual(self.asset.state, 'disposed')
self.assertEqual(len(self.asset.depreciation_line_ids), 2)
self.assertTrue(self.asset.disposal_move_id)
self.assertEqual('posted', self.asset.disposal_move_id.state)
self.assertEqual(self.asset.value, self.asset.disposal_move_id.amount)
self.asset.action_disposal_undo()
self.assertEqual(self.asset.state, 'open')
self.assertEqual(len(self.asset.depreciation_line_ids), 10)

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2016 Tecnativa - Antonio Espinosa
Copyright 2017 Tecnativa - Pedro M. Baeza
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<odoo>
<record model="ir.ui.view" id="view_account_asset_asset_form">
<field name="name">Add disposal fields</field>
<field name="model">account.asset.asset</field>
<field name="inherit_id" ref="account_asset.view_account_asset_asset_form"/>
<field name="arch" type="xml">
<button name="set_to_close" position="attributes">
<attribute name='invisible'>1</attribute>
</button>
<button name="set_to_close" position="after">
<button name="action_disposal"
states="open,close"
string="Dispose"
type="object"
class="oe_highlight"
/>
<button name="action_disposal_undo"
states="disposed"
string="Undo disposal"
type="object"
class="oe_highlight"
/>
</button>
<field name="date" position="after">
<field name="disposal_date"
attrs="{'invisible': [('state', '!=', 'disposed')]}"/>
<field name="disposal_move_id"
attrs="{'invisible': [('state', '!=', 'disposed')]}"/>
</field>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2017 Tecnativa - Pedro M. Baeza
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<odoo>
<record model="ir.ui.view" id="view_account_asset_category_form">
<field name="name">Add loss account</field>
<field name="model">account.asset.category</field>
<field name="inherit_id" ref="account_asset.view_account_asset_category_form"/>
<field name="arch" type="xml">
<field name="account_depreciation_expense_id" position="after">
<field name="account_loss_id"/>
</field>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import account_asset_disposal_wizard

View File

@@ -0,0 +1,35 @@
# Copyright 2016 Tecnativa - Antonio Espinosa
# Copyright 2017 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class AccountAssetDisposalWizard(models.TransientModel):
_name = 'account.asset.disposal.wizard'
def _default_disposal_date(self):
return fields.Date.context_today(self)
def _default_loss_account_id(self):
asset = self.env['account.asset.asset'].browse(
self.env.context.get('active_id', False)
)
return asset.category_id.account_loss_id.id
disposal_date = fields.Date(
string="Disposal date", required=True,
default=lambda self: self._default_disposal_date(),
)
loss_account_id = fields.Many2one(
comodel_name='account.account', string="Loss Account", required=True,
default=lambda self: self._default_loss_account_id(),
)
@api.multi
def action_dispose(self):
self.ensure_one()
assets = self.env['account.asset.asset'].browse(
self.env.context.get('active_ids', False)
)
return assets.dispose(self.disposal_date, self.loss_account_id)

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
Copyright 2018 Tecnativa - Pedro M. Baeza
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<odoo>
<record model="ir.ui.view" id="account_asset_disposal_wizard_form">
<field name="name">account.asset.disposal.wizard.form</field>
<field name="model">account.asset.disposal.wizard</field>
<field name="arch" type="xml">
<form string="Asset disposal">
<group>
<field name="disposal_date"/>
<field name="loss_account_id"/>
</group>
<footer>
<button name="action_dispose"
string="Dispose asset"
type="object" class="oe_highlight" />
<button special="cancel" string="Close" class="oe_link" />
</footer>
</form>
</field>
</record>
</odoo>

View File

@@ -1 +1 @@
11.0.20190613.0
11.0.20190617.0

View File

@@ -8,6 +8,7 @@ setuptools.setup(
description="Meta package for oca-account-financial-tools Odoo addons",
version=version,
install_requires=[
'odoo11-addon-account_asset_disposal',
'odoo11-addon-account_asset_management',
'odoo11-addon-account_balance_line',
'odoo11-addon-account_chart_update',

View File

@@ -0,0 +1 @@
../../../../account_asset_disposal

View File

@@ -0,0 +1,2 @@
[bdist_wheel]
universal=1

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)