[tryton-debian-vcs] tryton-modules-account-asset branch debian updated. debian/3.4.1-1-3-gc4b07d7

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Thu Apr 23 16:00:19 UTC 2015


The following commit has been merged in the debian branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-modules-account-asset.git;a=commitdiff;h=debian/3.4.1-1-3-gc4b07d7

commit c4b07d7620bad25726757ae79f41973575a1eff5
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu Apr 23 17:28:08 2015 +0200

    Updating Depends.

diff --git a/debian/control b/debian/control
index 7a1e466..8f93451 100644
--- a/debian/control
+++ b/debian/control
@@ -18,6 +18,8 @@ Package: tryton-modules-account-asset
 Architecture: all
 Depends:
  python-pkg-resources,
+ python-cached-property,
+ python-dateutil,
  tryton-modules-account (>= ${version:major}),
  tryton-modules-account-invoice (>= ${version:major}),
  tryton-modules-account-product (>= ${version:major}),
commit ea2f12c320331932ac0afbed5286324f46607635
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu Apr 23 16:59:48 2015 +0200

    Merging upstream version 3.6.0.

diff --git a/CHANGELOG b/CHANGELOG
index f5b5046..9d2dd32 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,7 @@
-Version 3.4.1 - 2015-03-02
+Version 3.6.0 - 2015-04-20
 * Bug fixes (see mercurial logs for details)
+* Add support for PyPy
+* Add asset depreciation report
 
 Version 3.4.0 - 2014-10-20
 * Bug fixes (see mercurial logs for details)
diff --git a/INSTALL b/INSTALL
index 5220d7a..600bd53 100644
--- a/INSTALL
+++ b/INSTALL
@@ -5,6 +5,8 @@ Prerequisites
 -------------
 
  * Python 2.7 or later (http://www.python.org/)
+ * python-dateutil (http://labix.org/python-dateutil)
+ * cached-property (https://github.com/pydanny/cached-property)
  * trytond (http://www.tryton.org/)
  * trytond_account (http://www.tryton.org/)
  * trytond_account_product (http://www.tryton.org/)
diff --git a/PKG-INFO b/PKG-INFO
index 90e9f6f..b3ac05b 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_account_asset
-Version: 3.4.1
+Version: 3.6.0
 Summary: Tryton module for assets management
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/3.4/
+Download-URL: http://downloads.tryton.org/3.6/
 Description: trytond_account_asset
         =====================
         
@@ -64,5 +64,7 @@ Classifier: Natural Language :: Slovenian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Office/Business
 Classifier: Topic :: Office/Business :: Financial :: Accounting
diff --git a/__init__.py b/__init__.py
index 8025921..37d5888 100644
--- a/__init__.py
+++ b/__init__.py
@@ -16,6 +16,7 @@ def register():
         CreateMovesStart,
         UpdateAssetStart,
         UpdateAssetShowDepreciation,
+        PrintDepreciationTableStart,
         Category,
         Template,
         InvoiceLine,
@@ -26,4 +27,8 @@ def register():
     Pool.register(
         CreateMoves,
         UpdateAsset,
+        PrintDepreciationTable,
         module='account_asset', type_='wizard')
+    Pool.register(
+        AssetDepreciationTable,
+        module='account_asset', type_='report')
diff --git a/account.py b/account.py
index 189e433..5398664 100644
--- a/account.py
+++ b/account.py
@@ -1,5 +1,5 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
 from trytond.model import fields
 from trytond.pyson import Eval
 from trytond.pool import PoolMeta
diff --git a/asset.py b/asset.py
index adb9671..a7a96b0 100644
--- a/asset.py
+++ b/asset.py
@@ -5,17 +5,23 @@ import calendar
 from decimal import Decimal
 from dateutil import relativedelta
 from dateutil import rrule
+from itertools import groupby
+from cached_property import cached_property
 
 from trytond.model import Workflow, ModelSQL, ModelView, fields
 from trytond.pyson import Eval, Bool, If
 from trytond.pool import Pool
 from trytond.transaction import Transaction
-from trytond.wizard import Wizard, StateView, StateTransition, Button
+from trytond.wizard import (Wizard, StateView, StateTransition, StateAction,
+    Button)
 from trytond.tools import grouped_slice
+from trytond.modules.company import CompanyReport
 
 __all__ = ['Asset', 'AssetLine', 'AssetUpdateMove',
     'CreateMovesStart', 'CreateMoves',
-    'UpdateAssetStart', 'UpdateAssetShowDepreciation', 'UpdateAsset']
+    'UpdateAssetStart', 'UpdateAssetShowDepreciation', 'UpdateAsset',
+    'AssetDepreciationTable',
+    'PrintDepreciationTableStart', 'PrintDepreciationTable']
 
 
 def date2datetime(date):
@@ -44,11 +50,15 @@ class Asset(Workflow, ModelSQL, ModelView):
                 ('product', '=', Eval('product', -1)),
                 ),
             ('invoice.type', '=', 'in_invoice'),
+            ['OR',
+                ('company', '=', Eval('company', -1)),
+                ('invoice.company', '=', Eval('company', -1)),
+                ],
             ],
         states={
             'readonly': (Eval('lines', [0]) | (Eval('state') != 'draft')),
             },
-        depends=['product', 'state'])
+        depends=['product', 'state', 'company'])
     customer_invoice_line = fields.Function(fields.Many2One(
             'account.invoice.line', 'Customer Invoice Line'),
         'get_customer_invoice_line')
@@ -141,12 +151,20 @@ class Asset(Workflow, ModelSQL, ModelView):
             ], 'State', readonly=True)
     lines = fields.One2Many('account.asset.line', 'asset', 'Lines',
         readonly=True)
-    move = fields.Many2One('account.move', 'Account Move', readonly=True)
+    move = fields.Many2One('account.move', 'Account Move', readonly=True,
+        domain=[
+            ('company', '=', Eval('company', -1)),
+            ],
+        depends=['company'])
     update_moves = fields.Many2Many('account.asset-update-account.move',
         'asset', 'move', 'Update Moves', readonly=True,
+        domain=[
+            ('company', '=', Eval('company', -1)),
+            ],
         states={
             'invisible': ~Eval('update_moves'),
-            })
+            },
+        depends=['company'])
     comment = fields.Text('Comment')
 
     @classmethod
