[tryton-debian-vcs] tryton-modules-account branch debian updated. debian/3.4.2-1-3-gee46d51

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Thu Apr 23 15:26:00 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.git;a=commitdiff;h=debian/3.4.2-1-3-gee46d51

commit ee46d5171a4baf6584980ccd791bef2a7d58bb3f
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu Apr 23 17:25:38 2015 +0200

    Updating Depends.

diff --git a/debian/control b/debian/control
index e48daa9..23faba8 100644
--- a/debian/control
+++ b/debian/control
@@ -20,6 +20,7 @@ Depends:
  python-dateutil,
  python-pkg-resources,
  python-sql,
+ python-simpleeval,
  tryton-modules-company (>= ${version:major}),
  tryton-modules-currency (>= ${version:major}),
  tryton-modules-party (>= ${version:major}),
commit 9e0ab9a73c5fe81525d888b054674f1192bfe63a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu Apr 23 16:59:47 2015 +0200

    Merging upstream version 3.6.0.

diff --git a/CHANGELOG b/CHANGELOG
index fc682ca..96b2931 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,9 +1,15 @@
-Version 3.4.2 - 2015-03-02
+Version 3.6.0 - 2015-04-20
 * Bug fixes (see mercurial logs for details)
+* Add support for PyPy
+* Add move template
+* Improve payable/receivable lines
+* Enforce same sign between amount_second_currency and debit - credit
+* Allow tax modifying the unit price
+* Add reverse_compute on Tax
 * Add fix_party script
-
-Version 3.4.1 - 2014-12-03
-* Bug fixes (see mercurial logs for details)
+* Allow to display only the balance in the General Ledger
+* Add TaxableMixin
+* Allow to set a description to cancel move
 
 Version 3.4.0 - 2014-10-20
 * Bug fixes (see mercurial logs for details)
