[tryton-debian-vcs] tryton-modules-account-invoice branch upstream updated. upstream/3.2.1-1-gf4a99df

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Thu Oct 23 12:13:29 UTC 2014


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

commit f4a99df5ad52d057cb1c2a463a6bc3809bd8593b
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Oct 21 11:29:05 2014 +0200

    Adding upstream version 3.4.0.
    
    Signed-off-by: Mathias Behrle <mathiasb at m9s.biz>

diff --git a/CHANGELOG b/CHANGELOG
index ece408b..7a08e1d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
-Version 3.2.1 - 2014-08-03
+Version 3.4.0 - 2014-10-20
 * Bug fixes (see mercurial logs for details)
+* Add Tax rounding configuration
 
 Version 3.2.0 - 2014-04-21
 * Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index ab1c2e0..4468a1a 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 3.2.1
+Version: 3.4.0
 Summary: Tryton module for invoicing
 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.2/
+Download-URL: http://downloads.tryton.org/3.4/
 Description: trytond_account_invoice
         =======================
         
diff --git a/__init__.py b/__init__.py
index 4636280..e87051c 100644
--- a/__init__.py
+++ b/__init__.py
@@ -27,6 +27,8 @@ def register():
         Period,
         Move,
         Reconciliation,
+        Configuration,
+        ConfigurationTaxRounding,
         module='account_invoice', type_='model')
     Pool.register(
         PrintInvoice,
diff --git a/account.py b/account.py
index 9c6bb23..471f005 100644
--- a/account.py
+++ b/account.py
@@ -1,12 +1,68 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from trytond.model import fields
+from trytond.model import ModelSQL, ModelView, MatchMixin, fields
 from trytond.pyson import Eval
 from trytond.pool import Pool, PoolMeta
+from trytond.transaction import Transaction
 
-__all__ = ['FiscalYear', 'Period', 'Move', 'Reconciliation']
+__all__ = ['Configuration', 'ConfigurationTaxRounding',
+    'FiscalYear', 'Period', 'Move', 'Reconciliation']
 __metaclass__ = PoolMeta
 
+tax_roundings = [
+    ('document', 'Per Document'),
+    ('line', 'Per Line'),
+    ]
+
+
+class Configuration:
+    __name__ = 'account.configuration'
+    tax_rounding = fields.Function(fields.Selection(tax_roundings,
+            'Tax Rounding'), 'on_change_with_tax_rounding')
+    tax_roundings = fields.One2Many('account.configuration.tax_rounding',
+        'configuration', 'Tax Roundings')
+
+    @staticmethod
+    def default_tax_rounding():
+        return 'document'
+
+    @fields.depends('tax_roundings')
+    def on_change_with_tax_rounding(self, name=None, pattern=None):
+        context = Transaction().context
+        if pattern is None:
+            pattern = {}
+        pattern = pattern.copy()
+        pattern['company'] = context.get('company')
+
+        for line in self.tax_roundings:
+            if line.match(pattern):
+                return line.method
+        return self.default_tax_rounding()
+
+
+class ConfigurationTaxRounding(ModelSQL, ModelView, MatchMixin):
+    'Account Configuration Tax Rounding'
+    __name__ = 'account.configuration.tax_rounding'
+    configuration = fields.Many2One('account.configuration', 'Configuration',
+        required=True, ondelete='CASCADE')
+    sequence = fields.Integer('Sequence')
+    company = fields.Many2One('company.company', 'Company')
+    method = fields.Selection(tax_roundings, 'Method', required=True)
+
+    @classmethod
+    def __setup__(cls):
+        super(ConfigurationTaxRounding, cls).__setup__()
+        cls._order.insert(0, ('sequence', 'ASC'))
+
+    @staticmethod
+    def order_sequence(tables):
+        table, _ = tables[None]
+        return [table.sequence == None, table.sequence]
+
+    @staticmethod
+    def default_method():
+        return 'document'
+
 
 class FiscalYear:
     __name__ = 'account.fiscalyear'
@@ -259,10 +315,13 @@ class Reconciliation:
         Invoice = Pool().get('account.invoice')
         reconciliations = super(Reconciliation, cls).create(vlist)
         move_ids = set()
+        account_ids = set()
         for reconciliation in reconciliations:
-            move_ids |= set(l.move.id for l in reconciliation.lines)
+            move_ids |= {l.move.id for l in reconciliation.lines}
+            account_ids |= {l.account.id for l in reconciliation.lines}
         invoices = Invoice.search([
                 ('move', 'in', list(move_ids)),
+                ('account', 'in', list(account_ids)),
                 ])
         Invoice.process(invoices)
         return reconciliations
diff --git a/account.xml b/account.xml
index fda39f5..3937f8f 100644
--- a/account.xml
+++ b/account.xml
@@ -3,6 +3,42 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
+        <record model="ir.ui.view" id="configuration_view_form">
+            <field name="model">account.configuration</field>
+            <field name="inherit" ref="account.configuration_view_form"/>
+            <field name="name">configuration_form</field>
+        </record>
+
+        <record model="ir.ui.view" id="configuration_tax_rounding_view_form">
+            <field name="model">account.configuration.tax_rounding</field>
+            <field name="type">form</field>
+            <field name="name">configuration_tax_rounding_form</field>
+        </record>
+        <record model="ir.ui.view" id="configuration_tax_rounding_view_list">
+            <field name="model">account.configuration.tax_rounding</field>
+            <field name="type">tree</field>
+            <field name="name">configuration_tax_rounding_list</field>
+        </record>
+
+        <record model="ir.model.access" id="access_configuration_tax_rounding">
+            <field name="model"
+                search="[('model', '=', 'account.configuration.tax_rounding')]"/>
+            <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_configuration_tax_rounding_account_admin">
+            <field name="model"
+                search="[('model', '=', 'account.configuration.tax_rounding')]"/>
+            <field name="group" ref="account.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="fiscalyear_view_form">
             <field name="model">account.fiscalyear</field>
             <field name="inherit" ref="account.fiscalyear_view_form"/>
diff --git a/invoice.py b/invoice.py
index 6f9cc15..5bfabb2 100644
--- a/invoice.py
+++ b/invoice.py
@@ -1,9 +1,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.
 from decimal import Decimal
+from collections import defaultdict
 import base64
 import itertools
-import operator
 from sql import Literal
 from sql.aggregate import Count, Sum
 from sql.conditionals import Coalesce, Case
@@ -15,7 +15,7 @@ from trytond.wizard import Wizard, StateView, StateTransition, StateAction, \
     Button
 from trytond import backend
 from trytond.pyson import If, Eval, Bool, Id
-from trytond.tools import reduce_ids
+from trytond.tools import reduce_ids, grouped_slice
 from trytond.transaction import Transaction
 from trytond.pool import Pool
 from trytond.rpc import RPC
@@ -208,9 +208,6 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 'customer_invoice_cancel_move': (
                     'Customer invoice/credit note '
                     '"%s" can not be cancelled once posted.'),
-                'period_cancel_move': (
-                    'The period of Invoice "%s" is closed.\n'
-                    'Use the today for cancel move?'),
                 })
         cls._transitions |= set((
                 ('draft', 'validated'),
@@ -389,8 +386,9 @@ class Invoice(Workflow, ModelSQL, ModelView):
 
         if self.party:
             invoice_address = self.party.address_get(type='invoice')
-            res['invoice_address'] = invoice_address.id
-            res['invoice_address.rec_name'] = invoice_address.rec_name
+            if invoice_address:
+                res['invoice_address'] = invoice_address.id
+                res['invoice_address.rec_name'] = invoice_address.rec_name
         return res
 
     @fields.depends('currency')
@@ -439,6 +437,10 @@ class Invoice(Workflow, ModelSQL, ModelView):
         InvoiceTax = pool.get('account.invoice.tax')
         Account = pool.get('account.account')
         TaxCode = pool.get('account.tax.code')
+        Configuration = pool.get('account.configuration')
+
+        config = Configuration(1)
+
         res = {
             'untaxed_amount': Decimal('0.0'),
             'tax_amount': Decimal('0.0'),
@@ -446,6 +448,13 @@ class Invoice(Workflow, ModelSQL, ModelView):
             'taxes': {},
             }
         computed_taxes = {}
+
+        def round_taxes():
+            if self.currency:
+                for value in computed_taxes.itervalues():
+                    for field in ('base', 'amount'):
+                        value[field] = self.currency.round(value[field])
+
         if self.lines:
             context = self.get_tax_context()
             for line in self.lines:
@@ -453,23 +462,24 @@ class Invoice(Workflow, ModelSQL, ModelView):
                     continue
                 res['untaxed_amount'] += getattr(line, 'amount', None) or 0
                 with Transaction().set_context(**context):
-                    taxes = Tax.compute(getattr(line, 'taxes', []) or [],
+                    taxes = Tax.compute(
+                        Tax.browse(getattr(line, 'taxes', []) or []),
                         getattr(line, 'unit_price', None) or Decimal('0.0'),
                         getattr(line, 'quantity', None) or 0.0,
                         date=self.accounting_date or self.invoice_date)
                 for tax in taxes:
                     key, val = self._compute_tax(tax,
                         self.type or 'out_invoice')
-                    if not key in computed_taxes:
+                    if key not in computed_taxes:
                         computed_taxes[key] = val
                     else:
                         computed_taxes[key]['base'] += val['base']
                         computed_taxes[key]['amount'] += val['amount']
-        if self.currency:
-            for key in computed_taxes:
-                for field in ('base', 'amount'):
-                    computed_taxes[key][field] = self.currency.round(
-                        computed_taxes[key][field])
+                if config.tax_rounding == 'line':
+                    round_taxes()
+        if config.tax_rounding == 'document':
+            round_taxes()
+
         tax_keys = []
         for tax in (self.taxes or []):
             if tax.manual:
@@ -546,11 +556,9 @@ class Invoice(Workflow, ModelSQL, ModelView):
         total_amount = dict((i.id, _ZERO) for i in invoices)
 
         type_name = cls.tax_amount._field.sql_type().base
-        in_max = cursor.IN_MAX
         tax = InvoiceTax.__table__()
         to_round = False
-        for i in range(0, len(invoices), in_max):
-            sub_ids = [i.id for i in invoices[i:i + in_max]]
+        for sub_ids in grouped_slice(invoices):
             red_sql = reduce_ids(tax.invoice, sub_ids)
             cursor.execute(*tax.select(tax.invoice,
                     Coalesce(Sum(tax.amount), 0).as_(type_name),
@@ -583,8 +591,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
         move = Move.__table__()
         line = MoveLine.__table__()
         to_round = False
-        for i in range(0, len(invoices_move), in_max):
-            sub_ids = [i.id for i in invoices_move[i:i + in_max]]
+        for sub_ids in grouped_slice(invoices_move):
             red_sql = reduce_ids(invoice.id, sub_ids)
             cursor.execute(*invoice.join(move,
                     condition=invoice.move == move.id
@@ -640,15 +647,28 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 return False
         return True
 
-    def get_lines_to_pay(self, name):
-        lines = []
-        if self.move:
-            for line in self.move.lines:
-                if (line.account.id == self.account.id
-                        and line.maturity_date):
-                    lines.append(line)
-        lines.sort(key=operator.attrgetter('maturity_date'))
-        return [x.id for x in lines]
+    @classmethod
+    def get_lines_to_pay(cls, invoices, name):
+        pool = Pool()
+        MoveLine = pool.get('account.move.line')
+        line = MoveLine.__table__()
+        invoice = cls.__table__()
+        cursor = Transaction().cursor
+        in_max = cursor.IN_MAX
+
+        lines = defaultdict(list)
+        for i in range(0, len(invoices), in_max):
+            sub_ids = [i.id for i in invoices[i:i + in_max]]
+            red_sql = reduce_ids(invoice.id, sub_ids)
+            cursor.execute(*invoice.join(line,
+                condition=((invoice.move == line.move)
+                    & (invoice.account == line.account))).select(
+                        invoice.id, line.id,
+                        where=(line.maturity_date != None) & red_sql,
+                        order_by=(invoice.id, line.maturity_date)))
+            for invoice_id, line_id in cursor.fetchall():
+                lines[invoice_id].append(line_id)
+        return lines
 
     @classmethod
     def get_amount_to_pay(cls, invoices, name):
@@ -801,41 +821,54 @@ class Invoice(Workflow, ModelSQL, ModelView):
         return key, val
 
     def _compute_taxes(self):
-        Tax = Pool().get('account.tax')
+        pool = Pool()
+        Tax = pool.get('account.tax')
+        Configuration = pool.get('account.configuration')
+
+        config = Configuration(1)
 
         context = self.get_tax_context()
 
-        res = {}
+        taxes = {}
+
+        def round_taxes():
+            for value in taxes.itervalues():
+                for field in ('base', 'amount'):
+                    value[field] = self.currency.round(value[field])
+
         for line in self.lines:
-            # Don't round on each line to handle rounding error
             if line.type != 'line':
                 continue
             with Transaction().set_context(**context):
-                taxes = Tax.compute(line.taxes, line.unit_price,
-                    line.quantity,
+                tax_list = Tax.compute(Tax.browse(line.taxes),
+                    line.unit_price, line.quantity,
                     date=self.accounting_date or self.invoice_date)
-            for tax in taxes:
+            for tax in tax_list:
                 key, val = self._compute_tax(tax, self.type)
                 val['invoice'] = self.id
-                if not key in res:
-                    res[key] = val
+                if key not in taxes:
+                    taxes[key] = val
                 else:
-                    res[key]['base'] += val['base']
-                    res[key]['amount'] += val['amount']
-        for key in res:
-            for field in ('base', 'amount'):
-                res[key][field] = self.currency.round(res[key][field])
-        return res
+                    taxes[key]['base'] += val['base']
+                    taxes[key]['amount'] += val['amount']
+            if config.tax_rounding == 'line':
+                round_taxes()
+        if config.tax_rounding == 'document':
+            round_taxes()
+        return taxes
 
     @classmethod
     def update_taxes(cls, invoices, exception=False):
         Tax = Pool().get('account.invoice.tax')
+        to_create = []
+        to_delete = []
+        to_write = []
         for invoice in invoices:
             if invoice.state in ('posted', 'paid', 'cancel'):
                 continue
             computed_taxes = invoice._compute_taxes()
             if not invoice.taxes:
-                Tax.create([tax for tax in computed_taxes.values()])
+                to_create.extend([tax for tax in computed_taxes.values()])
             else:
                 tax_keys = []
                 for tax in invoice.taxes:
@@ -851,7 +884,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
                         if exception:
                             cls.raise_user_error('missing_tax_line',
                                 (invoice.rec_name,))
-                        Tax.delete([tax])
+                        to_delete.append(tax)
                         continue
                     tax_keys.append(key)
                     if not invoice.currency.is_zero(
@@ -859,13 +892,19 @@ class Invoice(Workflow, ModelSQL, ModelView):
                         if exception:
                             cls.raise_user_error('diff_tax_line',
                                 (invoice.rec_name,))
-                        Tax.write([tax], computed_taxes[key])
+                        to_write.extend(([tax], computed_taxes[key]))
                 for key in computed_taxes:
                     if not key in tax_keys:
                         if exception:
                             cls.raise_user_error('missing_tax_line2',
                                 (invoice.rec_name,))
-                        Tax.create([computed_taxes[key]])
+                        to_create.append(computed_taxes[key])
+        if to_create:
+            Tax.create(to_create)
+        if to_delete:
+            Tax.delete(to_delete)
+        if to_write:
+            Tax.write(*to_write)
 
     def _get_move_line_invoice_line(self):
         '''
@@ -911,9 +950,10 @@ class Invoice(Workflow, ModelSQL, ModelView):
             res['debit'] = - amount
             res['credit'] = Decimal('0.0')
         res['account'] = self.account.id
+        if self.account.party_required:
+            res['party'] = self.party.id
         res['maturity_date'] = date
         res['description'] = self.description
-        res['party'] = self.party.id
         return res
 
     def create_move(self):
@@ -1027,14 +1067,9 @@ class Invoice(Workflow, ModelSQL, ModelView):
             ('party',) + tuple(clause[1:]),
             ]
 
-    @classmethod
-    def get_origins(cls, invoices, name):
-        origins = {}
-        with Transaction().set_user(0, set_context=True):
-            for invoice in cls.browse(invoices):
-                origins[invoice.id] = ', '.join(set(itertools.ifilter(None,
-                            (l.origin_name for l in invoice.lines))))
-        return origins
+    def get_origins(self, name):
+        return ', '.join(set(itertools.ifilter(None,
+                    (l.origin_name for l in self.lines))))
 
     @classmethod
     def delete(cls, invoices):
@@ -1190,7 +1225,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
             lines.append({
                     'description': description,
                     'account': self.account.id,
-                    'party': self.party.id,
+                    'party': (self.party.id
+                        if self.account.party_required else None),
                     'debit': Decimal('0.0'),
                     'credit': amount,
                     'amount_second_currency': amount_second_currency,
@@ -1199,7 +1235,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
             lines.append({
                     'description': description,
                     'account': journal.debit_account.id,
-                    'party': self.party.id,
+                    'party': (self.party.id
+                        if journal.debit_account.party_required else None),
                     'debit': amount,
                     'credit': Decimal('0.0'),
                     'amount_second_currency': amount_second_currency,
@@ -1218,7 +1255,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
             lines.append({
                     'description': description,
                     'account': self.account.id,
-                    'party': self.party.id,
+                    'party': (self.party.id
+                        if self.account.party_required else None),
                     'debit': amount,
                     'credit': Decimal('0.0'),
                     'amount_second_currency': amount_second_currency,
@@ -1227,7 +1265,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
             lines.append({
                     'description': description,
                     'account': journal.credit_account.id,
-                    'party': self.party.id,
+                    'party': (self.party.id
+                        if journal.credit_account.party_required else None),
                     'debit': Decimal('0.0'),
                     'credit': amount,
                     'amount_second_currency': amount_second_currency,
@@ -1319,8 +1358,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
             if invoice.move:
                 moves.append(invoice.move)
         if moves:
-            with Transaction().set_user(0, set_context=True):
-                Move.delete(moves)
+            Move.delete(moves)
 
     @classmethod
     @ModelView.button
@@ -1373,39 +1411,13 @@ class Invoice(Workflow, ModelSQL, ModelView):
     def paid(cls, invoices):
         pass
 
-    def get_cancel_move(self):
-        pool = Pool()
-        Date = pool.get('ir.date')
-        Move = pool.get('account.move')
-        Period = pool.get('account.period')
-
-        move = self.move
-        default = {}
-        if move.period.state == 'close':
-            self.raise_user_warning('%s.get_cancel_move' % self,
-                'period_cancel_move', self.rec_name)
-            date = Date.today()
-            period_id = Period.find(self.company.id, date=date)
-            default.update({
-                    'date': date,
-                    'period': period_id,
-                    })
-
-        cancel_move, = Move.copy([move], default=default)
-        for line in cancel_move.lines:
-            line.debit *= -1
-            line.credit *= -1
-            line.save()
-            for tax_line in line.tax_lines:
-                tax_line.amount *= -1
-                tax_line.save()
-        return cancel_move
-
     @classmethod
     @ModelView.button
     @Workflow.transition('cancel')
     def cancel(cls, invoices):
-        Move = Pool().get('account.move')
+        pool = Pool()
+        Move = pool.get('account.move')
+        Line = pool.get('account.move.line')
 
         cancel_moves = []
         delete_moves = []
@@ -1414,14 +1426,30 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 if invoice.move.state == 'draft':
                     delete_moves.append(invoice.move)
                 elif not invoice.cancel_move:
-                    invoice.cancel_move = invoice.get_cancel_move()
+                    invoice.cancel_move = invoice.move.cancel()
                     invoice.save()
                     cancel_moves.append(invoice.cancel_move)
         if delete_moves:
-            with Transaction().set_user(0, set_context=True):
-                Move.delete(delete_moves)
+            Move.delete(delete_moves)
         if cancel_moves:
             Move.post(cancel_moves)
+        # Write state before reconcile to prevent invoice to go to paid state
+        cls.write(invoices, {
+                'state': 'cancel',
+                })
+        # Reconcile lines to pay with the cancellation ones if possible
+        for invoice in invoices:
+            if not invoice.move or not invoice.cancel_move:
+                continue
+            to_reconcile = []
+            for line in invoice.move.lines + invoice.cancel_move.lines:
+                if line.account == invoice.account:
+                    if line.reconciliation:
+                        break
+                    to_reconcile.append(line)
+            else:
+                if to_reconcile:
+                    Line.reconcile(to_reconcile)
 
 
 class InvoicePaymentLine(ModelSQL):
@@ -1716,7 +1744,8 @@ class InvoiceLine(ModelSQL, ModelView):
         context = self.invoice.get_tax_context()
         taxes_keys = []
         with Transaction().set_context(**context):
-            taxes = Tax.compute(self.taxes, self.unit_price, self.quantity)
+            taxes = Tax.compute(Tax.browse(self.taxes),
+                self.unit_price, self.quantity)
         for tax in taxes:
             key, _ = Invoice._compute_tax(tax, self.invoice.type)
             taxes_keys.append(key)
@@ -1779,7 +1808,7 @@ class InvoiceLine(ModelSQL, ModelView):
 
         if self.invoice and self.invoice.type:
             type_ = self.invoice.type
-        elif self.invoice_type:
+        else:
             type_ = self.invoice_type
         if type_ in ('in_invoice', 'in_credit_note'):
             if company and currency:
@@ -1993,7 +2022,8 @@ class InvoiceLine(ModelSQL, ModelView):
         if self.type != 'line':
             return res
         with Transaction().set_context(**context):
-            taxes = Tax.compute(self.taxes, self.unit_price, self.quantity)
+            taxes = Tax.compute(Tax.browse(self.taxes),
+                self.unit_price, self.quantity)
         for tax in taxes:
             if self.invoice.type in ('out_invoice', 'in_invoice'):
                 base_code_id = (tax['tax'].invoice_base_code.id
@@ -2055,7 +2085,8 @@ class InvoiceLine(ModelSQL, ModelView):
                 res['debit'] = - amount
                 res['credit'] = Decimal('0.0')
         res['account'] = self.account.id
-        res['party'] = self.invoice.party.id
+        if self.account.party_required:
+            res['party'] = self.invoice.party.id
         computed_taxes = self._compute_taxes()
         if computed_taxes:
             res['tax_lines'] = [('create', [tax for tax in computed_taxes])]
@@ -2346,7 +2377,8 @@ class InvoiceTax(ModelSQL, ModelView):
                 res['debit'] = - amount
                 res['credit'] = Decimal('0.0')
         res['account'] = self.account.id
-        res['party'] = self.invoice.party.id
+        if self.account.party_required:
+            res['party'] = self.invoice.party.id
         if self.tax_code:
             res['tax_lines'] = [('create', [{
                             'code': self.tax_code.id,
diff --git a/invoice.xml b/invoice.xml
index 9a38f8e..b38fdf0 100644
--- a/invoice.xml
+++ b/invoice.xml
@@ -114,7 +114,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window.domain" id="act_invoice_out_credit_note_domain_posted">
             <field name="name">Posted</field>
             <field name="sequence" eval="30"/>
-            <field name="domain">[('state', '=', 'post')]</field>
+            <field name="domain">[('state', '=', 'posted')]</field>
             <field name="act_window" ref="act_invoice_out_credit_note_form"/>
         </record>
         <record model="ir.action.act_window.domain" id="act_invoice_out_credit_note_domain_all">
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 3152f25..452e35e 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -178,12 +178,6 @@ msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -214,6 +208,64 @@ msgid ""
 "already an invoice posted in this period"
 msgstr ""
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr ""
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Фирма"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Настройки"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Метод"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Условие за плащане"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Последователност"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Последователност за кредитно известие на доставчик"
@@ -683,8 +735,9 @@ msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Редове"
 
+#, fuzzy
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
+msgid "Name"
 msgstr "Условие за плащане"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
@@ -895,6 +948,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "За подреждане на редовете във възходящ ред"
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr ""
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Фактура"
@@ -1239,6 +1296,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr ""
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr ""
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr ""
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr ""
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr ""
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Отказан"
@@ -1421,6 +1494,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Сряда"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr ""
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr ""
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr "Сигурни ли сте че искате да кредитирате тази/тези фактура/фактури?"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index d64778a..5605caa 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -226,14 +226,6 @@ msgstr "No es pot esborrar la factura numerada \"%s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-"El període de la factura \"%s\" està tancat.\n"
-"Voleu usar l'actual per l'assentament de cancel·lació?"
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -277,6 +269,54 @@ msgstr ""
 "No podeu canviar la seqüència de factures al període \"%s\" perquè ja hi ha "
 "factures confirmades en aquest període."
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr "Arrodoniment impostos"
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr "Arrodoniment impostos"
+
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Configuració"
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Data creació"
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Usuari creació"
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Mètode"
+
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Seqüència"
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Data modificació"
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Usuari modificació"
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Seqüència d'abonament de proveïdor"
@@ -746,8 +786,8 @@ msgid "Lines"
 msgstr "Línies"
 
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
-msgstr "Termini de pagament"
+msgid "Name"
+msgstr "Nom"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
@@ -957,6 +997,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Serveix per ordenar les línies de forma ascendent."
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuració arrodoniment impostos"
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Factura"
@@ -1285,6 +1329,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr "Factura de proveïdor validada"
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr "Per document"
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr "Per línia"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr "Per document"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr "Per línia"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Cancel·lada"
@@ -1465,6 +1525,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Dimecres"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuració arrodoniment impostos"
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr "Configuració arrodoniment impostos"
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr "Esteu segur d'abonar aquestes factures?"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index ce48ab7..506d632 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -178,12 +178,6 @@ msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -214,6 +208,54 @@ msgid ""
 "already an invoice posted in this period"
 msgstr ""
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr ""
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr ""
@@ -683,7 +725,7 @@ msgid "Lines"
 msgstr ""
 
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
+msgid "Name"
 msgstr ""
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
@@ -894,6 +936,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr ""
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr ""
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr ""
@@ -1222,6 +1268,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr ""
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr ""
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr ""
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr ""
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr ""
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr ""
@@ -1402,6 +1464,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr ""
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr ""
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr ""
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 19cb38b..13bead6 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -54,8 +54,8 @@ msgid ""
 "You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
 "cancelled."
 msgstr ""
-"Zu Rechnung \"%(invoice)s\" kann keine Zeile mehr hinzugefügt werden, da sie"
-" festgeschrieben, bezahlt oder annulliert ist."
+"Zu Rechnung \"%(invoice)s\" kann keine Position mehr hinzugefügt werden, da "
+"sie festgeschrieben, bezahlt oder annulliert ist."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
@@ -122,8 +122,8 @@ msgid ""
 "You can not add line \"%(line)s\" to invoice \"%(invoice)s\" because it is "
 "posted, paid or canceled."
 msgstr ""
-"Zu Rechnung \"%(invoice)s\" kann Zeile \"%(line)s\" nicht  mehr hinzugefügt "
-"werden, da sie festgeschrieben, bezahlt oder annulliert ist."
+"Zu Rechnung \"%(invoice)s\" kann Position \"%(line)s\" nicht  mehr "
+"hinzugefügt werden, da sie festgeschrieben, bezahlt oder annulliert ist."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -237,14 +237,6 @@ msgstr "Rechnung Nummer \"%s\" kann nicht gelöscht werden."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-"Die Buchungsperiode von Rechnung \"%s\" ist geschlossen.\n"
-"Soll das heutige Datum für die Stornobuchung verwendet werden?"
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -289,6 +281,54 @@ msgstr ""
 " werden, weil es bereits festgeschriebene Rechnungen in dieser "
 "Buchungsperiode gibt."
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr "Steuerrundung"
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr "Steuerrundungen"
+
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Einstellungen"
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Methode"
+
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Nummernkreis Gutschriften Lieferanten"
@@ -719,7 +759,7 @@ msgstr "Nachkommastellen Währung"
 
 msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
-msgstr "Zeitpunkt"
+msgstr "Datum"
 
 msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
@@ -758,8 +798,8 @@ msgid "Lines"
 msgstr "Positionen"
 
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
-msgstr "Zahlungsbedingung"
+msgid "Name"
+msgstr "Name"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
@@ -971,6 +1011,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Ordnet Positionen in aufsteigender Reihenfolge"
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Buchhaltung Konfiguration Steuerrundung"
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Rechnung"
@@ -1299,6 +1343,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr "Geprüfte Lieferantenrechnung"
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr "Pro Dokument"
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr "Pro Position"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr "Pro Dokument"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr "Pro Position"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Annulliert"
@@ -1479,6 +1539,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Mittwoch"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Buchhaltung Konfiguration Steuerrundung"
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr "Buchhaltung Konfiguration Steuerrundungen"
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr "Wollen Sie diese Rechnung(en) wirklich gutschreiben?"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 9424b2c..7c96cbc 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -222,14 +222,6 @@ msgstr "No se puede eliminar la factura numerada «%s»."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-"El período de la factura «%s» está cerrado.\n"
-"¿Usa el actual para el asiento de cancelación?"
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -273,6 +265,54 @@ msgstr ""
 "No puede cambiar la secuencia de facturas en el período «%s» porque ya hay "
 "facturas confirmadas en este período."
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr "Redondeo de impuesto"
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr "Redondeos de impuesto"
+
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Configuración"
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Método"
+
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Secuencia de nota de crédito de proveedor"
@@ -742,8 +782,8 @@ msgid "Lines"
 msgstr "Líneas"
 
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
-msgstr "Término de pago"
+msgid "Name"
+msgstr "Nombre"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
@@ -953,6 +993,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Usar para ordenar las líneas ascendentemente."
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuración contable de Redondeo de impuesto"
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Factura"
@@ -1281,6 +1325,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr "Factura de proveedor validada"
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr "Por documento"
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr "Por línea"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr "Por documento"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr "Por línea"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Cancelada"
@@ -1461,6 +1521,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Miércoles"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuración contable de Redondeo de impuesto"
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr "Configuración contable de Redondeos de impuesto"
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr "¿Está seguro de abonar esta/s factura/s?"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 7c55490..2e2bff7 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -14,7 +14,7 @@ msgid ""
 "already posted invoices in this fiscal year."
 msgstr ""
 "Usted no puede cambiar la secuencia de factura en el año fiscal \"%s\" "
-"porque hay actualmente facturas confirmadas en este año fiscal."
+"porque hay actualmente facturas contabilizadas en este año fiscal."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it has payments."
@@ -48,8 +48,8 @@ msgid ""
 "You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
 "cancelled."
 msgstr ""
-"Usted no puede añadir una línea a una factura \"%(invoice)s\" que este "
-"confirmada, pagada o cancelada\""
+"No puede agregar una línea a una factura \"%(invoice)s\" que esta "
+"contabilizada, pagada o cancelada."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
@@ -114,8 +114,8 @@ msgid ""
 "You can not add line \"%(line)s\" to invoice \"%(invoice)s\" because it is "
 "posted, paid or canceled."
 msgstr ""
-"Usted no puede añadir la línea \"%(line)s\" a la factura \"%(invoice)s\" "
-"porque ya está confirmada, pagada o cancelada\""
+"No puede agregar la línea \"%(line)s\" a la factura \"%(invoice)s\" porque "
+"la factura está contabilizada, pagada o cancelada."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -227,14 +227,6 @@ msgstr "La factura numerada \"%s\" no puede ser eliminada."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-"El periodo de la Factura \"%s\" esta cerrado.\n"
-"Usar el actual para cancelar el asiento  ?"
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -274,7 +266,55 @@ msgid ""
 "already an invoice posted in this period"
 msgstr ""
 "No puede cambiar la secuencia de factura en el período \"%s\" porque hay una"
-" factura confirmada en este período"
+" factura contabilizada en este período"
+
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr "Redondeo de Impuesto"
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr "Redondeo de Impuestos"
+
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Compañía"
+
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Configuración"
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Método"
+
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Modificado por Usuario"
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -745,8 +785,8 @@ msgid "Lines"
 msgstr "Líneas"
 
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
-msgstr "Forma de Pago"
+msgid "Name"
+msgstr "Nombre"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
@@ -858,11 +898,11 @@ msgstr "Base"
 
 msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
-msgstr "Código Base"
+msgstr "Código de la Base"
 
 msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
-msgstr "Signo Base"
+msgstr "Signo de la Base"
 
 msgctxt "field:account.invoice.tax,create_date:"
 msgid "Create Date"
@@ -956,6 +996,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Para ordenar las líneas ascendentemente"
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuración de Redondeo de Impuesto"
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Factura"
@@ -1284,6 +1328,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr "Factura de Proveedor Validada"
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr "Por Documento"
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr "Por Línea"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr "Por Documento"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr "Por Línea"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Anulada"
@@ -1294,7 +1354,7 @@ msgstr "Borrador"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Paid"
-msgstr "Pagado"
+msgstr "Pagada"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Posted"
@@ -1464,6 +1524,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Miércoles"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuración de Redondeo de Impuesto"
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr "Configuración de Redondeo de Impuestos"
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr "Esta seguro que desea acreditar esta(s) facturas?"
diff --git a/locale/es_CO.po b/locale/es_EC.po
similarity index 82%
copy from locale/es_CO.po
copy to locale/es_EC.po
index 7c55490..1b41a72 100644
--- a/locale/es_CO.po
+++ b/locale/es_EC.po
@@ -5,51 +5,50 @@ msgstr "Content-Type: text/plain; charset=utf-8\n"
 msgctxt "error:account.fiscalyear:"
 msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"Año fiscal \"%(first)s\" y \"%(second)s\" tienen la misma secuencia de "
-"factura."
+"Los años fiscales \"%(first)s\" y \"%(second)s\" tienen la misma secuencia "
+"de factura."
 
 msgctxt "error:account.fiscalyear:"
 msgid ""
 "You can not change invoice sequence in fiscal year \"%s\" because there are "
 "already posted invoices in this fiscal year."
 msgstr ""
-"Usted no puede cambiar la secuencia de factura en el año fiscal \"%s\" "
-"porque hay actualmente facturas confirmadas en este año fiscal."
+"No puede cambiar la secuencia de factura en el año fiscal \"%s\" porque ya "
+"hay facturas confirmadas en este año fiscal."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it has payments."
-msgstr ""
-"Usted no puede abonar con reembolso la factura \"%s\" porque ha sido pagada."
+msgstr "No puede acreditar con devolución la factura \"%s\" porque tiene pagos."
 
 msgctxt "error:account.invoice.credit:"
 msgid ""
 "You can not credit with refund invoice \"%s\" because it is a supplier "
 "invoice/credit note."
 msgstr ""
-"No puede abonar con reembolso la factura \"%s\" porque es una nota "
-"credito/factura de proveedor."
+"No puede acreditar con devolución la factura \"%s\" porque es una "
+"factura/nota de crédito de proveedor."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
-"Usted no puede abonar con el reembolso de la factura \"%s\" porque no ha "
-"esta contabilizada."
+"No puede acreditar con devolución la factura \"%s\" porque no está "
+"contabilizada."
 
 msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account."
-msgstr "Una línea con tipo de \"línea\" debe tener una cuenta."
+msgstr "La línea de tipo \"línea\" debe tener una cuenta."
 
 msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice."
-msgstr "Una línea sin tipo de \"línea\" debe tener una factura!"
+msgstr "La línea sin el tipo \"línea\" debe tener una factura."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
 "cancelled."
 msgstr ""
-"Usted no puede añadir una línea a una factura \"%(invoice)s\" que este "
-"confirmada, pagada o cancelada\""
+"No puede añadir una línea a la factura \"%(invoice)s\" que está confirmada, "
+"pagada o cancelada\""
 
 msgctxt "error:account.invoice.line:"
 msgid ""
@@ -58,16 +57,16 @@ msgid ""
 " \"%(account_company)s\"."
 msgstr ""
 "No puede crear la línea de factura \"%(line)s\" en la factura "
-"\"%(invoice)s\" de la compañia \"%(invoice_line_company)s\" porque la cuenta"
-" \"%(account)s\" tiene la compañia \"%(account_company)s\"."
+"\"%(invoice)s\" de la empresa \"%(invoice_line_company)s\" porque la cuenta "
+"\"%(account)s\" tiene la empresa \"%(account_company)s\"."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s\" "
 "because the invoice uses the same account (%(account)s)."
 msgstr ""
-"No puede crear una línea de factura \"%(line)s\" en la factura "
-"\"%(invoice)s\" porque la factura usa la misma cuenta (%(account)s)."
+"No puede crear la línea de factura \"%(line)s\" en la factura "
+"\"%(invoice)s\" porque la factura utiliza la misma cuenta (%(account)s)."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
@@ -83,39 +82,39 @@ msgid ""
 "greater than the amount to pay."
 msgstr ""
 "En la factura \"%s\" usted no puede crear un pago parcial con una cantidad "
-"mayor a la cantidad total a pagar."
+"mayor que la cantidad a pagar."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
-msgstr "Día del mes debe estar ente 1 y 31."
+msgstr "El día del mes debe estar ente 1 y 31."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid ""
 "Percentage and Divisor values are not consistent in line \"%(line)s\" of "
 "payment term \"%(term)s\"."
 msgstr ""
-"Porcentaje y Divisor no son consistentes en línea \"%(line)s\" de forma de "
-"pago \"%(term)s\"."
+"Porcentaje y Divisor no son consistentes en la línea \"%(line)s\" del plazo "
+"de pago \"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
-msgstr "Línea inválida \"%(line)s\" en forma de pago \"%(term)s\"."
+msgstr "La línea \"%(line)s\" del plazo de pago \"%(term)s\" no es válida."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Last line of payment term \"%s\" must be of type remainder."
-msgstr "La última línea de la forma de pago \"%s\" debe ser del tipo saldo."
+msgstr "La última línea del plazo de pago \"%s\" debe ser del tipo \"resto\"."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
-msgstr "Falta linea de residuo en forma de pago \"%s\"."
+msgstr "Falta la línea de resto en el plazo de pago \"%s\"."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
 "You can not add line \"%(line)s\" to invoice \"%(invoice)s\" because it is "
 "posted, paid or canceled."
 msgstr ""
-"Usted no puede añadir la línea \"%(line)s\" a la factura \"%(invoice)s\" "
-"porque ya está confirmada, pagada o cancelada\""
+"No puede añadir la línea \"%(line)s\" a la factura \"%(invoice)s\" porque "
+"está confirmada, pagada o cancelada\""
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -123,8 +122,8 @@ msgid ""
 "\"%(invoice_company)s\" using account \"%(account)s\" from company "
 "\"%(account_company)s\"."
 msgstr ""
-"No puede crear la factura \"%(invoice)s\" en la compañia "
-"\"%(invoice_company)s\" usando la cuenta \"%(account)s\" desde la compañia "
+"No puede crear la factura \"%(invoice)s\" en la empresa "
+"\"%(invoice_company)s\" utilizando la cuenta \"%(account)s\" de la empresa "
 "\"%(account_company)s\"."
 
 msgctxt "error:account.invoice.tax:"
@@ -133,9 +132,9 @@ msgid ""
 "\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
 "\"%(base_code_company)s\"."
 msgstr ""
-"No puede crear la factura \"%(invoice)s\" en la compañia "
-"\"%(invoice_company)s\" usando el código de impuesto base \"%(base_code)s\" "
-"desde la compañia \"%(base_code_company)s\"."
+"No puede crear la factura \"%(invoice)s\" de la empresa "
+"\"%(invoice_company)s\" utilizando el código de impuesto base "
+"\"%(base_code)s\" de la empresa \"%(base_code_company)s\"."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -143,9 +142,9 @@ msgid ""
 "\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
 "\"%(tax_code_company)s\"."
 msgstr ""
-"No puede crear la factura \"%(invoice)s\" en la compañia "
-"\"%(invoice_company)s\" usando el código de impuesto \"%(tax_code)s\" desde "
-"la compañia \"%(tax_code_company)s\"."
+"No puede crear la factura \"%(invoice)s\" de la empresa "
+"\"%(invoice_company)s\" utilizando el código de impuesto \"%(tax_code)s\" de"
+" la empresa \"%(tax_code_company)s\"."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -153,73 +152,73 @@ msgid ""
 "is posted or paid."
 msgstr ""
 "No puede modificar los impuestos \"%(tax)s\" de la factura \"%(invoice)s\" "
-"porque esta contabilizada o pagada!"
+"porque está contabilizada o pagada."
 
 msgctxt "error:account.invoice:"
 msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
 msgstr ""
-"La nota crédito/factura de cliente \"%s\" no puede ser cancelada una vez "
-"registrada."
+"No se puede cancelar la factura/nota crédito \"%s\" de cliente  una vez "
+"confirmada."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
 msgstr ""
-"Factura \"%(invoice)s\" usa la misma cuenta \"%(account)s\" para la factura "
-"y la línea \"%(line)s\"."
+"La factura \"%(invoice)s\" utiliza la misma cuenta \"%(account)s\" para la "
+"factura y la línea \"%(line)s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%s\" has taxes defined but not on invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"La factura \"%s\" tiene impuestos definidos pero no las líneas de factura.\n"
-"Reprocese la factura"
+"La factura \"%s\" tiene impuestos definidos pero no en las líneas de factura.\n"
+"Recalcule la factura"
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"La factura \"%s\" tiene impuestos en líneas de factura que no están definidos en la factura.\n"
-"Reprocese la factura"
+"La factura \"%s\" tiene impuestos en las líneas de factura que no están en la factura.\n"
+"Recalcule la factura"
 
 msgctxt "error:account.invoice:"
 msgid "Invoice \"%s\" must be cancelled before deletion."
-msgstr "La factura \"%s\" debe ser cancelada antes de ser borrada."
+msgstr "La factura \"%s\" debe ser cancelada antes de ser eliminada."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"Los impuestos base de la factura \"%s\" son diferentes a los de las líneas de factura.\n"
-"Reprocese la factura"
+"La base de los impuestos de la factura \"%s\" es diferente de las líneas de la factura.\n"
+"Recalcule la factura"
 
 msgctxt "error:account.invoice:"
 msgid ""
 "The credit account on journal \"%(journal)s\" is the same as invoice "
 "\"%(invoice)s\"'s account."
 msgstr ""
-"¡La cuenta crédito en el libro diario \"%(journal)s\" es la misma que la "
+"La cuenta crédito en el libro diario \"%(journal)s\" es la misma que la "
 "cuenta de factura \"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
 msgid "The credit account on journal %s\" is missing."
-msgstr "Falta la cuenta credito en el libro diario \"%s\"."
+msgstr "Falta la cuenta crédito del libro diario \"%s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "The debit account on journal \"%(journal)s\" is the same as invoice "
 "\"%(invoice)s\"'s account."
 msgstr ""
-"La cuenta debito en libro diario \"%(journal)s\" es la misma que la de la "
+"La cuenta débito en el libro diario \"%(journal)s\" es la misma que la "
 "cuenta de la factura \"%(invoice)s\""
 
 msgctxt "error:account.invoice:"
 msgid "The debit account on journal \"%s\" is missing."
-msgstr "Falta la cuenta débito de libro diario \"%s\"."
+msgstr "Falta la cuenta débito del libro diario \"%s\"."
 
 msgctxt "error:account.invoice:"
 msgid "The numbered invoice \"%s\" can not be deleted."
@@ -227,46 +226,40 @@ msgstr "La factura numerada \"%s\" no puede ser eliminada."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-"El periodo de la Factura \"%s\" esta cerrado.\n"
-"Usar el actual para cancelar el asiento  ?"
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
 "No hay secuencia de factura para la factura \"%(invoice)s\" en el "
-"periodo/año fiscal \"%(period)s\"."
+"período/año fiscal \"%(period)s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "You can not create invoice \"%(invoice)s\" on company \"%(invoice_company)s "
 "because account \"%(account)s has a different company (%(account_company)s.)"
 msgstr ""
-"No puede crear la factura \"%(invoice)s\" en la compañia "
-"\"%(invoice_company)\" porque la cuenta \"%(account)s\" tiene una compañia "
+"No puede crear la factura \"%(invoice)s\" en la empresa "
+"\"%(invoice_company)\" porque la cuenta \"%(account)s\" tiene una empresa "
 "diferente (%(account_company)s.)"
 
 msgctxt "error:account.invoice:"
 msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
 msgstr ""
-"No puede modificar la factura \"%s\" porque esta contabilizada, pagada o "
-"anulada."
+"No puede modificar la factura \"%s\" porque está contabilizada, pagada o "
+"cancelada."
 
 msgctxt "error:account.period:"
 msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
-msgstr "Período \"%(first)s\" y \"%(second)s\" tienen la misma secuencia de factura."
+msgstr ""
+"Los períodos \"%(first)s\" y \"%(second)s\" tienen la misma secuencia de "
+"factura."
 
 msgctxt "error:account.period:"
 msgid ""
 "Period \"%(period)s\" must have the same company as its fiscal year "
 "(%(fiscalyear)s)."
 msgstr ""
-"Período \"%(first)s\" y \"%(second)s\" deben tener la misma compañia que su "
-"año fiscal (%(fiscalyear)s)."
+"El período \"%(period)s\" debe tener la misma empresa que su año fiscal "
+"(%(fiscalyear)s)."
 
 msgctxt "error:account.period:"
 msgid ""
@@ -276,6 +269,54 @@ msgstr ""
 "No puede cambiar la secuencia de factura en el período \"%s\" porque hay una"
 " factura confirmada en este período"
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr "Redondeo de Impuesto"
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr "Redondeos de Impuesto"
+
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Configuración"
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Método"
+
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Secuencia de Nota Crédito de Proveedor"
@@ -290,7 +331,7 @@ msgstr "Secuencia de Nota Crédito de Cliente"
 
 msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr "Secuencia de Facturas de Cliente"
+msgstr "Secuencia de Factura de Cliente"
 
 msgctxt "field:account.invoice,account:"
 msgid "Account"
@@ -310,7 +351,7 @@ msgstr "Valor a Pagar Hoy"
 
 msgctxt "field:account.invoice,cancel_move:"
 msgid "Cancel Move"
-msgstr "Asiento de Cancelación"
+msgstr "Cancelar Asiento"
 
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
@@ -318,7 +359,7 @@ msgstr "Comentario"
 
 msgctxt "field:account.invoice,company:"
 msgid "Company"
-msgstr "Compañía"
+msgstr "Empresa"
 
 msgctxt "field:account.invoice,create_date:"
 msgid "Create Date"
@@ -362,11 +403,11 @@ msgstr "Informe de Factura"
 
 msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
-msgstr "Formato de Reporte de Facturación"
+msgstr "Formato del Informe de Factura"
 
 msgctxt "field:account.invoice,journal:"
 msgid "Journal"
-msgstr "Libro Contable"
+msgstr "Libro Diario"
 
 msgctxt "field:account.invoice,lines:"
 msgid "Lines"
@@ -402,7 +443,7 @@ msgstr "Líneas de Pago"
 
 msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
-msgstr "Forma de Pago"
+msgstr "Plazo de Pago"
 
 msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
@@ -490,7 +531,7 @@ msgstr "ID"
 
 msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
-msgstr "Con Reembolso"
+msgstr "Con Devolución"
 
 msgctxt "field:account.invoice.line,account:"
 msgid "Account"
@@ -502,7 +543,7 @@ msgstr "Valor"
 
 msgctxt "field:account.invoice.line,company:"
 msgid "Company"
-msgstr "Compañía"
+msgstr "Empresa"
 
 msgctxt "field:account.invoice.line,create_date:"
 msgid "Create Date"
@@ -534,7 +575,7 @@ msgstr "Factura"
 
 msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
-msgstr "Impuestos de Facturas"
+msgstr "Impuestos de Factura"
 
 msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
@@ -642,11 +683,11 @@ msgstr "Valor del Pago"
 
 msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr "Cuenta Anulada"
+msgstr "Valor del Desajuste"
 
 msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
-msgstr "Compañía"
+msgstr "Empresa"
 
 msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
@@ -658,11 +699,11 @@ msgstr "Decimales de la Moneda de Pago"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr "Decimales de Moneda Anulado"
+msgstr "Decimales de Moneda del Desajuste"
 
 msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr "Moneda Anulada"
+msgstr "Moneda del Desajuste"
 
 msgctxt "field:account.invoice.pay.ask,id:"
 msgid "ID"
@@ -674,7 +715,7 @@ msgstr "Factura"
 
 msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr "Libro Contable Anulado"
+msgstr "Libro Diario de Desajustes"
 
 msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
@@ -718,7 +759,7 @@ msgstr "ID"
 
 msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
-msgstr "Libro Contable"
+msgstr "Libro Diario"
 
 msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
@@ -745,8 +786,8 @@ msgid "Lines"
 msgstr "Líneas"
 
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
-msgstr "Forma de Pago"
+msgid "Name"
+msgstr "Nombre"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
@@ -806,7 +847,7 @@ msgstr "Número de Meses"
 
 msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
-msgstr "Forma de Pago"
+msgstr "Plazo de Pago"
 
 msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
@@ -858,11 +899,11 @@ msgstr "Base"
 
 msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
-msgstr "Código Base"
+msgstr "Código de la Base"
 
 msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
-msgstr "Signo Base"
+msgstr "Signo de la Base"
 
 msgctxt "field:account.invoice.tax,create_date:"
 msgid "Create Date"
@@ -934,7 +975,7 @@ msgstr "Secuencia de Nota Crédito de Cliente"
 
 msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr "Secuencia de Facturas de Cliente"
+msgstr "Secuencia de Factura de Cliente"
 
 msgctxt "field:party.address,invoice:"
 msgid "Invoice"
@@ -942,19 +983,23 @@ msgstr "Factura"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr "Formas de Pago del Cliente"
+msgstr "Plazo de Pago del Cliente"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
-msgstr "Forma de Pago a Proveedor"
+msgstr "Plazo de Pago a Proveedor"
 
 msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr "Si es verdadero, las actuales facturas serán pagadas."
+msgstr "Si está marcada, se pagará(n) la(s) factura(s) actual(es)."
 
 msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
-msgstr "Para ordenar las líneas ascendentemente"
+msgstr "Utilice para ordenar las líneas ascendentemente"
+
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuración Contable de Redondeo de Impuesto"
 
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
@@ -966,7 +1011,7 @@ msgstr "Factura - Línea de pago"
 
 msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice"
-msgstr "Factura Credito"
+msgstr "Generar Factura de Crédito"
 
 msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
@@ -986,15 +1031,15 @@ msgstr "Pagar Factura"
 
 msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
-msgstr "Forma de Pago"
+msgstr "Plazo de Pago"
 
 msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
-msgstr "Línea de Forma de Pago"
+msgstr "Línea de Plazo de Pago"
 
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr "Advertencia Imprimir Factura"
+msgstr "Advertencia al Imprimir la Factura"
 
 msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
@@ -1010,7 +1055,7 @@ msgstr "Facturas"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
-msgstr "Notas Crédito del Proveedor"
+msgstr "Notas de Crédito de Proveedor"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
@@ -1018,7 +1063,7 @@ msgstr "Facturas de Proveedor"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
-msgstr "Notas Crédito"
+msgstr "Notas de Crédito"
 
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
@@ -1026,11 +1071,11 @@ msgstr "Facturas"
 
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
-msgstr "Formas de Pago"
+msgstr "Plazos de Pago"
 
 msgctxt "model:ir.action,name:credit"
 msgid "Credit"
-msgstr "Crédito"
+msgstr "Acreditar"
 
 msgctxt "model:ir.action,name:print"
 msgid "Invoice"
@@ -1130,7 +1175,7 @@ msgstr "Factura"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
-msgstr "Notas Crédito del Proveedor"
+msgstr "Notas de Crédito de Proveedor"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
@@ -1138,11 +1183,11 @@ msgstr "Facturas de Proveedor"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
-msgstr "Notas Crédito"
+msgstr "Notas de Crédito"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
-msgstr "Facturas de Venta"
+msgstr "Facturas"
 
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
@@ -1150,11 +1195,11 @@ msgstr "Facturas"
 
 msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
 msgid "Payment Terms"
-msgstr "Formas de Pago"
+msgstr "Plazos de Pago"
 
 msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
-msgstr "Formas de Pago"
+msgstr "Plazos de Pago"
 
 msgctxt "odt:account.invoice:"
 msgid ":"
@@ -1170,7 +1215,7 @@ msgstr "Base"
 
 msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
-msgstr "Nota Crédito N°:"
+msgstr "Nota de Crédito N°:"
 
 msgctxt "odt:account.invoice:"
 msgid "Date"
@@ -1190,19 +1235,19 @@ msgstr "Descripción:"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
-msgstr "Nota Crédito en Borrador"
+msgstr "Nota de Crédito Borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
-msgstr "Factura en Borrador"
+msgstr "Factura Borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
-msgstr "Nota Crédito de Proveedor en Borrador"
+msgstr "Nota Crédito de Proveedor Borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
-msgstr "Factura de Proveedor en Borrador"
+msgstr "Factura de Proveedor Borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
@@ -1214,7 +1259,7 @@ msgstr "Factura N°:"
 
 msgctxt "odt:account.invoice:"
 msgid "Payment Term"
-msgstr "Forma de Pago"
+msgstr "Plazo de Pago"
 
 msgctxt "odt:account.invoice:"
 msgid "Phone:"
@@ -1222,7 +1267,7 @@ msgstr "Teléfono:"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
-msgstr "Nota Crédito Proforma"
+msgstr "Nota de Crédito Proforma"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
@@ -1238,11 +1283,11 @@ msgstr "Referencia"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
-msgstr "Nota Crédito del Proveedor N°:"
+msgstr "Nota de Crédito de Proveedor N°:"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
-msgstr "Factura del Proveedor N°:"
+msgstr "Factura de Proveedor N°:"
 
 msgctxt "odt:account.invoice:"
 msgid "Tax"
@@ -1270,23 +1315,39 @@ msgstr "Precio Unitario"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
-msgstr "Número Identificación:"
+msgstr "Número de RUC:"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT:"
-msgstr "NIT:"
+msgstr "RUC:"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Credit Note"
-msgstr "Nota Credito de Proveedor Validada"
+msgstr "Nota de Crédito de Proveedor Validada"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr "Factura de Proveedor Validada"
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr "Por Documento"
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr "Por Línea"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr "Por Documento"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr "Por Línea"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
-msgstr "Anulada"
+msgstr "Cancelada"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Draft"
@@ -1294,7 +1355,7 @@ msgstr "Borrador"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Paid"
-msgstr "Pagado"
+msgstr "Pagada"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Posted"
@@ -1306,7 +1367,7 @@ msgstr "Validado"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
-msgstr "Nota Crédito"
+msgstr "Nota de Crédito"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
@@ -1314,7 +1375,7 @@ msgstr "Factura"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
-msgstr "Nota Crédito del Proveedor"
+msgstr "Nota de Crédito de Proveedor"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
@@ -1326,15 +1387,15 @@ msgstr ""
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
-msgstr "Nota Crédito"
+msgstr "Nota de Crédito"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
-msgstr "Factura de Venta"
+msgstr "Factura"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
-msgstr "Nota Crédito del Proveedor"
+msgstr "Nota de Crédito de Proveedor"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
@@ -1362,7 +1423,7 @@ msgstr "Pago Parcial"
 
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
-msgstr "Anulado"
+msgstr "Desajuste"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid ""
@@ -1430,7 +1491,7 @@ msgstr "Porcentaje del Total"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Remainder"
-msgstr "Saldo"
+msgstr "Resto"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
@@ -1464,13 +1525,21 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Miércoles"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuración Contable de Redondeo de Impuesto"
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr "Configuración Contable de Redondeos de Impuesto"
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr "Esta seguro que desea acreditar esta(s) facturas?"
+msgstr "¿Está seguro que desea acreditar esta(s) factura(s)?"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr "Factura Credito"
+msgstr "Factura de Crédito"
 
 msgctxt "view:account.invoice.line:"
 msgid "General"
@@ -1498,19 +1567,19 @@ msgstr "Pagar Factura"
 
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Line"
-msgstr "Línea de Forma de Pago"
+msgstr "Línea del Plazo de Pago"
 
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Lines"
-msgstr "Líneas de Forma de Pago"
+msgstr "Líneas del Plazo de Pago"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
-msgstr "Forma de Pago"
+msgstr "Plazo de Pago"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
-msgstr "Formas de Pago"
+msgstr "Plazos de Pago"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
@@ -1518,19 +1587,19 @@ msgstr "Imprimir Factura"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent directly to the printer."
-msgstr "La factura será enviada directamente a la impresora."
+msgstr "Las facturas se enviarán directamente a la impresora."
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
-msgstr "Tiene seleccionada más de una factura para imprimir."
+msgstr "Ha seleccionado más de una factura para imprimir."
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
-msgstr "Impuesto de Factura"
+msgstr "Impuesto de la Factura"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
-msgstr "Impuestos de Facturas"
+msgstr "Impuestos de Factura"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
@@ -1542,11 +1611,11 @@ msgstr "Impuestos"
 
 msgctxt "view:account.invoice:"
 msgid "Also known as Pro Forma"
-msgstr "Tambien conocido como ProForma"
+msgstr "También conocido como Proforma"
 
 msgctxt "view:account.invoice:"
 msgid "Are you sure to cancel the invoice?"
-msgstr "Esta seguro que desea cancelar la factura?"
+msgstr "¿Está seguro que desea cancelar la factura?"
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
@@ -1558,7 +1627,7 @@ msgstr "Facturas"
 
 msgctxt "view:account.invoice:"
 msgid "Other Info"
-msgstr "Info Adicional"
+msgstr "Información adicional"
 
 msgctxt "view:account.invoice:"
 msgid "Payment"
@@ -1578,7 +1647,7 @@ msgstr "_Borrador"
 
 msgctxt "view:account.invoice:"
 msgid "_Pay"
-msgstr "_Pago"
+msgstr "_Pagar"
 
 msgctxt "view:account.invoice:"
 msgid "_Post"
@@ -1606,11 +1675,11 @@ msgstr "Líneas de Pago"
 
 msgctxt "view:party.party:"
 msgid "Payment Terms"
-msgstr "Formas de Pago"
+msgstr "Plazos de Pago"
 
 msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
-msgstr "Crédito"
+msgstr "Acreditar"
 
 msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 7099767..59cbdef 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -222,14 +222,6 @@ msgstr "No se puede borrar la factura numerada \"%s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-"El período de la factura \"%s\" está cerrado.\n"
-"¿Desea usar el actual para el asiento de cancelación?"
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -273,6 +265,54 @@ msgstr ""
 "No puede cambiar la secuencia de facturas en el período \"%s\" porque ya hay"
 " facturas confirmadas en este período."
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr "Redondeo impuestos"
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr "Redondeo impuestos"
+
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Configuración"
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Método"
+
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Secuencia de factura de abono de proveedor"
@@ -742,8 +782,8 @@ msgid "Lines"
 msgstr "Líneas"
 
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
-msgstr "Plazo de pago"
+msgid "Name"
+msgstr "Nombre"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
@@ -953,6 +993,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Sirve para ordenar las líneas de forma ascendente."
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuración redondeo impuestos"
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Factura"
@@ -1281,6 +1325,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr "Factura de proveedor validada"
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr "Por documento"
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr "Por línea"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr "Por documento"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr "Por línea"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Cancelada"
@@ -1461,6 +1521,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Miércoles"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuración redondeo impuestos"
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr "Configuración redondeo impuestos"
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr "¿Está seguro de abonar estas facturas?"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index cfc36ad..4f247d1 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -5,7 +5,7 @@ msgstr "Content-Type: text/plain; charset=utf-8\n"
 msgctxt "error:account.fiscalyear:"
 msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"Les années fiscales \"%(first)s\" et \"%(second)s\" on la même séquence de "
+"Les années fiscales « %(first)s » et « %(second)s » on la même séquence de "
 "facture."
 
 msgctxt "error:account.fiscalyear:"
@@ -13,13 +13,13 @@ msgid ""
 "You can not change invoice sequence in fiscal year \"%s\" because there are "
 "already posted invoices in this fiscal year."
 msgstr ""
-"Vous ne pouvez changer la séquence de facture de l'année fiscale \"%s\" car "
+"Vous ne pouvez changer la séquence de facture de l'année fiscale « %s » car "
 "elle contient déjà des factures postées."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
-"Vous ne pouvez faire une note de crédit pour la facture \"%s\" car elle "
+"Vous ne pouvez faire une note de crédit pour la facture « %s » car elle "
 "contient des paiements."
 
 msgctxt "error:account.invoice.credit:"
@@ -27,29 +27,30 @@ msgid ""
 "You can not credit with refund invoice \"%s\" because it is a supplier "
 "invoice/credit note."
 msgstr ""
-"Vous ne pouvez faire une note de crédit pour la facture \"%s\" car c'est une"
+"Vous ne pouvez faire une note de crédit pour la facture « %s » car c'est une"
 " facture/note de crédit fournisseur."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
-"Vous ne pouvez faire une note de crédit pour la facture \"%s\" car elle "
+"Vous ne pouvez faire une note de crédit pour la facture « %s » car elle "
 "n'est pas postée."
 
 msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account."
-msgstr "Les ligne de type \"Ligne\" doivent avoir un compte."
+msgstr "Les ligne de type « Ligne » doivent avoir un compte."
 
 msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice."
-msgstr "Les lignes qui ne sont pas de type \"ligne\" doivent avoir une facture."
+msgstr ""
+"Les lignes qui ne sont pas de type « ligne » doivent avoir une facture."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
 "cancelled."
 msgstr ""
-"Vous ne pouvez ajouter une ligne à la facture \"%(invoice)s\" car elle est "
+"Vous ne pouvez ajouter une ligne à la facture « %(invoice)s » car elle est "
 "postée, payée ou annulée."
 
 msgctxt "error:account.invoice.line:"
@@ -58,24 +59,24 @@ msgid ""
 "company \"%(invoice_line_company)s because account \"%(account)s has company"
 " \"%(account_company)s\"."
 msgstr ""
-"Vous ne pouvez créer la ligne de facture \"%(line)s\" sur la facture "
-"\"%(invoice)s\" de la société \"%(invoice_line_company)s\" car le compte "
-"%(account)s a comme société: \"%(account_company)s\"."
+"Vous ne pouvez créer la ligne de facture « %(line)s » sur la facture « "
+"%(invoice)s » de la société « %(invoice_line_company)s » car le compte « "
+"%(account)s » a comme société: « %(account_company)s »."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s\" "
 "because the invoice uses the same account (%(account)s)."
 msgstr ""
-"Vous ne pouvez créer la ligne de facture \"%(line)s\" sur la facture "
-"\"%(invoice)s\" car elle utilise le même compte (%(account)s)"
+"Vous ne pouvez créer la ligne de facture « %(line)s » sur la facture « "
+"%(invoice)s » car elle utilise le même compte (%(account)s)."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
 "posted or paid."
 msgstr ""
-"Vous ne pouvez modifier la ligne \"%(line)s\" de la facture \"%(invoice)s\" "
+"Vous ne pouvez modifier la ligne « %(line)s » de la facture « %(invoice)s » "
 "car elle est payée ou postée."
 
 msgctxt "error:account.invoice.pay:"
@@ -83,7 +84,7 @@ msgid ""
 "On invoice \"%s\" you can not create a partial payment with an amount "
 "greater than the amount to pay."
 msgstr ""
-"Sur la facture \"%s\" vous ne pouvez créer un paiement partiel suppérieur au"
+"Sur la facture « %s » vous ne pouvez créer un paiement partiel suppérieur au"
 " montant qu'il reste à payer."
 
 msgctxt "error:account.invoice.payment_term.line:"
@@ -95,31 +96,32 @@ msgid ""
 "Percentage and Divisor values are not consistent in line \"%(line)s\" of "
 "payment term \"%(term)s\"."
 msgstr ""
-"Pourcentage et diviseur sont inconsistant sur la ligne \"%(line)s\" de la "
-"condition de paiement \"%(term)s\"."
+"Pourcentage et diviseur sont inconsistant sur la ligne « %(line)s » de la "
+"condition de paiement « %(term)s »."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
-msgstr "La ligne \"%(line)s\" de la condition de paiement \"%(term)s\" est invalide."
+msgstr ""
+"La ligne « %(line)s » de la condition de paiement « %(term)s » est invalide."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Last line of payment term \"%s\" must be of type remainder."
 msgstr ""
-"La dernière ligne de la condition de paiement \"%s\" doit être de type "
-"\"reste\"."
+"La dernière ligne de la condition de paiement « %s » doit être de type « "
+"reste »."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
 msgstr ""
-"Une ligne de type \"Reste\" est manquante sur la condition de paiement "
-"\"%s\"."
+"Une ligne de type « Reste » est manquante sur la condition de paiement « %s "
+"»."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
 "You can not add line \"%(line)s\" to invoice \"%(invoice)s\" because it is "
 "posted, paid or canceled."
 msgstr ""
-"Vous ne pouvez ajouter la ligne \"%(line)s\" à la facture \"%(invoice)s\" "
+"Vous ne pouvez ajouter la ligne « %(line)s » à la facture « %(invoice)s » "
 "car elle est posté, payée ou annulée."
 
 msgctxt "error:account.invoice.tax:"
@@ -128,9 +130,9 @@ msgid ""
 "\"%(invoice_company)s\" using account \"%(account)s\" from company "
 "\"%(account_company)s\"."
 msgstr ""
-"Vous ne pouvez créer la facture \"%(invoice)s\" pour la société "
-"\"%(invoice_company)s\" avec le compte \"%(account)s\" de la société "
-"\"%(account_company)s\"."
+"Vous ne pouvez créer la facture « %(invoice)s » pour la société « "
+"%(invoice_company)s » avec le compte « %(account)s » de la société « "
+"%(account_company)s »."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -138,9 +140,9 @@ msgid ""
 "\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
 "\"%(base_code_company)s\"."
 msgstr ""
-"Vous ne pouvez créer la facture \"%(invoice)s\" sur la société "
-"\"%(invoice_company)s\" utilisant le code de taxe \"%(base_code)s\" de la "
-"société \"%(base_code_company)s\"."
+"Vous ne pouvez créer la facture « %(invoice)s » sur la société « "
+"%(invoice_company)s » utilisant le code de taxe « %(base_code)s » de la "
+"société « %(base_code_company)s »."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -148,22 +150,22 @@ msgid ""
 "\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
 "\"%(tax_code_company)s\"."
 msgstr ""
-"Vous ne pouvez créer la facture \"%(invoice)s\" sur la société "
-"\"%(invoice_company)s\" avec le code de taxe \"%(tax_code)s\" de la société "
-"\"%(tax_code_company)s\"."
+"Vous ne pouvez créer la facture « %(invoice)s » sur la société « "
+"%(invoice_company)s » avec le code de taxe « %(tax_code)s » de la société « "
+"%(tax_code_company)s »."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
 "You can not modify tax \"%(tax)s\" from invoice \"%(invoice)s\" because it "
 "is posted or paid."
 msgstr ""
-"Vous ne pouvez modifier la taxe \"%(tax)s\" de la facture \"%(invoice)s\" "
+"Vous ne pouvez modifier la taxe « %(tax)s » de la facture « %(invoice)s » "
 "car elle est payée ou postée."
 
 msgctxt "error:account.invoice:"
 msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
 msgstr ""
-"La facture/note de crédit client \"%s\" ne peut pas être annullée une fois "
+"La facture/note de crédit client « %s » ne peut pas être annullée une fois "
 "postée."
 
 msgctxt "error:account.invoice:"
@@ -171,15 +173,15 @@ msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
 msgstr ""
-"La facture \"%(invoice)s\" utilise le même compte \"%(account)s\" pour la "
-"facture et la ligne \"%(line)s\"."
+"La facture « %(invoice)s » utilise le même compte « %(account)s » pour la "
+"facture et la ligne « %(line)s »."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%s\" has taxes defined but not on invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"La facture \"%s\" a des taxes définies, mais pas sur les lignes de facture.\n"
+"La facture « %s » a des taxes définies, mais pas sur les lignes de facture.\n"
 "Relancez le calcul de la facture."
 
 msgctxt "error:account.invoice:"
@@ -187,19 +189,19 @@ msgid ""
 "Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"La facture \"%s\" a des taxes sur les lignes qui ne sont pas sur la facture.\n"
+"La facture « %s » a des taxes sur les lignes qui ne sont pas sur la facture.\n"
 "Relancez le calcul de la facture."
 
 msgctxt "error:account.invoice:"
 msgid "Invoice \"%s\" must be cancelled before deletion."
-msgstr "La facture \"%s\" doit être annulée avant suppression."
+msgstr "La facture « %s » doit être annulée avant suppression."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"La base de taxe de la facture \"%s\" est différente des lignes de facture.\n"
+"La base de taxe de la facture « %s » est différente des lignes de facture.\n"
 "Relancez le calcul de la facture."
 
 msgctxt "error:account.invoice:"
@@ -207,70 +209,63 @@ msgid ""
 "The credit account on journal \"%(journal)s\" is the same as invoice "
 "\"%(invoice)s\"'s account."
 msgstr ""
-"Le compte de crédit du journal \"%(journal)s\" est le même que compte de la "
-"facture \"%(invoice)s\"."
+"Le compte de crédit du journal « %(journal)s » est le même que compte de la "
+"facture « %(invoice)s »."
 
 msgctxt "error:account.invoice:"
 msgid "The credit account on journal %s\" is missing."
-msgstr "Le compte de crédit du journal \"%s\" est absent."
+msgstr "Le compte de crédit du journal « %s » est absent."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "The debit account on journal \"%(journal)s\" is the same as invoice "
 "\"%(invoice)s\"'s account."
 msgstr ""
-"Le compte de débit du journal \"%(journal)s\" est le même que compte de la "
-"facture \"%(invoice)s\"."
+"Le compte de débit du journal « %(journal)s » est le même que compte de la "
+"facture « %(invoice)s »."
 
 msgctxt "error:account.invoice:"
 msgid "The debit account on journal \"%s\" is missing."
-msgstr "Le compte de débit du journal \"%s\" est manquant."
+msgstr "Le compte de débit du journal « %s » est manquant."
 
 msgctxt "error:account.invoice:"
 msgid "The numbered invoice \"%s\" can not be deleted."
-msgstr "La facture \"%s\" ne peut pas être surpprimée."
-
-msgctxt "error:account.invoice:"
-msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-"La période de la facture \"%s\" est fermée.\n"
-"Utiliser la date du jour pour annuler le mouvement ?"
+msgstr "La facture « %s » ne peut pas être surpprimée."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
-"Il n'y a pas de séquence de facture pour la facture \"%s\" dans la "
-"période/année fiscale \"%(period)s\""
+"Il n'y a pas de séquence de facture pour la facture « %(invoice)s » dans la "
+"période/année fiscale « %(period)s »."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "You can not create invoice \"%(invoice)s\" on company \"%(invoice_company)s "
 "because account \"%(account)s has a different company (%(account_company)s.)"
 msgstr ""
-"Vous ne pouvez créer la facture \"%(invoice)s\" pour la société "
-"\"%(invoice_company)s\" car le compte \"%(account)s\" a une société "
-"différente (%(account_company)s)."
+"Vous ne pouvez créer la facture « %(invoice)s » pour la société « "
+"%(invoice_company)s » car le compte « %(account)s » a une société différente"
+" (%(account_company)s)."
 
 msgctxt "error:account.invoice:"
 msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
 msgstr ""
-"Vous ne pouvez modifier la facture \"%(invoice)s\" car elle est postée, "
-"payée ou annulée."
+"Vous ne pouvez modifier la facture « %s » car elle est postée, payée ou "
+"annulée."
 
 msgctxt "error:account.period:"
 msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
-msgstr "Les périodes \"%(first)s\" et \"%(second)s\" on la même séquence de facture."
+msgstr ""
+"Les périodes « %(first)s » et « %(second)s » on la même séquence de facture."
 
 msgctxt "error:account.period:"
 msgid ""
 "Period \"%(period)s\" must have the same company as its fiscal year "
 "(%(fiscalyear)s)."
 msgstr ""
-"La période \"%(period)s\" et son année fiscale (%(fiscalyear)s) doivent "
+"La période « %(period)s » et son année fiscale (%(fiscalyear)s) doivent "
 "avoir la même société."
 
 msgctxt "error:account.period:"
@@ -278,9 +273,57 @@ msgid ""
 "You can not change the invoice sequence in period \"%s\" because there is "
 "already an invoice posted in this period"
 msgstr ""
-"Vous ne pouvez changer la séquence de facture dans la période \"%s\" car il "
+"Vous ne pouvez changer la séquence de facture dans la période « %s » car il "
 "y a déjà une facture postée pour cette période."
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr "Arrondi de taxe"
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr "Arrondi de taxe"
+
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Configuration"
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Méthode"
+
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Séquence de note de crédit fournisseur"
@@ -750,8 +793,8 @@ msgid "Lines"
 msgstr "Lignes"
 
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
-msgstr "Condition de paiement"
+msgid "Name"
+msgstr "Nom"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
@@ -961,6 +1004,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Utilisé pour trier les lignes en ordre croissant"
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuration comptable d'arrondi de taxe"
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Facture"
@@ -1175,7 +1222,7 @@ msgstr "Base"
 
 msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
-msgstr "N° de note de crédit :"
+msgstr "N° de note de crédit :"
 
 msgctxt "odt:account.invoice:"
 msgid "Date"
@@ -1183,7 +1230,7 @@ msgstr "Date"
 
 msgctxt "odt:account.invoice:"
 msgid "Date:"
-msgstr "Date :"
+msgstr "Date :"
 
 msgctxt "odt:account.invoice:"
 msgid "Description"
@@ -1191,7 +1238,7 @@ msgstr "Description"
 
 msgctxt "odt:account.invoice:"
 msgid "Description:"
-msgstr "Description :"
+msgstr "Description :"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
@@ -1215,7 +1262,7 @@ msgstr "E-Mail:"
 
 msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
-msgstr "N° de facture :"
+msgstr "N° de facture :"
 
 msgctxt "odt:account.invoice:"
 msgid "Payment Term"
@@ -1243,11 +1290,11 @@ msgstr "Référence"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
-msgstr "N° de note de crédit fournisseur :"
+msgstr "N° de note de crédit fournisseur :"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
-msgstr "N° de facture fournisseur :"
+msgstr "N° de facture fournisseur :"
 
 msgctxt "odt:account.invoice:"
 msgid "Tax"
@@ -1259,15 +1306,15 @@ msgstr "Taxes"
 
 msgctxt "odt:account.invoice:"
 msgid "Taxes:"
-msgstr "Taxes :"
+msgstr "Taxes :"
 
 msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
-msgstr "Total (hors-taxes) :"
+msgstr "Total (hors-taxes) :"
 
 msgctxt "odt:account.invoice:"
 msgid "Total:"
-msgstr "Total :"
+msgstr "Total :"
 
 msgctxt "odt:account.invoice:"
 msgid "Unit Price"
@@ -1275,11 +1322,11 @@ msgstr "Prix unitaire"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
-msgstr "Numéro TVA :"
+msgstr "Numéro TVA :"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT:"
-msgstr "TVA :"
+msgstr "TVA :"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Credit Note"
@@ -1289,6 +1336,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr "Facture fournisseur validée"
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr "Par document"
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr "Par ligne"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr "Par document"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr "Par ligne"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Annulé"
@@ -1469,9 +1532,17 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Mercredi"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Configuration comptable d'arrondi de taxe"
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr "Configuration comptable d'arrondi de taxe"
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr "Êtes-vous sûr de créditer ces factures ?"
+msgstr "Êtes-vous sûr de créditer ces factures ?"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
@@ -1551,7 +1622,7 @@ msgstr "Alias Pro Forma"
 
 msgctxt "view:account.invoice:"
 msgid "Are you sure to cancel the invoice?"
-msgstr "Êtes-vous sûr d'annuler la facture ?"
+msgstr "Êtes-vous sûr d'annuler la facture ?"
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 0fe9c46..3320b4f 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -178,12 +178,6 @@ msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -214,6 +208,58 @@ msgid ""
 "already an invoice posted in this period"
 msgstr ""
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr ""
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Bedrijf"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Instellingen"
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Credit inkoopnota reeks"
@@ -694,8 +740,9 @@ msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Regels"
 
+#, fuzzy
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
+msgid "Name"
 msgstr "Betalingstermijn"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
@@ -907,6 +954,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Gebruiken voor oplopend sorteren"
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr ""
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
@@ -1251,6 +1302,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr ""
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr ""
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr ""
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr ""
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr ""
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Geannuleerd"
@@ -1435,6 +1502,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr ""
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr ""
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr ""
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr ""
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index fd8adef..ed6a519 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -221,14 +221,6 @@ msgstr "Пронумерованный инвойс \"%s\" не может бы
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-"Период инвойса \"%s\" уже закрыт.\n"
-"Использовать текущую дату для отмены проводки?"
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -272,6 +264,64 @@ msgstr ""
 "Вы не можете изменить нумерацию в периоде \"%s\" так как уже есть "
 "отправленные инвойсы в этом периоде."
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr ""
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Учет.орг."
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Конфигурация"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Метод"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Правило оплаты"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Последовательность"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Нумерация сторно поставщиков"
@@ -740,8 +790,9 @@ msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Строки"
 
+#, fuzzy
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
+msgid "Name"
 msgstr "Правило оплаты"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
@@ -952,6 +1003,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Используется для сортировки строк в порядке возрастания"
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr ""
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Инвойс"
@@ -1282,6 +1337,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr "Утвержденный инвойс поставщика"
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr ""
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr ""
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr ""
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr ""
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Отменено"
@@ -1462,6 +1533,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Среда"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr ""
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr ""
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr "Вы уверены, что хотите выставить Сторно для этих инвойсов?"
diff --git a/locale/sl_SI.po b/locale/sl_SI.po
index 18cba6e..3508d11 100644
--- a/locale/sl_SI.po
+++ b/locale/sl_SI.po
@@ -222,14 +222,6 @@ msgstr "Oštevilčenega računa \"%s\" ni možno brisati."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"The period of Invoice \"%s\" is closed.\n"
-"Use the today for cancel move?"
-msgstr ""
-"Obdobje računa \"%s\" je zaključeno.\n"
-"Se naj uporabi današnji dan za preklic knjižbe?"
-
-msgctxt "error:account.invoice:"
-msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
@@ -270,6 +262,54 @@ msgstr ""
 "Štetja računov v obdobju \"%s\" ni možno popravljati, ker je račun že "
 "knjižen v tem obdobju."
 
+msgctxt "field:account.configuration,tax_rounding:"
+msgid "Tax Rounding"
+msgstr "Zaokrožitev davka"
+
+msgctxt "field:account.configuration,tax_roundings:"
+msgid "Tax Roundings"
+msgstr "Zaokrožitve davka"
+
+msgctxt "field:account.configuration.tax_rounding,company:"
+msgid "Company"
+msgstr "Družba"
+
+msgctxt "field:account.configuration.tax_rounding,configuration:"
+msgid "Configuration"
+msgstr "Nastavitve"
+
+msgctxt "field:account.configuration.tax_rounding,create_date:"
+msgid "Create Date"
+msgstr "Izdelano"
+
+msgctxt "field:account.configuration.tax_rounding,create_uid:"
+msgid "Create User"
+msgstr "Izdelal"
+
+msgctxt "field:account.configuration.tax_rounding,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.configuration.tax_rounding,method:"
+msgid "Method"
+msgstr "Metoda"
+
+msgctxt "field:account.configuration.tax_rounding,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+msgctxt "field:account.configuration.tax_rounding,sequence:"
+msgid "Sequence"
+msgstr "Štetje"
+
+msgctxt "field:account.configuration.tax_rounding,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+msgctxt "field:account.configuration.tax_rounding,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
+
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Štetje prejetih dobropisov"
@@ -316,11 +356,11 @@ msgstr "Družba"
 
 msgctxt "field:account.invoice,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:account.invoice,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:account.invoice,currency:"
 msgid "Currency"
@@ -448,11 +488,11 @@ msgstr "Zapisal"
 
 msgctxt "field:account.invoice-account.move.line,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:account.invoice-account.move.line,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:account.invoice-account.move.line,id:"
 msgid "ID"
@@ -500,11 +540,11 @@ msgstr "Družba"
 
 msgctxt "field:account.invoice.line,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:account.invoice.line,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
@@ -600,11 +640,11 @@ msgstr "Zapisal"
 
 msgctxt "field:account.invoice.line-account.tax,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:account.invoice.line-account.tax,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:account.invoice.line-account.tax,id:"
 msgid "ID"
@@ -720,11 +760,11 @@ msgstr "Aktivno"
 
 msgctxt "field:account.invoice.payment_term,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:account.invoice.payment_term,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
@@ -739,7 +779,7 @@ msgid "Lines"
 msgstr "Postavke"
 
 msgctxt "field:account.invoice.payment_term,name:"
-msgid "Payment Term"
+msgid "Name"
 msgstr "Plačilni rok"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
@@ -760,11 +800,11 @@ msgstr "Znesek"
 
 msgctxt "field:account.invoice.payment_term.line,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:account.invoice.payment_term.line,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
@@ -860,11 +900,11 @@ msgstr "Predznak osnove"
 
 msgctxt "field:account.invoice.tax,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:account.invoice.tax,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
@@ -950,6 +990,10 @@ msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Za naraščajoče razvrščanje postavk"
 
+msgctxt "model:account.configuration.tax_rounding,name:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Kontno zaokroževanje davkov"
+
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Račun"
@@ -1278,6 +1322,22 @@ msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
 msgstr "Odobreni prejeti račun"
 
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Document"
+msgstr "Na dokument"
+
+msgctxt "selection:account.configuration,tax_rounding:"
+msgid "Per Line"
+msgstr "Na postavko"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Document"
+msgstr "Na dokument"
+
+msgctxt "selection:account.configuration.tax_rounding,method:"
+msgid "Per Line"
+msgstr "Na postavko"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Preklicano"
@@ -1458,6 +1518,14 @@ msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Sreda"
 
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Rounding"
+msgstr "Zaokroževanje davkov"
+
+msgctxt "view:account.configuration.tax_rounding:"
+msgid "Account Configuration Tax Roundings"
+msgstr "Zaokroževanja davkov"
+
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr "Ali res želite izvesti dobropis teh računov?"
diff --git a/payment_term.py b/payment_term.py
index 685d4f3..7fe4162 100644
--- a/payment_term.py
+++ b/payment_term.py
@@ -14,8 +14,7 @@ __all__ = ['PaymentTerm', 'PaymentTermLine']
 class PaymentTerm(ModelSQL, ModelView):
     'Payment Term'
     __name__ = 'account.invoice.payment_term'
-    name = fields.Char('Payment Term', size=None, required=True,
-        translate=True)
+    name = fields.Char('Name', size=None, required=True, translate=True)
     active = fields.Boolean('Active')
     description = fields.Text('Description', translate=True)
     lines = fields.One2Many('account.invoice.payment_term.line', 'payment',
diff --git a/tests/scenario_invoice_supplier.rst b/tests/scenario_invoice_supplier.rst
index 612614a..03c6ec9 100644
--- a/tests/scenario_invoice_supplier.rst
+++ b/tests/scenario_invoice_supplier.rst
@@ -250,3 +250,36 @@ Credit invoice::
     True
     >>> credit_note.total_amount == invoice.total_amount
     True
+
+Create a posted and a draft invoice  to cancel::
+
+    >>> invoice = Invoice()
+    >>> invoice.type = 'in_invoice'
+    >>> invoice.party = party
+    >>> invoice.payment_term = payment_term
+    >>> invoice.invoice_date = today
+    >>> line = invoice.lines.new()
+    >>> line.product = product
+    >>> line.quantity = 1
+    >>> invoice.save()
+    >>> invoice.click('post')
+    >>> invoice_draft = Invoice(Invoice.copy([invoice.id], config.context)[0])
+
+Cancel draft invoice::
+
+    >>> invoice_draft.click('cancel')
+    >>> invoice_draft.state
+    u'cancel'
+    >>> invoice_draft.move
+    >>> invoice_draft.reconciled
+    False
+
+Cancel posted invoice::
+
+    >>> invoice.click('cancel')
+    >>> invoice.state
+    u'cancel'
+    >>> invoice.cancel_move is not None
+    True
+    >>> invoice.reconciled
+    True
diff --git a/tests/test_account_invoice.py b/tests/test_account_invoice.py
index 2bf0aeb..c2b770e 100644
--- a/tests/test_account_invoice.py
+++ b/tests/test_account_invoice.py
@@ -6,7 +6,8 @@ import datetime
 from decimal import Decimal
 import trytond.tests.test_tryton
 from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view,\
-    test_depends, doctest_dropdb
+    test_depends
+from trytond.tests.test_tryton import doctest_setup, doctest_teardown
 from trytond.transaction import Transaction
 
 
@@ -80,13 +81,13 @@ def suite():
     suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
         AccountInvoiceTestCase))
     suite.addTests(doctest.DocFileSuite('scenario_invoice.rst',
-            setUp=doctest_dropdb, tearDown=doctest_dropdb, encoding='utf-8',
+            setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
             optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
     suite.addTests(doctest.DocFileSuite('scenario_invoice_supplier.rst',
-            setUp=doctest_dropdb, tearDown=doctest_dropdb, encoding='utf-8',
+            setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
             optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
     suite.addTests(doctest.DocFileSuite(
             'scenario_invoice_alternate_currency.rst',
-            setUp=doctest_dropdb, tearDown=doctest_dropdb, encoding='utf-8',
+            setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
             optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
     return suite
diff --git a/tryton.cfg b/tryton.cfg
index 7ae94e7..1286646 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=3.2.1
+version=3.4.0
 depends:
     account
     account_product
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index a3592f3..75818a5 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond-account-invoice
-Version: 3.2.1
+Version: 3.4.0
 Summary: Tryton module for invoicing
 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.2/
+Download-URL: http://downloads.tryton.org/3.4/
 Description: trytond_account_invoice
         =======================
         
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index f2e3817..ef565a2 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -13,17 +13,66 @@ setup.py
 tryton.cfg
 ./__init__.py
 ./account.py
+./account.xml
+./invoice.odt
 ./invoice.py
+./invoice.xml
 ./party.py
+./party.xml
 ./payment_term.py
+./payment_term.xml
+./tryton.cfg
+./locale/bg_BG.po
+./locale/ca_ES.po
+./locale/cs_CZ.po
+./locale/de_DE.po
+./locale/es_AR.po
+./locale/es_CO.po
+./locale/es_EC.po
+./locale/es_ES.po
+./locale/fr_FR.po
+./locale/nl_NL.po
+./locale/ru_RU.po
+./locale/sl_SI.po
 ./tests/__init__.py
+./tests/scenario_invoice.rst
+./tests/scenario_invoice_alternate_currency.rst
+./tests/scenario_invoice_supplier.rst
 ./tests/test_account_invoice.py
+./view/address_form.xml
+./view/address_tree.xml
+./view/configuration_form.xml
+./view/configuration_tax_rounding_form.xml
+./view/configuration_tax_rounding_list.xml
+./view/credit_start_form.xml
+./view/fiscalyear_form.xml
+./view/invoice_form.xml
+./view/invoice_line_form.xml
+./view/invoice_line_tree.xml
+./view/invoice_line_tree_sequence.xml
+./view/invoice_tax_form.xml
+./view/invoice_tax_tree.xml
+./view/invoice_tax_tree_sequence.xml
+./view/invoice_tree.xml
+./view/move_line_list_payment.xml
+./view/move_line_list_to_pay.xml
+./view/party_form.xml
+./view/pay_ask_form.xml
+./view/pay_start_form.xml
+./view/payment_term_form.xml
+./view/payment_term_line_form.xml
+./view/payment_term_line_list.xml
+./view/payment_term_line_list_sequence.xml
+./view/payment_term_tree.xml
+./view/period_form.xml
+./view/print_warning_form.xml
 locale/bg_BG.po
 locale/ca_ES.po
 locale/cs_CZ.po
 locale/de_DE.po
 locale/es_AR.po
 locale/es_CO.po
+locale/es_EC.po
 locale/es_ES.po
 locale/fr_FR.po
 locale/nl_NL.po
@@ -41,6 +90,9 @@ trytond_account_invoice.egg-info/requires.txt
 trytond_account_invoice.egg-info/top_level.txt
 view/address_form.xml
 view/address_tree.xml
+view/configuration_form.xml
+view/configuration_tax_rounding_form.xml
+view/configuration_tax_rounding_list.xml
 view/credit_start_form.xml
 view/fiscalyear_form.xml
 view/invoice_form.xml
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index f86ec11..c451a91 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -1,9 +1,9 @@
 python-dateutil
 python-sql
-trytond_account >= 3.2, < 3.3
-trytond_account_product >= 3.2, < 3.3
-trytond_company >= 3.2, < 3.3
-trytond_currency >= 3.2, < 3.3
-trytond_party >= 3.2, < 3.3
-trytond_product >= 3.2, < 3.3
-trytond >= 3.2, < 3.3
\ No newline at end of file
+trytond_account >= 3.4, < 3.5
+trytond_account_product >= 3.4, < 3.5
+trytond_company >= 3.4, < 3.5
+trytond_currency >= 3.4, < 3.5
+trytond_party >= 3.4, < 3.5
+trytond_product >= 3.4, < 3.5
+trytond >= 3.4, < 3.5
\ No newline at end of file
diff --git a/view/configuration_form.xml b/view/configuration_form.xml
new file mode 100644
index 0000000..47ca93c
--- /dev/null
+++ b/view/configuration_form.xml
@@ -0,0 +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. -->
+<data>
+    <xpath expr="/form/field[@name='default_account_payable']" position="after">
+        <group id="tax_roundings" col="2" colspan="4">
+            <field name="tax_roundings" colspan="2"/>
+            <label name="tax_rounding"/>
+            <field name="tax_rounding"/>
+        </group>
+    </xpath>
+</data>
diff --git a/view/configuration_tax_rounding_form.xml b/view/configuration_tax_rounding_form.xml
new file mode 100644
index 0000000..92cac9c
--- /dev/null
+++ b/view/configuration_tax_rounding_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 Configuration Tax Rounding" cursor="company">
+    <label name="configuration"/>
+    <field name="configuration"/>
+    <label name="sequence"/>
+    <field name="sequence"/>
+    <label name="company"/>
+    <field name="company"/>
+    <label name="method"/>
+    <field name="method"/>
+</form>
diff --git a/view/configuration_tax_rounding_list.xml b/view/configuration_tax_rounding_list.xml
new file mode 100644
index 0000000..a74a445
--- /dev/null
+++ b/view/configuration_tax_rounding_list.xml
@@ -0,0 +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 Configuration Tax Roundings" sequence="sequence">
+    <field name="configuration"/>
+    <field name="company"/>
+    <field name="method" expand="1"/>
+</tree>
-- 
tryton-modules-account-invoice



More information about the tryton-debian-vcs mailing list