@@ -154,10 +172,10 @@ class Asset(Workflow, ModelSQL, ModelView):
         super(Asset, cls).__setup__()
         cls._sql_constraints = [
             ('invoice_line_uniq', 'UNIQUE(supplier_invoice_line)',
-                'Supplier Invoice Line can be used only once on asset!'),
+                'Supplier Invoice Line can be used only once on asset.'),
             ]
         cls._error_messages.update({
-                'delete_draft': 'Asset "%s" must be in draft to be deleted!',
+                'delete_draft': 'Asset "%s" must be in draft to be deleted.',
                 })
         cls._transitions |= set((
                 ('draft', 'running'),
@@ -225,39 +243,35 @@ class Asset(Workflow, ModelSQL, ModelView):
         Currency = pool.get('currency.currency')
         Unit = Pool().get('product.uom')
 
-        new_values = {}
         if not self.supplier_invoice_line:
-            new_values['quantity'] = None
-            new_values['value'] = None
-            new_values['start_date'] = self.default_start_date()
-            return new_values
+            self.quantity = None
+            self.value = None
+            self.start_date = self.default_start_date()
+            return
 
         invoice_line = self.supplier_invoice_line
         invoice = invoice_line.invoice
         if invoice.company.currency != invoice.currency:
             with Transaction().set_context(date=invoice.currency_date):
-                new_values['value'] = Currency.compute(
+                self.value = Currency.compute(
                     invoice.currency, invoice_line.amount,
                     invoice.company.currency)
         else:
-            new_values['value'] = invoice_line.amount
+            self.value = invoice_line.amount
         if invoice.invoice_date:
-            new_values['purchase_date'] = invoice.invoice_date
-            new_values['start_date'] = invoice.invoice_date
+            self.purchase_date = invoice.invoice_date
+            self.start_date = invoice.invoice_date
             if invoice_line.product.depreciation_duration:
                 duration = relativedelta.relativedelta(
                     months=int(invoice_line.product.depreciation_duration),
                     days=-1)
-                new_values['end_date'] = new_values['start_date'] + duration
+                self.end_date = self.start_date + duration
 
         if not self.unit:
-            new_values['quantity'] = invoice_line.quantity
-            return new_values
-
-        new_values['quantity'] = Unit.compute_qty(invoice_line.unit,
-            invoice_line.quantity, self.unit)
-
-        return new_values
+            self.quantity = invoice_line.quantity
+        else:
+            self.quantity = Unit.compute_qty(invoice_line.unit,
+                invoice_line.quantity, self.unit)
 
     @fields.depends('product')
     def on_change_with_unit(self):
@@ -441,6 +455,7 @@ class Asset(Workflow, ModelSQL, ModelView):
             )
 
         return Move(
+            company=self.company,
             origin=line,
             period=period_id,
             journal=self.account_journal,
@@ -513,6 +528,7 @@ class Asset(Workflow, ModelSQL, ModelView):
                 )
             lines.append(counter_part_line)
         return Move(
+            company=self.company,
             origin=self,
             period=period_id,
             journal=self.account_journal,
@@ -750,6 +766,7 @@ class UpdateAsset(Wizard):
         Move = pool.get('account.move')
         period_id = Period.find(asset.company.id, self.show_move.date)
         return Move(
+            company=asset.company,
             origin=asset,
             journal=asset.account_journal.id,
             period=period_id,
@@ -800,3 +817,198 @@ class UpdateAsset(Wizard):
                 })
         Asset.create_lines([asset])
         return 'end'
+
+
+class AssetDepreciationTable(CompanyReport):
+    'Asset Depreciation Table'
+    __name__ = 'account.asset.depreciation_table'
+
+    @classmethod
+    def get_context(cls, records, data):
+        context = super(AssetDepreciationTable, cls).get_context(records, data)
+
+        AssetDepreciation = cls.get_asset_depreciation()
+        AssetDepreciation.start_date = data['start_date']
+        AssetDepreciation.end_date = data['end_date']
+        Grouper = cls.get_grouper()
+        grouped_assets = groupby(sorted(records, key=cls.group_assets),
+            cls.group_assets)
+        context['grouped_depreciations'] = grouped_depreciations = []
+        for g_key, assets in grouped_assets:
+            depreciations = [AssetDepreciation(a) for a in assets]
+            grouped_depreciations.append(Grouper(g_key, depreciations))
+
+        return context
+
+    @staticmethod
+    def group_assets(asset):
+        return asset.product
+
+    @classmethod
+    def get_grouper(cls):
+
+        class Grouper(object):
+            def __init__(self, key, depreciations):
+                self.product = key
+                self.depreciations = depreciations
+                for attr_name in self.grouped_attributes():
+                    setattr(self, attr_name,
+                        cached_property(self.adder(attr_name)))
+
+            def adder(self, attr_name):
+                def _sum(self):
+                    return sum(getattr(d, attr_name)
+                        for d in self.depreciations if getattr(d, attr_name))
+                return _sum
+
+            @staticmethod
+            def grouped_attributes():
+                return {
+                    'start_fixed_value',
+                    'value_increase',
+                    'value_decrease',
+                    'end_fixed_value',
+                    'start_value',
+                    'amortization_increase',
+                    'amortization_decrease',
+                    'end_value',
+                    'actual_value',
+                    'closing_value',
+                    }
+
+        return Grouper
+
+    @classmethod
+    def get_asset_depreciation(cls):
+
+        class AssetDepreciation(object):
+            def __init__(self, asset):
+                self.asset = asset
+
+            @cached_property
+            def asset_lines(self):
+                return filter(
+                    lambda l: self.start_date < l.date <= self.end_date,
+                    self.asset.lines)
+
+            @cached_property
+            def update_lines(self):
+                filter_ = lambda l: (l.account.kind == 'other'
+                    and self.start_date < l.move.date <= self.end_date)
+                return filter(filter_,
+                    (l for m in self.asset.update_moves for l in m.lines))
+
+            @cached_property
+            def start_fixed_value(self):
+                if self.start_date < self.asset.start_date:
+                    return 0
+                value = self.asset_lines[0].acquired_value
+                date = self.asset_lines[0].date
+                for line in self.update_lines:
+                    if line.move.date < date:
+                        value += line.debit - line.credit
+                return value
+
+            @cached_property
+            def value_increase(self):
+                value = sum(l.debit - l.credit for l in self.update_lines
+                    if l.debit > l.credit)
+                if self.start_date < self.asset.start_date:
+                    value += self.asset_lines[0].acquired_value
+                return value
+
+            @cached_property
+            def value_decrease(self):
+                return sum(l.credit - l.debit for l in self.update_lines
+                    if l.credit > l.debit)
+
+            @cached_property
+            def end_fixed_value(self):
+                value = self.asset_lines[-1].acquired_value
+                date = self.asset_lines[-1].date
+                for line in self.update_lines:
+                    if line.move.date > date:
+                        value += line.debit - line.credit
+                return value
+
+            @cached_property
+            def start_value(self):
+                return (self.asset_lines[0].actual_value
+                    + self.asset_lines[0].depreciation)
+
+            @cached_property
+            def amortization_increase(self):
+                return sum(l.depreciation for l in self.asset_lines
+                    if l.depreciation > 0)
+
+            @cached_property
+            def amortization_decrease(self):
+                return sum(l.depreciation for l in self.asset_lines
+                    if l.depreciation < 0)
+
+            @cached_property
+            def end_value(self):
+                return self.asset_lines[-1].actual_value
+
+            @cached_property
+            def actual_value(self):
+                value = self.end_value
+                date = self.asset_lines[-1].date
+                value += sum(l.debit - l.credit for l in self.update_lines
+                    if l.move.date > date)
+                return value
+
+            @cached_property
+            def closing_value(self):
+                if not self.asset.move:
+                    return None
+                revenue_lines = [l for l in self.asset.move.lines
+                    if l.account == self.asset.product.account_revenue_used]
+                return sum(l.debit - l.credit for l in revenue_lines)
+
+        return AssetDepreciation
+
+
+class PrintDepreciationTableStart(ModelView):
+    'Asset Depreciation Table Start'
+    __name__ = 'account.asset.print_depreciation_table.start'
+
+    start_date = fields.Date('Start Date', required=True,
+        domain=[('start_date', '<', Eval('end_date'))],
+        depends=['end_date'])
+    end_date = fields.Date('End Date', required=True,
+        domain=[('end_date', '>', Eval('start_date'))],
+        depends=['start_date'])
+
+    @staticmethod
+    def default_start_date():
+        return datetime.date.today() - relativedelta.relativedelta(years=1)
+
+    @staticmethod
+    def default_end_date():
+        return datetime.date.today()
+
+
+class PrintDepreciationTable(Wizard):
+    'Asset Depreciation Table'
+    __name__ = 'account.asset.print_depreciation_table'
+    start = StateView('account.asset.print_depreciation_table.start',
+        'account_asset.print_depreciation_table_start_view_form', [
+            Button('Cancel', 'end', 'tryton-cancel'),
+            Button('Print', 'print_', 'tryton-print', default=True),
+            ])
+    print_ = StateAction('account_asset.report_depreciation_table')
+
+    def do_print_(self, action):
+        pool = Pool()
+        Asset = pool.get('account.asset')
+        assets = Asset.search([
+                ('start_date', '<', self.start.end_date),
+                ('end_date', '>', self.start.start_date),
+                ('state', '=', 'running'),
+                ])
+        return action, {
+            'ids': [a.id for a in assets],
+            'start_date': self.start.start_date,
+            'end_date': self.start.end_date,
+            }
diff --git a/asset.xml b/asset.xml
index e39ef47..4e8b303 100644
--- a/asset.xml
+++ b/asset.xml
@@ -46,21 +46,21 @@
             id="act_asset_form_domain_draft">
             <field name="name">Draft</field>
             <field name="sequence" eval="10"/>
-            <field name="domain">[('state', '=', 'draft')]</field>
+            <field name="domain" eval="[('state', '=', 'draft')]" pyson="1"/>
             <field name="act_window" ref="act_asset_form"/>
         </record>
         <record model="ir.action.act_window.domain"
             id="act_asset_form_domain_running">
             <field name="name">Running</field>
             <field name="sequence" eval="20"/>
-            <field name="domain">[('state', '=', 'running')]</field>
+            <field name="domain" eval="[('state', '=', 'running')]" pyson="1"/>
             <field name="act_window" ref="act_asset_form"/>
         </record>
         <record model="ir.action.act_window.domain"
             id="act_asset_form_domain_closed">
             <field name="name">Closed</field>
             <field name="sequence" eval="30"/>
-            <field name="domain">[('state', '=', 'closed')]</field>
+            <field name="domain" eval="[('state', '=', 'closed')]" pyson="1"/>
             <field name="act_window" ref="act_asset_form"/>
         </record>
         <record model="ir.action.act_window.domain"
@@ -98,10 +98,19 @@
             <field name="global_p" eval="True"/>
         </record>
         <record model="ir.rule" id="rule_asset1">
-            <field name="domain">[('company', '=', user.company.id if user.company else None)]</field>
+            <field name="domain"
+                eval="[('company', '=', Eval('user', {}).get('company', None))]"
+                pyson="1"/>
             <field name="rule_group" ref="rule_group_asset"/>
         </record>
 
+        <record model="ir.model.access" id="access_asset">
+            <field name="model" search="[('model', '=', 'account.asset')]"/>
+            <field name="perm_read" eval="False"/>
+            <field name="perm_write" eval="False"/>
+            <field name="perm_create" eval="False"/>
+            <field name="perm_delete" eval="False"/>
+        </record>
         <record model="ir.model.access" id="access_asset_account_admin">
             <field name="model" search="[('model', '=', 'account.asset')]"/>
             <field name="group" ref="account.group_account_admin"/>
@@ -130,6 +139,13 @@
             <field name="name">asset_line_tree</field>
         </record>
 
+        <record model="ir.model.access" id="access_asset_line">
+            <field name="model" search="[('model', '=', 'account.asset.line')]"/>
+            <field name="perm_read" eval="False"/>
+            <field name="perm_write" eval="False"/>
+            <field name="perm_create" eval="False"/>
+            <field name="perm_delete" eval="False"/>
+        </record>
         <record model="ir.model.access" id="access_asset_line_account_admin">
             <field name="model" search="[('model', '=', 'account.asset.line')]"/>
             <field name="group" ref="account.group_account_admin"/>
@@ -171,6 +187,27 @@
         </record>
         <menuitem name="Create Assets Moves" parent="menu_asset" sequence="10"
             action="wizard_create_moves" id="menu_create_moves"/>
+
+        <record model="ir.action.report" id="report_depreciation_table">
+            <field name="name">Depreciation Table</field>
+            <field name="model">account.asset</field>
+            <field name="report_name">account.asset.depreciation_table</field>
+            <field name="report">account_asset/asset_table.odt</field>
+        </record>
+        <record model="ir.ui.view"
+            id="print_depreciation_table_start_view_form">
+            <field name="model">account.asset.print_depreciation_table.start</field>
+            <field name="type">form</field>
+            <field name="name">print_depreciation_table_start</field>
+        </record>
+        <record model="ir.action.wizard" id="wizard_print_depreciation_table">
+            <field name="name">Print Depreciation Table</field>
+            <field name="wiz_name">account.asset.print_depreciation_table</field>
+        </record>
+        <menuitem name="Print Depreciation Table" icon="tryton-print"
+            parent="account.menu_reporting"
+            action="wizard_print_depreciation_table"
+            id="menu_create_depreciation_table"/>
     </data>
     <data noupdate="1">
         <record model="account.journal" id="journal_asset">
diff --git a/invoice.py b/invoice.py
index 3e342e5..caa41be 100644
--- a/invoice.py
+++ b/invoice.py
@@ -34,7 +34,7 @@ class InvoiceLine:
 
     @fields.depends('product', 'invoice', 'invoice_type')
     def on_change_product(self):
-        new_values = super(InvoiceLine, self).on_change_product()
+        super(InvoiceLine, self).on_change_product()
         if self.invoice and self.invoice.type:
             type_ = self.invoice.type
         else:
@@ -43,10 +43,7 @@ class InvoiceLine:
         if (self.product and type_ in ('in_invoice', 'in_credit_note')
                 and self.product.type == 'assets'
                 and self.product.depreciable):
-            new_values['account'] = self.product.account_asset_used.id
-            new_values['account.rec_name'] = \
-                self.product.account_asset_used.rec_name
-        return new_values
+            self.account = self.product.account_asset_used
 
     @fields.depends('asset', 'unit')
     def on_change_asset(self):
@@ -57,16 +54,10 @@ class InvoiceLine:
             if self.unit:
                 quantity = Uom.compute_qty(self.asset.unit, quantity,
                     self.unit)
-                return {
-                    'quantity': quantity,
-                    }
+                self.quantity = quantity
             else:
-                return {
-                    'quantity': quantity,
-                    'unit': self.unit.id,
-                    'unit.rec_name': self.unit.rec_name,
-                    }
-        return {}
+                self.quantity = quantity
+                self.unit = self.unit
 
     @fields.depends('product')
     def on_change_with_is_assets_depreciable(self, name=None):
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 98a36c7..23567de 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -3,21 +3,21 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.asset:"
-msgid "Asset \"%s\" must be in draft to be deleted!"
-msgstr "Heu de canviar l'actiu \"%s\" a esborrany per poder-lo eliminar."
+msgid "Asset \"%s\" must be in draft to be deleted."
+msgstr "L'actiu \"%s\" ha d'estar en esborrany per ser eliminat."
 
 msgctxt "error:account.asset:"
-msgid "Supplier Invoice Line can be used only once on asset!"
+msgid "Supplier Invoice Line can be used only once on asset."
 msgstr ""
-"La línia de factura de proveïdor només es pot utilitzar un cop a l'actiu."
+"La línia de factura de proveïdor pot ser usada una sola vegada en un actiu."
 
 msgctxt "error:account.invoice.line:"
 msgid "Asset can be used only once on invoice line!"
 msgstr "L'actiu només es pot utilitzar un cop a la línia de factura."
 
 msgctxt "error:purchase.line:"
-msgid "It misses an \"Account Asset\" on product \"%s\"!"
-msgstr "Falta un \"Compte d'actiu\" al producte \"%s\"."
+msgid "It misses an \"Account Asset\" on product \"%s\"."
+msgstr "Falta un \"Compte d'actiu\" en el producte \"%s\"."
 
 msgctxt "field:account.asset,account_journal:"
 msgid "Journal"
@@ -227,6 +227,18 @@ msgctxt "field:account.asset.line,write_uid:"
 msgid "Write User"
 msgstr "Usuari modificació"
 
+msgctxt "field:account.asset.print_depreciation_table.start,end_date:"
+msgid "End Date"
+msgstr "Data final"
+
+msgctxt "field:account.asset.print_depreciation_table.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
+msgid "Start Date"
+msgstr "Data inicial"
+
 msgctxt "field:account.asset.update.show_depreciation,amount:"
 msgid "Amount"
 msgstr "Import"
@@ -359,6 +371,10 @@ msgctxt "model:account.asset.line,name:"
 msgid "Asset Line"
 msgstr "Línia d'actiu"
 
+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.update.show_depreciation,name:"
 msgid "Update Asset Show Depreciation"
 msgstr "Actualitza actius - Mostra amortització"
@@ -379,17 +395,25 @@ msgctxt "model:ir.action,name:act_asset_form"
 msgid "Assets"
 msgstr "Actius"
 
+msgctxt "model:ir.action,name:report_depreciation_table"
+msgid "Depreciation Table"
+msgstr "Taula d'amortització"
+
 msgctxt "model:ir.action,name:wizard_create_moves"
 msgid "Create Assets Moves"
 msgstr "Crea assentaments d'actiu"
 
+msgctxt "model:ir.action,name:wizard_print_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimeix taula d'amortització"
+
 msgctxt "model:ir.action,name:wizard_update"
 msgid "Update Asset"
 msgstr "Actualitza actius"
 
 msgctxt "model:ir.action.act_window.domain,name:act_asset_form_domain_all"
 msgid "All"
-msgstr "Tot"
+msgstr "Tots"
 
 msgctxt "model:ir.action.act_window.domain,name:act_asset_form_domain_closed"
 msgid "Closed"
@@ -419,10 +443,86 @@ msgctxt "model:ir.ui.menu,name:menu_asset_form"
 msgid "Assets"
 msgstr "Actius"
 
+msgctxt "model:ir.ui.menu,name:menu_create_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimeix taula d'amortització"
+
 msgctxt "model:ir.ui.menu,name:menu_create_moves"
 msgid "Create Assets Moves"
 msgstr "Crea assentaments d'actiu"
 
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "("
+msgstr "("
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid ")"
+msgstr ")"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "+"
+msgstr "+"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "-"
+msgstr "-"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "/"
+msgstr "/"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Actual Value"
+msgstr "Valor real"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization"
+msgstr "Amortització"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization Table"
+msgstr "Taula d'amortització"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Assets"
+msgstr "Actius"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Closing Value"
+msgstr "Valor al tancament"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Company:"
+msgstr "Empresa:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Fixed"
+msgstr "Fix"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "From:"
+msgstr "De:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Print Date:"
+msgstr "Data d'impressió:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "To:"
+msgstr "Per:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Total -"
+msgstr "Total -"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "User:"
+msgstr "Usuari:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "at"
+msgstr "a les"
+
 msgctxt "selection:account.asset,depreciation_method:"
 msgid "Linear"
 msgstr "Lineal"
@@ -463,6 +563,10 @@ msgctxt "view:account.asset.line:"
 msgid "Asset Lines"
 msgstr "Línies d'actiu"
 
+msgctxt "view:account.asset.print_depreciation_table.start:"
+msgid "Choose Dates"
+msgstr "Seleccioneu dates"
+
 msgctxt "view:account.asset.update.show_depreciation:"
 msgid "Asset Depreciation Move"
 msgstr "Assentament d'amortització d'actiu"
@@ -523,6 +627,14 @@ msgctxt "wizard_button:account.asset.create_moves,start,end:"
 msgid "Cancel"
 msgstr "Cancel·la"
 
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,end:"
+msgid "Cancel"
+msgstr "Cancel·la"
+
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,print_:"
+msgid "Print"
+msgstr "Imprimeix"
+
 msgctxt "wizard_button:account.asset.update,show_move,create_move:"
 msgid "OK"
 msgstr "Accepta"
diff --git a/locale/de_DE.po b/locale/de_DE.po
index f7bd8b0..04d870d 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -3,15 +3,12 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.asset:"
-msgid "Asset \"%s\" must be in draft to be deleted!"
-msgstr ""
-"Anlage \"%s\" muss in Status 'Entwurf' sein, um gelöscht werden zu können!"
+msgid "Asset \"%s\" must be in draft to be deleted."
+msgstr "Anlage \"%s\"  kann nur in Status 'Entwurf' gelöscht werden"
 
 msgctxt "error:account.asset:"
-msgid "Supplier Invoice Line can be used only once on asset!"
-msgstr ""
-"Eine Rechnungsposition eines Lieferanten kann nur mit einer Anlage verknüpft"
-" sein!"
+msgid "Supplier Invoice Line can be used only once on asset."
+msgstr "Eine Einkaufsposition kann nur einmal pro Anlage verwendet werden"
 
 msgctxt "error:account.invoice.line:"
 msgid "Asset can be used only once on invoice line!"
@@ -19,8 +16,8 @@ msgstr ""
 "Eine Anlage kann nur mit einer einzigen Rechnungsposition verknüpft sein!"
 
 msgctxt "error:purchase.line:"
-msgid "It misses an \"Account Asset\" on product \"%s\"!"
-msgstr "Fehlendes \"Anlagekonto\" für Artikel \"%s\"."
+msgid "It misses an \"Account Asset\" on product \"%s\"."
+msgstr "Fehlendes Anlagenkonto für Artikel \"%s\""
 
 msgctxt "field:account.asset,account_journal:"
 msgid "Journal"
@@ -230,6 +227,18 @@ msgctxt "field:account.asset.line,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
+msgctxt "field:account.asset.print_depreciation_table.start,end_date:"
+msgid "End Date"
+msgstr "Enddatum"
+
+msgctxt "field:account.asset.print_depreciation_table.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
+msgid "Start Date"
+msgstr "Anfangsdatum"
+
 msgctxt "field:account.asset.update.show_depreciation,amount:"
 msgid "Amount"
 msgstr "Betrag"
@@ -288,11 +297,11 @@ msgstr "Anlagen abschreibbar"
 
 msgctxt "field:product.category,account_asset:"
 msgid "Account Asset"
-msgstr "Anlagekonto"
+msgstr "Anlagenkonto"
 
 msgctxt "field:product.category,account_asset_used:"
 msgid "Account Asset Used"
-msgstr "Verwendetes Anlagekonto"
+msgstr "Verwendetes Anlagenkonto"
 
 msgctxt "field:product.category,account_depreciation:"
 msgid "Account Depreciation"
@@ -304,11 +313,11 @@ msgstr "Verwendetes Abschreibungskonto"
 
 msgctxt "field:product.template,account_asset:"
 msgid "Account Asset"
-msgstr "Anlagekonto"
+msgstr "Anlagenkonto"
 
 msgctxt "field:product.template,account_asset_used:"
 msgid "Account Asset Used"
-msgstr "Verwendetes Anlagekonto"
+msgstr "Verwendetes Anlagenkonto"
 
 msgctxt "field:product.template,account_depreciation:"
 msgid "Account Depreciation"
@@ -362,6 +371,10 @@ msgctxt "model:account.asset.line,name:"
 msgid "Asset Line"
 msgstr "Anlage Zeile"
 
+msgctxt "model:account.asset.print_depreciation_table.start,name:"
+msgid "Asset Depreciation Table Start"
+msgstr "Abschreibungstabelle Beginn"
+
 msgctxt "model:account.asset.update.show_depreciation,name:"
 msgid "Update Asset Show Depreciation"
 msgstr "Aktualisierung Anlage Anzeige Abschreibung"
@@ -382,10 +395,18 @@ msgctxt "model:ir.action,name:act_asset_form"
 msgid "Assets"
 msgstr "Inventar"
 
+msgctxt "model:ir.action,name:report_depreciation_table"
+msgid "Depreciation Table"
+msgstr "Abschreibungstabelle"
+
 msgctxt "model:ir.action,name:wizard_create_moves"
 msgid "Create Assets Moves"
 msgstr "Erstellung Anlagen Buchungssätze"
 
+msgctxt "model:ir.action,name:wizard_print_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Abschreibungstabelle drucken"
+
 msgctxt "model:ir.action,name:wizard_update"
 msgid "Update Asset"
 msgstr "Anlage aktualisieren"
@@ -422,10 +443,86 @@ msgctxt "model:ir.ui.menu,name:menu_asset_form"
 msgid "Assets"
 msgstr "Anlagen"
 
+msgctxt "model:ir.ui.menu,name:menu_create_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Abschreibungstabelle drucken"
+
 msgctxt "model:ir.ui.menu,name:menu_create_moves"
 msgid "Create Assets Moves"
 msgstr "Buchungssätze für Anlagen erstellen"
 
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "("
+msgstr "("
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid ")"
+msgstr ")"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "+"
+msgstr "+"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "-"
+msgstr "-"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "/"
+msgstr "/"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Actual Value"
+msgstr "Aktueller Wert"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization"
+msgstr "Abschreibung"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization Table"
+msgstr "Abschreibungstabelle"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Assets"
+msgstr "Inventar"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Closing Value"
+msgstr "Abschlußwert"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Company:"
+msgstr "Unternehmen:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Fixed"
+msgstr "Fix"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "From:"
+msgstr "Von:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Print Date:"
+msgstr "Druckdatum:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "To:"
+msgstr "Bis:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Total -"
+msgstr "Gesamt -"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "User:"
+msgstr "Benutzer:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "at"
+msgstr "um"
+
 msgctxt "selection:account.asset,depreciation_method:"
 msgid "Linear"
 msgstr "Linear"
@@ -466,6 +563,10 @@ msgctxt "view:account.asset.line:"
 msgid "Asset Lines"
 msgstr "Anlage Zeilen"
 
+msgctxt "view:account.asset.print_depreciation_table.start:"
+msgid "Choose Dates"
+msgstr "Auswahl Datum"
+
 msgctxt "view:account.asset.update.show_depreciation:"
 msgid "Asset Depreciation Move"
 msgstr "Anlage Abschreibung Buchungssatz"
@@ -526,6 +627,14 @@ msgctxt "wizard_button:account.asset.create_moves,start,end:"
 msgid "Cancel"
 msgstr "Abbrechen"
 
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,end:"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,print_:"
+msgid "Print"
+msgstr "Drucken"
+
 msgctxt "wizard_button:account.asset.update,show_move,create_move:"
 msgid "OK"
 msgstr "OK"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 2d253ab..9181328 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -3,21 +3,21 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.asset:"
-msgid "Asset \"%s\" must be in draft to be deleted!"
-msgstr "¡El activo «%s» debe estar en estado borrador para poder eliminarse!"
+msgid "Asset \"%s\" must be in draft to be deleted."
+msgstr "El activo «%s» debe estar en estado borrador para poder eliminarse."
 
 msgctxt "error:account.asset:"
-msgid "Supplier Invoice Line can be used only once on asset!"
+msgid "Supplier Invoice Line can be used only once on asset."
 msgstr ""
-"¡La línea de factura de proveedor sólo se puede usar una vez en el activo."
+"La línea de factura de proveedor sólo se puede usar una vez en el activo."
 
 msgctxt "error:account.invoice.line:"
 msgid "Asset can be used only once on invoice line!"
 msgstr "¡El activo sólo se puede usar una vez en la línea de factura!"
 
 msgctxt "error:purchase.line:"
-msgid "It misses an \"Account Asset\" on product \"%s\"!"
-msgstr "¡Falta una «Cuenta de activos» en el producto «%s»!"
+msgid "It misses an \"Account Asset\" on product \"%s\"."
+msgstr "Falta una «Cuenta de activos» en el producto «%s»."
 
 msgctxt "field:account.asset,account_journal:"
 msgid "Journal"
@@ -41,7 +41,7 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.asset,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.asset,customer_invoice_line:"
 msgid "Customer Invoice Line"
@@ -113,7 +113,7 @@ msgstr "Unidad"
 
 msgctxt "field:account.asset,unit_digits:"
 msgid "Unit Digits"
-msgstr "Dígitos de unidad"
+msgstr "Decimales de unidad"
 
 msgctxt "field:account.asset,update_moves:"
 msgid "Update Moves"
@@ -227,6 +227,18 @@ msgctxt "field:account.asset.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.asset.print_depreciation_table.start,end_date:"
+msgid "End Date"
+msgstr "Fecha final"
+
+msgctxt "field:account.asset.print_depreciation_table.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
+msgid "Start Date"
+msgstr "Fecha inicial"
+
 msgctxt "field:account.asset.update.show_depreciation,amount:"
 msgid "Amount"
 msgstr "Importe"
@@ -353,19 +365,23 @@ msgstr "Activo - Actualizar - Asiento"
 
 msgctxt "model:account.asset.create_moves.start,name:"
 msgid "Create Moves Start"
-msgstr "Crear asientos iniciales"
+msgstr "Crear asientos - Inicio"
 
 msgctxt "model:account.asset.line,name:"
 msgid "Asset Line"
 msgstr "Línea de activo"
 
+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.update.show_depreciation,name:"
 msgid "Update Asset Show Depreciation"
-msgstr "Actualizar vista amortización activo"
+msgstr "Actualizar activo - Mostrar amortización"
 
 msgctxt "model:account.asset.update.start,name:"
 msgid "Update Asset Start"
-msgstr "Actualizar Inicio de activo"
+msgstr "Actualizar activo - Inicio"
 
 msgctxt "model:account.journal,name:journal_asset"
 msgid "Asset"
@@ -379,10 +395,18 @@ msgctxt "model:ir.action,name:act_asset_form"
 msgid "Assets"
 msgstr "Activos"
 
+msgctxt "model:ir.action,name:report_depreciation_table"
+msgid "Depreciation Table"
+msgstr "Tabla de amortización"
+
 msgctxt "model:ir.action,name:wizard_create_moves"
 msgid "Create Assets Moves"
 msgstr "Crear asientos de activo"
 
+msgctxt "model:ir.action,name:wizard_print_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimir tabla de amortización"
+
 msgctxt "model:ir.action,name:wizard_update"
 msgid "Update Asset"
 msgstr "Actualizar activo"
@@ -419,10 +443,86 @@ msgctxt "model:ir.ui.menu,name:menu_asset_form"
 msgid "Assets"
 msgstr "Activos"
 
+msgctxt "model:ir.ui.menu,name:menu_create_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimir tabla de amortización"
+
 msgctxt "model:ir.ui.menu,name:menu_create_moves"
 msgid "Create Assets Moves"
 msgstr "Crear asientos de activo"
 
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "("
+msgstr "("
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid ")"
+msgstr ")"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "+"
+msgstr "+"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "-"
+msgstr "-"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "/"
+msgstr "/"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Actual Value"
+msgstr "Valor actual"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization"
+msgstr "Amortización"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization Table"
+msgstr "Tabla de amortización"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Assets"
+msgstr "Activos"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Closing Value"
+msgstr "Valor de cierre"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Company:"
+msgstr "Empresa:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Fixed"
+msgstr "Fijo"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "From:"
+msgstr "De:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Print Date:"
+msgstr "Fecha de impresión:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "To:"
+msgstr "A:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Total -"
+msgstr "Total -"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "User:"
+msgstr "Usuario:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "at"
+msgstr "a las"
+
 msgctxt "selection:account.asset,depreciation_method:"
 msgid "Linear"
 msgstr "Lineal"
@@ -453,7 +553,7 @@ msgstr "Crear asientos de activo"
 
 msgctxt "view:account.asset.create_moves.start:"
 msgid "Create Assets Moves up to"
-msgstr "Crear movimientos activos hasta"
+msgstr "Crear asientos de activos hasta"
 
 msgctxt "view:account.asset.line:"
 msgid "Asset Line"
@@ -463,6 +563,10 @@ msgctxt "view:account.asset.line:"
 msgid "Asset Lines"
 msgstr "Líneas de activo"
 
+msgctxt "view:account.asset.print_depreciation_table.start:"
+msgid "Choose Dates"
+msgstr "Seleccione fechas"
+
 msgctxt "view:account.asset.update.show_depreciation:"
 msgid "Asset Depreciation Move"
 msgstr "Asiento de amortización de activo"
@@ -523,6 +627,14 @@ msgctxt "wizard_button:account.asset.create_moves,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,print_:"
+msgid "Print"
+msgstr "Imprimir"
+
 msgctxt "wizard_button:account.asset.update,show_move,create_move:"
 msgid "OK"
 msgstr "Aceptar"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index f48f0ff..16a1bb4 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -3,20 +3,20 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.asset:"
-msgid "Asset \"%s\" must be in draft to be deleted!"
-msgstr "El activo fijo \"%s\" debe estar en borrador antes de ser eliminado!"
+msgid "Asset \"%s\" must be in draft to be deleted."
+msgstr ""
 
 msgctxt "error:account.asset:"
-msgid "Supplier Invoice Line can be used only once on asset!"
-msgstr "Línea de factura de proveedor puede ser usada solo una vez en activo!"
+msgid "Supplier Invoice Line can be used only once on asset."
+msgstr ""
 
 msgctxt "error:account.invoice.line:"
 msgid "Asset can be used only once on invoice line!"
 msgstr "El activo solo puede ser usado una vez en línea de factura!"
 
 msgctxt "error:purchase.line:"
-msgid "It misses an \"Account Asset\" on product \"%s\"!"
-msgstr "Falta la \"Cuenta de Activo Fijo\" en el producto \"%s\"!"
+msgid "It misses an \"Account Asset\" on product \"%s\"."
+msgstr ""
 
 msgctxt "field:account.asset,account_journal:"
 msgid "Journal"
@@ -226,6 +226,21 @@ msgctxt "field:account.asset.line,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+#, fuzzy
+msgctxt "field:account.asset.print_depreciation_table.start,end_date:"
+msgid "End Date"
+msgstr "Fecha Final"
+
+#, fuzzy
+msgctxt "field:account.asset.print_depreciation_table.start,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
+msgid "Start Date"
+msgstr "Fecha de Inicio"
+
 msgctxt "field:account.asset.update.show_depreciation,amount:"
 msgid "Amount"
 msgstr "Valor"
@@ -358,6 +373,10 @@ msgctxt "model:account.asset.line,name:"
 msgid "Asset Line"
 msgstr "Línea de Activo"
 
+msgctxt "model:account.asset.print_depreciation_table.start,name:"
+msgid "Asset Depreciation Table Start"
+msgstr ""
+
 msgctxt "model:account.asset.update.show_depreciation,name:"
 msgid "Update Asset Show Depreciation"
 msgstr "Actualizar Depreciación Mostrada del Activo"
@@ -378,10 +397,18 @@ msgctxt "model:ir.action,name:act_asset_form"
 msgid "Assets"
 msgstr "Activos Fijos"
 
+msgctxt "model:ir.action,name:report_depreciation_table"
+msgid "Depreciation Table"
+msgstr ""
+
 msgctxt "model:ir.action,name:wizard_create_moves"
 msgid "Create Assets Moves"
 msgstr "Crear Asiento de Activos Fijos"
 
+msgctxt "model:ir.action,name:wizard_print_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr ""
+
 msgctxt "model:ir.action,name:wizard_update"
 msgid "Update Asset"
 msgstr "Actualizar Activo Fijo"
@@ -418,6 +445,10 @@ msgctxt "model:ir.ui.menu,name:menu_asset_form"
 msgid "Assets"
 msgstr "Activos Fijos"
 
+msgctxt "model:ir.ui.menu,name:menu_create_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_create_moves"
 msgid "Create Assets Moves"
 msgstr "Crear Asiento de Activos Fijos"
@@ -522,6 +553,16 @@ msgctxt "wizard_button:account.asset.create_moves,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
+#, fuzzy
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#, fuzzy
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,print_:"
+msgid "Print"
+msgstr "Imprimir"
+
 msgctxt "wizard_button:account.asset.update,show_move,create_move:"
 msgid "OK"
 msgstr "Aceptar"
diff --git a/locale/es_EC.po b/locale/es_EC.po
index ca9f151..fc420a2 100644
--- a/locale/es_EC.po
+++ b/locale/es_EC.po
@@ -3,22 +3,22 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.asset:"
-msgid "Asset \"%s\" must be in draft to be deleted!"
-msgstr "¡El activo \"%s\" debe estar en borrador para poder ser eliminado!"
+msgid "Asset \"%s\" must be in draft to be deleted."
+msgstr "El activo \"%s\" debe estar en borrador para poder ser eliminado."
 
 msgctxt "error:account.asset:"
-msgid "Supplier Invoice Line can be used only once on asset!"
+msgid "Supplier Invoice Line can be used only once on asset."
 msgstr ""
-"¡La línea de factura de proveedor sólo se puede utilizar una vez en el "
-"activo!"
+"La Línea de Factura de Proveedor sólo se puede utilizar una vez en el "
+"activo."
 
 msgctxt "error:account.invoice.line:"
 msgid "Asset can be used only once on invoice line!"
 msgstr "¡El activo sólo se puede utilizar una vez en la línea de factura!"
 
 msgctxt "error:purchase.line:"
-msgid "It misses an \"Account Asset\" on product \"%s\"!"
-msgstr "¡Falta una \"Cuenta de Activo\" en el producto \"%s\"!"
+msgid "It misses an \"Account Asset\" on product \"%s\"."
+msgstr "Falta una \"Cuenta de Activo\" en el producto \"%s\"."
 
 msgctxt "field:account.asset,account_journal:"
 msgid "Journal"
@@ -182,7 +182,7 @@ msgstr "Valor de Adquisición"
 
 msgctxt "field:account.asset.line,actual_value:"
 msgid "Actual Value"
-msgstr "Valor Real"
+msgstr "Valor real"
 
 msgctxt "field:account.asset.line,asset:"
 msgid "Asset"
@@ -228,9 +228,21 @@ msgctxt "field:account.asset.line,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.asset.print_depreciation_table.start,end_date:"
+msgid "End Date"
+msgstr "Fecha Final"
+
+msgctxt "field:account.asset.print_depreciation_table.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
+msgid "Start Date"
+msgstr "Fecha Inicial"
+
 msgctxt "field:account.asset.update.show_depreciation,amount:"
 msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
 
 msgctxt "field:account.asset.update.show_depreciation,counterpart_account:"
 msgid "Counterpart Account"
@@ -250,7 +262,7 @@ msgstr "ID"
 
 msgctxt "field:account.asset.update.show_depreciation,latest_move_date:"
 msgid "Latest Move Date"
-msgstr "Última Fecha de Amortización"
+msgstr "Última Fecha de Asiento"
 
 msgctxt "field:account.asset.update.show_depreciation,next_depreciation_date:"
 msgid "Next Depreciation Date"
@@ -360,6 +372,10 @@ msgctxt "model:account.asset.line,name:"
 msgid "Asset Line"
 msgstr "Línea de Activo"
 
+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.update.show_depreciation,name:"
 msgid "Update Asset Show Depreciation"
 msgstr "Actualizar Activo - Mostrar Amortización"
@@ -380,9 +396,17 @@ msgctxt "model:ir.action,name:act_asset_form"
 msgid "Assets"
 msgstr "Activos"
 
+msgctxt "model:ir.action,name:report_depreciation_table"
+msgid "Depreciation Table"
+msgstr "Tabla de Amortización"
+
 msgctxt "model:ir.action,name:wizard_create_moves"
 msgid "Create Assets Moves"
-msgstr "Crear Asientos de Activos"
+msgstr "Crear Asientos de Activo"
+
+msgctxt "model:ir.action,name:wizard_print_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimir Tabla de Amortización"
 
 msgctxt "model:ir.action,name:wizard_update"
 msgid "Update Asset"
@@ -420,9 +444,85 @@ msgctxt "model:ir.ui.menu,name:menu_asset_form"
 msgid "Assets"
 msgstr "Activos"
 
+msgctxt "model:ir.ui.menu,name:menu_create_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimir Tabla de Amortización"
+
 msgctxt "model:ir.ui.menu,name:menu_create_moves"
 msgid "Create Assets Moves"
-msgstr "Crear Asientos de Activos"
+msgstr "Crear Asientos de Activo"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "("
+msgstr "("
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid ")"
+msgstr ")"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "+"
+msgstr "+"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "-"
+msgstr "-"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "/"
+msgstr "/"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Actual Value"
+msgstr "Valor real"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization"
+msgstr "Amortización"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization Table"
+msgstr "Tabla de Amortización"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Assets"
+msgstr "Activos"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Closing Value"
+msgstr "Valor de Cierre"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Company:"
+msgstr "Empresa:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Fixed"
+msgstr "Fijo"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "From:"
+msgstr "Desde:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Print Date:"
+msgstr "Fecha de Impresión:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "To:"
+msgstr "A:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Total -"
+msgstr "Total -"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "User:"
+msgstr "Usuario:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "at"
+msgstr "a las"
 
 msgctxt "selection:account.asset,depreciation_method:"
 msgid "Linear"
@@ -450,11 +550,11 @@ msgstr "En ejecución"
 
 msgctxt "view:account.asset.create_moves.start:"
 msgid "Create Assets Moves"
-msgstr "Crear Asientos de Activos"
+msgstr "Crear Asientos de Activo"
 
 msgctxt "view:account.asset.create_moves.start:"
 msgid "Create Assets Moves up to"
-msgstr "Crear Asientos de Activos hasta"
+msgstr "Crear Asientos de Activo hasta"
 
 msgctxt "view:account.asset.line:"
 msgid "Asset Line"
@@ -464,6 +564,10 @@ msgctxt "view:account.asset.line:"
 msgid "Asset Lines"
 msgstr "Líneas de Activo"
 
+msgctxt "view:account.asset.print_depreciation_table.start:"
+msgid "Choose Dates"
+msgstr "Seleccione fechas"
+
 msgctxt "view:account.asset.update.show_depreciation:"
 msgid "Asset Depreciation Move"
 msgstr "Asiento de Amortización de Activo"
@@ -524,6 +628,14 @@ msgctxt "wizard_button:account.asset.create_moves,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,print_:"
+msgid "Print"
+msgstr "Imprimir"
+
 msgctxt "wizard_button:account.asset.update,show_move,create_move:"
 msgid "OK"
 msgstr "Aceptar"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 7bec039..55115be 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -3,20 +3,21 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.asset:"
-msgid "Asset \"%s\" must be in draft to be deleted!"
-msgstr "Debe cambiar el activo \"%s\" a borrador antes de borrarlo."
+msgid "Asset \"%s\" must be in draft to be deleted."
+msgstr "El activo \"%s\" debe estar en borrador para ser eliminado."
 
 msgctxt "error:account.asset:"
-msgid "Supplier Invoice Line can be used only once on asset!"
+msgid "Supplier Invoice Line can be used only once on asset."
 msgstr ""
-"La línea de factura de proveedor sólo se puede usar una vez en el activo."
+"La línea de factura de proveedor puede ser utilizada una sola vez en un "
+"activo."
 
 msgctxt "error:account.invoice.line:"
 msgid "Asset can be used only once on invoice line!"
 msgstr "El activo sólo se puede usar una vez en la línea de factura."
 
 msgctxt "error:purchase.line:"
-msgid "It misses an \"Account Asset\" on product \"%s\"!"
+msgid "It misses an \"Account Asset\" on product \"%s\"."
 msgstr "Falta una \"Cuenta de activo\" en el producto \"%s\"."
 
 msgctxt "field:account.asset,account_journal:"
@@ -227,6 +228,18 @@ msgctxt "field:account.asset.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.asset.print_depreciation_table.start,end_date:"
+msgid "End Date"
+msgstr "Fecha final"
+
+msgctxt "field:account.asset.print_depreciation_table.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
+msgid "Start Date"
+msgstr "Fecha inicial"
+
 msgctxt "field:account.asset.update.show_depreciation,amount:"
 msgid "Amount"
 msgstr "Importe"
@@ -359,6 +372,10 @@ msgctxt "model:account.asset.line,name:"
 msgid "Asset Line"
 msgstr "Línea de activo"
 
+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.update.show_depreciation,name:"
 msgid "Update Asset Show Depreciation"
 msgstr "Actualizar activo - Mostrar amortización"
@@ -379,10 +396,18 @@ msgctxt "model:ir.action,name:act_asset_form"
 msgid "Assets"
 msgstr "Activos"
 
+msgctxt "model:ir.action,name:report_depreciation_table"
+msgid "Depreciation Table"
+msgstr "Tabla de amortización"
+
 msgctxt "model:ir.action,name:wizard_create_moves"
 msgid "Create Assets Moves"
 msgstr "Crear asientos de activo"
 
+msgctxt "model:ir.action,name:wizard_print_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimir tabla de amortización"
+
 msgctxt "model:ir.action,name:wizard_update"
 msgid "Update Asset"
 msgstr "Actualizar activo"
@@ -419,10 +444,86 @@ msgctxt "model:ir.ui.menu,name:menu_asset_form"
 msgid "Assets"
 msgstr "Activos"
 
+msgctxt "model:ir.ui.menu,name:menu_create_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimir tabla de amortización"
+
 msgctxt "model:ir.ui.menu,name:menu_create_moves"
 msgid "Create Assets Moves"
 msgstr "Crear asientos de activo"
 
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "("
+msgstr "("
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid ")"
+msgstr ")"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "+"
+msgstr "+"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "-"
+msgstr "-"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "/"
+msgstr "/"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Actual Value"
+msgstr "Valor actual"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization"
+msgstr "Amortización"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization Table"
+msgstr "Tabla de amortización"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Assets"
+msgstr "Activos"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Closing Value"
+msgstr "Valor al cerrar"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Company:"
+msgstr "Empresa:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Fixed"
+msgstr "Fijo"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "From:"
+msgstr "Desde:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Print Date:"
+msgstr "Fecha de impresión:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "To:"
+msgstr "Para:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Total -"
+msgstr "Total -"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "User:"
+msgstr "Usuario:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "at"
+msgstr "a las"
+
 msgctxt "selection:account.asset,depreciation_method:"
 msgid "Linear"
 msgstr "Lineal"
@@ -463,6 +564,10 @@ msgctxt "view:account.asset.line:"
 msgid "Asset Lines"
 msgstr "Líneas de activo"
 
+msgctxt "view:account.asset.print_depreciation_table.start:"
+msgid "Choose Dates"
+msgstr "Seleccione fechas"
+
 msgctxt "view:account.asset.update.show_depreciation:"
 msgid "Asset Depreciation Move"
 msgstr "Asiento de amortización de activo"
@@ -523,6 +628,14 @@ msgctxt "wizard_button:account.asset.create_moves,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,print_:"
+msgid "Print"
+msgstr "Imprimir"
+
 msgctxt "wizard_button:account.asset.update,show_move,create_move:"
 msgid "OK"
 msgstr "Aceptar"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index b065e19..ea433af 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -3,22 +3,22 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.asset:"
-msgid "Asset \"%s\" must be in draft to be deleted!"
-msgstr "L'actif « %s » doit être en brouillon pour pouvoir être supprimé."
+msgid "Asset \"%s\" must be in draft to be deleted."
+msgstr "L'actif « %s » doit être en brouillon pour être supprimé."
 
 msgctxt "error:account.asset:"
-msgid "Supplier Invoice Line can be used only once on asset!"
+msgid "Supplier Invoice Line can be used only once on asset."
 msgstr ""
 "Une ligne de facture fournisseur ne peut être utilisée qu'une seule fois sur"
-" un actif !"
+" l'actif."
 
 msgctxt "error:account.invoice.line:"
 msgid "Asset can be used only once on invoice line!"
 msgstr "Un actif ne peut être utilisé qu'une seule fois par ligne."
 
 msgctxt "error:purchase.line:"
-msgid "It misses an \"Account Asset\" on product \"%s\"!"
-msgstr "Le compte d'actif est manquant sur le produit « %s »."
+msgid "It misses an \"Account Asset\" on product \"%s\"."
+msgstr "Il manque un « Compte d'actif » sur le produit « %s »."
 
 msgctxt "field:account.asset,account_journal:"
 msgid "Journal"
@@ -228,6 +228,18 @@ msgctxt "field:account.asset.line,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
+msgctxt "field:account.asset.print_depreciation_table.start,end_date:"
+msgid "End Date"
+msgstr "Date de fin"
+
+msgctxt "field:account.asset.print_depreciation_table.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
+msgid "Start Date"
+msgstr "Date de début"
+
 msgctxt "field:account.asset.update.show_depreciation,amount:"
 msgid "Amount"
 msgstr "Montant"
@@ -360,6 +372,10 @@ msgctxt "model:account.asset.line,name:"
 msgid "Asset Line"
 msgstr "Ligne d'actif"
 
+msgctxt "model:account.asset.print_depreciation_table.start,name:"
+msgid "Asset Depreciation Table Start"
+msgstr "Table d'amortissement d'actif"
+
 msgctxt "model:account.asset.update.show_depreciation,name:"
 msgid "Update Asset Show Depreciation"
 msgstr "Mise à jour des actifs - Affichage des amortissements"
@@ -380,10 +396,18 @@ msgctxt "model:ir.action,name:act_asset_form"
 msgid "Assets"
 msgstr "Actifs"
 
+msgctxt "model:ir.action,name:report_depreciation_table"
+msgid "Depreciation Table"
+msgstr "Tableau d'amortissement"
+
 msgctxt "model:ir.action,name:wizard_create_moves"
 msgid "Create Assets Moves"
 msgstr "Créer les mouvements d'actifs"
 
+msgctxt "model:ir.action,name:wizard_print_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimer le tableau d'amortissement"
+
 msgctxt "model:ir.action,name:wizard_update"
 msgid "Update Asset"
 msgstr "Mise à jour des actifs"
@@ -420,10 +444,86 @@ msgctxt "model:ir.ui.menu,name:menu_asset_form"
 msgid "Assets"
 msgstr "Actifs"
 
+msgctxt "model:ir.ui.menu,name:menu_create_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Imprimer le tableau d'amortissement"
+
 msgctxt "model:ir.ui.menu,name:menu_create_moves"
 msgid "Create Assets Moves"
 msgstr "Créer les mouvements d'actifs"
 
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "("
+msgstr "("
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid ")"
+msgstr ")"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "+"
+msgstr "+"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "-"
+msgstr "-"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "/"
+msgstr "/"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Actual Value"
+msgstr "Valeur réelle"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization"
+msgstr "Amortissement"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization Table"
+msgstr "Table d'amortissement"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Assets"
+msgstr "Actifs"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Closing Value"
+msgstr "Valeur de clôture"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Company:"
+msgstr "Société :"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Fixed"
+msgstr "Fixé"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "From:"
+msgstr "De :"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Print Date:"
+msgstr "Date d'impression :"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "To:"
+msgstr "à :"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Total -"
+msgstr "Total -"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "User:"
+msgstr "Utilisateur :"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "at"
+msgstr "à"
+
 msgctxt "selection:account.asset,depreciation_method:"
 msgid "Linear"
 msgstr "Linéaire"
@@ -464,6 +564,10 @@ msgctxt "view:account.asset.line:"
 msgid "Asset Lines"
 msgstr "Lignes d'actif"
 
+msgctxt "view:account.asset.print_depreciation_table.start:"
+msgid "Choose Dates"
+msgstr "Choisir des dates"
+
 msgctxt "view:account.asset.update.show_depreciation:"
 msgid "Asset Depreciation Move"
 msgstr "Mouvement d'amortissement d'actif"
@@ -524,6 +628,14 @@ msgctxt "wizard_button:account.asset.create_moves,start,end:"
 msgid "Cancel"
 msgstr "Annuler"
 
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,end:"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,print_:"
+msgid "Print"
+msgstr "Imprimer"
+
 msgctxt "wizard_button:account.asset.update,show_move,create_move:"
 msgid "OK"
 msgstr "OK"
diff --git a/locale/sl_SI.po b/locale/sl_SI.po
index 240274f..d8dcf47 100644
--- a/locale/sl_SI.po
+++ b/locale/sl_SI.po
@@ -3,20 +3,20 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.asset:"
-msgid "Asset \"%s\" must be in draft to be deleted!"
-msgstr "Sredstvo \"%s\" je možno brisati samo v stanju priprave."
+msgid "Asset \"%s\" must be in draft to be deleted."
+msgstr "Za izbris sredstva \"%s\" mora biti le-to v stanju priprave."
 
 msgctxt "error:account.asset:"
-msgid "Supplier Invoice Line can be used only once on asset!"
-msgstr "Postavka prejetega računa se na sredstvu lahko uporabi samo enkrat."
+msgid "Supplier Invoice Line can be used only once on asset."
+msgstr "Postavka prejetega računa se lahko na sredstvu uporabi samo enkrat."
 
 msgctxt "error:account.invoice.line:"
 msgid "Asset can be used only once on invoice line!"
 msgstr "Sredstvo je lahko samo enkrat na postavki računa."
 
 msgctxt "error:purchase.line:"
-msgid "It misses an \"Account Asset\" on product \"%s\"!"
-msgstr "Pri izdelku \"%s\" manjka konto sredstev."
+msgid "It misses an \"Account Asset\" on product \"%s\"."
+msgstr "Pri izdelku \"%s\" manjka konto sredstva. "
 
 msgctxt "field:account.asset,account_journal:"
 msgid "Journal"
@@ -48,7 +48,7 @@ msgstr "Postavka računa kupca"
 
 msgctxt "field:account.asset,depreciation_method:"
 msgid "Depreciation Method"
-msgstr "Način amortizacije"
+msgstr "Metoda amortizacije"
 
 msgctxt "field:account.asset,end_date:"
 msgid "End Date"
@@ -226,6 +226,18 @@ msgctxt "field:account.asset.line,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
+msgctxt "field:account.asset.print_depreciation_table.start,end_date:"
+msgid "End Date"
+msgstr "Končni datum"
+
+msgctxt "field:account.asset.print_depreciation_table.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
+msgid "Start Date"
+msgstr "Začetni datum"
+
 msgctxt "field:account.asset.update.show_depreciation,amount:"
 msgid "Amount"
 msgstr "Znesek"
@@ -358,6 +370,10 @@ msgctxt "model:account.asset.line,name:"
 msgid "Asset Line"
 msgstr "Postavka sredstva"
 
+msgctxt "model:account.asset.print_depreciation_table.start,name:"
+msgid "Asset Depreciation Table Start"
+msgstr "Amortizacijska tabela sredstev - Začetek"
+
 msgctxt "model:account.asset.update.show_depreciation,name:"
 msgid "Update Asset Show Depreciation"
 msgstr "Prikaz amortizacije pri popravku sredstev"
@@ -378,10 +394,18 @@ msgctxt "model:ir.action,name:act_asset_form"
 msgid "Assets"
 msgstr "Sredstva"
 
+msgctxt "model:ir.action,name:report_depreciation_table"
+msgid "Depreciation Table"
+msgstr "Amortizacijska tabela"
+
 msgctxt "model:ir.action,name:wizard_create_moves"
 msgid "Create Assets Moves"
 msgstr "Knjiženje sredstev"
 
+msgctxt "model:ir.action,name:wizard_print_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Izpis amortizacijske tabele"
+
 msgctxt "model:ir.action,name:wizard_update"
 msgid "Update Asset"
 msgstr "Popravek sredstev"
@@ -418,10 +442,86 @@ msgctxt "model:ir.ui.menu,name:menu_asset_form"
 msgid "Assets"
 msgstr "Sredstva"
 
+msgctxt "model:ir.ui.menu,name:menu_create_depreciation_table"
+msgid "Print Depreciation Table"
+msgstr "Izpis amortizacijske tabele"
+
 msgctxt "model:ir.ui.menu,name:menu_create_moves"
 msgid "Create Assets Moves"
 msgstr "Knjiženje sredstev"
 
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "("
+msgstr "("
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid ")"
+msgstr ")"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "+"
+msgstr "+"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "-"
+msgstr "-"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "/"
+msgstr "/"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Actual Value"
+msgstr "Dejanska vrednost"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization"
+msgstr "Amortizacija"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Amortization Table"
+msgstr "Amortizacijska tabela"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Assets"
+msgstr "Sredstva"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Closing Value"
+msgstr "Končna vrednost"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Company:"
+msgstr "Družba:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Fixed"
+msgstr "Osnova"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "From:"
+msgstr "Od: "
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Print Date:"
+msgstr "Izpisano:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "To:"
+msgstr "Do:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "Total -"
+msgstr "Skupaj -"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "User:"
+msgstr "Izpisal:"
+
+msgctxt "odt:account.asset.depreciation_table:"
+msgid "at"
+msgstr "ob"
+
 msgctxt "selection:account.asset,depreciation_method:"
 msgid "Linear"
 msgstr "Linearno"
@@ -462,6 +562,10 @@ msgctxt "view:account.asset.line:"
 msgid "Asset Lines"
 msgstr "Postavke sredstev"
 
+msgctxt "view:account.asset.print_depreciation_table.start:"
+msgid "Choose Dates"
+msgstr "Izberi datume"
+
 msgctxt "view:account.asset.update.show_depreciation:"
 msgid "Asset Depreciation Move"
 msgstr "Prikaz amortizacije"
@@ -522,6 +626,14 @@ msgctxt "wizard_button:account.asset.create_moves,start,end:"
 msgid "Cancel"
 msgstr "Prekliči"
 
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,end:"
+msgid "Cancel"
+msgstr "Prekliči"
+
+msgctxt "wizard_button:account.asset.print_depreciation_table,start,print_:"
+msgid "Print"
+msgstr "Natisni"
+
 msgctxt "wizard_button:account.asset.update,show_move,create_move:"
 msgid "OK"
 msgstr "V redu"
diff --git a/purchase.py b/purchase.py
index 74bca0d..b22bc09 100644
--- a/purchase.py
+++ b/purchase.py
@@ -14,7 +14,7 @@ class PurchaseLine:
         super(PurchaseLine, cls).__setup__()
         cls._error_messages.update({
                 'missing_account_asset': ('It misses '
-                    'an "Account Asset" on product "%s"!'),
+                    'an "Account Asset" on product "%s".'),
                 })
 
     def get_invoice_line(self, invoice_type):
diff --git a/setup.py b/setup.py
index f895a9d..96565ff 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
 
 from setuptools import setup
 import re
@@ -41,7 +41,7 @@ if minor_version % 2:
         'hg+http://hg.tryton.org/modules/%s#egg=%s-%s' % (
             name[8:], name, version))
 