diff --git a/INSTALL b/INSTALL
index e627dbf..9a7bc2c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -7,6 +7,7 @@ Prerequisites
  * Python 2.7 or later (http://www.python.org/)
  * python-dateutil (http://labix.org/python-dateutil)
  * python-sql (http://code.google.com/p/python-sql/)
+ * simpleeval (https://github.com/danthedeckie/simpleeval)
  * trytond (http://www.tryton.org/)
  * trytond_company (http://www.tryton.org/)
  * trytond_party (http://www.tryton.org/)
diff --git a/PKG-INFO b/PKG-INFO
index 8456846..8e8fc75 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_account
-Version: 3.4.2
+Version: 3.6.0
 Summary: Tryton module for accounting
 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
         ===============
         
@@ -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 c38770f..fedf7d5 100644
--- a/__init__.py
+++ b/__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 trytond.pool import Pool
 from .fiscalyear import *
@@ -8,6 +8,7 @@ from .configuration import *
 from .period import *
 from .journal import *
 from .move import *
+from .move_template import *
 from .tax import *
 from .party import *
 
@@ -47,6 +48,7 @@ def register():
         OpenJournalAsk,
         ReconcileLinesWriteOff,
         ReconcileShow,
+        CancelMovesDefault,
         FiscalYearLine,
         FiscalYear2,
         PrintGeneralJournalStart,
@@ -65,6 +67,12 @@ def register():
         AccountTemplate2,
         AccountTax,
         Account2,
+        MoveTemplate,
+        MoveTemplateKeyword,
+        MoveLineTemplate,
+        TaxLineTemplate,
+        CreateMoveTemplate,
+        CreateMoveKeywords,
         Party,
         module='account', type_='model')
     Pool.register(
@@ -91,6 +99,7 @@ def register():
         Reconcile,
         CancelMoves,
         PrintGeneralJournal,
+        CreateMove,
         OpenChartTaxCode,
         OpenTaxCode,
         module='account', type_='wizard')
diff --git a/account.py b/account.py
index ecf25b5..7f78c69 100644
--- a/account.py
+++ b/account.py
@@ -1,10 +1,12 @@
-#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 decimal import Decimal
 import datetime
 import operator
 from itertools import izip, groupby
-from sql import Column, Literal
+from functools import wraps
+
+from sql import Column, Literal, Null
 from sql.aggregate import Sum
 from sql.conditionals import Coalesce
 
@@ -30,6 +32,14 @@ __all__ = ['TypeTemplate', 'Type', 'OpenType', 'AccountTemplate', 'Account',
     'OpenAgedBalanceStart', 'OpenAgedBalance', 'AgedBalance']
 
 
+def inactive_records(func):
+    @wraps(func)
+    def wrapper(*args, **kwargs):
+        with Transaction().set_context(active_test=False):
+            return func(*args, **kwargs)
+    return wrapper
+
+
 class TypeTemplate(ModelSQL, ModelView):
     'Account Type Template'
     __name__ = 'account.account.type.template'
@@ -70,7 +80,7 @@ class TypeTemplate(ModelSQL, ModelView):
     @staticmethod
     def order_sequence(tables):
         table, _ = tables[None]
-        return [table.sequence == None, table.sequence]
+        return [table.sequence == Null, table.sequence]
 
     @staticmethod
     def default_balance_sheet():
@@ -213,7 +223,7 @@ class Type(ModelSQL, ModelView):
     @staticmethod
     def order_sequence(tables):
         table, _ = tables[None]
-        return [table.sequence == None, table.sequence]
+        return [table.sequence == Null, table.sequence]
 
     @staticmethod
     def default_balance_sheet():
@@ -377,6 +387,12 @@ class AccountTemplate(ModelSQL, ModelView):
             'invisible': Eval('kind') == 'view',
             },
         depends=['kind'])
+    general_ledger_balance = fields.Boolean('General Ledger Balance',
+        states={
+            'invisible': Eval('kind') == 'view',
+            },
+        depends=['kind'],
+        help="Display only the balance in the general ledger report")
 
     @classmethod
     def __setup__(cls):
@@ -405,6 +421,10 @@ class AccountTemplate(ModelSQL, ModelView):
     def default_party_required():
         return False
 
+    @staticmethod
+    def default_general_ledger_balance():
+        return False
+
     def get_rec_name(self, name):
         if self.code:
             return self.code + ' - ' + self.name
@@ -413,7 +433,11 @@ class AccountTemplate(ModelSQL, ModelView):
 
     @classmethod
     def search_rec_name(cls, name, clause):
-        return ['OR',
+        if clause[1].startswith('!') or clause[1].startswith('not '):
+            bool_op = 'AND'
+        else:
+            bool_op = 'OR'
+        return [bool_op,
             ('code',) + tuple(clause[1:]),
             (cls._rec_name,) + tuple(clause[1:]),
             ]
@@ -435,6 +459,10 @@ class AccountTemplate(ModelSQL, ModelView):
             res['deferral'] = self.deferral
         if not account or account.party_required != self.party_required:
             res['party_required'] = self.party_required
+        if (not account
+                or account.general_ledger_balance !=
+                self.general_ledger_balance):
+            res['general_ledger_balance'] = self.general_ledger_balance
         if not account or account.template != self:
             res['template'] = self.id
         return res
@@ -598,6 +626,12 @@ class Account(ModelSQL, ModelView):
             'invisible': Eval('kind') == 'view',
             },
         depends=['kind'])
+    general_ledger_balance = fields.Boolean('General Ledger Balance',
+        states={
+            'invisible': Eval('kind') == 'view',
+            },
+        depends=['kind'],
+        help="Display only the balance in the general ledger report")
     template = fields.Many2One('account.account.template', 'Template')
 
     @classmethod
@@ -648,6 +682,10 @@ class Account(ModelSQL, ModelView):
         return False
 
     @staticmethod
+    def default_general_ledger_balance():
+        return False
+
+    @staticmethod
     def default_kind():
         return 'view'
 
@@ -817,7 +855,11 @@ class Account(ModelSQL, ModelView):
 
     @classmethod
     def search_rec_name(cls, name, clause):
-        return ['OR',
+        if clause[1].startswith('!') or clause[1].startswith('not '):
+            bool_op = 'AND'
+        else:
+            bool_op = 'OR'
+        return [bool_op,
             ('code',) + tuple(clause[1:]),
             (cls._rec_name,) + tuple(clause[1:]),
             ]
@@ -998,7 +1040,11 @@ class AccountDeferral(ModelSQL, ModelView):
 
     @classmethod
     def search_rec_name(cls, name, clause):
-        return ['OR',
+        if clause[1].startswith('!') or clause[1].startswith('not '):
+            bool_op = 'AND'
+        else:
+            bool_op = 'OR'
+        return [bool_op,
             ('account.rec_name',) + tuple(clause[1:]),
             ('fiscalyear.rec_name',) + tuple(clause[1:]),
             ]
@@ -1087,10 +1133,8 @@ class PrintGeneralLedgerStart(ModelView):
 
     @fields.depends('fiscalyear')
     def on_change_fiscalyear(self):
-        return {
-            'start_period': None,
-            'end_period': None,
-            }
+        self.start_period = None
+        self.end_period = None
 
 
 class PrintGeneralLedger(Wizard):
@@ -1130,7 +1174,9 @@ class GeneralLedger(Report):
     __name__ = 'account.general_ledger'
 
     @classmethod
-    def parse(cls, report, objects, data, localcontext):
+    def get_context(cls, records, data):
+        report_context = super(GeneralLedger, cls).get_context(records, data)
+
         pool = Pool()
         Account = pool.get('account.account')
         Period = pool.get('account.period')
@@ -1151,7 +1197,9 @@ class GeneralLedger(Report):
                     ('fiscalyear', '=', data['fiscalyear']),
                     ('end_date', '<=', start_period.start_date),
                     ])
-            start_period_ids = [p.id for p in start_periods]
+            start_period_ids += [p.id for p in start_periods]
+        else:
+            start_period = None
 
         with Transaction().set_context(
                 fiscalyear=data['fiscalyear'],
@@ -1175,6 +1223,7 @@ class GeneralLedger(Report):
             end_periods = Period.search([
                     ('fiscalyear', '=', data['fiscalyear']),
                     ])
+            end_period = None
         end_period_ids = [p.id for p in end_periods]
 
         with Transaction().set_context(
@@ -1186,31 +1235,28 @@ class GeneralLedger(Report):
         for account in end_accounts:
             id2end_account[account.id] = account
 
-        periods = end_periods
-        periods.sort(lambda x, y: cmp(x.start_date, y.start_date))
-        localcontext['start_period'] = periods[0]
-        periods.sort(lambda x, y: cmp(x.end_date, y.end_date))
-        localcontext['end_period'] = periods[-1]
-
         if not data['empty_account']:
             account2lines = dict(cls.get_lines(accounts,
                     end_periods, data['posted']))
             accounts = Account.browse([a.id for a in accounts
                     if a in account2lines])
 
-        account_id2lines = cls.lines(accounts,
+        account_id2lines = cls.lines(
+            [a for a in accounts if not a.general_ledger_balance],
             list(set(end_periods).difference(set(start_periods))),
             data['posted'])
 
-        localcontext['accounts'] = accounts
-        localcontext['id2start_account'] = id2start_account
-        localcontext['id2end_account'] = id2end_account
-        localcontext['digits'] = company.currency.digits
-        localcontext['lines'] = lambda account_id: account_id2lines[account_id]
-        localcontext['company'] = company
+        report_context['accounts'] = accounts
+        report_context['id2start_account'] = id2start_account
+        report_context['id2end_account'] = id2end_account
+        report_context['digits'] = company.currency.digits
+        report_context['lines'] = \
+            lambda account_id: account_id2lines[account_id]
+        report_context['company'] = company
+        report_context['start_period'] = start_period
+        report_context['end_period'] = end_period
 
-        return super(GeneralLedger, cls).parse(report, objects, data,
-            localcontext)
+        return report_context
 
     @classmethod
     def get_lines(cls, accounts, periods, posted):
@@ -1224,12 +1270,10 @@ class GeneralLedger(Report):
             clause.append(('move.state', '=', 'posted'))
         lines = MoveLine.search(clause,
             order=[
-                ('account', 'ASC'),  # TODO replace by account.id
+                ('account.id', 'ASC'),
                 ('date', 'ASC'),
                 ])
-        key = operator.attrgetter('account')
-        lines.sort(key=key)
-        return groupby(lines, key)
+        return groupby(lines, operator.attrgetter('account'))
 
     @classmethod
     def lines(cls, accounts, periods, posted):
@@ -1303,10 +1347,8 @@ class PrintTrialBalanceStart(ModelView):
 
     @fields.depends('fiscalyear')
     def on_change_fiscalyear(self):
-        return {
-            'start_period': None,
-            'end_period': None,
-            }
+        self.start_period = None
+        self.end_period = None
 
 
 class PrintTrialBalance(Wizard):
@@ -1346,7 +1388,9 @@ class TrialBalance(Report):
     __name__ = 'account.trial_balance'
 
     @classmethod
-    def parse(cls, report, objects, data, localcontext):
+    def get_context(cls, records, data):
+        report_context = super(TrialBalance, cls).get_context(records, data)
+
         pool = Pool()
         Account = pool.get('account.account')
         Period = pool.get('account.period')
@@ -1428,17 +1472,17 @@ class TrialBalance(Report):
 
         periods = end_periods
 
-        localcontext['accounts'] = accounts
+        report_context['accounts'] = accounts
         periods.sort(key=operator.attrgetter('start_date'))
-        localcontext['start_period'] = periods[0]
+        report_context['start_period'] = periods[0]
         periods.sort(key=operator.attrgetter('end_date'))
-        localcontext['end_period'] = periods[-1]
-        localcontext['company'] = company
-        localcontext['digits'] = company.currency.digits
-        localcontext['sum'] = lambda accounts, field: cls.sum(accounts, field)
+        report_context['end_period'] = periods[-1]
+        report_context['company'] = company
+        report_context['digits'] = company.currency.digits
+        report_context['sum'] = \
+            lambda accounts, field: cls.sum(accounts, field)
 
-        return super(TrialBalance, cls).parse(report, objects, data,
-            localcontext)
+        return report_context
 
     @classmethod
     def sum(cls, accounts, field):
@@ -1541,10 +1585,8 @@ class OpenIncomeStatementStart(ModelView):
 
     @fields.depends('fiscalyear')
     def on_change_fiscalyear(self):
-        return {
-            'start_period': None,
-            'end_period': None,
-            }
+        self.start_period = None
+        self.end_period = None
 
 
 class OpenIncomeStatement(Wizard):
@@ -1636,7 +1678,7 @@ class CreateChart(Wizard):
     start = StateView('account.create_chart.start',
         'account.create_chart_start_view_form', [
             Button('Cancel', 'end', 'tryton-cancel'),
-            Button('Ok', 'account', 'tryton-ok', default=True),
+            Button('OK', 'account', 'tryton-ok', default=True),
             ])
     account = StateView('account.create_chart.account',
         'account.create_chart_account_view_form', [
@@ -1790,9 +1832,10 @@ class UpdateChart(Wizard):
     update = StateTransition()
     succeed = StateView('account.update_chart.succeed',
         'account.update_chart_succeed_view_form', [
-            Button('Ok', 'end', 'tryton-ok', default=True),
+            Button('OK', 'end', 'tryton-ok', default=True),
             ])
 
+    @inactive_records
     def transition_update(self):
         pool = Pool()
         TaxCode = pool.get('account.tax.code')
@@ -1951,7 +1994,10 @@ class ThirdPartyBalance(Report):
     __name__ = 'account.third_party_balance'
 
     @classmethod
-    def parse(cls, report, objects, data, localcontext):
+    def get_context(cls, records, data):
+        report_context = super(ThirdPartyBalance, cls).get_context(records,
+            data)
+
         pool = Pool()
         Party = pool.get('party.party')
         MoveLine = pool.get('account.move.line')
@@ -1966,10 +2012,10 @@ class ThirdPartyBalance(Report):
         account = Account.__table__()
 
         company = Company(data['company'])
-        localcontext['company'] = company
-        localcontext['digits'] = company.currency.digits
-        localcontext['fiscalyear'] = data['fiscalyear']
-        with Transaction().set_context(context=localcontext):
+        report_context['company'] = company
+        report_context['digits'] = company.currency.digits
+        report_context['fiscalyear'] = data['fiscalyear']
+        with Transaction().set_context(context=report_context):
             line_query, _ = MoveLine.query_get(line)
         if data['posted']:
             posted_clause = move.state == 'posted'
@@ -1979,12 +2025,12 @@ class ThirdPartyBalance(Report):
         cursor.execute(*line.join(move, condition=line.move == move.id
                 ).join(account, condition=line.account == account.id
                 ).select(line.party, Sum(line.debit), Sum(line.credit),
-                where=(line.party != None)
+                where=(line.party != Null)
                 & account.active
                 & account.kind.in_(('payable', 'receivable'))
                 & (account.company == data['company'])
                 & ((line.maturity_date <= Date.today())
-                    | (line.maturity_date == None))
+                    | (line.maturity_date == Null))
                 & line_query & posted_clause,
                 group_by=line.party,
                 having=(Sum(line.debit) != 0) | (Sum(line.credit) != 0)))
@@ -2000,12 +2046,11 @@ class ThirdPartyBalance(Report):
             'solde': x[1] - x[2],
             } for x in res]
         objects.sort(lambda x, y: cmp(x['name'], y['name']))
-        localcontext['total_debit'] = sum((x['debit'] for x in objects))
-        localcontext['total_credit'] = sum((x['credit'] for x in objects))
-        localcontext['total_solde'] = sum((x['solde'] for x in objects))
+        report_context['total_debit'] = sum((x['debit'] for x in objects))
+        report_context['total_credit'] = sum((x['credit'] for x in objects))
+        report_context['total_solde'] = sum((x['solde'] for x in objects))
 
-        return super(ThirdPartyBalance, cls).parse(report, objects, data,
-            localcontext)
+        return report_context
 
 
 class OpenAgedBalanceStart(ModelView):
@@ -2092,7 +2137,9 @@ class AgedBalance(Report):
     __name__ = 'account.aged_balance'
 
     @classmethod
-    def parse(cls, report, objects, data, localcontext):
+    def get_context(cls, records, data):
+        report_context = super(AgedBalance, cls).get_context(records, data)
+
         pool = Pool()
         Party = pool.get('party.party')
         MoveLine = pool.get('account.move.line')
@@ -2107,9 +2154,9 @@ class AgedBalance(Report):
         account = Account.__table__()
 
         company = Company(data['company'])
-        localcontext['digits'] = company.currency.digits
-        localcontext['posted'] = data['posted']
-        with Transaction().set_context(context=localcontext):
+        report_context['digits'] = company.currency.digits
+        report_context['posted'] = data['posted']
+        with Transaction().set_context(context=report_context):
             line_query, _ = MoveLine.query_get(line)
 
         terms = (data['term1'], data['term2'], data['term3'])
@@ -2134,10 +2181,10 @@ class AgedBalance(Report):
             cursor.execute(*line.join(move, condition=line.move == move.id
                     ).join(account, condition=line.account == account.id
                     ).select(line.party, Sum(line.debit) - Sum(line.credit),
-                    where=(line.party != None)
+                    where=(line.party != Null)
                     & account.active
                     & account.kind.in_(kind)
-                    & (line.reconciliation == None)
+                    & (line.reconciliation == Null)
                     & (account.company == data['company'])
                     & term_query & line_query,
                     group_by=line.party,
@@ -2152,20 +2199,19 @@ class AgedBalance(Report):
             ('id', 'in', [k for k in res.iterkeys()]),
             ])
 
-        localcontext['main_title'] = data['balance_type']
-        localcontext['unit'] = data['unit']
+        report_context['main_title'] = data['balance_type']
+        report_context['unit'] = data['unit']
         for i in range(3):
-            localcontext['total' + str(i)] = sum(
+            report_context['total' + str(i)] = sum(
                 (v[i] for v in res.itervalues()))
-            localcontext['term' + str(i)] = terms[i]
+            report_context['term' + str(i)] = terms[i]
 
-        localcontext['company'] = company
-        localcontext['parties'] = [{
+        report_context['company'] = company
+        report_context['parties'] = [{
                 'name': p.rec_name,
                 'amount0': res[p.id][0],
                 'amount1': res[p.id][1],
                 'amount2': res[p.id][2],
                 } for p in parties]
 
-        return super(AgedBalance, cls).parse(report, objects, data,
-            localcontext)
+        return report_context
diff --git a/account.xml b/account.xml
index 1ae79ee..b7dcf0b 100644
--- a/account.xml
+++ b/account.xml
@@ -83,7 +83,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_account_type_template_tree">
             <field name="name">Account Type Templates</field>
             <field name="res_model">account.account.type.template</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view"
             id="act_account_type_template_tree_view1">
@@ -226,7 +226,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_account_type_tree">
             <field name="name">Account Types</field>
             <field name="res_model">account.account.type</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_account_type_tree_view1">
             <field name="sequence" eval="10"/>
@@ -296,7 +296,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_account_template_tree">
             <field name="name">Account Templates</field>
             <field name="res_model">account.account.template</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_account_template_tree_view1">
             <field name="sequence" eval="10"/>
@@ -449,7 +449,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_account_tree">
             <field name="name">Accounts</field>
             <field name="res_model">account.account</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_account_tree_view1">
             <field name="sequence" eval="10"/>
@@ -519,7 +519,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_account_tree2">
             <field name="name">Accounts</field>
             <field name="res_model">account.account</field>
-            <field name="domain">[('parent', '=', None), ('company', '=', Eval('context', {}).get('company', -1))]</field>
+            <field name="domain"
+                eval="[('parent', '=', None), ('company', '=', Eval('context', {}).get('company', -1))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_account_tree2_view1">
             <field name="sequence" eval="10"/>
@@ -555,7 +557,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="global_p" eval="True"/>
         </record>
         <record model="ir.rule" id="rule_account1">
-            <field name="domain">[('company', 'in', [c.id for c in user.companies])]</field>
+            <field name="domain"
+                eval="[('company', 'in', Eval('user', {}).get('companies', []))]"
+                pyson="1"/>
             <field name="rule_group" ref="rule_group_account"/>
         </record>
 
@@ -620,7 +624,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_account_balance_sheet_tree">
             <field name="name">Balance Sheet</field>
             <field name="res_model">account.account.type</field>
-            <field name="domain">[('balance_sheet', '=', True), ['OR', ('parent', '=', None), ('parent.balance_sheet', '=', False)]]</field>
+            <field name="domain"
+                eval="[('balance_sheet', '=', True), ['OR', ('parent', '=', None), ('parent.balance_sheet', '=', False)]]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_balance_sheet_view1">
             <field name="sequence" eval="10"/>
@@ -651,7 +657,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_account_income_statement_tree">
             <field name="name">Income Statement</field>
             <field name="res_model">account.account.type</field>
-            <field name="domain">[('income_statement', '=', True), ['OR', ('parent', '=', None), ('parent.income_statement', '=', False)]]</field>
+            <field name="domain"
+                eval="[('income_statement', '=', True), ['OR', ('parent', '=', None), ('parent.income_statement', '=', False)]]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_income_statement_view1">
             <field name="sequence" eval="10"/>
diff --git a/aged_balance.odt b/aged_balance.odt
index 7097b34..4f988cd 100644
Binary files a/aged_balance.odt and b/aged_balance.odt differ
diff --git a/configuration.py b/configuration.py
index b7bab77..f94dfd6 100644
--- a/configuration.py
+++ b/configuration.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 ModelView, ModelSQL, ModelSingleton, fields
 from trytond.pool import Pool
 from trytond.transaction import Transaction
diff --git a/doc/index.rst b/doc/index.rst
index 7905b82..7365fd9 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -78,7 +78,7 @@ An Account is defined by these fields:
   - Other: For other accounts.
 
 - Type: The Account Type of the account.
-- Deferral: A checkbox. If set to true, credits and debits are carried
+- Deferral: A checkbox. If set to true, credit and debit are carried
   over form fiscal year to fiscal year.
 - Second currency: Force all moves for the account to have this
   secondary currency.
@@ -205,6 +205,8 @@ the following fields:
 - Amount: If Type is *Fixed*, defines a fix amount for the tax.
 - Percentage: If Type is *Percentage*, defines the percentage of the
   tax.
+- Update Unit Price: If checked then the unit price for further tax calculation
+  will be increased by the amount of this tax.
 - Parent, Children: Parent and children taxes
 - Company: The company for which the tax is defined.
 - Invoice Account: The account to use when creating move lines for
@@ -244,3 +246,58 @@ counterparts except that they are not linked to a company. Two wizard
 from Template*) allow to create and update the accounts from the
 account templates (and consequently all other models associated to
 templates).
+
+Move Template
+*************
+
+A move template allows to configure predefined moves. A Move Template is
+defined by the following fields:
+
+- Name
+- Company
+- Keywords: The list of keywords used in the template.
+- Journal
+- Date: The date of the move. It must be leaved empty for today.
+- Description: The description of the move. The keyword values can be
+  substituted using the name surrounded by braces ('{' and '}').
+- Lines: The list of template lines.
+- Active
+
+A wizard to create moved base on templates is available in the *Entries* menu.
+The templates are also available as actions when opening a journal.
+
+Move Template Keywords
+**********************
+
+The keywords define the values asked to user to create the move based on the
+template. The fields are:
+
+- Name
+- String: The label used in the wizard form.
+- Sequence: The sequence used to order the fields in the wizard form.
+- Type:
+
+  - *Char*
+  - *Numeric*
+  - *Date*
+  - *Party*
+
+- Required
+- Digits: Only for numeric keyword.
+
+Move Line Template
+******************
+
+- Operation: *Debit* or *Credit*
+- Amount: An expression that can use any keywords to compute the amount.
+- Account
+- Party: Only for account that requires a party.
+- Description
+- Taxes: The list of template tax lines
+
+Tax Line Template
+*****************
+
+- Amount: An expression that can use any keywords to compute the amount.
+- Code: The tax code to use.
+- Tax
diff --git a/fiscalyear.py b/fiscalyear.py
index f98d0b1..0eafef8 100644
--- a/fiscalyear.py
+++ b/fiscalyear.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 dateutil.relativedelta import relativedelta
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.wizard import Wizard, StateView, StateTransition, StateAction, \
@@ -231,12 +231,11 @@ class FiscalYear(ModelSQL, ModelView):
                 return None
         return fiscalyears[0].id
 
-    def _process_account(self, account):
-        '''
-        Process account for a fiscal year closed
-        '''
-        Currency = Pool().get('currency.currency')
-        Deferral = Pool().get('account.account.deferral')
+    def get_deferral(self, account):
+        'Computes deferrals for accounts'
+        pool = Pool()
+        Currency = pool.get('currency.currency')
+        Deferral = pool.get('account.account.deferral')
 
         if account.kind == 'view':
             return
@@ -245,12 +244,12 @@ class FiscalYear(ModelSQL, ModelView):
                 self.raise_user_error('account_balance_not_zero',
                         error_args=(account.rec_name,))
         else:
-            Deferral.create([{
-                        'account': account.id,
-                        'fiscalyear': self.id,
-                        'debit': account.debit,
-                        'credit': account.credit,
-                        }])
+            deferral = Deferral()
+            deferral.account = account
+            deferral.fiscalyear = self
+            deferral.debit = account.debit
+            deferral.credit = account.credit
+            return deferral
 
     @classmethod
     @ModelView.button
@@ -261,7 +260,9 @@ class FiscalYear(ModelSQL, ModelView):
         pool = Pool()
         Period = pool.get('account.period')
         Account = pool.get('account.account')
+        Deferral = pool.get('account.account.deferral')
 
+        deferrals = []
         for fiscalyear in fiscalyears:
             if cls.search([
                         ('end_date', '<=', fiscalyear.start_date),
@@ -270,8 +271,8 @@ class FiscalYear(ModelSQL, ModelView):
                         ]):
                 cls.raise_user_error('close_error', (fiscalyear.rec_name,))
 
-            #First close the fiscalyear to be sure
-            #it will not have new period created between.
+            # First close the fiscalyear to be sure
+            # it will not have new period created between.
             cls.write([fiscalyear], {
                 'state': 'close',
                 })
@@ -285,8 +286,9 @@ class FiscalYear(ModelSQL, ModelView):
                 accounts = Account.search([
                         ('company', '=', fiscalyear.company.id),
                         ])
-            for account in accounts:
-                fiscalyear._process_account(account)
+                deferrals += filter(None, (fiscalyear.get_deferral(a)
+                        for a in accounts))
+        Deferral.save(deferrals)
 
     @classmethod
     @ModelView.button
@@ -315,7 +317,11 @@ class FiscalYear(ModelSQL, ModelView):
 
     @classmethod
     def search_rec_name(cls, name, clause):
-        return ['OR',
+        if clause[1].startswith('!') or clause[1].startswith('not '):
+            bool_op = 'AND'
+        else:
+            bool_op = 'OR'
+        return [bool_op,
             ('code',) + tuple(clause[1:]),
             (cls._rec_name,) + tuple(clause[1:]),
             ]
@@ -326,6 +332,8 @@ class BalanceNonDeferralStart(ModelView):
     __name__ = 'account.fiscalyear.balance_non_deferral.start'
     fiscalyear = fields.Many2One('account.fiscalyear', 'Fiscal Year',
         required=True, domain=[('state', '=', 'open')])
+    company = fields.Function(fields.Many2One('company.company', 'Company'),
+        'on_change_with_company')
     journal = fields.Many2One('account.journal', 'Journal', required=True,
         domain=[
             ('type', '=', 'situation'),
@@ -340,16 +348,23 @@ class BalanceNonDeferralStart(ModelView):
         required=True,
         domain=[
             ('kind', '!=', 'view'),
-            ('company', '=', Eval('context', {}).get('company', -1)),
+            ('company', '=', Eval('company', -1)),
             ('deferral', '=', True),
-            ])
+            ],
+        depends=['company'])
     debit_account = fields.Many2One('account.account', 'Debit Account',
         required=True,
         domain=[
             ('kind', '!=', 'view'),
-            ('company', '=', Eval('context', {}).get('company', -1)),
+            ('company', '=', Eval('company', -1)),
             ('deferral', '=', True),
-            ])
+            ],
+        depends=['company'])
+
+    @fields.depends('fiscalyear')
+    def on_change_with_company(self, name=None):
+        if self.fiscalyear:
+            return self.fiscalyear.company.id
 
 
 class BalanceNonDeferral(Wizard):
@@ -358,23 +373,25 @@ class BalanceNonDeferral(Wizard):
     start = StateView('account.fiscalyear.balance_non_deferral.start',
         'account.fiscalyear_balance_non_deferral_start_view_form', [
             Button('Cancel', 'end', 'tryton-cancel'),
-            Button('Ok', 'balance', 'tryton-ok', default=True),
+            Button('OK', 'balance', 'tryton-ok', default=True),
             ])
     balance = StateAction('account.act_move_line_form')
 
     def get_move_line(self, account):
         pool = Pool()
         Line = pool.get('account.move.line')
-        if account.company.currency.is_zero(account.balance):
+        # Don't use account.balance because we need the non-commulated balance
+        balance = account.debit - account.credit
+        if account.company.currency.is_zero(balance):
             return
         line = Line()
         line.account = account
-        if account.balance >= 0:
-            line.credit = abs(account.balance)
+        if balance >= 0:
+            line.credit = abs(balance)
             line.debit = 0
         else:
             line.credit = 0
-            line.debit = abs(account.balance)
+            line.debit = abs(balance)
         return line
 
     def get_counterpart_line(self, amount):
diff --git a/fiscalyear.xml b/fiscalyear.xml
index 9ad5f03..bba87fd 100644
--- a/fiscalyear.xml
+++ b/fiscalyear.xml
@@ -53,7 +53,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="global_p" eval="True"/>
         </record>
         <record model="ir.rule" id="rule_fiscalyear1">
-            <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_fiscalyear"/>
         </record>
 
diff --git a/general_journal.odt b/general_journal.odt
index 2094ed3..f7d7733 100644
Binary files a/general_journal.odt and b/general_journal.odt differ
diff --git a/general_ledger.odt b/general_ledger.odt
index 885e623..011681e 100644
Binary files a/general_ledger.odt and b/general_ledger.odt differ
diff --git a/journal.py b/journal.py
index 833c58d..39e3a26 100644
--- a/journal.py
+++ b/journal.py
@@ -1,5 +1,7 @@
-#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 sql import Null
+
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.wizard import Wizard, StateTransition
 from trytond import backend
@@ -78,7 +80,7 @@ class JournalViewColumn(ModelSQL, ModelView):
     @staticmethod
     def order_sequence(tables):
         table, _ = tables[None]
-        return [table.sequence == None, table.sequence]
+        return [table.sequence == Null, table.sequence]
 
     @staticmethod
     def default_required():
@@ -97,7 +99,7 @@ class Journal(ModelSQL, ModelView):
     active = fields.Boolean('Active', select=True)
     type = fields.Selection('get_types', 'Type', required=True)
     view = fields.Many2One('account.journal.view', 'View')
-    update_posted = fields.Boolean('Allow cancelling moves')
+    update_posted = fields.Boolean('Allow updating posted moves')
     sequence = fields.Property(fields.Many2One('ir.sequence', 'Sequence',
             domain=[('code', '=', 'account.journal')],
             context={'code': 'account.journal'},
@@ -168,7 +170,11 @@ class Journal(ModelSQL, ModelView):
 
     @classmethod
     def search_rec_name(cls, name, clause):
-        return ['OR',
+        if clause[1].startswith('!') or clause[1].startswith('not '):
+            bool_op = 'AND'
+        else:
+            bool_op = 'OR'
+        return [bool_op,
             ('code',) + tuple(clause[1:]),
             (cls._rec_name,) + tuple(clause[1:]),
             ]
diff --git a/journal.xml b/journal.xml
index fb40439..3e7bf56 100644
--- a/journal.xml
+++ b/journal.xml
@@ -226,7 +226,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_journal_period_tree">
             <field name="name">Journals - Periods</field>
             <field name="res_model">account.journal.period</field>
-            <field name="domain">[('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]</field>
+            <field name="domain"
+                eval="[('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_journal_period_tree_view1">
             <field name="sequence" eval="10"/>
@@ -238,7 +240,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_journal_period_tree2">
             <field name="name">Journals - Periods</field>
             <field name="res_model">account.journal.period</field>
-            <field name="domain">[('state', '!=', 'close'), ('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]</field>
+            <field name="domain"
+                eval="[('state', '!=', 'close'), ('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_journal_period_tree2_view1">
             <field name="sequence" eval="10"/>
@@ -273,7 +277,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_journal_period_form">
             <field name="name">Journals - Periods</field>
             <field name="res_model">account.journal.period</field>
-            <field name="domain">[('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]</field>
+            <field name="domain"
+                eval="[('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_journal_period_form_view1">
             <field name="sequence" eval="10"/>
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 0547d97..987bc41 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -93,6 +93,10 @@ msgid "Wrong credit/debit values."
 msgstr ""
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr ""
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr ""
 
@@ -114,6 +118,10 @@ msgctxt "error:account.move.line:"
 msgid "You can not modify lines of move \"%s\" because it is already posted."
 msgstr ""
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr ""
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -139,7 +147,7 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
 
 msgctxt "error:account.move.reconciliation:"
@@ -153,10 +161,6 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -197,12 +201,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr ""
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr ""
 
@@ -240,6 +238,18 @@ msgid ""
 "\"%(fiscalyear)s\" is closed."
 msgstr ""
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Активен"
@@ -292,6 +302,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Отложени плащания"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr ""
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -457,6 +471,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "С отложено плащане"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr ""
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -809,6 +827,11 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Променено от"
 
+#, fuzzy
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Фирма"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr ""
@@ -889,8 +912,9 @@ msgctxt "field:account.journal,type:"
 msgid "Type"
 msgstr "Вид"
 
+#, fuzzy
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
+msgid "Allow updating posted moves"
 msgstr "Позволяване на отмяна на движение"
 
 msgctxt "field:account.journal,view:"
@@ -1065,6 +1089,11 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Променено от"
 
+#, fuzzy
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Фирма"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Създадено на"
@@ -1132,10 +1161,33 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Променено от"
 
+#, fuzzy
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Описание"
+
+#, fuzzy
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Сметка"
 
+#, fuzzy
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Сума"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr ""
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr ""
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Сума в допълнителна валута"
@@ -1242,6 +1294,74 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Променено от"
 
+#, fuzzy
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Фактури"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Сума"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Описание"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Движение"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Управление на партньор"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Условие за плащане"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Данъци"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1333,6 +1453,159 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Променено от"
 
+#, fuzzy
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Активен"
+
+#, fuzzy
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Фирма"
+
+#, fuzzy
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+#, fuzzy
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Дата"
+
+#, fuzzy
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Описание"
+
+#, fuzzy
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Дневник"
+
+#, fuzzy
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Ключови думи"
+
+#, fuzzy
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Транзакции"
+
+#, fuzzy
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Условие за плащане"
+
+#, fuzzy
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Условие за плащане"
+
+#, fuzzy
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
+#, fuzzy
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Период"
+
+#, fuzzy
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Шаблон"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Движение"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Условие за плащане"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Условие за плащане"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Задължителен"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Вид"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Вид"
@@ -1724,6 +1997,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Вид"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr ""
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Променено на"
@@ -1905,6 +2182,11 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Код"
 
+#, fuzzy
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Фирма"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Създадено на"
@@ -1941,6 +2223,56 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Променено от"
 
+#, fuzzy
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Сума"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Код"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Ред"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Условие за плащане"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Данък"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Фирма"
@@ -2226,6 +2558,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Вид"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr ""
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Променено на"
@@ -2278,6 +2614,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Правило за данък на доставчик"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr ""
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2302,6 +2642,10 @@ msgstr ""
 "Данък по подразбиране за ръчно кодиране на редове за движение\n"
 "за видове дневници: \"разход\" и \"приход\""
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr ""
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "За подреждане на вида на сметка"
@@ -2326,10 +2670,22 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "Втората валута"
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr "Показване само на публикувани движения"
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr ""
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr "Показване само на публикувани движения"
@@ -2399,6 +2755,12 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "За подреждане на данъците"
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr "Оставете празно за всички отворени финансови години"
@@ -2662,10 +3024,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Движение по сметка"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr ""
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Ред от движение по сметка"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr ""
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Запитване за отваряне на дневник"
@@ -2682,6 +3052,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Редове от съгласуване на движение по сметка"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr ""
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr ""
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Отваряне на хронологичен баланс"
@@ -2743,6 +3129,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Ред на данък"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr ""
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Правило за данък"
@@ -2888,6 +3278,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr ""
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Отваряне на сметка на движение"
@@ -3183,6 +3581,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Движения по сметка"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Дата на баланс"
@@ -3709,6 +4115,34 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Валиден"
 
+#, fuzzy
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Кредит"
+
+#, fuzzy
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Дебит"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Управление на партньор"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "И двата"
@@ -4283,7 +4717,7 @@ msgid "Cancel"
 msgstr "Отказ"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "Добре"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4292,7 +4726,7 @@ msgstr "Отказ"
 
 #, fuzzy
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "Добре"
 
 #, fuzzy
@@ -4308,6 +4742,16 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Отказ"
 
+#, fuzzy
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "Добре"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Отказване"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Отказ"
@@ -4332,6 +4776,26 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Съгласуване"
 
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Създаване"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Отказване"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Отказване"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Напред"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Отказ"
@@ -4419,5 +4883,5 @@ msgid "Update"
 msgstr "Обновяване"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "Добре"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index e9aee1c..0361568 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -12,17 +12,17 @@ msgstr "No podeu modificar els registres de comptes de tancament."
 
 msgctxt "error:account.account:"
 msgid "You can not delete account \"%s\" because it has move lines."
-msgstr "No podeu esborrar el compte \"%s\" perquè té apunts."
+msgstr "No podeu eliminar el compte \"%s\" perquè té apunts."
 
 msgctxt "error:account.account:"
 msgid "You can not delete accounts that have children."
-msgstr "No podeu esborrar comptes que tenen fills."
+msgstr "No podeu eliminar comptes que tenen fills."
 
 msgctxt "error:account.fiscalyear:"
 msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same post move sequence."
 msgstr ""
 "L'exercici fiscal \"%(first)s\" i \"%(second)s\" tenen la mateixa seqüència "
-"d'assentament confirmat."
+"d'assentament comptabilitzat."
 
 msgctxt "error:account.fiscalyear:"
 msgid "Fiscal year \"%(first)s\" and \"%(second)s\" overlap."
@@ -39,8 +39,8 @@ msgstr "El balanç del compte \"%s\" ha de ser zero."
 msgctxt "error:account.fiscalyear:"
 msgid "You can not change the post move sequence in fiscal year \"%s\"."
 msgstr ""
-"No podeu canviar la seqüència d'assentaments confirmats a l'exercici fiscal "
-"\"%s\"."
+"No podeu canviar la seqüència d'assentaments comptabilitzats a l'exercici "
+"fiscal \"%s\"."
 
 msgctxt "error:account.fiscalyear:"
 msgid ""
@@ -65,7 +65,7 @@ msgstr "No podeu crear un diari - període al període tancat \"%s\"."
 msgctxt "error:account.journal.period:"
 msgid "You can not modify/delete journal - period \"%s\" because it has moves."
 msgstr ""
-"No podeu modificar/esborrar el diari - període \"%s\" perquè té "
+"No podeu modificar/eliminar el diari - període \"%s\" perquè té "
 "assentaments."
 
 msgctxt "error:account.journal.period:"
@@ -105,6 +105,10 @@ msgid "Wrong credit/debit values."
 msgstr "Valors d'haver/deure erronis."
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr "El signe de la segona moneda és incorrecte."
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr "No podeu afegir/modificar apunts al diari període tancat \"%s\"."
 
@@ -126,7 +130,11 @@ msgctxt "error:account.move.line:"
 msgid "You can not modify lines of move \"%s\" because it is already posted."
 msgstr ""
 "No podeu modificar els apunts de l'assentament \"%s\" perquè ja està "
-"confirmat."
+"comptabilitzat."
+
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr "Signe de la segona moneda incorrecte."
 
 msgctxt "error:account.move.reconciliation:"
 msgid ""
@@ -159,10 +167,10 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
-"No podeu conciliar l'apunt \"%(line)s\" perquè el tercer \"%(party1)s\" és "
-"diferent de \"%(party2)s\"."
+"No podeu conciliar l'apunt \"%(line)s\" perquè el seu tercer \"%(party1)s\" "
+"és diferent de \"%(party2)s\"."
 
 msgctxt "error:account.move.reconciliation:"
 msgid "You can not reconcile line \"%s\" because it is not in valid state."
@@ -177,10 +185,6 @@ msgstr ""
 "Voleu utilitzar el període actual?"
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr "No es pot crear apunts de diferents empreses a l'assentament \"%s\"."
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -190,21 +194,21 @@ msgstr ""
 
 msgctxt "error:account.move:"
 msgid "You can not modify move \"%s\" because it is already posted."
-msgstr "No podeu modificar l'assentament \"%s\" perquè ja està confirmat."
+msgstr "No podeu modificar l'assentament \"%s\" perquè ja està comptabilitzat."
 
 msgctxt "error:account.move:"
 msgid "You can not post move \"%s\" because it is an unbalanced."
-msgstr "No podeu confirmar l'assentament \"% s\" perquè està desquadrat."
+msgstr "No podeu comptabilitzar l'assentament \"% s\" perquè està desquadrat."
 
 msgctxt "error:account.move:"
 msgid "You can not post move \"%s\" because it is empty."
-msgstr "No podeu confirmar l'assentament \"%s\" perquè està buit."
+msgstr "No podeu comptabilitzar l'assentament \"%s\" perquè està buit."
 
 msgctxt "error:account.move:"
 msgid "You can not set posted move \"%(move)s\" to draft in journal \"%(journal)s\"."
 msgstr ""
-"No podeu canviar a esborrany l'assentament confirmat \"%(move)s\" al diari "
-"\"%(journal)s\"."
+"No podeu canviar a esborrany l'assentament comptabilitzat \"%(move)s\" al "
+"diari \"%(journal)s\"."
 
 msgctxt "error:account.move:"
 msgid ""
@@ -227,14 +231,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr "Els períodes \"% (first)s\" i \"% (second)s\" se sobreposen."
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-"L'empresa de la seqüència \"%(sequence)s\" no coincideix amb l'empresa del "
-"període \"%(period)s\" a la que està assignada."
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr ""
 "Les dates del període \"%s\" estan fora de les dates del seu exercici "
@@ -254,7 +250,7 @@ msgid ""
 " already posted moves in the period."
 msgstr ""
 "No podeu canviar la seqüència d'assentaments confirmats del període \"%s\" "
-"perquè ja hi ha assentaments confirmats al període."
+"perquè ja hi ha assentaments comptabilitzats al període."
 
 msgctxt "error:account.period:"
 msgid ""
@@ -262,7 +258,7 @@ msgid ""
 "\"%(move)s\" in this period."
 msgstr ""
 "No podeu tancar el període \"%(period)s\" perquè hi ha assentaments no "
-"confirmats \"%(move)s\" en aquest període."
+"comptabilitzats \"%(move)s\" en aquest període."
 
 msgctxt "error:account.period:"
 msgid "You can not create a period on fiscal year \"%s\" because it is closed."
@@ -270,7 +266,7 @@ msgstr "No podeu crear un període a l'exercici fiscal \"%s\" perquè està tanc
 
 msgctxt "error:account.period:"
 msgid "You can not modify/delete period \"%s\" because it has moves."
-msgstr "No podeu modificar/esborrar el període \"%s\" perquè té assentaments."
+msgstr "No podeu modificar/eliminar el període \"%s\" perquè té assentaments."
 
 msgctxt "error:account.period:"
 msgid ""
@@ -280,6 +276,22 @@ msgstr ""
 "No podeu obrir el període \"%(period)s\" perquè el seu exercici fiscal "
 "\"%(fiscalyear)s\" està tancat."
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Actualitza preu unitat\" no es pot aplicar a l'impost \"%(template)s\" per"
+" què té pare."
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Actualitza preu unitat\" no es pot aplicar a l'impost \"%(template)s\" per"
+" què té pare."
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Actiu"
@@ -332,6 +344,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Pròrrogues"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Saldo en el llibre major"
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -496,6 +512,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Prorrogar"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Saldo en el llibre major"
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -794,7 +814,7 @@ msgstr "Períodes"
 
 msgctxt "field:account.fiscalyear,post_move_sequence:"
 msgid "Post Move Sequence"
-msgstr "Seqüència d'assentament confirmat"
+msgstr "Seqüència d'assentament comptabilitzat"
 
 msgctxt "field:account.fiscalyear,rec_name:"
 msgid "Name"
@@ -848,6 +868,10 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Usuari modificació"
 
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr "Compte haver"
@@ -925,7 +949,7 @@ msgid "Type"
 msgstr "Tipus"
 
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
+msgid "Allow updating posted moves"
 msgstr "Permetre cancel·lar assentaments"
 
 msgctxt "field:account.journal,view:"
@@ -1100,6 +1124,10 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Usuari modificació"
 
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Data creació"
@@ -1142,11 +1170,11 @@ msgstr "Període"
 
 msgctxt "field:account.move,post_date:"
 msgid "Post Date"
-msgstr "Data confirmació"
+msgstr "Data comptabilització"
 
 msgctxt "field:account.move,post_number:"
 msgid "Post Number"
-msgstr "Número confirmat"
+msgstr "Número comptabilització"
 
 msgctxt "field:account.move,rec_name:"
 msgid "Name"
@@ -1164,10 +1192,30 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Usuari modificació"
 
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Compte"
 
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Import"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr "Moneda de l'import"
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr "Decimals de la moneda de l'import"
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Import segona moneda"
@@ -1254,7 +1302,7 @@ msgstr "Segona moneda"
 
 msgctxt "field:account.move.line,second_currency_digits:"
 msgid "Second Currency Digits"
-msgstr "Decimals segona moneda"
+msgstr "Decimals de la segona moneda"
 
 msgctxt "field:account.move.line,state:"
 msgid "State"
@@ -1272,6 +1320,62 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Usuari modificació"
 
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Import"
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Data creació"
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Usuari creació"
+
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Assentament"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr "Operació"
+
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr "Tercer requerit"
+
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Impostos"
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Data modificació"
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Usuari modificació"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1298,7 +1402,7 @@ msgstr "ID"
 
 msgctxt "field:account.move.print_general_journal.start,posted:"
 msgid "Posted Move"
-msgstr "Assentament confirmat"
+msgstr "Assentament comptabilitzat"
 
 msgctxt "field:account.move.print_general_journal.start,to_date:"
 msgid "To Date"
@@ -1310,7 +1414,7 @@ msgstr "Import"
 
 msgctxt "field:account.move.reconcile_lines.writeoff,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimals de moneda"
+msgstr "Decimals de la moneda"
 
 msgctxt "field:account.move.reconcile_lines.writeoff,date:"
 msgid "Date"
@@ -1360,6 +1464,130 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Usuari modificació"
 
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Actiu"
+
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Data creació"
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Usuari creació"
+
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Data"
+
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Diari"
+
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Accions de teclat"
+
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Línies"
+
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Data modificació"
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Usuari modificació"
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Període"
+
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Plantilla"
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Data creació"
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Usuari creació"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr "Decimals"
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Assentament"
+
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Requerit"
+
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Seqüència"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr "Etiqueta"
+
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Tipus"
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Data modificació"
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Usuari modificació"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Tipus"
@@ -1374,7 +1602,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_aged_balance.start,posted:"
 msgid "Posted Move"
-msgstr "Assentament confirmat"
+msgstr "Assentament comptabilitzat"
 
 msgctxt "field:account.open_aged_balance.start,term1:"
 msgid "First Term"
@@ -1406,7 +1634,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_balance_sheet.start,posted:"
 msgid "Posted Move"
-msgstr "Assentament confirmat"
+msgstr "Assentament comptabilitzat"
 
 msgctxt "field:account.open_chart.start,fiscalyear:"
 msgid "Fiscal Year"
@@ -1418,7 +1646,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_chart.start,posted:"
 msgid "Posted Moves"
-msgstr "Assentaments confirmats"
+msgstr "Assentaments comptabilitzats"
 
 msgctxt "field:account.open_income_statement.start,company:"
 msgid "Company"
@@ -1438,7 +1666,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_income_statement.start,posted:"
 msgid "Posted Move"
-msgstr "Assentament confirmat"
+msgstr "Assentament comptabilitzat"
 
 msgctxt "field:account.open_income_statement.start,start_period:"
 msgid "Start Period"
@@ -1458,7 +1686,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_third_party_balance.start,posted:"
 msgid "Posted Move"
-msgstr "Assentament confirmat"
+msgstr "Assentament comptabilitzat"
 
 msgctxt "field:account.period,code:"
 msgid "Code"
@@ -1494,7 +1722,7 @@ msgstr "Nom"
 
 msgctxt "field:account.period,post_move_sequence:"
 msgid "Post Move Sequence"
-msgstr "Seqüència d'assentament confirmat"
+msgstr "Seqüència d'assentament comptabilitzat"
 
 msgctxt "field:account.period,rec_name:"
 msgid "Name"
@@ -1542,7 +1770,7 @@ msgstr "ID"
 
 msgctxt "field:account.print_general_ledger.start,posted:"
 msgid "Posted Move"
-msgstr "Assentament confirmat"
+msgstr "Assentament comptabilitzat"
 
 msgctxt "field:account.print_general_ledger.start,start_period:"
 msgid "Start Period"
@@ -1570,7 +1798,7 @@ msgstr "ID"
 
 msgctxt "field:account.print_trial_balance.start,posted:"
 msgid "Posted Move"
-msgstr "Assentament confirmat"
+msgstr "Assentament comptabilitzat"
 
 msgctxt "field:account.print_trial_balance.start,start_period:"
 msgid "Start Period"
@@ -1714,7 +1942,7 @@ msgstr "Pare"
 
 msgctxt "field:account.tax,rate:"
 msgid "Rate"
-msgstr "Ràtio"
+msgstr "Percentatge"
 
 msgctxt "field:account.tax,rec_name:"
 msgid "Name"
@@ -1736,6 +1964,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Tipus"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualitza preu unitat"
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Data modificació"
@@ -1916,6 +2148,10 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Codi"
 
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Data creació"
@@ -1952,6 +2188,46 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Usuari modificació"
 
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Import"
+
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Codi"
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Data creació"
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Usuari creació"
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Línia"
+
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Impost"
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Data modificació"
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Usuari modificació"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Empresa"
@@ -2214,7 +2490,7 @@ msgstr "Pare"
 
 msgctxt "field:account.tax.template,rate:"
 msgid "Rate"
-msgstr "Ràtio"
+msgstr "Percentatge"
 
 msgctxt "field:account.tax.template,rec_name:"
 msgid "Name"
@@ -2232,6 +2508,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Tipus"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualitza preu unitat"
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Data modificació"
@@ -2284,6 +2564,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Regla d'impost de proveïdor"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Només mostra el saldo en el llibre major."
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2306,6 +2590,10 @@ msgstr ""
 "Impost per defecte per a la codificació manual\n"
 "d'apunts per diaris de tipus: \"despeses\" i \"ingressos\"."
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Només mostra el saldo en el llibre major."
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Serveix per ordenar el tipus de compte."
@@ -2330,17 +2618,33 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "La segona moneda."
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Les paraules clau a substituir per valors s'identifiquen escrivint-les dins "
+"de claus ('{' i '}')."
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
-msgstr "Mostra només assentaments confirmats."
+msgstr "Mostra només assentaments comptabilitzats."
+
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr "Deixeu-lo buit per avui."
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Les paraules clau a substituir per valors s'identifiquen escrivint-les dins "
+"de claus ('{' i '}')."
 
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
-msgstr "Mostra només assentaments confirmats."
+msgstr "Mostra només assentaments comptabilitzats."
 
 msgctxt "help:account.open_balance_sheet.start,posted:"
 msgid "Show only posted move"
-msgstr "Mostra només assentaments confirmats."
+msgstr "Mostra només assentaments comptabilitzats."
 
 msgctxt "help:account.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
@@ -2348,31 +2652,31 @@ msgstr "Deixeu-lo buit per tots els exercicis fiscals oberts."
 
 msgctxt "help:account.open_chart.start,posted:"
 msgid "Show posted moves only"
-msgstr "Mostra només assentaments confirmats."
+msgstr "Mostra només assentaments comptabilitzats."
 
 msgctxt "help:account.open_income_statement.start,posted:"
 msgid "Show only posted move"
-msgstr "Mostra només assentaments confirmats."
+msgstr "Mostra només assentaments comptabilitzats."
 
 msgctxt "help:account.open_third_party_balance.start,posted:"
 msgid "Show only posted move"
-msgstr "Mostra només assentaments confirmats."
+msgstr "Mostra només assentaments comptabilitzats."
 
 msgctxt "help:account.print_general_ledger.start,empty_account:"
 msgid "With account without move"
-msgstr "Amb compte sense assentament"
+msgstr "Amb compte sense assentament."
 
 msgctxt "help:account.print_general_ledger.start,posted:"
 msgid "Show only posted move"
-msgstr "Mostra només assentaments confirmats."
+msgstr "Mostra només assentaments comptabilitzats."
 
 msgctxt "help:account.print_trial_balance.start,empty_account:"
 msgid "With account without move"
-msgstr "Amb compte sense assentament"
+msgstr "Amb compte sense assentament."
 
 msgctxt "help:account.print_trial_balance.start,posted:"
 msgid "Show only posted move"
-msgstr "Mostra només assentaments confirmats."
+msgstr "Mostra només assentaments comptabilitzats."
 
 msgctxt "help:account.tax,amount:"
 msgid "In company's currency"
@@ -2402,6 +2706,14 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Serveix per ordenar els impostos."
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+"Si es marca el preu unitat usat per càlculs d'impostos addicionals serà "
+"modificat per aquest impost."
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr "Deixeu-lo buit per tots els exercicis fiscals oberts."
@@ -2664,10 +2976,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Assentament comptable"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr "Cancel·la assentaments"
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Apunt comptable"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr "Plantilla d'apunt comptable"
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Demana el diari a obrir"
@@ -2684,6 +3004,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Línies de conciliació d'apunts comptables"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr "Plantilla d'assentament comptable"
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr "Crea assentament des de plantilla"
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr "Crea assentament des de plantilla"
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr "Paraula clau de plantilla d'assentament comptable"
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Obre balanç històric"
@@ -2744,6 +3080,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Línia d'impost"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de línia d'impost comptable"
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Regla d'impost"
@@ -2888,6 +3228,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr "Línies de conciliació"
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crea assentament des de plantilla"
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla d'assentament comptable"
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Obre compte de l'assentament"
@@ -3180,6 +3528,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Assentaments comptables"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crea assentament des de plantilla"
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla d'assentament comptable"
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Balanç general"
@@ -3470,7 +3826,7 @@ msgstr "Origen:"
 
 msgctxt "odt:account.move.general_journal:"
 msgid "Posted"
-msgstr "Confirmat"
+msgstr "Comptabilitzat"
 
 msgctxt "odt:account.move.general_journal:"
 msgid "Print Date:"
@@ -3682,7 +4038,7 @@ msgstr "Esborrany"
 
 msgctxt "selection:account.move,state:"
 msgid "Posted"
-msgstr "Confirmat"
+msgstr "Comptabilitzat"
 
 msgctxt "selection:account.move.line,move_state:"
 msgid "Draft"
@@ -3690,7 +4046,7 @@ msgstr "Esborrany"
 
 msgctxt "selection:account.move.line,move_state:"
 msgid "Posted"
-msgstr "Confirmat"
+msgstr "Comptabilitzat"
 
 msgctxt "selection:account.move.line,state:"
 msgid "Draft"
@@ -3700,6 +4056,30 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Correcte"
 
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Haver"
+
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Deure"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr "Text"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Data"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr "Numèric"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Tercer"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "Ambdós"
@@ -3980,6 +4360,22 @@ msgctxt "view:account.journal:"
 msgid "Journals"
 msgstr "Diaris"
 
+msgctxt "view:account.move.cancel.default:"
+msgid "Cancel Moves"
+msgstr "Cancel·la assentaments"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Template"
+msgstr "Plantilla d'apunt comptable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Templates"
+msgstr "Plantilles d'apunt comptable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Other Info"
+msgstr "Informació addicional"
+
 msgctxt "view:account.move.line:"
 msgid "Account Move Line"
 msgstr "Apunt comptable"
@@ -4020,6 +4416,30 @@ msgctxt "view:account.move.reconciliation:"
 msgid "Reconciliations"
 msgstr "Conciliacions"
 
+msgctxt "view:account.move.template.create.template:"
+msgid "Create Move from Template"
+msgstr "Crea assentament des de plantilla"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keyword"
+msgstr "Paraula clau de plantilla d'assentament comptable"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keywords"
+msgstr "Paraules clau de plantilla d'assentament comptable"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Template"
+msgstr "Plantilla d'assentament comptable"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Templates"
+msgstr "Plantilles d'assentament comptable"
+
+msgctxt "view:account.move.template:"
+msgid "Template"
+msgstr "Plantilla"
+
 msgctxt "view:account.move:"
 msgid "Account Move"
 msgstr "Assentament comptable"
@@ -4034,7 +4454,7 @@ msgstr "Esborrany"
 
 msgctxt "view:account.move:"
 msgid "Post"
-msgstr "Confirma"
+msgstr "Comptabilitza"
 
 msgctxt "view:account.open_aged_balance.start:"
 msgid "Open Aged Balance"
@@ -4128,6 +4548,14 @@ msgctxt "view:account.tax.group:"
 msgid "Tax Groups"
 msgstr "Grups d'impost"
 
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de línia d'impost comptable"
+
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Templates"
+msgstr "Plantilles de línia d'impost comptable"
+
 msgctxt "view:account.tax.line:"
 msgid "Account Tax Line"
 msgstr "Línia d'impost comptable"
@@ -4234,7 +4662,7 @@ msgstr "Actualitza el pla comptable"
 
 msgctxt "view:account.update_chart.succeed:"
 msgid "Update Chart of Accounts Succeed!"
-msgstr "Actualització del pla comptable realitzada correctament."
+msgstr "L'actualització del pla comptable s'ha realitzat correctament."
 
 msgctxt "view:party.party:"
 msgid "Account"
@@ -4261,7 +4689,7 @@ msgid "Cancel"
 msgstr "Cancel·la"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "Accepta"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4269,7 +4697,7 @@ msgid "Cancel"
 msgstr "Cancel·la"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "Accepta"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,end:"
@@ -4284,6 +4712,14 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Cancel·la"
 
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "D'acord"
+
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Cancel·la"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Cancel·la"
@@ -4308,6 +4744,22 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Concilia"
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Crea"
+
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Cancel·la"
+
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Cancel·la"
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Següent"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Cancel·la"
@@ -4393,5 +4845,5 @@ msgid "Update"
 msgstr "Actualitza"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "Accepta"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index d9993bd..82a72c7 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -93,6 +93,10 @@ msgid "Wrong credit/debit values."
 msgstr ""
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr ""
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr ""
 
@@ -114,6 +118,10 @@ msgctxt "error:account.move.line:"
 msgid "You can not modify lines of move \"%s\" because it is already posted."
 msgstr ""
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr ""
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -139,7 +147,7 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
 
 msgctxt "error:account.move.reconciliation:"
@@ -153,10 +161,6 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -197,12 +201,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr ""
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr ""
 
@@ -240,6 +238,18 @@ msgid ""
 "\"%(fiscalyear)s\" is closed."
 msgstr ""
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr ""
@@ -292,6 +302,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr ""
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr ""
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr ""
@@ -456,6 +470,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr ""
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr ""
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr ""
@@ -808,6 +826,10 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr ""
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr ""
@@ -885,7 +907,7 @@ msgid "Type"
 msgstr ""
 
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
+msgid "Allow updating posted moves"
 msgstr ""
 
 msgctxt "field:account.journal,view:"
@@ -1060,6 +1082,10 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr ""
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr ""
@@ -1124,10 +1150,30 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr ""
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr ""
 
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr ""
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr ""
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr ""
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr ""
@@ -1232,6 +1278,62 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr ""
+
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr ""
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr ""
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr ""
+
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr ""
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr ""
+
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr ""
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr ""
@@ -1320,6 +1422,130 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr ""
+
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr ""
+
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr ""
+
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr ""
+
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr ""
+
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr ""
@@ -1696,6 +1922,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr ""
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr ""
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr ""
@@ -1876,6 +2106,10 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr ""
 
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr ""
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr ""
@@ -1912,6 +2146,46 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr ""
@@ -2192,6 +2466,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr ""
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr ""
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr ""
@@ -2244,6 +2522,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr ""
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr ""
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2262,6 +2544,10 @@ msgid ""
 "for journal types: \"expense\" and \"revenue\""
 msgstr ""
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr ""
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr ""
@@ -2284,10 +2570,22 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr ""
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr ""
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr ""
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr ""
@@ -2356,6 +2654,12 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr ""
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr ""
@@ -2614,10 +2918,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr ""
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr ""
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr ""
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr ""
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr ""
@@ -2634,6 +2946,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr ""
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr ""
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr ""
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr ""
@@ -2694,6 +3022,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr ""
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr ""
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr ""
@@ -2838,6 +3170,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr ""
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr ""
@@ -3130,6 +3470,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr ""
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr ""
@@ -3650,6 +3998,30 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr ""
 
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr ""
+
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr ""
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr ""
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr ""
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr ""
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr ""
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr ""
@@ -4209,7 +4581,7 @@ msgid "Cancel"
 msgstr ""
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr ""
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4217,7 +4589,7 @@ msgid "Cancel"
 msgstr ""
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr ""
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,end:"
@@ -4232,6 +4604,14 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr ""
 
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr ""
+
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr ""
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr ""
@@ -4256,6 +4636,22 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr ""
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr ""
+
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr ""
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr ""
@@ -4341,5 +4737,5 @@ msgid "Update"
 msgstr ""
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 534806b..464ed60 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -110,6 +110,10 @@ msgid "Wrong credit/debit values."
 msgstr "Falsche Haben/Soll-Werte."
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr "Falsches Vorzeichen für Fremdwährung"
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr ""
 "In der geschlossenen Buchungsperiode \"%s\" können keine Zeilen mehr "
@@ -138,6 +142,10 @@ msgstr ""
 "Änderung von Buchungszeilen in Buchungssatz \"%s\" nicht möglich, da dieser "
 "bereits festgeschrieben ist."
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr ""
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -155,28 +163,30 @@ msgid ""
 "You can not reconcile line \"%(line)s\" because it's account \"%(account)s\""
 " is configured as not reconcilable."
 msgstr ""
-"Buchungszeile \"%(line)s\" kann nicht abgestimmt werden, weil das verwendete"
-" Konto \"%(account)s\" als nicht abstimmungsfähig konfiguriert ist."
+"Abstimmung von Buchungszeile \"%(line)s\" nicht möglich, weil das verwendete"
+" Konto \"%(account)s\" als nicht abstimmungsfähig konfiguriert ist"
 
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's account "
 "\"%(account1)s\" is different from \"%(account2)s\"."
 msgstr ""
-"Abstimmung von Zeile \"%(line)s\" nicht möglich, weil das verwendete Konto "
-"\"%(account1)s\" unterschiedlich von Konto \"%(account2)s\" ist."
+"Abstimmung von Buchungszeile \"%(line)s\" nicht möglich, weil das verwendete"
+" Konto \"%(account1)s\" unterschiedlich von Konto \"%(account2)s\" ist."
 
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
-"Abstimmung von Zeile \"%(line)s\" nicht möglich, weil die verwendete Partei "
-"\"%(party1)s\" unterschiedlich von Partei \"%(party2)s\" ist."
+"Abstimmung von Buchungszeile \"%(line)s\" nicht möglich, weil die verwendete"
+" Partei \"%(party1)s\" unterschiedlich von Partei \"%(party2)s\" ist"
 
 msgctxt "error:account.move.reconciliation:"
 msgid "You can not reconcile line \"%s\" because it is not in valid state."
-msgstr "Abstimmung von Zeile \"%s\" nicht möglich, weil sie nicht gültig ist."
+msgstr ""
+"Abstimmung von Buchungszeile \"%s\" nicht möglich, weil sie in keinem "
+"gültigen Status ist"
 
 msgctxt "error:account.move:"
 msgid ""
@@ -187,12 +197,6 @@ msgstr ""
 "Soll stattdessen der aktuelle Buchungszeitraum verwendet werden?"
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-"Erstellung von Buchungszeilen mit Konten unterschiedlicher Unternehmen in "
-"Buchungssatz \"%s\" nicht möglich."
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -243,15 +247,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr "Buchungsperioden \"%(first)s\" und \"%(second)s\" überschneiden sich."
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-"Das Unternehmen für Nummernkreis \"%(sequence)s\" stimmt nicht überein mit "
-"dem Unternehmen für Buchungsperiode \"%(period)s\", zu dem er zugeordnet "
-"ist."
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr ""
 "Die Datumsangaben für Buchungsperiode \"%s\" liegen außerhalb derer des "
@@ -264,7 +259,7 @@ msgstr "Keine Buchungsperiode eingetragen für \"%s\"."
 msgctxt "error:account.period:"
 msgid "Period \"%(first)s\" and \"%(second)s\" have the same sequence."
 msgstr ""
-"Für die Buchungsperioden \"%(first)s\" und \"%(second)s\" ist derselbe "
+"Für die Buchungszeiträume \"%(first)s\" und \"%(second)s\" ist derselbe "
 "Nummernkreis eingetragen."
 
 msgctxt "error:account.period:"
@@ -304,6 +299,22 @@ msgstr ""
 "Periode \"%(period)s\" kann nicht geöffnet werden, weil Geschäftsjahr "
 "\"%(fiscalyear)s\" geschlossen ist."
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Einzelpreis aktualisieren\" kann nicht für Steuer \"%(template)s\" gesetzt"
+" werden, weil sie eine untergeordnete Steuer ist"
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Einzelpreis aktualisieren\" kann nicht für Steuer \"%(template)s\" gesetzt"
+" werden, weil sie eine untergeordnete Steuer ist"
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Aktiv"
@@ -356,6 +367,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Saldenvorträge"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Kontenblattsaldo"
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -520,6 +535,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Saldenvortrag"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Kontenblattsaldo"
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -872,6 +891,10 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Unternehmen"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr "Habenkonto"
@@ -949,7 +972,7 @@ msgid "Type"
 msgstr "Typ"
 
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
+msgid "Allow updating posted moves"
 msgstr "Löschen von Buchungen erlauben"
 
 msgctxt "field:account.journal,view:"
@@ -978,7 +1001,7 @@ msgstr "Erstellt durch"
 
 msgctxt "field:account.journal.period,icon:"
 msgid "Icon"
-msgstr "Icon"
+msgstr "Symbol"
 
 msgctxt "field:account.journal.period,id:"
 msgid "ID"
@@ -1124,6 +1147,10 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Unternehmen"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Erstellungsdatum"
@@ -1188,10 +1215,30 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Konto"
 
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Betrag"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr "Währungsbetrag"
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr "Währungsbetrag Nachkommastellen"
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Fremdwährungsbetrag"
@@ -1296,6 +1343,62 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Konto"
+
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Betrag"
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Buchungssatz"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr "Vorgang"
+
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr "Partei erforderlich"
+
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Steuern"
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1384,6 +1487,130 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Zeitpunkt"
+
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Zeilen"
+
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Buchungszeitraum"
+
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Vorlage"
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr "Nachkommastellen"
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Buchungssatz"
+
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Erforderlich"
+
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr "Zeichenkette"
+
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Typ"
@@ -1760,6 +1987,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Typ"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Einzelpreis aktualisieren"
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Zuletzt geändert"
@@ -1940,6 +2171,10 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Kennziffer"
 
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Unternehmen"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Erstellungsdatum"
@@ -1976,6 +2211,46 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Betrag"
+
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Kennziffer"
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Zeile"
+
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Steuer"
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Unternehmen"
@@ -2256,6 +2531,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Typ"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Einzelpreis aktualisieren"
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Zuletzt geändert"
@@ -2308,6 +2587,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Steuerregel als Lieferant"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Nur Salden in Kontenblättern anzeigen"
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2328,6 +2611,10 @@ msgstr ""
 "Standardsteuer für manuell erstellte Buchungszeilen \n"
 "in Journalen vom Typ \"Aufwand\" und \"Ertrag\""
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Nur Salden in Kontenblättern anzeigen"
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Wird für die Reihenfolge der Kontotypen verwendet"
@@ -2353,10 +2640,26 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "Die Fremdwährung"
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Schlüsselwortersetzungen werden mit geschweiften Klammern ('{' and '}') "
+"eingegeben"
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr "Nur festgeschriebene Buchungen anzeigen"
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr "Für das heutige Datum leer lassen"
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Schlüsselwortersetzungen werden mit geschweiften Klammern ('{' and '}') "
+"eingegeben"
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr "Nur festgeschriebene Buchungen anzeigen"
@@ -2425,6 +2728,14 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Wird für die Reihenfolge der Steuern verwendet"
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+"Bei Aktivierung wird der weiteren Steuerberechnung das Ergebnis dieser "
+"Steuer zugrundegelegt"
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr "Leer lassen für alle offenen Geschäftsjahre"
@@ -2570,7 +2881,7 @@ msgstr "Verbindlichkeiten"
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_liability_current_tax"
 msgid "Tax"
-msgstr "Verbindlichkeiten aus Steuern"
+msgstr "Steuer"
 
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_liability_long_term"
@@ -2630,7 +2941,7 @@ msgstr "Journal"
 
 msgctxt "model:account.journal,name:journal_cash"
 msgid "Cash"
-msgstr "Zahlung"
+msgstr "Kasse"
 
 msgctxt "model:account.journal,name:journal_expense"
 msgid "Expense"
@@ -2688,10 +2999,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Buchungssatz"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr "Buchungssätze Annullieren"
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Buchungszeile"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr "Buchungszeilenvorlage"
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Nachfrage Dialogbuchen"
@@ -2708,6 +3027,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Buchungssatz Abstimmung Zeilen"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr "Buchungssatzvorlage"
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr "Buchungssatz von Vorlage erstellen"
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr "Buchungssatz von Vorlage erstellen"
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr "Schlüsselwort Buchungssatzvorlage"
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Fälligkeitsliste öffnen"
@@ -2768,6 +3103,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Steuer Zeile"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr "Steuerkontozeilenvorlage"
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Steuerregel"
@@ -2912,6 +3251,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr "Abstimmungszeilen"
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr "Buchungssatz von Vorlage erstellen"
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr "Buchungssatzvorlagen"
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Buchungssatz Konto öffnen"
@@ -3204,6 +3551,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Übersicht Buchungssätze"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr "Buchungssatz von Vorlage erstellen"
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr "Buchungssatzvorlagen"
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Bilanzbogen"
@@ -3724,6 +4079,30 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Gültig"
 
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Haben"
+
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Soll"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr "Zeichen"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Zeitpunkt"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr "Numerisch"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Partei"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "Beides"
@@ -4004,6 +4383,22 @@ msgctxt "view:account.journal:"
 msgid "Journals"
 msgstr "Journale"
 
+msgctxt "view:account.move.cancel.default:"
+msgid "Cancel Moves"
+msgstr "Buchungssätze Annullieren"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Template"
+msgstr "Buchungszeilenvorlage"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Templates"
+msgstr "Buchungszeilenvorlagen"
+
+msgctxt "view:account.move.line.template:"
+msgid "Other Info"
+msgstr "Sonstiges"
+
 msgctxt "view:account.move.line:"
 msgid "Account Move Line"
 msgstr "Buchungszeile"
@@ -4044,6 +4439,30 @@ msgctxt "view:account.move.reconciliation:"
 msgid "Reconciliations"
 msgstr "Abstimmungen"
 
+msgctxt "view:account.move.template.create.template:"
+msgid "Create Move from Template"
+msgstr "Buchungssatz von Vorlage erstellen"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keyword"
+msgstr "Schlüsselwort Buchungssatzvorlage"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keywords"
+msgstr "Schlüsselwörter Buchungssatzvorlagen"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Template"
+msgstr "Buchungssatzvorlage"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Templates"
+msgstr "Buchungssatzvorlagen"
+
+msgctxt "view:account.move.template:"
+msgid "Template"
+msgstr "Vorlage"
+
 msgctxt "view:account.move:"
 msgid "Account Move"
 msgstr "Buchungssatz"
@@ -4152,6 +4571,14 @@ msgctxt "view:account.tax.group:"
 msgid "Tax Groups"
 msgstr "Steuergruppen"
 
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Template"
+msgstr "Steuerkontozeilenvorlage"
+
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Templates"
+msgstr "Steuerkontozeilenvorlagen"
+
 msgctxt "view:account.tax.line:"
 msgid "Account Tax Line"
 msgstr "Steuerkontozeile"
@@ -4285,7 +4712,7 @@ msgid "Cancel"
 msgstr "Abbrechen"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "OK"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4293,7 +4720,7 @@ msgid "Cancel"
 msgstr "Abbrechen"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "OK"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,end:"
@@ -4308,6 +4735,14 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Abbrechen"
 
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "OK"
+
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Abbrechen"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Abbrechen"
@@ -4332,6 +4767,22 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Abstimmen"
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Erstellen"
+
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Weiter"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Abbrechen"
@@ -4417,5 +4868,5 @@ msgid "Update"
 msgstr "Aktualisieren"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "OK"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 60aa92f..c6c449a 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -104,6 +104,10 @@ msgid "Wrong credit/debit values."
 msgstr "Valores de haber/debe erróneos."
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr "El signo de la segunda moneda es incorrecto."
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr "No puede añadir/modificar apuntes en el diario período cerrado «%s»."
 
@@ -127,6 +131,10 @@ msgid "You can not modify lines of move \"%s\" because it is already posted."
 msgstr ""
 "No puede modificar los apuntes del asiento «%s» porque ya está confirmado."
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr "El signo de la segunda moneda es incorrecto"
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -158,7 +166,7 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
 "No puede conciliar el apunte «%(line)s» porque la entidad «%(party1)s» es "
 "diferente de «%(party2)s»."
@@ -177,12 +185,6 @@ msgstr ""
 "¿Utilizar el período actual?"
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-"No puede crear líneas de las cuentas de diferentes empresas en el asiento "
-"«%s»."
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -229,14 +231,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr "Los períodos «%(first)s» y «%(second)s» se superponen."
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-"La empresa de la secuencia «%(sequence)s» no coincide con la empresa del "
-"período «%(period)s» a la que está asignada."
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr ""
 "Las fechas del período «%s» están fuera de las fechas de su año fiscal."
@@ -281,6 +275,22 @@ msgstr ""
 "No puede abrir el período «%(period)s» porque su año fiscal «%(fiscalyear)s»"
 " está cerrado."
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"«Actualiza precio unitario» no puede ser establecido en el impuesto "
+"«%(template)s» que tiene un padre."
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"«Actualiza precio unitario» no puede ser establecido en el impuesto "
+"«%(template)s» que tiene un padre."
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Activo"
@@ -319,7 +329,7 @@ msgstr "Moneda"
 
 msgctxt "field:account.account,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.account,debit:"
 msgid "Debit"
@@ -333,6 +343,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Cierres"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Saldo en el libro mayor"
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -451,7 +465,7 @@ msgstr "Haber"
 
 msgctxt "field:account.account.deferral,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.account.deferral,debit:"
 msgid "Debit"
@@ -497,6 +511,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Cierre"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Saldo en el libro mayor"
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -599,7 +617,7 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.account.type,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.account.type,display_balance:"
 msgid "Display Balance"
@@ -849,6 +867,10 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr "Cuenta crédito"
@@ -926,8 +948,8 @@ msgid "Type"
 msgstr "Tipo"
 
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
-msgstr "Permitir cancelar asientos"
+msgid "Allow updating posted moves"
+msgstr "Permitir la actualización de asientos confirmados"
 
 msgctxt "field:account.journal,view:"
 msgid "View"
@@ -1101,6 +1123,10 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Fecha creación"
@@ -1165,10 +1191,30 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Cuenta"
 
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr "Importe moneda"
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr "Decimales de importe moneda"
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Importe moneda secundaria"
@@ -1187,7 +1233,7 @@ msgstr "Haber"
 
 msgctxt "field:account.move.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.move.line,date:"
 msgid "Effective Date"
@@ -1255,7 +1301,7 @@ msgstr "Segunda moneda"
 
 msgctxt "field:account.move.line,second_currency_digits:"
 msgid "Second Currency Digits"
-msgstr "Decimales moneda secundaria"
+msgstr "Decimales de moneda secundaria"
 
 msgctxt "field:account.move.line,state:"
 msgid "State"
@@ -1273,6 +1319,62 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Movimiento"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr "Operación"
+
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Entidad"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr "Entidad requerida"
+
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1311,7 +1413,7 @@ msgstr "Importe"
 
 msgctxt "field:account.move.reconcile_lines.writeoff,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.move.reconcile_lines.writeoff,date:"
 msgid "Date"
@@ -1361,6 +1463,130 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Palabras clave"
+
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Período"
+
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Plantilla"
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr "Decimales"
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Movimiento"
+
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Requerido"
+
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr "Descripción"
+
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Tipo"
@@ -1587,7 +1813,7 @@ msgstr "Cuenta"
 
 msgctxt "field:account.reconcile.show,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.reconcile.show,date:"
 msgid "Date"
@@ -1667,7 +1893,7 @@ msgstr "Signo del impuesto de la nota de crédito"
 
 msgctxt "field:account.tax,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.tax,description:"
 msgid "Description"
@@ -1737,6 +1963,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Tipo"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualiza precio unitario"
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Fecha modificación"
@@ -1771,7 +2001,7 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.tax.code,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.tax.code,description:"
 msgid "Description"
@@ -1917,6 +2147,10 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Código"
 
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Fecha creación"
@@ -1927,7 +2161,7 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.tax.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
 
 msgctxt "field:account.tax.line,id:"
 msgid "ID"
@@ -1953,6 +2187,46 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Línea"
+
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Empresa"
@@ -2233,6 +2507,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Tipo"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualiza precio unitario"
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Fecha modificación"
@@ -2285,6 +2563,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Regla de impuesto de proveedor"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Mostrar saldo solo en el informe del libro mayor"
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2307,6 +2589,10 @@ msgstr ""
 "Impuesto por defecto para la codificación manual\n"
 "de líneas de asientos para diarios de tipo: «gastos» e «ingresos»."
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Mostrar saldo solo en el informe del libro mayor"
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Usar para ordenar el tipo de cuenta."
@@ -2331,10 +2617,26 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "La segunda moneda"
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Las palabras clave a sustituir por valores se identifican escribiéndolas "
+"entre llaves ('{' y '}')"
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr "Muestra sólo asientos confirmados."
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr "Dejar vacío para hoy"
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"La palabra clave a sustituir por valores se identifica escribiéndola entre "
+"llaves ('{' y '}')"
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr "Muestra sólo asientos confirmados."
@@ -2403,6 +2705,14 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Usar para ordenar los impuestos."
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+"Si está marcado, entonces el precio unitario para posteriores cálculos de "
+"impuesto será modificado por este impuesto"
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr "Dejarlo vacío para abrir todos los ejercicios fiscales."
@@ -2668,10 +2978,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Asiento contable"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr "Cancelar asientos"
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Línea de asiento contable"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr "Plantilla de línea de asiento contable"
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Solicitar el diario a abrir"
@@ -2688,6 +3006,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Líneas de conciliación de líneas de asientos contables"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr "Plantilla de asiento contable"
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr "Plantilla de asiento contable - Palabra clave"
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Abrir balance histórico"
@@ -2748,6 +3082,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Línea de impuesto"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de línea de impuesto contable"
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Regla de impuesto"
@@ -2770,11 +3108,11 @@ msgstr "Plantilla de cuenta de impuesto"
 
 msgctxt "model:account.update_chart.start,name:"
 msgid "Update Chart"
-msgstr "Actualizar plan contable"
+msgstr "Actualizar Plan contable"
 
 msgctxt "model:account.update_chart.succeed,name:"
 msgid "Update Chart"
-msgstr "Actualizar plan contable"
+msgstr "Actualizar Plan contable"
 
 msgctxt "model:ir.action,name:"
 msgid "Payable Lines"
@@ -2826,7 +3164,7 @@ msgstr "Crear asiento de regularización"
 
 msgctxt "model:ir.action,name:act_cancel_moves"
 msgid "Cancel Moves"
-msgstr "Cancela asientos"
+msgstr "Cancelar asientos"
 
 msgctxt "model:ir.action,name:act_close_fiscalyear"
 msgid "Close Fiscal Year"
@@ -2892,6 +3230,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr "Líneas de conciliación"
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla de asiento contable"
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Abrir cuenta del asiento"
@@ -3006,7 +3352,7 @@ msgstr "Balance de sumas y saldos"
 
 msgctxt "model:ir.action,name:wizard_create_chart"
 msgid "Create Chart of Accounts from Template"
-msgstr "Crear plan contable desde plantilla"
+msgstr "Crear Plan contable desde plantilla"
 
 msgctxt "model:ir.action,name:wizard_open_aged_balance"
 msgid "Open Aged Balance"
@@ -3038,7 +3384,7 @@ msgstr "Imprimir balance de sumas y saldos"
 
 msgctxt "model:ir.action,name:wizard_update_chart"
 msgid "Update Chart of Accounts from Template"
-msgstr "Actualizar plan contable desde plantilla"
+msgstr "Actualizar Plan contable desde plantilla"
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_move_line_payable_receivable_domain_all"
@@ -3134,7 +3480,7 @@ msgstr "Abrir plan códigos de impuesto"
 
 msgctxt "model:ir.ui.menu,name:menu_create_chart"
 msgid "Create Chart of Accounts from Template"
-msgstr "Crear plan contable desde plantilla"
+msgstr "Crear Plan contable desde plantilla"
 
 msgctxt "model:ir.ui.menu,name:menu_entries"
 msgid "Entries"
@@ -3184,6 +3530,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Asientos contables"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla de asiento contable"
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Balance general"
@@ -3278,7 +3632,7 @@ msgstr "Balance de tercero"
 
 msgctxt "model:ir.ui.menu,name:menu_update_chart"
 msgid "Update Chart of Accounts from Template"
-msgstr "Actualizar plan contable desde plantilla"
+msgstr "Actualizar Plan contable desde plantilla"
 
 msgctxt "model:ir.ui.menu,name:menuitem_account_configuration"
 msgid "Account Configuration"
@@ -3478,7 +3832,7 @@ msgstr "Confirmado"
 
 msgctxt "odt:account.move.general_journal:"
 msgid "Print Date:"
-msgstr "Fecha impresión:"
+msgstr "Fecha de impresión:"
 
 msgctxt "odt:account.move.general_journal:"
 msgid "To Date:"
@@ -3704,6 +4058,30 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Válido"
 
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Haber"
+
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Debe"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr "Texto"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr "Numérico"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Entidad"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "Ambos"
@@ -3984,6 +4362,22 @@ msgctxt "view:account.journal:"
 msgid "Journals"
 msgstr "Diarios"
 
+msgctxt "view:account.move.cancel.default:"
+msgid "Cancel Moves"
+msgstr "Cancelar asientos"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Template"
+msgstr "Plantilla de línea de asiento contable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Templates"
+msgstr "Plantillas de línea de asiento contable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Other Info"
+msgstr "Información adicional"
+
 msgctxt "view:account.move.line:"
 msgid "Account Move Line"
 msgstr "Línea de asiento contable"
@@ -4024,6 +4418,30 @@ msgctxt "view:account.move.reconciliation:"
 msgid "Reconciliations"
 msgstr "Conciliaciones"
 
+msgctxt "view:account.move.template.create.template:"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keyword"
+msgstr "Plantilla de asiento contable - Palabra clave"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keywords"
+msgstr "Plantilla de asiento contable - Palabras clave"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Template"
+msgstr "Plantilla de asiento contable"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Templates"
+msgstr "Plantillas de asiento contable"
+
+msgctxt "view:account.move.template:"
+msgid "Template"
+msgstr "Plantilla"
+
 msgctxt "view:account.move:"
 msgid "Account Move"
 msgstr "Asiento contable"
@@ -4132,6 +4550,14 @@ msgctxt "view:account.tax.group:"
 msgid "Tax Groups"
 msgstr "Grupos de impuesto"
 
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de línea de impuesto contable"
+
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Templates"
+msgstr "Plantillas de línea de impuesto contable"
+
 msgctxt "view:account.tax.line:"
 msgid "Account Tax Line"
 msgstr "Línea de impuesto contable"
@@ -4230,11 +4656,11 @@ msgstr "Impuestos"
 
 msgctxt "view:account.update_chart.start:"
 msgid "Update Chart of Accounts"
-msgstr "Actualizar plan contable"
+msgstr "Actualizar Plan contable"
 
 msgctxt "view:account.update_chart.succeed:"
 msgid "Update Chart of Accounts"
-msgstr "Actualizar plan contable"
+msgstr "Actualizar Plan contable"
 
 msgctxt "view:account.update_chart.succeed:"
 msgid "Update Chart of Accounts Succeed!"
@@ -4265,7 +4691,7 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4273,7 +4699,7 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,end:"
@@ -4288,6 +4714,14 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Cancelar"
@@ -4312,6 +4746,22 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Conciliar"
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Crear"
+
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Siguiente"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
@@ -4397,5 +4847,5 @@ msgid "Update"
 msgstr "Actualizar"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 41fb1fb..72ced5c 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -107,6 +107,10 @@ msgid "Wrong credit/debit values."
 msgstr "Valores de haber/debe incorrectos!"
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr "Signo errado de segunda moneda."
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr ""
 "No puede añadir/modificar líneas en un libro diario con período cerrado!"
@@ -135,6 +139,10 @@ msgstr ""
 "No puede modificar las líneas del asiento \"%s\" porque estan "
 "contabilizadas."
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr "signo errado de segunda moneda "
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -166,10 +174,10 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
 "No puede conciliar la línea \"%(line)s\" porque el tercero \"%(party1)s\" es"
-" diferente del tercero \"%(party2)s\"."
+" diferente del tercero \"%(party2)s\""
 
 msgctxt "error:account.move.reconciliation:"
 msgid "You can not reconcile line \"%s\" because it is not in valid state."
@@ -184,12 +192,6 @@ msgstr ""
 "Desea usar el actual periodo?"
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-"No puede crear lineas con cuentas de diferentes compañias en el asiento "
-"\"%s\"."
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -237,14 +239,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr "Periodos \"%(first)s\" y \"%(second)s\" solapados."
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-"La secuencia de la compañia \"%(sequence)s\" no coincide con el periodo "
-"\"%(period)s\" a la cual esta asignada."
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr "Las fechas del periodo \"%s\" estan fuera del Año Fiscal. "
 
@@ -288,6 +282,22 @@ msgstr ""
 "No puede abrir el período \"%(period)s\" porque su año fiscal "
 "\"%(fiscalyear)s\" esta cerrado."
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Actualizar el Precio Unitario\" puede no estar configurado en el impuesto "
+"\"%(template)s\" el cual tiene un padre."
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Actualizar el Precio Unitario\" puede no estar configurado en el impuesto "
+"\"%(template)s\" el cual tiene un padre."
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Activo"
@@ -340,6 +350,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Diferidos"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Saldo en Libro Mayor"
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -504,6 +518,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Diferido"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Saldo en Libro Mayor"
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -856,6 +874,10 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Compañía"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr "Cuenta Crédito"
@@ -933,8 +955,8 @@ msgid "Type"
 msgstr "Tipo"
 
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
-msgstr "Permitir anular asientos"
+msgid "Allow updating posted moves"
+msgstr "Permitir actualizar asientos contabilizados"
 
 msgctxt "field:account.journal,view:"
 msgid "View"
@@ -1108,6 +1130,10 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Compañía"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Fecha de Creación"
@@ -1172,10 +1198,30 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Cuenta"
 
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Valor"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr ""
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr "Dígitos de Moneda"
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Valor en Segunda Moneda"
@@ -1280,6 +1326,62 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Valor"
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr "Operación"
+
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr "Tercero Requerido"
+
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1368,6 +1470,130 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Compañía"
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Libro Contable"
+
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Teclas"
+
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Período"
+
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Plantilla"
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr "Decimales"
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Requerido"
+
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr "Cadena"
+
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Tipo"
@@ -1744,6 +1970,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Tipo"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualizar Precio Unitario"
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Fecha de Modificación"
@@ -1924,6 +2154,10 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Código"
 
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Compañía"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Fecha de Creación"
@@ -1960,6 +2194,46 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Valor"
+
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Línea"
+
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Compañia"
@@ -2240,6 +2514,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Tipo"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualizar Precio Unitario"
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Fecha de Modificación"
@@ -2292,6 +2570,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Regla de Impuesto a Proveedor"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Visualizar solo el saldo en el informe de libro mayor"
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2314,6 +2596,10 @@ msgstr ""
 "Impuesto por defecto para la codificación manual\n"
 "de líneas de asientos para libros de tipo: \"gastos\" e \"ingresos\"."
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Visualizar solo el saldo en el informe de libro mayor"
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Usar para ordenar el tipo de cuenta."
@@ -2338,10 +2624,26 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "La segunda moneda."
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Las sustituciones de la palabras claves son identificados por llaves ('{' y "
+"'}')"
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr "Mostrar únicamente asientos contabilizados"
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr "Dejar vacío por hoy"
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Las sustituciones de la palabras claves son identificados por llaves ('{' y "
+"'}')"
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr "Mostrar únicamente asientos contabilizados"
@@ -2410,6 +2712,14 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Usar para ordenar los impuestos."
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+"Si es marcado entonces el precio unitario para el cálculo del impuesto será "
+"modificado por este impuesto. "
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr "Dejar vacío para abrir todos los años fiscales."
@@ -2674,10 +2984,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Asiento Contable"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr "Anular Asientos"
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Línea de Asiento"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr "Plantilla de Línea de Asiento"
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Abrir Libro Contable Pregunta"
@@ -2694,6 +3012,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Líneas Conciliación de Asiento"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr "Plantilla de Asiento"
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr "Crear Plantilla de Asiento"
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr "Crear Asiento desde Plantilla"
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr "Plantilla de Asiento Clave"
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Abrir Cartera Vencida"
@@ -2754,6 +3088,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Línea de Impuesto"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de Línea de Impuesto"
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Regla de Impuesto"
@@ -2898,6 +3236,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr "Conciliación de Líneas"
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crear Asiento desde Plantilla"
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla de Asiento"
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Abrir  Asiento Contable"
@@ -3128,7 +3474,7 @@ msgstr "Balance No-Diferido"
 
 msgctxt "model:ir.ui.menu,name:menu_charts"
 msgid "Charts"
-msgstr "Plan de Cuentas"
+msgstr "Balances en Cuentas"
 
 msgctxt "model:ir.ui.menu,name:menu_close_fiscalyear"
 msgid "Close Fiscal Year"
@@ -3190,6 +3536,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Asientos Contables"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crear Asiento desde Plantilla"
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla de Asiento"
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Estado de Situación Financiera"
@@ -3710,6 +4064,30 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Válido"
 
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Crédito"
+
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Débito"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr "Caracter"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr "Numerico"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Tercero"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "Ambos"
@@ -3990,6 +4368,22 @@ msgctxt "view:account.journal:"
 msgid "Journals"
 msgstr "Libros Contables"
 
+msgctxt "view:account.move.cancel.default:"
+msgid "Cancel Moves"
+msgstr "Anular Asientos"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Template"
+msgstr "Plantilla de Línea de Asiento"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Templates"
+msgstr ""
+
+msgctxt "view:account.move.line.template:"
+msgid "Other Info"
+msgstr "Info Adicional"
+
 msgctxt "view:account.move.line:"
 msgid "Account Move Line"
 msgstr "Línea de Asiento"
@@ -4030,6 +4424,31 @@ msgctxt "view:account.move.reconciliation:"
 msgid "Reconciliations"
 msgstr "Conciliaciones"
 
+msgctxt "view:account.move.template.create.template:"
+msgid "Create Move from Template"
+msgstr "Crear Asiento desde Plantilla"
+
+#, fuzzy
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keyword"
+msgstr "Plantilla de Asiento Clave"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keywords"
+msgstr ""
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Template"
+msgstr "Plantilla de Asiento"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Templates"
+msgstr "Plantillas de Asiento"
+
+msgctxt "view:account.move.template:"
+msgid "Template"
+msgstr "Plantilla"
+
 msgctxt "view:account.move:"
 msgid "Account Move"
 msgstr "Asiento Contable"
@@ -4138,6 +4557,14 @@ msgctxt "view:account.tax.group:"
 msgid "Tax Groups"
 msgstr "Grupos de Impuestos"
 
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de Línea de Impuesto"
+
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Templates"
+msgstr "Plantillas de Línea de Impuesto"
+
 msgctxt "view:account.tax.line:"
 msgid "Account Tax Line"
 msgstr "Cuenta de Línea de Impuesto"
@@ -4271,7 +4698,7 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4279,7 +4706,7 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,end:"
@@ -4294,6 +4721,14 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Cancelar"
@@ -4318,6 +4753,22 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Conciliar"
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Crear"
+
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Siguiente"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
@@ -4403,5 +4854,5 @@ msgid "Update"
 msgstr "Actualizar"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
diff --git a/locale/es_EC.po b/locale/es_EC.po
index db00874..7c6fccf 100644
--- a/locale/es_EC.po
+++ b/locale/es_EC.po
@@ -21,12 +21,12 @@ msgstr "No puede eliminar cuentas que tienen hijas."
 msgctxt "error:account.fiscalyear:"
 msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same post move sequence."
 msgstr ""
-"El año fiscal \"%(first)s\" y \"%(second)s\" tienen la misma secuencia de "
-"asiento confirmado."
+"Los años fiscales \"%(first)s\" y \"%(second)s\" tienen la misma secuencia "
+"de asiento contabilizado."
 
 msgctxt "error:account.fiscalyear:"
 msgid "Fiscal year \"%(first)s\" and \"%(second)s\" overlap."
-msgstr "El año fiscal \"%(first)s\" y \"%(second)s\" se superponen."
+msgstr "Los años fiscales \"%(first)s\" y \"%(second)s\" se superponen."
 
 msgctxt "error:account.fiscalyear:"
 msgid "No fiscal year defined for \"%s\"."
@@ -100,13 +100,17 @@ msgstr "Se requiere el Tercero en la línea \"%s\""
 
 msgctxt "error:account.move.line:"
 msgid "Party must not be set on line \"%s\""
-msgstr "El Tercero no debe ser establecido en la línea \"%s\""
+msgstr "El Tercero no se debe definir en la línea \"%s\""
 
 msgctxt "error:account.move.line:"
 msgid "Wrong credit/debit values."
 msgstr "Valores de crédito/débito erróneos."
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr "Signo de moneda secundaria incorrecto"
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr ""
 "No puede añadir/modificar líneas en el libro diario con período cerrado "
@@ -136,6 +140,10 @@ msgstr ""
 "No puede modificar las líneas del asiento \"%s\" porque ya está "
 "contabilizado."
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr "Signo de moneda secundaria incorrecto."
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -162,19 +170,19 @@ msgid ""
 "\"%(account1)s\" is different from \"%(account2)s\"."
 msgstr ""
 "No puede conciliar línea \"%(line)s\" porque la cuenta \"%(account1)s\" es "
-"diferente de la cuenta \"%(account2)s\"."
+"diferente de \"%(account2)s\"."
 
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
 "No puede conciliar la línea \"%(line)s\" porque el tercero \"%(party1)s\" es"
-" diferente del tercero \"%(party2)s\"."
+" diferente de \"%(party2)s\"."
 
 msgctxt "error:account.move.reconciliation:"
 msgid "You can not reconcile line \"%s\" because it is not in valid state."
-msgstr "No puede conciliar la línea \"%s\" porque no está en estado válido."
+msgstr "No puede conciliar la línea \"%s\" porque no está en un estado válido."
 
 msgctxt "error:account.move:"
 msgid ""
@@ -185,18 +193,12 @@ msgstr ""
 "¿Utilizar el período actual?"
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-"No puede crear líneas en cuentas de diferentes empresas en el asiento "
-"\"%s\"."
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
 msgstr ""
-"No puede crear los asientos \"%(move)s\" porque su fecha está fuera de su "
-"período."
+"No puede crear los asientos \"%(move)s\" porque la fecha se encuentra fuera "
+"del período."
 
 msgctxt "error:account.move:"
 msgid "You can not modify move \"%s\" because it is already posted."
@@ -208,12 +210,12 @@ msgstr "No puede contabilizar el asiento \"%s\" porque está descuadrado."
 
 msgctxt "error:account.move:"
 msgid "You can not post move \"%s\" because it is empty."
-msgstr "No puede confirmar el asiento \"%s\" porque está vacío."
+msgstr "No puede contabilizar el asiento \"%s\" porque está vacío."
 
 msgctxt "error:account.move:"
 msgid "You can not set posted move \"%(move)s\" to draft in journal \"%(journal)s\"."
 msgstr ""
-"No puede convertir el asiento contabilizado \"%(move)s\" a borrador en el "
+"No puede establecer a borrador el asiento contabilizado \"%(move)s\" en el "
 "libro diario \"%(journal)s\"."
 
 msgctxt "error:account.move:"
@@ -221,7 +223,7 @@ msgid ""
 "You can not set to draft move \"%(move)s\" because period \"%(period)s\" is "
 "closed."
 msgstr ""
-"No puede convertir a borrador el asiento \"%(move)s\" porque el período "
+"No puede establecer a borrador el asiento \"%(move)s\" porque el período "
 "\"%(period)s\" está cerrado."
 
 msgctxt "error:account.open_aged_balance:"
@@ -237,14 +239,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr "Los períodos \"%(first)s\" y \"%(second)s\" se superponen."
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-"La empresa de la secuencia \"%(sequence)s\" no coincide con la empresa del "
-"período \"%(period)s\" a la cual está asignada."
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr ""
 "Las fechas del período \"%s\" están fuera de las fechas de su año fiscal. "
@@ -289,6 +283,22 @@ msgstr ""
 "No puede abrir el período \"%(period)s\" porque su año fiscal "
 "\"%(fiscalyear)s\" está cerrado."
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Actualizar Precio Unitario\" no se puede establecer en el impuesto "
+"\"%(template)s\" el cual tiene un padre."
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Actualizar Precio Unitario\" no se puede establecer en el impuesto "
+"\"%(template)s\" el cual tiene un padre."
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Activo"
@@ -341,6 +351,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Diferidos"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Balance del Libro Mayor"
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -443,7 +457,7 @@ msgstr "Cuenta"
 
 msgctxt "field:account.account.deferral,balance:"
 msgid "Balance"
-msgstr "Saldo"
+msgstr "Balance"
 
 msgctxt "field:account.account.deferral,create_date:"
 msgid "Create Date"
@@ -505,6 +519,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Diferido"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Balance del Libro Mayor"
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -583,7 +601,7 @@ msgstr "Modificado por Usuario"
 
 msgctxt "field:account.account.type,amount:"
 msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
 
 msgctxt "field:account.account.type,balance_sheet:"
 msgid "Balance Sheet"
@@ -735,7 +753,7 @@ msgstr "Modificado por Usuario"
 
 msgctxt "field:account.create_chart.account,account_template:"
 msgid "Account Template"
-msgstr "Plantilla de cuenta"
+msgstr "Plantilla de Cuenta"
 
 msgctxt "field:account.create_chart.account,company:"
 msgid "Company"
@@ -857,6 +875,10 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr "Cuenta de Crédito"
@@ -934,8 +956,8 @@ msgid "Type"
 msgstr "Tipo"
 
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
-msgstr "Permitir cancelar asientos"
+msgid "Allow updating posted moves"
+msgstr "Permitir actualización de asientos contablizados"
 
 msgctxt "field:account.journal,view:"
 msgid "View"
@@ -1109,6 +1131,10 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Fecha de Creación"
@@ -1151,7 +1177,7 @@ msgstr "Período"
 
 msgctxt "field:account.move,post_date:"
 msgid "Post Date"
-msgstr "Fecha de Confirmación"
+msgstr "Fecha de Contabilización"
 
 msgctxt "field:account.move,post_number:"
 msgid "Post Number"
@@ -1173,13 +1199,33 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Cuenta"
 
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr "Modeda del Importe"
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr "Decimales de Modeda del Importe"
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
-msgstr "Valor en Segunda Moneda"
+msgstr "Importe en Moneda Secundaria"
 
 msgctxt "field:account.move.line,create_date:"
 msgid "Create Date"
@@ -1281,6 +1327,62 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr "Operación"
+
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr "Se Requiere el Tercero"
+
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1315,7 +1417,7 @@ msgstr "Fecha Final"
 
 msgctxt "field:account.move.reconcile_lines.writeoff,amount:"
 msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
 
 msgctxt "field:account.move.reconcile_lines.writeoff,currency_digits:"
 msgid "Currency Digits"
@@ -1369,6 +1471,130 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Libro Diario"
+
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Palabras clave"
+
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Período"
+
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Plantilla"
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr "Decimales"
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Requerido"
+
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr "Descripción"
+
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Tipo"
@@ -1635,7 +1861,7 @@ msgstr "Activo"
 
 msgctxt "field:account.tax,amount:"
 msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
 
 msgctxt "field:account.tax,childs:"
 msgid "Children"
@@ -1745,6 +1971,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Tipo"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualizar Precio Unitario"
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Fecha de Modificación"
@@ -1835,7 +2065,7 @@ msgstr "Períodos"
 
 msgctxt "field:account.tax.code.template,account:"
 msgid "Account Template"
-msgstr "Plantilla de cuenta"
+msgstr "Plantilla de Cuenta"
 
 msgctxt "field:account.tax.code.template,childs:"
 msgid "Children"
@@ -1919,12 +2149,16 @@ msgstr "Modificado por Usuario"
 
 msgctxt "field:account.tax.line,amount:"
 msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
 
 msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Código"
 
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Fecha de Creación"
@@ -1961,6 +2195,46 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Modificado por Usuario"
 
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Línea"
+
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Empresa"
@@ -2143,7 +2417,7 @@ msgstr "Plantilla de Cuenta"
 
 msgctxt "field:account.tax.template,amount:"
 msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
 
 msgctxt "field:account.tax.template,childs:"
 msgid "Children"
@@ -2241,6 +2515,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Tipo"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualizar Precio Unitario"
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Fecha de Modificación"
@@ -2293,18 +2571,22 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Regla de Impuesto de Proveedor"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Mostrar únicamente el balance en el informe del libro mayor"
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
 "to be reconciled."
-msgstr "Permite conciliar las líneas de asientos de esta cuenta."
+msgstr "Permite conciliar las líneas de asiento de esta cuenta."
 
 msgctxt "help:account.account,second_currency:"
 msgid ""
 "Force all moves for this account \n"
 "to have this secondary currency."
 msgstr ""
-"Fuerza el uso de la segunda moneda \n"
+"Fuerza el uso de esta moneda secundaria\n"
 "en todos los asientos de esta cuenta."
 
 msgctxt "help:account.account,taxes:"
@@ -2315,6 +2597,10 @@ msgstr ""
 "Impuesto por defecto para la codificación manual\n"
 "de líneas de asientos para libros diarios de tipo: \"gastos\" e \"ingresos\"."
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Mostrar únicamente el balance en el informe del libro mayor"
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Utilice para ordenar el tipo de cuenta."
@@ -2325,7 +2611,7 @@ msgstr "También conocido como Número de Folio"
 
 msgctxt "help:account.move.line,amount_second_currency:"
 msgid "The amount expressed in a second currency"
-msgstr "La cantidad expresada en la segunda moneda."
+msgstr "El importe expresado en la moneda secundaria"
 
 msgctxt "help:account.move.line,maturity_date:"
 msgid ""
@@ -2333,16 +2619,32 @@ msgid ""
 "You can put the limit date for the payment."
 msgstr ""
 "Este campo se utiliza en las líneas por pagar y por cobrar.\n"
-"Puede establecer la fecha límite para el pago."
+"Puede poner la fecha límite para el pago."
 
 msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "La segunda moneda"
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Las palabras clave a sustituir por valores se identifican escribiéndolas "
+"dentro de llaves ('{' y '}')."
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr "Muestra sólo asientos confirmados."
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr "Dejarlo vacío para hoy"
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Las palabras clave a sustituir por valores se identifican escribiéndolas "
+"dentro de llaves ('{' y '}')."
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr "Muestra sólo asientos confirmados."
@@ -2353,7 +2655,7 @@ msgstr "Muestra sólo asientos confirmados."
 
 msgctxt "help:account.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
-msgstr "Dejarlo vacío para todos los años fiscales abiertos."
+msgstr "Dejarlo vacío para todos los años fiscales abiertos"
 
 msgctxt "help:account.open_chart.start,posted:"
 msgid "Show posted moves only"
@@ -2411,14 +2713,22 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Utilice para ordenar los impuestos."
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+"Si está marcado, entonces el precio unitario para posteriores cálculos de "
+"impuesto será modificado por este impuesto"
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
-msgstr "Dejarlo vacío para abrir todos los años fiscales."
+msgstr "Dejarlo vacío para todos los años fiscales abiertos"
 
 msgctxt "help:account.tax.code.open_chart.start,periods:"
 msgid "Leave empty for all periods of all open fiscal year"
 msgstr ""
-"Dejarlo vacío para todos los períodos de todos los años fiscales abiertos."
+"Dejarlo vacío para todos los períodos de todos los años fiscales abiertos"
 
 msgctxt "help:account.tax.rule.line,origin_tax:"
 msgid ""
@@ -2567,7 +2877,7 @@ msgstr "A largo plazo"
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_minimal"
 msgid "Minimal Account Type Chart"
-msgstr "Plan de tipos de cuenta mínimo"
+msgstr "Plan de Tipos de Cuenta Mínimo"
 
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_off_balance"
@@ -2615,21 +2925,25 @@ msgctxt "model:account.journal,name:"
 msgid "Journal"
 msgstr "Libro Diario"
 
+#, fuzzy
 msgctxt "model:account.journal,name:journal_cash"
 msgid "Cash"
 msgstr "Efectivo"
 
+#, fuzzy
 msgctxt "model:account.journal,name:journal_expense"
 msgid "Expense"
 msgstr "Gastos"
 
+#, fuzzy
 msgctxt "model:account.journal,name:journal_revenue"
 msgid "Revenue"
 msgstr "Ingresos"
 
+#, fuzzy
 msgctxt "model:account.journal,name:journal_stock"
 msgid "Stock"
-msgstr "Existencias"
+msgstr "Stock"
 
 msgctxt "model:account.journal.period,name:"
 msgid "Journal - Period"
@@ -2675,10 +2989,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Asiento Contable"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr "Cancelar Asientos"
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Línea de Asiento Contable"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr "Plantilla de Línea de Asiento Contable"
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Solicitar el Libro Diario a Abrir"
@@ -2695,6 +3017,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Líneas de Conciliación de Asientos Contables"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr "Plantilla de Asiento Contable"
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr "Crear Asiento desde Plantilla"
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr "Crear Asiento desde Plantilla"
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr "Palabra clave de plantilla de asiento contable"
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Abrir Cartera Vencida"
@@ -2755,6 +3093,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Línea de Impuesto"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de Línea de Impuesto Contable"
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Regla de Impuesto"
@@ -2783,6 +3125,10 @@ msgctxt "model:account.update_chart.succeed,name:"
 msgid "Update Chart"
 msgstr "Actualizar Plan de Cuentas"
 
+msgctxt "model:ir.action,name:"
+msgid "Payable Lines"
+msgstr "Líneas por Pagar"
+
 msgctxt "model:ir.action,name:act_account_balance_sheet_tree"
 msgid "Balance Sheet"
 msgstr "Estado de Situación Financiera"
@@ -2801,7 +3147,7 @@ msgstr "Cuentas"
 
 msgctxt "model:ir.action,name:act_account_template_tree"
 msgid "Account Templates"
-msgstr "Plantillas de cuenta"
+msgstr "Plantillas de Cuenta"
 
 msgctxt "model:ir.action,name:act_account_tree"
 msgid "Accounts"
@@ -2813,7 +3159,7 @@ msgstr "Cuentas"
 
 msgctxt "model:ir.action,name:act_account_type_list"
 msgid "Account Types"
-msgstr "Tipos de cuenta"
+msgstr "Tipos de Cuenta"
 
 msgctxt "model:ir.action,name:act_account_type_template_tree"
 msgid "Account Type Templates"
@@ -2821,7 +3167,7 @@ msgstr "Plantillas de Tipo de Cuenta"
 
 msgctxt "model:ir.action,name:act_account_type_tree"
 msgid "Account Types"
-msgstr "Tipos de cuenta"
+msgstr "Tipos de Cuenta"
 
 msgctxt "model:ir.action,name:act_balance_non_deferral"
 msgid "Balance Non-Deferral"
@@ -2885,7 +3231,7 @@ msgstr "Asientos Contables"
 
 msgctxt "model:ir.action,name:act_move_line_form"
 msgid "Account Move Lines"
-msgstr "Líneas de Asientos Contables"
+msgstr "Líneas de Asiento Contable"
 
 msgctxt "model:ir.action,name:act_move_line_payable_receivable"
 msgid "Payable/Receivable Lines"
@@ -2895,6 +3241,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr "Líneas de Conciliación"
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crear Asiento desde Plantilla"
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla de Asiento Contable"
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Abrir Cuenta del Asiento"
@@ -3105,7 +3459,7 @@ msgstr "Cuentas"
 
 msgctxt "model:ir.ui.menu,name:menu_account_type_list"
 msgid "Account Types"
-msgstr "Tipos de cuenta"
+msgstr "Tipos de Cuenta"
 
 msgctxt "model:ir.ui.menu,name:menu_account_type_template_tree"
 msgid "Account Type Templates"
@@ -3165,7 +3519,7 @@ msgstr "Libros Diarios"
 
 msgctxt "model:ir.ui.menu,name:menu_journal_period_form"
 msgid "Close Journals - Periods"
-msgstr "Cerrar Libros Diarios- Períodos"
+msgstr "Cerrar Libros Diarios - Períodos"
 
 msgctxt "model:ir.ui.menu,name:menu_journal_period_tree"
 msgid "Journals - Periods"
@@ -3177,7 +3531,7 @@ msgstr "Libros Diarios - Períodos"
 
 msgctxt "model:ir.ui.menu,name:menu_journal_type_form"
 msgid "Journal Types"
-msgstr "Tipos de Libros Diarios"
+msgstr "Tipos de Libro Diario"
 
 msgctxt "model:ir.ui.menu,name:menu_journal_view_form"
 msgid "Journal Views"
@@ -3187,6 +3541,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Asientos Contables"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crear Asiento desde Plantilla"
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla de Asiento Contable"
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Estado de Situación Financiera"
@@ -3617,7 +3979,7 @@ msgstr "Ingresos"
 
 msgctxt "selection:account.account,kind:"
 msgid "Stock"
-msgstr "Existencias"
+msgstr "Stock"
 
 msgctxt "selection:account.account,kind:"
 msgid "View"
@@ -3645,7 +4007,7 @@ msgstr "Ingresos"
 
 msgctxt "selection:account.account.template,kind:"
 msgid "Stock"
-msgstr "Existencias"
+msgstr "Stock"
 
 msgctxt "selection:account.account.template,kind:"
 msgid "View"
@@ -3707,6 +4069,30 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Válido"
 
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Crédito"
+
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Débito"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr "Texto"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr "Numérico"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Tercero"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "Ambos"
@@ -3833,15 +4219,15 @@ msgstr "Plantilla de Tipo de Cuenta"
 
 msgctxt "view:account.account.type.template:"
 msgid "Account Types Templates"
-msgstr "Plantillas de Tipo de Cuenta"
+msgstr "Plantillas de Tipos de Cuenta"
 
 msgctxt "view:account.account.type:"
 msgid "Account Type"
-msgstr "Tipo de cuenta"
+msgstr "Tipo de Cuenta"
 
 msgctxt "view:account.account.type:"
 msgid "Account Types"
-msgstr "Tipos de cuenta"
+msgstr "Tipos de Cuenta"
 
 msgctxt "view:account.account.type:"
 msgid "Balance Sheet"
@@ -3987,6 +4373,22 @@ msgctxt "view:account.journal:"
 msgid "Journals"
 msgstr "Libros Diarios"
 
+msgctxt "view:account.move.cancel.default:"
+msgid "Cancel Moves"
+msgstr "Cancelar Asientos"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Template"
+msgstr "Plantilla de Línea de Asiento Contable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Templates"
+msgstr "Plantillas de Línea de Asiento Contable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Other Info"
+msgstr "Información Adicional"
+
 msgctxt "view:account.move.line:"
 msgid "Account Move Line"
 msgstr "Línea de Asiento Contable"
@@ -4027,6 +4429,30 @@ msgctxt "view:account.move.reconciliation:"
 msgid "Reconciliations"
 msgstr "Conciliaciones"
 
+msgctxt "view:account.move.template.create.template:"
+msgid "Create Move from Template"
+msgstr "Crear Asiento desde Plantilla"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keyword"
+msgstr "Palabra clave de plantilla de asiento contable"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keywords"
+msgstr "Palabra clave de plantilla de asiento contable"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Template"
+msgstr "Plantilla de Asiento Contable"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Templates"
+msgstr "Plantillas de Asiento Contable"
+
+msgctxt "view:account.move.template:"
+msgid "Template"
+msgstr "Plantilla"
+
 msgctxt "view:account.move:"
 msgid "Account Move"
 msgstr "Asiento Contable"
@@ -4049,7 +4475,7 @@ msgstr "Abrir Cartera Vencida"
 
 msgctxt "view:account.open_aged_balance.start:"
 msgid "Terms"
-msgstr "Plazos"
+msgstr "Términos"
 
 msgctxt "view:account.open_balance_sheet.start:"
 msgid "Open Balance Sheet"
@@ -4085,7 +4511,7 @@ msgstr "Imprimir Balance de Comprobación"
 
 msgctxt "view:account.reconcile.show:"
 msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
 
 msgctxt "view:account.reconcile.show:"
 msgid "Reconcile"
@@ -4129,12 +4555,20 @@ msgstr "Códigos de Impuesto"
 
 msgctxt "view:account.tax.group:"
 msgid "Tax Group"
-msgstr "Grupo de Impuestos"
+msgstr "Grupo de Impuesto"
 
 msgctxt "view:account.tax.group:"
 msgid "Tax Groups"
 msgstr "Grupos de Impuestos"
 
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de Línea de Impuesto Contable"
+
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Templates"
+msgstr "Plantillas de Línea de Impuesto Contable"
+
 msgctxt "view:account.tax.line:"
 msgid "Account Tax Line"
 msgstr "Línea de Impuesto Contable"
@@ -4157,7 +4591,7 @@ msgstr "Línea de Regla de Impuesto"
 
 msgctxt "view:account.tax.rule.line:"
 msgid "Tax Rule Lines"
-msgstr "Línea de Regla de Impuesto"
+msgstr "Líneas de Regla de Impuesto"
 
 msgctxt "view:account.tax.rule.template:"
 msgid "Tax Rule Template"
@@ -4268,7 +4702,7 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4276,7 +4710,7 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,end:"
@@ -4291,6 +4725,14 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Cancelar"
@@ -4315,6 +4757,22 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Conciliar"
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Crear"
+
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Siguiente"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
@@ -4400,5 +4858,5 @@ msgid "Update"
 msgstr "Actualizar"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 2c01c7b..73ea170 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -12,17 +12,17 @@ msgstr "No puede modificar los registros del cierre contable."
 
 msgctxt "error:account.account:"
 msgid "You can not delete account \"%s\" because it has move lines."
-msgstr "No puede borrar la cuenta \"%s\" porque tiene apuntes."
+msgstr "No puede eliminar la cuenta \"%s\" porque tiene apuntes."
 
 msgctxt "error:account.account:"
 msgid "You can not delete accounts that have children."
-msgstr "No puede borrar cuentas que tienen hijas."
+msgstr "No puede eliminar cuentas que tienen hijas."
 
 msgctxt "error:account.fiscalyear:"
 msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same post move sequence."
 msgstr ""
 "Los ejercicios fiscales \"%(first)s\" y \"%(second)s\" tienen la misma "
-"secuencia de asiento confirmado."
+"secuencia de asiento contabilizado."
 
 msgctxt "error:account.fiscalyear:"
 msgid "Fiscal year \"%(first)s\" and \"%(second)s\" overlap."
@@ -39,8 +39,8 @@ msgstr "El balance de la cuenta \"%s\" debe ser cero."
 msgctxt "error:account.fiscalyear:"
 msgid "You can not change the post move sequence in fiscal year \"%s\"."
 msgstr ""
-"No puede cambiar la secuencia de asientos confirmados en el ejercicio fiscal"
-" \"%s\"."
+"No puede cambiar la secuencia de asientos contabilizados en el ejercicio "
+"fiscal \"%s\"."
 
 msgctxt "error:account.fiscalyear:"
 msgid ""
@@ -65,7 +65,8 @@ msgstr "No puede crear un diario - período en el período cerrado \"%s\"."
 msgctxt "error:account.journal.period:"
 msgid "You can not modify/delete journal - period \"%s\" because it has moves."
 msgstr ""
-"No puede modificar/borrar el diario - período \"%s\" porque tiene asientos."
+"No puede modificar/eliminar el diario - período \"%s\" porque tiene "
+"asientos."
 
 msgctxt "error:account.journal.period:"
 msgid ""
@@ -105,6 +106,10 @@ msgid "Wrong credit/debit values."
 msgstr "Valores de haber/debe erróneos."
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr "El signo de la segunda moneda es incorrecto."
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr "No puede añadir/modificar apuntes en el diario período cerrado \"%s\"."
 
@@ -126,7 +131,12 @@ msgstr "No puede modificar el apunte \"%s\" porque ya está conciliado."
 msgctxt "error:account.move.line:"
 msgid "You can not modify lines of move \"%s\" because it is already posted."
 msgstr ""
-"No puede modificar los apuntes del asiento \"%s\" porque ya está confirmado."
+"No puede modificar los apuntes del asiento \"%s\" porque ya está "
+"contabilizado."
+
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr "Signo de segunda moneda incorrecto"
 
 msgctxt "error:account.move.reconciliation:"
 msgid ""
@@ -159,10 +169,10 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
-"No puede conciliar el apunte \"%(line)s\" porque el tercero \"%(party1)s\" "
-"es diferente de \"%(party2)s\"."
+"No puede conciliar el apunte \"%(line)s\" porque su tercero \"%(party1)s\" "
+"es distinto de \"%(party2)s\"."
 
 msgctxt "error:account.move.reconciliation:"
 msgid "You can not reconcile line \"%s\" because it is not in valid state."
@@ -177,12 +187,6 @@ msgstr ""
 "¿Quiere usar el período actual?"
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-"No puede crear apuntes con cuentas de diferentes empresas en el asiento "
-"\"%s\"."
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -192,21 +196,21 @@ msgstr ""
 
 msgctxt "error:account.move:"
 msgid "You can not modify move \"%s\" because it is already posted."
-msgstr "No puede modificar el asiento \"%s\" porque ya está confirmado."
+msgstr "No puede modificar el asiento \"%s\" porque ya está contabilizado."
 
 msgctxt "error:account.move:"
 msgid "You can not post move \"%s\" because it is an unbalanced."
-msgstr "No puede confirmar el asiento \"%s\" porque está descuadrado."
+msgstr "No puede contabilizar el asiento \"%s\" porque está descuadrado."
 
 msgctxt "error:account.move:"
 msgid "You can not post move \"%s\" because it is empty."
-msgstr "No puede confirmar el asiento \"%s\" porque está vacío."
+msgstr "No puede contabilizar el asiento \"%s\" porque está vacío."
 
 msgctxt "error:account.move:"
 msgid "You can not set posted move \"%(move)s\" to draft in journal \"%(journal)s\"."
 msgstr ""
-"No puede cambiar a borrador el asiento confirmado \"%(move)s\" en el diario "
-"\"%(journal)s\"."
+"No puede cambiar a borrador el asiento contabilizado \"%(move)s\" en el "
+"diario \"%(journal)s\"."
 
 msgctxt "error:account.move:"
 msgid ""
@@ -229,14 +233,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr "Los períodos \"%(first)s\" y \"%(second)s\" se superponen."
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-"La empresa de la secuencia \"%(sequence)s\" no coincide con la empresa del "
-"período \"%(period)s\" a la que está asignada."
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr "Las fechas del período \"%s\" están fuera de su ejercicio fiscal."
 
@@ -253,16 +249,16 @@ msgid ""
 "You can not change the post move sequence of period \"%s\" because there are"
 " already posted moves in the period."
 msgstr ""
-"No puede cambiar la secuencia de asientos confirmados del período \"%s\" "
-"porque ya hay asientos confirmados en el período."
+"No puede cambiar la secuencia de asientos contabilizados del período \"%s\" "
+"porque ya hay asientos contabilizados en el período."
 
 msgctxt "error:account.period:"
 msgid ""
 "You can not close period \"%(period)s\" because there are non posted moves "
 "\"%(move)s\" in this period."
 msgstr ""
-"No puede cerrar el período \"%(period)s\" porque hay asientos no confirmados"
-" \"%(move)s\" en este período."
+"No puede cerrar el período \"%(period)s\" porque hay asientos no "
+"contabilizados \"%(move)s\" en este período."
 
 msgctxt "error:account.period:"
 msgid "You can not create a period on fiscal year \"%s\" because it is closed."
@@ -271,7 +267,7 @@ msgstr ""
 
 msgctxt "error:account.period:"
 msgid "You can not modify/delete period \"%s\" because it has moves."
-msgstr "No puede modificar/borrar el período \"%s\" porque tiene asientos."
+msgstr "No puede modificar/eliminar el período \"%s\" porque tiene asientos."
 
 msgctxt "error:account.period:"
 msgid ""
@@ -281,6 +277,22 @@ msgstr ""
 "No puede abrir el período \"%(period)s\" porque su ejercicio fiscal "
 "\"%(fiscalyear)s\" está cerrado."
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Actualizar precio unidad\" no se puede aplicar al impuesto "
+"\"%(template)s\" porqué tiene padre."
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"\"Actualizar precio unidad\" no se puede aplicar al impuesto "
+"\"%(template)s\" porqué tiene padre."
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Activo"
@@ -333,6 +345,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Cierres"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Saldo en el libro mayor"
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -497,6 +513,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Cierre"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Saldo en el libro mayor"
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -795,7 +815,7 @@ msgstr "Períodos"
 
 msgctxt "field:account.fiscalyear,post_move_sequence:"
 msgid "Post Move Sequence"
-msgstr "Secuencia de asiento confirmado"
+msgstr "Secuencia de asiento contabilizado"
 
 msgctxt "field:account.fiscalyear,rec_name:"
 msgid "Name"
@@ -849,6 +869,10 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr "Cuenta haber"
@@ -926,7 +950,7 @@ msgid "Type"
 msgstr "Tipo"
 
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
+msgid "Allow updating posted moves"
 msgstr "Permitir cancelar asientos"
 
 msgctxt "field:account.journal,view:"
@@ -1101,6 +1125,10 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Fecha creación"
@@ -1143,11 +1171,11 @@ msgstr "Período"
 
 msgctxt "field:account.move,post_date:"
 msgid "Post Date"
-msgstr "Fecha confirmación"
+msgstr "Fecha contabilización"
 
 msgctxt "field:account.move,post_number:"
 msgid "Post Number"
-msgstr "Número confirmado"
+msgstr "Número contabilización"
 
 msgctxt "field:account.move,rec_name:"
 msgid "Name"
@@ -1165,10 +1193,30 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Cuenta"
 
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr "Moneda del importe"
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr "Decimales de la moneda del importe"
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Importe moneda secundaria"
@@ -1255,7 +1303,7 @@ msgstr "Segunda moneda"
 
 msgctxt "field:account.move.line,second_currency_digits:"
 msgid "Second Currency Digits"
-msgstr "Decimales segunda moneda"
+msgstr "Decimales de la segunda moneda"
 
 msgctxt "field:account.move.line,state:"
 msgid "State"
@@ -1273,6 +1321,62 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr "Operación"
+
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr "Tercero requerido"
+
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1299,7 +1403,7 @@ msgstr "ID"
 
 msgctxt "field:account.move.print_general_journal.start,posted:"
 msgid "Posted Move"
-msgstr "Asiento confirmado"
+msgstr "Asiento contabilizado"
 
 msgctxt "field:account.move.print_general_journal.start,to_date:"
 msgid "To Date"
@@ -1311,7 +1415,7 @@ msgstr "Importe"
 
 msgctxt "field:account.move.reconcile_lines.writeoff,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimales de moneda"
+msgstr "Decimales de la moneda"
 
 msgctxt "field:account.move.reconcile_lines.writeoff,date:"
 msgid "Date"
@@ -1361,6 +1465,130 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Acciones de teclado"
+
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Período"
+
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Plantilla"
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr "Decimales"
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Requerido"
+
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr "Etiqueta"
+
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Tipo"
@@ -1375,7 +1603,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_aged_balance.start,posted:"
 msgid "Posted Move"
-msgstr "Asiento confirmado"
+msgstr "Asiento contabilizado"
 
 msgctxt "field:account.open_aged_balance.start,term1:"
 msgid "First Term"
@@ -1407,7 +1635,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_balance_sheet.start,posted:"
 msgid "Posted Move"
-msgstr "Asiento confirmado"
+msgstr "Asiento contabilizado"
 
 msgctxt "field:account.open_chart.start,fiscalyear:"
 msgid "Fiscal Year"
@@ -1419,7 +1647,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_chart.start,posted:"
 msgid "Posted Moves"
-msgstr "Asiento confirmado"
+msgstr "Asiento contabilizado"
 
 msgctxt "field:account.open_income_statement.start,company:"
 msgid "Company"
@@ -1439,7 +1667,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_income_statement.start,posted:"
 msgid "Posted Move"
-msgstr "Asiento confirmado"
+msgstr "Asiento contabilizado"
 
 msgctxt "field:account.open_income_statement.start,start_period:"
 msgid "Start Period"
@@ -1459,7 +1687,7 @@ msgstr "ID"
 
 msgctxt "field:account.open_third_party_balance.start,posted:"
 msgid "Posted Move"
-msgstr "Asiento confirmado"
+msgstr "Asiento contabilizado"
 
 msgctxt "field:account.period,code:"
 msgid "Code"
@@ -1495,7 +1723,7 @@ msgstr "Nombre"
 
 msgctxt "field:account.period,post_move_sequence:"
 msgid "Post Move Sequence"
-msgstr "Secuencia de asiento confirmado"
+msgstr "Secuencia de asiento contabilizado"
 
 msgctxt "field:account.period,rec_name:"
 msgid "Name"
@@ -1543,7 +1771,7 @@ msgstr "ID"
 
 msgctxt "field:account.print_general_ledger.start,posted:"
 msgid "Posted Move"
-msgstr "Asiento confirmado"
+msgstr "Asiento contabilizado"
 
 msgctxt "field:account.print_general_ledger.start,start_period:"
 msgid "Start Period"
@@ -1571,7 +1799,7 @@ msgstr "ID"
 
 msgctxt "field:account.print_trial_balance.start,posted:"
 msgid "Posted Move"
-msgstr "Asiento confirmado"
+msgstr "Asiento contabilizado"
 
 msgctxt "field:account.print_trial_balance.start,start_period:"
 msgid "Start Period"
@@ -1737,6 +1965,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Tipo"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualizar precio unidad"
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Fecha modificación"
@@ -1917,6 +2149,10 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Código"
 
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Empresa"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Fecha creación"
@@ -1953,6 +2189,46 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Línea"
+
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Empresa"
@@ -2233,6 +2509,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Tipo"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Actualizar precio unitario"
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Fecha modificación"
@@ -2285,6 +2565,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Regla de impuesto de proveedor"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Sólo muestra el saldo en el libro mayor."
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2307,6 +2591,10 @@ msgstr ""
 "Impuesto por defecto para la codificación manual\n"
 "de apuntes para diarios de tipo: \"gastos\" e \"ingresos\"."
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Sólo muestra el saldo en el libro mayor."
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Sirve para ordenar el tipo de cuenta."
@@ -2331,17 +2619,33 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "La segunda moneda."
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Las palabras clave a sustituir por valores se identifican escribiéndolas "
+"dentro de llaves ('{' y '}')."
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
-msgstr "Muestra sólo asientos confirmados."
+msgstr "Muestra sólo asientos contabilizados."
+
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr "Dejarlo vacío para hoy."
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Las palabras clave a sustituir por valores se identifican escribiéndolas "
+"dentro de llaves ('{' y '}')."
 
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
-msgstr "Muestra sólo asientos confirmados."
+msgstr "Muestra sólo asientos contabilizados."
 
 msgctxt "help:account.open_balance_sheet.start,posted:"
 msgid "Show only posted move"
-msgstr "Muestra sólo asientos confirmados."
+msgstr "Muestra sólo asientos contabilizados."
 
 msgctxt "help:account.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
@@ -2349,15 +2653,15 @@ msgstr "Dejarlo vacío para todos los ejercicios fiscales abiertos."
 
 msgctxt "help:account.open_chart.start,posted:"
 msgid "Show posted moves only"
-msgstr "Muestra sólo asientos confirmados."
+msgstr "Muestra sólo asientos contabilizados."
 
 msgctxt "help:account.open_income_statement.start,posted:"
 msgid "Show only posted move"
-msgstr "Muestra sólo asientos confirmados."
+msgstr "Muestra sólo asientos contabilizados."
 
 msgctxt "help:account.open_third_party_balance.start,posted:"
 msgid "Show only posted move"
-msgstr "Muestra sólo asientos confirmados."
+msgstr "Muestra sólo asientos contabilizados."
 
 msgctxt "help:account.print_general_ledger.start,empty_account:"
 msgid "With account without move"
@@ -2365,7 +2669,7 @@ msgstr "Con cuenta sin asiento."
 
 msgctxt "help:account.print_general_ledger.start,posted:"
 msgid "Show only posted move"
-msgstr "Muestra sólo asientos confirmados."
+msgstr "Muestra sólo asientos contabilizados."
 
 msgctxt "help:account.print_trial_balance.start,empty_account:"
 msgid "With account without move"
@@ -2373,7 +2677,7 @@ msgstr "Con cuenta sin asiento."
 
 msgctxt "help:account.print_trial_balance.start,posted:"
 msgid "Show only posted move"
-msgstr "Muestra sólo asientos confirmados."
+msgstr "Muestra sólo asientos contabilizados."
 
 msgctxt "help:account.tax,amount:"
 msgid "In company's currency"
@@ -2403,6 +2707,14 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Sirve para ordenar los impuestos."
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+"Si se marca el precio unidad utilizado por cálculos de impuestos adicionales"
+" será modificado por este impuesto."
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr "Dejarlo vacío para todos los ejercicios fiscales abiertos."
@@ -2668,10 +2980,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Asiento contable"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr "Cancelar asientos"
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Apunte contable"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr "Plantilla de apunte contable"
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Solicitar el diario a abrir"
@@ -2688,6 +3008,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Líneas de conciliación de apuntes contables"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr "Plantilla de asiento contable"
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr "Palabra clave de plantilla de asiento contable"
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Abrir balance histórico"
@@ -2748,6 +3084,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Línea de impuesto"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de línea de impuesto contable"
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Regla de impuesto"
@@ -2892,6 +3232,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr "Líneas de conciliación"
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla de asiento contable"
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Abrir cuenta del asiento"
@@ -3184,6 +3532,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Asientos contables"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr "Plantilla de asiento contable"
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Balance general"
@@ -3474,7 +3830,7 @@ msgstr "Origen:"
 
 msgctxt "odt:account.move.general_journal:"
 msgid "Posted"
-msgstr "Confirmado"
+msgstr "Contabilizado"
 
 msgctxt "odt:account.move.general_journal:"
 msgid "Print Date:"
@@ -3686,7 +4042,7 @@ msgstr "Borrador"
 
 msgctxt "selection:account.move,state:"
 msgid "Posted"
-msgstr "Confirmado"
+msgstr "Contabilizado"
 
 msgctxt "selection:account.move.line,move_state:"
 msgid "Draft"
@@ -3694,7 +4050,7 @@ msgstr "Borrador"
 
 msgctxt "selection:account.move.line,move_state:"
 msgid "Posted"
-msgstr "Confirmado"
+msgstr "Contabilizado"
 
 msgctxt "selection:account.move.line,state:"
 msgid "Draft"
@@ -3704,6 +4060,30 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Correcto"
 
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Haber"
+
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Debe"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr "Texto"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr "Numérico"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Tercero"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "Ambos"
@@ -3984,6 +4364,22 @@ msgctxt "view:account.journal:"
 msgid "Journals"
 msgstr "Diarios"
 
+msgctxt "view:account.move.cancel.default:"
+msgid "Cancel Moves"
+msgstr "Cancelar asientos"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Template"
+msgstr "Plantilla de apunte contable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Templates"
+msgstr "Plantillas de apunte contable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Other Info"
+msgstr "Información adicional"
+
 msgctxt "view:account.move.line:"
 msgid "Account Move Line"
 msgstr "Apunte contable"
@@ -4024,6 +4420,30 @@ msgctxt "view:account.move.reconciliation:"
 msgid "Reconciliations"
 msgstr "Conciliaciones"
 
+msgctxt "view:account.move.template.create.template:"
+msgid "Create Move from Template"
+msgstr "Crear asiento desde plantilla"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keyword"
+msgstr "Palabra clave de plantilla de asiento contable"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keywords"
+msgstr "Palabras claves de plantilla de asiento contable"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Template"
+msgstr "Plantilla de asiento contable"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Templates"
+msgstr "Plantillas de asiento contable"
+
+msgctxt "view:account.move.template:"
+msgid "Template"
+msgstr "Plantilla"
+
 msgctxt "view:account.move:"
 msgid "Account Move"
 msgstr "Asiento contable"
@@ -4038,7 +4458,7 @@ msgstr "Borrador"
 
 msgctxt "view:account.move:"
 msgid "Post"
-msgstr "Confirmar"
+msgstr "Contabilizar"
 
 msgctxt "view:account.open_aged_balance.start:"
 msgid "Open Aged Balance"
@@ -4132,6 +4552,14 @@ msgctxt "view:account.tax.group:"
 msgid "Tax Groups"
 msgstr "Grupos de impuesto"
 
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Template"
+msgstr "Plantilla de línea de impuesto contable"
+
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Templates"
+msgstr "Plantillas de línea de impuesto contable"
+
 msgctxt "view:account.tax.line:"
 msgid "Account Tax Line"
 msgstr "Línea de impuesto contable"
@@ -4238,7 +4666,7 @@ msgstr "Actualizar plan contable"
 
 msgctxt "view:account.update_chart.succeed:"
 msgid "Update Chart of Accounts Succeed!"
-msgstr "Actualización del plan contable realizada correctamente."
+msgstr "La actualización del plan contable se ha realizado correctamente."
 
 msgctxt "view:party.party:"
 msgid "Account"
@@ -4265,7 +4693,7 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4273,7 +4701,7 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,end:"
@@ -4288,6 +4716,14 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Cancelar"
@@ -4312,6 +4748,22 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Conciliar"
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Crear"
+
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Siguiente"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
@@ -4397,5 +4849,5 @@ msgid "Update"
 msgstr "Actualizar"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "Aceptar"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 9881551..be75144 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -111,6 +111,10 @@ msgid "Wrong credit/debit values."
 msgstr "Valeurs de débit/crédit incorrectes."
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr "Mauvais signe pour la devise secondaire"
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr ""
 "Vous ne pouvez ajouter ou modifier des lignes dans la période de journal "
@@ -140,6 +144,10 @@ msgstr ""
 "Vous ne pouvez modifier les lignes du mouvement « %s » car il est déjà "
 "posté."
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr "wrong_second_currency_sign"
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -171,10 +179,10 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
-"Vous ne pouvez réconcilier la ligne « %(line)s »  car son tiers « %(party1)s"
-" » est différent de « %(party2)s »."
+"Vous ne pouvez pas réconcilier la ligne « %(line)s » parce que son tiers « "
+"%(party1)s » est différent de « %(party2)s »."
 
 msgctxt "error:account.move.reconciliation:"
 msgid "You can not reconcile line \"%s\" because it is not in valid state."
@@ -191,12 +199,6 @@ msgstr ""
 "Utiliser la période courante ?"
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-"Vous ne pouvez créer des lignes sur des comptes de différentes sociétés dans"
-" le mouvement « %s »."
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -243,14 +245,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr "Les périodes « %(first)s » et « %(second)s »  se chevauchent."
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-"La société de la séquence « %(sequence)s » ne correspond à la société de la "
-"période « %(period)s » à laquelle elle est assignée."
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr ""
 "Les dates de la période « %s » sont en dehors des dates de son année "
@@ -300,6 +294,22 @@ msgstr ""
 "Vous ne pouvez ouvrir la période « %(period)s » car son année fiscale « "
 "%(fiscalyear)s » est clôturée."
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"« Mettre à jour le prix unitaire » ne peut pas coché sur la taxe « "
+"%(template)s » qui a un parent."
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+"« Mettre à jour le prix unitaire » ne peut pas coché sur la taxe « "
+"%(template)s » qui a un parent."
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Actif"
@@ -338,7 +348,7 @@ msgstr "Devise"
 
 msgctxt "field:account.account,currency_digits:"
 msgid "Currency Digits"
-msgstr "Décimal de la devise"
+msgstr "Décimales de la devise"
 
 msgctxt "field:account.account,debit:"
 msgid "Debit"
@@ -352,6 +362,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Reports"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Balance du grand livre"
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -516,6 +530,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Report"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Balance du grand livre"
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -618,7 +636,7 @@ msgstr "Créé par"
 
 msgctxt "field:account.account.type,currency_digits:"
 msgid "Currency Digits"
-msgstr "Décimal de la devise"
+msgstr "Décimales de la devise"
 
 msgctxt "field:account.account.type,display_balance:"
 msgid "Display Balance"
@@ -722,11 +740,11 @@ msgstr "Créé par"
 
 msgctxt "field:account.configuration,default_account_payable:"
 msgid "Default Account Payable"
-msgstr "Compte à payer par défaut"
+msgstr "Compte fournisseur par défaut"
 
 msgctxt "field:account.configuration,default_account_receivable:"
 msgid "Default Account Receivable"
-msgstr "Compte à recevoir par défaut"
+msgstr "Compte client par défaut"
 
 msgctxt "field:account.configuration,id:"
 msgid "ID"
@@ -758,11 +776,11 @@ msgstr "ID"
 
 msgctxt "field:account.create_chart.properties,account_payable:"
 msgid "Default Payable Account"
-msgstr "Compte à payer par défaut"
+msgstr "Compte fournisseur par défaut"
 
 msgctxt "field:account.create_chart.properties,account_receivable:"
 msgid "Default Receivable Account"
-msgstr "Compte à recevoir par défaut"
+msgstr "Compte client par défaut"
 
 msgctxt "field:account.create_chart.properties,company:"
 msgid "Company"
@@ -868,6 +886,10 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Société"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr "Compte de crédit"
@@ -945,8 +967,8 @@ msgid "Type"
 msgstr "Type"
 
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
-msgstr "Permettre d'annuler les mouvements"
+msgid "Allow updating posted moves"
+msgstr "Permettre de mettre à jour les mouvements postés"
 
 msgctxt "field:account.journal,view:"
 msgid "View"
@@ -1120,6 +1142,10 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Société"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Date de création"
@@ -1184,10 +1210,30 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Compte"
 
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Montant"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr "Montant en devise"
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr "Décimales de la devise du montant"
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Montant en devise secondaire"
@@ -1292,6 +1338,62 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Montant"
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Mouvement"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr "Opération"
+
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr "Tiers requis"
+
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Taxes"
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1380,6 +1482,130 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Date"
+
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Mots-clés"
+
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Lignes"
+
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Période"
+
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Modèle"
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr "Chiffres"
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Mouvement"
+
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Requis"
+
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr "Chaîne de caractères"
+
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Type"
@@ -1756,6 +1982,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Type"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Mettre à jour le prix unitaire"
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Date de mise à jour"
@@ -1790,7 +2020,7 @@ msgstr "Créé par"
 
 msgctxt "field:account.tax.code,currency_digits:"
 msgid "Currency Digits"
-msgstr "Décimal de la devise"
+msgstr "Décimales de la devise"
 
 msgctxt "field:account.tax.code,description:"
 msgid "Description"
@@ -1936,6 +2166,10 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Code"
 
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Société"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Date de création"
@@ -1972,6 +2206,46 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Montant"
+
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Ligne"
+
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Taxe"
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Société"
@@ -2252,6 +2526,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Type"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Mettre à jour le prix unitaire"
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Date de mise à jour"
@@ -2274,11 +2552,11 @@ msgstr "ID"
 
 msgctxt "field:party.party,account_payable:"
 msgid "Account Payable"
-msgstr "Compte à payer"
+msgstr "Compte fournisseur"
 
 msgctxt "field:party.party,account_receivable:"
 msgid "Account Receivable"
-msgstr "Compte à recevoir"
+msgstr "Compte client"
 
 msgctxt "field:party.party,customer_tax_rule:"
 msgid "Customer Tax Rule"
@@ -2304,6 +2582,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Règle de taxe fournisseur"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Afficher seulement la balance dans le grand livre"
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2326,6 +2608,10 @@ msgstr ""
 "Taxe par défaut pour les lignes de mouvement manuelles\n"
 "pour le type de journal: « charge » et « produit »"
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Afficher seulement la balance dans le grand livre"
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Utilisé pour trier les types de compte"
@@ -2350,10 +2636,26 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "La devise secondaire"
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Les subsitutions des mots-clès par leurs valeurs sont identifées par des "
+"accolades ('{' et '}')"
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr "Montrer seulement les mouvements postés"
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr "Laissez vide pour aujourd'hui"
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Les substitutions des valeurs des mots-clés sont identifiées par des "
+"accolades (« { » et « } »)"
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr "Montrer seulement les mouvements postés"
@@ -2422,6 +2724,14 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Utilisé pour trier les taxes"
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+"Si cochée alors le prix unitaire pour le calcul des taxes suivantes sera "
+"modifiée par cette taxe"
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr "laisser vide pour toute les années fiscales ouvertes"
@@ -2479,11 +2789,11 @@ msgstr "Compte de charges"
 
 msgctxt "model:account.account.template,name:account_template_payable"
 msgid "Main Payable"
-msgstr "Compte de paiements"
+msgstr "Compte fournisseur"
 
 msgctxt "model:account.account.template,name:account_template_receivable"
 msgid "Main Receivable"
-msgstr "Compte à recevoir"
+msgstr "Compte client"
 
 msgctxt "model:account.account.template,name:account_template_revenue"
 msgid "Main Revenue"
@@ -2526,7 +2836,7 @@ msgstr "Cash"
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_asset_current_receivable"
 msgid "Receivable"
-msgstr "À recevoir"
+msgstr "Compte client"
 
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_asset_long_term"
@@ -2561,7 +2871,7 @@ msgstr "Courant"
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_liability_current_payable"
 msgid "Payable"
-msgstr "À payer"
+msgstr "Fournisseur"
 
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_liability_current_tax"
@@ -2684,10 +2994,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Mouvement comptable"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr "Annuler les mouvements"
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Ligne de mouvement comptable"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr "Modèle de ligne de mouvement comptable"
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Ouvrir le journal - Demande"
@@ -2704,6 +3022,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Lignes de reconciliation de mouvement comptable"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr "Modèle de mouvement comptable"
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr "Créer un mouvement depuis un modèle"
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr "Créer un mouvement depuis un modèle"
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr "Mot-clé de modèle de mouvement comptable"
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Ouvrir la balance âgée"
@@ -2764,6 +3098,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Ligne de taxe"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr "Modèle de ligne de taxe comptable"
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Règle de taxe"
@@ -2908,6 +3246,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr "Lignes de réconciliation"
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr "Créer un mouvement depuis un modèle"
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr "Modèle de mouvement comptable"
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Ouvrir le compte"
@@ -3200,6 +3546,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Mouvements comptables"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr "Créer un mouvement depuis un modèle"
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr "Modèle de mouvement comptable"
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Bilan"
@@ -3618,11 +3972,11 @@ msgstr "Autre"
 
 msgctxt "selection:account.account,kind:"
 msgid "Payable"
-msgstr "À payer"
+msgstr "Fournisseur"
 
 msgctxt "selection:account.account,kind:"
 msgid "Receivable"
-msgstr "À recevoir"
+msgstr "Compte client"
 
 msgctxt "selection:account.account,kind:"
 msgid "Revenue"
@@ -3646,11 +4000,11 @@ msgstr "Autre"
 
 msgctxt "selection:account.account.template,kind:"
 msgid "Payable"
-msgstr "À payer"
+msgstr "Fournisseur"
 
 msgctxt "selection:account.account.template,kind:"
 msgid "Receivable"
-msgstr "À recevoir"
+msgstr "Compte client"
 
 msgctxt "selection:account.account.template,kind:"
 msgid "Revenue"
@@ -3720,6 +4074,30 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Valide"
 
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Crédit"
+
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Débit"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr "Caractères"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Date"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr "Numérique"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Tiers"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "Les deux"
@@ -4000,6 +4378,22 @@ msgctxt "view:account.journal:"
 msgid "Journals"
 msgstr "Journaux"
 
+msgctxt "view:account.move.cancel.default:"
+msgid "Cancel Moves"
+msgstr "Annuler les mouvements"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Template"
+msgstr "Modèle de ligne de mouvement comptable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Templates"
+msgstr "Modèles de ligne de mouvement comptable"
+
+msgctxt "view:account.move.line.template:"
+msgid "Other Info"
+msgstr "Autre information"
+
 msgctxt "view:account.move.line:"
 msgid "Account Move Line"
 msgstr "Ligne de mouvement comptable"
@@ -4040,6 +4434,30 @@ msgctxt "view:account.move.reconciliation:"
 msgid "Reconciliations"
 msgstr "Réconciliations"
 
+msgctxt "view:account.move.template.create.template:"
+msgid "Create Move from Template"
+msgstr "Créer un Mouvement depuis un Modèle"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keyword"
+msgstr "Mot-clé de modèle de mouvement comptable"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keywords"
+msgstr "Mots-clés de modèle de mouvement comptable"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Template"
+msgstr "Modèle de mouvement comptable"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Templates"
+msgstr "Modèles de mouvement comptable"
+
+msgctxt "view:account.move.template:"
+msgid "Template"
+msgstr "Modèle"
+
 msgctxt "view:account.move:"
 msgid "Account Move"
 msgstr "Mouvement comptable"
@@ -4148,6 +4566,14 @@ msgctxt "view:account.tax.group:"
 msgid "Tax Groups"
 msgstr "Groupes de taxes"
 
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Template"
+msgstr "Modèle de ligne de tax comptable"
+
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Templates"
+msgstr "Modèles de ligne de tax comptable"
+
 msgctxt "view:account.tax.line:"
 msgid "Account Tax Line"
 msgstr "Ligne comptable de taxe"
@@ -4281,16 +4707,16 @@ msgid "Cancel"
 msgstr "Annuler"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
-msgstr "Ok"
+msgid "OK"
+msgstr "OK"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
 msgid "Cancel"
 msgstr "Annuler"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
-msgstr "Ok"
+msgid "OK"
+msgstr "OK"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,end:"
 msgid "Cancel"
@@ -4304,6 +4730,14 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Annuler"
 
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "OK"
+
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Annuler"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Annuler"
@@ -4328,6 +4762,22 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Réconcilier"
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Créer"
+
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Suivant"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Annuler"
@@ -4413,5 +4863,5 @@ msgid "Update"
 msgstr "Mise à jour"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
-msgstr "Ok"
+msgid "OK"
+msgstr "OK"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 092c04d..e59bad2 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -93,6 +93,10 @@ msgid "Wrong credit/debit values."
 msgstr ""
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr ""
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr ""
 
@@ -114,6 +118,10 @@ msgctxt "error:account.move.line:"
 msgid "You can not modify lines of move \"%s\" because it is already posted."
 msgstr ""
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr ""
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -139,7 +147,7 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
 
 msgctxt "error:account.move.reconciliation:"
@@ -153,10 +161,6 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -198,12 +202,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr ""
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr ""
 
@@ -241,6 +239,18 @@ msgid ""
 "\"%(fiscalyear)s\" is closed."
 msgstr ""
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Actief"
@@ -293,6 +303,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Historie"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr ""
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr ""
@@ -459,6 +473,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Historisch"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr ""
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr ""
@@ -815,6 +833,11 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr ""
 
+#, fuzzy
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Bedrijf"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr ""
@@ -894,8 +917,9 @@ msgctxt "field:account.journal,type:"
 msgid "Type"
 msgstr "Type"
 
+#, fuzzy
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
+msgid "Allow updating posted moves"
 msgstr "Sta annuleren van boekingen toe"
 
 msgctxt "field:account.journal,view:"
@@ -1070,6 +1094,11 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr ""
 
+#, fuzzy
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Bedrijf"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr ""
@@ -1136,10 +1165,32 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr ""
 
+#, fuzzy
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Specificatie"
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr ""
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Rekening"
 
+#, fuzzy
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Bedrag"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr ""
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr ""
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Bedrag alternatieve valuta"
@@ -1245,6 +1296,69 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr ""
 
+#, fuzzy
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Rekeningen"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Bedrag"
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Specificatie"
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Boeking"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Relaties"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Belastingen"
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr ""
@@ -1340,6 +1454,147 @@ msgid "Write User"
 msgstr ""
 
 #, fuzzy
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Actief"
+
+#, fuzzy
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Bedrijf"
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Vervaldatum"
+
+#, fuzzy
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Specificatie"
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Dagboek"
+
+#, fuzzy
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Trefwoorden"
+
+#, fuzzy
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Transacties"
+
+#, fuzzy
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Periode"
+
+#, fuzzy
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Sjabloon"
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Boeking"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Vereist"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr ""
+
+#, fuzzy
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Type"
@@ -1743,6 +1998,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Type"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr ""
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr ""
@@ -1926,6 +2185,11 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Code"
 
+#, fuzzy
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Bedrijf"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr ""
@@ -1962,6 +2226,51 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr ""
 
+#, fuzzy
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Bedrag"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Regel"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Belasting"
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Bedrijf"
@@ -2247,6 +2556,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Type"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr ""
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr ""
@@ -2299,6 +2612,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Belastingregel inkopen"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr ""
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2319,6 +2636,10 @@ msgstr ""
 "Standaard belasting voor handmatig coderen van boekingen\n"
 "voor de dagboektypen: \"kosten\" en \"opbrengsten\""
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr ""
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Gebruiken om rekeningtype te ordenen"
@@ -2343,10 +2664,22 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "De tweede valuta"
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr ""
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr ""
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr ""
@@ -2415,6 +2748,12 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Gebruiken om belastingen te ordenen"
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr ""
@@ -2679,10 +3018,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Boeking"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr ""
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Boekingsregel"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr ""
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Open dagboek vragen"
@@ -2700,6 +3047,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Afletterregels"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr ""
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr ""
+
 #, fuzzy
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
@@ -2766,6 +3129,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Belasting regel"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr ""
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Belastingbepaling"
@@ -2914,6 +3281,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr ""
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Boeking rekening openen"
@@ -3215,6 +3590,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Boekingen"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Balansoverzicht"
@@ -3786,6 +4169,34 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Geldig"
 
+#, fuzzy
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Credit"
+
+#, fuzzy
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Debit"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Vervaldatum"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Relaties"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr ""
@@ -4368,7 +4779,7 @@ msgstr "Annuleren"
 
 #, fuzzy
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "Oké"
 
 #, fuzzy
@@ -4378,7 +4789,7 @@ msgstr "Annuleren"
 
 #, fuzzy
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "Oké"
 
 #, fuzzy
@@ -4396,6 +4807,16 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Annuleren"
 
+#, fuzzy
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "Oké"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Annuleren"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Annuleren"
@@ -4422,6 +4843,24 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Afletteren"
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr ""
+
 #, fuzzy
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
@@ -4523,5 +4962,5 @@ msgstr ""
 
 #, fuzzy
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "Oké"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index 7d3451e..7f45038 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -105,6 +105,10 @@ msgid "Wrong credit/debit values."
 msgstr "Некорректные значения кредит/дебет."
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr ""
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr "Вы не можете добавить/изменить строки в закрытом периоде \"%s\"."
 
@@ -128,6 +132,10 @@ msgctxt "error:account.move.line:"
 msgid "You can not modify lines of move \"%s\" because it is already posted."
 msgstr "Вы не можете изменить строки проводки \"%s\" так как она уже проведена."
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr ""
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -159,10 +167,8 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
-"Вы не можете сверить строку \"%(line)s\" так как её контрагент "
-"\"%(party1)s\" отличается от \"%(party2)s\"."
 
 msgctxt "error:account.move.reconciliation:"
 msgid "You can not reconcile line \"%s\" because it is not in valid state."
@@ -175,11 +181,6 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr ""
-"Вы не можете создать строки для счетов разных организаций в проводке \"%s\"."
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -224,14 +225,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr "Периоды \"%(first)s\" и \"%(second)s\" пересекаются."
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-"Организация в нумерации \"%(sequence)s\" не соответствует организации в "
-"периоде \"%(period)s\", к которому она принадлежит."
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr "Даты периода \"%s\" находятся вне пределов финансового года."
 
@@ -274,6 +267,18 @@ msgstr ""
 "Вы не можете открыть период \"%(period)s\" так как финансовый год "
 "\"%(fiscalyear)s\" уже закрыт."
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr ""
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Действующий"
@@ -326,6 +331,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Отсрочки"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr ""
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -491,6 +500,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Отсрочка"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr ""
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -843,6 +856,11 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Изменено пользователем"
 
+#, fuzzy
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Учет.орг."
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr ""
@@ -923,8 +941,9 @@ msgctxt "field:account.journal,type:"
 msgid "Type"
 msgstr "Тип"
 
+#, fuzzy
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
+msgid "Allow updating posted moves"
 msgstr "Разрешить отмену проводок"
 
 msgctxt "field:account.journal,view:"
@@ -1099,6 +1118,11 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Изменено пользователем"
 
+#, fuzzy
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Учет.орг."
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Дата создания"
@@ -1163,10 +1187,33 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Изменено пользователем"
 
+#, fuzzy
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Описание"
+
+#, fuzzy
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Счет"
 
+#, fuzzy
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Сумма"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr ""
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr ""
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Сумма во второй валюте"
@@ -1271,6 +1318,74 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Изменено пользователем"
 
+#, fuzzy
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Счет"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Сумма"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Описание"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Перемещение"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Организации"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Правило оплаты"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Налоги"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1362,6 +1477,159 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Изменено пользователем"
 
+#, fuzzy
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Действующий"
+
+#, fuzzy
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Учет.орг."
+
+#, fuzzy
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+#, fuzzy
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Дата"
+
+#, fuzzy
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Описание"
+
+#, fuzzy
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Журнал"
+
+#, fuzzy
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+#, fuzzy
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Строки"
+
+#, fuzzy
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Правило оплаты"
+
+#, fuzzy
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Правило оплаты"
+
+#, fuzzy
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
+#, fuzzy
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Период"
+
+#, fuzzy
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Шаблон"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Перемещение"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Правило оплаты"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Правило оплаты"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Обязательный"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Последовательность"
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Тип"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Тип"
@@ -1753,6 +2021,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Тип"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr ""
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Дата изменения"
@@ -1933,6 +2205,11 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Код"
 
+#, fuzzy
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Учет.орг."
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Дата создания"
@@ -1969,6 +2246,56 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Изменено пользователем"
 
+#, fuzzy
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Сумма"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Код языка"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Строка"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Правило оплаты"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Налоги"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Организация"
@@ -2252,6 +2579,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Тип"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr ""
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Дата изменения"
@@ -2304,6 +2635,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Правило налогов поставщика"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr ""
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2324,6 +2659,10 @@ msgstr ""
 "Налоги по умолчанию для ручного расчета проводок для типов журналов: "
 "\"расходы\" и \"доходы\"."
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr ""
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Используется для сортировки типов счетов"
@@ -2348,10 +2687,22 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "Вторичная валюта"
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr "Показать только завершенные проводки"
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr ""
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr "Показать только завершенные проводки"
@@ -2421,6 +2772,12 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Используется для сортировки налогов"
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr ""
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr "Оставьте пустым для всех открытых финансовых годов"
@@ -2684,10 +3041,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Проводка"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr ""
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Строчка проводки"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr ""
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Открыть журнал запросов"
@@ -2704,6 +3069,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Строчки сверки проводок"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr ""
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr ""
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Открыть сальдовый отчет"
@@ -2765,6 +3146,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Строка налога"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr ""
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Правило налога"
@@ -2909,6 +3294,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr ""
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Открыть счет проводок"
@@ -3204,6 +3597,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Проводки"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Балансовый отчет"
@@ -3724,6 +4125,34 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Верный"
 
+#, fuzzy
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Кредит"
+
+#, fuzzy
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Дебет"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Организации"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "Оба"
@@ -4288,7 +4717,7 @@ msgid "Cancel"
 msgstr "Отменить"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "Ок"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4297,7 +4726,7 @@ msgstr "Отменить"
 
 #, fuzzy
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "Ок"
 
 #, fuzzy
@@ -4313,6 +4742,16 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Отменить"
 
+#, fuzzy
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "Ок"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Отменить"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Отменить"
@@ -4337,6 +4776,26 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Сверка"
 
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Создать"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Отменить"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Отменить"
+
+#, fuzzy
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Далее"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Отменить"
@@ -4424,5 +4883,5 @@ msgid "Update"
 msgstr "Обновить"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "Ок"
diff --git a/locale/sl_SI.po b/locale/sl_SI.po
index 17cfbf8..3a529b1 100644
--- a/locale/sl_SI.po
+++ b/locale/sl_SI.po
@@ -101,6 +101,10 @@ msgid "Wrong credit/debit values."
 msgstr "Napačne vrednosti za debet/kredit."
 
 msgctxt "error:account.move.line:"
+msgid "Wrong second currency sign."
+msgstr "Napačen predznak druge valute."
+
+msgctxt "error:account.move.line:"
 msgid "You can not add/modify lines in closed journal period \"%s\"."
 msgstr ""
 "Postavk dnevnika na zaključenem obdobju \"%s\" ni možno "
@@ -124,6 +128,10 @@ msgctxt "error:account.move.line:"
 msgid "You can not modify lines of move \"%s\" because it is already posted."
 msgstr "Postavk \"%s\" ni možno popravljati, ker so že knjižene."
 
+msgctxt "error:account.move.line:"
+msgid "wrong_second_currency_sign"
+msgstr "Napačen predznak druge valute"
+
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not create a reconciliation where debit \"%(debit)s\" and credit "
@@ -155,10 +163,10 @@ msgstr ""
 msgctxt "error:account.move.reconciliation:"
 msgid ""
 "You can not reconcile line \"%(line)s\" because it's party \"%(party1)s\" is"
-" different from %(party2)s\"."
+" different from \"%(party2)s\"."
 msgstr ""
-"Postavke \"%(line)s\" ni možni uskladiti zaradi partnerja \"%(party1)s\" na "
-"postavki, ki je različen od %(party2)s\"."
+"Postavke \"%(line)s\" ni možno uskladiti, ker je partner \"%(party1)s\" "
+"različen od \"%(party2)s\"."
 
 msgctxt "error:account.move.reconciliation:"
 msgid "You can not reconcile line \"%s\" because it is not in valid state."
@@ -173,10 +181,6 @@ msgstr ""
 "Vzamem trenutno obdobje?"
 
 msgctxt "error:account.move:"
-msgid "You can not create lines on accountsof different companies in move \"%s\"."
-msgstr "Postavk na kontih različnih družb v knjižbi \"%s\" ni možno izdelati."
-
-msgctxt "error:account.move:"
 msgid ""
 "You can not create move \"%(move)s\" because it's date is outside its "
 "period."
@@ -222,14 +226,6 @@ msgid "\"%(first)s\" and \"%(second)s\" periods overlap."
 msgstr "Obdobji \"%(first)s\" in \"%(second)s\" se prekrivata."
 
 msgctxt "error:account.period:"
-msgid ""
-"Company of sequence \"%(sequence)s\" does not match the company of period "
-"\"%(period)s\" to which it is assigned to."
-msgstr ""
-"Družba štetja \"%(sequence)s\" se ne ujema s družbo dodeljenga obdobja "
-"\"%(period)s\"."
-
-msgctxt "error:account.period:"
 msgid "Dates of period \"%s\" are outside are outside it's fiscal year dates."
 msgstr "Datumi obdobja \"%s\" so izven časovnega okvira poslovnega leta."
 
@@ -272,6 +268,18 @@ msgstr ""
 "Obdobja \"%(period)s\" ni možno odpirati zaradi zaključenega poslovnega leta"
 " \"%(fiscalyear)s\"."
 
+msgctxt "error:account.tax.template:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr "Popravka cene ni možno nastaviti na poddavek \"%(template)s\"."
+
+msgctxt "error:account.tax:"
+msgid ""
+"\"Update Unit Price\" can not be set on tax \"%(template)s\" which has a "
+"parent."
+msgstr "Popravka cene ni možno nastaviti na poddavek \"%(template)s\"."
+
 msgctxt "field:account.account,active:"
 msgid "Active"
 msgstr "Aktivno"
@@ -324,6 +332,10 @@ msgctxt "field:account.account,deferrals:"
 msgid "Deferrals"
 msgstr "Odlogi"
 
+msgctxt "field:account.account,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Bilance glavne knjige"
+
 msgctxt "field:account.account,id:"
 msgid "ID"
 msgstr "ID"
@@ -488,6 +500,10 @@ msgctxt "field:account.account.template,deferral:"
 msgid "Deferral"
 msgstr "Odlog"
 
+msgctxt "field:account.account.template,general_ledger_balance:"
+msgid "General Ledger Balance"
+msgstr "Bilance glavne knjige"
+
 msgctxt "field:account.account.template,id:"
 msgid "ID"
 msgstr "ID"
@@ -840,6 +856,10 @@ msgctxt "field:account.fiscalyear-account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
+msgctxt "field:account.fiscalyear.balance_non_deferral.start,company:"
+msgid "Company"
+msgstr "Družba"
+
 msgctxt "field:account.fiscalyear.balance_non_deferral.start,credit_account:"
 msgid "Credit Account"
 msgstr "Kreditni konto"
@@ -917,8 +937,8 @@ msgid "Type"
 msgstr "Tip"
 
 msgctxt "field:account.journal,update_posted:"
-msgid "Allow cancelling moves"
-msgstr "Dovoli storniranje knjižb"
+msgid "Allow updating posted moves"
+msgstr "Dovoli posodobitev knjižb"
 
 msgctxt "field:account.journal,view:"
 msgid "View"
@@ -1092,6 +1112,10 @@ msgctxt "field:account.journal.view.column,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
+msgctxt "field:account.move,company:"
+msgid "Company"
+msgstr "Družba"
+
 msgctxt "field:account.move,create_date:"
 msgid "Create Date"
 msgstr "Izdelano"
@@ -1156,10 +1180,30 @@ msgctxt "field:account.move,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
+msgctxt "field:account.move.cancel.default,description:"
+msgid "Description"
+msgstr "Opis"
+
+msgctxt "field:account.move.cancel.default,id:"
+msgid "ID"
+msgstr "ID"
+
 msgctxt "field:account.move.line,account:"
 msgid "Account"
 msgstr "Konto"
 
+msgctxt "field:account.move.line,amount:"
+msgid "Amount"
+msgstr "Znesek"
+
+msgctxt "field:account.move.line,amount_currency:"
+msgid "Amount Currency"
+msgstr "Valuta zneska"
+
+msgctxt "field:account.move.line,amount_currency_digits:"
+msgid "Amount Currency Digits"
+msgstr "Decimalke zneska"
+
 msgctxt "field:account.move.line,amount_second_currency:"
 msgid "Amount Second Currency"
 msgstr "Znesek v drugi valuti"
@@ -1264,6 +1308,62 @@ msgctxt "field:account.move.line,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
+msgctxt "field:account.move.line.template,account:"
+msgid "Account"
+msgstr "Konto"
+
+msgctxt "field:account.move.line.template,amount:"
+msgid "Amount"
+msgstr "Znesek"
+
+msgctxt "field:account.move.line.template,create_date:"
+msgid "Create Date"
+msgstr "Izdelano"
+
+msgctxt "field:account.move.line.template,create_uid:"
+msgid "Create User"
+msgstr "Izdelal"
+
+msgctxt "field:account.move.line.template,description:"
+msgid "Description"
+msgstr "Opis"
+
+msgctxt "field:account.move.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.line.template,move:"
+msgid "Move"
+msgstr "Knjižba"
+
+msgctxt "field:account.move.line.template,operation:"
+msgid "Operation"
+msgstr "Operacija"
+
+msgctxt "field:account.move.line.template,party:"
+msgid "Party"
+msgstr "Partner"
+
+msgctxt "field:account.move.line.template,party_required:"
+msgid "Party Required"
+msgstr "Partner obvezen"
+
+msgctxt "field:account.move.line.template,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+msgctxt "field:account.move.line.template,taxes:"
+msgid "Taxes"
+msgstr "Davki"
+
+msgctxt "field:account.move.line.template,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+msgctxt "field:account.move.line.template,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
+
 msgctxt "field:account.move.open_journal.ask,id:"
 msgid "ID"
 msgstr "ID"
@@ -1352,6 +1452,130 @@ msgctxt "field:account.move.reconciliation,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
+msgctxt "field:account.move.template,active:"
+msgid "Active"
+msgstr "Aktivno"
+
+msgctxt "field:account.move.template,company:"
+msgid "Company"
+msgstr "Družba"
+
+msgctxt "field:account.move.template,create_date:"
+msgid "Create Date"
+msgstr "Izdelano"
+
+msgctxt "field:account.move.template,create_uid:"
+msgid "Create User"
+msgstr "Izdelal"
+
+msgctxt "field:account.move.template,date:"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:account.move.template,description:"
+msgid "Description"
+msgstr "Opis"
+
+msgctxt "field:account.move.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template,journal:"
+msgid "Journal"
+msgstr "Dnevnik"
+
+msgctxt "field:account.move.template,keywords:"
+msgid "Keywords"
+msgstr "Ključne besede"
+
+msgctxt "field:account.move.template,lines:"
+msgid "Lines"
+msgstr "Postavke"
+
+msgctxt "field:account.move.template,name:"
+msgid "Name"
+msgstr "Naziv"
+
+msgctxt "field:account.move.template,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+msgctxt "field:account.move.template,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+msgctxt "field:account.move.template,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
+
+msgctxt "field:account.move.template.create.keywords,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.create.template,period:"
+msgid "Period"
+msgstr "Obdobje"
+
+msgctxt "field:account.move.template.create.template,template:"
+msgid "Template"
+msgstr "Predloga"
+
+msgctxt "field:account.move.template.keyword,create_date:"
+msgid "Create Date"
+msgstr "Izdelano"
+
+msgctxt "field:account.move.template.keyword,create_uid:"
+msgid "Create User"
+msgstr "Izdelal"
+
+msgctxt "field:account.move.template.keyword,digits:"
+msgid "Digits"
+msgstr "Decimalke"
+
+msgctxt "field:account.move.template.keyword,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.move.template.keyword,move:"
+msgid "Move"
+msgstr "Knjižba"
+
+msgctxt "field:account.move.template.keyword,name:"
+msgid "Name"
+msgstr "Naziv"
+
+msgctxt "field:account.move.template.keyword,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+msgctxt "field:account.move.template.keyword,required:"
+msgid "Required"
+msgstr "Obvezno"
+
+msgctxt "field:account.move.template.keyword,sequence:"
+msgid "Sequence"
+msgstr "Zap.št."
+
+msgctxt "field:account.move.template.keyword,string:"
+msgid "String"
+msgstr "Niz"
+
+msgctxt "field:account.move.template.keyword,type_:"
+msgid "Type"
+msgstr "Tip"
+
+msgctxt "field:account.move.template.keyword,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+msgctxt "field:account.move.template.keyword,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
+
 msgctxt "field:account.open_aged_balance.start,balance_type:"
 msgid "Type"
 msgstr "Tip"
@@ -1570,11 +1794,11 @@ msgstr "Od"
 
 msgctxt "field:account.reconcile.show,account:"
 msgid "Account"
-msgstr "Računovodstvo"
+msgstr "Konto"
 
 msgctxt "field:account.reconcile.show,accounts:"
 msgid "Account"
-msgstr "Računovodstvo"
+msgstr "Konto"
 
 msgctxt "field:account.reconcile.show,currency_digits:"
 msgid "Currency Digits"
@@ -1728,6 +1952,10 @@ msgctxt "field:account.tax,type:"
 msgid "Type"
 msgstr "Tip"
 
+msgctxt "field:account.tax,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Popravek cene"
+
 msgctxt "field:account.tax,write_date:"
 msgid "Write Date"
 msgstr "Zapisano"
@@ -1908,6 +2136,10 @@ msgctxt "field:account.tax.line,code:"
 msgid "Code"
 msgstr "Šifra"
 
+msgctxt "field:account.tax.line,company:"
+msgid "Company"
+msgstr "Družba"
+
 msgctxt "field:account.tax.line,create_date:"
 msgid "Create Date"
 msgstr "Izdelano"
@@ -1944,6 +2176,46 @@ msgctxt "field:account.tax.line,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
+msgctxt "field:account.tax.line.template,amount:"
+msgid "Amount"
+msgstr "Znesek"
+
+msgctxt "field:account.tax.line.template,code:"
+msgid "Code"
+msgstr "Šifra"
+
+msgctxt "field:account.tax.line.template,create_date:"
+msgid "Create Date"
+msgstr "Izdelano"
+
+msgctxt "field:account.tax.line.template,create_uid:"
+msgid "Create User"
+msgstr "Izdelal"
+
+msgctxt "field:account.tax.line.template,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.tax.line.template,line:"
+msgid "Line"
+msgstr "Postavka"
+
+msgctxt "field:account.tax.line.template,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+msgctxt "field:account.tax.line.template,tax:"
+msgid "Tax"
+msgstr "Davek"
+
+msgctxt "field:account.tax.line.template,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+msgctxt "field:account.tax.line.template,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
+
 msgctxt "field:account.tax.rule,company:"
 msgid "Company"
 msgstr "Družba"
@@ -2224,6 +2496,10 @@ msgctxt "field:account.tax.template,type:"
 msgid "Type"
 msgstr "Tip"
 
+msgctxt "field:account.tax.template,update_unit_price:"
+msgid "Update Unit Price"
+msgstr "Popravek cene"
+
 msgctxt "field:account.tax.template,write_date:"
 msgid "Write Date"
 msgstr "Zapisano"
@@ -2276,6 +2552,10 @@ msgctxt "field:party.party,supplier_tax_rule:"
 msgid "Supplier Tax Rule"
 msgstr "Davčno pravilo dobavitelja"
 
+msgctxt "help:account.account,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Prikaži samo bilanco na izpisu glavne knjige"
+
 msgctxt "help:account.account,reconcile:"
 msgid ""
 "Allow move lines of this account \n"
@@ -2296,6 +2576,10 @@ msgstr ""
 "Privzeti davek pri ročno vnešenih postavkah \n"
 "za dnevnike tipa \"odhodek\" in \"prihodek\""
 
+msgctxt "help:account.account.template,general_ledger_balance:"
+msgid "Display only the balance in the general ledger report"
+msgstr "Prikaži samo bilanco na izpisu glavne knjige"
+
 msgctxt "help:account.account.type,sequence:"
 msgid "Use to order the account type"
 msgstr "Za razvrščanje tipov kontov"
@@ -2320,10 +2604,24 @@ msgctxt "help:account.move.line,second_currency:"
 msgid "The second currency"
 msgstr "Druga valuta"
 
+msgctxt "help:account.move.line.template,description:"
+msgid "Keywords values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Zamenjave ključnih besed so označene z vijugastimi oklepaji ('{' in '}')"
+
 msgctxt "help:account.move.print_general_journal.start,posted:"
 msgid "Show only posted move"
 msgstr "Prikaži samo knjižene postavke"
 
+msgctxt "help:account.move.template,date:"
+msgid "Leave empty for today"
+msgstr "Za današnji dan pusti prazno"
+
+msgctxt "help:account.move.template,description:"
+msgid "Keyword values substitutions are identified by braces ('{' and '}')"
+msgstr ""
+"Zamenjave ključnih besed so označene z vijugastimi oklepaji ('{' in '}')"
+
 msgctxt "help:account.open_aged_balance.start,posted:"
 msgid "Show only posted move"
 msgstr "Prikaži samo knjižene postavke"
@@ -2392,6 +2690,12 @@ msgctxt "help:account.tax,sequence:"
 msgid "Use to order the taxes"
 msgstr "Za razvrščanje davkov"
 
+msgctxt "help:account.tax,update_unit_price:"
+msgid ""
+"If checked then the unit price for further tax computation willbe modified "
+"by this tax"
+msgstr "Če je vključeno, se bo cena osveževala pri bodočih izračunih davkov"
+
 msgctxt "help:account.tax.code.open_chart.start,fiscalyear:"
 msgid "Leave empty for all open fiscal year"
 msgstr "Prazno za vsa odprta poslovna leta"
@@ -2489,7 +2793,7 @@ msgstr "Kratkoročno"
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_asset_current_cash"
 msgid "Cash"
-msgstr "Denarna sredstva"
+msgstr "Denar"
 
 msgctxt ""
 "model:account.account.type.template,name:account_type_template_asset_current_receivable"
@@ -2594,7 +2898,7 @@ msgstr "Dnevnik"
 
 msgctxt "model:account.journal,name:journal_cash"
 msgid "Cash"
-msgstr "Denarna sredstva"
+msgstr "Denar"
 
 msgctxt "model:account.journal,name:journal_expense"
 msgid "Expense"
@@ -2618,7 +2922,7 @@ msgstr "Tip dnevnika"
 
 msgctxt "model:account.journal.type,name:journal_type_cash"
 msgid "Cash"
-msgstr "Denarna sredstva"
+msgstr "Denar"
 
 msgctxt "model:account.journal.type,name:journal_type_expense"
 msgid "Expense"
@@ -2652,10 +2956,18 @@ msgctxt "model:account.move,name:"
 msgid "Account Move"
 msgstr "Knjižba"
 
+msgctxt "model:account.move.cancel.default,name:"
+msgid "Cancel Moves"
+msgstr "Preklic knjižb"
+
 msgctxt "model:account.move.line,name:"
 msgid "Account Move Line"
 msgstr "Postavka knjižbe"
 
+msgctxt "model:account.move.line.template,name:"
+msgid "Account Move Line Template"
+msgstr "Predloga postavke knjižbe"
+
 msgctxt "model:account.move.open_journal.ask,name:"
 msgid "Open Journal Ask"
 msgstr "Odpri dnevnik"
@@ -2672,6 +2984,22 @@ msgctxt "model:account.move.reconciliation,name:"
 msgid "Account Move Reconciliation Lines"
 msgstr "Usklajene postavke knjižbe"
 
+msgctxt "model:account.move.template,name:"
+msgid "Account Move Template"
+msgstr "Predloga knjižbe"
+
+msgctxt "model:account.move.template.create.keywords,name:"
+msgid "Create Move from Template"
+msgstr "Izdelava knjižbe iz predloge"
+
+msgctxt "model:account.move.template.create.template,name:"
+msgid "Create Move from Template"
+msgstr "Izdelava knjižbe iz predloge"
+
+msgctxt "model:account.move.template.keyword,name:"
+msgid "Account Move Template Keyword"
+msgstr "Ključna beseda predloge knjižbe"
+
 msgctxt "model:account.open_aged_balance.start,name:"
 msgid "Open Aged Balance"
 msgstr "Odpri bilanco zapadlih postavk"
@@ -2732,6 +3060,10 @@ msgctxt "model:account.tax.line,name:"
 msgid "Tax Line"
 msgstr "Davčna postavka"
 
+msgctxt "model:account.tax.line.template,name:"
+msgid "Account Tax Line Template"
+msgstr "Predloga davčne postavke"
+
 msgctxt "model:account.tax.rule,name:"
 msgid "Tax Rule"
 msgstr "Davčno pravilo"
@@ -2872,6 +3204,14 @@ msgctxt "model:ir.action,name:act_move_reconciliation_lines"
 msgid "Reconciliation Lines"
 msgstr "Postavke uskladitve"
 
+msgctxt "model:ir.action,name:act_move_template_create"
+msgid "Create Move from Template"
+msgstr "Izdelava knjižbe iz predloge"
+
+msgctxt "model:ir.action,name:act_move_template_form"
+msgid "Account Move Template"
+msgstr "Predloga knjižbe"
+
 msgctxt "model:ir.action,name:act_open_account"
 msgid "Open Move Account"
 msgstr "Odpri konto postavke"
@@ -3160,6 +3500,14 @@ msgctxt "model:ir.ui.menu,name:menu_move_form"
 msgid "Account Moves"
 msgstr "Knjižbe"
 
+msgctxt "model:ir.ui.menu,name:menu_move_template_create"
+msgid "Create Move from Template"
+msgstr "Izdelava knjižbe iz predloge"
+
+msgctxt "model:ir.ui.menu,name:menu_move_template_form"
+msgid "Account Move Template"
+msgstr "Predloga knjižbe"
+
 msgctxt "model:ir.ui.menu,name:menu_open_balance_sheet"
 msgid "Balance Sheet"
 msgstr "Bilanca stanja"
@@ -3680,6 +4028,30 @@ msgctxt "selection:account.move.line,state:"
 msgid "Valid"
 msgstr "Odobreno"
 
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Credit"
+msgstr "Kredit"
+
+msgctxt "selection:account.move.line.template,operation:"
+msgid "Debit"
+msgstr "Debet"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Char"
+msgstr "Znakovni"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Numeric"
+msgstr "Numerični"
+
+msgctxt "selection:account.move.template.keyword,type_:"
+msgid "Party"
+msgstr "Partner"
+
 msgctxt "selection:account.open_aged_balance.start,balance_type:"
 msgid "Both"
 msgstr "Vse"
@@ -3958,6 +4330,22 @@ msgctxt "view:account.journal:"
 msgid "Journals"
 msgstr "Dnevniki"
 
+msgctxt "view:account.move.cancel.default:"
+msgid "Cancel Moves"
+msgstr "Preklic knjižb"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Template"
+msgstr "Predloga postavke knjižbe"
+
+msgctxt "view:account.move.line.template:"
+msgid "Account Move Line Templates"
+msgstr "Predloge postavk knjižbe"
+
+msgctxt "view:account.move.line.template:"
+msgid "Other Info"
+msgstr "Drugo"
+
 msgctxt "view:account.move.line:"
 msgid "Account Move Line"
 msgstr "Postavka knjižbe"
@@ -3998,6 +4386,30 @@ msgctxt "view:account.move.reconciliation:"
 msgid "Reconciliations"
 msgstr "Uskladitve"
 
+msgctxt "view:account.move.template.create.template:"
+msgid "Create Move from Template"
+msgstr "Izdelava knjižbe iz predloge"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keyword"
+msgstr "Ključna beseda predloge postavke knjižbe"
+
+msgctxt "view:account.move.template.keyword:"
+msgid "Account Move Template Keywords"
+msgstr "Ključne besede predloge postavke knjižbe"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Template"
+msgstr "Predloga postavke knjižbe"
+
+msgctxt "view:account.move.template:"
+msgid "Account Move Templates"
+msgstr "Predloge postavk knjižb"
+
+msgctxt "view:account.move.template:"
+msgid "Template"
+msgstr "Predloga"
+
 msgctxt "view:account.move:"
 msgid "Account Move"
 msgstr "Knjižba"
@@ -4106,6 +4518,14 @@ msgctxt "view:account.tax.group:"
 msgid "Tax Groups"
 msgstr "Davčne skupine"
 
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Template"
+msgstr "Predloga davčne postavke"
+
+msgctxt "view:account.tax.line.template:"
+msgid "Account Tax Line Templates"
+msgstr "Predloge davčnih postavk"
+
 msgctxt "view:account.tax.line:"
 msgid "Account Tax Line"
 msgstr "Davčna postavka"
@@ -4239,7 +4659,7 @@ msgid "Cancel"
 msgstr "Prekliči"
 
 msgctxt "wizard_button:account.create_chart,start,account:"
-msgid "Ok"
+msgid "OK"
 msgstr "V redu"
 
 msgctxt "wizard_button:account.create_chart,start,end:"
@@ -4247,7 +4667,7 @@ msgid "Cancel"
 msgstr "Prekliči"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,balance:"
-msgid "Ok"
+msgid "OK"
 msgstr "V redu"
 
 msgctxt "wizard_button:account.fiscalyear.balance_non_deferral,start,end:"
@@ -4262,6 +4682,14 @@ msgctxt "wizard_button:account.fiscalyear.close,start,end:"
 msgid "Cancel"
 msgstr "Prekliči"
 
+msgctxt "wizard_button:account.move.cancel,default,cancel:"
+msgid "OK"
+msgstr "V redu"
+
+msgctxt "wizard_button:account.move.cancel,default,end:"
+msgid "Cancel"
+msgstr "Prekliči"
+
 msgctxt "wizard_button:account.move.open_journal,ask,end:"
 msgid "Cancel"
 msgstr "Prekliči"
@@ -4286,6 +4714,22 @@ msgctxt "wizard_button:account.move.reconcile_lines,writeoff,reconcile:"
 msgid "Reconcile"
 msgstr "Uskladi"
 
+msgctxt "wizard_button:account.move.template.create,keywords,create_:"
+msgid "Create"
+msgstr "Izdelaj"
+
+msgctxt "wizard_button:account.move.template.create,keywords,end:"
+msgid "Cancel"
+msgstr "Prekliči"
+
+msgctxt "wizard_button:account.move.template.create,template,end:"
+msgid "Cancel"
+msgstr "Prekliči"
+
+msgctxt "wizard_button:account.move.template.create,template,keywords:"
+msgid "Next"
+msgstr "Naprej"
+
 msgctxt "wizard_button:account.open_aged_balance,start,end:"
 msgid "Cancel"
 msgstr "Prekliči"
@@ -4371,5 +4815,5 @@ msgid "Update"
 msgstr "Posodobitev"
 
 msgctxt "wizard_button:account.update_chart,succeed,end:"
-msgid "Ok"
+msgid "OK"
 msgstr "V redu"
diff --git a/move.py b/move.py
index a9500e9..3ad1d2b 100644
--- a/move.py
+++ b/move.py
@@ -1,15 +1,12 @@
-#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 decimal import Decimal
 import datetime
 from itertools import groupby, combinations
 from operator import itemgetter
 from collections import defaultdict
 
-try:
-    from sql import Null
-except ImportError:
-    Null = None
+from sql import Null
 from sql.aggregate import Sum
 from sql.conditionals import Coalesce, Case
 
@@ -18,7 +15,7 @@ from trytond.wizard import Wizard, StateTransition, StateView, StateAction, \
     Button
 from trytond.report import Report
 from trytond import backend
-from trytond.pyson import Eval, Bool, PYSONEncoder
+from trytond.pyson import Eval, Bool, PYSONEncoder, If
 from trytond.transaction import Transaction
 from trytond.pool import Pool, PoolMeta
 from trytond.rpc import RPC
@@ -30,7 +27,7 @@ __all__ = ['Move', 'Reconciliation', 'Line', 'OpenJournalAsk',
     'ReconcileLinesWriteOff', 'ReconcileLines',
     'UnreconcileLines',
     'Reconcile', 'ReconcileShow',
-    'CancelMoves',
+    'CancelMoves', 'CancelMovesDefault',
     'FiscalYearLine', 'FiscalYear2',
     'PrintGeneralJournalStart', 'PrintGeneralJournal', 'GeneralJournal']
 __metaclass__ = PoolMeta
@@ -52,8 +49,13 @@ class Move(ModelSQL, ModelView):
     number = fields.Char('Number', required=True, readonly=True)
     post_number = fields.Char('Post Number', readonly=True,
         help='Also known as Folio Number')
+    company = fields.Many2One('company.company', 'Company', required=True,
+        states=_MOVE_STATES, depends=_MOVE_DEPENDS)
     period = fields.Many2One('account.period', 'Period', required=True,
-            states=_MOVE_STATES, depends=_MOVE_DEPENDS, select=True)
+        domain=[
+            ('company', '=', Eval('company', -1)),
+            ],
+        states=_MOVE_STATES, depends=_MOVE_DEPENDS + ['company'], select=True)
     journal = fields.Many2One('account.journal', 'Journal', required=True,
             states=_MOVE_STATES, depends=_MOVE_DEPENDS)
     date = fields.Date('Effective Date', required=True, states=_MOVE_STATES,
@@ -68,7 +70,10 @@ class Move(ModelSQL, ModelView):
         ('posted', 'Posted'),
         ], 'State', required=True, readonly=True, select=True)
     lines = fields.One2Many('account.move.line', 'move', 'Lines',
-            states=_MOVE_STATES, depends=_MOVE_DEPENDS,
+        domain=[
+            ('account.company', '=', Eval('company', -1)),
+            ],
+        states=_MOVE_STATES, depends=_MOVE_DEPENDS + ['company'],
             context={
                 'journal': Eval('journal'),
                 'period': Eval('period'),
@@ -90,8 +95,6 @@ class Move(ModelSQL, ModelView):
                     '"%(move)s" to draft in journal "%(journal)s".'),
                 'modify_posted_move': ('You can not modify move "%s" because '
                     'it is already posted.'),
-                'company_in_move': ('You can not create lines on accounts'
-                    'of different companies in move "%s".'),
                 'date_outside_period': ('You can not create move "%(move)s" '
                     'because it\'s date is outside its period.'),
                 'draft_closed_period': ('You can not set to draft move '
@@ -114,6 +117,12 @@ class Move(ModelSQL, ModelView):
         TableHandler = backend.get('TableHandler')
         cursor = Transaction().cursor
         table = TableHandler(cursor, cls, module_name)
+        sql_table = cls.__table__()
+        pool = Pool()
+        Period = pool.get('account.period')
+        period = Period.__table__()
+        FiscalYear = pool.get('account.fiscalyear')
+        fiscalyear = FiscalYear.__table__()
 
         # Migration from 2.4:
         #   - name renamed into number
@@ -123,8 +132,19 @@ class Move(ModelSQL, ModelView):
         if table.column_exist('reference'):
             table.column_rename('reference', 'post_number')
 
+        created_company = not table.column_exist('company')
+
         super(Move, cls).__register__(module_name)
 
+        # Migration from 3.4: new company field
+        if created_company:
+            # Don't use UPDATE FROM because SQLite nor MySQL support it.
+            value = period.join(fiscalyear,
+                condition=period.fiscalyear == fiscalyear.id).select(
+                    fiscalyear.company,
+                    where=period.id == sql_table.period)
+            cursor.execute(*sql_table.update([sql_table.company], [value]))
+
         table = TableHandler(cursor, cls, module_name)
         table.index_action(['journal', 'period'], 'add')
 
@@ -132,6 +152,10 @@ class Move(ModelSQL, ModelView):
         table.index_action('create_date', action='add')
 
     @staticmethod
+    def default_company():
+        return Transaction().context.get('company')
+
+    @staticmethod
     def default_period():
         Period = Pool().get('account.period')
         return Period.find(Transaction().context.get('company'),
@@ -189,17 +213,8 @@ class Move(ModelSQL, ModelView):
     def validate(cls, moves):
         super(Move, cls).validate(moves)
         for move in moves:
-            move.check_company()
             move.check_date()
 
-    def check_company(self):
-        company_id = -1
-        for line in self.lines:
-            if company_id < 0:
-                company_id = line.account.company.id
-            if line.account.company.id != company_id:
-                self.raise_user_error('company_in_move', (self.rec_name,))
-
     def check_date(self):
         if (self.date < self.period.start_date
                 or self.date > self.period.end_date):
@@ -216,7 +231,11 @@ class Move(ModelSQL, ModelView):
 
     @classmethod
     def search_rec_name(cls, name, clause):
-        return ['OR',
+        if clause[1].startswith('!') or clause[1].startswith('not '):
+            bool_op = 'AND'
+        else:
+            bool_op = 'OR'
+        return [bool_op,
             ('post_number',) + tuple(clause[1:]),
             (cls._rec_name,) + tuple(clause[1:]),
             ]
@@ -293,17 +312,10 @@ class Move(ModelSQL, ModelView):
         '''
         pool = Pool()
         MoveLine = pool.get('account.move.line')
-        User = pool.get('res.user')
         line = MoveLine.__table__()
 
         cursor = Transaction().cursor
 
-        if (Transaction().user == 0
-                and Transaction().context.get('user')):
-            user = Transaction().context.get('user')
-        else:
-            user = Transaction().user
-        company = User(user).company
         amounts = {}
         move2draft_lines = {}
         for sub_move_ids in grouped_slice([m.id for m in moves]):
@@ -331,7 +343,7 @@ class Move(ModelSQL, ModelView):
             if not isinstance(amount, Decimal):
                 amount = Decimal(amount)
             draft_lines = MoveLine.browse(move2draft_lines.get(move.id, []))
-            if not company.currency.is_zero(amount):
+            if not move.company.currency.is_zero(amount):
                 draft_moves.append(move.id)
                 continue
             if not draft_lines:
@@ -370,28 +382,20 @@ class Move(ModelSQL, ModelView):
                     })
         return default
 
-    def cancel(self):
+    def cancel(self, default=None):
         'Return a cancel move'
-        pool = Pool()
-        Line = pool.get('account.move.line')
-        TaxLine = pool.get('account.tax.line')
-        default = self._cancel_default()
+        if default is None:
+            default = {}
+        default.update(self._cancel_default())
         cancel_move, = self.copy([self], default=default)
-        lines = []
-        tax_lines = []
         for line in cancel_move.lines:
             line.debit *= -1
             line.credit *= -1
-            lines.extend(([line], line._save_values))
-            line._values = None
             for tax_line in line.tax_lines:
                 tax_line.amount *= -1
-                tax_lines.extend(([tax_line], tax_line._save_values))
-                tax_line._values = None
-        if lines:
-            Line.write(*lines)
-        if tax_lines:
-            TaxLine.write(*tax_lines)
+            line.tax_lines = line.tax_lines  # Force tax_lines changing
+        cancel_move.lines = cancel_move.lines  # Force lines changing
+        cancel_move.save()
         return cancel_move
 
     @classmethod
@@ -473,7 +477,7 @@ class Reconciliation(ModelSQL, ModelView):
                     'configured as not reconcilable.'),
                 'reconciliation_different_parties': ('You can not reconcile '
                     'line "%(line)s" because it\'s party "%(party1)s" is '
-                    'different from %(party2)s".'),
+                    'different from "%(party2)s".'),
                 'reconciliation_unbalanced': ('You can not create a '
                     'reconciliation where debit "%(debit)s" and credit '
                     '"%(credit)s" differ.'),
@@ -585,8 +589,8 @@ class Line(ModelSQL, ModelView):
         'get_move_field', setter='set_move_field',
         searcher='search_move_field')
     amount_second_currency = fields.Numeric('Amount Second Currency',
-            digits=(16, Eval('second_currency_digits', 2)),
-            help='The amount expressed in a second currency',
+        digits=(16, Eval('second_currency_digits', 2)),
+        help='The amount expressed in a second currency',
         states={
             'required': Bool(Eval('second_currency')),
             },
@@ -602,8 +606,8 @@ class Line(ModelSQL, ModelView):
             'required': Eval('party_required', False),
             'invisible': ~Eval('party_required', False),
             },
-        depends=['party_required'])
-    party_required= fields.Function(fields.Boolean('Party Required'),
+        depends=['party_required'], ondelete='RESTRICT')
+    party_required = fields.Function(fields.Boolean('Party Required'),
         'on_change_with_party_required')
     maturity_date = fields.Date('Maturity Date',
         help='This field is used for payable and receivable lines. \n'
@@ -623,6 +627,14 @@ class Line(ModelSQL, ModelView):
             'get_currency_digits')
     second_currency_digits = fields.Function(fields.Integer(
         'Second Currency Digits'), 'get_currency_digits')
+    amount = fields.Function(fields.Numeric('Amount',
+            digits=(16, Eval('amount_currency_digits', 2)),
+            depends=['amount_currency_digits']),
+        'get_amount')
+    amount_currency = fields.Function(fields.Many2One('currency.currency',
+            'Amount Currency'), 'get_amount_currency')
+    amount_currency_digits = fields.Function(fields.Integer(
+            'Amount Currency Digits'), 'get_amount_currency')
 
     @classmethod
     def __setup__(cls):
@@ -635,6 +647,10 @@ class Line(ModelSQL, ModelView):
             ('credit_debit',
                 'CHECK(credit * debit = 0.0)',
                 'Wrong credit/debit values.'),
+            ('second_currency_sign',
+                'CHECK(COALESCE(amount_second_currency, 0) '
+                '* (debit - credit) >= 0)',
+                'wrong_second_currency_sign'),
             ]
         cls.__rpc__.update({
                 'on_write': RPC(instantiate=0),
@@ -657,6 +673,7 @@ class Line(ModelSQL, ModelView):
                 'already_reconciled': 'Line "%s" (%d) already reconciled.',
                 'party_required': 'Party is required on line "%s"',
                 'party_set': 'Party must not be set on line "%s"',
+                'wrong_second_currency_sign': 'Wrong second currency sign.',
                 })
 
     @classmethod
@@ -735,7 +752,7 @@ class Line(ModelSQL, ModelView):
                 with_rec_name=with_rec_name)
 
         if 'move' not in fields:
-            #Not manual entry
+            # Not manual entry
             if 'date' in values:
                 values = values.copy()
                 del values['date']
@@ -915,56 +932,56 @@ class Line(ModelSQL, ModelView):
         return Move.get_origin()
 
     @fields.depends('account', 'debit', 'credit', 'tax_lines', 'journal',
-        'move')
+        'move', 'amount_second_currency')
     def on_change_debit(self):
-        changes = {}
         Journal = Pool().get('account.journal')
         if self.journal or Transaction().context.get('journal'):
             journal = self.journal or Journal(Transaction().context['journal'])
             if journal.type in ('expense', 'revenue'):
-                changes['tax_lines'] = self._compute_tax_lines(journal.type)
-                if not changes['tax_lines']:
-                    del changes['tax_lines']
+                self._compute_tax_lines(journal.type)
         if self.debit:
-            changes['credit'] = Decimal('0.0')
-        return changes
+            self.credit = Decimal('0.0')
+        self._amount_second_currency_sign()
 
     @fields.depends('account', 'debit', 'credit', 'tax_lines', 'journal',
-        'move')
+        'move', 'amount_second_currency')
     def on_change_credit(self):
-        changes = {}
         Journal = Pool().get('account.journal')
         if self.journal or Transaction().context.get('journal'):
             journal = self.journal or Journal(Transaction().context['journal'])
             if journal.type in ('expense', 'revenue'):
-                changes['tax_lines'] = self._compute_tax_lines(journal.type)
-                if not changes['tax_lines']:
-                    del changes['tax_lines']
+                self._compute_tax_lines(journal.type)
         if self.credit:
-            changes['debit'] = Decimal('0.0')
-        return changes
+            self.debit = Decimal('0.0')
+        self._amount_second_currency_sign()
+
+    @fields.depends('amount_second_currency', 'debit', 'credit')
+    def on_change_amount_second_currency(self):
+        self._amount_second_currency_sign()
+
+    def _amount_second_currency_sign(self):
+        'Set correct sign to amount_second_currency'
+        if self.amount_second_currency:
+            self.amount_second_currency = \
+                self.amount_second_currency.copy_sign(self.debit - self.credit)
 
     @fields.depends('account', 'debit', 'credit', 'tax_lines', 'journal',
         'move')
     def on_change_account(self):
         Journal = Pool().get('account.journal')
 
-        changes = {}
         if Transaction().context.get('journal'):
             journal = Journal(Transaction().context['journal'])
             if journal.type in ('expense', 'revenue'):
-                changes['tax_lines'] = self._compute_tax_lines(journal.type)
-                if not changes['tax_lines']:
-                    del changes['tax_lines']
+                self._compute_tax_lines(journal.type)
 
         if self.account:
-            changes['currency_digits'] = self.account.currency_digits
+            self.currency_digits = self.account.currency_digits
             if self.account.second_currency:
-                changes['second_currency_digits'] = \
+                self.second_currency_digits = \
                     self.account.second_currency.digits
             if not self.account.party_required:
-                changes['party'] = None
-        return changes
+                self.party = None
 
     @fields.depends('account')
     def on_change_with_party_required(self, name=None):
@@ -973,17 +990,14 @@ class Line(ModelSQL, ModelView):
         return False
 
     def _compute_tax_lines(self, journal_type):
-        res = {}
         pool = Pool()
-        TaxCode = pool.get('account.tax.code')
         Tax = pool.get('account.tax')
         TaxLine = pool.get('account.tax.line')
 
         if self.move:
-            #Only for first line
-            return res
-        if self.tax_lines:
-            res['remove'] = [x['id'] for x in self.tax_lines]
+            # Only for first line
+            return
+        tax_lines = []
         if self.account:
             debit = self.debit or Decimal('0.0')
             credit = self.credit or Decimal('0.0')
@@ -1012,36 +1026,33 @@ class Line(ModelSQL, ModelView):
                 for code_id, tax_id in base_amounts:
                     if not base_amounts[code_id, tax_id]:
                         continue
-                    value = TaxLine.default_get(TaxLine._fields.keys())
-                    value.update({
-                            'amount': base_amounts[code_id, tax_id],
-                            'currency_digits': self.account.currency_digits,
-                            'code': code_id,
-                            'code.rec_name': TaxCode(code_id).rec_name,
-                            'tax': tax_id,
-                            'tax.rec_name': Tax(tax_id).rec_name,
-                            })
-                    res.setdefault('add', []).append(value)
-        return res
+                    tax_line = TaxLine(**TaxLine.default_get(
+                            TaxLine._fields.keys()))
+
+                    tax_line.amount = base_amounts[code_id, tax_id],
+                    tax_line.currency_digits = self.account.currency_digits
+                    tax_line.code = code_id
+                    tax_line.tax = tax_id
+                    tax_lines.append(tax_line)
+        self.tax_lines = tax_lines
 
     @fields.depends('move', 'party', 'account', 'debit', 'credit', 'journal')
     def on_change_party(self):
         Journal = Pool().get('account.journal')
         cursor = Transaction().cursor
-        res = {}
         if (not self.party) or self.account:
-            return res
+            return
 
         if not self.party.account_receivable \
                 or not self.party.account_payable:
-            return res
+            return
 
         if self.party and (not self.debit) and (not self.credit):
             type_name = self.__class__.debit.sql_type().base
             table = self.__table__()
             column = Coalesce(Sum(Coalesce(table.debit, 0)
                     - Coalesce(table.credit, 0)), 0).cast(type_name)
-            where = ((table.reconciliation == None)
+            where = ((table.reconciliation == Null)
                 & (table.party == self.party.id))
             cursor.execute(*table.select(column,
                     where=where
@@ -1052,16 +1063,14 @@ class Line(ModelSQL, ModelView):
                 amount = Decimal(str(amount))
             if not self.party.account_receivable.currency.is_zero(amount):
                 if amount > Decimal('0.0'):
-                    res['credit'] = \
+                    self.credit = \
                         self.party.account_receivable.currency.round(amount)
-                    res['debit'] = Decimal('0.0')
+                    self.debit = Decimal('0.0')
                 else:
-                    res['credit'] = Decimal('0.0')
-                    res['debit'] = \
+                    self.credit = Decimal('0.0')
+                    self.debit = \
                         - self.party.account_receivable.currency.round(amount)
-                res['account'] = self.party.account_receivable.id
-                res['account.rec_name'] = \
-                    self.party.account_receivable.rec_name
+                self.account = self.party.account_receivable
             else:
                 cursor.execute(*table.select(column,
                         where=where
@@ -1069,40 +1078,30 @@ class Line(ModelSQL, ModelView):
                 amount = cursor.fetchone()[0]
                 if not self.party.account_payable.currency.is_zero(amount):
                     if amount > Decimal('0.0'):
-                        res['credit'] = \
+                        self.credit = \
                             self.party.account_payable.currency.round(amount)
-                        res['debit'] = Decimal('0.0')
+                        self.debit = Decimal('0.0')
                     else:
-                        res['credit'] = Decimal('0.0')
-                        res['debit'] = \
+                        self.credit = Decimal('0.0')
+                        self.debit = \
                             - self.party.account_payable.currency.round(amount)
-                    res['account'] = self.party.account_payable.id
-                    res['account.rec_name'] = \
-                        self.party.account_payable.rec_name
+                    self.account = self.party.account_payable
 
         if self.party and self.debit:
             if self.debit > Decimal('0.0'):
-                if 'account' not in res:
-                    res['account'] = self.party.account_receivable.id
-                    res['account.rec_name'] = \
-                        self.party.account_receivable.rec_name
+                if not self.account:
+                    self.account = self.party.account_receivable
             else:
-                if 'account' not in res:
-                    res['account'] = self.party.account_payable.id
-                    res['account.rec_name'] = \
-                        self.party.account_payable.rec_name
+                if not self.account:
+                    self.account = self.party.account_payable
 
         if self.party and self.credit:
             if self.credit > Decimal('0.0'):
-                if 'account' not in res:
-                    res['account'] = self.party.account_payable.id
-                    res['account.rec_name'] = \
-                        self.party.account_payable.rec_name
+                if not self.account:
+                    self.account = self.party.account_payable
             else:
-                if 'account' not in res:
-                    res['account'] = self.party.account_receivable.id
-                    res['account.rec_name'] = \
-                        self.party.account_receivable.rec_name
+                if not self.account:
+                    self.account = self.party.account_receivable
 
         journal = None
         if self.journal:
@@ -1111,16 +1110,11 @@ class Line(ModelSQL, ModelView):
             journal = Journal(Transaction().context.get('journal'))
         if journal and self.party:
             if journal.type == 'revenue':
-                if 'account' not in res:
-                    res['account'] = self.party.account_receivable.id
-                    res['account.rec_name'] = \
-                        self.party.account_receivable.rec_name
+                if not self.account:
+                    self.account = self.party.account_receivable
             elif journal.type == 'expense':
-                if 'account' not in res:
-                    res['account'] = self.party.account_payable.id
-                    res['account.rec_name'] = \
-                        self.party.account_payable.rec_name
-        return res
+                if not self.account:
+                    self.account = self.party.account_payable
 
     def get_move_field(self, name):
         field = getattr(self.__class__, name)
@@ -1171,6 +1165,23 @@ class Line(ModelSQL, ModelView):
     order_origin = _order_move_field('origin')
     order_move_state = _order_move_field('state')
 
+    def get_amount(self, name):
+        sign = 1 if self.account.type.display_balance == 'debit-credit' else -1
+        if self.amount_second_currency is not None:
+            return self.amount_second_currency * sign
+        else:
+            return self.debit - self.credit * sign
+
+    def get_amount_currency(self, name):
+        if self.second_currency:
+            currency = self.second_currency
+        else:
+            currency = self.account.currency
+        if name == 'amount_currency':
+            return currency.id
+        elif name == 'amount_currency_digits':
+            return currency.digits
+
     def get_rec_name(self, name):
         if self.debit > self.credit:
             return self.account.rec_name
@@ -1199,6 +1210,7 @@ class Line(ModelSQL, ModelView):
             fiscalyears = FiscalYear.search([
                     ('start_date', '<=', Transaction().context['date']),
                     ('end_date', '>=', Transaction().context['date']),
+                    ('company', '=', Transaction().context.get('company')),
                     ], limit=1)
 
             fiscalyear_id = fiscalyears and fiscalyears[0].id or 0
@@ -1245,6 +1257,7 @@ class Line(ModelSQL, ModelView):
             if not Transaction().context.get('fiscalyear'):
                 fiscalyears = FiscalYear.search([
                     ('state', '=', 'open'),
+                    ('company', '=', Transaction().context.get('company')),
                     ])
                 fiscalyear_ids = [f.id for f in fiscalyears] or [0]
             else:
@@ -1428,6 +1441,34 @@ class Line(ModelSQL, ModelView):
         return value + ': ' + journal_period.rec_name
 
     @classmethod
+    def view_toolbar_get(cls):
+        pool = Pool()
+        Template = pool.get('account.move.template')
+
+        toolbar = super(Line, cls).view_toolbar_get()
+
+        # Add a wizard entry for each templates
+        context = Transaction().context
+        company = context.get('company')
+        journal = context.get('journal')
+        period = context.get('period')
+        if company and journal and period:
+            templates = Template.search([
+                    ('company', '=', company),
+                    ('journal', '=', journal),
+                    ])
+            for template in templates:
+                action = toolbar['action']
+                # Use template id for action id to auto-select the template
+                action.append({
+                        'name': template.name,
+                        'type': 'ir.action.wizard',
+                        'wiz_name': 'account.move.template.create',
+                        'id': template.id,
+                        })
+        return toolbar
+
+    @classmethod
     def fields_view_get(cls, view_id=None, view_type='form'):
         Journal = Pool().get('account.journal')
         result = super(Line, cls).fields_view_get(view_id=view_id,
@@ -1467,6 +1508,11 @@ class Line(ModelSQL, ModelView):
         return result
 
     @classmethod
+    def view_attributes(cls):
+        return [('/tree[@on_write="on_write"]', 'colors',
+                If(Eval('state') == 'draft', 'red', 'black'))]
+
+    @classmethod
     def reconcile(cls, lines, journal=None, date=None, account=None,
             description=None):
         pool = Pool()
@@ -1480,7 +1526,7 @@ class Line(ModelSQL, ModelView):
                 cls.raise_user_error('already_reconciled',
                         error_args=(line.move.number, line.id,))
 
-        lines = lines[:]
+        lines = list(lines)
         reconcile_account = None
         reconcile_party = None
         amount = Decimal('0.0')
@@ -1862,7 +1908,7 @@ class Reconcile(Wizard):
     def _default_lines(self):
         'Return the larger list of lines which can be reconciled'
         currency = self.show.account.company.currency
-        chunk = config.getint('account', 'reconciliation_chunk', 10)
+        chunk = config.getint('account', 'reconciliation_chunk', default=10)
         # Combination is exponential so it must be limited to small number
         default = []
         for lines in grouped_slice(self._all_lines(), chunk):
@@ -1895,10 +1941,11 @@ class Reconcile(Wizard):
 class ReconcileShow(ModelView):
     'Reconcile'
     __name__ = 'account.reconcile.show'
-    accounts = fields.One2Many('account.account', None, 'Account',
+    accounts = fields.Many2Many('account.account', None, None, 'Account',
         readonly=True)
     account = fields.Many2One('account.account', 'Account', readonly=True)
-    parties = fields.One2Many('party.party', None, 'Parties', readonly=True)
+    parties = fields.Many2Many('party.party', None, None, 'Parties',
+        readonly=True)
     party = fields.Many2One('party.party', 'Party', readonly=True)
     lines = fields.Many2Many('account.move.line', None, None, 'Lines',
         domain=[
@@ -1943,9 +1990,20 @@ class ReconcileShow(ModelView):
 class CancelMoves(Wizard):
     'Cancel Moves'
     __name__ = 'account.move.cancel'
-    start_state = 'cancel'
+    start_state = 'default'
+    default = StateView('account.move.cancel.default',
+        'account.move_cancel_default_view_form', [
+            Button('Cancel', 'end', 'tryton-cancel'),
+            Button('OK', 'cancel', 'tryton-ok', default=True),
+            ])
     cancel = StateTransition()
 
+    def default_cancel(self, move):
+        default = {}
+        if self.default.description:
+            default['description'] = self.default.description
+        return default
+
     def transition_cancel(self):
         pool = Pool()
         Move = pool.get('account.move')
@@ -1953,7 +2011,8 @@ class CancelMoves(Wizard):
 
         moves = Move.browse(Transaction().context['active_ids'])
         for move in moves:
-            cancel_move = move.cancel()
+            default = self.default_cancel(move)
+            cancel_move = move.cancel(default=default)
             to_reconcile = defaultdict(list)
             for line in move.lines + cancel_move.lines:
                 if line.account.reconcile:
@@ -1963,6 +2022,12 @@ class CancelMoves(Wizard):
         return 'end'
 
 
+class CancelMovesDefault(ModelView):
+    'Cancel Moves'
+    __name__ = 'account.move.cancel.default'
+    description = fields.Char('Description')
+
+
 class FiscalYearLine(ModelSQL):
     'Fiscal Year - Move Line'
     __name__ = 'account.fiscalyear-account.move.line'
@@ -2044,15 +2109,16 @@ class GeneralJournal(Report):
                 order=[('date', 'ASC'), ('id', 'ASC')])
 
     @classmethod
-    def parse(cls, report, moves, data, localcontext):
+    def get_context(cls, records, data):
+        report_context = super(GeneralJournal, cls).get_context(records, data)
+
         Company = Pool().get('company.company')
 
         company = Company(data['company'])
 
-        localcontext['company'] = company
-        localcontext['digits'] = company.currency.digits
-        localcontext['from_date'] = data['from_date']
-        localcontext['to_date'] = data['to_date']
+        report_context['company'] = company
+        report_context['digits'] = company.currency.digits
+        report_context['from_date'] = data['from_date']
+        report_context['to_date'] = data['to_date']
 
-        return super(GeneralJournal, cls).parse(report, moves, data,
-            localcontext)
+        return report_context
diff --git a/move.xml b/move.xml
index 0c1ba90..86283ca 100644
--- a/move.xml
+++ b/move.xml
@@ -16,8 +16,12 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_move_form">
             <field name="name">Account Moves</field>
             <field name="res_model">account.move</field>
-            <field name="domain">[('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]</field>
-            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
+            <field name="domain"
+                eval="[('company', '=', Eval('context', {}).get('company', -1))]"
+                pyson="1"/>
+            <field name="search_value"
+                eval="[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_move_form_view1">
             <field name="sequence" eval="10"/>
@@ -84,7 +88,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_move_reconciliation_lines">
             <field name="name">Reconciliation Lines</field>
             <field name="res_model">account.move.line</field>
-            <field name="domain">[('reconciliation', 'in', Eval('active_ids'))]</field>
+            <field name="domain"
+                eval="[('reconciliation', 'in', Eval('active_ids'))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.keyword" id="act_move_reconciliation_lines_keyword1">
             <field name="keyword">form_relate</field>
@@ -163,6 +169,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">move_line_tree_move</field>
         </record>
 
+        <record model="ir.ui.view" id="move_line_view_list_payable_receivable">
+            <field name="model">account.move.line</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="30"/>
+            <field name="name">move_line_list_payable_receivable</field>
+        </record>
+
         <record model="ir.action.act_window" id="act_move_line_form">
             <field name="name">Account Move Lines</field>
             <field name="res_model">account.move.line</field>
@@ -192,20 +205,33 @@ this repository contains the full copyright notices and license terms. -->
                 id="act_move_line_payable_receivable">
             <field name="name">Payable/Receivable Lines</field>
             <field name="res_model">account.move.line</field>
-            <field name="domain">[('party', 'in', Eval('active_ids')), ('account.kind', 'in', ['payable', 'receivable']), ('reconciliation', '=', None)]</field>
+            <field name="domain"
+                eval="[('party', 'in', Eval('active_ids')), ('account.kind', 'in', ['payable', 'receivable'])]"
+                pyson="1"/>
+            <field name="search_value"
+                eval="[('reconciliation', '=', None)]" pyson="1"/>
+            <field name="order" eval="[('date', 'DESC')]" pyson="1"/>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_move_line_payable_receivable_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="move_line_view_list_payable_receivable"/>
+            <field name="act_window" ref="act_move_line_payable_receivable"/>
         </record>
         <record model="ir.action.act_window.domain"
                 id="act_move_line_payable_receivable_domain_payable">
             <field name="name">Payable</field>
             <field name="sequence" eval="10"/>
-            <field name="domain">[('account.kind', '=', 'payable')]</field>
+            <field name="domain"
+                eval="[('account.kind', '=', 'payable')]" pyson="1"/>
             <field name="act_window" ref="act_move_line_payable_receivable"/>
         </record>
         <record model="ir.action.act_window.domain"
                 id="act_move_line_payable_receivable_domain_receivable">
             <field name="name">Receivable</field>
             <field name="sequence" eval="20"/>
-            <field name="domain">[('account.kind', '=', 'receivable')]</field>
+            <field name="domain"
+                eval="[('account.kind', '=', 'receivable')]" pyson="1"/>
             <field name="act_window" ref="act_move_line_payable_receivable"/>
         </record>
         <record model="ir.action.act_window.domain"
@@ -310,6 +336,12 @@ this repository contains the full copyright notices and license terms. -->
             <field name="action" ref="act_cancel_moves"/>
         </record>
 
+        <record model="ir.ui.view" id="move_cancel_default_view_form">
+            <field name="model">account.move.cancel.default</field>
+            <field name="type">form</field>
+            <field name="name">move_cancel_default_form</field>
+        </record>
+
         <record model="ir.ui.view" id="print_general_journal_start_view_form">
             <field name="model">account.move.print_general_journal.start</field>
             <field name="type">form</field>
diff --git a/move_template.py b/move_template.py
new file mode 100644
index 0000000..8e08832
--- /dev/null
+++ b/move_template.py
@@ -0,0 +1,363 @@
+# 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 xml.sax.saxutils import quoteattr
+from decimal import Decimal
+
+from simpleeval import simple_eval
+from sql import Null
+
+from trytond.model import ModelSQL, ModelView, fields
+from trytond.pyson import Eval
+from trytond.wizard import (Wizard, StateView, StateAction, StateTransition,
+    Button)
+from trytond.transaction import Transaction
+from trytond.pool import Pool
+from trytond.tools import decistmt
+
+__all__ = ['MoveTemplate', 'MoveTemplateKeyword',
+    'MoveLineTemplate', 'TaxLineTemplate',
+    'CreateMove', 'CreateMoveTemplate', 'CreateMoveKeywords']
+
+
+class MoveTemplate(ModelSQL, ModelView):
+    'Account Move Template'
+    __name__ = 'account.move.template'
+    name = fields.Char('Name', required=True, translate=True)
+    keywords = fields.One2Many('account.move.template.keyword', 'move',
+        'Keywords')
+    company = fields.Many2One('company.company', 'Company', required=True)
+    journal = fields.Many2One('account.journal', 'Journal', required=True)
+    date = fields.Char('Date', help='Leave empty for today')
+    description = fields.Char('Description',
+        help="Keyword values substitutions are identified "
+        "by braces ('{' and '}')")
+    lines = fields.One2Many('account.move.line.template', 'move', 'Lines',
+        domain=[
+            ('account.company', '=', Eval('company', -1)),
+            ],
+        depends=['company'])
+    active = fields.Boolean('Active')
+
+    @staticmethod
+    def default_company():
+        return Transaction().context.get('company')
+
+    @staticmethod
+    def default_active():
+        return True
+
+    def get_move(self, values):
+        'Return the move for the keyword values'
+        pool = Pool()
+        Move = pool.get('account.move')
+        Keyword = pool.get('account.move.template.keyword')
+
+        move = Move()
+        move.company = self.company
+        move.journal = self.journal
+        if self.date:
+            move.date = values.get(self.date)
+        if self.description:
+            move.description = self.description.format(
+                **dict(Keyword.format_values(self, values)))
+        move.lines = [l.get_line(values) for l in self.lines]
+
+        return move
+
+
+class MoveTemplateKeyword(ModelSQL, ModelView):
+    'Account Move Template Keyword'
+    __name__ = 'account.move.template.keyword'
+    name = fields.Char('Name', required=True)
+    string = fields.Char('String', required=True, translate=True)
+    move = fields.Many2One('account.move.template', 'Move', required=True)
+    sequence = fields.Integer('Sequence')
+    type_ = fields.Selection([
+            ('char', 'Char'),
+            ('numeric', 'Numeric'),
+            ('date', 'Date'),
+            ('party', 'Party'),
+            ], 'Type')
+    required = fields.Boolean('Required')
+    digits = fields.Integer('Digits', states={
+            'invisible': Eval('type_') != 'numeric',
+            'required': Eval('type_') == 'numeric',
+            }, depends=['type_'])
+
+    @classmethod
+    def __setup__(cls):
+        super(MoveTemplateKeyword, cls).__setup__()
+        cls._order.insert(0, ('sequence', 'ASC'))
+
+    @staticmethod
+    def order_sequence(tables):
+        table, _ = tables[None]
+        return [table.sequence == Null, table.sequence]
+
+    @staticmethod
+    def default_required():
+        return False
+
+    def get_field(self):
+        field = getattr(self, '_get_field_%s' % self.type_)()
+        field.update({
+                'name': self.name,
+                'string': self.string,
+                'required': self.required,
+                })
+        return field
+
+    def _get_field_char(self):
+        return {'type': 'char'}
+
+    def _get_field_numeric(self):
+        return {'type': 'numeric', 'digits': (16, self.digits)}
+
+    def _format_numeric(self, lang, value):
+        if value:
+            return lang.format(lang, '%.*f', (self.digits, value), True)
+        else:
+            return ''
+
+    def _get_field_date(self):
+        return {'type': 'date'}
+
+    def _format_date(self, lang, value):
+        if value:
+            return lang.strftime(value, lang.code, lang.date)
+        else:
+            return ''
+
+    def _get_field_party(self):
+        return {
+            'type': 'many2one',
+            'relation': 'party.party',
+            }
+
+    def _format_party(self, lang, value):
+        pool = Pool()
+        Party = pool.get('party.party')
+        if value:
+            return Party(value).rec_name
+        else:
+            return ''
+
+    @staticmethod
+    def format_values(template, values):
+        "Yield key and formatted value"
+        pool = Pool()
+        Lang = pool.get('ir.lang')
+
+        lang, = Lang.search([
+                ('code', '=', Transaction().language),
+                ])
+        keywords = {k.name: k for k in template.keywords}
+
+        for k, v in values.iteritems():
+            keyword = keywords[k]
+            func = getattr(keyword, '_format_%s' % keyword.type_, None)
+            if func:
+                yield k, func(lang, v)
+            else:
+                yield k, v
+
+
+class MoveLineTemplate(ModelSQL, ModelView):
+    'Account Move Line Template'
+    __name__ = 'account.move.line.template'
+    move = fields.Many2One('account.move.template', 'Move', required=True)
+    operation = fields.Selection([
+            ('debit', 'Debit'),
+            ('credit', 'Credit'),
+            ], 'Operation', required=True)
+    amount = fields.Char('Amount', required=True)
+    account = fields.Many2One('account.account', 'Account', required=True,
+        domain=[
+            ('kind', '!=', 'view'),
+            ('company', '=', Eval('_parent_move', {}).get('company', -1)),
+            ])
+    party = fields.Char('Party',
+        states={
+            'required': Eval('party_required', False),
+            'invisible': ~Eval('party_required', False),
+            },
+        depends=['party_required'])
+    party_required = fields.Function(fields.Boolean('Party Required'),
+        'on_change_with_party_required')
+    description = fields.Char('Description',
+        help="Keywords values substitutions are identified "
+        "by braces ('{' and '}')")
+    taxes = fields.One2Many('account.tax.line.template', 'line', 'Taxes')
+
+    @fields.depends('account')
+    def on_change_with_party_required(self, name=None):
+        if self.account:
+            return self.account.party_required
+        return False
+
+    def get_line(self, values):
+        'Return the move line for the keyword values'
+        pool = Pool()
+        Line = pool.get('account.move.line')
+        Keyword = pool.get('account.move.template.keyword')
+
+        line = Line()
+        amount = simple_eval(decistmt(self.amount),
+            functions={'Decimal': Decimal}, names=values)
+        amount = self.move.company.currency.round(amount)
+        if self.operation == 'debit':
+            line.debit = amount
+        else:
+            line.credit = amount
+        line.account = self.account
+        if self.party:
+            line.party = values.get(self.party)
+        if self.description:
+            line.description = self.description.format(
+                **dict(Keyword.format_values(self.move, values)))
+        line.tax_lines = [t.get_line(values) for t in self.taxes]
+
+        return line
+
+
+class TaxLineTemplate(ModelSQL, ModelView):
+    'Account Tax Line Template'
+    __name__ = 'account.tax.line.template'
+    line = fields.Many2One('account.move.line.template', 'Line', required=True)
+    amount = fields.Char('Amount', required=True)
+    code = fields.Many2One('account.tax.code', 'Code', required=True,
+        domain=[
+            ('company', '=', Eval('_parent_line', {}
+                    ).get('_parent_move', {}).get('company', -1)),
+            ])
+    tax = fields.Many2One('account.tax', 'Tax',
+        domain=[
+            ('company', '=', Eval('_parent_line', {}
+                    ).get('_parent_move', {}).get('company', -1)),
+            ])
+
+    def get_line(self, values):
+        'Return the tax line for the keyword values'
+        pool = Pool()
+        TaxLine = pool.get('account.tax.line')
+
+        line = TaxLine()
+        amount = simple_eval(decistmt(self.amount),
+            functions={'Decimal': Decimal}, names=values)
+        amount = self.line.move.company.currency.round(amount)
+        line.amount = amount
+        line.code = self.code
+        line.tax = self.tax
+        return line
+
+
+class KeywordStateView(StateView):
+
+    def get_view(self, wizard, state_name):
+        template = wizard.template.template
+        fields = {}
+        view = {
+            'model': 'account.move.template.create.keywords',
+            'view_id': 0,
+            'fields': fields,
+            }
+        field_template = ('<label name=%(name)s/>'
+            '<field name=%(name)s/>')
+        view['arch'] = ('<?xml version="1.0"?>'
+            '<form col="2" string=%s>%s</form>' % (
+                quoteattr(template.name),
+                ''.join(field_template % {'name': quoteattr(keyword.name)}
+                    for keyword in template.keywords)
+                ))
+        for keyword in template.keywords:
+            fields[keyword.name] = keyword.get_field()
+        return view
+
+    def get_defaults(self, wizard, state_name, fields):
+        return {}
+
+
+class CreateMove(Wizard):
+    'Create Move from Template'
+    __name__ = 'account.move.template.create'
+    start = StateTransition()
+    template = StateView('account.move.template.create.template',
+        'account.move_template_create_template_view_form', [
+            Button('Cancel', 'end', 'tryton-cancel'),
+            Button('Next', 'keywords', 'tryton-go-next', default=True),
+            ])
+    keywords = KeywordStateView('account.move.template.create.keywords',
+        None, [
+            Button('Cancel', 'end', 'tryton-cancel'),
+            Button('Create', 'create_', 'tryton-ok', default=True),
+            ])
+    create_ = StateTransition()
+    open_ = StateAction('account.act_move_form')
+
+    def create_move(self):
+        template = self.template.template
+        values = {}
+        for keyword in template.keywords:
+            values[keyword.name] = getattr(self.keywords, keyword.name, None)
+        move = template.get_move(values)
+        move.period = self.template.period
+        move.save()
+        return move
+
+    def transition_start(self):
+        context = Transaction().context
+        model = context.get('active_model')
+        action_id = context.get('action_id')
+        period = context.get('period')
+        if model == 'account.move.line':
+            # Template id is used as action
+            self.template.template = action_id
+            self.template.period = period
+            return 'keywords'
+        else:
+            return 'template'
+
+    def transition_create_(self):
+        model = Transaction().context.get('active_model')
+        if model:
+            self.create_move()
+            return 'end'
+        else:
+            return 'open_'
+
+    def do_open_(self, action):
+        move = self.create_move()
+        action['res_id'] = [move.id]
+        return action, {}
+
+    def end(self):
+        # XXX only for model account.move.line
+        return 'reload'
+
+
+class CreateMoveTemplate(ModelView):
+    'Create Move from Template'
+    __name__ = 'account.move.template.create.template'
+    template = fields.Many2One('account.move.template', 'Template',
+        required=True,
+        domain=[
+            ('company', '=', Eval('context', {}).get('company', -1)),
+            ])
+    period = fields.Many2One('account.period', 'Period', required=True,
+        domain=[
+            ('state', '!=', 'close'),
+            ('fiscalyear.company.id', '=',
+                Eval('context', {}).get('company', 0)),
+            ])
+
+    @staticmethod
+    def default_period():
+        pool = Pool()
+        Period = pool.get('account.period')
+        company = Transaction().context.get('company')
+        return Period.find(company, exception=False)
+
+
+class CreateMoveKeywords(ModelView):
+    'Create Move from Template'
+    __name__ = 'account.move.template.create.keywords'
diff --git a/move_template.xml b/move_template.xml
new file mode 100644
index 0000000..51658ac
--- /dev/null
+++ b/move_template.xml
@@ -0,0 +1,187 @@
+<?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. -->
+<tryton>
+    <data>
+        <record model="ir.ui.view" id="move_template_view_form">
+            <field name="model">account.move.template</field>
+            <field name="type">form</field>
+            <field name="name">move_template_form</field>
+        </record>
+        <record model="ir.ui.view" id="move_template_view_list">
+            <field name="model">account.move.template</field>
+            <field name="type">tree</field>
+            <field name="name">move_template_list</field>
+        </record>
+        <record model="ir.action.act_window" id="act_move_template_form">
+            <field name="name">Account Move Template</field>
+            <field name="res_model">account.move.template</field>
+            <field name="domain"
+                eval="[('company', '=', Eval('context', {}).get('company', -1))]"
+                pyson="1"/>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_move_template_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="move_template_view_list"/>
+            <field name="act_window" ref="act_move_template_form"/>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_move_template_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="move_template_view_form"/>
+            <field name="act_window" ref="act_move_template_form"/>
+        </record>
+        <menuitem parent="menu_journal_configuration"
+            action="act_move_template_form" id="menu_move_template_form"/>
+
+        <record model="ir.model.access" id="access_move_template">
+            <field name="model" search="[('model', '=', 'account.move.template')]"/>
+            <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_move_template_account">
+            <field name="model" search="[('model', '=', 'account.move.template')]"/>
+            <field name="group" ref="group_account"/>
+            <field name="perm_read" eval="True"/>
+            <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_move_template_account_admin">
+            <field name="model" search="[('model', '=', 'account.move.template')]"/>
+            <field name="group" ref="group_account_admin"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="True"/>
+            <field name="perm_create" eval="True"/>
+            <field name="perm_delete" eval="True"/>
+        </record>
+
+        <record model="ir.ui.view" id="move_template_keyword_view_form">
+            <field name="model">account.move.template.keyword</field>
+            <field name="type">form</field>
+            <field name="name">move_template_keyword_form</field>
+        </record>
+        <record model="ir.ui.view" id="move_template_keyword_view_list">
+            <field name="model">account.move.template.keyword</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="10"/>
+            <field name="name">move_template_keyword_list</field>
+        </record>
+        <record model="ir.ui.view" id="move_template_keyword_view_list_sequence">
+            <field name="model">account.move.template.keyword</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="20"/>
+            <field name="name">move_template_keyword_list_sequence</field>
+        </record>
+
+        <record model="ir.model.access" id="access_move_template_keyword">
+            <field name="model" search="[('model', '=', 'account.move.template.keyword')]"/>
+            <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_move_template_keyword_account">
+            <field name="model" search="[('model', '=', 'account.move.template.keyword')]"/>
+            <field name="group" ref="group_account"/>
+            <field name="perm_read" eval="True"/>
+            <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_move_template_keyword_account_admin">
+            <field name="model" search="[('model', '=', 'account.move.template.keyword')]"/>
+            <field name="group" ref="group_account_admin"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="True"/>
+            <field name="perm_create" eval="True"/>
+            <field name="perm_delete" eval="True"/>
+        </record>
+
+        <record model="ir.ui.view" id="move_line_template_view_form">
+            <field name="model">account.move.line.template</field>
+            <field name="type">form</field>
+            <field name="name">move_line_template_form</field>
+        </record>
+        <record model="ir.ui.view" id="move_line_template_view_list">
+            <field name="model">account.move.line.template</field>
+            <field name="type">tree</field>
+            <field name="name">move_line_template_list</field>
+        </record>
+
+        <record model="ir.model.access" id="access_move_line_template">
+            <field name="model" search="[('model', '=', 'account.move.line.template')]"/>
+            <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_move_line_template_account">
+            <field name="model" search="[('model', '=', 'account.move.line.template')]"/>
+            <field name="group" ref="group_account"/>
+            <field name="perm_read" eval="True"/>
+            <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_move_line_template_account_admin">
+            <field name="model" search="[('model', '=', 'account.move.line.template')]"/>
+            <field name="group" ref="group_account_admin"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="True"/>
+            <field name="perm_create" eval="True"/>
+            <field name="perm_delete" eval="True"/>
+        </record>
+
+        <record model="ir.ui.view" id="tax_line_template_view_form">
+            <field name="model">account.tax.line.template</field>
+            <field name="type">form</field>
+            <field name="name">tax_line_template_form</field>
+        </record>
+        <record model="ir.ui.view" id="tax_line_template_view_list">
+            <field name="model">account.tax.line.template</field>
+            <field name="type">tree</field>
+            <field name="name">tax_line_template_list</field>
+        </record>
+
+        <record model="ir.model.access" id="access_tax_line_template">
+            <field name="model" search="[('model', '=', 'account.tax.line.template')]"/>
+            <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_tax_line_template_account">
+            <field name="model" search="[('model', '=', 'account.tax.line.template')]"/>
+            <field name="group" ref="group_account"/>
+            <field name="perm_read" eval="True"/>
+            <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_tax_line_template_account_admin">
+            <field name="model" search="[('model', '=', 'account.tax.line.template')]"/>
+            <field name="group" ref="group_account_admin"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="True"/>
+            <field name="perm_create" eval="True"/>
+            <field name="perm_delete" eval="True"/>
+        </record>
+
+        <record model="ir.ui.view" id="move_template_create_template_view_form">
+            <field name="model">account.move.template.create.template</field>
+            <field name="type">form</field>
+            <field name="name">move_template_create_template_form</field>
+        </record>
+
+        <record model="ir.action.wizard" id="act_move_template_create">
+            <field name="name">Create Move from Template</field>
+            <field name="wiz_name">account.move.template.create</field>
+        </record>
+        <menuitem parent="menu_entries" action="act_move_template_create"
+            id="menu_move_template_create"/>
+    </data>
+</tryton>
diff --git a/party.py b/party.py
index c7f2d7b..c96ffee 100644
--- a/party.py
+++ b/party.py
@@ -1,7 +1,8 @@
-#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 decimal import Decimal
-from sql import Literal
+
+from sql import Literal, Null
 from sql.aggregate import Sum
 from sql.conditionals import Coalesce
 
@@ -9,6 +10,7 @@ from trytond.model import fields
 from trytond.pyson import Eval, Bool
 from trytond.transaction import Transaction
 from trytond.pool import Pool, PoolMeta
+from trytond.tools import reduce_ids, grouped_slice
 
 __all__ = ['Party']
 __metaclass__ = PoolMeta
@@ -66,7 +68,7 @@ class Party:
         '''
         Function to compute receivable, payable (today or not) for party ids.
         '''
-        res = {}
+        result = {}
         pool = Pool()
         MoveLine = pool.get('account.move.line')
         Account = pool.get('account.account')
@@ -81,50 +83,50 @@ class Party:
             if name not in ('receivable', 'payable',
                     'receivable_today', 'payable_today'):
                 raise Exception('Bad argument')
-            res[name] = dict((p.id, Decimal('0.0')) for p in parties)
+            result[name] = dict((p.id, Decimal('0.0')) for p in parties)
 
-        user_id = Transaction().user
-        if user_id == 0 and 'user' in Transaction().context:
-            user_id = Transaction().context['user']
-        user = User(user_id)
+        user = User(Transaction().user)
         if not user.company:
-            return res
+            return result
         company_id = user.company.id
 
         line_query, _ = MoveLine.query_get(line)
 
+        amount = Sum(Coalesce(line.debit, 0) - Coalesce(line.credit, 0))
         for name in names:
             code = name
-            today_query = Literal(True)
+            today_where = Literal(True)
             if name in ('receivable_today', 'payable_today'):
                 code = name[:-6]
-                today_query = ((line.maturity_date <= Date.today())
-                    | (line.maturity_date == None))
-
-            cursor.execute(*line.join(account,
-                    condition=account.id == line.account
-                    ).select(line.party,
-                    Sum(Coalesce(line.debit, 0) - Coalesce(line.credit, 0)),
-                    where=account.active
-                    & (account.kind == code)
-                    & line.party.in_([p.id for p in parties])
-                    & (line.reconciliation == None)
-                    & (account.company == company_id)
-                    & line_query & today_query,
-                    group_by=line.party))
-            for party_id, sum in cursor.fetchall():
-                # SQLite uses float for SUM
-                if not isinstance(sum, Decimal):
-                    sum = Decimal(str(sum))
-                res[name][party_id] = sum
-        return res
+                today_where = ((line.maturity_date <= Date.today())
+                    | (line.maturity_date == Null))
+            for sub_parties in grouped_slice(parties):
+                sub_ids = [p.id for p in sub_parties]
+                party_where = reduce_ids(line.party, sub_ids)
+                cursor.execute(*line.join(account,
+                        condition=account.id == line.account
+                        ).select(line.party, amount,
+                        where=(account.active
+                            & (account.kind == code)
+                            & (line.reconciliation == Null)
+                            & (account.company == company_id)
+                            & line_query
+                            & party_where
+                            & today_where
+                            & (account.kind == code)),
+                        group_by=line.party))
+                for party, value in cursor.fetchall():
+                    # SQLite uses float for SUM
+                    if not isinstance(value, Decimal):
+                        value = Decimal(str(value))
+                    result[name][party] = value
+        return result
 
     @classmethod
     def search_receivable_payable(cls, name, clause):
         pool = Pool()
         MoveLine = pool.get('account.move.line')
         Account = pool.get('account.account')
-        Company = pool.get('company.company')
         User = pool.get('res.user')
         Date = pool.get('ir.date')
 
@@ -135,33 +137,17 @@ class Party:
                 'receivable_today', 'payable_today'):
             raise Exception('Bad argument')
 
-        company_id = None
-        user_id = Transaction().user
-        if user_id == 0 and 'user' in Transaction().context:
-            user_id = Transaction().context['user']
-        user = User(user_id)
-        if Transaction().context.get('company'):
-            child_companies = Company.search([
-                    ('parent', 'child_of', [user.main_company.id]),
-                    ])
-            if Transaction().context['company'] in child_companies:
-                company_id = Transaction().context['company']
-
-        if not company_id:
-            if user.company:
-                company_id = user.company.id
-            elif user.main_company:
-                company_id = user.main_company.id
-
-        if not company_id:
+        user = User(Transaction().user)
+        if not user.company:
             return []
+        company_id = user.company.id
 
         code = name
         today_query = Literal(True)
         if name in ('receivable_today', 'payable_today'):
             code = name[:-6]
             today_query = ((line.maturity_date <= Date.today())
-                | (line.maturity_date == None))
+                | (line.maturity_date == Null))
 
         line_query, _ = MoveLine.query_get(line)
         Operator = fields.SQL_OPERATORS[clause[1]]
@@ -170,8 +156,8 @@ class Party:
                 ).select(line.party,
                     where=account.active
                     & (account.kind == code)
-                    & (line.party != None)
-                    & (line.reconciliation == None)
+                    & (line.party != Null)
+                    & (line.reconciliation == Null)
                     & (account.company == company_id)
                     & line_query & today_query,
                     group_by=line.party,
diff --git a/period.py b/period.py
index 7d5dd1a..b8cc16f 100644
--- a/period.py
+++ b/period.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 ModelView, ModelSQL, fields
 from trytond.wizard import Wizard, StateTransition
 from trytond.pyson import Eval
@@ -34,15 +34,21 @@ class Period(ModelSQL, ModelView):
         ('close', 'Close'),
         ], 'State', readonly=True, required=True)
     post_move_sequence = fields.Many2One('ir.sequence', 'Post Move Sequence',
-        domain=[('code', '=', 'account.move')],
-        context={'code': 'account.move'})
+        domain=[
+            ('code', '=', 'account.move'),
+            ['OR',
+                ('company', '=', None),
+                ('company', '=', Eval('company', -1)),
+                ],
+            ],
+        depends=['company'])
     type = fields.Selection([
             ('standard', 'Standard'),
             ('adjustment', 'Adjustment'),
             ], 'Type', required=True,
         states=_STATES, depends=_DEPENDS, select=True)
     company = fields.Function(fields.Many2One('company.company', 'Company',),
-        'get_company', searcher='search_company')
+        'on_change_with_company', searcher='search_company')
 
     @classmethod
     def __register__(cls, module_name):
@@ -78,9 +84,6 @@ class Period(ModelSQL, ModelView):
                     'overlap.'),
                 'check_move_sequence': ('Period "%(first)s" and "%(second)s" '
                     'have the same sequence.'),
-                'check_move_sequence_company': ('Company of sequence '
-                    '"%(sequence)s" does not match the company of period '
-                    '"%(period)s" to which it is assigned to.'),
                 'fiscalyear_dates': ('Dates of period "%s" are outside '
                     'are outside it\'s fiscal year dates.'),
                 })
@@ -93,8 +96,10 @@ class Period(ModelSQL, ModelView):
     def default_type():
         return 'standard'
 
-    def get_company(self, name):
-        return self.fiscalyear.company.id
+    @fields.depends('fiscalyear')
+    def on_change_with_company(self, name=None):
+        if self.fiscalyear:
+            return self.fiscalyear.company.id
 
     @classmethod
     def search_company(cls, name, clause):
@@ -148,12 +153,6 @@ class Period(ModelSQL, ModelView):
                     'first': self.rec_name,
                     'second': periods[0].rec_name,
                     })
-        if (self.post_move_sequence.company and
-                self.post_move_sequence.company != self.fiscalyear.company):
-            self.raise_user_error('check_move_sequence_company', {
-                    'sequence': self.post_move_sequence.rec_name,
-                    'period': self.rec_name,
-                    })
 
     @classmethod
     def find(cls, company_id, date=None, exception=True, test_state=True):
@@ -251,9 +250,14 @@ class Period(ModelSQL, ModelView):
         actions = iter(args)
         args = []
         for periods, values in zip(actions, actions):
-            for key in values.keys():
+            for key, value in values.iteritems():
                 if key in ('start_date', 'end_date', 'fiscalyear'):
-                    cls._check(periods)
+                    def modified(period):
+                        if key in ['start_date', 'end_date']:
+                            return getattr(period, key) != value
+                        else:
+                            return period.fiscalyear .id != value
+                    cls._check(filter(modified, periods))
                     break
             if values.get('state') == 'open':
                 for period in periods:
@@ -295,10 +299,10 @@ class Period(ModelSQL, ModelView):
             unposted_move, = unposted_moves
             cls.raise_user_error('close_period_non_posted_move', {
                     'period': unposted_move.period.rec_name,
-                    'move':  unposted_move.rec_name,
+                    'move': unposted_move.rec_name,
                     })
-        #First close the period to be sure
-        #it will not have new journal.period created between.
+        # First close the period to be sure
+        # it will not have new journal.period created between.
         cls.write(periods, {
                 'state': 'close',
                 })
@@ -320,7 +324,11 @@ class Period(ModelSQL, ModelView):
 
     @classmethod
     def search_rec_name(cls, name, clause):
-        return ['OR',
+        if clause[1].startswith('!') or clause[1].startswith('not '):
+            bool_op = 'AND'
+        else:
+            bool_op = 'OR'
+        return [bool_op,
             ('code',) + tuple(clause[1:]),
             (cls._rec_name,) + tuple(clause[1:]),
             ]
diff --git a/period.xml b/period.xml
index 5b93f8f..7da9762 100644
--- a/period.xml
+++ b/period.xml
@@ -16,7 +16,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_period_form">
             <field name="name">Periods</field>
             <field name="res_model">account.period</field>
-            <field name="domain">[('fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]</field>
+            <field name="domain"
+                eval="[('fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_period_form_view1">
             <field name="sequence" eval="10"/>
@@ -71,7 +73,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_period_form2">
             <field name="name">Periods</field>
             <field name="res_model">account.period</field>
-            <field name="domain">[('state', 'in', ['open']), ('fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]</field>
+            <field name="domain"
+                eval="[('state', 'in', ['open']), ('fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_period_form2_view1">
             <field name="sequence" eval="10"/>
@@ -91,7 +95,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="global_p" eval="True"/>
         </record>
         <record model="ir.rule" id="rule_period1">
-            <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_period"/>
         </record>
     </data>
diff --git a/setup.py b/setup.py
index 663f810..d125976 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 = ['python-dateutil', 'python-sql']
+requires = ['python-dateutil', 'python-sql >= 0.4', 'simpleeval']
 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/tax.py b/tax.py
index 0ad69a7..38b772a 100644
--- a/tax.py
+++ b/tax.py
@@ -1,8 +1,12 @@
-#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 datetime
+from collections import namedtuple
 from decimal import Decimal
+
+from sql import Null
 from sql.aggregate import Sum
+from itertools import groupby
 
 from trytond.model import ModelView, ModelSQL, MatchMixin, fields
 from trytond.wizard import Wizard, StateView, StateAction, Button
@@ -231,7 +235,11 @@ class TaxCode(ModelSQL, ModelView):
 
     @classmethod
     def search_rec_name(cls, name, clause):
-        return ['OR',
+        if clause[1].startswith('!') or clause[1].startswith('not '):
+            bool_op = 'AND'
+        else:
+            bool_op = 'OR'
+        return [bool_op,
             ('code',) + tuple(clause[1:]),
             (cls._rec_name,) + tuple(clause[1:]),
             ]
@@ -366,6 +374,11 @@ class TaxTemplate(ModelSQL, ModelView):
         ('fixed', 'Fixed'),
         ('none', 'None'),
         ], 'Type', required=True)
+    update_unit_price = fields.Boolean('Update Unit Price',
+        states={
+            'invisible': Bool(Eval('parent')),
+            },
+        depends=['parent'])
     parent = fields.Many2One('account.tax.template', 'Parent')
     childs = fields.One2Many('account.tax.template', 'parent', 'Children')
     invoice_account = fields.Many2One('account.account.template',
@@ -394,6 +407,10 @@ class TaxTemplate(ModelSQL, ModelView):
         super(TaxTemplate, cls).__setup__()
         cls._order.insert(0, ('sequence', 'ASC'))
         cls._order.insert(0, ('account', 'ASC'))
+        cls._error_messages.update({
+                'update_unit_price_with_parent': ('"Update Unit Price" can '
+                    'not be set on tax "%(template)s" which has a parent.'),
+                })
 
     @classmethod
     def __register__(cls, module_name):
@@ -405,7 +422,7 @@ class TaxTemplate(ModelSQL, ModelView):
         # Migration from 1.0 group is no more required
         table.not_null_action('group', action='remove')
 
-        #Migration from 2.4: drop required on sequence
+        # Migration from 2.4: drop required on sequence
         table.not_null_action('sequence', action='remove')
 
         # Migration from 2.8: rename percentage into rate
@@ -416,10 +433,22 @@ class TaxTemplate(ModelSQL, ModelView):
                     values=[sql_table.percentage / 100]))
             table.drop_column('percentage')
 
+    @classmethod
+    def validate(cls, tax_templates):
+        super(TaxTemplate, cls).validate(tax_templates)
+        for tax_template in tax_templates:
+            tax_template.check_update_unit_price()
+
+    def check_update_unit_price(self):
+        if self.update_unit_price and self.parent:
+            self.raise_user_error('update_unit_price_with_parent', {
+                    'template': self.rec_name,
+                    })
+
     @staticmethod
     def order_sequence(tables):
         table, _ = tables[None]
-        return [table.sequence == None, table.sequence]
+        return [table.sequence == Null, table.sequence]
 
     @staticmethod
     def default_type():
@@ -445,6 +474,10 @@ class TaxTemplate(ModelSQL, ModelView):
     def default_credit_note_tax_sign():
         return Decimal('1')
 
+    @staticmethod
+    def default_update_unit_price():
+        return False
+
     def _get_tax_value(self, tax=None):
         '''
         Set values for tax creation.
@@ -453,7 +486,7 @@ class TaxTemplate(ModelSQL, ModelView):
         for field in ('name', 'description', 'sequence', 'amount',
                 'rate', 'type', 'invoice_base_sign', 'invoice_tax_sign',
                 'credit_note_base_sign', 'credit_note_tax_sign',
-                'start_date', 'end_date'):
+                'start_date', 'end_date', 'update_unit_price'):
             if not tax or getattr(tax, field) != getattr(self, field):
                 res[field] = getattr(self, field)
         for field in ('group',):
@@ -595,6 +628,13 @@ class Tax(ModelSQL, ModelView):
         ('fixed', 'Fixed'),
         ('none', 'None'),
         ], 'Type', required=True)
+    update_unit_price = fields.Boolean('Update Unit Price',
+        states={
+            'invisible': Bool(Eval('parent')),
+            },
+        depends=['parent'],
+        help=('If checked then the unit price for further tax computation will'
+            'be modified by this tax'))
     parent = fields.Many2One('account.tax', 'Parent', ondelete='CASCADE')
     childs = fields.One2Many('account.tax', 'parent', 'Children')
     company = fields.Many2One('company.company', 'Company', required=True,
@@ -625,9 +665,13 @@ class Tax(ModelSQL, ModelView):
         depends=['company', 'type'])
     invoice_base_code = fields.Many2One('account.tax.code',
         'Invoice Base Code',
+        domain=[
+            ('company', '=', Eval('company', -1)),
+            ],
         states={
             'readonly': Eval('type') == 'none',
-            }, depends=['type'])
+            },
+        depends=['type', 'company'])
     invoice_base_sign = fields.Numeric('Invoice Base Sign', digits=(2, 0),
         help='Usualy 1 or -1',
         states={
@@ -636,9 +680,13 @@ class Tax(ModelSQL, ModelView):
             }, depends=['type'])
     invoice_tax_code = fields.Many2One('account.tax.code',
         'Invoice Tax Code',
+        domain=[
+            ('company', '=', Eval('company', -1)),
+            ],
         states={
             'readonly': Eval('type') == 'none',
-            }, depends=['type'])
+            },
+        depends=['type', 'company'])
     invoice_tax_sign = fields.Numeric('Invoice Tax Sign', digits=(2, 0),
         help='Usualy 1 or -1',
         states={
@@ -647,9 +695,13 @@ class Tax(ModelSQL, ModelView):
             }, depends=['type'])
     credit_note_base_code = fields.Many2One('account.tax.code',
         'Credit Note Base Code',
+        domain=[
+            ('company', '=', Eval('company', -1)),
+            ],
         states={
             'readonly': Eval('type') == 'none',
-            }, depends=['type'])
+            },
+        depends=['type', 'company'])
     credit_note_base_sign = fields.Numeric('Credit Note Base Sign',
         digits=(2, 0), help='Usualy 1 or -1',
         states={
@@ -658,9 +710,13 @@ class Tax(ModelSQL, ModelView):
             }, depends=['type'])
     credit_note_tax_code = fields.Many2One('account.tax.code',
         'Credit Note Tax Code',
+        domain=[
+            ('company', '=', Eval('company', -1)),
+            ],
         states={
             'readonly': Eval('type') == 'none',
-            }, depends=['type'])
+            },
+        depends=['type', 'company'])
     credit_note_tax_sign = fields.Numeric('Credit Note Tax Sign',
         digits=(2, 0), help='Usualy 1 or -1',
         states={
@@ -673,6 +729,10 @@ class Tax(ModelSQL, ModelView):
     def __setup__(cls):
         super(Tax, cls).__setup__()
         cls._order.insert(0, ('sequence', 'ASC'))
+        cls._error_messages.update({
+                'update_unit_price_with_parent': ('"Update Unit Price" can '
+                    'not be set on tax "%(template)s" which has a parent.'),
+                })
 
     @classmethod
     def __register__(cls, module_name):
@@ -695,10 +755,22 @@ class Tax(ModelSQL, ModelView):
                     values=[sql_table.percentage / 100]))
             table.drop_column('percentage')
 
+    @classmethod
+    def validate(cls, taxes):
+        super(Tax, cls).validate(taxes)
+        for tax in taxes:
+            tax.check_update_unit_price()
+
+    def check_update_unit_price(self):
+        if self.parent and self.update_unit_price:
+            self.raise_user_error('update_unit_price_with_parent', {
+                    'tax': self.rec_name,
+                    })
+
     @staticmethod
     def order_sequence(tables):
         table, _ = tables[None]
-        return [table.sequence == None, table.sequence]
+        return [table.sequence == Null, table.sequence]
 
     @staticmethod
     def default_active():
@@ -729,6 +801,10 @@ class Tax(ModelSQL, ModelView):
         return Decimal('1')
 
     @staticmethod
+    def default_update_unit_price():
+        return False
+
+    @staticmethod
     def default_company():
         return Transaction().context.get('company')
 
@@ -754,26 +830,81 @@ class Tax(ModelSQL, ModelView):
                 'tax': self,
                 }
 
+    def _group_taxes(self):
+        'Key method used to group taxes'
+        return (self.sequence,)
+
     @classmethod
     def _unit_compute(cls, taxes, price_unit, date):
         res = []
+        for _, group_taxes in groupby(taxes, key=cls._group_taxes):
+            unit_price_variation = 0
+            for tax in group_taxes:
+                start_date = tax.start_date or datetime.date.min
+                end_date = tax.end_date or datetime.date.max
+                if not (start_date <= date <= end_date):
+                    continue
+                if tax.type != 'none':
+                    value = tax._process_tax(price_unit)
+                    res.append(value)
+                    if tax.update_unit_price:
+                        unit_price_variation += value['amount']
+                if len(tax.childs):
+                    res.extend(cls._unit_compute(tax.childs, price_unit, date))
+            price_unit += unit_price_variation
+        return res
+
+    @classmethod
+    def _reverse_rate_amount(cls, taxes, date):
+        rate, amount = 0, 0
         for tax in taxes:
             start_date = tax.start_date or datetime.date.min
             end_date = tax.end_date or datetime.date.max
             if not (start_date <= date <= end_date):
                 continue
-            if tax.type != 'none':
-                res.append(tax._process_tax(price_unit))
-            if len(tax.childs):
-                res.extend(cls._unit_compute(tax.childs, price_unit, date))
-        return res
+
+            if tax.type == 'percentage':
+                rate += tax.rate
+            elif tax.type == 'fixed':
+                amount += tax.amount
+
+            if tax.childs:
+                child_rate, child_amount = cls._reverse_rate_amount(
+                    tax.childs, date)
+                rate += child_rate
+                amount += child_amount
+        return rate, amount
+
+    @classmethod
+    def _reverse_unit_compute(cls, price_unit, taxes, date):
+        rate, amount = 0, 0
+        update_unit_price = False
+        unit_price_variation_amount = 0
+        unit_price_variation_rate = 0
+        for _, group_taxes in groupby(taxes, key=cls._group_taxes):
+            group_taxes = list(group_taxes)
+            g_rate, g_amount = cls._reverse_rate_amount(group_taxes, date)
+            if update_unit_price:
+                g_amount += unit_price_variation_amount * g_rate
+                g_rate += unit_price_variation_rate * g_rate
+
+            g_update_unit_price = any(t.update_unit_price for t in group_taxes)
+            update_unit_price |= g_update_unit_price
+            if g_update_unit_price:
+                unit_price_variation_amount += g_amount
+                unit_price_variation_rate += g_rate
+
+            rate += g_rate
+            amount += g_amount
+
+        return (price_unit - amount) / (1 + rate)
 
     @classmethod
-    def sort_taxes(cls, taxes):
+    def sort_taxes(cls, taxes, reverse=False):
         '''
         Return a list of taxes sorted
         '''
-        return sorted(taxes, key=lambda t: (t.sequence, t.id))
+        return sorted(taxes, key=lambda t: (t.sequence, t.id), reverse=reverse)
 
     @classmethod
     def compute(cls, taxes, price_unit, quantity, date=None):
@@ -796,6 +927,18 @@ class Tax(ModelSQL, ModelView):
             row['amount'] *= quantity
         return res
 
+    @classmethod
+    def reverse_compute(cls, price_unit, taxes, date=None):
+        '''
+        Reverse compute the price_unit for taxes at the date.
+        '''
+        pool = Pool()
+        Date = pool.get('ir.date')
+        if date is None:
+            date = Date.today()
+        taxes = cls.sort_taxes(taxes)
+        return cls._reverse_unit_compute(price_unit, taxes, date)
+
     def update_tax(self, template2tax_code, template2account,
             template2tax=None):
         '''
@@ -908,6 +1051,113 @@ class Tax(ModelSQL, ModelView):
                 template2tax=template2tax)
 
 
+class _TaxKey(dict):
+
+    def __init__(self, **kwargs):
+        self.update(kwargs)
+
+    def _key(self):
+        return (self['base_code'], self['base_sign'],
+            self['tax_code'], self['tax_sign'],
+            self['account'], self['tax'])
+
+    def __eq__(self, other):
+        if isinstance(other, _TaxKey):
+            return self._key() == other._key()
+        return self._key() == other
+
+    def __hash__(self):
+        return hash(self._key())
+
+_TaxableLine = namedtuple('_TaxableLine', ('taxes', 'unit_price', 'quantity'))
+
+
+class TaxableMixin(object):
+
+    @property
+    def taxable_lines(self):
+        """A list of tuples where
+            - the first element is the taxes applicable
+            - the second element is the line unit price
+            - the third element is the line quantity
+        """
+        return []
+
+    @property
+    def tax_type(self):
+        "The taxation type it can be 'invoice' or 'credit_note'"
+        return None
+
+    @property
+    def currency(self):
+        "The currency used by the taxable object"
+        return None
+
+    @property
+    def tax_date(self):
+        "Date to use when computing the tax"
+        pool = Pool()
+        Date = pool.get('ir.date')
+        return Date.today()
+
+    def _get_tax_context(self):
+        return {}
+
+    @staticmethod
+    def _compute_tax_line(type_, amount, base, tax):
+        assert type_ in ('invoice', 'credit_note')
+
+        line = {}
+        line['manual'] = False
+        line['description'] = tax.description
+        line['base'] = base
+        line['amount'] = amount
+        line['tax'] = tax.id if tax else None
+
+        for attribute in ['base_code', 'tax_code', 'account']:
+            value = getattr(tax, '%s_%s' % (type_, attribute), None)
+            line[attribute] = value.id if value else None
+
+        for attribute in ['base_sign', 'tax_sign']:
+            value = getattr(tax, '%s_%s' % (type_, attribute), None)
+            line[attribute] = value
+
+        return _TaxKey(**line)
+
+    def _round_taxes(self, taxes):
+        if not self.currency:
+            return
+        for taxline in taxes.itervalues():
+            for attribute in ('base', 'amount'):
+                taxline[attribute] = self.currency.round(taxline[attribute])
+
+    def _get_taxes(self):
+        pool = Pool()
+        Tax = pool.get('account.tax')
+        Configuration = pool.get('account.configuration')
+
+        config = Configuration(1)
+        taxes = {}
+        with Transaction().set_context(self._get_tax_context()):
+            taxable_lines = [_TaxableLine(*params)
+                for params in self.taxable_lines]
+            for line in taxable_lines:
+                l_taxes = Tax.compute(line.taxes, line.unit_price,
+                    line.quantity, self.tax_date)
+                for tax in l_taxes:
+                    taxline = self._compute_tax_line(self.tax_type, **tax)
+                    if taxline not in taxes:
+                        taxes[taxline] = taxline
+                    else:
+                        taxes[taxline]['base'] += taxline['base']
+                        taxes[taxline]['amount'] += taxline['amount']
+                if config.tax_rounding == 'line':
+                    self._round_taxes(taxes)
+        if config.tax_rounding == 'document':
+            self._round_taxes(taxes)
+        return taxes
+
+
 class TaxLine(ModelSQL, ModelView):
     'Tax Line'
     __name__ = 'account.tax.line'
@@ -917,11 +1167,21 @@ class TaxLine(ModelSQL, ModelView):
     amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)),
         required=True, depends=['currency_digits'])
     code = fields.Many2One('account.tax.code', 'Code', select=True,
-        required=True)
+        required=True,
+        domain=[
+            ('company', '=', Eval('company', -1)),
+            ],
+        depends=['company'])
     tax = fields.Many2One('account.tax', 'Tax', select=True,
-        ondelete='RESTRICT')
+        ondelete='RESTRICT',
+        domain=[
+            ('company', '=', Eval('company', -1)),
+            ],
+        depends=['company'])
     move_line = fields.Many2One('account.move.line', 'Move Line',
             required=True, select=True, ondelete='CASCADE')
+    company = fields.Function(fields.Many2One('company.company', 'Company'),
+        'on_change_with_company')
 
     @fields.depends('move_line')
     def on_change_with_currency_digits(self, name=None):
@@ -931,9 +1191,12 @@ class TaxLine(ModelSQL, ModelView):
 
     @fields.depends('tax')
     def on_change_tax(self):
-        return {
-            'code': None,
-            }
+        self.code = None
+
+    @fields.depends('_parent_move_line.account')
+    def on_change_with_company(self, name=None):
+        if self.move_line:
+            return self.move_line.account.company.id
 
 
 class TaxRuleTemplate(ModelSQL, ModelView):
@@ -1142,7 +1405,7 @@ class TaxRuleLineTemplate(ModelSQL, ModelView):
     @staticmethod
     def order_sequence(tables):
         table, _ = tables[None]
-        return [table.sequence == None, table.sequence]
+        return [table.sequence == Null, table.sequence]
 
     def _get_tax_rule_line_value(self, rule_line=None):
         '''
@@ -1256,7 +1519,7 @@ class TaxRuleLine(ModelSQL, ModelView, MatchMixin):
     @staticmethod
     def order_sequence(tables):
         table, _ = tables[None]
-        return [table.sequence == None, table.sequence]
+        return [table.sequence == Null, table.sequence]
 
     def match(self, pattern):
         if 'group' in pattern and not self.group:
diff --git a/tax.xml b/tax.xml
index 1cb87f9..a487f5b 100644
--- a/tax.xml
+++ b/tax.xml
@@ -63,7 +63,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_tax_code_template_tree">
             <field name="name">Tax Codes Templates</field>
             <field name="res_model">account.tax.code.template</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_tax_code_template_tree_view1">
             <field name="sequence" eval="10"/>
@@ -101,7 +101,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_tax_code_tree">
             <field name="name">Tax Codes</field>
             <field name="res_model">account.tax.code</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_tax_code_tree_view1">
             <field name="sequence" eval="10"/>
@@ -143,7 +143,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_tax_code_tree2">
             <field name="name">Tax Codes</field>
             <field name="res_model">account.tax.code</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_tax_code_tree2_view1">
             <field name="sequence" eval="10"/>
@@ -182,7 +182,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="global_p" eval="True" />
         </record>
         <record model="ir.rule" id="rule_tax_code1">
-            <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_tax_code" />
         </record>
 
@@ -202,7 +204,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_tax_template_tree">
             <field name="name">Taxes Templates</field>
             <field name="res_model">account.tax.template</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_tax_template_tree_view1">
             <field name="sequence" eval="10"/>
@@ -247,7 +249,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_tax_tree">
             <field name="name">Taxes</field>
             <field name="res_model">account.tax</field>
-            <field name="domain">[('company', '=', Eval('company')), ('parent', '=', None)]</field>
+            <field name="domain"
+                eval="[('company', '=', Eval('company')), ('parent', '=', None)]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_tax_tree_view1">
             <field name="sequence" eval="10"/>
@@ -265,7 +269,9 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_tax_list">
             <field name="name">Taxes</field>
             <field name="res_model">account.tax</field>
-            <field name="domain">[('company', '=', Eval('company')), ('parent', '=', None)]</field>
+            <field name="domain"
+                eval="[('company', '=', Eval('company')), ('parent', '=', None)]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_tax_list_view1">
             <field name="sequence" eval="10"/>
@@ -302,7 +308,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="global_p" eval="True"/>
         </record>
         <record model="ir.rule" id="rule_tax1">
-            <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_tax"/>
         </record>
 
@@ -409,7 +417,8 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_tax_rule_form">
             <field name="name">Tax Rules</field>
             <field name="res_model">account.tax.rule</field>
-            <field name="domain">[('company', '=', Eval('company'))]</field>
+            <field name="domain" eval="[('company', '=', Eval('company'))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.act_window.view" id="act_tax_rule_form_view1">
             <field name="sequence" eval="10"/>
@@ -445,7 +454,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="global_p" eval="True"/>
         </record>
         <record model="ir.rule" id="rule_tax_rule1">
-            <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_tax_rule"/>
         </record>
 
diff --git a/tests/__init__.py b/tests/__init__.py
index 24b6dac..0c2c72d 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 import suite
 
diff --git a/tests/scenario_account_reconciliation.rst b/tests/scenario_account_reconciliation.rst
index 8e4e3d7..d871240 100644
--- a/tests/scenario_account_reconciliation.rst
+++ b/tests/scenario_account_reconciliation.rst
@@ -2,16 +2,16 @@
 Account Reconciliation 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
     >>> today = datetime.date.today()
 
 Create database::
@@ -22,94 +22,31 @@ Create database::
 Install account::
 
     >>> Module = Model.get('ir.module.module')
-    >>> modules = Module.find([
+    >>> module, = Module.find([
     ...         ('name', '=', 'account'),
     ...         ])
-    >>> 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='U.S. Dollar', symbol='$', code='USD',
-    ...         rounding=Decimal('0.01'), mon_grouping='[3, 3, 0]',
-    ...         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()
-
-Reload the context::
-
-    >>> User = Model.get('res.user')
-    >>> config._context = User.get_preferences(True, config.context)
+    >>> _ = create_company()
+    >>> company = get_company()
 
 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
-    >>> fiscalyear.save()
-    >>> FiscalYear.create_period([fiscalyear.id], config.context)
+    >>> fiscalyear = create_fiscalyear(company)
+    >>> fiscalyear.click('create_period')
     >>> period = fiscalyear.periods[0]
 
 Create chart of accounts::
 
-    >>> AccountTemplate = Model.get('account.account.template')
-    >>> Account = Model.get('account.account')
-    >>> 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),
-    ...         ])
-    >>> expense, = Account.find([
-    ...         ('kind', '=', 'expense'),
-    ...         ('company', '=', company.id),
-    ...         ])
-    >>> cash, = Account.find([
-    ...         ('kind', '=', 'other'),
-    ...         ('company', '=', company.id),
-    ...         ('name', '=', 'Main Cash'),
-    ...         ])
-    >>> create_chart.form.account_receivable = receivable
-    >>> create_chart.form.account_payable = payable
-    >>> create_chart.execute('create_properties')
+    >>> _ = create_chart(company)
+    >>> accounts = get_accounts(company)
+    >>> receivable = accounts['receivable']
+    >>> revenue = accounts['revenue']
+    >>> expense = accounts['expense']
+    >>> cash = accounts['cash']
 
 Create parties::
 
@@ -198,6 +135,7 @@ Create Moves for writeoff reconciliation::
 
 Reconcile Lines with writeoff::
 
+    >>> Sequence = Model.get('ir.sequence')
     >>> sequence_journal, = Sequence.find([('code', '=', 'account.journal')])
     >>> journal_writeoff = Journal(name='Write-Off', type='write-off',
     ...     sequence=sequence_journal,
diff --git a/tests/scenario_move_cancel.rst b/tests/scenario_move_cancel.rst
index 140d3c0..e1429d7 100644
--- a/tests/scenario_move_cancel.rst
+++ b/tests/scenario_move_cancel.rst
@@ -2,16 +2,16 @@
 Move Cancel 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
     >>> today = datetime.date.today()
 
 Create database::
@@ -22,85 +22,29 @@ Create database::
 Install account::
 
     >>> Module = Model.get('ir.module.module')
-    >>> modules = Module.find([
+    >>> module, = Module.find([
     ...         ('name', '=', 'account'),
     ...         ])
-    >>> 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='U.S. Dollar', symbol='$', code='USD',
-    ...         rounding=Decimal('0.01'), mon_grouping='[3, 3, 0]',
-    ...         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()
-
-Reload the context::
-
-    >>> User = Model.get('res.user')
-    >>> config._context = User.get_preferences(True, config.context)
+    >>> _ = create_company()
+    >>> company = get_company()
 
 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
-    >>> fiscalyear.save()
-    >>> FiscalYear.create_period([fiscalyear.id], config.context)
+    >>> fiscalyear = create_fiscalyear(company)
+    >>> fiscalyear.click('create_period')
     >>> period = fiscalyear.periods[0]
 
 Create chart of accounts::
 
-    >>> AccountTemplate = Model.get('account.account.template')
-    >>> Account = Model.get('account.account')
-    >>> 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),
-    ...         ])
-    >>> create_chart.form.account_receivable = receivable
-    >>> create_chart.form.account_payable = payable
-    >>> create_chart.execute('create_properties')
+    >>> _ = create_chart(company)
+    >>> accounts = get_accounts(company)
+    >>> receivable = accounts['receivable']
+    >>> revenue = accounts['revenue']
 
 Create parties::
 
@@ -140,6 +84,8 @@ Create Move to cancel::
 Cancel Move::
 
     >>> cancel_move = Wizard('account.move.cancel', [move])
+    >>> cancel_move.form.description = 'Cancel'
+    >>> cancel_move.execute('cancel')
     >>> cancel_move.state
     'end'
     >>> move.reload()
@@ -150,6 +96,8 @@ Cancel Move::
     ...     if l.move != move]
     >>> cancel_move.origin == move
     True
+    >>> cancel_move.description
+    u'Cancel'
     >>> revenue.reload()
     >>> revenue.credit
     Decimal('0.00')
diff --git a/tests/scenario_move_template.rst b/tests/scenario_move_template.rst
new file mode 100644
index 0000000..d1e8fa6
--- /dev/null
+++ b/tests/scenario_move_template.rst
@@ -0,0 +1,127 @@
+======================
+Move Template Scenario
+======================
+
+Imports::
+
+    >>> 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, create_tax, set_tax_code
+
+Create database::
+
+    >>> config = config.set_trytond()
+    >>> config.pool.test = True
+
+Install account::
+
+    >>> Module = Model.get('ir.module.module')
+    >>> module, = Module.find([
+    ...         ('name', '=', 'account'),
+    ...         ])
+    >>> module.click('install')
+    >>> Wizard('ir.module.module.install_upgrade').execute('upgrade')
+
+Create company::
+
+    >>> _ = create_company()
+    >>> company = get_company()
+
+Create fiscal year::
+
+    >>> fiscalyear = create_fiscalyear(company)
+    >>> fiscalyear.click('create_period')
+    >>> period = fiscalyear.periods[0]
+
+Create chart of accounts::
+
+    >>> _ = create_chart(company)
+    >>> accounts = get_accounts(company)
+    >>> payable = accounts['payable']
+    >>> expense = accounts['expense']
+    >>> tax = accounts['tax']
+
+Create tax with code::
+
+    >>> tax = set_tax_code(create_tax(Decimal('0.1')))
+    >>> tax.save()
+
+Create parties::
+
+    >>> Party = Model.get('party.party')
+    >>> supplier = Party(name='Supplier')
+    >>> supplier.save()
+
+Create Template::
+
+    >>> MoveTemplate = Model.get('account.move.template')
+    >>> Journal = Model.get('account.journal')
+    >>> template = MoveTemplate()
+    >>> template.name = 'Test'
+    >>> template.journal, = Journal.find([
+    ...         ('code', '=', 'CASH'),
+    ...         ])
+    >>> _ = template.keywords.new(name='party', string='Party',
+    ...     type_='party')
+    >>> _ = template.keywords.new(name='description', string='Description',
+    ...     type_='char')
+    >>> _ = template.keywords.new(name='amount', string='Amount',
+    ...     type_='numeric', digits=2)
+    >>> template.description = '{party} - {description}'
+    >>> line = template.lines.new()
+    >>> line.operation = 'credit'
+    >>> line.account = payable
+    >>> line.party = 'party'
+    >>> line.amount = 'amount'
+    >>> line = template.lines.new()
+    >>> line.operation = 'debit'
+    >>> line.account = expense
+    >>> line.amount = 'amount / 1.1'
+    >>> ttax = line.taxes.new()
+    >>> ttax.amount = line.amount
+    >>> ttax.code = tax.invoice_base_code
+    >>> ttax.tax = tax
+    >>> line = template.lines.new()
+    >>> line.operation = 'debit'
+    >>> line.account = tax.invoice_account
+    >>> line.amount = 'amount * (1 - 1/1.1)'
+    >>> ttax = line.taxes.new()
+    >>> ttax.amount = line.amount
+    >>> ttax.code = tax.invoice_tax_code
+    >>> ttax.tax = tax
+    >>> template.save()
+
+Create Move::
+
+    >>> create_move = Wizard('account.move.template.create')
+    >>> create_move.form.template = template
+    >>> create_move.execute('keywords')
+    >>> data = {}
+    >>> keywords = data['keywords'] = {}
+    >>> keywords['party'] = supplier.id
+    >>> keywords['description'] = 'Test'
+    >>> keywords['amount'] = Decimal('12.24')
+    >>> context = create_move._context.copy()
+    >>> context.update(create_move._config.context)
+    >>> _ = create_move._proxy.execute(create_move.session_id, data, 'create_',
+    ...     context)
+
+.. note:: using custom call because proteus doesn't support fake model
+
+Check the Move::
+
+    >>> Move = Model.get('account.move')
+    >>> move, = Move.find([])
+    >>> len(move.lines)
+    3
+    >>> sorted((l.debit, l.credit) for l in move.lines)
+    [(Decimal('0'), Decimal('12.24')), (Decimal('1.11'), Decimal('0')), (Decimal('11.13'), Decimal('0'))]
+    >>> move.description
+    u'Supplier - Test'
+    >>> tax.invoice_base_code.sum
+    Decimal('11.13')
+    >>> tax.invoice_tax_code.sum
+    Decimal('1.11')
diff --git a/tests/scenario_reports.rst b/tests/scenario_reports.rst
new file mode 100644
index 0000000..d0f3010
--- /dev/null
+++ b/tests/scenario_reports.rst
@@ -0,0 +1,96 @@
+========================
+Account Reports Scenario
+========================
+
+Imports::
+
+    >>> import datetime
+    >>> from dateutil.relativedelta import relativedelta
+    >>> from decimal import Decimal
+    >>> from proteus import config, Model, Wizard, Report
+    >>> from trytond.modules.company.tests.tools import create_company, \
+    ...     get_company
+    >>> from trytond.modules.account.tests.tools import create_fiscalyear, \
+    ...     create_chart, get_accounts
+    >>> today = datetime.date.today()
+
+Create database::
+
+    >>> config = config.set_trytond()
+    >>> config.pool.test = True
+
+Install account::
+
+    >>> Module = Model.get('ir.module.module')
+    >>> module, = Module.find([
+    ...         ('name', '=', 'account'),
+    ...         ])
+    >>> module.click('install')
+    >>> Wizard('ir.module.module.install_upgrade').execute('upgrade')
+
+Create company::
+
+    >>> _ = create_company()
+    >>> company = get_company()
+
+Create fiscal year::
+
+    >>> fiscalyear = create_fiscalyear(company)
+    >>> fiscalyear.click('create_period')
+    >>> period = fiscalyear.periods[0]
+
+Create chart of accounts::
+
+    >>> _ = create_chart(company)
+    >>> accounts = get_accounts(company)
+    >>> receivable = accounts['receivable']
+    >>> revenue = accounts['revenue']
+    >>> expense = accounts['expense']
+    >>> cash = accounts['cash']
+
+Create parties::
+
+    >>> Party = Model.get('party.party')
+    >>> party = Party(name='Party')
+    >>> party.save()
+
+Create a moves::
+
+    >>> Journal = Model.get('account.journal')
+    >>> Move = Model.get('account.move')
+    >>> journal_revenue, = Journal.find([
+    ...         ('code', '=', 'REV'),
+    ...         ])
+    >>> journal_cash, = Journal.find([
+    ...         ('code', '=', 'CASH'),
+    ...         ])
+    >>> move = Move()
+    >>> move.period = period
+    >>> move.journal = journal_revenue
+    >>> move.date = period.start_date
+    >>> line = move.lines.new()
+    >>> line.account = revenue
+    >>> line.credit = Decimal(10)
+    >>> line = move.lines.new()
+    >>> line.account = receivable
+    >>> line.debit = Decimal(10)
+    >>> line.party = party
+    >>> move.save()
+
+Print some reports::
+
+    >>> print_general_ledger = Wizard('account.print_general_ledger')
+    >>> print_general_ledger.form.start_period = None
+    >>> print_general_ledger.form.end_period = None
+    >>> print_general_ledger.execute('print_')
+
+    >>> print_trial_balance = Wizard('account.print_trial_balance')
+    >>> print_trial_balance.form.start_period = None
+    >>> print_trial_balance.form.end_period = None
+    >>> print_trial_balance.execute('print_')
+
+    >>> third_party_balance = Wizard('account.open_third_party_balance')
+    >>> third_party_balance.execute('print_')
+
+    >>> aged_balance = Wizard('account.open_aged_balance')
+    >>> aged_balance.execute('print_')
diff --git a/tests/test_account.py b/tests/test_account.py
index 1c5d54e..f2ccb86 100644
--- a/tests/test_account.py
+++ b/tests/test_account.py
@@ -1,22 +1,24 @@
-#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 datetime
 from decimal import Decimal
 from dateutil.relativedelta import relativedelta
+from trytond.pool import Pool
 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
 from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT
 from trytond.transaction import Transaction
 
 
-class AccountTestCase(unittest.TestCase):
+class AccountTestCase(ModuleTestCase):
     'Test Account module'
+    module = 'account'
 
     def setUp(self):
-        trytond.tests.test_tryton.install_module('account')
+        super(AccountTestCase, self).setUp()
         self.account_template = POOL.get('account.account.template')
         self.tax_code_template = POOL.get('account.tax.code.template')
         self.tax_template = POOL.get('account.tax.code.template')
@@ -36,14 +38,6 @@ class AccountTestCase(unittest.TestCase):
         self.tax = POOL.get('account.tax')
         self.party = POOL.get('party.party')
 
-    def test0005views(self):
-        'Test views'
-        test_view('account')
-
-    def test0006depends(self):
-        'Test depends'
-        test_depends()
-
     def test0010account_chart(self):
         'Test creation of minimal chart of accounts'
         with Transaction().start(DB_NAME, USER,
@@ -325,7 +319,7 @@ class AccountTestCase(unittest.TestCase):
             transaction.cursor.rollback()
 
     def test0040tax_compute(self):
-        'Test tax compute'
+        'Test tax compute/reverse_compute'
         with Transaction().start(DB_NAME, USER, context=CONTEXT):
             today = datetime.date.today()
 
@@ -368,6 +362,10 @@ class AccountTestCase(unittest.TestCase):
                         'tax': child2,
                         }])
 
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal('130'), [tax]),
+                Decimal('100'))
+
             child1.end_date = today + relativedelta(days=5)
             child1.save()
             self.assertEqual(self.tax.compute([tax], Decimal('100'), 2, today),
@@ -381,6 +379,10 @@ class AccountTestCase(unittest.TestCase):
                         'tax': child2,
                         }])
 
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal('130'), [tax], today),
+                Decimal('100'))
+
             child1.start_date = today + relativedelta(days=1)
             child1.save()
             self.assertEqual(self.tax.compute([tax], Decimal('100'), 2, today),
@@ -389,6 +391,9 @@ class AccountTestCase(unittest.TestCase):
                         'amount': Decimal('20'),
                         'tax': child2,
                         }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal('110'), [tax], today),