-requires = []
+requires = ['cached-property', 'python-dateutil']
 for dep in info.get('depends', []):
     if not re.match(r'(ir|res|webdav)(\W|$)', dep):
         requires.append(get_require_version('trytond_%s' % dep))
@@ -92,6 +92,8 @@ setup(name=name,
         'Natural Language :: Spanish',
         'Operating System :: OS Independent',
         'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: Implementation :: CPython',
+        'Programming Language :: Python :: Implementation :: PyPy',
         'Topic :: Office/Business',
         'Topic :: Office/Business :: Financial :: Accounting',
         ],
diff --git a/tests/__init__.py b/tests/__init__.py
index b8eef20..dc43f76 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,5 +1,5 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
 
 from .test_account_asset import suite
 
diff --git a/tests/scenario_account_asset.rst b/tests/scenario_account_asset.rst
index e8f30a8..86c45b2 100644
--- a/tests/scenario_account_asset.rst
+++ b/tests/scenario_account_asset.rst
@@ -2,16 +2,20 @@
 Account Asset Scenario
 ======================
 
-=============
-General Setup
-=============
-
 Imports::
 
     >>> import datetime
     >>> from dateutil.relativedelta import relativedelta
     >>> from decimal import Decimal
     >>> from proteus import config, Model, Wizard