+                Decimal('100'))
             self.assertEqual(self.tax.compute([tax], Decimal('100'), 2,
                     today + relativedelta(days=1)), [{
                         'base': Decimal('200'),
@@ -399,6 +404,10 @@ class AccountTestCase(unittest.TestCase):
                         'amount': Decimal('20'),
                         'tax': child2,
                         }])
+            self.assertEqual(
+                self.tax.reverse_compute(
+                    Decimal('130'), [tax], today + relativedelta(days=1)),
+                Decimal('100'))
             self.assertEqual(self.tax.compute([tax], Decimal('100'), 2,
                     today + relativedelta(days=5)), [{
                         'base': Decimal('200'),
@@ -409,12 +418,20 @@ class AccountTestCase(unittest.TestCase):
                         'amount': Decimal('20'),
                         'tax': child2,
                         }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal('130'), [tax],
+                    today + relativedelta(days=5)),
+                Decimal('100'))
             self.assertEqual(self.tax.compute([tax], Decimal('100'), 2,
                     today + relativedelta(days=6)), [{
                         'base': Decimal('200'),
                         'amount': Decimal('20'),
                         'tax': child2,
                         }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal('110'), [tax],
+                    today + relativedelta(days=6)),
+                Decimal('100'))
 
             child1.end_date = None
             child1.save()