+    >>> from trytond.modules.company.tests.tools import create_company, \
+    ...     get_company
+    >>> from trytond.modules.account.tests.tools import create_fiscalyear, \
+    ...     create_chart, get_accounts
+    >>> from.trytond.modules.account_invoice.tests.tools import \
+    ...     set_fiscalyear_invoice_sequences, create_payment_term
+    >>> from trytond.modules.account_asset.tests.tools \
+    ...     import add_asset_accounts
     >>> today = datetime.date.today()
 
 Create database::
@@ -22,37 +26,16 @@ Create database::
 Install account_asset::
 
     >>> Module = Model.get('ir.module.module')
-    >>> modules = Module.find([
+    >>> module, = Module.find([
     ...     ('name', '=', 'account_asset'),
-    ... ])
-    >>> Module.install([x.id for x in modules], config.context)
+    ...     ])
+    >>> module.click('install')
     >>> Wizard('ir.module.module.install_upgrade').execute('upgrade')
 
 Create company::
 
-    >>> Currency = Model.get('currency.currency')
-    >>> CurrencyRate = Model.get('currency.currency.rate')
-    >>> Company = Model.get('company.company')
-    >>> Party = Model.get('party.party')
-    >>> company_config = Wizard('company.company.config')
-    >>> company_config.execute('company')
-    >>> company = company_config.form
-    >>> party = Party(name='Dunder Mifflin')
-    >>> party.save()
-    >>> company.party = party
-    >>> currencies = Currency.find([('code', '=', 'USD')])
-    >>> if not currencies:
-    ...     currency = Currency(name='US Dollar', symbol=u'$', code='USD',
-    ...         rounding=Decimal('0.01'), mon_grouping='[]',
-    ...         mon_decimal_point='.', mon_thousands_sep=',')
-    ...     currency.save()
-    ...     CurrencyRate(date=today + relativedelta(month=1, day=1),
-    ...         rate=Decimal('1.0'), currency=currency).save()
-    ... else:
-    ...     currency, = currencies
-    >>> company.currency = currency
-    >>> company_config.execute('add')
-    >>> company, = Company.find()
+    >>> _ = create_company()
+    >>> company = get_company()
 
 Reload the context::
 