@@ -428,6 +445,320 @@ class AccountTestCase(unittest.TestCase):
                         'amount': Decimal('20'),
                         'tax': child2,
                         }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal('130'), [tax],
+                    today + relativedelta(days=6)),
+                Decimal('100'))
+
+            ecotax1 = self.tax()
+            ecotax1.name = ecotax1.description = 'EcoTax 1'
+            ecotax1.type = 'fixed'
+            ecotax1.amount = Decimal(5)
+            ecotax1.invoice_account = tax_account
+            ecotax1.credit_note_account = tax_account
+            ecotax1.sequence = 10
+            ecotax1.save()
+
+            vat0 = self.tax()
+            vat0.name = vat0.description = 'VAT0'
+            vat0.type = 'percentage'
+            vat0.rate = Decimal('0.1')
+            vat0.invoice_account = tax_account
+            vat0.credit_note_account = tax_account
+            vat0.sequence = 5
+            vat0.save()
+
+            vat1 = self.tax()
+            vat1.name = vat1.description = 'VAT1'
+            vat1.type = 'percentage'
+            vat1.rate = Decimal('0.2')
+            vat1.invoice_account = tax_account
+            vat1.credit_note_account = tax_account
+            vat1.sequence = 20
+            vat1.save()
+
+            self.assertEqual(
+                self.tax.compute([vat0, ecotax1, vat1], Decimal(100), 1),
+                [{
+                        'base': Decimal(100),
+                        'amount': Decimal(10),
+                        'tax': vat0,
+                        }, {
+                        'base': Decimal(100),
+                        'amount': Decimal(5),
+                        'tax': ecotax1,
+                        }, {
+                        'base': Decimal(100),
+                        'amount': Decimal(20),
+                        'tax': vat1,
+                        }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal(135), [vat0, ecotax1, vat1]),
+                Decimal(100))
+
+    def test0045tax_compute_with_update_unit_price(self):
+        'Test tax compute with unit_price modifying tax'
+        with Transaction().start(DB_NAME, USER, context=CONTEXT):
+            tax_account, = self.account.search([
+                    ('name', '=', 'Main Tax'),
+                    ])
+            ecotax1 = self.tax()
+            ecotax1.name = ecotax1.description = 'EcoTax 1'
+            ecotax1.type = 'fixed'
+            ecotax1.amount = Decimal(5)
+            ecotax1.invoice_account = tax_account
+            ecotax1.credit_note_account = tax_account
+            ecotax1.update_unit_price = True
+            ecotax1.sequence = 10
+            ecotax1.save()
+
+            vat1 = self.tax()
+            vat1.name = vat1.description = 'VAT1'
+            vat1.type = 'percentage'
+            vat1.rate = Decimal('0.2')
+            vat1.invoice_account = tax_account
+            vat1.credit_note_account = tax_account
+            vat1.sequence = 20
+            vat1.save()
+
+            self.assertEqual(
+                self.tax.compute([ecotax1, vat1], Decimal(100), 5),
+                [{
+                        'base': Decimal(500),
+                        'amount': Decimal(25),
+                        'tax': ecotax1,
+                        }, {
+                        'base': Decimal(525),
+                        'amount': Decimal(105),
+                        'tax': vat1,
+                        }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal(126), [ecotax1, vat1]),
+                Decimal(100))
+
+            ecotax2 = self.tax()
+            ecotax2.name = ecotax2.description = 'EcoTax 2'
+            ecotax2.type = 'percentage'
+            ecotax2.rate = Decimal('0.5')
+            ecotax2.invoice_account = tax_account
+            ecotax2.credit_note_account = tax_account
+            ecotax2.update_unit_price = True
+            ecotax2.sequence = 10
+            ecotax2.save()
+
+            self.assertEqual(
+                self.tax.compute([ecotax1, ecotax2, vat1], Decimal(100), 1),
+                [{
+                        'base': Decimal(100),
+                        'amount': Decimal(5),
+                        'tax': ecotax1,
+                        }, {
+                        'base': Decimal(100),
+                        'amount': Decimal(50),
+                        'tax': ecotax2,
+                        }, {
+                        'base': Decimal(155),
+                        'amount': Decimal(31),
+                        'tax': vat1,
+                        }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal(186),
+                    [ecotax1, ecotax2, vat1]),
+                Decimal(100))
+
+            vat0 = self.tax()
+            vat0.name = vat0.description = 'VAT0'
+            vat0.type = 'percentage'
+            vat0.rate = Decimal('0.1')
+            vat0.invoice_account = tax_account
+            vat0.credit_note_account = tax_account
+            vat0.sequence = 5
+            vat0.save()
+
+            self.assertEqual(
+                self.tax.compute([vat0, ecotax1, vat1], Decimal(100), 1),
+                [{
+                        'base': Decimal(100),
+                        'amount': Decimal(10),
+                        'tax': vat0,
+                        }, {
+                        'base': Decimal(100),
+                        'amount': Decimal(5),
+                        'tax': ecotax1,
+                        }, {
+                        'base': Decimal(105),
+                        'amount': Decimal(21),
+                        'tax': vat1,
+                        }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal(136),
+                    [vat0, ecotax1, vat1]),
+                Decimal(100))
+
+            self.assertEqual(
+                self.tax.compute([vat0, ecotax1, ecotax2, vat1],
+                    Decimal(100), 1),
+                [{
+                        'base': Decimal(100),
+                        'amount': Decimal(10),
+                        'tax': vat0,
+                        }, {
+                        'base': Decimal(100),
+                        'amount': Decimal(5),
+                        'tax': ecotax1,
+                        }, {
+                        'base': Decimal(100),
+                        'amount': Decimal(50),
+                        'tax': ecotax2,
+                        }, {
+                        'base': Decimal(155),
+                        'amount': Decimal(31),
+                        'tax': vat1,
+                        }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal(196),
+                    [vat0, ecotax1, ecotax2, vat1]),
+                Decimal(100))
+
+            vat2 = self.tax()
+            vat2.name = vat2.description = 'VAT2'
+            vat2.type = 'percentage'
+            vat2.rate = Decimal('0.3')
+            vat2.invoice_account = tax_account
+            vat2.credit_note_account = tax_account
+            vat2.sequence = 30
+            vat2.save()
+
+            self.assertEqual(
+                self.tax.compute([vat0, ecotax1, vat1, vat2],
+                    Decimal(100), 1),
+                [{
+                        'base': Decimal(100),
+                        'amount': Decimal(10),
+                        'tax': vat0,
+                        }, {
+                        'base': Decimal(100),
+                        'amount': Decimal(5),
+                        'tax': ecotax1,
+                        }, {
+                        'base': Decimal(105),
+                        'amount': Decimal(21),
+                        'tax': vat1,
+                        }, {
+                        'base': Decimal(105),
+                        'amount': Decimal('31.5'),
+                        'tax': vat2,
+                        }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal('167.5'),
+                    [vat0, ecotax1, vat1, vat2]),
+                Decimal(100))
+
+            ecotax3 = self.tax()
+            ecotax3.name = ecotax3.description = 'ECOTAX3'
+            ecotax3.type = 'percentage'
+            ecotax3.rate = Decimal('0.4')
+            ecotax3.invoice_account = tax_account
+            ecotax3.credit_note_account = tax_account
+            ecotax3.update_unit_price = True
+            ecotax3.sequence = 25
+            ecotax3.save()
+
+            self.assertEqual(
+                self.tax.compute([vat0, ecotax1, vat1, ecotax3, vat2],
+                    Decimal(100), 1),
+                [{
+                        'base': Decimal(100),
+                        'amount': Decimal(10),
+                        'tax': vat0,
+                        }, {
+                        'base': Decimal(100),
+                        'amount': Decimal(5),
+                        'tax': ecotax1,
+                        }, {
+                        'base': Decimal(105),
+                        'amount': Decimal(21),
+                        'tax': vat1,
+                        }, {
+                        'base': Decimal(105),
+                        'amount': Decimal('42'),
+                        'tax': ecotax3,
+                        }, {
+                        'base': Decimal(147),
+                        'amount': Decimal('44.1'),
+                        'tax': vat2
+                        }])
+            self.assertEqual(
+                self.tax.reverse_compute(Decimal('222.1'),
+                    [vat0, ecotax1, vat1, ecotax3, vat2]),
+                Decimal(100))
+
+    def test0050_receivable_payable(self):
+        'Test party receivable payable'
+        with Transaction().start(DB_NAME, USER, context=CONTEXT):
+            pool = Pool()
+            Party = pool.get('party.party')
+            fiscalyear, = self.fiscalyear.search([])
+            period = fiscalyear.periods[0]
+            journal_revenue, = self.journal.search([
+                    ('code', '=', 'REV'),
+                    ])
+            journal_expense, = self.journal.search([
+                    ('code', '=', 'EXP'),
+                    ])
+            revenue, = self.account.search([
+                    ('kind', '=', 'revenue'),
+                    ])
+            receivable, = self.account.search([
+                    ('kind', '=', 'receivable'),
+                    ])
+            expense, = self.account.search([
+                    ('kind', '=', 'expense'),
+                    ])
+            payable, = self.account.search([
+                    ('kind', '=', 'payable'),
+                    ])
+            party, = Party.create([{
+                        'name': 'Receivable/Payable party',
+                        }])
+            tomorrow = datetime.date.today() + datetime.timedelta(days=1)
+
+            def get_move(journal, amount, credit_account, debit_account, party,
+                    maturity_date=None):
+                return {
+                    'period': period.id,
+                    'journal': journal.id,
+                    'date': period.start_date,
+                    'lines': [
+                        ('create', [{
+                                    'account': credit_account.id,
+                                    'credit': amount,
+                                    }, {
+                                    'account': debit_account.id,
+                                    'debit': amount,
+                                    'party': party.id,
+                                    'maturity_date': maturity_date,
+                                    }]),
+                        ],
+                    }
+            vlist = [
+                get_move(journal_revenue, Decimal(100), revenue, receivable,
+                    party),
+                get_move(journal_expense, Decimal(30), expense, payable,
+                    party),
+                get_move(journal_revenue, Decimal(200), revenue, receivable,
+                    party, tomorrow),
+                get_move(journal_revenue, Decimal(60), expense, payable,
+                    party, tomorrow),
+                ]
+            moves = self.move.create(vlist)
+            self.move.post(moves)
+
+            party = Party(party.id)
+            self.assertEqual(party.receivable, Decimal('300'))
+            self.assertEqual(party.receivable_today, Decimal('100'))
+            self.assertEqual(party.payable, Decimal('90'))
+            self.assertEqual(party.payable_today, Decimal('30'))
 
 
 def suite():
@@ -446,4 +777,12 @@ def suite():
             'scenario_move_cancel.rst',
             setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
             optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
+    suite.addTests(doctest.DocFileSuite(
+            'scenario_move_template.rst',
+            setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
+            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
+    suite.addTests(doctest.DocFileSuite(
+            'scenario_reports.rst',
+            setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
+            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
     return suite
diff --git a/tests/tools.py b/tests/tools.py
new file mode 100644
index 0000000..381fa95
--- /dev/null
+++ b/tests/tools.py
@@ -0,0 +1,124 @@
+# 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 datetime
+
+from dateutil.relativedelta import relativedelta
+
+from proteus import Model, Wizard
+
+from trytond.modules.company.tests.tools import get_company
+
+__all__ = ['create_fiscalyear', 'create_chart', 'get_accounts',
+    'create_tax', 'set_tax_code']
+
+
+def create_fiscalyear(company=None, today=None, config=None):
+    "Create a fiscal year for the company on today"
+    FiscalYear = Model.get('account.fiscalyear', config=config)
+    Sequence = Model.get('ir.sequence', config=config)
+
+    if not company:
+        company = get_company()
+
+    if not today:
+        today = datetime.date.today()
+
+    fiscalyear = FiscalYear(name=str(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=str(today.year), code='account.move',
+        company=company)
+    post_move_sequence.save()
+    fiscalyear.post_move_sequence = post_move_sequence
+    return fiscalyear
+
+
+def create_chart(company=None, config=None):
+    "Create chart of accounts"
+    AccountTemplate = Model.get('account.account.template', config=config)
+
+    if not company:
+        company = get_company()
+
+    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')
+
+    accounts = get_accounts(company, config=config)
+
+    create_chart.form.account_receivable = accounts['receivable']
+    create_chart.form.account_payable = accounts['payable']
+    create_chart.execute('create_properties')
+    return create_chart
+
+
+def get_accounts(company=None, config=None):
+    "Return accounts per kind"
+    Account = Model.get('account.account', config=config)
+
+    if not company:
+        company = get_company()
+
+    accounts = Account.find([
+            ('kind', 'in', ['receivable', 'payable', 'revenue', 'expense']),
+            ('company', '=', company.id),
+            ])
+    accounts = {a.kind: a for a in accounts}
+    cash, = Account.find([
+            ('kind', '=', 'other'),
+            ('company', '=', company.id),
+            ('name', '=', 'Main Cash'),
+            ])
+    accounts['cash'] = cash
+    tax, = Account.find([
+            ('kind', '=', 'other'),
+            ('company', '=', company.id),
+            ('name', '=', 'Main Tax'),
+            ])
+    accounts['tax'] = tax
+    return accounts
+
+
+def create_tax(rate, company=None, config=None):
+    "Create a tax of rate"
+    Tax = Model.get('account.tax', config=config)
+
+    if not company:
+        company = get_company()
+
+    accounts = get_accounts(company)
+
+    tax = Tax()
+    tax.name = 'Tax %s' % rate
+    tax.description = tax.name
+    tax.type = 'percentage'
+    tax.rate = rate
+    tax.invoice_account = accounts['tax']
+    tax.credit_note_account = accounts['tax']
+    return tax
+
+
+def set_tax_code(tax, config=None):
+    "Set code on tax"
+    TaxCode = Model.get('account.tax.code', config=config)
+    invoice_base_code = TaxCode(name='Invoice Base')
+    invoice_base_code.save()
+    invoice_tax_code = TaxCode(name='Invoice Tax')
+    invoice_tax_code.save()
+    credit_note_base_code = TaxCode(name='Credit Note Base')
+    credit_note_base_code.save()
+    credit_note_tax_code = TaxCode(name='Credit Note Tax')
+    credit_note_tax_code.save()
+
+    tax.invoice_base_code = invoice_base_code
+    tax.invoice_tax_code = invoice_tax_code
+    tax.credit_note_base_code = credit_note_base_code
+    tax.credit_note_tax_code = credit_note_tax_code
+
+    return tax
diff --git a/third_party_balance.odt b/third_party_balance.odt
index 26328c1..9b6a0c8 100644
Binary files a/third_party_balance.odt and b/third_party_balance.odt differ
diff --git a/trial_balance.odt b/trial_balance.odt
index 018cb14..dfc0bc7 100644
Binary files a/trial_balance.odt and b/trial_balance.odt differ
diff --git a/tryton.cfg b/tryton.cfg
index bb978e4..aae50aa 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=3.4.2
+version=3.6.0
 depends:
     company
     currency
@@ -13,5 +13,6 @@ xml:
     period.xml
     journal.xml
     move.xml
+    move_template.xml
     tax.xml
     party.xml
diff --git a/trytond_account.egg-info/PKG-INFO b/trytond_account.egg-info/PKG-INFO
index 89221d2..9b3d1b0 100644
--- a/trytond_account.egg-info/PKG-INFO
+++ b/trytond_account.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond-account
-Version: 3.4.2
+Version: 3.6.0
 Summary: Tryton module for accounting
 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
         ===============
         
@@ -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.egg-info/SOURCES.txt b/trytond_account.egg-info/SOURCES.txt
index 1cf07a5..68a382e 100644
--- a/trytond_account.egg-info/SOURCES.txt
+++ b/trytond_account.egg-info/SOURCES.txt
@@ -12,6 +12,7 @@ general_journal.odt
 general_ledger.odt
 journal.xml
 move.xml
+move_template.xml
 party.xml
 period.xml
 setup.py
@@ -33,6 +34,8 @@ tryton.cfg
 ./journal.xml
 ./move.py
 ./move.xml
+./move_template.py
+./move_template.xml
 ./party.py
 ./party.xml
 ./period.py
@@ -58,7 +61,10 @@ tryton.cfg
 ./tests/__init__.py
 ./tests/scenario_account_reconciliation.rst
 ./tests/scenario_move_cancel.rst
+./tests/scenario_move_template.rst
+./tests/scenario_reports.rst
 ./tests/test_account.py
+./tests/tools.py
 ./view/account_balance_sheet_tree.xml
 ./view/account_deferral_form.xml
 ./view/account_deferral_tree.xml
@@ -96,13 +102,23 @@ tryton.cfg
 ./view/journal_view_column_list_sequence.xml
 ./view/journal_view_form.xml
 ./view/journal_view_tree.xml
+./view/move_cancel_default_form.xml
 ./view/move_form.xml
 ./view/move_line_form.xml
 ./view/move_line_form_move.xml
+./view/move_line_list_payable_receivable.xml
+./view/move_line_template_form.xml
+./view/move_line_template_list.xml
 ./view/move_line_tree.xml
 ./view/move_line_tree_move.xml
 ./view/move_reconciliation_form.xml
 ./view/move_reconciliation_tree.xml
+./view/move_template_create_template_form.xml
+./view/move_template_form.xml
+./view/move_template_keyword_form.xml
+./view/move_template_keyword_list.xml
+./view/move_template_keyword_list_sequence.xml
+./view/move_template_list.xml
 ./view/move_tree.xml
 ./view/open_aged_balance_start_form.xml
 ./view/open_balance_sheet_start_form.xml
@@ -130,6 +146,8 @@ tryton.cfg
 ./view/tax_group_form.xml
 ./view/tax_group_tree.xml
 ./view/tax_line_form.xml
+./view/tax_line_template_form.xml
+./view/tax_line_template_list.xml
 ./view/tax_line_tree.xml
 ./view/tax_list.xml
 ./view/tax_rule_form.xml
@@ -162,6 +180,8 @@ locale/ru_RU.po
 locale/sl_SI.po
 tests/scenario_account_reconciliation.rst
 tests/scenario_move_cancel.rst
+tests/scenario_move_template.rst
+tests/scenario_reports.rst
 trytond_account.egg-info/PKG-INFO
 trytond_account.egg-info/SOURCES.txt
 trytond_account.egg-info/dependency_links.txt
@@ -206,13 +226,23 @@ view/journal_view_column_list.xml
 view/journal_view_column_list_sequence.xml
 view/journal_view_form.xml
 view/journal_view_tree.xml
+view/move_cancel_default_form.xml
 view/move_form.xml
 view/move_line_form.xml
 view/move_line_form_move.xml
+view/move_line_list_payable_receivable.xml
+view/move_line_template_form.xml
+view/move_line_template_list.xml
 view/move_line_tree.xml
 view/move_line_tree_move.xml
 view/move_reconciliation_form.xml
 view/move_reconciliation_tree.xml
+view/move_template_create_template_form.xml
+view/move_template_form.xml
+view/move_template_keyword_form.xml
+view/move_template_keyword_list.xml
+view/move_template_keyword_list_sequence.xml
+view/move_template_list.xml
 view/move_tree.xml
 view/open_aged_balance_start_form.xml
 view/open_balance_sheet_start_form.xml
@@ -240,6 +270,8 @@ view/tax_form.xml
 view/tax_group_form.xml
 view/tax_group_tree.xml
 view/tax_line_form.xml
+view/tax_line_template_form.xml
+view/tax_line_template_list.xml
 view/tax_line_tree.xml
 view/tax_list.xml
 view/tax_rule_form.xml
diff --git a/trytond_account.egg-info/requires.txt b/trytond_account.egg-info/requires.txt
index c1e3b87..e89f0df 100644
--- a/trytond_account.egg-info/requires.txt
+++ b/trytond_account.egg-info/requires.txt
@@ -1,6 +1,7 @@
 python-dateutil
-python-sql
-trytond_company >= 3.4, < 3.5
-trytond_currency >= 3.4, < 3.5
-trytond_party >= 3.4, < 3.5
-trytond >= 3.4, < 3.5
\ No newline at end of file
+python-sql >= 0.4
+simpleeval
+trytond_company >= 3.6, < 3.7
+trytond_currency >= 3.6, < 3.7
+trytond_party >= 3.6, < 3.7
+trytond >= 3.6, < 3.7
\ No newline at end of file
diff --git a/view/account_form.xml b/view/account_form.xml
index 828787a..8f26178 100644
--- a/view/account_form.xml
+++ b/view/account_form.xml
@@ -28,6 +28,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="second_currency"/>
             <label name="party_required"/>
             <field name="party_required"/>
+            <label name="general_ledger_balance"/>
+            <field name="general_ledger_balance"/>
             <field name="taxes" colspan="4"/>
         </page>
         <page string="Children" id="children">
diff --git a/view/account_type_list.xml b/view/account_type_list.xml
index 8d79002..14612a7 100644
--- a/view/account_type_list.xml
+++ b/view/account_type_list.xml
@@ -2,5 +2,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. -->
 <tree string="Account Types">
-    <field name="name"/>
+    <field name="rec_name"/>
 </tree>
diff --git a/view/account_type_template_list.xml b/view/account_type_template_list.xml
index a3c9948..b80de6b 100644
--- a/view/account_type_template_list.xml
+++ b/view/account_type_template_list.xml
@@ -2,5 +2,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. -->
 <tree string="Account Types Templates">
-    <field name="name"/>
+    <field name="rec_name"/>
 </tree>
diff --git a/view/account_type_list.xml b/view/move_cancel_default_form.xml
similarity index 60%
copy from view/account_type_list.xml
copy to view/move_cancel_default_form.xml
index 8d79002..04a892f 100644
--- a/view/account_type_list.xml
+++ b/view/move_cancel_default_form.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Account Types">
-    <field name="name"/>
-</tree>
+<form string="Cancel Moves">
+    <label name="description"/>
+    <field name="description" colspan="3"/>
+</form>
diff --git a/view/move_form.xml b/view/move_form.xml
index a219a39..4cc3b74 100644
--- a/view/move_form.xml
+++ b/view/move_form.xml
@@ -2,6 +2,9 @@
 <!-- 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="Account Move" cursor="journal">
+    <label name="company"/>
+    <field name="company"/>
+    <newline/>
     <label name="number"/>
     <field name="number"/>
     <label name="post_number"/>
diff --git a/view/move_tree.xml b/view/move_line_list_payable_receivable.xml
similarity index 56%
copy from view/move_tree.xml
copy to view/move_line_list_payable_receivable.xml
index a5b2c66..65f1764 100644
--- a/view/move_tree.xml
+++ b/view/move_line_list_payable_receivable.xml
@@ -1,14 +1,13 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Account Moves">
-    <field name="number"/>
-    <field name="post_number"/>
-    <field name="journal"/>
-    <field name="period"/>
+<tree string="Account Move Lines">
     <field name="date"/>
-    <field name="post_date"/>
+    <field name="party"/>
+    <field name="amount"/>
+    <field name="amount_currency"/>
     <field name="origin"/>
     <field name="description"/>
-    <field name="state"/>
+    <field name="move_description"/>
+    <field name="reconciliation"/>
 </tree>
diff --git a/view/move_line_template_form.xml b/view/move_line_template_form.xml
new file mode 100644
index 0000000..ed185e5
--- /dev/null
+++ b/view/move_line_template_form.xml
@@ -0,0 +1,24 @@
+<?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="Account Move Line Template">
+    <label name="account"/>
+    <field name="account"/>
+    <label name="move"/>
+    <field name="move"/>
+    <label name="operation"/>
+    <field name="operation"/>
+    <label name="amount"/>
+    <field name="amount"/>
+    <label name="description"/>
+    <field name="description" colspan="3"/>
+    <notebook colspan="4">
+        <page string="Other Info" id="info">
+            <label name="party"/>
+            <field name="party"/>
+        </page>
+        <page name="taxes">
+            <field name="taxes" colspan="4"/>
+        </page>
+    </notebook>
+</form>
diff --git a/view/move_line_tree_move.xml b/view/move_line_template_list.xml
similarity index 60%
copy from view/move_line_tree_move.xml
copy to view/move_line_template_list.xml
index 5d96b7b..c70ad76 100644
--- a/view/move_line_tree_move.xml
+++ b/view/move_line_template_list.xml
@@ -1,13 +1,12 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Account Move Lines" editable="top">
+<tree string="Account Move Line Templates" editable="top">
     <field name="move"/>
-    <field name="description"/>
-    <field name="party"/>
     <field name="account"/>
-    <field name="debit" sum="Debit"/>
-    <field name="credit" sum="Credit"/>
-    <field name="tax_lines"/>
-    <field name="reconciliation"/>
+    <field name="party"/>
+    <field name="operation"/>
+    <field name="amount"/>
+    <field name="description"/>
+    <field name="taxes"/>
 </tree>
diff --git a/view/move_line_tree.xml b/view/move_line_tree.xml
index 5a5e336..22d9b74 100644
--- a/view/move_line_tree.xml
+++ b/view/move_line_tree.xml
@@ -1,16 +1,14 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Account Move Lines" editable="top"
-    on_write="on_write"
-    colors="If(Equal(Eval('state'), 'draft'), 'red', 'black')">
+<tree string="Account Move Lines" editable="top" on_write="on_write">
     <field name="move"/>
     <field name="origin"/>
     <field name="description"/>
     <field name="move_description"/>
     <field name="date"/>
-    <field name="party"/>
     <field name="account"/>
+    <field name="party"/>
     <field name="debit" sum="Debit"/>
     <field name="credit" sum="Credit"/>
     <field name="tax_lines"/>
diff --git a/view/move_line_tree_move.xml b/view/move_line_tree_move.xml
index 5d96b7b..ec688b3 100644
--- a/view/move_line_tree_move.xml
+++ b/view/move_line_tree_move.xml
@@ -4,8 +4,8 @@ this repository contains the full copyright notices and license terms. -->
 <tree string="Account Move Lines" editable="top">
     <field name="move"/>
     <field name="description"/>
-    <field name="party"/>
     <field name="account"/>
+    <field name="party"/>
     <field name="debit" sum="Debit"/>
     <field name="credit" sum="Credit"/>
     <field name="tax_lines"/>
diff --git a/view/move_template_create_template_form.xml b/view/move_template_create_template_form.xml
new file mode 100644
index 0000000..f56a595
--- /dev/null
+++ b/view/move_template_create_template_form.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="Create Move from Template" col="2">
+    <label name="template"/>
+    <field name="template" widget="selection"/>
+    <label name="period"/>
+    <field name="period"/>
+</form>
diff --git a/view/move_template_form.xml b/view/move_template_form.xml
new file mode 100644
index 0000000..a208334
--- /dev/null
+++ b/view/move_template_form.xml
@@ -0,0 +1,27 @@
+<?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="Account Move Template">
+    <label name="name"/>
+    <field name="name"/>
+    <label name="active"/>
+    <field name="active"/>
+    <notebook>
+        <page string="Template" id="template">
+            <label name="company"/>
+            <field name="company"/>
+            <newline/>
+            <label name="journal"/>
+            <field name="journal"/>
+            <label name="date"/>
+            <field name="date"/>
+            <label name="description"/>
+            <field name="description" colspan="3"/>
+            <field name="lines" colspan="4"/>
+        </page>
+        <page name="keywords">
+            <field name="keywords" colspan="4"
+                view_ids="account.move_template_keyword_view_list_sequence"/>
+        </page>
+    </notebook>
+</form>
diff --git a/view/move_template_keyword_form.xml b/view/move_template_keyword_form.xml
new file mode 100644
index 0000000..f08a967
--- /dev/null
+++ b/view/move_template_keyword_form.xml
@@ -0,0 +1,18 @@
+<?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="Account Move Template Keyword">
+    <label name="move"/>
+    <field name="move"/>
+    <newline/>
+    <label name="name"/>
+    <field name="name"/>
+    <label name="string"/>
+    <field name="string"/>
+    <label name="type_"/>
+    <field name="type_"/>
+    <label name="digits"/>
+    <field name="digits"/>
+    <label name="required"/>
+    <field name="required"/>
+</form>
diff --git a/view/account_type_list.xml b/view/move_template_keyword_list.xml
similarity index 61%
copy from view/account_type_list.xml
copy to view/move_template_keyword_list.xml
index 8d79002..44e67ab 100644
--- a/view/account_type_list.xml
+++ b/view/move_template_keyword_list.xml
@@ -1,6 +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. -->
-<tree string="Account Types">
+<tree string="Account Move Template Keywords">
+    <field name="move"/>
     <field name="name"/>
+    <field name="type_"/>
+    <field name="required"/>
 </tree>
diff --git a/view/account_type_list.xml b/view/move_template_keyword_list_sequence.xml
similarity index 62%
copy from view/account_type_list.xml
copy to view/move_template_keyword_list_sequence.xml
index 8d79002..b073b5f 100644
--- a/view/account_type_list.xml
+++ b/view/move_template_keyword_list_sequence.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Account Types">
+<tree string="Account Move Template Keywords" sequence="sequence">
     <field name="name"/>
+    <field name="type_"/>
+    <field name="required"/>
 </tree>
diff --git a/view/account_type_list.xml b/view/move_template_list.xml
similarity index 70%
copy from view/account_type_list.xml
copy to view/move_template_list.xml
index 8d79002..90bef51 100644
--- a/view/account_type_list.xml
+++ b/view/move_template_list.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Account Types">
+<tree string="Account Move Templates">
     <field name="name"/>
+    <field name="active" tree_invisible="1"/>
 </tree>
diff --git a/view/move_tree.xml b/view/move_tree.xml
index a5b2c66..76e7617 100644
--- a/view/move_tree.xml
+++ b/view/move_tree.xml
@@ -2,6 +2,7 @@
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
 <tree string="Account Moves">
+    <field name="company"/>
     <field name="number"/>
     <field name="post_number"/>
     <field name="journal"/>
diff --git a/view/period_tree.xml b/view/period_tree.xml
index 72db805..39d14c3 100644
--- a/view/period_tree.xml
+++ b/view/period_tree.xml
@@ -2,6 +2,7 @@
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
 <tree string="Periods">
+    <field name="company"/>
     <field name="name"/>
     <field name="code"/>
     <field name="type"/>
diff --git a/view/tax_form.xml b/view/tax_form.xml
index dc1fb2e..24b8463 100644
--- a/view/tax_form.xml
+++ b/view/tax_form.xml
@@ -34,6 +34,9 @@ this repository contains the full copyright notices and license terms. -->
             <label name="company"/>
             <field name="company"/>
             <newline/>
+            <label name="update_unit_price"/>
+            <field name="update_unit_price"/>
+            <newline/>
             <label name="invoice_account"/>
             <field name="invoice_account"/>
             <newline/>
diff --git a/view/tax_line_template_form.xml b/view/tax_line_template_form.xml
new file mode 100644
index 0000000..76e420f
--- /dev/null
+++ b/view/tax_line_template_form.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form string="Account Tax Line Template">
+    <label name="line"/>
+    <field name="line" colspan="3"/>
+    <label name="tax"/>
+    <field name="tax"/>
+    <label name="code"/>
+    <field name="code"/>
+    <label name="amount"/>
+    <field name="amount"/>
+</form>
diff --git a/view/period_tree.xml b/view/tax_line_template_list.xml
similarity index 59%
copy from view/period_tree.xml
copy to view/tax_line_template_list.xml
index 72db805..3cd8dd0 100644
--- a/view/period_tree.xml
+++ b/view/tax_line_template_list.xml
@@ -1,9 +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. -->
-<tree string="Periods">
-    <field name="name"/>
+<tree string="Account Tax Line Templates" editable="bottom">
+    <field name="tax"/>
     <field name="code"/>
-    <field name="type"/>
-    <field name="state"/>
+    <field name="amount"/>
+    <field name="line"/>
 </tree>
diff --git a/view/tax_template_form.xml b/view/tax_template_form.xml
index 93ab0ba..d963bec 100644
--- a/view/tax_template_form.xml
+++ b/view/tax_template_form.xml
@@ -32,6 +32,9 @@ this repository contains the full copyright notices and license terms. -->
                 </group>
             </group>
             <newline/>
+            <label name="update_unit_price"/>
+            <field name="update_unit_price"/>
+            <newline/>
             <label name="invoice_account"/>
             <field name="invoice_account"/>
             <newline/>
-- 
tryton-modules-account



More information about the tryton-debian-vcs mailing list