@@ -61,63 +44,18 @@ Reload the context::
 
 Create fiscal year::
 
-    >>> FiscalYear = Model.get('account.fiscalyear')
-    >>> Sequence = Model.get('ir.sequence')
-    >>> SequenceStrict = Model.get('ir.sequence.strict')
-    >>> fiscalyear = FiscalYear(name='%s' % today.year)
-    >>> fiscalyear.start_date = today + relativedelta(month=1, day=1)
-    >>> fiscalyear.end_date = today + relativedelta(month=12, day=31)
-    >>> fiscalyear.company = company
-    >>> post_move_sequence = Sequence(name='%s' % today.year,
-    ...     code='account.move',
-    ...     company=company)
-    >>> post_move_sequence.save()
-    >>> fiscalyear.post_move_sequence = post_move_sequence
-    >>> invoice_sequence = SequenceStrict(name='%s' % today.year,
-    ...     code='account.invoice',
-    ...     company=company)
-    >>> invoice_sequence.save()
-    >>> fiscalyear.out_invoice_sequence = invoice_sequence
-    >>> fiscalyear.in_invoice_sequence = invoice_sequence
-    >>> fiscalyear.out_credit_note_sequence = invoice_sequence
-    >>> fiscalyear.in_credit_note_sequence = invoice_sequence
-    >>> fiscalyear.save()
-    >>> FiscalYear.create_period([fiscalyear.id], config.context)
+    >>> fiscalyear = set_fiscalyear_invoice_sequences(
+    ...     create_fiscalyear(company))
+    >>> fiscalyear.click('create_period')
 
 Create chart of accounts::
 
-    >>> AccountTemplate = Model.get('account.account.template')
-    >>> Account = Model.get('account.account')
-    >>> AccountJournal = Model.get('account.journal')
-    >>> account_template, = AccountTemplate.find([('parent', '=', None)])
-    >>> create_chart = Wizard('account.create_chart')
-    >>> create_chart.execute('account')
-    >>> create_chart.form.account_template = account_template
-    >>> create_chart.form.company = company
-    >>> create_chart.execute('create_account')
-    >>> receivable, = Account.find([
-    ...     ('kind', '=', 'receivable'),
-    ...     ('company', '=', company.id),
-    ... ])
-    >>> payable, = Account.find([
-    ...     ('kind', '=', 'payable'),
-    ...     ('company', '=', company.id),
-    ... ])
-    >>> revenue, = Account.find([
-    ...     ('kind', '=', 'revenue'),
-    ...     ('company', '=', company.id),
-    ... ])
-    >>> asset_account, expense = Account.find([
-    ...     ('kind', '=', 'expense'),
-    ...     ('company', '=', company.id),
-    ... ], order=[('name', 'DESC')])
-    >>> depreciation_account, = Account.find([
-    ...     ('kind', '=', 'other'),
-    ...     ('name', '=', 'Depreciation'),
-    ... ])
-    >>> create_chart.form.account_receivable = receivable
-    >>> create_chart.form.account_payable = payable
-    >>> create_chart.execute('create_properties')
+    >>> _ = create_chart(company)
+    >>> accounts = add_asset_accounts(get_accounts(company), company)
+    >>> revenue = accounts['revenue']
+    >>> asset_account = accounts['asset']
+    >>> expense = accounts['expense']
+    >>> depreciation_account = accounts['depreciation']
 
 Create an asset::
 
@@ -152,11 +90,7 @@ Create supplier::
 
 Create payment term::
 
-    >>> PaymentTerm = Model.get('account.invoice.payment_term')
-    >>> PaymentTermLine = Model.get('account.invoice.payment_term.line')
-    >>> payment_term = PaymentTerm(name='Direct')
-    >>> payment_term_line = PaymentTermLine(type='remainder', days=0)
-    >>> payment_term.lines.append(payment_term_line)
+    >>> payment_term = create_payment_term()
     >>> payment_term.save()
 
 Buy an asset::
@@ -172,8 +106,7 @@ Buy an asset::
     >>> invoice_line.account == asset_account
     True
     >>> supplier_invoice.invoice_date = today + relativedelta(day=1, month=1)
-    >>> supplier_invoice.save()
-    >>> Invoice.post([supplier_invoice.id], config.context)
+    >>> supplier_invoice.click('post')
     >>> supplier_invoice.state
     u'posted'
     >>> invoice_line, = supplier_invoice.lines
@@ -199,9 +132,7 @@ Depreciate the asset::
     >>> asset.unit == unit
     True
     >>> asset.residual_value = Decimal('100')
-    >>> asset.save()
-    >>> Asset.create_lines([asset.id], config.context)
-    >>> asset.reload()
+    >>> asset.click('create_lines')
     >>> len(asset.lines)
     24
     >>> [l.depreciation for l in asset.lines] == [Decimal('37.5')] * 24
@@ -218,8 +149,7 @@ Depreciate the asset::
     Decimal('100.00')
     >>> asset.lines[-1].accumulated_depreciation
     Decimal('900.00')
-    >>> Asset.run([asset.id], config.context)
-    >>> asset.reload()
+    >>> asset.click('run')
 
 Create Moves for 3 months::
 
@@ -308,8 +238,7 @@ Sale the asset::
     >>> invoice_line.unit_price = Decimal('600')
     >>> invoice_line.account == revenue
     True
-    >>> customer_invoice.save()
-    >>> Invoice.post([customer_invoice.id], config.context)
+    >>> customer_invoice.click('post')
     >>> customer_invoice.state
     u'posted'
     >>> asset.reload()
@@ -329,3 +258,9 @@ Sale the asset::
     Decimal('339.28')
     >>> depreciation_account.credit
     Decimal('239.28')
+
+Generate the asset report::
+
+    >>> print_depreciation_table = Wizard(
+    ...     'account.asset.print_depreciation_table')
+    >>> print_depreciation_table.execute('print_')
diff --git a/tests/test_account_asset.py b/tests/test_account_asset.py
index c763703..7c929d7 100644
--- a/tests/test_account_asset.py
+++ b/tests/test_account_asset.py
@@ -1,25 +1,15 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
 import unittest
 import doctest
 import trytond.tests.test_tryton
-from trytond.tests.test_tryton import test_view, test_depends
+from trytond.tests.test_tryton import ModuleTestCase
 from trytond.tests.test_tryton import doctest_setup, doctest_teardown
 
 
-class AccountAssetTestCase(unittest.TestCase):
+class AccountAssetTestCase(ModuleTestCase):
     'Test AccountAsset module'
-
-    def setUp(self):
-        trytond.tests.test_tryton.install_module('account_asset')
-
-    def test0005views(self):
-        'Test views'
-        test_view('account_asset')
-
-    def test0006depends(self):
-        'Test depends'
-        test_depends()
+    module = 'account_asset'
 
 
 def suite():
diff --git a/tests/tools.py b/tests/tools.py
new file mode 100644
index 0000000..cf03206
--- /dev/null
+++ b/tests/tools.py
@@ -0,0 +1,29 @@
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+from proteus import Model
+
+from trytond.modules.company.tests.tools import get_company
+
+
+def add_asset_accounts(accounts, company=None, config=None):
+    "Add asset kind to accounts"
+    Account = Model.get('account.account', config=config)
+
+    if not company:
+        company = get_company()
+
+    expense_accounts = Account.find([
+            ('kind', '=', 'expense'),
+            ('company', '=', company.id),
+            ])
+    for account in expense_accounts:
+        if account.name == 'Expense':
+            accounts['expense'] = account
+        elif account.name == 'Assets':
+            accounts['asset'] = account
+    depreciation, = Account.find([
+            ('kind', '=', 'other'),
+            ('name', '=', 'Depreciation'),
+            ])
+    accounts['depreciation'] = depreciation
+    return accounts
diff --git a/tryton.cfg b/tryton.cfg
index 3960a4a..d755180 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=3.4.1
+version=3.6.0
 depends:
     ir
     res
diff --git a/trytond_account_asset.egg-info/PKG-INFO b/trytond_account_asset.egg-info/PKG-INFO
index d96e686..587008d 100644
--- a/trytond_account_asset.egg-info/PKG-INFO
+++ b/trytond_account_asset.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond-account-asset
-Version: 3.4.1
+Version: 3.6.0
 Summary: Tryton module for assets management
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/3.4/
+Download-URL: http://downloads.tryton.org/3.6/
 Description: trytond_account_asset
         =====================
         
@@ -64,5 +64,7 @@ Classifier: Natural Language :: Slovenian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Office/Business
 Classifier: Topic :: Office/Business :: Financial :: Accounting
diff --git a/trytond_account_asset.egg-info/SOURCES.txt b/trytond_account_asset.egg-info/SOURCES.txt
index ffc284f..a19e9ea 100644
--- a/trytond_account_asset.egg-info/SOURCES.txt
+++ b/trytond_account_asset.egg-info/SOURCES.txt
@@ -32,6 +32,7 @@ tryton.cfg
 ./tests/__init__.py
 ./tests/scenario_account_asset.rst
 ./tests/test_account_asset.py
+./tests/tools.py
 ./view/asset_create_moves_start_form.xml
 ./view/asset_form.xml
 ./view/asset_line_form.xml
@@ -42,6 +43,7 @@ tryton.cfg
 ./view/category_form.xml
 ./view/configuration_form.xml
 ./view/invoice_line_form.xml
+./view/print_depreciation_table_start.xml
 ./view/template_form.xml
 doc/index.rst
 locale/ca_ES.po
@@ -70,4 +72,5 @@ view/asset_update_start_form.xml
 view/category_form.xml
 view/configuration_form.xml
 view/invoice_line_form.xml
+view/print_depreciation_table_start.xml
 view/template_form.xml
\ No newline at end of file
diff --git a/trytond_account_asset.egg-info/requires.txt b/trytond_account_asset.egg-info/requires.txt
index 7e0ef41..e0f86c5 100644
--- a/trytond_account_asset.egg-info/requires.txt
+++ b/trytond_account_asset.egg-info/requires.txt
@@ -1,5 +1,7 @@
-trytond_account >= 3.4, < 3.5
-trytond_account_product >= 3.4, < 3.5
-trytond_product >= 3.4, < 3.5
-trytond_account_invoice >= 3.4, < 3.5
-trytond >= 3.4, < 3.5
\ No newline at end of file
+cached-property
+python-dateutil
+trytond_account >= 3.6, < 3.7
+trytond_account_product >= 3.6, < 3.7
+trytond_product >= 3.6, < 3.7
+trytond_account_invoice >= 3.6, < 3.7
+trytond >= 3.6, < 3.7
\ No newline at end of file
diff --git a/view/print_depreciation_table_start.xml b/view/print_depreciation_table_start.xml
new file mode 100644
index 0000000..11c0b79
--- /dev/null
+++ b/view/print_depreciation_table_start.xml
@@ -0,0 +1,9 @@
+<?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 string="Choose Dates">
+    <label name="start_date"/>
+    <field name="start_date"/>
+    <label name="end_date"/>
+    <field name="end_date"/>
+</form>
-- 
tryton-modules-account-asset



More information about the tryton-debian-vcs mailing list