[tryton-debian-vcs] tryton-modules-account-invoice branch debian created. 7ed5d29cd03794bb0b3145777a5ab3f484337f80

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Wed Nov 27 16:55:18 UTC 2013


The following commit has been merged in the debian branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-modules-account-invoice.git;a=commitdiff;h=7ed5d29cd03794bb0b3145777a5ab3f484337f80
commit 7ed5d29cd03794bb0b3145777a5ab3f484337f80
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 25 20:30:02 2013 +0100

    Releasing debian version 3.0.0-1.

diff --git a/debian/changelog b/debian/changelog
index 95a7a50..3868013 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+tryton-modules-account-invoice (3.0.0-1) unstable; urgency=low
+
+  * Merging upstream version 3.0.0.
+  * Updating to standards version 3.9.5, no changes needed.
+  * Changing to buildsystem pybuild.
+  * Adding python-sql to Depends.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Mon, 25 Nov 2013 17:53:11 +0100
+
 tryton-modules-account-invoice (2.8.3-1) unstable; urgency=low
 
   * Merging upstream version 2.8.3.
commit fd1100c7b580a445657b5ed72c368593d5171acc
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 25 17:38:56 2013 +0100

    Adding python-sql to Depends.

diff --git a/debian/control b/debian/control
index fd79cf5..9241e6c 100644
--- a/debian/control
+++ b/debian/control
@@ -21,7 +21,7 @@ Depends:
  tryton-modules-currency (>= ${version:major}),
  tryton-modules-party (>= ${version:major}),
  tryton-modules-product (>= ${version:major}),
- python-dateutil, python-pkg-resources
+ python-dateutil, python-sql, python-pkg-resources
 Description: Tryton Application Platform (Financial and Accounting Module)
  Tryton is a high-level general purpose application platform written in Python
  and using PostgreSQL as database engine. It is the core base of a complete
commit d085d89d857372ec0b2bc1db1dd07e5376b93035
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Nov 24 19:51:51 2013 +0100

    Changing to buildsystem pybuild.

diff --git a/debian/control b/debian/control
index 2da9190..fd79cf5 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,8 @@ Section: python
 Priority: optional
 Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
 Uploaders: Mathias Behrle <mathiasb at m9s.biz>
-Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
+Build-Depends:
+ debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools, dh-python
 Standards-Version: 3.9.5
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-account-invoice.git
diff --git a/debian/rules b/debian/rules
index 30074ad..5b8c326 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,24 +1,17 @@
 #!/usr/bin/make -f
 
-MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
-PACKAGE_NAME := $(shell python setup.py --name)
-
-%:
-	dh ${@} --with python2
+# needed for pbuilder
+export LC_ALL=C.UTF-8
 
-override_dh_auto_clean:
-	dh_auto_clean
+MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
+PACKAGE_NAME := tryton-modules-$(shell python setup.py --name | sed s/^trytond_// | sed s/_/-/g)
+export PYBUILD_DESTDIR_python2=debian/${PACKAGE_NAME}
 
-override_dh_auto_build:
-	mv $(PACKAGE_NAME).egg-info $(PACKAGE_NAME).hen-info
-	mv PKG-INFO PKG-INFO.hen
-	dh_auto_build
+# Don't run tests for Tryton modules, they try to download dependencies from pypi
+export PYBUILD_DISABLE_python2.7=test
 
-override_dh_auto_install:
-	dh_auto_install
-	rm -rf *.egg-info
-	mv $(PACKAGE_NAME).hen-info $(PACKAGE_NAME).egg-info
-	mv PKG-INFO.hen PKG-INFO
+%:
+	dh ${@} --with python2 --buildsystem=pybuild
 
 override_dh_gencontrol:
 	dh_gencontrol -- -Vversion:major="$(MAJOR)"
commit d6f4e84725f2485bfff35428d952e63bca436396
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Nov 24 19:14:20 2013 +0100

    Updating to standards version 3.9.5, no changes needed.

diff --git a/debian/control b/debian/control
index 5bded38..2da9190 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: optional
 Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
 Uploaders: Mathias Behrle <mathiasb at m9s.biz>
 Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
-Standards-Version: 3.9.4
+Standards-Version: 3.9.5
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-account-invoice.git
 Vcs-Git: git://debian.tryton.org/packages/tryton-modules-account-invoice.git
commit 9378b325153b00b41b0d6572936db8d5b26fd2ac
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Nov 24 17:26:23 2013 +0100

    Merging upstream version 3.0.0.

diff --git a/CHANGELOG b/CHANGELOG
index 3e34733..53bcf28 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,11 +1,6 @@
-Version 2.8.3 - 2013-10-01
-* Bug fixes (see mercurial logs for details)
-
-Version 2.8.2 - 2013-07-22
-* Bug fixes (see mercurial logs for details)
-
-Version 2.8.1 - 2013-06-09
+Version 3.0.0 - 2013-10-21
 * Bug fixes (see mercurial logs for details)
+* Use account move as cache
 
 Version 2.8.0 - 2013-04-22
 * Bug fixes (see mercurial logs for details)
diff --git a/INSTALL b/INSTALL
index 7dc8d86..9c44742 100644
--- a/INSTALL
+++ b/INSTALL
@@ -6,6 +6,7 @@ Prerequisites
 
  * Python 2.6 or later (http://www.python.org/)
  * python-dateutil (http://labix.org/python-dateutil)
+ * python-sql (http://code.google.com/p/python-sql/)
  * trytond (http://www.tryton.org/)
  * trytond_account (http://www.tryton.org/)
  * trytond_company (http://www.tryton.org/)
diff --git a/PKG-INFO b/PKG-INFO
index 922a3c9..eb4dad7 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 2.8.3
+Version: 3.0.0
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: UNKNOWN
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.8/
+Download-URL: http://downloads.tryton.org/3.0/
 Description: trytond_account_invoice
         =======================
         
@@ -59,6 +59,7 @@ Classifier: Natural Language :: English
 Classifier: Natural Language :: French
 Classifier: Natural Language :: German
 Classifier: Natural Language :: Russian
+Classifier: Natural Language :: Slovenian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.6
diff --git a/account.py b/account.py
index f7eaf1f..7212126 100644
--- a/account.py
+++ b/account.py
@@ -95,7 +95,6 @@ class FiscalYear:
                         'second': fiscalyears[0].rec_name,
                         })
 
-
     @classmethod
     def write(cls, fiscalyears, vals):
         Invoice = Pool().get('account.invoice')
diff --git a/invoice.odt b/invoice.odt
index 6e435bd..431267e 100644
Binary files a/invoice.odt and b/invoice.odt differ
diff --git a/invoice.py b/invoice.py
index f89741c..1545f58 100644
--- a/invoice.py
+++ b/invoice.py
@@ -2,12 +2,17 @@
 #this repository contains the full copyright notices and license terms.
 from decimal import Decimal
 import base64
+import itertools
 import operator
+from sql import Literal
+from sql.aggregate import Count, Sum
+from sql.conditionals import Coalesce
+
 from trytond.model import Workflow, ModelView, ModelSQL, fields
 from trytond.report import Report
 from trytond.wizard import Wizard, StateView, StateTransition, StateAction, \
     Button
-from trytond.backend import TableHandler, FIELDS
+from trytond import backend
 from trytond.pyson import If, Eval, Bool, Id
 from trytond.tools import reduce_ids
 from trytond.transaction import Transaction
@@ -41,6 +46,14 @@ _TYPE2JOURNAL = {
 
 _ZERO = Decimal('0.0')
 
+_CREDIT_TYPE = {
+    None: None,
+    'out_invoice': 'out_credit_note',
+    'in_invoice': 'in_credit_note',
+    'out_credit_note': 'out_invoice',
+    'in_credit_note': 'in_invoice',
+    }
+
 
 class Invoice(Workflow, ModelSQL, ModelView):
     'Invoice'
@@ -49,7 +62,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
     company = fields.Many2One('company.company', 'Company', required=True,
         states=_STATES, select=True, domain=[
             ('id', If(Eval('context', {}).contains('company'), '=', '!='),
-                Eval('context', {}).get('company', 0)),
+                Eval('context', {}).get('company', -1)),
             ],
         depends=_DEPENDS)
     type = fields.Selection(_TYPE, 'Type', select=True, on_change=['type',
@@ -101,7 +114,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
     currency_date = fields.Function(fields.Date('Currency Date',
         on_change_with=['invoice_date']), 'on_change_with_currency_date',)
     journal = fields.Many2One('account.journal', 'Journal', required=True,
-        states=_STATES, depends=_DEPENDS, domain=[('centralised', '=', False)])
+        states=_STATES, depends=_DEPENDS)
     move = fields.Many2One('account.move', 'Move', readonly=True)
     cancel_move = fields.Many2One('account.move', 'Cancel Move', readonly=True,
         states={
@@ -110,7 +123,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
     account = fields.Many2One('account.account', 'Account', required=True,
         states=_STATES, depends=_DEPENDS + ['type'],
         domain=[
-            ('company', '=', Eval('context', {}).get('company', 0)),
+            ('company', '=', Eval('context', {}).get('company', -1)),
             If(Eval('type').in_(['out_invoice', 'out_credit_note']),
                 ('kind', '=', 'receivable'),
                 ('kind', '=', 'payable')),
@@ -125,22 +138,27 @@ class Invoice(Workflow, ModelSQL, ModelView):
         states=_STATES, depends=_DEPENDS,
         on_change=['lines', 'taxes', 'currency', 'party', 'type'])
     comment = fields.Text('Comment', states=_STATES, depends=_DEPENDS)
+    origins = fields.Function(fields.Char('Origins'), 'get_origins')
     untaxed_amount = fields.Function(fields.Numeric('Untaxed',
             digits=(16, Eval('currency_digits', 2)),
             depends=['currency_digits']),
-        'get_untaxed_amount', searcher='search_untaxed_amount')
+        'get_amount', searcher='search_untaxed_amount')
     tax_amount = fields.Function(fields.Numeric('Tax', digits=(16,
                 Eval('currency_digits', 2)), depends=['currency_digits']),
-        'get_tax_amount', searcher='search_tax_amount')
+        'get_amount', searcher='search_tax_amount')
     total_amount = fields.Function(fields.Numeric('Total', digits=(16,
                 Eval('currency_digits', 2)), depends=['currency_digits']),
-        'get_total_amount', searcher='search_total_amount')
+        'get_amount', searcher='search_total_amount')
     reconciled = fields.Function(fields.Boolean('Reconciled'),
             'get_reconciled')
     lines_to_pay = fields.Function(fields.One2Many('account.move.line', None,
         'Lines to Pay'), 'get_lines_to_pay')
     payment_lines = fields.Many2Many('account.invoice-account.move.line',
-            'invoice', 'line', readonly=True, string='Payment Lines')
+        'invoice', 'line', readonly=True, string='Payment Lines',
+        states={
+            'invisible': (Eval('state') == 'paid') | ~Eval('payment_lines'),
+            },
+        depends=['state'])
     amount_to_pay_today = fields.Function(fields.Numeric('Amount to Pay Today',
             digits=(16, Eval('currency_digits', 2)),
             depends=['currency_digits']), 'get_amount_to_pay')
@@ -162,7 +180,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
                     'on invoice lines.\nRe-compute the invoice.'),
                 'diff_tax_line': ('Invoice "%s" tax bases are different from '
                     'invoice lines.\nRe-compute the invoice.'),
-                'missing_tax_line2': ('Invoice "%s" has taxes on invoice lines '
+                'missing_tax_line2': (
+                    'Invoice "%s" has taxes on invoice lines '
                     'that are not in the invoice.\nRe-compute the invoice.'),
                 'no_invoice_sequence': ('There is no invoice sequence for '
                     'invoice "%(invoice)s" on the period/fiscal year '
@@ -190,7 +209,11 @@ class Invoice(Workflow, ModelSQL, ModelView):
                     'deletion.'),
                 'delete_numbered': ('The numbered invoice "%s" can not be '
                     'deleted.'),
-                'period_cancel_move': ('The period of Invoice "%s" is closed.\n'
+                '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((
@@ -233,6 +256,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
 
     @classmethod
     def __register__(cls, module_name):
+        TableHandler = backend.get('TableHandler')
+        sql_table = cls.__table__()
         super(Invoice, cls).__register__(module_name)
         cursor = Transaction().cursor
         table = TableHandler(cursor, cls, module_name)
@@ -246,30 +271,33 @@ class Invoice(Workflow, ModelSQL, ModelView):
         if (table.column_exist('invoice_report')
                 and table.column_exist('invoice_report_cache')):
             limit = cursor.IN_MAX
-            cursor.execute('SELECT COUNT(id) '
-                'FROM "' + cls._table + '"')
+            cursor.execute(*sql_table.select(Count(Literal(1))))
             invoice_count, = cursor.fetchone()
             for offset in range(0, invoice_count, limit):
-                cursor.execute(cursor.limit_clause(
-                    'SELECT id, invoice_report '
-                    'FROM "' + cls._table + '"'
-                    'ORDER BY id',
-                    limit, offset))
+                cursor.execute(*sql_table.select(
+                        sql_table.id, sql_table.invoice_report,
+                        order_by=sql_table.id,
+                        limit=limit, offset=offset))
                 for invoice_id, report in cursor.fetchall():
                     if report:
                         report = buffer(base64.decodestring(str(report)))
-                        cursor.execute('UPDATE "' + cls._table + '" '
-                            'SET invoice_report_cache = %s '
-                            'WHERE id = %s', (report, invoice_id))
+                        cursor.execute(*sql_table.update(
+                                columns=[sql_table.invoice_report_cache],
+                                values=[report],
+                                where=sql_table.id == invoice_id))
             table.drop_column('invoice_report')
 
         # Migration from 2.6:
         # - proforma renamed into validated
         # - open renamed into posted
-        cursor.execute('UPDATE "' + cls._table + '" '
-            'SET state = %s WHERE state = %s', ('validated', 'proforma'))
-        cursor.execute('UPDATE "' + cls._table + '" '
-            'SET state = %s WHERE state = %s', ('posted', 'open'))
+        cursor.execute(*sql_table.update(
+                columns=[sql_table.state],
+                values=['validated'],
+                where=sql_table.state == 'proforma'))
+        cursor.execute(*sql_table.update(
+                columns=[sql_table.state],
+                values=['posted'],
+                where=sql_table.state == 'open'))
 
         # Add index on create_date
         table.index_action('create_date', action='add')
@@ -499,38 +527,84 @@ class Invoice(Workflow, ModelSQL, ModelView):
             res['total_amount'] = self.currency.round(res['total_amount'])
         return res
 
-    def get_untaxed_amount(self, name):
-        amount = _ZERO
-        for line in self.lines:
-            if line.type != 'line':
-                continue
-            amount += line.amount
-        return self.currency.round(amount)
-
     @classmethod
-    def get_tax_amount(cls, invoices, name):
+    def get_amount(cls, invoices, names):
+        pool = Pool()
+        InvoiceTax = pool.get('account.invoice.tax')
+        Move = pool.get('account.move')
+        MoveLine = pool.get('account.move.line')
         cursor = Transaction().cursor
-        res = {}
-        type_name = FIELDS[cls.tax_amount._type].sql_type(cls.tax_amount)[0]
-        red_sql, red_ids = reduce_ids('invoice', [i.id for i in invoices])
-        cursor.execute('SELECT invoice, '
-                    'CAST(COALESCE(SUM(amount), 0) AS ' + type_name + ') '
-                'FROM account_invoice_tax '
-                'WHERE ' + red_sql + ' '
-                'GROUP BY invoice', red_ids)
-        for invoice_id, sum in cursor.fetchall():
-            # SQLite uses float for SUM
-            if not isinstance(sum, Decimal):
-                sum = Decimal(str(sum))
-            res[invoice_id] = sum
 
+        untaxed_amount = dict((i.id, _ZERO) for i in invoices)
+        tax_amount = dict((i.id, _ZERO) for i in invoices)
+        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__()
+        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(tax.invoice, sub_ids)
+            cursor.execute(*tax.select(tax.invoice,
+                    Coalesce(Sum(tax.amount), 0).as_(type_name),
+                    where=red_sql,
+                    group_by=tax.invoice))
+            for invoice_id, sum_ in cursor.fetchall():
+                # SQLite uses float for SUM
+                if not isinstance(sum_, Decimal):
+                    sum_ = Decimal(str(sum_))
+                tax_amount[invoice_id] = sum_
+
+        invoices_move = []
+        invoices_no_move = []
         for invoice in invoices:
-            res.setdefault(invoice.id, Decimal('0.0'))
-            res[invoice.id] = invoice.currency.round(res[invoice.id])
-        return res
+            if invoice.move:
+                invoices_move.append(invoice)
+            else:
+                invoices_no_move.append(invoice)
+
+        type_name = cls.total_amount._field.sql_type().base
+        invoice = cls.__table__()
+        move = Move.__table__()
+        line = MoveLine.__table__()
+        for i in range(0, len(invoices_move), in_max):
+            sub_ids = [i.id for i in invoices_move[i:i + in_max]]
+            red_sql = reduce_ids(invoice.id, sub_ids)
+            cursor.execute(*invoice.join(move,
+                    condition=invoice.move == move.id
+                    ).join(line, condition=move.id == line.move
+                    ).select(invoice.id,
+                    Coalesce(Sum(line.debit - line.credit), 0).cast(type_name),
+                    where=(invoice.account == line.account) & red_sql,
+                    group_by=invoice.id))
+            for invoice_id, sum_ in cursor.fetchall():
+                # SQLite uses float for SUM
+                if not isinstance(sum_, Decimal):
+                    sum_ = Decimal(str(sum_))
+                total_amount[invoice_id] = sum_
+
+        for invoice in invoices_move:
+            if invoice.type in ('in_invoice', 'out_credit_note'):
+                total_amount[invoice.id] *= -1
+            untaxed_amount[invoice.id] = (
+                total_amount[invoice.id] - tax_amount[invoice.id])
 
-    def get_total_amount(self, name):
-        return self.currency.round(self.untaxed_amount + self.tax_amount)
+        for invoice in invoices_no_move:
+            untaxed_amount[invoice.id] = sum(
+                (line.amount for line in invoice.lines
+                    if line.type == 'line'), _ZERO)
+            total_amount[invoice.id] = (
+                untaxed_amount[invoice.id] + tax_amount[invoice.id])
+
+        result = {
+            'untaxed_amount': untaxed_amount,
+            'tax_amount': tax_amount,
+            'total_amount': total_amount,
+            }
+        for key in result.keys():
+            if key not in names:
+                del result[key]
+        return result
 
     def get_reconciled(self, name):
         if not self.lines_to_pay:
@@ -556,14 +630,11 @@ class Invoice(Workflow, ModelSQL, ModelView):
         Currency = pool.get('currency.currency')
         Date = pool.get('ir.date')
 
-        computes = cls.search([
-                ('id', 'in', [i.id for i in invoices]),
-                ('state', '=', 'posted'),
-                ])
-
         today = Date.today()
         res = dict((x.id, _ZERO) for x in invoices)
-        for invoice in computes:
+        for invoice in invoices:
+            if invoice.state != 'posted':
+                continue
             amount = _ZERO
             amount_currency = _ZERO
             for line in invoice.lines_to_pay:
@@ -598,8 +669,6 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 with Transaction().set_context(date=invoice.currency_date):
                     amount_currency += Currency.compute(
                         invoice.company.currency, amount, invoice.currency)
-            if amount_currency < _ZERO:
-                amount_currency = _ZERO
             res[invoice.id] = amount_currency
         return res
 
@@ -609,80 +678,62 @@ class Invoice(Workflow, ModelSQL, ModelView):
         Rule = pool.get('ir.rule')
         Line = pool.get('account.invoice.line')
         Tax = pool.get('account.invoice.tax')
-        type_name = FIELDS[cls.total_amount._type].sql_type(
-            cls.total_amount)[0]
-        cursor = Transaction().cursor
-
-        invoice_query, invoice_val = Rule.domain_get('account.invoice')
-
-        cursor.execute('SELECT invoice FROM ('
-                    'SELECT invoice, '
-                        'COALESCE(SUM(quantity * unit_price), 0) '
-                            'AS total_amount '
-                    'FROM "' + Line._table + '" '
-                    'JOIN "' + cls._table + '" ON '
-                        '("' + cls._table + '".id = '
-                            '"' + Line._table + '".invoice) '
-                    'WHERE ' + invoice_query + ' '
-                    'GROUP BY invoice '
-                'UNION '
-                    'SELECT invoice, COALESCE(SUM(amount), 0) AS total_amount '
-                    'FROM "' + Tax._table + '" '
-                    'JOIN "' + cls._table + '" ON '
-                        '("' + cls._table + '".id = '
-                            '"' + Tax._table + '".invoice) '
-                    'WHERE ' + invoice_query + ' '
-                    'GROUP BY invoice  '
-                ') AS u '
-                'GROUP BY u.invoice '
-                'HAVING (CAST(SUM(u.total_amount) AS ' + type_name + ') '
-                    + clause[1] + ' %s)',
-                invoice_val + invoice_val + [str(clause[2])])
-        return [('id', 'in', [x[0] for x in cursor.fetchall()])]
+        type_name = cls.total_amount._field.sql_type().base
+        line = Line.__table__()
+        tax = Tax.__table__()
+
+        invoice_query = Rule.domain_get('account.invoice')
+        Operator = fields.SQL_OPERATORS[clause[1]]
+
+        union = (line.select(line.invoice.as_('invoice'),
+                Coalesce(Sum(line.quantity * line.unit_price), 0
+                    ).as_('total_amount'),
+                where=line.invoice.in_(invoice_query),
+                group_by=line.invoice)
+            | tax.select(tax.invoice.as_('invoice'),
+                Coalesce(Sum(tax.amount), 0).as_('total_amount'),
+                where=tax.invoice.in_(invoice_query),
+                group_by=tax.invoice))
+        query = union.select(union.invoice, group_by=union.invoice,
+            having=Operator(Sum(union.total_amount).cast(type_name),
+                clause[2]))
+        return [('id', 'in', query)]
 
     @classmethod
     def search_untaxed_amount(cls, name, clause):
         pool = Pool()
         Rule = pool.get('ir.rule')
         Line = pool.get('account.invoice.line')
-        type_name = FIELDS[cls.untaxed_amount._type].sql_type(
-                cls.untaxed_amount)[0]
-        cursor = Transaction().cursor
+        type_name = cls.untaxed_amount._field.sql_type().base
+        line = Line.__table__()
 
-        invoice_query, invoice_val = Rule.domain_get('account.invoice')
+        invoice_query = Rule.domain_get('account.invoice')
+        Operator = fields.SQL_OPERATORS[clause[1]]
 
-        cursor.execute('SELECT invoice FROM "' + Line._table + '" '
-                'JOIN "' + cls._table + '" ON '
-                    '("' + cls._table + '".id = '
-                        '"' + Line._table + '".invoice) '
-                'WHERE ' + invoice_query + ' '
-                'GROUP BY invoice '
-                'HAVING (CAST(COALESCE(SUM(quantity * unit_price), 0) '
-                    'AS ' + type_name + ') ' + clause[1] + ' %s)',
-                invoice_val + [str(clause[2])])
-        return [('id', 'in', [x[0] for x in cursor.fetchall()])]
+        query = line.select(line.invoice,
+            where=line.invoice.in_(invoice_query),
+            group_by=line.invoice,
+            having=Operator(Coalesce(Sum(line.quantity * line.unit_price), 0
+                    ).cast(type_name), clause[2]))
+        return [('id', 'in', query)]
 
     @classmethod
     def search_tax_amount(cls, name, clause):
         pool = Pool()
         Rule = pool.get('ir.rule')
         Tax = pool.get('account.invoice.tax')
-        type_name = FIELDS[cls.tax_amount._type].sql_type(
-                cls.tax_amount)[0]
-        cursor = Transaction().cursor
+        type_name = cls.tax_amount._field.sql_type().base
+        tax = Tax.__table__()
 
-        invoice_query, invoice_val = Rule.domain_get('account.invoice')
+        invoice_query = Rule.domain_get('account.invoice')
+        Operator = fields.SQL_OPERATORS[clause[1]]
 
-        cursor.execute('SELECT invoice FROM "' + Tax._table + '" '
-                'JOIN "' + cls._table + '" ON '
-                    '("' + cls._table + '".id = '
-                        '"' + Tax._table + '".invoice) '
-                'WHERE ' + invoice_query + ' '
-                'GROUP BY invoice '
-                'HAVING (CAST(COALESCE(SUM(amount), 0) '
-                    'AS ' + type_name + ') ' + clause[1] + ' %s)',
-                invoice_val + [str(clause[2])])
-        return [('id', 'in', [x[0] for x in cursor.fetchall()])]
+        query = tax.select(tax.invoice,
+            where=tax.invoice.in_(invoice_query),
+            group_by=tax.invoice,
+            having=Operator(Coalesce(Sum(tax.amount), 0).cast(type_name),
+                clause[2]))
+        return [('id', 'in', query)]
 
     def get_tax_context(self):
         context = {}
@@ -941,12 +992,21 @@ class Invoice(Workflow, ModelSQL, ModelView):
     @classmethod
     def search_rec_name(cls, name, clause):
         invoices = cls.search(['OR',
-                ('number',) + clause[1:],
-                ('reference',) + clause[1:],
+                ('number',) + tuple(clause[1:]),
+                ('reference',) + tuple(clause[1:]),
                 ], order=[])
         if invoices:
             return [('id', 'in', [i.id for i in invoices])]
-        return [('party',) + clause[1:]]
+        return [('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
 
     @classmethod
     def delete(cls, invoices):
@@ -1038,8 +1098,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
     def check_cancel_move(self):
         if (self.type in ('out_invoice', 'out_credit_note')
                 and self.cancel_move):
-            raise Exception('Customer invoice/credit note can not be cancelled '
-                'once posted.')
+            self.raise_user_error('customer_invoice_cancel_move',
+                self.rec_name)
 
     def get_reconcile_lines_for_amount(self, amount, exclude_lines=None):
         '''
@@ -1058,11 +1118,6 @@ class Invoice(Workflow, ModelSQL, ModelView):
             payment_amount += line.debit - line.credit
             payment_lines.append(line)
 
-        if self.type in ('out_invoice', 'in_credit_note'):
-            amount = - abs(amount)
-        else:
-            amount = abs(amount)
-
         for line in self.lines_to_pay:
 
             if line.reconciliation:
@@ -1070,14 +1125,14 @@ class Invoice(Workflow, ModelSQL, ModelView):
             if line in exclude_lines:
                 continue
 
-            test_amount = amount + (line.debit - line.credit)
+            test_amount = (line.debit - line.credit) - amount
             if self.currency.is_zero(test_amount):
                 return ([line], Decimal('0.0'))
             if abs(test_amount) < abs(remainder):
                 lines = [line]
                 remainder = test_amount
 
-            test_amount = (amount + payment_amount)
+            test_amount = payment_amount - amount
             test_amount += (line.debit - line.credit)
             if self.currency.is_zero(test_amount):
                 return ([line] + payment_lines, Decimal('0.0'))
@@ -1088,7 +1143,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
             exclude_lines2 = exclude_lines[:]
             exclude_lines2.append(line)
             lines2, remainder2 = self.get_reconcile_lines_for_amount(
-                (amount + (line.debit - line.credit)),
+                ((line.debit - line.credit) - amount),
                 exclude_lines=exclude_lines2)
             if remainder2 == Decimal('0.0'):
                 lines2.append(line)
@@ -1201,20 +1256,11 @@ class Invoice(Workflow, ModelSQL, ModelView):
         Return values to credit invoice.
         '''
         res = {}
-        if self.type == 'out_invoice':
-            res['type'] = 'out_credit_note'
-        elif self.type == 'in_invoice':
-            res['type'] = 'in_credit_note'
-        elif self.type == 'out_credit_note':
-            res['type'] = 'out_invoice'
-        elif self.type == 'in_credit_note':
-            res['type'] = 'in_invoice'
+        res['type'] = _CREDIT_TYPE[self.type]
 
         for field in ('description', 'comment'):
             res[field] = getattr(self, field)
 
-        res['reference'] = self.number or self.reference
-
         for field in ('company', 'party', 'invoice_address', 'currency',
                 'journal', 'account', 'payment_term'):
             res[field] = getattr(self, field).id
@@ -1285,10 +1331,10 @@ class Invoice(Workflow, ModelSQL, ModelView):
         for invoice in invoices:
             invoice.set_number()
             moves.append(invoice.create_move())
-        Move.post(moves)
         cls.write(invoices, {
                 'state': 'posted',
                 })
+        Move.post(moves)
         for invoice in invoices:
             if invoice.type in ('out_invoice', 'out_credit_note'):
                 invoice.print_invoice()
@@ -1388,7 +1434,8 @@ class InvoiceLine(ModelSQL, ModelView):
             'invisible': Bool(Eval('context', {}).get('standalone')),
             },
         depends=['invoice_type', 'party', 'company', 'currency'])
-    invoice_type = fields.Selection(_TYPE, 'Invoice Type', select=True,
+    invoice_type = fields.Selection(_TYPE + [(None, '')], 'Invoice Type',
+        select=True,
         states={
             'readonly': Eval('context', {}).get('type') | Eval('type'),
             'required': ~Eval('invoice'),
@@ -1414,13 +1461,11 @@ class InvoiceLine(ModelSQL, ModelView):
             },
         domain=[
             ('id', If(Eval('context', {}).contains('company'), '=', '!='),
-                Eval('context', {}).get('company', 0)),
+                Eval('context', {}).get('company', -1)),
             ],
         depends=['invoice'], select=True)
 
     sequence = fields.Integer('Sequence',
-        order_field='(%(table)s.sequence IS NULL) %(order)s, '
-        '%(table)s.sequence %(order)s',
         states={
             'invisible': Bool(Eval('context', {}).get('standalone')),
             })
@@ -1468,7 +1513,7 @@ class InvoiceLine(ModelSQL, ModelView):
     account = fields.Many2One('account.account', 'Account',
         domain=[
             ('company', '=', Eval('_parent_invoice', {}).get('company',
-                    Eval('context', {}).get('company', 0))),
+                    Eval('context', {}).get('company', -1))),
             If(Bool(Eval('_parent_invoice')),
                 If(Eval('_parent_invoice', {}).get('type').in_(['out_invoice',
                     'out_credit_note']),
@@ -1550,7 +1595,8 @@ class InvoiceLine(ModelSQL, ModelView):
                     '"%(invoice)s" that is posted or paid.'),
                 'create': ('You can not add a line to invoice "%(invoice)s" '
                     'that is posted, paid or cancelled.'),
-                'account_different_company': ('You can not create invoice line '
+                'account_different_company': (
+                    'You can not create invoice line '
                     '"%(line)s" on invoice "%(invoice)s of company '
                     '"%(invoice_line_company)s because account "%(account)s '
                     'has company "%(account_company)s".'),
@@ -1561,6 +1607,7 @@ class InvoiceLine(ModelSQL, ModelView):
 
     @classmethod
     def __register__(cls, module_name):
+        TableHandler = backend.get('TableHandler')
         super(InvoiceLine, cls).__register__(module_name)
         cursor = Transaction().cursor
         table = TableHandler(cursor, cls, module_name)
@@ -1572,8 +1619,9 @@ class InvoiceLine(ModelSQL, ModelView):
         table.not_null_action('sequence', action='remove')
 
     @staticmethod
-    def default_invoice_type():
-        return Transaction().context.get('invoice_type', 'out_invoice')
+    def order_sequence(tables):
+        table, _ = tables[None]
+        return [table.sequence == None, table.sequence]
 
     @staticmethod
     def default_currency():
@@ -1646,6 +1694,12 @@ class InvoiceLine(ModelSQL, ModelView):
         else:
             return _ZERO
 
+    @property
+    def origin_name(self):
+        if isinstance(self.origin, self.__class__):
+            return self.origin.invoice.rec_name
+        return self.origin.rec_name if self.origin else None
+
     def get_invoice_taxes(self, name):
         pool = Pool()
         Tax = pool.get('account.tax')
@@ -1819,10 +1873,10 @@ class InvoiceLine(ModelSQL, ModelView):
                 taxes.append(tax.id)
         return result
 
-    @staticmethod
-    def _get_origin():
+    @classmethod
+    def _get_origin(cls):
         'Return list of Model names for origin Reference'
-        return []
+        return [cls.__name__]
 
     @classmethod
     def get_origin(cls):
@@ -1986,6 +2040,8 @@ class InvoiceLine(ModelSQL, ModelView):
         Return values to credit line.
         '''
         res = {}
+        res['invoice_type'] = _CREDIT_TYPE[self.invoice_type]
+        res['origin'] = str(self)
 
         for field in ('sequence', 'type', 'quantity', 'unit_price',
                 'description'):
@@ -2017,9 +2073,7 @@ class InvoiceTax(ModelSQL, ModelView):
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
             select=True)
     description = fields.Char('Description', size=None, required=True)
-    sequence = fields.Integer('Sequence',
-        order_field='(%(table)s.sequence IS NULL) %(order)s, '
-        '%(table)s.sequence %(order)s')
+    sequence = fields.Integer('Sequence')
     sequence_number = fields.Function(fields.Integer('Sequence Number'),
             'get_sequence_number')
     account = fields.Many2One('account.account', 'Account', required=True,
@@ -2066,16 +2120,18 @@ class InvoiceTax(ModelSQL, ModelView):
                     'account "%(account)s" from company '
                     '"%(account_company)s".'),
                 'invalid_base_code_company': ('You can not create invoice '
-                    '"%(invoice)s" on company "%(invoice_company)s" using base '
-                    'tax code "%(base_code)s" from company '
+                    '"%(invoice)s" on company "%(invoice_company)s" '
+                    'using base tax code "%(base_code)s" from company '
                     '"%(base_code_company)s".'),
                 'invalid_tax_code_company': ('You can not create invoice '
                     '"%(invoice)s" on company "%(invoice_company)s" using tax '
-                    'code "%(tax_code)s" from company "%(tax_code_company)s".'),
+                    'code "%(tax_code)s" from company '
+                    '"%(tax_code_company)s".'),
                 })
 
     @classmethod
     def __register__(cls, module_name):
+        TableHandler = backend.get('TableHandler')
         cursor = Transaction().cursor
         table = TableHandler(cursor, cls, module_name)
 
@@ -2085,6 +2141,11 @@ class InvoiceTax(ModelSQL, ModelView):
         table.not_null_action('sequence', action='remove')
 
     @staticmethod
+    def order_sequence(tables):
+        table, _ = tables[None]
+        return [table.sequence == None, table.sequence]
+
+    @staticmethod
     def default_base():
         return Decimal('0.0')
 
@@ -2409,7 +2470,7 @@ class PayInvoiceAsk(ModelView):
     account_writeoff = fields.Many2One('account.account', 'Write-Off Account',
         domain=[
             ('kind', '!=', 'view'),
-            ('company', '=', Eval('context', {}).get('company', 0)),
+            ('company', '=', Eval('context', {}).get('company', -1)),
             ],
         states={
             'invisible': Eval('type') != 'writeoff',
@@ -2632,7 +2693,7 @@ class PayInvoice(Wizard):
 
 
 class CreditInvoiceStart(ModelView):
-    'Credit Invoice Init'
+    'Credit Invoice'
     __name__ = 'account.invoice.credit.start'
     with_refund = fields.Boolean('With Refund',
         help='If true, the current invoice(s) will be paid.')
@@ -2657,7 +2718,8 @@ class CreditInvoice(Wizard):
                 'refund_with_payement': ('You can not credit with refund '
                     'invoice "%s" because it has payments.'),
                 'refund_supplier': ('You can not credit with refund '
-                    'a supplier invoice/credit note.'),
+                    'invoice "%s" because it is a supplier '
+                    'invoice/credit note.'),
                 })
 
     def default_start(self, fields):
@@ -2689,7 +2751,7 @@ class CreditInvoice(Wizard):
                     self.raise_user_error('refund_with_payement',
                         (invoice.rec_name,))
                 if invoice.type in ('in_invoice', 'in_credit_note'):
-                    self.raise_user_error('refund_supplier')
+                    self.raise_user_error('refund_supplier', invoice.rec_name)
 
         credit_invoices = Invoice.credit(invoices, refund=refund)
 
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 75d2f9f..d344a78 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -13,11 +13,13 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgid ""
+"You can not credit with refund invoice \"%s\" because it is a supplier "
+"invoice/credit note."
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
@@ -78,6 +80,10 @@ msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
+msgid "Last line of payment term \"%s\" must be of type remainder."
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
 msgstr ""
 
@@ -115,6 +121,10 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.invoice:"
+msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
@@ -312,6 +322,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Номер"
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr ""
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Партньор"
@@ -893,8 +907,9 @@ msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr "Фактура - Ред от плащане"
 
+#, fuzzy
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
+msgid "Credit Invoice"
 msgstr "Начало на кредитна фактура"
 
 msgctxt "model:account.invoice.line,name:"
@@ -1098,6 +1113,11 @@ msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
 msgstr "Условия за плащане"
 
+#, fuzzy
+msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ":"
+
 msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Сума"
@@ -1170,6 +1190,11 @@ msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Количество"
 
+#, fuzzy
+msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr "Препратка"
+
 msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Кредитно известие на доставчик N°:"
@@ -1257,6 +1282,10 @@ msgid "Supplier Invoice"
 msgstr "Фактура за доставчик"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Кредитно известие"
 
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 7caaac2..1d13864 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -5,28 +5,30 @@ 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 ""
-"L'any fiscal \"%(first)s\" i \"%(second)s\" tenen la mateixa seqüència de "
-"facturació."
+"L'exercici fiscal \"%(first)s\" i \"%(second)s\" tenen la mateixa seqüència "
+"de facturació."
 
 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 ""
-"No podeu canviar la seqüència de factures a l'any fiscal \"%s\" perquè ja hi"
-" han factures confirmades a aquest any fiscal."
-
-msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
-msgstr ""
-"No podeu pagar amb una devolución una factura de proveïdor o abonament de "
-"client."
+"No podeu canviar la seqüència de factures a l'exercici fiscal \"%s\" perquè "
+"ja hi ha factures confirmades en aquest exercici fiscal."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr "No podeu pagar amb la factura de devolución \"%s\" perquè té pagaments."
 
 msgctxt "error:account.invoice.credit:"
+msgid ""
+"You can not credit with refund invoice \"%s\" because it is a supplier "
+"invoice/credit note."
+msgstr ""
+"No podeu abonar la factura rectificativa \"%s\" perquè és una factura de "
+"proveïdor o d'abonament de proveïdor."
+
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
 "No podeu pagar amb la factura de devolución \"%s\" perquè no està "
@@ -96,18 +98,23 @@ msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
-msgstr "La linea \"%(line)s\" del termini de pagament \"%(term)s\" no és correcte."
+msgstr "La línia \"%(line)s\" del termini de pagament \"%(term)s\" no és correcte."
+
+msgctxt "error:account.invoice.payment_term:"
+msgid "Last line of payment term \"%s\" must be of type remainder."
+msgstr ""
+"L'última línia del termini de pagament \"%s\" ha de ser de tipus remanent."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
-msgstr "Falta la línia de resta la termini de pagament \"%s\"."
+msgstr "Falta el remanent de la línea del termini de pagament \"%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 ""
-"No podeu afegir la línia \"%(line)s\" a la factura \"%(invoice)s\" perque "
+"No podeu afegir la línia \"%(line)s\" a la factura \"%(invoice)s\" perquè "
 "està confirmada, pagada o cancel·lada."
 
 msgctxt "error:account.invoice.tax:"
@@ -149,6 +156,12 @@ msgstr ""
 " està confirmada o pagada."
 
 msgctxt "error:account.invoice:"
+msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
+msgstr ""
+"La factura de client o abonament \"%s\" no es pot cancel·lar si ja està "
+"confirmada."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
@@ -225,8 +238,8 @@ msgid ""
 "There is no invoice sequence for invoice \"%(invoice)s\" on the "
 "period/fiscal year \"%(period)s\"."
 msgstr ""
-"No hi ha seqüència de factura per la factura \"%(invoice)s\" al període/any "
-"fiscal \"%(period)s\"."
+"No hi ha seqüència de factura per la factura \"%(invoice)s\" al "
+"període/exercicifiscal \"%(period)s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
@@ -254,7 +267,7 @@ msgid ""
 "Period \"%(period)s\" must have the same company as its fiscal year "
 "(%(fiscalyear)s)."
 msgstr ""
-"El període \"%(period)s\" ha de tenir la mateixa empresa i any fiscal "
+"El període \"%(period)s\" ha de tenir la mateixa empresa i exercici fiscal "
 "(%(fiscalyear)s)."
 
 msgctxt "error:account.period:"
@@ -262,8 +275,8 @@ msgid ""
 "You can not change the invoice sequence in period \"%s\" because there is "
 "already an invoice posted in this period"
 msgstr ""
-"No podeu canviar la seqüència de factures al període \"%s\" perquè ja hi han"
-" factures confirmades a aquest període."
+"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.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -373,6 +386,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Número"
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr "Orígens"
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Tercer"
@@ -954,7 +971,7 @@ msgid "Invoice - Payment Line"
 msgstr "Factura - Línia de pagament"
 
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
+msgid "Credit Invoice"
 msgstr "Inicialització factura abonament"
 
 msgctxt "model:account.invoice.line,name:"
@@ -1146,6 +1163,10 @@ msgid "Payment Terms"
 msgstr "Terminis de pagament"
 
 msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ":"
+
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Import"
 
@@ -1218,6 +1239,10 @@ msgid "Quantity"
 msgstr "Quantitat"
 
 msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr "Referència"
+
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Abonament de proveïdor Nº:"
 
@@ -1302,6 +1327,10 @@ msgid "Supplier Invoice"
 msgstr "Factura de proveïdor"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Abonament"
 
@@ -1323,7 +1352,7 @@ msgstr "Comentari"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
-msgstr "Linea"
+msgstr "Línia"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
@@ -1343,7 +1372,7 @@ msgstr "Desajust"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid ""
-msgstr " "
+msgstr ""
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "April"
@@ -1411,7 +1440,7 @@ msgstr "Remanent"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
-msgstr " "
+msgstr ""
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Friday"
@@ -1599,11 +1628,11 @@ msgstr "Cancel·la"
 
 msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
-msgstr "D'acord"
+msgstr "Accepta"
 
 msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
-msgstr "D'acord"
+msgstr "Accepta"
 
 msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 18e42b9..209defa 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -13,11 +13,13 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgid ""
+"You can not credit with refund invoice \"%s\" because it is a supplier "
+"invoice/credit note."
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
@@ -78,6 +80,10 @@ msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
+msgid "Last line of payment term \"%s\" must be of type remainder."
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
 msgstr ""
 
@@ -115,6 +121,10 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.invoice:"
+msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
@@ -312,6 +322,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr ""
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr ""
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr ""
@@ -893,7 +907,7 @@ msgid "Invoice - Payment Line"
 msgstr ""
 
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
+msgid "Credit Invoice"
 msgstr ""
 
 msgctxt "model:account.invoice.line,name:"
@@ -1085,6 +1099,10 @@ msgid "Payment Terms"
 msgstr ""
 
 msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ""
+
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr ""
 
@@ -1157,6 +1175,10 @@ msgid "Quantity"
 msgstr ""
 
 msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr ""
+
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr ""
 
@@ -1241,6 +1263,10 @@ msgid "Supplier Invoice"
 msgstr ""
 
 msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr ""
 
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 83ea1a7..77a8c49 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -18,18 +18,20 @@ msgstr ""
 "gibt."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
-msgstr ""
-"Lieferantenrechnungen/-gutschriften können nicht mit Verrechnung erstellt "
-"werden."
-
-msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
 "Rechnung \"%s\" kann nicht mit Verrechnung gutgeschrieben werden, da bereits"
 " Zahlungen erfolgt sind."
 
 msgctxt "error:account.invoice.credit:"
+msgid ""
+"You can not credit with refund invoice \"%s\" because it is a supplier "
+"invoice/credit note."
+msgstr ""
+"Rechnung \"%s\" kann nicht mit Verrechnung gutgeschrieben werden, weil sie "
+"eine Lieferantenrechnung/-gutschrift ist."
+
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
 "Rechnung \"%s\" kann nicht mit Verrechnung gutgeschrieben werden, da sie "
@@ -106,6 +108,12 @@ msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
 msgstr "Ungültige Zeile \"%(line)s\" in Zahlungsbedingung \"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
+msgid "Last line of payment term \"%s\" must be of type remainder."
+msgstr ""
+"Die letzte Zeile der Zahlungsbedingung \"%s\" muss vom Typ 'Restbetrag' "
+"sein."
+
+msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
 msgstr "Fehlende Restzeile in Zahlungsbedingung \"%s\"."
 
@@ -157,6 +165,12 @@ msgstr ""
 "weil sie in Status \"Festgeschrieben\" oder \"Bezahlt\" ist."
 
 msgctxt "error:account.invoice:"
+msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
+msgstr ""
+"Eine festgeschriebene Kundenrechnung bzw. -gutschrift (\"%s\") kann nicht "
+"annulliert werden."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
@@ -383,6 +397,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Nummer"
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr "Herkünfte"
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Partei"
@@ -966,8 +984,8 @@ msgid "Invoice - Payment Line"
 msgstr "Rechnung - Zahlungsposition"
 
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
-msgstr "Gutschrift Rechnung Init"
+msgid "Credit Invoice"
+msgstr "Gutschrift Rechnung"
 
 msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
@@ -1031,15 +1049,15 @@ msgstr "Zahlungsbedingungen"
 
 msgctxt "model:ir.action,name:credit"
 msgid "Credit"
-msgstr "Haben"
+msgstr "Gutschrift erstellen"
 
 msgctxt "model:ir.action,name:print"
 msgid "Invoice"
-msgstr "Rechnungsadresse"
+msgstr "Rechnung"
 
 msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
-msgstr "Rechnungsadresse"
+msgstr "Rechnung"
 
 msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
@@ -1158,6 +1176,10 @@ msgid "Payment Terms"
 msgstr "Zahlungsbedingungen"
 
 msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ":"
+
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Betrag"
 
@@ -1230,6 +1252,10 @@ msgid "Quantity"
 msgstr "Anzahl"
 
 msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr "Beleg"
+
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Gutschrift Nr.:"
 
@@ -1314,6 +1340,10 @@ msgid "Supplier Invoice"
 msgstr "Lieferantenrechnung"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Kundengutschrift"
 
@@ -1599,7 +1629,7 @@ msgstr "Zahlungsbedingungen"
 
 msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
-msgstr "Haben"
+msgstr "Gutschrift erstellen"
 
 msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index bcf761c..c3b1ff2 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -17,16 +17,18 @@ msgstr ""
 " facturas confirmadas en este año fiscal."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
-msgstr ""
-"No puede pagar con una devolución una factura de proveedor o nota de crédito"
-" de cliente."
-
-msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr "No puede pagar con la factura de devolución «%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 devolución la factura «%s» porque es una factura de "
+"proveedor."
+
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
 "No puede pagar con la factura de devolución «%s» porque no está confirmada."
@@ -98,6 +100,10 @@ msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
 msgstr "La línea «%(line)s» del término de pago «%(term)s» no es correcto."
 
 msgctxt "error:account.invoice.payment_term:"
+msgid "Last line of payment term \"%s\" must be of type remainder."
+msgstr "La última línea del plazo de pago «%s» debe ser de tipo remanente."
+
+msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
 msgstr "Falta la línea de resto en el término de pago «%s»."
 
@@ -147,6 +153,10 @@ msgstr ""
 "está confirmada o pagada."
 
 msgctxt "error:account.invoice:"
+msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
+msgstr "No se puede cancelar la factura «%s» porque ya está confirmada."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
@@ -187,24 +197,24 @@ msgid ""
 "The credit account on journal \"%(journal)s\" is the same as invoice "
 "\"%(invoice)s\"'s account."
 msgstr ""
-"La cuenta haber del diario «%(journal)s» tiene la misma cuenta de la factura"
-" «%(invoice)s»."
+"La cuenta crédito del diario «%(journal)s» tiene la misma cuenta de la "
+"factura «%(invoice)s»."
 
 msgctxt "error:account.invoice:"
 msgid "The credit account on journal %s\" is missing."
-msgstr "Falta la cuenta haber del diario «%s»."
+msgstr "Falta la cuenta crédito del 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 debe del diario «%(journal)s» tiene la misma cuenta de la factura "
-"«%(invoice)s»."
+"La cuenta débito del diario «%(journal)s» tiene la misma cuenta de la "
+"factura «%(invoice)s»."
 
 msgctxt "error:account.invoice:"
 msgid "The debit account on journal \"%s\" is missing."
-msgstr "Falta la cuenta debe del diario «%s»."
+msgstr "Falta la cuenta débito del diario «%s»."
 
 msgctxt "error:account.invoice:"
 msgid "The numbered invoice \"%s\" can not be deleted."
@@ -317,15 +327,15 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.invoice,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
-msgstr "Fecha divisa"
+msgstr "Fecha moneda"
 
 msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de divisa"
+msgstr "Dígitos de moneda"
 
 msgctxt "field:account.invoice,description:"
 msgid "Description"
@@ -371,6 +381,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Número"
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr "Origen"
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Entidad"
@@ -497,11 +511,11 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de divisa"
+msgstr "Dígitos de moneda"
 
 msgctxt "field:account.invoice.line,description:"
 msgid "Description"
@@ -637,19 +651,19 @@ msgstr "Empresa"
 
 msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
-msgstr "Divisa de pago"
+msgstr "Moneda de pago"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr "Decimales divisa de pago"
+msgstr "Decimales moneda de pago"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr "Decimales divisa de desajuste"
+msgstr "Decimales moneda de desajuste"
 
 msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr "Divisa de desajuste"
+msgstr "Moneda de desajuste"
 
 msgctxt "field:account.invoice.pay.ask,id:"
 msgid "ID"
@@ -685,11 +699,11 @@ msgstr "Importe"
 
 msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de divisa"
+msgstr "Dígitos de moneda"
 
 msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
@@ -761,11 +775,11 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de divisa"
+msgstr "Dígitos de moneda"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
@@ -952,7 +966,7 @@ msgid "Invoice - Payment Line"
 msgstr "Factura - Línea de pago"
 
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
+msgid "Credit Invoice"
 msgstr "Inicialización factura reembolso"
 
 msgctxt "model:account.invoice.line,name:"
@@ -1144,6 +1158,10 @@ msgid "Payment Terms"
 msgstr "Términos de pago"
 
 msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ":"
+
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Importe"
 
@@ -1216,6 +1234,10 @@ msgid "Quantity"
 msgstr "Cantidad"
 
 msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr "Referencia"
+
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Nota de crédito de proveedor Nº:"
 
@@ -1300,6 +1322,10 @@ msgid "Supplier Invoice"
 msgstr "Factura de proveedor"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Nota de crédito"
 
@@ -1561,7 +1587,7 @@ msgstr "_Confirmar"
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
-msgstr "Importe divisa secundaria"
+msgstr "Importe moneda secundaria"
 
 msgctxt "view:account.move.line:"
 msgid "Credit"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 1d52aeb..9ee3860 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -17,18 +17,20 @@ msgstr ""
 "porque hay actualmente facturas confirmadas en este año fiscal."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
-msgstr ""
-"Usted no puede abonar con un reembolso una nota credito/factura de "
-"proveedor."
-
-msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
 "Usted no puede abonar con el reembolso de la factura \"%s\" porque ha sido "
 "pagada."
 
 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 acreditar con un reembolso la factura \"%s\" porque es una nota "
+"credito/factura 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 "
@@ -101,6 +103,10 @@ msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
 msgstr "Línea inválida \"%(line)s\" en forma de pago \"%(term)s\"."
 
 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."
+
+msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
 msgstr "Falta linea de residuo en forma de pago \"%s\"."
 
@@ -151,6 +157,12 @@ msgstr ""
 "porque esta abierta 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."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
@@ -373,6 +385,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Número"
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr "Orígenes"
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Tercero"
@@ -839,7 +855,7 @@ msgstr "Cuenta"
 
 msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
-msgstr "Cantidad"
+msgstr "Valor"
 
 msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
@@ -954,8 +970,8 @@ msgid "Invoice - Payment Line"
 msgstr "Factura - Línea de pago"
 
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
-msgstr "Inicializar Factura Credito"
+msgid "Credit Invoice"
+msgstr "Factura Credito"
 
 msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
@@ -1146,6 +1162,10 @@ msgid "Payment Terms"
 msgstr "Formas de Pago"
 
 msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ":"
+
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Cantidad"
 
@@ -1218,6 +1238,10 @@ msgid "Quantity"
 msgstr "Cantidad"
 
 msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr "Referencia"
+
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Nota Crédito del Proveedor N°:"
 
@@ -1259,11 +1283,11 @@ msgstr "NIT:"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Credit Note"
-msgstr ""
+msgstr "Nota Credito de Proveedor Validad"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
-msgstr ""
+msgstr "Factura de Proveedor Validada"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
@@ -1302,6 +1326,10 @@ msgid "Supplier Invoice"
 msgstr "Factura de Proveedor"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Nota Crédito"
 
@@ -1341,10 +1369,9 @@ msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
 msgstr "Anulado"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid ""
-msgstr "Punto de Orden"
+msgstr ""
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "April"
@@ -1410,10 +1437,9 @@ msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Remainder"
 msgstr "Saldo"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
-msgstr "Punto de Orden"
+msgstr ""
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Friday"
@@ -1521,11 +1547,11 @@ msgstr "Impuestos"
 
 msgctxt "view:account.invoice:"
 msgid "Also known as Pro Forma"
-msgstr ""
+msgstr "Tambien conocido como Pro Forma"
 
 msgctxt "view:account.invoice:"
 msgid "Are you sure to cancel the invoice?"
-msgstr ""
+msgstr "Esta seguro que desea cancelar la factura?"
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
@@ -1543,7 +1569,6 @@ msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Pago"
 
-#, fuzzy
 msgctxt "view:account.invoice:"
 msgid "Validate"
 msgstr "Validar"
@@ -1562,7 +1587,7 @@ msgstr "_Pago"
 
 msgctxt "view:account.invoice:"
 msgid "_Post"
-msgstr ""
+msgstr "Registrar"
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 0026612..5c2d5ca 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -5,32 +5,32 @@ 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 ""
-"El año fiscal \"%(first)s\" y \"%(second)s\" tienen la misma secuencia de "
-"facturación."
+"Los ejercicios fiscales \"%(first)s\" y \"%(second)s\" tienen la misma "
+"secuencia de facturación."
 
 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 ""
-"No puede cambiar la secuencia de factura en el año fiscal \"%s\" porque ja "
-"hay facturas confirmadas en este año fiscal."
+"No puede cambiar la secuencia de factura en el ejercicio fiscal \"%s\" "
+"porque ya hay facturas confirmadas en este ejercicio fiscal."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
-msgstr ""
-"No puede pagar con una devolución una factura de proveedor o abono de "
-"cliente."
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgstr "No puede abonar la factura \"%s\" porque tiene pagos."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund invoice \"%s\" because it has payments."
-msgstr "No puede pagar con la factura de devolución \"%s\" porque tiene pagos."
+msgid ""
+"You can not credit with refund invoice \"%s\" because it is a supplier "
+"invoice/credit note."
+msgstr ""
+"No puede abonar con devolución la factura \"%s\" porque es una factura de "
+"proveedor."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it is not posted."
-msgstr ""
-"No puede pagar con la factura de devolución \"%s\" porque no está "
-"confirmada."
+msgstr "No puede abonar de la factura \"%s\" porque no está confirmada."
 
 msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account."
@@ -45,8 +45,8 @@ msgid ""
 "You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
 "cancelled."
 msgstr ""
-"No puede añadir una línea a la factura \"%(invoice)s\" confirmada, pagada o "
-"cancelada."
+"No puede añadir una línea a la factura \"%(invoice)s\" porque está "
+"confirmada, pagada o cancelada."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
@@ -72,7 +72,7 @@ msgid ""
 "posted or paid."
 msgstr ""
 "No puede modificar la línea \"%(line)s\" de la factura \"%(invoice)s\", "
-"confirmada o pagada."
+"porque está confirmada o pagada."
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
@@ -96,11 +96,15 @@ msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
-msgstr "La línea \"%(line)s\" del plazo de pago \"%(term)s\" no es correcto."
+msgstr "La línea \"%(line)s\" del plazo de pago \"%(term)s\" no es correcta."
+
+msgctxt "error:account.invoice.payment_term:"
+msgid "Last line of payment term \"%s\" must be of type remainder."
+msgstr "La última línea del plazo de pago \"%s\" debe ser de tipo remanente."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
-msgstr "Falta la línea de resto en el plazo de pago \"%s\"."
+msgstr "Falta la línea de remanente en el plazo de pago \"%s\"."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -149,19 +153,23 @@ msgstr ""
 "porque está confirmada o pagada."
 
 msgctxt "error:account.invoice:"
+msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
+msgstr "No se puede cancelar la factura  \"%s\" porque ya está confirmada."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
 msgstr ""
-"La factura \"%(invoice)s\" utiliza la misma cuenta \"%(account)s\" para la "
-"factura y la línea \"%(line)s\"."
+"La factura \"%(invoice)s\" y la línea \"%(line)s\" utilizan la misma cuenta "
+"\"%(account)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 en las líneas de factura.\n"
+"La factura \"%s\" tiene impuestos que no corresponden a las líneas de factura.\n"
 "Recalcule la factura."
 
 msgctxt "error:account.invoice:"
@@ -169,7 +177,7 @@ 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 las líneas de factura que no están en la factura.\n"
+"Las lineas de la factura \"%s\" tienen impuestos  que no corresponden con la factura.\n"
 "Recalcule la factura."
 
 msgctxt "error:account.invoice:"
@@ -181,7 +189,7 @@ msgid ""
 "Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"La base de los impuestos de la factura \"%s\" es diferente de las de las líneas de la factura.\n"
+"La base de los impuestos de la factura \"%s\" no corresponde con las líneas de la factura.\n"
 "Recalcule la factura."
 
 msgctxt "error:account.invoice:"
@@ -201,8 +209,8 @@ msgid ""
 "The debit account on journal \"%(journal)s\" is the same as invoice "
 "\"%(invoice)s\"'s account."
 msgstr ""
-"La cuenta debe del diario \"%(journal)s\" tiene la misma cuenta de la "
-"factura \"%(invoice)s\"."
+"La cuenta debe del diario \"%(journal)s\" es la misma cuenta de la factura "
+"\"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
 msgid "The debit account on journal \"%s\" is missing."
@@ -218,7 +226,7 @@ msgid ""
 "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?"
+"¿Desea usar el actual para el asiento de cancelación?"
 
 msgctxt "error:account.invoice:"
 msgid ""
@@ -226,7 +234,7 @@ msgid ""
 "period/fiscal year \"%(period)s\"."
 msgstr ""
 "No hay secuencia de factura para la factura \"%(invoice)s\" en el "
-"período/año fiscal \"%(period)s\"."
+"período/ejercicio fiscal \"%(period)s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
@@ -254,8 +262,8 @@ msgid ""
 "Period \"%(period)s\" must have the same company as its fiscal year "
 "(%(fiscalyear)s)."
 msgstr ""
-"El período \"%(period)s\" debe tener la misma empresa y año fiscal "
-"(%(fiscalyear)s)."
+"Período \"%(period)s\" y ejercicio fiscal (%(fiscalyear)s) deben tener la "
+"misma empresa."
 
 msgctxt "error:account.period:"
 msgid ""
@@ -267,7 +275,7 @@ msgstr ""
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr "Secuencia de abono de proveedor"
+msgstr "Secuencia de factura de abono de proveedor"
 
 msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
@@ -275,7 +283,7 @@ msgstr "Secuencia de factura de proveedor"
 
 msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Secuencia de abono de cliente"
+msgstr "Secuencia de factura de abono de cliente"
 
 msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
@@ -351,7 +359,7 @@ msgstr "Informe factura"
 
 msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
-msgstr "Formato del informe de factura"
+msgstr "Formato del informe factura"
 
 msgctxt "field:account.invoice,journal:"
 msgid "Journal"
@@ -373,6 +381,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Número"
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr "Origen"
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Tercero"
@@ -623,7 +635,7 @@ msgstr "Usuario modificación"
 
 msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr "Cuenta del desajuste"
+msgstr "Cuenta para desajustes"
 
 msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
@@ -663,7 +675,7 @@ msgstr "Factura"
 
 msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr "Diario del desajuste"
+msgstr "Diario de desajustes"
 
 msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
@@ -911,7 +923,7 @@ msgstr "Usuario modificación"
 
 msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr "Secuencia de abono de proveedor"
+msgstr "Secuencia de factura de abono de proveedor"
 
 msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
@@ -919,7 +931,7 @@ msgstr "Secuencia de factura de proveedor"
 
 msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Secuencia de abono de cliente"
+msgstr "Secuencia de factura de abono de cliente"
 
 msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
@@ -954,8 +966,8 @@ msgid "Invoice - Payment Line"
 msgstr "Factura - Línea de pago"
 
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
-msgstr "Inicialización factura abono"
+msgid "Credit Invoice"
+msgstr "Inicialización abono"
 
 msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
@@ -983,7 +995,7 @@ msgstr "Línea del plazo de pago"
 
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr "Imprimir aviso informe de factura"
+msgstr "Aviso al imprimir la factura"
 
 msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
@@ -999,15 +1011,15 @@ msgstr "Facturas"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
-msgstr "Abonos de proveedor"
+msgstr "Facturas de abono de proveedor"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
-msgstr "Facturas proveedor"
+msgstr "Facturas de proveedor"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
-msgstr "Abonos"
+msgstr "Facturas de abono"
 
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
@@ -1119,15 +1131,15 @@ msgstr "Factura"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
-msgstr "Abonos de proveedor"
+msgstr "Facturas de abono de proveedor"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
-msgstr "Facturas proveedor"
+msgstr "Facturas de proveedor"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
-msgstr "Abonos"
+msgstr "Facturas de abono"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
@@ -1146,6 +1158,10 @@ msgid "Payment Terms"
 msgstr "Plazos de pago"
 
 msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ":"
+
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Importe"
 
@@ -1155,7 +1171,7 @@ msgstr "Base"
 
 msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
-msgstr "Abono Nº:"
+msgstr "Factura de abono Nº:"
 
 msgctxt "odt:account.invoice:"
 msgid "Date"
@@ -1175,7 +1191,7 @@ msgstr "Descripción:"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
-msgstr "Abono borrador"
+msgstr "Factura de abono borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
@@ -1183,7 +1199,7 @@ msgstr "Factura borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
-msgstr "Abono de proveedor borrador"
+msgstr "Factura de abono de proveedor borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
@@ -1207,7 +1223,7 @@ msgstr "Teléfono:"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
-msgstr "Abono Pro Forma"
+msgstr "Factura de abono Pro Forma"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
@@ -1218,8 +1234,12 @@ msgid "Quantity"
 msgstr "Cantidad"
 
 msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr "Referencia"
+
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
-msgstr "Abono de proveedor Nº:"
+msgstr "Factura de abono de proveedor Nº:"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
@@ -1259,7 +1279,7 @@ msgstr "CIF/NIF:"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Credit Note"
-msgstr "Abono de proveedor validado"
+msgstr "Factura de abono de proveedor validada"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
@@ -1287,7 +1307,7 @@ msgstr "Validada"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
-msgstr "Abono"
+msgstr "Factura de abono"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
@@ -1295,15 +1315,19 @@ msgstr "Factura"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
-msgstr "Abono de proveedor"
+msgstr "Factura de abono de proveedor"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr "Factura de proveedor"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
-msgstr "Abono"
+msgstr "Factura de abono"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
@@ -1311,7 +1335,7 @@ msgstr "Factura"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
-msgstr "Abono de proveedor"
+msgstr "Factura de abono de proveedor"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
@@ -1399,7 +1423,7 @@ msgstr "Fijo"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Remainder"
-msgstr "Porcentaje sobre remanente"
+msgstr "Porcentaje sobre el remanente"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Total"
@@ -1447,7 +1471,7 @@ msgstr "¿Está seguro de abonar estas facturas?"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr "Factura abono"
+msgstr "Factura de abono"
 
 msgctxt "view:account.invoice.line:"
 msgid "General"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index fd6ee25..f1d6dbe 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -17,16 +17,20 @@ msgstr ""
 "elle contient déjà des factures postées."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
-msgstr ""
-
-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 "
 "contient des paiements."
 
 msgctxt "error:account.invoice.credit:"
+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"
+" 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 "
@@ -99,6 +103,12 @@ msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
 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\"."
+
+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 "
@@ -151,6 +161,12 @@ msgstr ""
 "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 "
+"postée."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
@@ -267,7 +283,7 @@ msgstr ""
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr "Séquence des notes de crédit fournisseur"
+msgstr "Séquence de note de crédit fournisseur"
 
 msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
@@ -275,7 +291,7 @@ msgstr "Séquence de facture fournisseur"
 
 msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Séquence des notes de crédit client"
+msgstr "Séquence de note de crédit client"
 
 msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
@@ -373,6 +389,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Numéro"
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr "Origines"
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Tiers"
@@ -911,7 +931,7 @@ msgstr "Mis à jour par"
 
 msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr "Séquence des notes de crédit fournisseur"
+msgstr "Séquence de note de crédit fournisseur"
 
 msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
@@ -919,7 +939,7 @@ msgstr "Séquence de facture fournisseur"
 
 msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Séquence des notes de crédit client"
+msgstr "Séquence de note de crédit client"
 
 msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
@@ -931,11 +951,11 @@ msgstr "Facture"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr "Condition de paiement client"
+msgstr "Conditions de paiement client"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
-msgstr "Conditions de paiement du fournisseur"
+msgstr "Conditions de paiement fournisseur"
 
 msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
@@ -954,8 +974,8 @@ msgid "Invoice - Payment Line"
 msgstr "Facture - Ligne de paiement"
 
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
-msgstr "Créer les demandes d'achat - Initialisation"
+msgid "Credit Invoice"
+msgstr "Créditer la facture"
 
 msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
@@ -1019,7 +1039,7 @@ msgstr "Conditions de paiement"
 
 msgctxt "model:ir.action,name:credit"
 msgid "Credit"
-msgstr "Crédit"
+msgstr "Créditer"
 
 msgctxt "model:ir.action,name:print"
 msgid "Invoice"
@@ -1146,8 +1166,8 @@ msgid "Payment Terms"
 msgstr "Conditions de paiement"
 
 msgctxt "odt:account.invoice:"
-msgid "Amount"
-msgstr "Montant"
+msgid ":"
+msgstr ":"
 
 msgctxt "odt:account.invoice:"
 msgid "Amount"
@@ -1158,14 +1178,6 @@ msgid "Base"
 msgstr "Base"
 
 msgctxt "odt:account.invoice:"
-msgid "Base"
-msgstr "Base"
-
-msgctxt "odt:account.invoice:"
-msgid "Credit Note N°:"
-msgstr "N° de note de crédit :"
-
-msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
 msgstr "N° de note de crédit :"
 
@@ -1174,14 +1186,6 @@ msgid "Date"
 msgstr "Date"
 
 msgctxt "odt:account.invoice:"
-msgid "Date"
-msgstr "Date"
-
-msgctxt "odt:account.invoice:"
-msgid "Date:"
-msgstr "Date :"
-
-msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr "Date :"
 
@@ -1190,14 +1194,6 @@ msgid "Description"
 msgstr "Description"
 
 msgctxt "odt:account.invoice:"
-msgid "Description"
-msgstr "Description"
-
-msgctxt "odt:account.invoice:"
-msgid "Description:"
-msgstr "Description :"
-
-msgctxt "odt:account.invoice:"
 msgid "Description:"
 msgstr "Description :"
 
@@ -1206,14 +1202,6 @@ msgid "Draft Credit Note"
 msgstr "Note de crédit brouillon"
 
 msgctxt "odt:account.invoice:"
-msgid "Draft Credit Note"
-msgstr "Note de crédit brouillon"
-
-msgctxt "odt:account.invoice:"
-msgid "Draft Invoice"
-msgstr "Facture brouillon"
-
-msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
 msgstr "Facture brouillon"
 
@@ -1222,14 +1210,6 @@ msgid "Draft Supplier Credit Note"
 msgstr "Note de crédit fournisseur brouillon"
 
 msgctxt "odt:account.invoice:"
-msgid "Draft Supplier Credit Note"
-msgstr "Note de crédit fournisseur brouillon"
-
-msgctxt "odt:account.invoice:"
-msgid "Draft Supplier Invoice"
-msgstr "Facture fournisseur brouillon"
-
-msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
 msgstr "Facture fournisseur brouillon"
 
@@ -1238,22 +1218,10 @@ msgid "E-Mail:"
 msgstr "E-Mail:"
 
 msgctxt "odt:account.invoice:"
-msgid "E-Mail:"
-msgstr "E-Mail:"
-
-msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
 msgstr "N° de facture :"
 
 msgctxt "odt:account.invoice:"
-msgid "Invoice N°:"
-msgstr "N° de facture :"
-
-msgctxt "odt:account.invoice:"
-msgid "Payment Term"
-msgstr "Condition de paiement"
-
-msgctxt "odt:account.invoice:"
 msgid "Payment Term"
 msgstr "Condition de paiement"
 
@@ -1262,14 +1230,6 @@ msgid "Phone:"
 msgstr "Téléphone"
 
 msgctxt "odt:account.invoice:"
-msgid "Phone:"
-msgstr "Téléphone"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Credit Note"
-msgstr "Note de crédit pro forma"
-
-msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
 msgstr "Note de crédit pro forma"
 
@@ -1278,20 +1238,12 @@ msgid "Pro forma Invoice"
 msgstr "Facture pro forma"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Invoice"
-msgstr "Facture pro forma"
-
-msgctxt "odt:account.invoice:"
-msgid "Quantity"
-msgstr "Quantité"
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Quantité"
 
 msgctxt "odt:account.invoice:"
-msgid "Supplier Credit Note N°:"
-msgstr "N° de note de crédit fournisseur :"
+msgid "Reference"
+msgstr "Référence"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
@@ -1302,22 +1254,10 @@ msgid "Supplier Invoice N°:"
 msgstr "N° de facture fournisseur :"
 
 msgctxt "odt:account.invoice:"
-msgid "Supplier Invoice N°:"
-msgstr "N° de facture fournisseur :"
-
-msgctxt "odt:account.invoice:"
 msgid "Tax"
 msgstr "Taxe"
 
 msgctxt "odt:account.invoice:"
-msgid "Tax"
-msgstr "Taxe"
-
-msgctxt "odt:account.invoice:"
-msgid "Taxes"
-msgstr "Taxes"
-
-msgctxt "odt:account.invoice:"
 msgid "Taxes"
 msgstr "Taxes"
 
@@ -1326,14 +1266,6 @@ msgid "Taxes:"
 msgstr "Taxes :"
 
 msgctxt "odt:account.invoice:"
-msgid "Taxes:"
-msgstr "Taxes :"
-
-msgctxt "odt:account.invoice:"
-msgid "Total (excl. taxes):"
-msgstr "Total (hors-taxes) :"
-
-msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
 msgstr "Total (hors-taxes) :"
 
@@ -1342,14 +1274,6 @@ msgid "Total:"
 msgstr "Total :"
 
 msgctxt "odt:account.invoice:"
-msgid "Total:"
-msgstr "Total :"
-
-msgctxt "odt:account.invoice:"
-msgid "Unit Price"
-msgstr "Prix unitaire"
-
-msgctxt "odt:account.invoice:"
 msgid "Unit Price"
 msgstr "Prix unitaire"
 
@@ -1358,28 +1282,16 @@ msgid "VAT Number:"
 msgstr "Numéro TVA :"
 
 msgctxt "odt:account.invoice:"
-msgid "VAT Number:"
-msgstr "Numéro TVA :"
-
-msgctxt "odt:account.invoice:"
-msgid "VAT:"
-msgstr "TVA :"
-
-msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "TVA :"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Credit Note"
-msgstr "Notes de crédit fournisseur validées"
+msgstr "Note de crédit fournisseur validée"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
-msgstr "Factures fournisseur validées"
-
-msgctxt "selection:account.invoice,state:"
-msgid "Canceled"
-msgstr "Annulé"
+msgstr "Facture fournisseur validée"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
@@ -1390,14 +1302,6 @@ msgid "Draft"
 msgstr "Brouillon"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Draft"
-msgstr "Brouillon"
-
-msgctxt "selection:account.invoice,state:"
-msgid "Paid"
-msgstr "Payée"
-
-msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Payée"
 
@@ -1414,14 +1318,6 @@ msgid "Credit Note"
 msgstr "Note de crédit"
 
 msgctxt "selection:account.invoice,type:"
-msgid "Credit Note"
-msgstr "Note de crédit"
-
-msgctxt "selection:account.invoice,type:"
-msgid "Invoice"
-msgstr "Facture"
-
-msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
 msgstr "Facture"
 
@@ -1430,20 +1326,12 @@ msgid "Supplier Credit Note"
 msgstr "Note de crédit fournisseur"
 
 msgctxt "selection:account.invoice,type:"
-msgid "Supplier Credit Note"
-msgstr "Note de crédit fournisseur"
-
-msgctxt "selection:account.invoice,type:"
-msgid "Supplier Invoice"
-msgstr "Facture fournisseur"
-
-msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr "Facture fournisseur"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
-msgid "Credit Note"
-msgstr "Note de crédit"
+msgid ""
+msgstr ""
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
@@ -1454,14 +1342,6 @@ msgid "Invoice"
 msgstr "Facture"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
-msgid "Invoice"
-msgstr "Facture"
-
-msgctxt "selection:account.invoice.line,invoice_type:"
-msgid "Supplier Credit Note"
-msgstr "Note de crédit fournisseur"
-
-msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
 msgstr "Note de crédit fournisseur"
 
@@ -1469,14 +1349,6 @@ msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
 msgstr "Facture fournisseur"
 
-msgctxt "selection:account.invoice.line,invoice_type:"
-msgid "Supplier Invoice"
-msgstr "Facture fournisseur"
-
-msgctxt "selection:account.invoice.line,type:"
-msgid "Comment"
-msgstr "Commentaire"
-
 msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr "Commentaire"
@@ -1486,14 +1358,6 @@ msgid "Line"
 msgstr "Ligne"
 
 msgctxt "selection:account.invoice.line,type:"
-msgid "Line"
-msgstr "Ligne"
-
-msgctxt "selection:account.invoice.line,type:"
-msgid "Subtotal"
-msgstr "Sous-total"
-
-msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
 msgstr "Sous-total"
 
@@ -1501,10 +1365,6 @@ msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
 msgstr "Titre"
 
-msgctxt "selection:account.invoice.line,type:"
-msgid "Title"
-msgstr "Titre"
-
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
 msgstr "Paiement partiel"
@@ -1615,7 +1475,7 @@ msgstr "Mercredi"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr "Etes-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"
@@ -1626,22 +1486,10 @@ msgid "General"
 msgstr "Général"
 
 msgctxt "view:account.invoice.line:"
-msgid "General"
-msgstr "Général"
-
-msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
 msgstr "Ligne de facture"
 
 msgctxt "view:account.invoice.line:"
-msgid "Invoice Line"
-msgstr "Ligne de facture"
-
-msgctxt "view:account.invoice.line:"
-msgid "Invoice Lines"
-msgstr "Lignes de facture"
-
-msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
 msgstr "Lignes de facture"
 
@@ -1649,10 +1497,6 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notes"
 
-msgctxt "view:account.invoice.line:"
-msgid "Notes"
-msgstr "Notes"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr "Payer la facture"
@@ -1674,14 +1518,6 @@ msgid "Payment Term"
 msgstr "Conditions de paiement"
 
 msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term"
-msgstr "Conditions de paiement"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Terms"
-msgstr "Conditions de paiement"
-
-msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Conditions de paiement"
 
@@ -1702,14 +1538,6 @@ msgid "Invoice Tax"
 msgstr "Taxes de le facture"
 
 msgctxt "view:account.invoice.tax:"
-msgid "Invoice Tax"
-msgstr "Taxes de le facture"
-
-msgctxt "view:account.invoice.tax:"
-msgid "Invoice Taxes"
-msgstr "Taxes de le facture"
-
-msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
 msgstr "Taxes de le facture"
 
@@ -1718,10 +1546,6 @@ msgid "Tax Code"
 msgstr "Code de taxe"
 
 msgctxt "view:account.invoice.tax:"
-msgid "Tax Code"
-msgstr "Code de taxe"
-
-msgctxt "view:account.invoice.tax:"
 msgid "Taxes"
 msgstr "Taxes"
 
@@ -1738,14 +1562,6 @@ msgid "Invoice"
 msgstr "Facture"
 
 msgctxt "view:account.invoice:"
-msgid "Invoice"
-msgstr "Facture"
-
-msgctxt "view:account.invoice:"
-msgid "Invoices"
-msgstr "Factures"
-
-msgctxt "view:account.invoice:"
 msgid "Invoices"
 msgstr "Factures"
 
@@ -1754,14 +1570,6 @@ msgid "Other Info"
 msgstr "Autre information"
 
 msgctxt "view:account.invoice:"
-msgid "Other Info"
-msgstr "Autre information"
-
-msgctxt "view:account.invoice:"
-msgid "Payment"
-msgstr "Paiement"
-
-msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Paiement"
 
@@ -1774,14 +1582,6 @@ msgid "_Cancel"
 msgstr "_Annuler"
 
 msgctxt "view:account.invoice:"
-msgid "_Cancel"
-msgstr "_Annuler"
-
-msgctxt "view:account.invoice:"
-msgid "_Draft"
-msgstr "_Brouillon"
-
-msgctxt "view:account.invoice:"
 msgid "_Draft"
 msgstr "_Brouillon"
 
@@ -1790,10 +1590,6 @@ msgid "_Pay"
 msgstr "_Payer"
 
 msgctxt "view:account.invoice:"
-msgid "_Pay"
-msgstr "_Payer"
-
-msgctxt "view:account.invoice:"
 msgid "_Post"
 msgstr "_Poster"
 
@@ -1821,10 +1617,6 @@ msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr "Conditions de paiement"
 
-msgctxt "view:party.party:"
-msgid "Payment Terms"
-msgstr "Conditions de paiement"
-
 msgctxt "view:product.product:"
 msgid "Taxes"
 msgstr "Taxes"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index d9f095b..96ff3be 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -13,11 +13,13 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgid ""
+"You can not credit with refund invoice \"%s\" because it is a supplier "
+"invoice/credit note."
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
@@ -78,6 +80,10 @@ msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
+msgid "Last line of payment term \"%s\" must be of type remainder."
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
 msgstr ""
 
@@ -115,6 +121,10 @@ msgid ""
 msgstr ""
 
 msgctxt "error:account.invoice:"
+msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
@@ -312,6 +322,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Nummer"
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr ""
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Relatie"
@@ -906,7 +920,7 @@ msgid "Invoice - Payment Line"
 msgstr "Factuurbetalingen"
 
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
+msgid "Credit Invoice"
 msgstr ""
 
 msgctxt "model:account.invoice.line,name:"
@@ -1113,6 +1127,10 @@ msgid "Payment Terms"
 msgstr "Betalingstermijnen"
 
 msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ""
+
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Bedrag"
 
@@ -1184,6 +1202,11 @@ msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Hoeveelheid"
 
+#, fuzzy
+msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr "Referentie"
+
 msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Credit inkoopnotanummer:"
@@ -1271,6 +1294,10 @@ msgid "Supplier Invoice"
 msgstr "Inkoopfactuur"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Credit verkoopnota"
 
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index 9b4686b..472ccea 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -17,16 +17,18 @@ msgstr ""
 "этом финансовом году уже есть отправленные инвойсы."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
-msgstr "Вы не можете сделать возврат инвойса/сторно поставщика."
-
-msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
 "Вы не можете создать возврат для инвойса  \"%s\" так как он содержит "
 "платежи."
 
 msgctxt "error:account.invoice.credit:"
+msgid ""
+"You can not credit with refund invoice \"%s\" because it is a supplier "
+"invoice/credit note."
+msgstr ""
+
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr "Вы не можете сделать возврат \"%s\" так как он не отправлен."
 
@@ -96,6 +98,10 @@ msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
 msgstr "Некорректная строка \"%(line)s\" в правиле оплаты \"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
+msgid "Last line of payment term \"%s\" must be of type remainder."
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
 msgstr "Отсутствует строчка остатка в правиле оплаты \"%s\"."
 
@@ -146,6 +152,10 @@ msgstr ""
 " отправлен или оплачен."
 
 msgctxt "error:account.invoice:"
+msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
@@ -370,6 +380,10 @@ msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Номер"
 
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr ""
+
 msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Контрагент"
@@ -950,8 +964,9 @@ msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr "Инвойс - строка оплаты"
 
+#, fuzzy
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
+msgid "Credit Invoice"
 msgstr "Инициализировать возврат инвойса"
 
 msgctxt "model:account.invoice.line,name:"
@@ -1143,6 +1158,10 @@ msgid "Payment Terms"
 msgstr "Правила оплаты"
 
 msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ""
+
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Сумма"
 
@@ -1214,6 +1233,11 @@ msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Кол-во"
 
+#, fuzzy
+msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr "Ссылка"
+
 msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Сторно поставщика №:"
@@ -1299,6 +1323,10 @@ msgid "Supplier Invoice"
 msgstr "Инвойс поставщика"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Сторно"
 
diff --git a/locale/nl_NL.po b/locale/sl_SI.po
similarity index 72%
copy from locale/nl_NL.po
copy to locale/sl_SI.po
index d9f095b..b7a882f 100644
--- a/locale/nl_NL.po
+++ b/locale/sl_SI.po
@@ -4,39 +4,51 @@ 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 ""
+msgstr "Poslovni leti \"%(first)s\" in \"%(second)s\" imata enaki štetji računov."
 
 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 ""
+"Štetja računov v poslovnem letu \"%s\" ni možno spreminjati zaradi "
+"obstoječih knjiženih računov."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund a supplier invoice/credit note."
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
+"Za račun \"%s\" knjiženje dobroimetja z vračilom ni možno, ker že ima "
+"plačila."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgid ""
+"You can not credit with refund invoice \"%s\" because it is a supplier "
+"invoice/credit note."
 msgstr ""
+"Računu \"%s\" ni možno vpisati dobroimetja z vračilom, ker je prejet "
+"račun/dobropis."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
+"Za račun \"%s\" knjiženje dobroimetja z vračilom ni možno, ker še ni "
+"knjižen."
 
 msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account."
-msgstr ""
+msgstr "Postavka tipa \"postavka\" mora imeti konto."
 
 msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice."
-msgstr ""
+msgstr "Postavka, ki ni tipa \"postavka\", mora imeti račun."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
 "cancelled."
 msgstr ""
+"Računu \"%s\", ki je bodisi knjižen ali plačan bodisi preklican, ni možno "
+"dodajati postavk."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
@@ -44,48 +56,65 @@ msgid ""
 "company \"%(invoice_line_company)s because account \"%(account)s has company"
 " \"%(account_company)s\"."
 msgstr ""
+"Pri računu \"%(invoice)s\" podjetja \"%(invoice_line_company)s\" ni možno "
+"izdelati postavke \"%(line)s\", ker je konto \"%(account)s\" podjetja "
+"\"%(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 ""
+"Pri računu \"%(invoice)s\" ni možno izdelati postavke \"%(line)s\", ker "
+"račun uporablja isti konto (%(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 ""
+"Postavke \"%(line)s\" pri računu \"%(invoice)s\", ki je knjižen ali plačan, "
+"ni možno popravljati."
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
 "On invoice \"%s\" you can not create a partial payment with an amount "
 "greater than the amount to pay."
 msgstr ""
+"Pri računu \"%s\" ni možno izdelati delnega plačila z zneskom, ki je večji "
+"od zneska za plačilo."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
-msgstr ""
+msgstr "Dan v mesecu je lahko med 1 in 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 ""
+"V postavki \"%(line)s\" plačilnega roka \"%(term)s\" vrednosti odstotka in "
+"delitelja nista skladna."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
-msgstr ""
+msgstr "Neveljavna postavka \"%(line)s\" v plačilnem roku \"%(term)s\"."
+
+msgctxt "error:account.invoice.payment_term:"
+msgid "Last line of payment term \"%s\" must be of type remainder."
+msgstr "Zadnja postavka plačilnega roka \"%s\" mora biti tipa \"preostanek\"."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Missing remainder line in payment term \"%s\"."
-msgstr ""
+msgstr "V plačilnem roku \"%s\" manjka postavka preostanka."
 
 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 ""
+"Postavke \"%(line)s\" pri računu \"%(invoice)s\" ni možno dodati, ker je "
+"bodisi knjižen ali plačan bodisi preklican."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -93,6 +122,9 @@ msgid ""
 "\"%(invoice_company)s\" using account \"%(account)s\" from company "
 "\"%(account_company)s\"."
 msgstr ""
+"Računa \"%(invoice)s\" pri podjetju \"%(invoice_company)s\" ni možno "
+"izdelati z uporabo konta \"%(account)s\" iz podjetja "
+"\"%(account_company)s\"."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -100,6 +132,9 @@ msgid ""
 "\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
 "\"%(base_code_company)s\"."
 msgstr ""
+"Računa \"%(invoice)s\" pri podjetju \"%(invoice_company)s\" ni možno "
+"izdelati z uporabo šifre davčne osnove \"%(base_code)s\" iz podjetja "
+"\"%(base_code_company)s\"."
 
 msgctxt "error:account.invoice.tax:"
 msgid ""
@@ -107,154 +142,187 @@ msgid ""
 "\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
 "\"%(tax_code_company)s\"."
 msgstr ""
+"Računa \"%(invoice)s\" pri podjetju \"%(invoice_company)s\" ni možno "
+"izdelati z uporabo davčne šifre \"%(tax_code)s\" iz podjetja "
+"\"%(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 ""
+"Davka \"%(tax)s\" pri računu \"%(invoice)s\" ni možno popravljati, ker je "
+"račun bodisi knjižen bodisi plačan."
+
+msgctxt "error:account.invoice:"
+msgid "Customer invoice/credit note \"%s\" can not be cancelled once posted."
+msgstr "Izdanega računa/dobropisa \"%s\" po knjiženju ni možno preklicati."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
 "invoice and in line \"%(line)s\"."
 msgstr ""
+"Račun \"%(invoice)s\" uporablja isti konto \"%(account)s\" za račun in za "
+"postavko \"%(line)s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%s\" has taxes defined but not on invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
+"Račun \"%s\" ima definiran davek, vendar ga ni na postavkah.\n"
+"Račun znova preračunajte."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
+"Račun \"%s\" ima na postavkah davke, ki ne obstajajo na računu.\n"
+"Račun znova preračunajte. "
 
 msgctxt "error:account.invoice:"
 msgid "Invoice \"%s\" must be cancelled before deletion."
-msgstr ""
+msgstr "Za brisanje računa \"%s\" mora biti ta najprej preklican."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
+"Davčne osnove na računu \"%s\" se na postavkah razlikujejo. \n"
+"Račun znova preračunajte."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "The credit account on journal \"%(journal)s\" is the same as invoice "
 "\"%(invoice)s\"'s account."
 msgstr ""
+"Kreditni konto v dnevniku \"%(journal)s\" je enak kontu računa "
+"\"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
 msgid "The credit account on journal %s\" is missing."
-msgstr ""
+msgstr "V dnevniku \"%s\" manjka kreditni konto."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "The debit account on journal \"%(journal)s\" is the same as invoice "
 "\"%(invoice)s\"'s account."
 msgstr ""
+"Debetni konto v dnevniku \"%(journal)s\" je enak kontu na računu "
+"\"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
 msgid "The debit account on journal \"%s\" is missing."
-msgstr ""
+msgstr "V dnevniku \"%s\" manjka debetni konto."
 
 msgctxt "error:account.invoice:"
 msgid "The numbered invoice \"%s\" can not be deleted."
-msgstr ""
+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 ""
+"Za račun \"%(invoice)s\" v obdobju/poslovnem letu \"%(period)s\" ne obstaja "
+"štetje računov."
 
 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 ""
+"Računa \"%(invoice)s\" v podjetju \"%(invoice_company)s ni možno izdelati, "
+"ker je podjetje (%(account_company)s) na kontu \"%(account)s drugačno. "
 
 msgctxt "error:account.invoice:"
 msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
 msgstr ""
+"Računa \"%s\" ni možno popravljati, ker je bodisi knjiženo ali plačano "
+"bodisi preklicano."
 
 msgctxt "error:account.period:"
 msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
-msgstr ""
+msgstr "Obdobji \"%(first)s\" in \"%(second)s\" imata isto štetje računov."
 
 msgctxt "error:account.period:"
 msgid ""
 "Period \"%(period)s\" must have the same company as its fiscal year "
 "(%(fiscalyear)s)."
 msgstr ""
+"Obdobje \"%(period)s\" mora imeti isto podjetje kot pri poslovnem letu "
+"(%(fiscalyear)s)."
 
 msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence in period \"%s\" because there is "
 "already an invoice posted in this period"
 msgstr ""
+"Štetja računov v obdobju \"%s\" ni možno popravljati, ker je račun že "
+"knjižen v tem obdobju."
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr "Credit inkoopnota reeks"
+msgstr "Štetje prejetih dobropisov"
 
 msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
-msgstr "Inkoopfactuurreeks"
+msgstr "Štetje prejetih računov"
 
 msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Credit verkoopnota reeks"
+msgstr "Štetje izdanih dobropisov"
 
 msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr "Verkoopfactuur reeks"
+msgstr "Štetje izdanih računov"
 
 msgctxt "field:account.invoice,account:"
 msgid "Account"
-msgstr "Rekening"
+msgstr "Konto"
 
 msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
-msgstr "Boekingsdatum"
+msgstr "Datum knjiženja"
 
 msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
-msgstr "Te betalen bedrag"
+msgstr "Znesek za plačat"
 
 msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
-msgstr "Vandaag te betalen bedrag"
+msgstr "Trenutni znesek za plačat"
 
 msgctxt "field:account.invoice,cancel_move:"
 msgid "Cancel Move"
-msgstr ""
+msgstr "Preklic"
 
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
-msgstr "Opmerking"
+msgstr "Opomba"
 
 msgctxt "field:account.invoice,company:"
 msgid "Company"
-msgstr "Bedrijf"
+msgstr "Podjetje"
 
 msgctxt "field:account.invoice,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Ustvarjeno"
 
 msgctxt "field:account.invoice,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Ustvaril"
 
 msgctxt "field:account.invoice,currency:"
 msgid "Currency"
@@ -262,179 +330,183 @@ msgstr "Valuta"
 
 msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
-msgstr ""
+msgstr "Datum valute"
 
 msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
-msgstr "Valuta decimalen"
+msgstr "Decimalke"
 
 msgctxt "field:account.invoice,description:"
 msgid "Description"
-msgstr "Omschrijving"
+msgstr "Opis"
 
 msgctxt "field:account.invoice,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
-msgstr "Factuuradres"
+msgstr "Naslov plačnika"
 
 msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
-msgstr "Factuurdatum"
+msgstr "Datum računa"
 
 msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
-msgstr ""
+msgstr "Izpis računa"
 
 msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
-msgstr "Opmaak factuuroverzicht"
+msgstr "Oblika izpisa računa"
 
 msgctxt "field:account.invoice,journal:"
 msgid "Journal"
-msgstr "Dagboek"
+msgstr "Dnevnik"
 
 msgctxt "field:account.invoice,lines:"
 msgid "Lines"
-msgstr "Regels"
+msgstr "Postavke"
 
 msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
-msgstr "Te betalen boekingen"
+msgstr "Postavke za plačat"
 
 msgctxt "field:account.invoice,move:"
 msgid "Move"
-msgstr "Boeking"
+msgstr "Prenos"
 
 msgctxt "field:account.invoice,number:"
 msgid "Number"
-msgstr "Nummer"
+msgstr "Številka"
+
+msgctxt "field:account.invoice,origins:"
+msgid "Origins"
+msgstr "Porekla"
 
 msgctxt "field:account.invoice,party:"
 msgid "Party"
-msgstr "Relatie"
+msgstr "Stranka"
 
 msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
-msgstr "Taal relatie"
+msgstr "Jezik stranke"
 
 msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
-msgstr "Betalingen"
+msgstr "Postavke plačila"
 
 msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
-msgstr "Betalingstermijn"
+msgstr "Plačilni rok"
 
 msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
-msgstr "Naam"
+msgstr "Ime"
 
 msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
-msgstr "Afgeletterd"
+msgstr "Usklajeno"
 
 msgctxt "field:account.invoice,reference:"
 msgid "Reference"
-msgstr "Referentie"
+msgstr "Sklic"
 
 msgctxt "field:account.invoice,state:"
 msgid "State"
-msgstr "Status"
+msgstr "Stanje"
 
 msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
-msgstr "Belasting"
+msgstr "Davek"
 
 msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
-msgstr "Belastingregels"
+msgstr "Davčne postavke"
 
 msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
-msgstr "Totaal"
+msgstr "Skupaj"
 
 msgctxt "field:account.invoice,type:"
 msgid "Type"
-msgstr "Type"
+msgstr "Tip"
 
 msgctxt "field:account.invoice,type_name:"
 msgid "Type"
-msgstr "Type"
+msgstr "Tip"
 
 msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
-msgstr "Onbelast"
+msgstr "Neobdavčeno"
 
 msgctxt "field:account.invoice,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Zapisano"
 
 msgctxt "field:account.invoice,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Zapisal"
 
 msgctxt "field:account.invoice-account.move.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Ustvarjeno"
 
 msgctxt "field:account.invoice-account.move.line,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Ustvaril"
 
 msgctxt "field:account.invoice-account.move.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
-msgstr "Betalingen"
+msgstr "Postavka plačila"
 
 msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
-msgstr "Naam"
+msgstr "Ime"
 
 msgctxt "field:account.invoice-account.move.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Zapisano"
 
 msgctxt "field:account.invoice-account.move.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Zapisal"
 
 msgctxt "field:account.invoice.credit.start,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
-msgstr ""
+msgstr "Z vračilom"
 
 msgctxt "field:account.invoice.line,account:"
 msgid "Account"
-msgstr "Rekening"
+msgstr "Konto"
 
 msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
-msgstr "Bedrag"
+msgstr "Znesek"
 
 msgctxt "field:account.invoice.line,company:"
 msgid "Company"
-msgstr "Bedrijf"
+msgstr "Podjetje"
 
 msgctxt "field:account.invoice.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Ustvarjeno"
 
 msgctxt "field:account.invoice.line,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Ustvaril"
 
 msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
@@ -442,275 +514,263 @@ msgstr "Valuta"
 
 msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Valuta decimalen"
+msgstr "Decimalke"
 
 msgctxt "field:account.invoice.line,description:"
 msgid "Description"
-msgstr "Omschrijving"
+msgstr "Opis"
 
 msgctxt "field:account.invoice.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
-msgstr "Belastingen factuur"
+msgstr "Davki računa"
 
 msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
-msgstr "Factuurtype"
+msgstr "Vrsta računa"
 
 msgctxt "field:account.invoice.line,note:"
 msgid "Note"
-msgstr "Aantekening"
+msgstr "Opomba"
 
 msgctxt "field:account.invoice.line,origin:"
 msgid "Origin"
-msgstr ""
+msgstr "Poreklo"
 
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
-msgstr "Relatie"
+msgstr "Stranka"
 
 msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
-msgstr "Taal relatie"
+msgstr "Jezik stranke"
 
 msgctxt "field:account.invoice.line,product:"
 msgid "Product"
-msgstr "Product"
+msgstr "Izdelek"
 
 msgctxt "field:account.invoice.line,product_uom_category:"
 msgid "Product Uom Category"
-msgstr ""
+msgstr "Katerogija ME izdelka"
 
 msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
-msgstr "Hoeveelheid"
+msgstr "Količina"
 
 msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
-msgstr "Naam"
+msgstr "Ime"
 
 msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
-msgstr "Reeks"
+msgstr "Zap.št."
 
 msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
-msgstr "Belastingen"
+msgstr "Davki"
 
 msgctxt "field:account.invoice.line,type:"
 msgid "Type"
-msgstr "Type"
+msgstr "Tip"
 
 msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
-msgstr "Eenheid"
+msgstr "Enota"
 
 msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
-msgstr "Decimalen eenheid"
+msgstr "Decimalke"
 
 msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
-msgstr "Eenheidsprijs"
+msgstr "Cena"
 
 msgctxt "field:account.invoice.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Zapisano"
 
 msgctxt "field:account.invoice.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Zapisal"
 
 msgctxt "field:account.invoice.line-account.tax,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Ustvarjeno"
 
 msgctxt "field:account.invoice.line-account.tax,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Ustvaril"
 
 msgctxt "field:account.invoice.line-account.tax,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
-msgstr "Factuurregel"
+msgstr "Postavka računa"
 
 msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
-msgstr "Naam"
+msgstr "Ime"
 
 msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
-msgstr "Belasting"
+msgstr "Davek"
 
 msgctxt "field:account.invoice.line-account.tax,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Zapisano"
 
 msgctxt "field:account.invoice.line-account.tax,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Zapisal"
 
 msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr ""
+msgstr "Konto odpisa"
 
 msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
-msgstr ""
+msgstr "Znesek plačila"
 
 msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr ""
+msgstr "Znesek odpisa"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
-msgstr "Bedrijf"
+msgstr "Podjetje"
 
 msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
-msgstr ""
+msgstr "Valuta plačila"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr ""
+msgstr "Decimalke plačila"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr ""
+msgstr "Decimalke odpisa"
 
 msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr ""
+msgstr "Valuta odpisa"
 
 msgctxt "field:account.invoice.pay.ask,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr ""
+msgstr "Dnevnika odpisa"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
-msgstr "Regels"
+msgstr "Postavke"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
-msgstr "Te betalen boekingen"
+msgstr "Postavke za plačat"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
-msgstr "Betalingen"
+msgstr "Postavke plačila"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
-msgstr "Type"
+msgstr "Tip"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
-msgstr "Bedrag"
+msgstr "Znesek"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
 msgstr "Valuta"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr "Valuta decimalen"
+msgstr "Decimalke"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
-msgstr "Vervaldatum"
+msgstr "Datum"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
-msgstr "Specificatie"
+msgstr "Opis"
 
 msgctxt "field:account.invoice.pay.start,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
-msgstr "Dagboek"
+msgstr "Dnevnik"
 
 msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
-msgstr "Actief"
+msgstr "Aktivno"
 
 msgctxt "field:account.invoice.payment_term,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Ustvarjeno"
 
 msgctxt "field:account.invoice.payment_term,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Ustvaril"
 
 msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
-msgstr "Omschrijving"
+msgstr "Opis"
 
 msgctxt "field:account.invoice.payment_term,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
-msgstr "Regels"
+msgstr "Postavke"
 
 msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
-msgstr "Betalingstermijn"
+msgstr "Plačilni rok"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
-msgstr "Naam"
+msgstr "Ime"
 
 msgctxt "field:account.invoice.payment_term,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Zapisano"
 
 msgctxt "field:account.invoice.payment_term,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Zapisal"
 
 msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
-msgstr "Bedrag"
+msgstr "Znesek"
 
 msgctxt "field:account.invoice.payment_term.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Ustvarjeno"
 
 msgctxt "field:account.invoice.payment_term.line,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Ustvaril"
 
 msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
@@ -718,415 +778,403 @@ msgstr "Valuta"
 
 msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Valuta decimalen"
+msgstr "Decimalke"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
-msgstr ""
+msgstr "Dan v mesecu"
 
 msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
-msgstr "Aantal dagen"
+msgstr "Število dni"
 
 msgctxt "field:account.invoice.payment_term.line,divisor:"
 msgid "Divisor"
-msgstr ""
+msgstr "Delitelj"
 
 msgctxt "field:account.invoice.payment_term.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term.line,month:"
 msgid "Month"
-msgstr "Maand"
+msgstr "mesec"
 
 msgctxt "field:account.invoice.payment_term.line,months:"
 msgid "Number of Months"
-msgstr ""
+msgstr "Število mesecev"
 
 msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
-msgstr "Betalingstermijn"
+msgstr "Plačilni rok"
 
 msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
-msgstr "Percentage"
+msgstr "Odstotek"
 
 msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
-msgstr "Naam"
+msgstr "Ime"
 
 msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
-msgstr "Reeks"
+msgstr "Zap.št."
 
 msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
-msgstr "Type"
+msgstr "Tip"
 
 msgctxt "field:account.invoice.payment_term.line,weekday:"
 msgid "Day of Week"
-msgstr ""
+msgstr "Dan v tednu"
 
 msgctxt "field:account.invoice.payment_term.line,weeks:"
 msgid "Number of Weeks"
-msgstr ""
+msgstr "Število tednov"
 
 msgctxt "field:account.invoice.payment_term.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Zapisano"
 
 msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Zapisal"
 
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
-msgstr "Rekening"
+msgstr "Konto"
 
 msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
-msgstr "Bedrag"
+msgstr "Znesek"
 
 msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
-msgstr "Basis"
+msgstr "Osnova"
 
 msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
-msgstr "Basiscode"
+msgstr "Šifra osnove"
 
 msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
-msgstr "Basisteken"
+msgstr "Predznak osnove"
 
 msgctxt "field:account.invoice.tax,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Ustvarjeno"
 
 msgctxt "field:account.invoice.tax,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Ustvaril"
 
 msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
-msgstr "Omschrijving"
+msgstr "Opis"
 
 msgctxt "field:account.invoice.tax,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
-msgstr "Handmatig"
+msgstr "Ročno"
 
 msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
-msgstr "Naam"
+msgstr "Ime"
 
 msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
-msgstr "Reeks"
+msgstr "Zap.št."
 
 msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
-msgstr "Reeksnummer"
+msgstr "Zap.št."
 
 msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
-msgstr "Belasting"
+msgstr "Davek"
 
 msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
-msgstr "Belastingcode"
+msgstr "Davčna šifra"
 
 msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
-msgstr "Teken belasting"
+msgstr "Predznak davka"
 
 msgctxt "field:account.invoice.tax,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Zapisano"
 
 msgctxt "field:account.invoice.tax,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Zapisal"
 
 msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr "Credit inkoopnota reeks"
+msgstr "Štetje prejetih dobropisov"
 
 msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
-msgstr "Inkoopfactuurreeks"
+msgstr "Štetje prejetih računov"
 
 msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Credit verkoopnota reeks"
+msgstr "Štetje izdanih dobropisov"
 
 msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr "Verkoopfactuur reeks"
+msgstr "Štetje izdanih računov"
 
 msgctxt "field:party.address,invoice:"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr ""
+msgstr "Plačilni rok kupca"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
-msgstr "Betalingstermijn crediteur"
+msgstr "Plačilni rok dobavitelja"
 
 msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr ""
+msgstr "Če resnično, bo(do) trenutni račun(i) plačan(i)."
 
 msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
-msgstr "Gebruiken voor oplopend sorteren"
+msgstr "Za naraščajoče razvrščanje postavk"
 
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
-msgstr "Factuurbetalingen"
+msgstr "Račun - Postavka plačila"
 
 msgctxt "model:account.invoice.credit.start,name:"
-msgid "Credit Invoice Init"
-msgstr ""
+msgid "Credit Invoice"
+msgstr "Dobropis računa"
 
 msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
-msgstr "Factuurregel"
+msgstr "Postavka računa"
 
 msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
-msgstr "Factuurregel - belasting"
+msgstr "Postavka računa - Davek"
 
 msgctxt "model:account.invoice.pay.ask,name:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Plačilo računa"
 
 msgctxt "model:account.invoice.pay.start,name:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Plačilo računa"
 
 msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
-msgstr "Betalingstermijn"
+msgstr "Plačilni rok"
 
 msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
-msgstr "Betalingstermijn regel"
+msgstr "Postavka plačilnega roka"
 
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr ""
+msgstr "Opozorilo pri izpisu računa"
 
 msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
-msgstr "Belasting factuur"
+msgstr "Davek računa"
 
-#, fuzzy
 msgctxt "model:ir.action,name:act_invoice_form"
 msgid "Invoices"
-msgstr "Alle facturen"
+msgstr "Računi"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
 msgid "Invoices"
-msgstr "Verkoopfacturen"
+msgstr "Računi"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
-msgstr "Credit inkoopnota's"
+msgstr "Prejeti dobropisi"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
-msgstr "Inkoopfacturen"
+msgstr "Prejeti računi"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
-msgstr "Credit verkoopnota's"
+msgstr "Dobropisi"
 
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
-msgstr "Verkoopfacturen"
+msgstr "Računi"
 
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
-msgstr "Betalingstermijnen"
+msgstr "Plačilni roki"
 
-#, fuzzy
 msgctxt "model:ir.action,name:credit"
 msgid "Credit"
-msgstr "Credit"
+msgstr "Kredit"
 
-#, fuzzy
 msgctxt "model:ir.action,name:print"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Plačilo računa"
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
 msgid "All"
-msgstr ""
+msgstr "Vse"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
 msgid "Draft"
-msgstr "Concept"
+msgstr "Osnutki"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
 msgid "Posted"
-msgstr "Geboekt"
+msgstr "Knjiženi"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
 msgid "Validated"
-msgstr "Goedgekeurd"
+msgstr "Odobreni"
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
 msgid "All"
-msgstr ""
+msgstr "Vse"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
 msgid "Draft"
-msgstr "Concept"
+msgstr "Osnutki"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
 msgid "Posted"
-msgstr "Geboekt"
+msgstr "Knjiženi"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
 msgid "Validated"
-msgstr "Goedgekeurd"
+msgstr "Odobreni"
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
 msgid "All"
-msgstr ""
+msgstr "Vse"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
 msgid "Draft"
-msgstr "Concept"
+msgstr "Osnutki"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
 msgid "Posted"
-msgstr "Geboekt"
+msgstr "Knjiženi"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
 msgid "Validated"
-msgstr "Goedgekeurd"
+msgstr "Odobreni"
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
 msgid "All"
-msgstr ""
+msgstr "Vse"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
 msgid "Draft"
-msgstr "Concept"
+msgstr "Osnutki"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
 msgid "Posted"
-msgstr "Geboekt"
+msgstr "Knjiženi"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
 msgid "Validated"
-msgstr "Goedgekeurd"
+msgstr "Odobreni"
 
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
-msgstr "Credit inkoopnota's"
+msgstr "Prejeti dobropisi"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
-msgstr "Inkoopfacturen"
+msgstr "Prejeti računi"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
-msgstr "Credit verkoopnota's"
+msgstr "Dobropisi"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
-msgstr "Verkoopfacturen"
+msgstr "Računi"
 
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
-msgstr "Facturen"
+msgstr "Računi"
 
 msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
 msgid "Payment Terms"
-msgstr "Betalingstermijnen"
+msgstr "Plačilni roki"
 
 msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
-msgstr "Betalingstermijnen"
+msgstr "Plačilni roki"
+
+msgctxt "odt:account.invoice:"
+msgid ":"
+msgstr ":"
 
 msgctxt "odt:account.invoice:"
 msgid "Amount"
-msgstr "Bedrag"
+msgstr "Znesek"
 
 msgctxt "odt:account.invoice:"
 msgid "Base"
-msgstr "Basisbedrag"
+msgstr "Osnova"
 
 msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
-msgstr "Creditnotanummer:"
+msgstr "Dobropis št.:"
 
 msgctxt "odt:account.invoice:"
 msgid "Date"
-msgstr "Vervaldatum"
+msgstr "Datum"
 
 msgctxt "odt:account.invoice:"
 msgid "Date:"
@@ -1134,182 +1182,187 @@ msgstr "Datum:"
 
 msgctxt "odt:account.invoice:"
 msgid "Description"
-msgstr "Specificatie"
+msgstr "Opis"
 
 msgctxt "odt:account.invoice:"
 msgid "Description:"
-msgstr "Betreft:"
+msgstr "Opis:"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
-msgstr "Concept creditnota"
+msgstr "Osnutek dobropisa"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
-msgstr "Concept verkoopfactuur"
+msgstr "Osnutek računa"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
-msgstr "Concept credit inkoopnota"
+msgstr "Osnutek dobropisa dobavitelja"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
-msgstr "Concept inkoopfactuur"
+msgstr "Osnutek računa dobavitelja"
 
 msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
-msgstr "E-mail:"
+msgstr "E-pošta:"
 
 msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
-msgstr "Factuur:"
+msgstr "Račun št."
 
 msgctxt "odt:account.invoice:"
 msgid "Payment Term"
-msgstr "Betalingstermijn"
+msgstr "Plačilni rok"
 
 msgctxt "odt:account.invoice:"
 msgid "Phone:"
-msgstr "Telefoon:"
+msgstr "Telefon:"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
-msgstr "Pro forma creditnota"
+msgstr "Formalen dobropis"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
-msgstr "Pro forma verkoopfactuur"
+msgstr "Predračun"
 
 msgctxt "odt:account.invoice:"
 msgid "Quantity"
-msgstr "Hoeveelheid"
+msgstr "Količina"
+
+msgctxt "odt:account.invoice:"
+msgid "Reference"
+msgstr "Sklic"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
-msgstr "Credit inkoopnotanummer:"
+msgstr "Prejeti dobropis št.:"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
-msgstr "Inkoopfactuurnummer:"
+msgstr "Prejeti račun št.:"
 
 msgctxt "odt:account.invoice:"
 msgid "Tax"
-msgstr "Belasting"
+msgstr "Davek"
 
 msgctxt "odt:account.invoice:"
 msgid "Taxes"
-msgstr "Belastingen"
+msgstr "Davki"
 
 msgctxt "odt:account.invoice:"
 msgid "Taxes:"
-msgstr "Belastingen:"
+msgstr "Davki:"
 
 msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
-msgstr "Totaal (excl. belasting):"
+msgstr "Skupaj (brez davkov):"
 
 msgctxt "odt:account.invoice:"
 msgid "Total:"
-msgstr "Totaal:"
+msgstr "Skupaj:"
 
 msgctxt "odt:account.invoice:"
 msgid "Unit Price"
-msgstr "Eenheids- prijs"
+msgstr "Cena"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
-msgstr "BTW-nummer:"
+msgstr "DDV številka:"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT:"
-msgstr "BTW:"
+msgstr "DDV:"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Credit Note"
-msgstr ""
+msgstr "Odobreni prejeti dobropis"
 
 msgctxt "odt:account.invoice:"
 msgid "Validated Supplier Invoice"
-msgstr ""
+msgstr "Odobreni prejeti račun"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
-msgstr "Geannuleerd"
+msgstr "Preklicano"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Draft"
-msgstr "Concept"
+msgstr "Osnutek"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Paid"
-msgstr "Betaald"
+msgstr "Plačano"
 
-#, fuzzy
 msgctxt "selection:account.invoice,state:"
 msgid "Posted"
-msgstr "Geboekt"
+msgstr "Knjiženo"
 
-#, fuzzy
 msgctxt "selection:account.invoice,state:"
 msgid "Validated"
-msgstr "Goedgekeurd"
+msgstr "Odobreno"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
-msgstr "Credit verkoopnota"
+msgstr "Dobropis"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
-msgstr "Credit inkoopnota"
+msgstr "Prejeti dobropis"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
-msgstr "Inkoopfactuur"
+msgstr "Prejeti račun"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid ""
+msgstr ""
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
-msgstr "Credit verkoopnota"
+msgstr "Dobropis"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
-msgstr "Credit inkoopnota"
+msgstr "Prejeti dobropis"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
-msgstr "Inkoopfactuur"
+msgstr "Prejeti račun"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
-msgstr "Opmerking"
+msgstr "Opomba"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
-msgstr "Regel"
+msgstr "Postavka"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
-msgstr "Subtotaal"
+msgstr "Vmesna vsota"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
-msgstr "Titel"
+msgstr "Napis"
 
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
-msgstr ""
+msgstr "Delno plačilo"
 
-#, fuzzy
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
-msgstr "Afschrijven"
+msgstr "Odpis"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid ""
@@ -1317,68 +1370,67 @@ msgstr ""
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "April"
-msgstr ""
+msgstr "April"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "August"
-msgstr ""
+msgstr "Avgust"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "December"
-msgstr ""
+msgstr "December"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "February"
-msgstr ""
+msgstr "Februar"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "January"
-msgstr ""
+msgstr "Januar"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "July"
-msgstr ""
+msgstr "Julij"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "June"
-msgstr ""
+msgstr "Junij"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "March"
-msgstr ""
+msgstr "Marec"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "May"
-msgstr ""
+msgstr "Maj"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "November"
-msgstr ""
+msgstr "November"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "October"
-msgstr ""
+msgstr "Oktober"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "September"
-msgstr ""
+msgstr "September"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Fixed"
-msgstr "Vast"
+msgstr "Fiksna cena"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Remainder"
-msgstr ""
+msgstr "Odstotek preostanka"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Total"
-msgstr ""
+msgstr "Odstotek zneska"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Remainder"
-msgstr ""
+msgstr "Preostanek"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
@@ -1386,220 +1438,204 @@ msgstr ""
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Friday"
-msgstr ""
+msgstr "Petek"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Monday"
-msgstr ""
+msgstr "Ponedeljek"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Saturday"
-msgstr ""
+msgstr "Sobota"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Sunday"
-msgstr ""
+msgstr "Nedelja"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Thursday"
-msgstr ""
+msgstr "Četrtek"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Tuesday"
-msgstr ""
+msgstr "Torek"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
-msgstr ""
+msgstr "Sreda"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr ""
+msgstr "Ali res želite izvesti dobropis teh računov?"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr ""
+msgstr "Dobropis računa"
 
 msgctxt "view:account.invoice.line:"
 msgid "General"
-msgstr "Algemeen"
+msgstr "Splošno"
 
 msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
-msgstr "Factuurregel"
+msgstr "Postavka računa"
 
 msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
-msgstr "Factuurregels"
+msgstr "Postavke računa"
 
 msgctxt "view:account.invoice.line:"
 msgid "Notes"
-msgstr "Aantekeningen"
+msgstr "Opombe"
 
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Plačilo računa"
 
 msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Plačilo računa"
 
-#, fuzzy
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Line"
-msgstr "Betalingstermijn regel"
+msgstr "Postavka plačilnega roka"
 
-#, fuzzy
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Lines"
-msgstr "Betalingstermijn regels"
+msgstr "Postavke plačilnih rokov"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
-msgstr "Betalingstermijn"
+msgstr "Plačilni rok"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
-msgstr "Betalingstermijnen"
+msgstr "Plačilni roki"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
-msgstr ""
+msgstr "Izpis računa"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
-msgstr ""
+msgstr "Računi bodo <i>direktno</i> poslani na tiskalnik."
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
-msgstr ""
+msgstr "Za tiskanje je izbranih več kot en račun."
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
-msgstr "Belasting factuur"
+msgstr "Davek računa"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
-msgstr "Belastingen factuur"
+msgstr "Davki računa"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
-msgstr "Belastingcode"
+msgstr "Davčna šifra"
 
-#, fuzzy
 msgctxt "view:account.invoice.tax:"
 msgid "Taxes"
-msgstr "Belastingen"
+msgstr "Davki"
 
 msgctxt "view:account.invoice:"
 msgid "Also known as Pro Forma"
-msgstr ""
+msgstr "Znan tudi kot predračun"
 
 msgctxt "view:account.invoice:"
 msgid "Are you sure to cancel the invoice?"
-msgstr ""
+msgstr "Ali res želite preklicati račun?"
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
-msgstr "Verkoopfactuur"
+msgstr "Račun"
 
 msgctxt "view:account.invoice:"
 msgid "Invoices"
-msgstr "Verkoopfacturen"
+msgstr "Računi"
 
 msgctxt "view:account.invoice:"
 msgid "Other Info"
-msgstr "Aanvullende informatie"
+msgstr "Drugo"
 
 msgctxt "view:account.invoice:"
 msgid "Payment"
-msgstr "Betaling"
+msgstr "Plačilo"
 
-#, fuzzy
 msgctxt "view:account.invoice:"
 msgid "Validate"
-msgstr "Goedkeuren"
+msgstr "Odobritev"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
-msgstr "_Annuleren"
+msgstr "_Preklic"
 
 msgctxt "view:account.invoice:"
 msgid "_Draft"
-msgstr "_Concept"
+msgstr "_Osnutek"
 
 msgctxt "view:account.invoice:"
 msgid "_Pay"
-msgstr "_Betalen"
+msgstr "P_lačilo"
 
 msgctxt "view:account.invoice:"
 msgid "_Post"
-msgstr ""
+msgstr "_Knjižba"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
-msgstr "Bedrag alternatieve valuta"
+msgstr "Znesek v drugi valuti"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Credit"
-msgstr "Credit"
+msgstr "Kredit"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Debit"
-msgstr "Debit"
+msgstr "Debet"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Lines to Pay"
-msgstr "Te betalen boekingen"
+msgstr "Postavke za plačat"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Payment Lines"
-msgstr "Betalingen"
+msgstr "Postavke plačila"
 
 msgctxt "view:party.party:"
 msgid "Payment Terms"
-msgstr "Betalingstermijnen"
+msgstr "Plačilni roki"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
-msgstr "Credit"
+msgstr "Kredit"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
-msgstr "Annuleren"
+msgstr "Prekliči"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
-msgstr "Annuleren"
+msgstr "Prekliči"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
-msgstr "Oké"
+msgstr "V redu"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
-msgstr "Oké"
+msgstr "V redu"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
-msgstr "Annuleren"
+msgstr "Prekliči"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
-msgstr "Annuleren"
+msgstr "Prekliči"
 
 msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
-msgstr ""
+msgstr "Natisni"
diff --git a/payment_term.py b/payment_term.py
index 9b16676..a25c1c3 100644
--- a/payment_term.py
+++ b/payment_term.py
@@ -3,7 +3,7 @@
 from decimal import Decimal
 from dateutil.relativedelta import relativedelta
 from trytond.model import ModelView, ModelSQL, fields
-from trytond.backend import TableHandler
+from trytond import backend
 from trytond.pyson import Eval
 from trytond.transaction import Transaction
 from trytond.pool import Pool
@@ -30,8 +30,20 @@ class PaymentTerm(ModelSQL, ModelView):
                     '"%(term)s".'),
                 'missing_remainder': ('Missing remainder line in payment term '
                     '"%s".'),
+                'last_remainder': ('Last line of payment term "%s" must be of '
+                    'type remainder.'),
                 })
 
+    @classmethod
+    def validate(cls, terms):
+        super(PaymentTerm, cls).validate(terms)
+        for term in terms:
+            term.check_remainder()
+
+    def check_remainder(self):
+        if not self.lines or not self.lines[-1].type == 'remainder':
+            self.raise_user_error('last_remainder', self.rec_name)
+
     @staticmethod
     def default_active():
         return True
@@ -79,8 +91,6 @@ class PaymentTermLine(ModelSQL, ModelView):
     'Payment Term Line'
     __name__ = 'account.invoice.payment_term.line'
     sequence = fields.Integer('Sequence',
-        order_field='(%(table)s.sequence IS NULL) %(order)s, '
-        '%(table)s.sequence %(order)s',
         help='Use to order lines in ascending order')
     payment = fields.Many2One('account.invoice.payment_term', 'Payment Term',
             required=True, ondelete="CASCADE")
@@ -159,20 +169,25 @@ class PaymentTermLine(ModelSQL, ModelView):
 
     @classmethod
     def __register__(cls, module_name):
+        TableHandler = backend.get('TableHandler')
+        sql_table = cls.__table__()
         super(PaymentTermLine, cls).__register__(module_name)
         cursor = Transaction().cursor
         table = TableHandler(cursor, cls, module_name)
 
         # Migration from 1.0 percent change into percentage
         if table.column_exist('percent'):
-            cursor.execute('UPDATE "' + cls._table + '" '
-                'SET percentage = percent * 100')
+            cursor.execute(*sql_table.update(
+                    columns=[sql_table.percentage],
+                    values=[sql_table.percent * 100]))
             table.drop_column('percent', exception=True)
 
         # Migration from 2.2
         if table.column_exist('delay'):
-            cursor.execute('UPDATE "' + cls._table + '" SET day = 31 '
-                "WHERE delay = 'end_month'")
+            cursor.execute(*sql_table.update(
+                    columns=[sql_table.day],
+                    values=[31],
+                    where=sql_table.delay == 'end_month'))
             table.drop_column('delay', exception=True)
             lines = cls.search([])
             for line in lines:
@@ -186,6 +201,11 @@ class PaymentTermLine(ModelSQL, ModelView):
         table.not_null_action('sequence', action='remove')
 
     @staticmethod
+    def order_sequence(tables):
+        table, _ = tables[None]
+        return [table.sequence == None, table.sequence]
+
+    @staticmethod
     def default_currency_digits():
         return 2
 
diff --git a/setup.py b/setup.py
index 95ef2dc..1c04f14 100644
--- a/setup.py
+++ b/setup.py
@@ -21,7 +21,7 @@ major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
 major_version = int(major_version)
 minor_version = int(minor_version)
 
-requires = ['python-dateutil']
+requires = ['python-dateutil', 'python-sql']
 for dep in info.get('depends', []):
     if not re.match(r'(ir|res|webdav)(\W|$)', dep):
         requires.append('trytond_%s >= %s.%s, < %s.%s' %
@@ -63,6 +63,7 @@ setup(name='trytond_account_invoice',
         'Natural Language :: French',
         'Natural Language :: German',
         'Natural Language :: Russian',
+        'Natural Language :: Slovenian',
         'Natural Language :: Spanish',
         'Operating System :: OS Independent',
         'Programming Language :: Python :: 2.6',
diff --git a/tests/__init__.py b/tests/__init__.py
index 91fc30b..bea5dec 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -2,3 +2,5 @@
 #this repository contains the full copyright notices and license terms.
 
 from .test_account_invoice import suite
+
+__all__ = ['suite']
diff --git a/tests/scenario_invoice.rst b/tests/scenario_invoice.rst
index 92a2261..62d15cf 100644
--- a/tests/scenario_invoice.rst
+++ b/tests/scenario_invoice.rst
@@ -81,7 +81,7 @@ Create chart of accounts::
 
     >>> AccountTemplate = Model.get('account.account.template')
     >>> Account = Model.get('account.account')
-    >>> account_template, = AccountTemplate.find([('parent', '=', False)])
+    >>> account_template, = AccountTemplate.find([('parent', '=', None)])
     >>> create_chart = Wizard('account.create_chart')
     >>> create_chart.execute('account')
     >>> create_chart.form.account_template = account_template
@@ -120,7 +120,7 @@ Create tax::
     >>> tax.name = 'Tax'
     >>> tax.description = 'Tax'
     >>> tax.type = 'percentage'
-    >>> tax.percentage = Decimal(10)
+    >>> tax.rate = Decimal('.10')
     >>> tax.invoice_account = account_tax
     >>> tax.credit_note_account = account_tax
     >>> invoice_base_code = TaxCode(name='invoice base')
@@ -266,3 +266,14 @@ Credit invoice with refund::
     >>> credit_note_tax_code.reload()
     >>> credit_note_tax_code.sum == Decimal(20)
     True
+
+Create empty invoice::
+
+    >>> invoice = Invoice()
+    >>> invoice.party = party
+    >>> invoice.payment_term = payment_term
+    >>> invoice.save()
+    >>> Invoice.post([invoice.id], config.context)
+    >>> invoice.reload()
+    >>> invoice.state
+    u'paid'
diff --git a/tests/scenario_invoice_supplier.rst b/tests/scenario_invoice_supplier.rst
index 5e08afe..95ab64f 100644
--- a/tests/scenario_invoice_supplier.rst
+++ b/tests/scenario_invoice_supplier.rst
@@ -81,7 +81,7 @@ Create chart of accounts::
 
     >>> AccountTemplate = Model.get('account.account.template')
     >>> Account = Model.get('account.account')
-    >>> account_template, = AccountTemplate.find([('parent', '=', False)])
+    >>> account_template, = AccountTemplate.find([('parent', '=', None)])
     >>> create_chart = Wizard('account.create_chart')
     >>> create_chart.execute('account')
     >>> create_chart.form.account_template = account_template
@@ -120,7 +120,7 @@ Create tax::
     >>> tax.name = 'Tax'
     >>> tax.description = 'Tax'
     >>> tax.type = 'percentage'
-    >>> tax.percentage = Decimal(10)
+    >>> tax.rate = Decimal('.10')
     >>> tax.invoice_account = account_tax
     >>> tax.credit_note_account = account_tax
     >>> invoice_base_code = TaxCode(name='invoice base')
diff --git a/tryton.cfg b/tryton.cfg
index 2917ed3..c13463f 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=2.8.3
+version=3.0.0
 depends:
     account
     account_product
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 0c49010..8931671 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: 2.8.3
+Version: 3.0.0
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: UNKNOWN
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.8/
+Download-URL: http://downloads.tryton.org/3.0/
 Description: trytond_account_invoice
         =======================
         
@@ -59,6 +59,7 @@ Classifier: Natural Language :: English
 Classifier: Natural Language :: French
 Classifier: Natural Language :: German
 Classifier: Natural Language :: Russian
+Classifier: Natural Language :: Slovenian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.6
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index 6fb34d6..fff6fee 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -29,6 +29,7 @@ locale/es_ES.po
 locale/fr_FR.po
 locale/nl_NL.po
 locale/ru_RU.po
+locale/sl_SI.po
 tests/scenario_invoice.rst
 tests/scenario_invoice_supplier.rst
 trytond_account_invoice.egg-info/PKG-INFO
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index 3f1890c..d92cff8 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -1,8 +1,9 @@
 python-dateutil
-trytond_account >= 2.8, < 2.9
-trytond_account_product >= 2.8, < 2.9
-trytond_company >= 2.8, < 2.9
-trytond_currency >= 2.8, < 2.9
-trytond_party >= 2.8, < 2.9
-trytond_product >= 2.8, < 2.9
-trytond >= 2.8, < 2.9
\ No newline at end of file
+python-sql
+trytond_account >= 3.0, < 3.1
+trytond_account_product >= 3.0, < 3.1
+trytond_company >= 3.0, < 3.1
+trytond_currency >= 3.0, < 3.1
+trytond_party >= 3.0, < 3.1
+trytond_product >= 3.0, < 3.1
+trytond >= 3.0, < 3.1
\ No newline at end of file
commit e9655ab6c44bdd21cb2746b62fbea1aca74ea2cd
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Oct 13 21:19:38 2013 +0200

    Releasing debian version 2.8.3-1.

diff --git a/debian/changelog b/debian/changelog
index 506c73b..95a7a50 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-account-invoice (2.8.3-1) unstable; urgency=low
+
+  * Merging upstream version 2.8.3.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Sun, 13 Oct 2013 20:24:03 +0200
+
 tryton-modules-account-invoice (2.8.2-1) unstable; urgency=low
 
   * Removing pydist-overrides, it is no more needed.
commit b5a582472646956f7c3e4fa84e640a3db69b5d44
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Oct 13 20:22:28 2013 +0200

    Merging upstream version 2.8.3.

diff --git a/CHANGELOG b/CHANGELOG
index 4bdcb18..3e34733 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.8.3 - 2013-10-01
+* Bug fixes (see mercurial logs for details)
+
 Version 2.8.2 - 2013-07-22
 * Bug fixes (see mercurial logs for details)
 
diff --git a/PKG-INFO b/PKG-INFO
index 97c580f..922a3c9 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 2.8.2
+Version: 2.8.3
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/invoice.py b/invoice.py
index cb2bada..f89741c 100644
--- a/invoice.py
+++ b/invoice.py
@@ -2546,10 +2546,11 @@ class PayInvoice(Wizard):
                 self.start.amount, invoice.company.currency)
 
         if invoice.company.currency.is_zero(amount):
-            default['lines'] = [x.id for x in invoice.lines_to_pay]
+            lines = invoice.lines_to_pay
         else:
-            default['lines'], _ = \
-                invoice.get_reconcile_lines_for_amount(amount)
+            lines, _ = invoice.get_reconcile_lines_for_amount(amount)
+        default['lines'] = [x.id for x in lines]
+
         for line_id in default['lines'][:]:
             if line_id not in default['lines_to_pay']:
                 default['lines'].remove(line_id)
diff --git a/tryton.cfg b/tryton.cfg
index 7c4fc7c..2917ed3 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=2.8.2
+version=2.8.3
 depends:
     account
     account_product
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index a01a753..0c49010 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond-account-invoice
-Version: 2.8.2
+Version: 2.8.3
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
commit 498542ba1d71566f6ea3231f07e0669b193144a9
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Aug 6 16:19:36 2013 +0200

    Releasing debian version 2.8.2-1.

diff --git a/debian/changelog b/debian/changelog
index 87659d5..506c73b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-account-invoice (2.8.2-1) unstable; urgency=low
+
+  * Removing pydist-overrides, it is no more needed.
+  * Adapting the rules file to work also with git-buildpackage.
+  * Merging upstream version 2.8.2.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Mon, 05 Aug 2013 21:23:30 +0200
+
 tryton-modules-account-invoice (2.8.1-1) unstable; urgency=low
 
   * Merging upstream version 2.8.1.
commit 5cb081a03d21ea95919c06db26cd1c771c86dd74
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Aug 5 18:49:18 2013 +0200

    Merging upstream version 2.8.2.

diff --git a/CHANGELOG b/CHANGELOG
index 747054f..4bdcb18 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.8.2 - 2013-07-22
+* Bug fixes (see mercurial logs for details)
+
 Version 2.8.1 - 2013-06-09
 * Bug fixes (see mercurial logs for details)
 
diff --git a/PKG-INFO b/PKG-INFO
index 55ebb1f..97c580f 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 2.8.1
+Version: 2.8.2
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/invoice.py b/invoice.py
index cff83d2..cb2bada 100644
--- a/invoice.py
+++ b/invoice.py
@@ -2687,6 +2687,7 @@ class CreditInvoice(Wizard):
                 if invoice.payment_lines:
                     self.raise_user_error('refund_with_payement',
                         (invoice.rec_name,))
+                if invoice.type in ('in_invoice', 'in_credit_note'):
                     self.raise_user_error('refund_supplier')
 
         credit_invoices = Invoice.credit(invoices, refund=refund)
diff --git a/tryton.cfg b/tryton.cfg
index f8a2b42..7c4fc7c 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=2.8.1
+version=2.8.2
 depends:
     account
     account_product
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 56d9ef4..a01a753 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond-account-invoice
-Version: 2.8.1
+Version: 2.8.2
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
commit 4b64e87db164809a14e95aa517a9caecdf35de8f
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Aug 5 18:06:36 2013 +0200

    Adapting the rules file to work also with git-buildpackage.

diff --git a/debian/rules b/debian/rules
index a6a1fb8..30074ad 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,13 +1,24 @@
 #!/usr/bin/make -f
 
 MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
+PACKAGE_NAME := $(shell python setup.py --name)
 
 %:
 	dh ${@} --with python2
 
 override_dh_auto_clean:
 	dh_auto_clean
+
+override_dh_auto_build:
+	mv $(PACKAGE_NAME).egg-info $(PACKAGE_NAME).hen-info
+	mv PKG-INFO PKG-INFO.hen
+	dh_auto_build
+
+override_dh_auto_install:
+	dh_auto_install
 	rm -rf *.egg-info
+	mv $(PACKAGE_NAME).hen-info $(PACKAGE_NAME).egg-info
+	mv PKG-INFO.hen PKG-INFO
 
 override_dh_gencontrol:
 	dh_gencontrol -- -Vversion:major="$(MAJOR)"
commit 7c8066be62694eb85c7bdbef003a0c25e93cdf03
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Aug 5 14:04:41 2013 +0200

    Removing pydist-overrides, it is no more needed.

diff --git a/debian/pydist-overrides b/debian/pydist-overrides
deleted file mode 100644
index 7ce2c04..0000000
--- a/debian/pydist-overrides
+++ /dev/null
@@ -1 +0,0 @@
-python_dateutil python-dateutil
commit 4d551c8437015e83628f6669764247d50cb90e11
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Jun 10 14:15:03 2013 +0200

    Releasing debian version 2.8.1-1.

diff --git a/debian/changelog b/debian/changelog
index f66839b..87659d5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-account-invoice (2.8.1-1) unstable; urgency=low
+
+  * Merging upstream version 2.8.1.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Mon, 10 Jun 2013 13:52:19 +0200
+
 tryton-modules-account-invoice (2.8.0-2) unstable; urgency=low
 
   * Removing needless empty line in rules.
commit fbc9e0430e098566229bb3ab074d13ad1b865408
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Jun 10 13:44:08 2013 +0200

    Merging upstream version 2.8.1.

diff --git a/CHANGELOG b/CHANGELOG
index be9340f..747054f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.8.1 - 2013-06-09
+* Bug fixes (see mercurial logs for details)
+
 Version 2.8.0 - 2013-04-22
 * Bug fixes (see mercurial logs for details)
 * Add origin Reference on Invoice Line
diff --git a/PKG-INFO b/PKG-INFO
index 46e9c4e..55ebb1f 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 2.8.0
+Version: 2.8.1
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/invoice.py b/invoice.py
index 03f4cc6..cff83d2 100644
--- a/invoice.py
+++ b/invoice.py
@@ -907,15 +907,15 @@ class Invoice(Workflow, ModelSQL, ModelView):
         period_id = Period.find(self.company.id,
             date=accounting_date, test_state=test_state)
         period = Period(period_id)
-        sequence_id = period.get_invoice_sequence(self.type).id
-        if not sequence_id:
+        sequence = period.get_invoice_sequence(self.type)
+        if not sequence:
             self.raise_user_error('no_invoice_sequence', {
                     'invoice': self.rec_name,
                     'period': period.rec_name,
                     })
         with Transaction().set_context(
                 date=self.invoice_date or Date.today()):
-            number = Sequence.get_id(sequence_id)
+            number = Sequence.get_id(sequence.id)
             vals = {'number': number}
             if (not self.invoice_date
                     and self.type in ('out_invoice', 'out_credit_note')):
@@ -1038,8 +1038,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
     def check_cancel_move(self):
         if (self.type in ('out_invoice', 'out_credit_note')
                 and self.cancel_move):
-            return False
-        return True
+            raise Exception('Customer invoice/credit note can not be cancelled '
+                'once posted.')
 
     def get_reconcile_lines_for_amount(self, amount, exclude_lines=None):
         '''
diff --git a/tryton.cfg b/tryton.cfg
index 3286a9d..f8a2b42 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=2.8.0
+version=2.8.1
 depends:
     account
     account_product
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 1f37b87..56d9ef4 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond-account-invoice
-Version: 2.8.0
+Version: 2.8.1
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
commit 6d52d9fe12c3b96cfa3aa9a0aba8d2c36a0dfd0e
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri May 31 19:57:22 2013 +0200

    Releasing debian version 2.8.0-2.

diff --git a/debian/changelog b/debian/changelog
index d06678a..f66839b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-account-invoice (2.8.0-2) unstable; urgency=low
+
+  * Removing needless empty line in rules.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Fri, 31 May 2013 17:25:59 +0200
+
 tryton-modules-account-invoice (2.8.0-1) experimental; urgency=low
 
   * Merging upstream version 2.8.0.
commit f7e645bc766684457aa03276270f11d957b43d95
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed May 29 17:19:29 2013 +0200

    Removing needless empty line in rules.

diff --git a/debian/rules b/debian/rules
index 0f63ab4..a6a1fb8 100755
--- a/debian/rules
+++ b/debian/rules
@@ -7,7 +7,6 @@ MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
 
 override_dh_auto_clean:
 	dh_auto_clean
-
 	rm -rf *.egg-info
 
 override_dh_gencontrol:
commit c0884a888b32a16d24f02112b6dd1d39e02a651d
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu May 2 17:27:00 2013 +0200

    Releasing debian version 2.8.0-1.

diff --git a/debian/changelog b/debian/changelog
index c37d7f3..d06678a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-account-invoice (2.8.0-1) experimental; urgency=low
+
+  * Merging upstream version 2.8.0.
+  * Updating copyright.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Thu, 02 May 2013 15:19:28 +0200
+
 tryton-modules-account-invoice (2.6.3-3) experimental; urgency=low
 
   * Removing Daniel from Uploaders. Thanks for your work! (Closes: #704364).
commit 589d5b8c74c8ffcd0c4c2649831a75b46318b145
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu May 2 14:13:10 2013 +0200

    Updating copyright.

diff --git a/debian/copyright b/debian/copyright
index 2edb2f6..5f40e66 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -2,7 +2,7 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 
 Files: *
 Copyright: 2008-2013 Cédric Krier
-           2008-2012 Bertrand Chenal
+           2008-2013 Bertrand Chenal
            2008-2013 B2CK SPRL
            2004-2008 Tiny SPRL
 License: GPL-3+
commit ab40fcf65d33f5aa579c22e8f09f8d743f9b0789
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu May 2 00:34:50 2013 +0200

    Merging upstream version 2.8.0.

diff --git a/CHANGELOG b/CHANGELOG
index 96b5965..be9340f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,11 +1,12 @@
-Version 2.6.3 - 2013-02-12
-* Bug fixes (see mercurial logs for details)
-
-Version 2.6.2 - 2012-12-23
-* Bug fixes (see mercurial logs for details)
-
-Version 2.6.1 - 2012-11-05
-* Bug fixes (see mercurial logs for details)
+Version 2.8.0 - 2013-04-22
+* Bug fixes (see mercurial logs for details)
+* Add origin Reference on Invoice Line
+* Prevent refund of supplier invoice/credit note
+* Make period's invoice sequences optional and use fiscal year's ones if empty
+* Cancel state delete or cancel existing move on Invoice
+* Create draft move for Supplier Invoice when validated
+* Rename Invoice Proforma state into Validated
+* Rename Invoice Opened state into Posted
 
 Version 2.6.0 - 2012-10-22
 * Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index 6e948f6..5d422e0 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,5 +1,5 @@
 Copyright (C) 2008-2013 Cédric Krier.
-Copyright (C) 2008-2012 Bertrand Chenal.
+Copyright (C) 2008-2013 Bertrand Chenal.
 Copyright (C) 2008-2013 B2CK SPRL.
 Copyright (C) 2004-2008 Tiny SPRL.
 
diff --git a/MANIFEST.in b/MANIFEST.in
index 44969c7..2f9d677 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,5 +6,7 @@ include CHANGELOG
 include LICENSE
 include tryton.cfg
 include *.xml
+include view/*.xml
 include *.odt
 include locale/*.po
+include tests/*.rst
diff --git a/PKG-INFO b/PKG-INFO
index c304d45..46e9c4e 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 2.6.3
+Version: 2.8.0
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: UNKNOWN
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.6/
+Download-URL: http://downloads.tryton.org/2.8/
 Description: trytond_account_invoice
         =======================
         
@@ -52,6 +52,7 @@ Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
 Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Catalan
 Classifier: Natural Language :: Czech
 Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
diff --git a/account.py b/account.py
index d6d74c9..f7eaf1f 100644
--- a/account.py
+++ b/account.py
@@ -68,26 +68,33 @@ class FiscalYear:
     @classmethod
     def __setup__(cls):
         super(FiscalYear, cls).__setup__()
-        cls._constraints += [
-            ('check_invoice_sequences', 'different_invoice_sequence'),
-            ]
         cls._error_messages.update({
-            'change_invoice_sequence': 'You can not change ' \
-                    'the invoice sequence if there is already ' \
-                    'an invoice opened in the fiscalyear',
-            'different_invoice_sequence': 'You must have different ' \
-                    'invoice sequences per fiscal year!',
-            })
+                'change_invoice_sequence': 'You can not change '
+                    'invoice sequence in fiscal year "%s" because there are '
+                    'already posted invoices in this fiscal year.',
+                'different_invoice_sequence': 'Fiscal year "%(first)s" and '
+                    '"%(second)s" have the same invoice sequence.',
+                })
+
+    @classmethod
+    def validate(cls, years):
+        super(FiscalYear, cls).validate(years)
+        for year in years:
+            year.check_invoice_sequences()
 
     def check_invoice_sequences(self):
         for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
                 'out_credit_note_sequence', 'in_credit_note_sequence'):
-            if self.search([
-                        (sequence, '=', getattr(self, sequence).id),
-                        ('id', '!=', self.id),
-                        ]):
-                return False
-        return True
+            fiscalyears = self.search([
+                    (sequence, '=', getattr(self, sequence).id),
+                    ('id', '!=', self.id),
+                    ])
+            if fiscalyears:
+                self.raise_user_error('different_invoice_sequences', {
+                        'first': self.rec_name,
+                        'second': fiscalyears[0].rec_name,
+                        })
+
 
     @classmethod
     def write(cls, fiscalyears, vals):
@@ -108,7 +115,8 @@ class FiscalYear:
                                     ('number', '!=', None),
                                     ('type', '=', sequence[:-9]),
                                     ]):
-                            cls.raise_user_error('change_invoice_sequence')
+                            cls.raise_user_error('change_invoice_sequence',
+                                (fiscalyear.rec_name,))
         super(FiscalYear, cls).write(fiscalyears, vals)
 
 
@@ -119,7 +127,6 @@ class Period:
         domain=[('code', '=', 'account.invoice')],
         context={'code': 'account.invoice'},
         states={
-            'required': Eval('type') == 'standard',
             'invisible': Eval('type') != 'standard',
             },
         depends=['type'])
@@ -128,7 +135,6 @@ class Period:
         domain=[('code', '=', 'account.invoice')],
         context={'code': 'account.invoice'},
         states={
-            'required': Eval('type') == 'standard',
             'invisible': Eval('type') != 'standard',
             },
         depends=['type'])
@@ -137,7 +143,6 @@ class Period:
         domain=[('code', '=', 'account.invoice')],
         context={'code': 'account.invoice'},
         states={
-            'required': Eval('type') == 'standard',
             'invisible': Eval('type') != 'standard',
             },
         depends=['type'])
@@ -146,7 +151,6 @@ class Period:
         domain=[('code', '=', 'account.invoice')],
         context={'code': 'account.invoice'},
         states={
-            'required': Eval('type') == 'standard',
             'invisible': Eval('type') != 'standard',
             },
         depends=['type'])
@@ -154,43 +158,57 @@ class Period:
     @classmethod
     def __setup__(cls):
         super(Period, cls).__setup__()
-        cls._constraints += [
-            ('check_invoice_sequences', 'check_invoice_sequences'),
-            ]
         cls._error_messages.update({
-            'change_invoice_sequence': 'You can not change ' \
-                    'the invoice sequence if there is already ' \
-                    'an invoice opened in the period',
-            'check_invoice_sequences': 'You must have different ' \
-                    'invoice sequences per fiscal year and ' \
-                    'in the same company!',
-            })
+                'change_invoice_sequence': 'You can not change the invoice '
+                    'sequence in period "%s" because there is already an '
+                    'invoice posted in this period',
+                'different_invoice_sequence': 'Period "%(first)s" and '
+                    '"%(second)s" have the same invoice sequence.',
+                'different_period_fiscalyear_company': 'Period "%(period)s" '
+                    'must have the same company as its fiscal year '
+                    '(%(fiscalyear)s).'
+                })
+
+    @classmethod
+    def validate(cls, periods):
+        super(Period, cls).validate(periods)
+        for period in periods:
+            period.check_invoice_sequences()
 
     def check_invoice_sequences(self):
         for sequence_name in ('out_invoice_sequence', 'in_invoice_sequence',
                 'out_credit_note_sequence', 'in_credit_note_sequence'):
             sequence = getattr(self, sequence_name)
-            if self.search([
-                        (sequence_name, '=', sequence.id),
-                        ('fiscalyear', '!=', self.fiscalyear.id),
-                        ]):
-                return False
+            if not sequence:
+                continue
+            periods = self.search([
+                    (sequence_name, '=', sequence.id),
+                    ('fiscalyear', '!=', self.fiscalyear.id),
+                    ])
+            if periods:
+                self.raise_user_error('different_invoice_sequence', {
+                        'first': self.rec_name,
+                        'second': periods[0].rec_name,
+                        })
             if (sequence.company
                     and sequence.company != self.fiscalyear.company):
-                return False
-        return True
+                self.raise_user_error('different_period_fiscalyear_company', {
+                        'period': self.rec_name,
+                        'fiscalyear': self.fiscalyear.rec_name,
+                        })
 
     @classmethod
-    def create(cls, vals):
+    def create(cls, vlist):
         FiscalYear = Pool().get('account.fiscalyear')
-        vals = vals.copy()
-        if vals.get('fiscalyear'):
-            fiscalyear = FiscalYear(vals['fiscalyear'])
-            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
-                    'out_credit_note_sequence', 'in_credit_note_sequence'):
-                if not vals.get(sequence):
-                    vals[sequence] = getattr(fiscalyear, sequence).id
-        return super(Period, cls).create(vals)
+        vlist = [v.copy() for v in vlist]
+        for vals in vlist:
+            if vals.get('fiscalyear'):
+                fiscalyear = FiscalYear(vals['fiscalyear'])
+                for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                        'out_credit_note_sequence', 'in_credit_note_sequence'):
+                    if not vals.get(sequence):
+                        vals[sequence] = getattr(fiscalyear, sequence).id
+        return super(Period, cls).create(vlist)
 
     @classmethod
     def write(cls, periods, vals):
@@ -209,9 +227,16 @@ class Period:
                                     ('number', '!=', None),
                                     ('type', '=', sequence_name[:-9]),
                                     ]):
-                            cls.raise_user_error('change_invoice_sequence')
+                            cls.raise_user_error('change_invoice_sequence',
+                                (period.rec_name,))
         super(Period, cls).write(periods, vals)
 
+    def get_invoice_sequence(self, invoice_type):
+        sequence = getattr(self, invoice_type + '_sequence')
+        if sequence:
+            return sequence
+        return getattr(self.fiscalyear, invoice_type + '_sequence')
+
 
 class Move:
     __name__ = 'account.move'
@@ -225,15 +250,17 @@ class Reconciliation:
     __name__ = 'account.move.reconciliation'
 
     @classmethod
-    def create(cls, values):
+    def create(cls, vlist):
         Invoice = Pool().get('account.invoice')
-        reconciliation = super(Reconciliation, cls).create(values)
-        move_ids = set(l.move.id for l in reconciliation.lines)
+        reconciliations = super(Reconciliation, cls).create(vlist)
+        move_ids = set()
+        for reconciliation in reconciliations:
+            move_ids |= set(l.move.id for l in reconciliation.lines)
         invoices = Invoice.search([
                 ('move', 'in', list(move_ids)),
                 ])
         Invoice.process(invoices)
-        return reconciliation
+        return reconciliations
 
     @classmethod
     def delete(cls, reconciliations):
diff --git a/account.xml b/account.xml
index 3c6d10e..fda39f5 100644
--- a/account.xml
+++ b/account.xml
@@ -6,88 +6,27 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="fiscalyear_view_form">
             <field name="model">account.fiscalyear</field>
             <field name="inherit" ref="account.fiscalyear_view_form"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/form/notebook/page[@id="sequences"]/field[@name="post_move_sequence"]"
-                        position="after">
-                        <newline/>
-                        <label name="out_invoice_sequence"/>
-                        <field name="out_invoice_sequence"/>
-                        <label name="in_invoice_sequence"/>
-                        <field name="in_invoice_sequence"/>
-                        <label name="out_credit_note_sequence"/>
-                        <field name="out_credit_note_sequence"/>
-                        <label name="in_credit_note_sequence"/>
-                        <field name="in_credit_note_sequence"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
+            <field name="name">fiscalyear_form</field>
         </record>
 
         <record model="ir.ui.view" id="period_view_form">
             <field name="model">account.period</field>
             <field name="inherit" ref="account.period_view_form"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/form/field[@name="post_move_sequence"]"
-                        position="after">
-                        <newline/>
-                        <label name="out_invoice_sequence"/>
-                        <field name="out_invoice_sequence"/>
-                        <label name="in_invoice_sequence"/>
-                        <field name="in_invoice_sequence"/>
-                        <label name="out_credit_note_sequence"/>
-                        <field name="out_credit_note_sequence"/>
-                        <label name="in_credit_note_sequence"/>
-                        <field name="in_credit_note_sequence"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
+            <field name="name">period_form</field>
         </record>
 
         <record model="ir.ui.view" id="move_line_view_list_payment">
             <field name="model">account.move.line</field>
             <field name="type">tree</field>
             <field name="priority" eval="20"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Payment Lines">
-                    <field name="date"/>
-                    <field name="debit" sum="Debit"/>
-                    <field name="credit" sum="Credit"/>
-                    <field name="amount_second_currency"
-                        sum="Amount Second Currency"/>
-                    <field name="second_currency"/>
-                    <field name="currency_digits" tree_invisible="1"/>
-                    <field name="second_currency_digits" tree_invisible="1"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">move_line_list_payment</field>
         </record>
 
         <record model="ir.ui.view" id="move_line_view_list_to_pay">
             <field name="model">account.move.line</field>
             <field name="type">tree</field>
             <field name="priority" eval="20"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Lines to Pay">
-                    <field name="maturity_date"/>
-                    <field name="debit" sum="Debit"/>
-                    <field name="credit" sum="Credit"/>
-                    <field name="amount_second_currency" sum="Amount Second Currency"/>
-                    <field name="second_currency" expand="1"/>
-                    <field name="currency_digits" tree_invisible="1"/>
-                    <field name="second_currency_digits" tree_invisible="1"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">move_line_list_to_pay</field>
         </record>
 
     </data>
diff --git a/invoice.odt b/invoice.odt
index b3643ed..6e435bd 100644
Binary files a/invoice.odt and b/invoice.odt differ
diff --git a/invoice.py b/invoice.py
index 42358f4..03f4cc6 100644
--- a/invoice.py
+++ b/invoice.py
@@ -12,7 +12,6 @@ from trytond.pyson import If, Eval, Bool, Id
 from trytond.tools import reduce_ids
 from trytond.transaction import Transaction
 from trytond.pool import Pool
-from trytond.config import CONFIG
 from trytond.rpc import RPC
 
 __all__ = ['Invoice', 'InvoicePaymentLine', 'InvoiceLine',
@@ -68,15 +67,18 @@ class Invoice(Workflow, ModelSQL, ModelView):
         depends=_DEPENDS)
     state = fields.Selection([
         ('draft', 'Draft'),
-        ('proforma', 'Pro forma'),
-        ('open', 'Opened'),
+        ('validated', 'Validated'),
+        ('posted', 'Posted'),
         ('paid', 'Paid'),
         ('cancel', 'Canceled'),
         ], 'State', readonly=True)
     invoice_date = fields.Date('Invoice Date',
         states={
-            'readonly': Eval('state').in_(['open', 'paid', 'cancel']),
-            'required': Eval('state').in_(['open', 'paid']),
+            'readonly': Eval('state').in_(['posted', 'paid', 'cancel']),
+            'required': Eval('state').in_(
+                If(Eval('type').in_(['in_invoice', 'in_credit_note']),
+                    ['validated', 'posted', 'paid'],
+                    ['posted', 'paid'])),
             },
         depends=['state'])
     accounting_date = fields.Date('Accounting Date', states=_STATES,
@@ -101,6 +103,10 @@ class Invoice(Workflow, ModelSQL, ModelView):
     journal = fields.Many2One('account.journal', 'Journal', required=True,
         states=_STATES, depends=_DEPENDS, domain=[('centralised', '=', False)])
     move = fields.Many2One('account.move', 'Move', readonly=True)
+    cancel_move = fields.Many2One('account.move', 'Cancel Move', readonly=True,
+        states={
+            'invisible': Eval('type').in_(['out_invoice', 'out_credit_note']),
+            })
     account = fields.Many2One('account.account', 'Account', required=True,
         states=_STATES, depends=_DEPENDS + ['type'],
         domain=[
@@ -147,72 +153,79 @@ class Invoice(Workflow, ModelSQL, ModelView):
     @classmethod
     def __setup__(cls):
         super(Invoice, cls).__setup__()
-        cls._check_modify_exclude = ['state', 'payment_lines',
+        cls._check_modify_exclude = ['state', 'payment_lines', 'cancel_move',
                 'invoice_report_cache', 'invoice_report_format']
-        cls._constraints += [
-            ('check_account', 'account_different_company'),
-            ('check_account2', 'same_account_on_line'),
-        ]
         cls._order.insert(0, ('number', 'DESC'))
         cls._order.insert(1, ('id', 'DESC'))
         cls._error_messages.update({
-            'reset_draft': 'You can not reset to draft ' \
-                    'an invoice that has move!',
-            'missing_tax_line': 'Taxes defined ' \
-                    'but not on invoice lines!\n' \
-                    'Re-compute the invoice.',
-            'diff_tax_line': 'Base taxes ' \
-                    'different from invoice lines!\n' \
-                    'Re-compute the invoice.',
-            'missing_tax_line2': 'Taxes defined ' \
-                    'on invoice lines but not on invoice!\n' \
-                    'Re-compute the invoice.',
-            'no_invoice_sequence': 'There is no invoice sequence ' \
-                    'on the period/fiscal year!',
-            'modify_invoice': 'You can not modify an invoice that is ' \
-                    'opened, paid!',
-            'same_debit_account': 'The debit account on journal is ' \
-                    'the same than the invoice account!',
-            'missing_debit_account': 'The debit account on journal is ' \
-                    'missing!',
-            'same_credit_account': 'The credit account on journal is ' \
-                    'the same than the invoice account!',
-            'missing_credit_account': 'The credit account on journal is ' \
-                    'missing!',
-            'account_different_company': 'You can not create an invoice\n' \
-                    'with account from a different invoice company!',
-            'same_account_on_line': 'You can not use the same account\n' \
-                    'as on invoice line!',
-            'delete_cancel': 'Invoice "%s" must be cancelled before deletion!',
-            })
+                'missing_tax_line': ('Invoice "%s" has taxes defined but not '
+                    'on invoice lines.\nRe-compute the invoice.'),
+                'diff_tax_line': ('Invoice "%s" tax bases are different from '
+                    'invoice lines.\nRe-compute the invoice.'),
+                'missing_tax_line2': ('Invoice "%s" has taxes on invoice lines '
+                    'that are not in the invoice.\nRe-compute the invoice.'),
+                'no_invoice_sequence': ('There is no invoice sequence for '
+                    'invoice "%(invoice)s" on the period/fiscal year '
+                    '"%(period)s".'),
+                'modify_invoice': ('You can not modify invoice "%s" because '
+                    'it is posted, paid or cancelled.'),
+                'same_debit_account': ('The debit account on journal '
+                    '"%(journal)s" is the same as invoice "%(invoice)s"\'s '
+                    'account.'),
+                'missing_debit_account': ('The debit account on journal "%s" '
+                    'is missing.'),
+                'same_credit_account': ('The credit account on journal '
+                    '"%(journal)s" is the same as invoice "%(invoice)s"\'s '
+                    'account.'),
+                'missing_credit_account': ('The credit account on journal %s" '
+                    'is missing.'),
+                'account_different_company': ('You can not create invoice '
+                    '"%(invoice)s" on company "%(invoice_company)s because '
+                    'account "%(account)s has a different company '
+                    '(%(account_company)s.)'),
+                'same_account_on_line': ('Invoice "%(invoice)s" uses the same '
+                    'account "%(account)s" for the invoice and in line '
+                    '"%(line)s".'),
+                'delete_cancel': ('Invoice "%s" must be cancelled before '
+                    'deletion.'),
+                'delete_numbered': ('The numbered invoice "%s" can not be '
+                    'deleted.'),
+                'period_cancel_move': ('The period of Invoice "%s" is closed.\n'
+                    'Use the today for cancel move?'),
+                })
         cls._transitions |= set((
-                ('draft', 'proforma'),
-                ('proforma', 'open'),
-                ('draft', 'open'),
-                ('open', 'paid'),
-                ('proforma', 'draft'),
-                ('paid', 'open'),
+                ('draft', 'validated'),
+                ('validated', 'posted'),
+                ('draft', 'posted'),
+                ('posted', 'paid'),
+                ('validated', 'draft'),
+                ('paid', 'posted'),
                 ('draft', 'cancel'),
-                ('proforma', 'cancel'),
+                ('validated', 'cancel'),
+                ('posted', 'cancel'),
                 ('cancel', 'draft'),
                 ))
         cls._buttons.update({
                 'cancel': {
-                    'invisible': ~Eval('state').in_(['draft', 'proforma']),
+                    'invisible': (~Eval('state').in_(['draft', 'validated'])
+                        & ~((Eval('state') == 'posted')
+                            & Eval('type').in_(
+                                ['in_invoice', 'in_credit_note']))),
                     },
                 'draft': {
-                    'invisible': ~Eval('state').in_(['cancel', 'proforma']),
+                    'invisible': (~Eval('state').in_(['cancel', 'validated'])
+                        | ((Eval('state') == 'cancel') & Eval('cancel_move'))),
                     'icon': If(Eval('state') == 'cancel', 'tryton-clear',
                         'tryton-go-previous'),
                     },
-                'proforma': {
+                'validate_invoice': {
                     'invisible': Eval('state') != 'draft',
                     },
-                'open': {
-                    'invisible': ~Eval('state').in_(['draft', 'proforma']),
+                'post': {
+                    'invisible': ~Eval('state').in_(['draft', 'validated']),
                     },
                 'pay': {
-                    'invisible': Eval('state') != 'open',
+                    'invisible': Eval('state') != 'posted',
                     'readonly': ~Eval('groups', []).contains(
                         Id('account', 'group_account')),
                     },
@@ -250,6 +263,14 @@ class Invoice(Workflow, ModelSQL, ModelView):
                             'WHERE id = %s', (report, invoice_id))
             table.drop_column('invoice_report')
 
+        # Migration from 2.6:
+        # - proforma renamed into validated
+        # - open renamed into posted
+        cursor.execute('UPDATE "' + cls._table + '" '
+            'SET state = %s WHERE state = %s', ('validated', 'proforma'))
+        cursor.execute('UPDATE "' + cls._table + '" '
+            'SET state = %s WHERE state = %s', ('posted', 'open'))
+
         # Add index on create_date
         table.index_action('create_date', action='add')
 
@@ -309,9 +330,9 @@ class Invoice(Workflow, ModelSQL, ModelView):
                     payment_term = self.party.supplier_payment_term
         if self.company and self.type in ('out_credit_note', 'in_credit_note'):
             if self.type == 'out_credit_note':
-                payment_term = self.company.customer_payment_term
+                payment_term = self.company.party.customer_payment_term
             else:
-                payment_term = self.company.supplier_payment_term
+                payment_term = self.company.party.supplier_payment_term
         if account:
             result['account'] = account.id
             result['account.rec_name'] = account.rec_name
@@ -356,10 +377,11 @@ class Invoice(Workflow, ModelSQL, ModelView):
         return self.invoice_date or Date.today()
 
     def on_change_with_party_lang(self, name=None):
+        Config = Pool().get('ir.configuration')
         if self.party:
             if self.party.lang:
                 return self.party.lang.code
-        return CONFIG['language']
+        return Config.get_language()
 
     @classmethod
     def get_type_name(self, invoices, name):
@@ -381,6 +403,9 @@ class Invoice(Workflow, ModelSQL, ModelView):
     def _on_change_lines_taxes(self):
         pool = Pool()
         Tax = pool.get('account.tax')
+        InvoiceTax = pool.get('account.invoice.tax')
+        Account = pool.get('account.account')
+        TaxCode = pool.get('account.tax.code')
         res = {
             'untaxed_amount': Decimal('0.0'),
             'tax_amount': Decimal('0.0'),
@@ -427,8 +452,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
             tax_keys.append(key)
             if self.currency:
                 if not self.currency.is_zero(
-                        computed_taxes[key]['base'] - \
-                            (tax.base or Decimal('0.0'))):
+                        computed_taxes[key]['base']
+                        - (tax.base or Decimal('0.0'))):
                     res['tax_amount'] += computed_taxes[key]['amount']
                     res['taxes'].setdefault('update', [])
                     res['taxes']['update'].append({
@@ -454,8 +479,17 @@ class Invoice(Workflow, ModelSQL, ModelView):
             if key not in tax_keys:
                 res['tax_amount'] += computed_taxes[key]['amount']
                 res['taxes'].setdefault('add', [])
-                value = Tax.default_get(Tax._fields.keys())
+                value = InvoiceTax.default_get(InvoiceTax._fields.keys())
                 value.update(computed_taxes[key])
+                for field, Target in (
+                        ('account', Account),
+                        ('base_code', TaxCode),
+                        ('tax_code', TaxCode),
+                        ('tax', Tax),
+                        ):
+                    if value.get(field):
+                        value[field + '.rec_name'] = \
+                            Target(value[field]).rec_name
                 res['taxes']['add'].append(value)
         if self.currency:
             res['untaxed_amount'] = self.currency.round(res['untaxed_amount'])
@@ -479,10 +513,10 @@ class Invoice(Workflow, ModelSQL, ModelView):
         res = {}
         type_name = FIELDS[cls.tax_amount._type].sql_type(cls.tax_amount)[0]
         red_sql, red_ids = reduce_ids('invoice', [i.id for i in invoices])
-        cursor.execute('SELECT invoice, ' \
-                    'CAST(COALESCE(SUM(amount), 0) AS ' + type_name + ') ' \
-                'FROM account_invoice_tax ' \
-                'WHERE ' + red_sql + ' ' \
+        cursor.execute('SELECT invoice, '
+                    'CAST(COALESCE(SUM(amount), 0) AS ' + type_name + ') '
+                'FROM account_invoice_tax '
+                'WHERE ' + red_sql + ' '
                 'GROUP BY invoice', red_ids)
         for invoice_id, sum in cursor.fetchall():
             # SQLite uses float for SUM
@@ -524,7 +558,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
 
         computes = cls.search([
                 ('id', 'in', [i.id for i in invoices]),
-                ('state', '=', 'open'),
+                ('state', '=', 'posted'),
                 ])
 
         today = Date.today()
@@ -685,8 +719,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
             val['account'] = (tax.credit_note_account.id
                 if tax.credit_note_account else None)
         key = (val['base_code'], val['base_sign'],
-                val['tax_code'], val['tax_sign'],
-                val['account'], val['tax'])
+            val['tax_code'], val['tax_sign'],
+            val['account'], val['tax'])
         return key, val
 
     def _compute_taxes(self):
@@ -719,12 +753,11 @@ class Invoice(Workflow, ModelSQL, ModelView):
     def update_taxes(cls, invoices, exception=False):
         Tax = Pool().get('account.invoice.tax')
         for invoice in invoices:
-            if invoice.state in ('open', 'paid', 'cancel'):
+            if invoice.state in ('posted', 'paid', 'cancel'):
                 continue
             computed_taxes = invoice._compute_taxes()
             if not invoice.taxes:
-                for tax in computed_taxes.values():
-                    Tax.create(tax)
+                Tax.create([tax for tax in computed_taxes.values()])
             else:
                 tax_keys = []
                 for tax in invoice.taxes:
@@ -734,24 +767,27 @@ class Invoice(Workflow, ModelSQL, ModelView):
                     tax_code_id = tax.tax_code.id if tax.tax_code else None
                     tax_id = tax.tax.id if tax.tax else None
                     key = (base_code_id, tax.base_sign,
-                            tax_code_id, tax.tax_sign,
-                            tax.account.id, tax_id)
+                        tax_code_id, tax.tax_sign,
+                        tax.account.id, tax_id)
                     if (not key in computed_taxes) or (key in tax_keys):
                         if exception:
-                            cls.raise_user_error('missing_tax_line')
+                            cls.raise_user_error('missing_tax_line',
+                                (invoice.rec_name,))
                         Tax.delete([tax])
                         continue
                     tax_keys.append(key)
                     if not invoice.currency.is_zero(
                             computed_taxes[key]['base'] - tax.base):
                         if exception:
-                            cls.raise_user_error('diff_tax_line')
+                            cls.raise_user_error('diff_tax_line',
+                                (invoice.rec_name,))
                         Tax.write([tax], computed_taxes[key])
                 for key in computed_taxes:
                     if not key in tax_keys:
                         if exception:
-                            cls.raise_user_error('missing_tax_line')
-                        Tax.create(computed_taxes[key])
+                            cls.raise_user_error('missing_tax_line2',
+                                (invoice.rec_name,))
+                        Tax.create([computed_taxes[key]])
 
     def _get_move_line_invoice_line(self):
         '''
@@ -812,7 +848,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
         Date = pool.get('ir.date')
 
         if self.move:
-            return True
+            return self.move
         self.update_taxes([self], exception=True)
         move_lines = self._get_move_line_invoice_line()
         move_lines += self._get_move_line_invoice_tax()
@@ -839,17 +875,16 @@ class Invoice(Workflow, ModelSQL, ModelView):
         accounting_date = self.accounting_date or self.invoice_date
         period_id = Period.find(self.company.id, date=accounting_date)
 
-        move = Move.create({
-            'journal': self.journal.id,
-            'period': period_id,
-            'date': accounting_date,
-            'origin': str(self),
-            'lines': [('create', x) for x in move_lines],
-            })
+        move, = Move.create([{
+                    'journal': self.journal.id,
+                    'period': period_id,
+                    'date': accounting_date,
+                    'origin': str(self),
+                    'lines': [('create', move_lines)],
+                    }])
         self.write([self], {
                 'move': move.id,
                 })
-        Move.post([move])
         return move
 
     def set_number(self):
@@ -872,14 +907,18 @@ class Invoice(Workflow, ModelSQL, ModelView):
         period_id = Period.find(self.company.id,
             date=accounting_date, test_state=test_state)
         period = Period(period_id)
-        sequence_id = getattr(period, self.type + '_sequence').id
+        sequence_id = period.get_invoice_sequence(self.type).id
         if not sequence_id:
-            self.raise_user_error('no_invoice_sequence')
+            self.raise_user_error('no_invoice_sequence', {
+                    'invoice': self.rec_name,
+                    'period': period.rec_name,
+                    })
         with Transaction().set_context(
                 date=self.invoice_date or Date.today()):
             number = Sequence.get_id(sequence_id)
             vals = {'number': number}
-            if not self.invoice_date:
+            if (not self.invoice_date
+                    and self.type in ('out_invoice', 'out_credit_note')):
                 vals['invoice_date'] = Transaction().context['date']
         self.write([self], vals)
 
@@ -889,8 +928,10 @@ class Invoice(Workflow, ModelSQL, ModelView):
         Check if the invoices can be modified
         '''
         for invoice in invoices:
-            if invoice.state in ('open', 'paid'):
-                cls.raise_user_error('modify_invoice')
+            if (invoice.state in ('posted', 'paid')
+                    or (invoice.state == 'cancel'
+                        and invoice.cancel_move)):
+                cls.raise_user_error('modify_invoice', (invoice.rec_name,))
 
     def get_rec_name(self, name):
         return (self.number or unicode(self.id)
@@ -914,7 +955,9 @@ class Invoice(Workflow, ModelSQL, ModelView):
         cls.cancel(invoices)
         for invoice in invoices:
             if invoice.state != 'cancel':
-                cls.raise_user_error('delete_cancel', invoice.rec_name)
+                cls.raise_user_error('delete_cancel', (invoice.rec_name,))
+            if invoice.number:
+                cls.raise_user_error('delete_numbered', (invoice.rec_name,))
         super(Invoice, cls).delete(invoices)
 
     @classmethod
@@ -942,6 +985,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
         default['state'] = 'draft'
         default['number'] = None
         default['move'] = None
+        default['cancel_move'] = None
         default['invoice_report_cache'] = None
         default['invoice_report_format'] = None
         default['payment_lines'] = None
@@ -950,6 +994,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
         default.setdefault('invoice_date', None)
         default.setdefault('accounting_date', None)
         default['lines_to_pay'] = None
+        default.setdefault('origin', None)
 
         new_invoices = []
         for invoice in invoices:
@@ -963,14 +1008,37 @@ class Invoice(Workflow, ModelSQL, ModelView):
             new_invoices.append(new_invoice)
         return new_invoices
 
+    @classmethod
+    def validate(cls, invoices):
+        super(Invoice, cls).validate(invoices)
+        for invoice in invoices:
+            invoice.check_account()
+            invoice.check_same_account()
+            invoice.check_cancel_move()
+
     def check_account(self):
-        return self.account.company == self.company
+        if self.account.company != self.company:
+            self.raise_user_error('check_account', {
+                    'invoice': self.rec_name,
+                    'invoice_company': self.company.rec_name,
+                    'account': self.account.rec_name,
+                    'account_company': self.account.company.rec_name,
+                    })
 
-    def check_account2(self):
+    def check_same_account(self):
         for line in self.lines:
             if (line.type == 'line'
                     and line.account == self.account):
-                return False
+                self.raise_user_error('same_account_on_line', {
+                        'invoice': self.rec_name,
+                        'account': self.account.rec_name,
+                        'line': line.rec_name,
+                        })
+
+    def check_cancel_move(self):
+        if (self.type in ('out_invoice', 'out_credit_note')
+                and self.cancel_move):
+            return False
         return True
 
     def get_reconcile_lines_for_amount(self, amount, exclude_lines=None):
@@ -1046,9 +1114,13 @@ class Invoice(Workflow, ModelSQL, ModelView):
 
         if self.type in ('out_invoice', 'in_credit_note'):
             if self.account == journal.debit_account:
-                self.raise_user_error('same_debit_account')
+                self.raise_user_error('same_debit_account', {
+                        'journal': journal.rec_name,
+                        'invoice': self.rec_name,
+                        })
             if not journal.debit_account:
-                self.raise_user_error('missing_debit_account')
+                self.raise_user_error('missing_debit_account',
+                    (journal.rec_name,))
 
             lines.append({
                     'description': description,
@@ -1070,9 +1142,13 @@ class Invoice(Workflow, ModelSQL, ModelView):
                     })
         else:
             if self.account == journal.credit_account:
-                self.raise_user_error('same_credit_account')
+                self.raise_user_error('same_credit_account', {
+                        'journal': journal.rec_name,
+                        'invoice': self.rec_name,
+                        })
             if not journal.credit_account:
-                self.raise_user_error('missing_credit_account')
+                self.raise_user_error('missing_credit_account',
+                    (journal.rec_name,))
 
             lines.append({
                     'description': description,
@@ -1095,12 +1171,12 @@ class Invoice(Workflow, ModelSQL, ModelView):
 
         period_id = Period.find(self.company.id, date=date)
 
-        move = Move.create({
-                'journal': journal.id,
-                'period': period_id,
-                'date': date,
-                'lines': [('create', x) for x in lines],
-                })
+        move, = Move.create([{
+                    'journal': journal.id,
+                    'period': period_id,
+                    'date': date,
+                    'lines': [('create', lines)],
+                    }])
         Move.post([move])
 
         for line in move.lines:
@@ -1144,16 +1220,14 @@ class Invoice(Workflow, ModelSQL, ModelView):
             res[field] = getattr(self, field).id
 
         res['lines'] = []
-        for line in self.lines:
-            value = line._credit()
-            res['lines'].append(('create', value))
+        if self.lines:
+            res['lines'].append(('create',
+                    [line._credit() for line in self.lines]))
 
         res['taxes'] = []
-        for tax in self.taxes:
-            if not tax.manual:
-                continue
-            value = tax._credit()
-            res['taxes'].append(('create', value))
+        to_create = [tax._credit() for tax in self.taxes if tax.manual]
+        if to_create:
+            res['taxes'].append(('create', to_create))
         return res
 
     @classmethod
@@ -1166,37 +1240,58 @@ class Invoice(Workflow, ModelSQL, ModelView):
 
         new_invoices = []
         for invoice in invoices:
-            new_invoice = cls.create(invoice._credit())
+            new_invoice, = cls.create([invoice._credit()])
             new_invoices.append(new_invoice)
             if refund:
-                cls.open([new_invoice])
-                if new_invoice.state == 'open':
+                cls.post([new_invoice])
+                if new_invoice.state == 'posted':
                     MoveLine.reconcile([l for l in invoice.lines_to_pay
                             if not l.reconciliation] +
                         [l for l in new_invoice.lines_to_pay
                             if not l.reconciliation])
+        cls.update_taxes(new_invoices)
         return new_invoices
 
     @classmethod
     @ModelView.button
     @Workflow.transition('draft')
     def draft(cls, invoices):
-        pass
+        Move = Pool().get('account.move')
+
+        moves = []
+        for invoice in invoices:
+            if invoice.move:
+                moves.append(invoice.move)
+        if moves:
+            with Transaction().set_user(0, set_context=True):
+                Move.delete(moves)
 
     @classmethod
     @ModelView.button
-    @Workflow.transition('proforma')
-    def proforma(cls, invoices):
-        pass
+    @Workflow.transition('validated')
+    def validate_invoice(cls, invoices):
+        for invoice in invoices:
+            if invoice.type in ('in_invoice', 'in_credit_note'):
+                invoice.set_number()
+                invoice.create_move()
 
     @classmethod
     @ModelView.button
-    @Workflow.transition('open')
-    def open(cls, invoices):
+    @Workflow.transition('posted')
+    def post(cls, invoices):
+        Move = Pool().get('account.move')
+
+        moves = []
         for invoice in invoices:
             invoice.set_number()
-            invoice.create_move()
-            invoice.print_invoice()
+            moves.append(invoice.create_move())
+        Move.post(moves)
+        cls.write(invoices, {
+                'state': 'posted',
+                })
+        for invoice in invoices:
+            if invoice.type in ('out_invoice', 'out_credit_note'):
+                invoice.print_invoice()
 
     @classmethod
     @ModelView.button_action('account_invoice.wizard_pay')
@@ -1206,27 +1301,71 @@ class Invoice(Workflow, ModelSQL, ModelView):
     @classmethod
     def process(cls, invoices):
         paid = []
-        open_ = []
+        posted = []
         for invoice in invoices:
-            if invoice.state not in ('open', 'paid'):
+            if invoice.state not in ('posted', 'paid'):
                 continue
             if invoice.reconciled:
                 paid.append(invoice)
             else:
-                open_.append(invoice)
+                posted.append(invoice)
         cls.paid(paid)
-        cls.open(open_)
+        cls.post(posted)
 
     @classmethod
     @Workflow.transition('paid')
     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):
-        pass
+        Move = Pool().get('account.move')
+
+        cancel_moves = []
+        delete_moves = []
+        for invoice in invoices:
+            if invoice.move:
+                if invoice.move.state == 'draft':
+                    delete_moves.append(invoice.move)
+                elif not invoice.cancel_move:
+                    invoice.cancel_move = invoice.get_cancel_move()
+                    invoice.save()
+                    cancel_moves.append(invoice.cancel_move)
+        if delete_moves:
+            with Transaction().set_user(0, set_context=True):
+                Move.delete(delete_moves)
+        if cancel_moves:
+            Move.post(cancel_moves)
 
 
 class InvoicePaymentLine(ModelSQL):
@@ -1272,7 +1411,8 @@ class InvoiceLine(ModelSQL, ModelView):
     company = fields.Many2One('company.company', 'Company',
         states={
             'required': ~Eval('invoice'),
-            }, domain=[
+            },
+        domain=[
             ('id', If(Eval('context', {}).contains('company'), '=', '!='),
                 Eval('context', {}).get('company', 0)),
             ],
@@ -1364,42 +1504,60 @@ class InvoiceLine(ModelSQL, ModelView):
     description = fields.Text('Description', size=None, required=True)
     note = fields.Text('Note')
     taxes = fields.Many2Many('account.invoice.line-account.tax',
-        'line', 'tax', 'Taxes', domain=[('parent', '=', None)],
+        'line', 'tax', 'Taxes',
+        domain=[('parent', '=', None), ['OR',
+                ('group', '=', None),
+                ('group.kind', 'in',
+                    If(Bool(Eval('_parent_invoice')),
+                        If(Eval('_parent_invoice', {}).get('type').in_(
+                                ['out_invoice', 'out_credit_note']),
+                            ['sale', 'both'],
+                            ['purchase', 'both']),
+                        If(Eval('invoice_type').in_(
+                                ['out_invoice', 'out_credit_note']),
+                            ['sale', 'both'],
+                            ['purchase', 'both']))
+                    )],
+            ],
         states={
             'invisible': Eval('type') != 'line',
             },
-        depends=['type'])
+        depends=['type', 'invoice_type'])
     invoice_taxes = fields.Function(fields.One2Many('account.invoice.tax',
         None, 'Invoice Taxes'), 'get_invoice_taxes')
+    origin = fields.Reference('Origin', selection='get_origin', select=True,
+        states={
+            'readonly': Eval('_parent_invoice', {}
+                ).get('state') != 'draft',
+            })
 
     @classmethod
     def __setup__(cls):
         super(InvoiceLine, cls).__setup__()
         cls._sql_constraints += [
             ('type_account',
-                'CHECK((type = \'line\' AND account IS NOT NULL) ' \
-                        'OR (type != \'line\'))',
-                'Line with "line" type must have an account!'),
+                'CHECK((type = \'line\' AND account IS NOT NULL) '
+                'OR (type != \'line\'))',
+                'Line with "line" type must have an account.'),
             ('type_invoice',
-                'CHECK((type != \'line\' AND invoice IS NOT NULL) ' \
-                        'OR (type = \'line\'))',
-                'Line without "line" type must have an invoice!'),
-            ]
-        cls._constraints += [
-            ('check_account', 'account_different_company'),
-            ('check_account2', 'same_account_on_invoice'),
+                'CHECK((type != \'line\' AND invoice IS NOT NULL) '
+                'OR (type = \'line\'))',
+                'Line without "line" type must have an invoice.'),
             ]
         cls._order.insert(0, ('sequence', 'ASC'))
         cls._error_messages.update({
-            'modify': 'You can not modify line from an invoice ' \
-                    'that is opened, paid!',
-            'create': 'You can not add a line to an invoice ' \
-                    'that is open, paid or canceled!',
-            'account_different_company': 'You can not create invoice line\n' \
-                    'with account with a different invoice company!',
-            'same_account_on_invoice': 'You can not use the same account\n' \
-                    'as on the invoice!',
-            })
+                'modify': ('You can not modify line "%(line)s" from invoice '
+                    '"%(invoice)s" that is posted or paid.'),
+                'create': ('You can not add a line to invoice "%(invoice)s" '
+                    'that is posted, paid or cancelled.'),
+                'account_different_company': ('You can not create invoice line '
+                    '"%(line)s" on invoice "%(invoice)s of company '
+                    '"%(invoice_line_company)s because account "%(account)s '
+                    'has company "%(account_company)s".'),
+                'same_account_on_invoice': ('You can not create invoice line '
+                    '"%(line)s" on invoice "%(invoice)s" because the invoice '
+                    'uses the same account (%(account)s).'),
+                })
 
     @classmethod
     def __register__(cls, module_name):
@@ -1445,9 +1603,10 @@ class InvoiceLine(ModelSQL, ModelView):
         return 'line'
 
     def on_change_with_party_lang(self, name=None):
+        Config = Pool().get('ir.configuration')
         if self.party and self.party.lang:
             return self.party.lang.code
-        return CONFIG['language']
+        return Config.get_language()
 
     def on_change_with_unit_digits(self, name=None):
         if self.unit:
@@ -1509,8 +1668,8 @@ class InvoiceLine(ModelSQL, ModelView):
             tax_code_id = tax.tax_code.id if tax.tax_code else None
             tax_id = tax.tax.id if tax.tax else None
             key = (base_code_id, tax.base_sign,
-                    tax_code_id, tax.tax_sign,
-                    tax.account.id, tax_id)
+                tax_code_id, tax.tax_sign,
+                tax.account.id, tax_id)
             if key in taxes_keys:
                 taxes.append(tax.id)
         return taxes
@@ -1660,6 +1819,20 @@ class InvoiceLine(ModelSQL, ModelView):
                 taxes.append(tax.id)
         return result
 
+    @staticmethod
+    def _get_origin():
+        'Return list of Model names for origin Reference'
+        return []
+
+    @classmethod
+    def get_origin(cls):
+        Model = Pool().get('ir.model')
+        models = cls._get_origin()
+        models = Model.search([
+                ('model', 'in', models),
+                ])
+        return [(None, '')] + [(m.model, m.name) for m in models]
+
     @classmethod
     def check_modify(cls, lines):
         '''
@@ -1667,8 +1840,11 @@ class InvoiceLine(ModelSQL, ModelView):
         '''
         for line in lines:
             if (line.invoice
-                    and line.invoice.state in ('open', 'paid')):
-                cls.raise_user_error('modify')
+                    and line.invoice.state in ('posted', 'paid')):
+                cls.raise_user_error('modify', {
+                        'line': line.rec_name,
+                        'invoice': line.invoice.rec_name
+                        })
 
     @classmethod
     def delete(cls, lines):
@@ -1681,30 +1857,55 @@ class InvoiceLine(ModelSQL, ModelView):
         super(InvoiceLine, cls).write(lines, vals)
 
     @classmethod
-    def create(cls, vals):
+    def create(cls, vlist):
         Invoice = Pool().get('account.invoice')
-        if vals.get('invoice'):
-            invoice = Invoice(vals['invoice'])
-            if invoice.state in ('open', 'paid', 'cancel'):
-                cls.raise_user_error('create')
-        return super(InvoiceLine, cls).create(vals)
+        invoice_ids = []
+        for vals in vlist:
+            if vals.get('invoice'):
+                invoice_ids.append(vals.get('invoice'))
+        for invoice in Invoice.browse(invoice_ids):
+            if invoice.state in ('posted', 'paid', 'cancel'):
+                cls.raise_user_error('create', (invoice.rec_name,))
+        return super(InvoiceLine, cls).create(vlist)
 
-    def check_account(self):
+    @classmethod
+    def validate(cls, lines):
+        super(InvoiceLine, cls).validate(lines)
+        for line in lines:
+            line.check_account_company()
+            line.check_same_account()
+
+    def check_account_company(self):
         if self.type == 'line':
             if self.invoice:
                 if self.account.company != self.invoice.company:
-                    return False
+                    self.raise_user_error('account_different_company', {
+                            'line': self.rec_name,
+                            'invoice': self.invoice.rec_name,
+                            'invoice_line_company':
+                                self.invoice.company.rec_name,
+                            'account': self.account.rec_name,
+                            'account_company': self.account.company.rec_name,
+                            })
             elif self.company:
                 if self.account.company != self.company:
-                    return False
-        return True
+                    self.raise_user_error('account_different_company', {
+                            'line': self.rec_name,
+                            'invoice': '/',
+                            'invoice_line_company': self.company.rec_name,
+                            'account': self.account.rec_name,
+                            'account_company': self.account.company.rec_name,
+                            })
 
-    def check_account2(self):
+    def check_same_account(self):
         if self.type == 'line':
             if (self.invoice
                     and self.account == self.invoice.account):
-                return False
-        return True
+                self.raise_user_error('same_account_on_invoice', {
+                        'line': self.rec_name,
+                        'invoice': self.invoice.rec_name,
+                        'account': self.account.rec_name,
+                        })
 
     def _compute_taxes(self):
         pool = Pool()
@@ -1776,9 +1977,8 @@ class InvoiceLine(ModelSQL, ModelView):
         res['account'] = self.account.id
         res['party'] = self.invoice.party.id
         computed_taxes = self._compute_taxes()
-        for tax in computed_taxes:
-            res.setdefault('tax_lines', [])
-            res['tax_lines'].append(('create', tax))
+        if computed_taxes:
+            res['tax_lines'] = [('create', [tax for tax in computed_taxes])]
         return [res]
 
     def _credit(self):
@@ -1795,8 +1995,8 @@ class InvoiceLine(ModelSQL, ModelView):
             res[field] = getattr(getattr(self, field), 'id', None)
 
         res['taxes'] = []
-        for tax in self.taxes:
-            res['taxes'].append(('add', tax.id))
+        if self.taxes:
+            res['taxes'].append(('add', [tax.id for tax in self.taxes]))
         return res
 
 
@@ -1855,18 +2055,24 @@ class InvoiceTax(ModelSQL, ModelView):
     @classmethod
     def __setup__(cls):
         super(InvoiceTax, cls).__setup__()
-        cls._constraints += [
-            ('check_company', 'You can not create invoice tax \n' \
-                    'with account or code from a different invoice company!',
-                    ['account', 'base_code', 'tax_code']),
-            ]
         cls._order.insert(0, ('sequence', 'ASC'))
         cls._error_messages.update({
-            'modify': 'You can not modify tax from an invoice ' \
-                    'that is opened, paid!',
-            'create': 'You can not add a line to an invoice ' \
-                    'that is open, paid or canceled!',
-            })
+                'modify': ('You can not modify tax "%(tax)s" from invoice '
+                    '"%(invoice)s" because it is posted or paid.'),
+                'create': ('You can not add line "%(line)s" to invoice '
+                    '"%(invoice)s" because it is posted, paid or canceled.'),
+                'invalid_account_company': ('You can not create invoice '
+                    '"%(invoice)s" on company "%(invoice_company)s" using '
+                    'account "%(account)s" from company '
+                    '"%(account_company)s".'),
+                'invalid_base_code_company': ('You can not create invoice '
+                    '"%(invoice)s" on company "%(invoice_company)s" using base '
+                    'tax code "%(base_code)s" from company '
+                    '"%(base_code_company)s".'),
+                'invalid_tax_code_company': ('You can not create invoice '
+                    '"%(invoice)s" on company "%(invoice_company)s" using tax '
+                    'code "%(tax_code)s" from company "%(tax_code_company)s".'),
+                })
 
     @classmethod
     def __register__(cls, module_name):
@@ -1948,7 +2154,7 @@ class InvoiceTax(ModelSQL, ModelView):
         Check if the taxes can be modified
         '''
         for tax in taxes:
-            if tax.invoice.state in ('open', 'paid'):
+            if tax.invoice.state in ('posted', 'paid'):
                 cls.raise_user_error('modify')
 
     def get_sequence_number(self, name):
@@ -1970,25 +2176,48 @@ class InvoiceTax(ModelSQL, ModelView):
         super(InvoiceTax, cls).write(taxes, vals)
 
     @classmethod
-    def create(cls, vals):
+    def create(cls, vlist):
         Invoice = Pool().get('account.invoice')
-        if vals.get('invoice'):
-            invoice = Invoice(vals['invoice'])
-            if invoice.state in ('open', 'paid', 'cancel'):
+        invoice_ids = []
+        for vals in vlist:
+            if vals.get('invoice'):
+                invoice_ids.append(vals['invoice'])
+        for invoice in Invoice.browse(invoice_ids):
+            if invoice.state in ('posted', 'paid', 'cancel'):
                 cls.raise_user_error('create')
-        return super(InvoiceTax, cls).create(vals)
+        return super(InvoiceTax, cls).create(vlist)
+
+    @classmethod
+    def validate(cls, taxes):
+        super(InvoiceTax, cls).validate(taxes)
+        for tax in taxes:
+            tax.check_company()
 
     def check_company(self):
         company = self.invoice.company
         if self.account.company != company:
-            return False
+            self.raise_user_error('invalid_account_company', {
+                    'invoice': self.invoice.rec_name,
+                    'invoice_company': self.invoice.company.rec_name,
+                    'account': self.account.rec_name,
+                    'account_company': self.account.company.rec_name,
+                    })
         if self.base_code:
             if self.base_code.company != company:
-                return False
+                self.raise_user_error('invalid_base_code_company', {
+                        'invoice': self.invoice.rec_name,
+                        'invoice_company': self.invoice.company.rec_name,
+                        'base_code': self.base_code.rec_name,
+                        'base_code_company': self.base_code.company.rec_name,
+                        })
         if self.tax_code:
             if self.tax_code.company != company:
-                return False
-        return True
+                self.raise_user_error('invalid_tax_code_company', {
+                        'invoice': self.invoice.rec_name,
+                        'invoice_company': self.invoice.company.rec_name,
+                        'tax_code': self.tax_code.rec_name,
+                        'tax_code_company': self.tax_code.company.rec_name,
+                        })
 
     def get_move_line(self):
         '''
@@ -2028,11 +2257,11 @@ class InvoiceTax(ModelSQL, ModelView):
         res['account'] = self.account.id
         res['party'] = self.invoice.party.id
         if self.tax_code:
-            res['tax_lines'] = [('create', {
-                'code': self.tax_code.id,
-                'amount': amount * self.tax_sign,
-                'tax': self.tax and self.tax.id or None
-            })]
+            res['tax_lines'] = [('create', [{
+                            'code': self.tax_code.id,
+                            'amount': amount * self.tax_sign,
+                            'tax': self.tax and self.tax.id or None
+                            }])]
         return [res]
 
     def _credit(self):
@@ -2125,10 +2354,11 @@ class InvoiceReport(Report):
         localcontext['company'] = user.company
         res = super(InvoiceReport, cls).parse(report, records, data,
                 localcontext)
-        # If the invoice is open or paid and the report not saved in
+        # If the invoice is posted or paid and the report not saved in
         # invoice_report_cache there was an error somewhere. So we save it now
         # in invoice_report_cache
-        if invoice.state in ('open', 'paid'):
+        if (invoice.state in ('posted', 'paid')
+                and invoice.type in ('out_invoice', 'out_credit_note')):
             Invoice.write([Invoice(invoice.id)], {
                 'invoice_report_format': res[0],
                 'invoice_report_cache': res[1],
@@ -2264,9 +2494,10 @@ class PayInvoice(Wizard):
     def __setup__(cls):
         super(PayInvoice, cls).__setup__()
         cls._error_messages.update({
-            'amount_greater_amount_to_pay': 'You can not create a partial ' \
-                    'payment with an amount greater then the amount to pay!',
-            })
+                'amount_greater_amount_to_pay': ('On invoice "%s" you can not '
+                    'create a partial payment with an amount greater than the '
+                    'amount to pay.'),
+                })
 
     def default_start(self, fields):
         Invoice = Pool().get('account.invoice')
@@ -2367,7 +2598,8 @@ class PayInvoice(Wizard):
 
         if amount > invoice.amount_to_pay and \
                 self.ask.type != 'writeoff':
-            self.raise_user_error('amount_greater_amount_to_pay')
+            self.raise_user_error('amount_greater_amount_to_pay',
+                (invoice.rec_name,))
 
         line = None
         if not invoice.company.currency.is_zero(amount):
@@ -2401,8 +2633,8 @@ class PayInvoice(Wizard):
 class CreditInvoiceStart(ModelView):
     'Credit Invoice Init'
     __name__ = 'account.invoice.credit.start'
-    with_refund = fields.Boolean('With Refund', help='If true, ' \
-            'the current invoice(s) will be paid.')
+    with_refund = fields.Boolean('With Refund',
+        help='If true, the current invoice(s) will be paid.')
 
 
 class CreditInvoice(Wizard):
@@ -2419,11 +2651,13 @@ class CreditInvoice(Wizard):
     def __setup__(cls):
         super(CreditInvoice, cls).__setup__()
         cls._error_messages.update({
-            'refund_non_open': 'You can not credit with refund ' \
-                    'an invoice that is not opened!',
-            'refund_with_payement': 'You can not credit with refund ' \
-                    'an invoice with payments!',
-            })
+                'refund_non_posted': ('You can not credit with refund '
+                    'invoice "%s" because it is not posted.'),
+                'refund_with_payement': ('You can not credit with refund '
+                    'invoice "%s" because it has payments.'),
+                'refund_supplier': ('You can not credit with refund '
+                    'a supplier invoice/credit note.'),
+                })
 
     def default_start(self, fields):
         Invoice = Pool().get('account.invoice')
@@ -2431,7 +2665,9 @@ class CreditInvoice(Wizard):
             'with_refund': True,
             }
         for invoice in Invoice.browse(Transaction().context['active_ids']):
-            if invoice.state != 'open' or invoice.payment_lines:
+            if (invoice.state != 'posted'
+                    or invoice.payment_lines
+                    or invoice.type in ('in_invoice', 'in_credit_note')):
                 default['with_refund'] = False
                 break
         return default
@@ -2445,14 +2681,17 @@ class CreditInvoice(Wizard):
 
         if refund:
             for invoice in invoices:
-                if invoice.state != 'open':
-                    self.raise_user_error('refund_non_open')
+                if invoice.state != 'posted':
+                    self.raise_user_error('refund_non_posted',
+                        (invoice.rec_name,))
                 if invoice.payment_lines:
-                    self.raise_user_error('refund_with_payement')
+                    self.raise_user_error('refund_with_payement',
+                        (invoice.rec_name,))
+                    self.raise_user_error('refund_supplier')
 
-        invoice_ids = Invoice.credit(invoices, refund=refund)
+        credit_invoices = Invoice.credit(invoices, refund=refund)
 
-        data = {'res_id': invoice_ids}
-        if len(invoice_ids) == 1:
+        data = {'res_id': [i.id for i in credit_invoices]}
+        if len(credit_invoices) == 1:
             action['views'].reverse()
         return action, data
diff --git a/invoice.xml b/invoice.xml
index faf5355..9a38f8e 100644
--- a/invoice.xml
+++ b/invoice.xml
@@ -15,125 +15,17 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="invoice_view_form">
             <field name="model">account.invoice</field>
             <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Invoice" col="6" cursor="party">
-                    <label name="type"/>
-                    <field name="type"/>
-                    <label name="journal"/>
-                    <field name="journal"/>
-                    <label name="number"/>
-                    <field name="number"/>
-                    <label name="party"/>
-                    <field name="party"/>
-                    <label name="invoice_address"/>
-                    <field name="invoice_address"/>
-                    <newline/>
-                    <label name="description"/>
-                    <field name="description" colspan="3"/>
-                    <label name="reference"/>
-                    <field name="reference"/>
-                    <notebook colspan="6">
-                        <page string="Invoice" id="invoice" col="6">
-                            <label name="invoice_date"/>
-                            <field name="invoice_date"/>
-                            <label name="payment_term"/>
-                            <field name="payment_term"/>
-                            <label name="currency"/>
-                            <field name="currency"/>
-                            <field name="lines" colspan="6"
-                                view_ids="account_invoice.invoice_line_view_tree_sequence"/>
-                            <group col="2" colspan="6" id="taxes_amount_state_buttons">
-                                <group col="1" colspan="1" id="taxes">
-                                    <field name="taxes"
-                                        view_ids="account_invoice.invoice_tax_view_tree_sequence"/>
-                                </group>
-                                <group col="4" colspan="1" id="amount_state_buttons">
-                                    <group col="2" colspan="2" id="reconciled_state">
-                                        <label name="reconciled"/>
-                                        <field name="reconciled" xexpand="0"/>
-                                        <label name="state"/>
-                                        <field name="state"/>
-                                    </group>
-                                    <group col="2" colspan="2" id="amount">
-                                        <label name="untaxed_amount" xalign="1.0" xexpand="1"/>
-                                        <field name="untaxed_amount" xalign="1.0" xexpand="0"/>
-                                        <label name="tax_amount" xalign="1.0" xexpand="1"/>
-                                        <field name="tax_amount" xalign="1.0" xexpand="0"/>
-                                        <label name="total_amount" xalign="1.0" xexpand="1"/>
-                                        <field name="total_amount" xalign="1.0" xexpand="0"/>
-                                    </group>
-                                    <group col="5" colspan="4" id="buttons">
-                                        <button name="cancel" string="_Cancel"
-                                            icon="tryton-cancel"/>
-                                        <button name="draft" string="_Draft"
-                                            icon="tryton-go-previous"/>
-                                        <button name="proforma" string="Pro For_ma"
-                                            icon="tryton-go-next"/>
-                                        <button name="open" string="_Open"
-                                            icon="tryton-ok"/>
-                                        <button name="pay" string="_Pay"
-                                            icon="tryton-go-next"/>
-                                    </group>
-                                </group>
-                            </group>
-                        </page>
-                        <page string="Other Info" id="info">
-                            <label name="company"/>
-                            <field name="company"/>
-                            <label name="account"/>
-                            <field name="account"/>
-                            <label name="accounting_date"/>
-                            <field name="accounting_date"/>
-                            <label name="move"/>
-                            <field name="move"/>
-                            <separator name="comment" colspan="4"/>
-                            <field name="comment" colspan="4"
-                                spell="Eval('party_lang')"/>
-                        </page>
-                        <page string="Payment" id="payment">
-                            <label name="amount_to_pay_today"/>
-                            <field name="amount_to_pay_today"/>
-                            <label name="amount_to_pay"/>
-                            <field name="amount_to_pay"/>
-                            <field name="payment_lines" colspan="4"
-                                view_ids="account_invoice.move_line_view_list_payment"/>
-                        </page>
-                    </notebook>
-                    <field name="currency_digits" invisible="1" colspan="6"/>
-                    <field name="party_lang" invisible="1" colspan="6"/>
-                </form>
-                ]]>
-            </field>
+            <field name="name">invoice_form</field>
         </record>
         <record model="ir.ui.view" id="invoice_view_tree">
             <field name="model">account.invoice</field>
             <field name="type">tree</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Invoices">
-                    <field name="type"/>
-                    <field name="number"/>
-                    <field name="reference"/>
-                    <field name="invoice_date"/>
-                    <field name="party"/>
-                    <field name="currency"/>
-                    <field name="untaxed_amount"/>
-                    <field name="tax_amount"/>
-                    <field name="total_amount"/>
-                    <field name="state"/>
-                    <field name="amount_to_pay_today"/>
-                    <field name="description"/>
-                    <field name="currency_digits" tree_invisible="1"/>
-                    <field name="create_date" tree_invisible="1"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">invoice_tree</field>
         </record>
+
         <record model="ir.action.act_window" id="act_invoice_form">
-            <field name="name">All Invoices</field>
+            <field name="name">Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_form_view1">
             <field name="sequence" eval="10"/>
@@ -145,15 +37,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="invoice_view_form"/>
             <field name="act_window" ref="act_invoice_form"/>
         </record>
-        <menuitem parent="menu_invoices" action="act_invoice_form"
-            id="menu_invoice_form" sequence="5"/>
 
         <record model="ir.action.act_window" id="act_invoice_out_invoice_form">
             <field name="name">Invoices</field>
             <field name="res_model">account.invoice</field>
             <field name="domain">[('type', '=', 'out_invoice')]</field>
             <field name="context">{'type': 'out_invoice'}</field>
-            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
+            <field name="search_value"></field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form_view1">
             <field name="sequence" eval="10"/>
@@ -165,72 +55,39 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="invoice_view_form"/>
             <field name="act_window" ref="act_invoice_out_invoice_form"/>
         </record>
-        <menuitem parent="menu_invoices" action="act_invoice_out_invoice_form"
-            id="menu_invoice_out_invoice_form" sequence="1"/>
-
-        <record model="ir.action.act_window" id="act_invoice_out_invoice_form3">
-            <field name="name">Draft Invoices</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'out_invoice'), ('state', '=', 'draft')]</field>
-            <field name="context">{'type': 'out_invoice'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form3_view1">
+        <record model="ir.action.act_window.domain" id="act_invoice_out_invoice_domain_draft">
+            <field name="name">Draft</field>
             <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_out_invoice_form3"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form3_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_out_invoice_form3"/>
-        </record>
-        <menuitem parent="menu_invoice_out_invoice_form" action="act_invoice_out_invoice_form3"
-            id="menu_invoice_out_invoice_form3" sequence="2"/>
-
-        <record model="ir.action.act_window" id="act_invoice_out_invoice_form4">
-            <field name="name">Pro Forma Invoices</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'out_invoice'), ('state', '=', 'proforma')]</field>
-            <field name="context">{'type': 'out_invoice'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form4_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_out_invoice_form4"/>
+            <field name="domain">[('state', '=', 'draft')]</field>
+            <field name="act_window" ref="act_invoice_out_invoice_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form4_view2">
+        <record model="ir.action.act_window.domain" id="act_invoice_out_invoice_domain_validated">
+            <field name="name">Validated</field>
             <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_out_invoice_form4"/>
-        </record>
-        <menuitem parent="menu_invoice_out_invoice_form" action="act_invoice_out_invoice_form4"
-            id="menu_invoice_out_invoice_form4" sequence="3"/>
-
-        <record model="ir.action.act_window" id="act_invoice_out_invoice_form5">
-            <field name="name">Opened Invoices</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'out_invoice'), ('state', '=', 'open')]</field>
-            <field name="context">{'type': 'out_invoice'}</field>
+            <field name="domain">[('state', '=', 'validated')]</field>
+            <field name="act_window" ref="act_invoice_out_invoice_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form5_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_out_invoice_form5"/>
+        <record model="ir.action.act_window.domain" id="act_invoice_out_invoice_domain_posted">
+            <field name="name">Posted</field>
+            <field name="sequence" eval="30"/>
+            <field name="domain">[('state', '=', 'posted')]</field>
+            <field name="act_window" ref="act_invoice_out_invoice_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form5_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_out_invoice_form5"/>
+        <record model="ir.action.act_window.domain" id="act_invoice_out_invoice_domain_all">
+            <field name="name">All</field>
+            <field name="sequence" eval="9999"/>
+            <field name="domain"></field>
+            <field name="act_window" ref="act_invoice_out_invoice_form"/>
         </record>
-        <menuitem parent="menu_invoice_out_invoice_form" action="act_invoice_out_invoice_form5"
-            id="menu_invoice_out_invoice_form5" sequence="4"/>
+        <menuitem parent="menu_invoices" action="act_invoice_out_invoice_form"
+            id="menu_invoice_out_invoice_form" sequence="1"/>
 
         <record model="ir.action.act_window" id="act_invoice_out_credit_note_form">
             <field name="name">Credit Notes</field>
             <field name="res_model">account.invoice</field>
             <field name="domain">[('type', '=', 'out_credit_note')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
-            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
+            <field name="search_value"></field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form_view1">
             <field name="sequence" eval="10"/>
@@ -242,72 +99,39 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="invoice_view_form"/>
             <field name="act_window" ref="act_invoice_out_credit_note_form"/>
         </record>
-        <menuitem parent="menu_invoices" action="act_invoice_out_credit_note_form"
-            id="menu_invoice_out_credit_note_form" sequence="2"/>
-
-        <record model="ir.action.act_window" id="act_invoice_out_credit_note_form3">
-            <field name="name">Draft Credit Notes</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'out_credit_note'), ('state', '=', 'draft')]</field>
-            <field name="context">{'type': 'out_credit_note'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form3_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_out_credit_note_form3"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form3_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_out_credit_note_form3"/>
-        </record>
-        <menuitem parent="menu_invoice_out_credit_note_form" action="act_invoice_out_credit_note_form3"
-            id="menu_invoice_out_credit_note_form3" sequence="2"/>
-
-        <record model="ir.action.act_window" id="act_invoice_out_credit_note_form4">
-            <field name="name">Pro Forma Credit Notes</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'out_credit_note'), ('state', '=', 'proforma')]</field>
-            <field name="context">{'type': 'out_credit_note'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form4_view1">
+        <record model="ir.action.act_window.domain" id="act_invoice_out_credit_note_domain_draft">
+            <field name="name">Draft</field>
             <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_out_credit_note_form4"/>
+            <field name="domain">[('state', '=', 'draft')]</field>
+            <field name="act_window" ref="act_invoice_out_credit_note_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form4_view2">
+        <record model="ir.action.act_window.domain" id="act_invoice_out_credit_note_domain_validated">
+            <field name="name">Validated</field>
             <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_out_credit_note_form4"/>
-        </record>
-        <menuitem parent="menu_invoice_out_credit_note_form" action="act_invoice_out_credit_note_form4"
-            id="menu_invoice_out_credit_note_form4" sequence="3"/>
-
-        <record model="ir.action.act_window" id="act_invoice_out_credit_note_form5">
-            <field name="name">Opened Credit Notes</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'out_credit_note'), ('state', '=', 'open')]</field>
-            <field name="context">{'type': 'out_credit_note'}</field>
+            <field name="domain">[('state', '=', 'validated')]</field>
+            <field name="act_window" ref="act_invoice_out_credit_note_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form5_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_out_credit_note_form5"/>
+        <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="act_window" ref="act_invoice_out_credit_note_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form5_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_out_credit_note_form5"/>
+        <record model="ir.action.act_window.domain" id="act_invoice_out_credit_note_domain_all">
+            <field name="name">All</field>
+            <field name="sequence" eval="9999"/>
+            <field name="domain"></field>
+            <field name="act_window" ref="act_invoice_out_credit_note_form"/>
         </record>
-        <menuitem parent="menu_invoice_out_credit_note_form" action="act_invoice_out_credit_note_form5"
-            id="menu_invoice_out_credit_note_form5" sequence="4"/>
+        <menuitem parent="menu_invoices" action="act_invoice_out_credit_note_form"
+            id="menu_invoice_out_credit_note_form" sequence="2"/>
 
         <record model="ir.action.act_window" id="act_invoice_in_invoice_form">
             <field name="name">Supplier Invoices</field>
             <field name="res_model">account.invoice</field>
             <field name="domain">[('type', '=', 'in_invoice')]</field>
             <field name="context">{'type': 'in_invoice'}</field>
-            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
+            <field name="search_value"></field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form_view1">
             <field name="sequence" eval="10"/>
@@ -319,72 +143,39 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="invoice_view_form"/>
             <field name="act_window" ref="act_invoice_in_invoice_form"/>
         </record>
-        <menuitem parent="menu_invoices" action="act_invoice_in_invoice_form"
-            id="menu_invoice_in_invoice_form" sequence="3"/>
-
-        <record model="ir.action.act_window" id="act_invoice_in_invoice_form3">
-            <field name="name">Draft Supplier Invoices</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'in_invoice'), ('state', '=', 'draft')]</field>
-            <field name="context">{'type': 'in_invoice'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form3_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_in_invoice_form3"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form3_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_in_invoice_form3"/>
-        </record>
-        <menuitem parent="menu_invoice_in_invoice_form" action="act_invoice_in_invoice_form3"
-            id="menu_invoice_in_invoice_form3" sequence="2"/>
-
-        <record model="ir.action.act_window" id="act_invoice_in_invoice_form4">
-            <field name="name">Pro Forma Supplier Invoices</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'in_invoice'), ('state', '=', 'proforma')]</field>
-            <field name="context">{'type': 'in_invoice'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form4_view1">
+        <record model="ir.action.act_window.domain" id="act_invoice_in_invoice_domain_draft">
+            <field name="name">Draft</field>
             <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_in_invoice_form4"/>
+            <field name="domain">[('state', '=', 'draft')]</field>
+            <field name="act_window" ref="act_invoice_in_invoice_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form4_view2">
+        <record model="ir.action.act_window.domain" id="act_invoice_in_invoice_domain_validated">
+            <field name="name">Validated</field>
             <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_in_invoice_form4"/>
-        </record>
-        <menuitem parent="menu_invoice_in_invoice_form" action="act_invoice_in_invoice_form4"
-            id="menu_invoice_in_invoice_form4" sequence="3"/>
-
-        <record model="ir.action.act_window" id="act_invoice_in_invoice_form5">
-            <field name="name">Opened Supplier Invoices</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'in_invoice'), ('state', '=', 'open')]</field>
-            <field name="context">{'type': 'in_invoice'}</field>
+            <field name="domain">[('state', '=', 'validated')]</field>
+            <field name="act_window" ref="act_invoice_in_invoice_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form5_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_in_invoice_form5"/>
+        <record model="ir.action.act_window.domain" id="act_invoice_in_invoice_domain_posted">
+            <field name="name">Posted</field>
+            <field name="sequence" eval="30"/>
+            <field name="domain">[('state', '=', 'posted')]</field>
+            <field name="act_window" ref="act_invoice_in_invoice_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form5_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_in_invoice_form5"/>
+        <record model="ir.action.act_window.domain" id="act_invoice_in_invoice_domain_all">
+            <field name="name">All</field>
+            <field name="sequence" eval="9999"/>
+            <field name="domain"></field>
+            <field name="act_window" ref="act_invoice_in_invoice_form"/>
         </record>
-        <menuitem parent="menu_invoice_in_invoice_form" action="act_invoice_in_invoice_form5"
-            id="menu_invoice_in_invoice_form5" sequence="4"/>
+        <menuitem parent="menu_invoices" action="act_invoice_in_invoice_form"
+            id="menu_invoice_in_invoice_form" sequence="3"/>
 
         <record model="ir.action.act_window" id="act_invoice_in_credit_note_form">
             <field name="name">Supplier Credit Notes</field>
             <field name="res_model">account.invoice</field>
             <field name="domain">[('type', '=', 'in_credit_note')]</field>
             <field name="context">{'type': 'in_credit_note'}</field>
-            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
+            <field name="search_value"></field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form_view1">
             <field name="sequence" eval="10"/>
@@ -396,65 +187,32 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="invoice_view_form"/>
             <field name="act_window" ref="act_invoice_in_credit_note_form"/>
         </record>
-        <menuitem parent="menu_invoices" action="act_invoice_in_credit_note_form"
-            id="menu_invoice_in_credit_note_form" sequence="4"/>
-
-        <record model="ir.action.act_window" id="act_invoice_in_credit_note_form3">
-            <field name="name">Draft Supplier Credit Notes</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'in_credit_note'), ('state', '=', 'draft')]</field>
-            <field name="context">{'type': 'in_credit_note'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form3_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_in_credit_note_form3"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form3_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_in_credit_note_form3"/>
-        </record>
-        <menuitem parent="menu_invoice_in_credit_note_form" action="act_invoice_in_credit_note_form3"
-            id="menu_invoice_in_credit_note_form3" sequence="2"/>
-
-        <record model="ir.action.act_window" id="act_invoice_in_credit_note_form4">
-            <field name="name">Pro Forma Supplier Credit Notes</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'in_credit_note'), ('state', '=', 'proforma')]</field>
-            <field name="context">{'type': 'in_credit_note'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form4_view1">
+        <record model="ir.action.act_window.domain" id="act_invoice_in_credit_note_domain_draft">
+            <field name="name">Draft</field>
             <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_in_credit_note_form4"/>
+            <field name="domain">[('state', '=', 'draft')]</field>
+            <field name="act_window" ref="act_invoice_in_credit_note_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form4_view2">
+        <record model="ir.action.act_window.domain" id="act_invoice_in_credit_note_domain_validated">
+            <field name="name">Validated</field>
             <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_in_credit_note_form4"/>
-        </record>
-        <menuitem parent="menu_invoice_in_credit_note_form" action="act_invoice_in_credit_note_form4"
-            id="menu_invoice_in_credit_note_form4" sequence="3"/>
-
-        <record model="ir.action.act_window" id="act_invoice_in_credit_note_form5">
-            <field name="name">Opened Supplier Credit Notes</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'in_credit_note'), ('state', '=', 'open')]</field>
-            <field name="context">{'type': 'in_credit_note'}</field>
+            <field name="domain">[('state', '=', 'validated')]</field>
+            <field name="act_window" ref="act_invoice_in_credit_note_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form5_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_in_credit_note_form5"/>
+        <record model="ir.action.act_window.domain" id="act_invoice_in_credit_note_domain_posted">
+            <field name="name">Posted</field>
+            <field name="sequence" eval="30"/>
+            <field name="domain">[('state', '=', 'posted')]</field>
+            <field name="act_window" ref="act_invoice_in_credit_note_form"/>
         </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form5_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_in_credit_note_form5"/>
+        <record model="ir.action.act_window.domain" id="act_invoice_in_credit_note_domain_all">
+            <field name="name">All</field>
+            <field name="sequence" eval="9999"/>
+            <field name="domain"></field>
+            <field name="act_window" ref="act_invoice_in_credit_note_form"/>
         </record>
-        <menuitem parent="menu_invoice_in_credit_note_form" action="act_invoice_in_credit_note_form5"
-            id="menu_invoice_in_credit_note_form5" sequence="4"/>
+        <menuitem parent="menu_invoices" action="act_invoice_in_credit_note_form"
+            id="menu_invoice_in_credit_note_form" sequence="4"/>
 
         <record model="ir.model.access" id="access_invoice">
             <field name="model" search="[('model', '=', 'account.invoice')]"/>
@@ -492,23 +250,23 @@ this repository contains the full copyright notices and license terms. -->
             <field name="group" ref="account.group_account"/>
         </record>
 
-        <record model="ir.model.button" id="invoice_proforma_button">
-            <field name="name">proforma</field>
+        <record model="ir.model.button" id="invoice_validate_button">
+            <field name="name">validate_invoice</field>
             <field name="model" search="[('model', '=', 'account.invoice')]"/>
         </record>
         <record model="ir.model.button-res.group"
-            id="invoice_proforma_button_group_account">
-            <field name="button" ref="invoice_proforma_button"/>
+            id="invoice_validate_button_group_account">
+            <field name="button" ref="invoice_validate_button"/>
             <field name="group" ref="account.group_account"/>
         </record>
 
-        <record model="ir.model.button" id="invoice_open_button">
-            <field name="name">open</field>
+        <record model="ir.model.button" id="invoice_post_button">
+            <field name="name">post</field>
             <field name="model" search="[('model', '=', 'account.invoice')]"/>
         </record>
         <record model="ir.model.button-res.group"
-            id="invoice_open_button_group_account">
-            <field name="button" ref="invoice_open_button"/>
+            id="invoice_post_button_group_account">
+            <field name="button" ref="invoice_post_button"/>
             <field name="group" ref="account.group_account"/>
         </record>
 
@@ -537,93 +295,20 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="invoice_line_view_form">
             <field name="model">account.invoice.line</field>
             <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Invoice Line" cursor="product">
-                    <label name="invoice"/>
-                    <field name="invoice" colspan="3"/>
-                    <notebook colspan="4">
-                        <page string="General" id="general">
-                            <label name="type"/>
-                            <field name="type"/>
-                            <label name="sequence"/>
-                            <field name="sequence"/>
-                            <label name="product"/>
-                            <field name="product"/>
-                            <label name="account"/>
-                            <field name="account"/>
-                            <newline/>
-                            <label name="description"/>
-                            <field name="description" colspan="3"
-                                spell="If(Bool(Eval('_parent_invoice')), Get(Eval('_parent_invoice', {}), 'party_lang'), Eval('party_lang'))"/>
-                            <label name="quantity"/>
-                            <field name="quantity"/>
-                            <label name="unit"/>
-                            <field name="unit"/>
-                            <label name="unit_price"/>
-                            <field name="unit_price"/>
-                            <label name="amount"/>
-                            <field name="amount"/>
-                            <field name="taxes" colspan="4"/>
-                        </page>
-                        <page string="Notes" id="notes">
-                            <separator name="note" colspan="4"/>
-                            <field name="note" colspan="4"
-                                spell="If(Bool(Eval('_parent_invoice')), Get(Eval('_parent_invoice', {}), 'party_lang'), Eval('party_lang'))"/>
-                        </page>
-                    </notebook>
-                    <field name="unit_digits" invisible="1" colspan="4"/>
-                    <field name="currency_digits" invisible="1" colspan="4"/>
-                    <field name="party_lang" invisible="1" colspan="4"/>
-                </form>
-                ]]>
-            </field>
+            <field name="name">invoice_line_form</field>
         </record>
         <record model="ir.ui.view" id="invoice_line_view_tree">
             <field name="model">account.invoice.line</field>
             <field name="type">tree</field>
             <field name="priority" eval="10"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Invoice Lines">
-                    <field name="invoice"/>
-                    <field name="type"/>
-                    <field name="product"/>
-                    <field name="account"/>
-                    <field name="description"/>
-                    <field name="quantity"/>
-                    <field name="unit"/>
-                    <field name="unit_price"/>
-                    <field name="taxes"/>
-                    <field name="amount"/>
-                    <field name="unit_digits" tree_invisible="1"/>
-                    <field name="currency_digits" tree_invisible="1"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">invoice_line_tree</field>
         </record>
 
         <record model="ir.ui.view" id="invoice_line_view_tree_sequence">
             <field name="model">account.invoice.line</field>
             <field name="type">tree</field>
             <field name="priority" eval="20"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Invoice Lines" sequence="sequence">
-                    <field name="type"/>
-                    <field name="product"/>
-                    <field name="account" tree_invisible="1"/>
-                    <field name="description"/>
-                    <field name="quantity"/>
-                    <field name="unit"/>
-                    <field name="unit_price"/>
-                    <field name="taxes"/>
-                    <field name="amount" expand="1"/>
-                    <field name="unit_digits" tree_invisible="1"/>
-                    <field name="currency_digits" tree_invisible="1"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">invoice_line_tree_sequence</field>
         </record>
 
         <record model="ir.model.access" id="access_invoice_line">
@@ -645,79 +330,20 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="invoice_tax_view_form">
             <field name="model">account.invoice.tax</field>
             <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Invoice Tax">
-                    <label name="invoice"/>
-                    <field name="invoice" colspan="3"/>
-                    <label name="tax"/>
-                    <field name="tax" colspan="3"/>
-                    <label name="description"/>
-                    <field name="description"/>
-                    <label name="sequence"/>
-                    <field name="sequence"/>
-                    <label name="account"/>
-                    <field name="account"/>
-                    <label name="manual"/>
-                    <field name="manual"/>
-                    <group col="6" colspan="4" string="Tax Code" id="tax_code">
-                        <label name="amount"/>
-                        <field name="amount"/>
-                        <label name="tax_code"/>
-                        <field name="tax_code"/>
-                        <label name="tax_sign"/>
-                        <field name="tax_sign"/>
-                        <label name="base"/>
-                        <field name="base"/>
-                        <label name="base_code"/>
-                        <field name="base_code"/>
-                        <label name="base_sign"/>
-                        <field name="base_sign"/>
-                    </group>
-                </form>
-                ]]>
-            </field>
+            <field name="name">invoice_tax_form</field>
         </record>
         <record model="ir.ui.view" id="invoice_tax_view_tree">
             <field name="model">account.invoice.tax</field>
             <field name="type">tree</field>
             <field name="priority" eval="10"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Invoice Taxes">
-                    <field name="invoice"/>
-                    <field name="tax"/>
-                    <field name="description"/>
-                    <field name="account"/>
-                    <field name="manual"/>
-                    <field name="base"/>
-                    <field name="amount"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">invoice_tax_tree</field>
         </record>
 
         <record model="ir.ui.view" id="invoice_tax_view_tree_sequence">
             <field name="model">account.invoice.tax</field>
             <field name="type">tree</field>
             <field name="priority" eval="20"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Taxes" sequence="sequence">
-                    <field name="description"/>
-                    <field name="base"/>
-                    <field name="amount" expand="1"/>
-                    <field name="sequence" tree_invisible="1"/>
-                    <field name="manual" tree_invisible="1"/>
-                    <field name="base_code" tree_invisible="1"/>
-                    <field name="base_sign" tree_invisible="1"/>
-                    <field name="tax_code" tree_invisible="1"/>
-                    <field name="tax_sign" tree_invisible="1"/>
-                    <field name="account" tree_invisible="1"/>
-                    <field name="tax" tree_invisible="1"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">invoice_tax_tree_sequence</field>
         </record>
 
         <record model="ir.model.access" id="access_invoice_tax">
@@ -739,74 +365,19 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="pay_start_view_form">
             <field name="model">account.invoice.pay.start</field>
             <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Pay Invoice">
-                    <label name="amount"/>
-                    <field name="amount"/>
-                    <label name="currency"/>
-                    <field name="currency"/>
-                    <label name="description"/>
-                    <field name="description" colspan="3"/>
-                    <label name="journal"/>
-                    <field name="journal"/>
-                    <label name="date"/>
-                    <field name="date"/>
-                    <field name="currency_digits" colspan="4" invisible="1"/>
-                </form>
-                ]]>
-            </field>
+            <field name="name">pay_start_form</field>
         </record>
 
         <record model="ir.ui.view" id="pay_ask_view_form">
             <field name="model">account.invoice.pay.ask</field>
             <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Pay Invoice">
-                    <label name="type"/>
-                    <field name="type" colspan="3"/>
-                    <label name="amount"/>
-                    <field name="amount"/>
-                    <label name="currency"/>
-                    <field name="currency"/>
-                    <label name="amount_writeoff"/>
-                    <field name="amount_writeoff"/>
-                    <label name="currency_writeoff"/>
-                    <field name="currency_writeoff"/>
-                    <label name="account_writeoff"/>
-                    <field name="account_writeoff"/>
-                    <label name="journal_writeoff"/>
-                    <field name="journal_writeoff"/>
-                    <field name="lines" colspan="4"
-                        view_ids="account_invoice.move_line_view_list_to_pay"/>
-                    <field name="payment_lines" colspan="4"
-                        view_ids="account_invoice.move_line_view_list_payment"/>
-                    <field name="company" colspan="4" invisible="1"/>
-                    <field name="invoice" colspan="4" invisible="1"/>
-                </form>
-                ]]>
-            </field>
+            <field name="name">pay_ask_form</field>
         </record>
 
         <record model="ir.ui.view" id="print_warning_view_form">
             <field name="model">account.invoice.print.warning</field>
             <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Print Invoice" col="2">
-                    <image name="tryton-dialog-warning" xexpand="0" xfill="0"/>
-                    <group col="1" id="labels">
-                        <label string="You have selected more than one invoice to print."
-                            id="selected"
-                            yalign="0.0" xalign="0.0" xexpand="1"/>
-                        <label string="The invoices will be sent <i>directly</i> to the printer."
-                            id="printer"
-                            yalign="0.0" xalign="0.0" xexpand="1"/>
-                    </group>
-                </form>
-                ]]>
-            </field>
+            <field name="name">print_warning_form</field>
         </record>
 
         <record model="ir.action.wizard" id="print">
@@ -823,21 +394,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="credit_start_view_form">
             <field name="model">account.invoice.credit.start</field>
             <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Credit Invoice" col="2">
-                    <image name="tryton-dialog-information" xexpand="0"
-                        xfill="0"/>
-                    <group col="2" id="credit_refund">
-                        <label string="Are you sure to credit those/this invoice(s)?"
-                            id="credit" colspan="2"
-                            yalign="0.0" xalign="0.0" xexpand="1"/>
-                        <label name="with_refund"/>
-                        <field name="with_refund"/>
-                    </group>
-                </form>
-                ]]>
-            </field>
+            <field name="name">credit_start_form</field>
         </record>
 
         <record model="ir.action.wizard" id="credit">
@@ -856,9 +413,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="global_p" eval="True"/>
         </record>
         <record model="ir.rule" id="rule_invoice1">
-            <field name="field" search="[('name', '=', 'company'), ('model.model', '=', 'account.invoice')]"/>
-            <field name="operator">=</field>
-            <field name="operand">User/Current Company</field>
+            <field name="domain">[('company', '=', user.company.id if user.company else None)]</field>
             <field name="rule_group" ref="rule_group_invoice"/>
         </record>
 
@@ -867,9 +422,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="global_p" eval="True"/>
         </record>
         <record model="ir.rule" id="rule_invoice_line1">
-            <field name="field" search="[('name', '=', 'company'), ('model.model', '=', 'account.invoice.line')]"/>
-            <field name="operator">=</field>
-            <field name="operand">User/Current Company</field>
+            <field name="domain">[('company', '=', user.company.id if user.company else None)]</field>
             <field name="rule_group" ref="rule_group_invoice_line"/>
         </record>
     </data>
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index e31fcaf..75d2f9f 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -3,179 +3,206 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"Не може а променяте последователност на фактура ако има вече отворена "
-"фактура за финансовата година"
 
 msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
+msgid ""
+"You can not change invoice sequence in fiscal year \"%s\" because there are "
+"already posted invoices in this fiscal year."
+msgstr ""
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund a supplier invoice/credit note."
 msgstr ""
-"За финансова година трябва да имате различни последователности за фактура  "
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice that is not opened!"
-msgstr "Не можете да кредитиратe с обезщетение фактура която не е отворена!"
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
-msgstr "Не можете да кредитиратe с обезщетение фактура по която има плащане!"
+msgid "You can not credit with refund invoice \"%s\" because it is not posted."
+msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "Line with \"line\" type must have an account!"
-msgstr "Ред от вид \"line\" трябва да има сметка!"
+msgid "Line with \"line\" type must have an account."
+msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "Line without \"line\" type must have an invoice!"
-msgstr "Ред без \"ред\" трябва да има фактура!"
+msgid "Line without \"line\" type must have an invoice."
+msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
-"Не може да добавяте ред към фактура която е отворена/платена/отказана!"
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
-"Не може да създавате ред от фактура\n"
-"със сметка от различна фактурираща фирма!"
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not modify line from an invoice that is opened, paid!"
-msgstr "Не може да променяте ред от фактура която е отворена и/или платена!"
+msgid ""
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s\" "
+"because the invoice uses the same account (%(account)s)."
+msgstr ""
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not use the same account\n"
-"as on the invoice!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
 msgstr ""
-"Не може да използвате същата сметка\n"
-"като тази на фактурата!"
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"greater than the amount to pay."
 msgstr ""
-"Не може да създавате частично плащане за сума по-голяма от сумата за "
-"плащане!"
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
 msgstr "Деня от месеца трябва да бъде между 1 и 31."
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
-msgstr "Процент и Делител не съотвестват"
+msgid ""
+"Percentage and Divisor values are not consistent in line \"%(line)s\" of "
+"payment term \"%(term)s\"."
+msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr "Невалиден ред от условие за плащане!"
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
+msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
-msgstr "В условието за плащане липсва ред от напомняне!"
+msgid "Missing remainder line in payment term \"%s\"."
+msgstr ""
+
+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 ""
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using account \"%(account)s\" from company "
+"\"%(account_company)s\"."
+msgstr ""
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
+"\"%(base_code_company)s\"."
 msgstr ""
-"Не може да добавяте ред към фактура която е отворена/платена/отказана!"
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
-msgstr "Не може да променяте данък от фактура която е отворена и/или платена!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
+msgstr ""
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not modify tax \"%(tax)s\" from invoice \"%(invoice)s\" because it "
+"is posted or paid."
+msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
+"Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
+"invoice and in line \"%(line)s\"."
 msgstr ""
-"Данъчната основа е различна от тази на редовете на фактурата!\n"
-"Наново изчислете фактурата."
 
 msgctxt "error:account.invoice:"
-msgid "Invoice \"%s\" must be cancelled before deletion!"
-msgstr "Преди да бъде изтрита фактура \"%s\" трябва да бъде прекратена!"
+msgid ""
+"Invoice \"%s\" has taxes defined but not on invoice lines.\n"
+"Re-compute the invoice."
+msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"Зададени са данъци но не за редове на фактура!\n"
-"Преизчислете фактурата."
+
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion."
+msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"Данъци са зададени върху редовете на фактурата но не на фактурата!\n"
-"Преизчислете фактурата"
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
-msgstr "Лиспва кредитна сметка за дневника!"
+msgid ""
+"The credit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
-msgstr "Кредитната сметка на дневника е същата като сметката на фактурата!"
+msgid "The credit account on journal %s\" is missing."
+msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
-msgstr "Липсва дебитна сметка за дневник!"
+msgid ""
+"The debit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
-msgstr "Дебитната сметка на дневника е същата като сметката на фактурата!"
+msgid "The debit account on journal \"%s\" is missing."
+msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
-msgstr "Няма последователност за фактура върху период/финансова година!"
+msgid "The numbered invoice \"%s\" can not be deleted."
+msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
+"The period of Invoice \"%s\" is closed.\n"
+"Use the today for cancel move?"
 msgstr ""
-"Не може да създадете фактура\n"
-"със сметка на друга фактурираща фирма!"
 
 msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
-msgstr "Не може да променяте фактура която е отворена или платена!"
+msgid ""
+"There is no invoice sequence for invoice \"%(invoice)s\" on the "
+"period/fiscal year \"%(period)s\"."
+msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
-msgstr "Не може да прехвърлите в проект фактура която има движение!"
+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 ""
 
 msgctxt "error:account.invoice:"
-msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
+msgstr ""
+
+msgctxt "error:account.period:"
+msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"Не може да ползвате съшата сметка\n"
-"като тази на реда от фактурата!"
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
-"Не може а променяте последователност на фактура ако има вече отворена "
-"фактура за финансовата година"
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
-"За финансова година и една и съща фирма трябва да имате различни "
-"последователности за фактура !"
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -209,6 +236,10 @@ msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Сума за плащане днес"
 
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr ""
+
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Коментар"
@@ -437,6 +468,11 @@ msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Бележка"
 
+#, fuzzy
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr "Източник"
+
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Партньор"
@@ -893,8 +929,9 @@ msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr "Данък към фактура"
 
+#, fuzzy
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
+msgid "Invoices"
 msgstr "Всичко фактури"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
@@ -905,66 +942,18 @@ msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Кредитно известие на доставчик"
 
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Проект на кредитно известие на доставчик"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "ПРО-ФОРМА на кредитни известия на доставчик"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Отворени кредитни известия на доставчик"
-
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Фактури на доставчик"
 
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Шаблон на фактури за доставчик"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "ПРО-ФОРМА фактури за доставчик"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Отворени фактури за доставчик"
-
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Кредитни известия"
 
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Проект на кредитно известие"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "ПРО-ФОРМА на кредитни известия"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Отворени кредитни известия"
-
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Фактури"
 
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Проект на фактури"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "ПРО-ФОРМА фактури"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Отворени фактури"
-
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Условия за плащане"
@@ -985,78 +974,118 @@ msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr "Плащане на фактура"
 
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Проект"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Публикуван"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Проверен"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
+msgstr "Проект"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
+msgstr "Публикуван"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
+msgstr "Проверен"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Проект"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Публикуван"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Проверен"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
+msgstr "Проект"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr "Публикуван"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
+msgstr "Проверен"
+
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
-msgstr "Всичко фактури"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Кредитно известие на доставчик"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Проект на кредитно известие на доставчик"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "ПРО-ФОРМА на кредитни известия на доставчик"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Отворени кредитни известия на доставчик"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Фактури на доставчик"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Проект на фактури за доставчик"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "ПРО-ФОРМА фактури за доставчик"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Отворени фактури за доставчик"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Кредитни известия"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Проект на кредитно известие"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "ПРО-ФОРМА на кредитни известия"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Отворени кредитни известия"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Фактури"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Проект на фактури"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "ПРО-ФОРМА фактури"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Отворени фактури"
-
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
 msgstr "Фактури"
@@ -1138,14 +1167,6 @@ msgid "Pro forma Invoice"
 msgstr "ПРО-ФОРМА фактура"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr "ПРО-ФОРМА на кредитно известие на доставчик"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr "ПРО-ФОРМА фактура за доставчик"
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Количество"
 
@@ -1189,6 +1210,14 @@ msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "ДДС:"
 
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr ""
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Отказан"
@@ -1198,16 +1227,18 @@ msgid "Draft"
 msgstr "Проект"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr "Отворен"
-
-msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Платен"
 
+#, fuzzy
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr "ПРО-ФОРМА"
+msgid "Posted"
+msgstr "Публикуван"
+
+#, fuzzy
+msgctxt "selection:account.invoice,state:"
+msgid "Validated"
+msgstr "Проверен"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1389,10 +1420,6 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Бележки"
 
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr "Продукти"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr "Плащане на фактура"
@@ -1414,14 +1441,6 @@ msgid "Payment Term"
 msgstr "Условие за плащане"
 
 msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr "Ред от условие за плащане"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr "Ред от условие за плащане"
-
-msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Условия за плащане"
 
@@ -1454,16 +1473,12 @@ msgid "Taxes"
 msgstr "Данъци"
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
-msgstr "Сума в допълнителна валута"
-
-msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr "Кредит"
+msgid "Also known as Pro Forma"
+msgstr ""
 
 msgctxt "view:account.invoice:"
-msgid "Debit"
-msgstr "Дебит"
+msgid "Are you sure to cancel the invoice?"
+msgstr ""
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
@@ -1474,10 +1489,6 @@ msgid "Invoices"
 msgstr "Фактури"
 
 msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr "Редове"
-
-msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Друга информация"
 
@@ -1485,17 +1496,10 @@ msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Плащане"
 
+#, fuzzy
 msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr "Редове от плащане"
-
-msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr "ПРО ФОРМА"
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
-msgstr "Данъци"
+msgid "Validate"
+msgstr "Проверка"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
@@ -1506,16 +1510,12 @@ msgid "_Draft"
 msgstr "Проект"
 
 msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr "Отваряне"
-
-msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "Плащане"
 
 msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
-msgstr "Изпращане в проект"
+msgid "_Post"
+msgstr ""
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 8016805..7caaac2 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -3,183 +3,267 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"No podeu canviar la seqüència d'una factura si ja hi ha una factura oberta "
-"en l'exercici fiscal."
+"L'any fiscal \"%(first)s\" i \"%(second)s\" tenen la mateixa seqüència de "
+"facturació."
 
 msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
-msgstr "Heu de tenir diferents seqüències de factura per exercici fiscal."
+msgid ""
+"You can not change invoice sequence in fiscal year \"%s\" because there are "
+"already posted invoices in this fiscal year."
+msgstr ""
+"No podeu canviar la seqüència de factures a l'any fiscal \"%s\" perquè ja hi"
+" han factures confirmades a aquest any fiscal."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice that is not opened!"
+msgid "You can not credit with refund a supplier invoice/credit note."
 msgstr ""
-"No podeu fer un abonament amb devolució des d'una factura que no estigui "
-"oberta."
+"No podeu pagar amb una devolución una factura de proveïdor o abonament de "
+"client."
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgstr "No podeu pagar amb la factura de devolución \"%s\" perquè té pagaments."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
+msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
-"No podeu fer un abonament amb devolució des d'una factura amb pagaments."
+"No podeu pagar amb la factura de devolución \"%s\" perquè no està "
+"confirmada."
 
 msgctxt "error:account.invoice.line:"
-msgid "Line with \"line\" type must have an account!"
-msgstr "Una línia del tipus \"línia\" ha de tenir un compte."
+msgid "Line with \"line\" type must have an account."
+msgstr "La línia de tipus \"línia\" ha de tenir un compte."
 
 msgctxt "error:account.invoice.line:"
-msgid "Line without \"line\" type must have an invoice!"
-msgstr "Una línia sense el tipus \"línia\" ha de tenir una factura."
+msgid "Line without \"line\" type must have an invoice."
+msgstr "La línia sense tipus \"línia\" ha de tenir una factura."
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
-"No podeu afegir una línia a una factura que està oberta, pagada o "
+"No podeu afegir una línia a la factura \"%(invoice)s\" confirmada, pagada o "
 "cancel·lada."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
-"No podeu crear una línia de factura\n"
-"amb un compte d'una empresa diferent de la que factura."
+"No podeu crear la línia de factura \"%(line)s\" a la factura \"%(Invoice)s\""
+" de l'empresa \"%(invoice_line_company)s\" perquè el compte \"%(account)s\" "
+"té l'empresa \"%(account_company)s \"."
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not modify line from an invoice that is opened, paid!"
-msgstr "No podeu modificar les línies d'una factura que està oberta o pagada."
+msgid ""
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s\" "
+"because the invoice uses the same account (%(account)s)."
+msgstr ""
+"No podeu crear la línia de factura \"%(line)s\" a la factura \"%(invoice)s\""
+" perquè la factura utilitza el mateix compte (%(account)s)."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not use the same account\n"
-"as on the invoice!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
 msgstr ""
-"No podeu utilitzar el mateix compte\n"
-"que en la factura."
+"No podeu modificar la línia \"%(line)s\" de la factura \"%(invoice)s\", "
+"confirmada o pagada."
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"greater than the amount to pay."
 msgstr ""
-"No podeu crear un pagament parcial amb un import major que l'import a pagar."
+"No podeu crear un pagament parcial a la factura \"%s\" per un import més "
+"gran que l'import a pagar."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
 msgstr "El dia del mes ha d'estar entre 1 i 31."
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
-msgstr "Els valors percentatge i divisor no són coherents."
+msgid ""
+"Percentage and Divisor values are not consistent in line \"%(line)s\" of "
+"payment term \"%(term)s\"."
+msgstr ""
+"Percentatge i divisor no són consistents a la línia \"%(line)s\" del termini"
+" de pagament \"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr "La línia del termini de pagament no és correcta."
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
+msgstr "La linea \"%(line)s\" del termini de pagament \"%(term)s\" no és correcte."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
-msgstr "Al termini de pagament li falta una línia amb el remanent."
+msgid "Missing remainder line in payment term \"%s\"."
+msgstr "Falta la línia de resta la termini de pagament \"%s\"."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add line \"%(line)s\" to invoice \"%(invoice)s\" because it is "
+"posted, paid or canceled."
 msgstr ""
-"No podeu afegir una línia a una factura que està oberta, pagada o "
-"cancel·lada."
+"No podeu afegir la línia \"%(line)s\" a la factura \"%(invoice)s\" perque "
+"està confirmada, pagada o cancel·lada."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using account \"%(account)s\" from company "
+"\"%(account_company)s\"."
 msgstr ""
-"No podeu modificar els impostos d'una factura que està oberta o pagada."
+"No podeu crear la factura \"%(Invoice)s\" a l'empresa "
+"\"%(invoice_company)s\" utilitzant el compte \"%(account)s\" de l'empresa "
+"\"%(account_company)s\"."
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
+"\"%(base_code_company)s\"."
+msgstr ""
+"No podeu crear la factura \"%(invoice)s\" de la empresa "
+"\"%(invoice_company)s\" utilitzant el codi d'impostos base \"%(base_code)s\""
+" de la empresa \"%(base_code_company)s\"."
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
+msgstr ""
+"No podeu crear la factura \"%(invoice)s\" de la empresa "
+"\"%(invoice_company)s\" utilitzant el codi d'impostos base \"%(tax_code)s\" "
+"de la empresa \"%(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 ""
+"No podeu modificar l'impost \"%(tax)s\" de la factura \"%(invoice)s\" perquè"
+" està confirmada o pagada."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
+"Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
+"invoice and in line \"%(line)s\"."
 msgstr ""
-"Els impostos base són diferents de les línies de la factura.\n"
-"Recalculeu la factura."
+"La factura \"%(invoice)s\" utilitza el mateix compte \"%(account)s\" per la "
+"factura i la línia \"%(line)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "Invoice \"%s\" must be cancelled before deletion!"
-msgstr "La factura \"%s\" ha de ser cancel·lada abans d'eliminar-la."
+msgid ""
+"Invoice \"%s\" has taxes defined but not on invoice lines.\n"
+"Re-compute the invoice."
+msgstr ""
+"La factura \"%s\" té impostos definits però no a les línies de factura.\n"
+"Re-calculeu la factura."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"Els impostos estan definits a la factura però cap a les línies de la factura.\n"
+"La factura \"%s\" té impostos a les línies de factura que no hi són a la factura.\n"
 "Recalculeu la factura."
 
 msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion."
+msgstr "Heu de cancel·lar la factura \"%s\" abans de ser eliminada."
+
+msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"Els impostos estan definits a les línies de la factura però no a la factura.\n"
-"Recalculeu la factura."
+"La base dels impostos de la factura \"%s\" és diferent de les de les línias de la factura.\n"
+"Re-calculeu la factura."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
-msgstr "Falta el compte haver del diari."
+msgid ""
+"The credit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
+"El compte haver del diari \"%(journal)s\" és el mateix que el compte de la "
+"factura \"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
-msgstr "El compte haver del diari és el mateix que el de la factura."
+msgid "The credit account on journal %s\" is missing."
+msgstr "Falta el compte haver del diari \"%s\"."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
-msgstr "Falta el compte deure del diari."
+msgid ""
+"The debit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
+"El compte deure del diari \"%(journal)s\" és el mateix que el compte de la "
+"factura \"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
-msgstr "El compte deure del diari és el mateix que el de la factura."
+msgid "The debit account on journal \"%s\" is missing."
+msgstr "Falta el compte deure del diari \"%s\"."
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
-msgstr "No existeix una seqüència de factura pel període/exercici fiscal."
+msgid "The numbered invoice \"%s\" can not be deleted."
+msgstr "No es pot esborrar la factura numerada \"%s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
+"The period of Invoice \"%s\" is closed.\n"
+"Use the today for cancel move?"
 msgstr ""
-"No podeu crear una factura\n"
-"amb un compte d'una empresa diferent de la que factura."
+"El període de la factura \"%s\" està tancat.\n"
+"¿Usa l'actual per l'assentament de cancel·lació?"
 
 msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
-msgstr "No podeu modificar una factura que està oberta o pagada."
+msgid ""
+"There is no invoice sequence for invoice \"%(invoice)s\" on the "
+"period/fiscal year \"%(period)s\"."
+msgstr ""
+"No hi ha seqüència de factura per la factura \"%(invoice)s\" al període/any "
+"fiscal \"%(period)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
-msgstr "No podeu posar en esborrany una factura que té assentament."
+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 podeu crear la factura \"%(invoice)s\" a l'empresa "
+"\"%(invoice_company)s\" perquè el compte \"%(account)s\" té una empresa "
+"(%(account_company)s) diferent."
 
 msgctxt "error:account.invoice:"
-msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
 msgstr ""
-"No podeu utilitzar el mateix compte\n"
-"que en la línia de la factura."
+"No podeu modificar la factura \"%(invoice)s\" perquè està confirmada, pagada"
+" o cancel·lada."
+
+msgctxt "error:account.period:"
+msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
+msgstr ""
+"Els períodes \"%(first)s\" i \"%(second)s\" tenen la mateixa seqüència de "
+"factura."
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
-"No podeu canviar la seqüència d'una factura si ja hi ha una factura oberta "
-"en el període."
+"El període \"%(period)s\" ha de tenir la mateixa empresa i any fiscal "
+"(%(fiscalyear)s)."
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
-"Heu de tenir diferents seqüències de factura per exercici fiscal en la "
-"mateixa empresa."
+"No podeu canviar la seqüència de factures al període \"%s\" perquè ja hi han"
+" factures confirmades a aquest període."
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -213,6 +297,10 @@ msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Import a pagar avui"
 
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr "Cancel·la assentament"
+
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Comentari"
@@ -239,7 +327,7 @@ msgstr "Data moneda"
 
 msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígits de la moneda"
+msgstr "Decimals de la moneda"
 
 msgctxt "field:account.invoice,description:"
 msgid "Description"
@@ -415,7 +503,7 @@ msgstr "Moneda"
 
 msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígits de la moneda"
+msgstr "Decimals de la moneda"
 
 msgctxt "field:account.invoice.line,description:"
 msgid "Description"
@@ -441,6 +529,10 @@ msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Nota"
 
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr "Origen"
+
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Tercer"
@@ -599,7 +691,7 @@ msgstr "Moneda"
 
 msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígits de la moneda"
+msgstr "Decimals de la moneda"
 
 msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
@@ -675,7 +767,7 @@ msgstr "Moneda"
 
 msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígits de la moneda"
+msgstr "Decimals de la moneda"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
@@ -839,7 +931,7 @@ msgstr "Factura"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr "Termini pagament del client"
+msgstr "Termini de pagament del client"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
@@ -898,7 +990,7 @@ msgid "Invoice Tax"
 msgstr "Impost de factura"
 
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
+msgid "Invoices"
 msgstr "Totes les factures"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
@@ -909,66 +1001,18 @@ msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Abonaments de proveïdor"
 
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Abonaments de proveïdor esborrany"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Abonaments de proveïdor Pro Forma"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Abonaments de proveïdor oberts"
-
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Factures de proveïdor"
 
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Factures de proveïdor esborrany"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Factures de proveïdor Pro Forma"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Factures de proveïdor obertes"
-
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Abonaments"
 
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Abonaments esborrany"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Abonaments Pro Forma"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Abonaments oberts"
-
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Factures"
 
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Factures esborrany"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Factures Pro Forma"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Factures obertes"
-
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Terminis de pagament"
@@ -989,77 +1033,105 @@ msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr "Paga factura"
 
-msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
-msgid "Invoice"
-msgstr "Factura"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
+msgstr "Tot"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
-msgstr "Totes les factures"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Esborrany"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
-msgid "Supplier Credit Notes"
-msgstr "Abonaments de proveïdor"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Confirmat"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validat"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
+msgstr "Tot"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
 msgstr "Esborrany"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Pro Forma"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
+msgstr "Confirmat"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Oberts"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validat"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
-msgid "Supplier Invoices"
-msgstr "Factures de proveïdor"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
+msgstr "Tot"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
 msgstr "Esborrany"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Pro Forma"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Confirmat"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Obertes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validat"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
-msgid "Credit Notes"
-msgstr "Abonaments"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
+msgstr "Tot"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
 msgstr "Esborrany"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Pro Forma"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr "Confirmat"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Oberts"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validat"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
-msgid "Invoices"
-msgstr "Factures"
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Factura"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Esborrany"
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Abonaments de proveïdor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Factures de proveïdor"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Pro Forma"
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Abonaments"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Obertes"
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Factures"
 
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
@@ -1142,14 +1214,6 @@ msgid "Pro forma Invoice"
 msgstr "Factura Pro Forma"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr "Abonament de proveïdor Pro Forma"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr "Factura de proveïdor Pro Forma"
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Quantitat"
 
@@ -1193,6 +1257,14 @@ msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "CIF/NIF:"
 
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr "Abonament de proveïdor validat"
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr "Factura de proveïdor validada"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Cancel·lada"
@@ -1202,16 +1274,16 @@ msgid "Draft"
 msgstr "Esborrany"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr "Oberta"
-
-msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Pagada"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr "Pro Forma"
+msgid "Posted"
+msgstr "Confirmat"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Validated"
+msgstr "Validat"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1251,7 +1323,7 @@ msgstr "Comentari"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
-msgstr "Línia"
+msgstr "Linea"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
@@ -1337,10 +1409,9 @@ msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Remainder"
 msgstr "Remanent"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
-msgstr "Servidor"
+msgstr " "
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Friday"
@@ -1447,6 +1518,14 @@ msgid "Taxes"
 msgstr "Impostos"
 
 msgctxt "view:account.invoice:"
+msgid "Also known as Pro Forma"
+msgstr "També coneguda com a pro-forma."
+
+msgctxt "view:account.invoice:"
+msgid "Are you sure to cancel the invoice?"
+msgstr "Esteu segur de cancel·lar aquesta factura?"
+
+msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
@@ -1463,8 +1542,8 @@ msgid "Payment"
 msgstr "Pagament"
 
 msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr "Pro For_ma"
+msgid "Validate"
+msgstr "Valida"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
@@ -1475,13 +1554,13 @@ msgid "_Draft"
 msgstr "_Esborrany"
 
 msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr "_Obre"
-
-msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Paga"
 
+msgctxt "view:account.invoice:"
+msgid "_Post"
+msgstr "_Confirma"
+
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
 msgstr "Import segona moneda"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index b8ca226..18e42b9 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -3,55 +3,64 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
 
 msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
+msgid ""
+"You can not change invoice sequence in fiscal year \"%s\" because there are "
+"already posted invoices in this fiscal year."
+msgstr ""
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund a supplier invoice/credit note."
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice that is not opened!"
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
+msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "Line with \"line\" type must have an account!"
+msgid "Line with \"line\" type must have an account."
 msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "Line without \"line\" type must have an invoice!"
+msgid "Line without \"line\" type must have an invoice."
 msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not modify line from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s\" "
+"because the invoice uses the same account (%(account)s)."
 msgstr ""
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not use the same account\n"
-"as on the invoice!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
 msgstr ""
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"greater than the amount to pay."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term.line:"
@@ -59,97 +68,140 @@ msgid "Day of month must be between 1 and 31."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
+msgid ""
+"Percentage and Divisor values are not consistent in line \"%(line)s\" of "
+"payment term \"%(term)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
+msgid "Missing remainder line in payment term \"%s\"."
+msgstr ""
+
+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 ""
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using account \"%(account)s\" from company "
+"\"%(account_company)s\"."
+msgstr ""
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
+"\"%(base_code_company)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
+msgid ""
+"You can not modify tax \"%(tax)s\" from invoice \"%(invoice)s\" because it "
+"is posted or paid."
 msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
+"Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
+"invoice and in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgid ""
+"Invoice \"%s\" has taxes defined but not on invoice lines.\n"
+"Re-compute the invoice."
 msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
 
 msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion."
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
+msgid ""
+"The credit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
 msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
+msgid "The credit account on journal %s\" is missing."
 msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
+msgid ""
+"The debit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
 msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
+msgid "The debit account on journal \"%s\" is missing."
 msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
+msgid "The numbered invoice \"%s\" can not be deleted."
 msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
+"The period of Invoice \"%s\" is closed.\n"
+"Use the today for cancel move?"
 msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
+msgid ""
+"There is no invoice sequence for invoice \"%(invoice)s\" on the "
+"period/fiscal year \"%(period)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
+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 ""
 
 msgctxt "error:account.invoice:"
-msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
+msgstr ""
+
+msgctxt "error:account.period:"
+msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
@@ -184,6 +236,10 @@ msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr ""
 
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr ""
+
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr ""
@@ -412,6 +468,10 @@ msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr ""
 
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr ""
+
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr ""
@@ -869,7 +929,7 @@ msgid "Invoice Tax"
 msgstr ""
 
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
+msgid "Invoices"
 msgstr ""
 
 msgctxt "model:ir.action,name:act_invoice_form2"
@@ -880,66 +940,18 @@ msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr ""
 
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr ""
-
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr ""
 
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr ""
-
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr ""
 
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr ""
-
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr ""
 
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr ""
-
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr ""
@@ -960,76 +972,104 @@ msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr ""
 
-msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
-msgid "Invoice"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
-msgid "Supplier Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
-msgid "Supplier Invoices"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
-msgid "Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
-msgid "Invoices"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr ""
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
 msgstr ""
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
 msgstr ""
 
 msgctxt "model:ir.ui.menu,name:menu_invoices"
@@ -1113,14 +1153,6 @@ msgid "Pro forma Invoice"
 msgstr ""
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr ""
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr ""
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr ""
 
@@ -1164,6 +1196,14 @@ msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr ""
 
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr ""
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr ""
@@ -1173,15 +1213,15 @@ msgid "Draft"
 msgstr ""
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
+msgid "Paid"
 msgstr ""
 
 msgctxt "selection:account.invoice,state:"
-msgid "Paid"
+msgid "Posted"
 msgstr ""
 
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
+msgid "Validated"
 msgstr ""
 
 msgctxt "selection:account.invoice,type:"
@@ -1364,10 +1404,6 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr ""
 
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr ""
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr ""
@@ -1389,14 +1425,6 @@ msgid "Payment Term"
 msgstr ""
 
 msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr ""
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr ""
-
-msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr ""
 
@@ -1429,15 +1457,11 @@ msgid "Taxes"
 msgstr ""
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
+msgid "Also known as Pro Forma"
 msgstr ""
 
 msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr ""
-
-msgctxt "view:account.invoice:"
-msgid "Debit"
+msgid "Are you sure to cancel the invoice?"
 msgstr ""
 
 msgctxt "view:account.invoice:"
@@ -1449,10 +1473,6 @@ msgid "Invoices"
 msgstr ""
 
 msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr ""
-
-msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr ""
 
@@ -1461,15 +1481,7 @@ msgid "Payment"
 msgstr ""
 
 msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr ""
-
-msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr ""
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
+msgid "Validate"
 msgstr ""
 
 msgctxt "view:account.invoice:"
@@ -1481,15 +1493,11 @@ msgid "_Draft"
 msgstr ""
 
 msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr ""
-
-msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr ""
 
 msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
+msgid "_Post"
 msgstr ""
 
 msgctxt "view:account.move.line:"
diff --git a/locale/de_DE.po b/locale/de_DE.po
index cce601a..83ea1a7 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -3,188 +3,277 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine "
-"Rechnung im laufenden Buchungsjahr fakturiert wurde."
+"Geschäftsjahre \"%(first)s\" und \"%(second)s\" haben denselben Nummernkreis"
+" für Rechnungen zugeordnet."
 
 msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
+msgid ""
+"You can not change invoice sequence in fiscal year \"%s\" because there are "
+"already posted invoices in this fiscal year."
+msgstr ""
+"Der Rechnungsnummernkreis für Geschäftsjahr \"%s\" kann nicht mehr geändert "
+"werden, weil es bereits festgeschriebene Rechnungen in diesem Geschäftsjahr "
+"gibt."
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund a supplier invoice/credit note."
 msgstr ""
-"Für unterschiedliche Geschäftsjahre müssen jeweils eigene "
-"Rechnungsnummernkreise erstellt werden!"
+"Lieferantenrechnungen/-gutschriften können nicht mit Verrechnung erstellt "
+"werden."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice that is not opened!"
-msgstr "Nur Rechnungen im Status 'Fakturiert' können verrechnet werden!"
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgstr ""
+"Rechnung \"%s\" kann nicht mit Verrechnung gutgeschrieben werden, da bereits"
+" Zahlungen erfolgt sind."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
+msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
-"Die Verrechnung einer Rechnung ist nicht möglich, wenn bereits Zahlungen für"
-" diese gebucht sind!"
+"Rechnung \"%s\" kann nicht mit Verrechnung gutgeschrieben werden, da sie "
+"nocht nicht festgeschrieben ist."
 
 msgctxt "error:account.invoice.line:"
-msgid "Line with \"line\" type must have an account!"
-msgstr "Eine Zeile vom Typ \"Position\" muss einem Konto zugeordnet sein!"
+msgid "Line with \"line\" type must have an account."
+msgstr ""
+"Auf einer Zeile vom Typ \"Rechnungsposition\" muss ein Konto eingetragen "
+"sein."
 
 msgctxt "error:account.invoice.line:"
-msgid "Line without \"line\" type must have an invoice!"
+msgid "Line without \"line\" type must have an invoice."
 msgstr ""
-"Eine Zeile, die nicht vom Typ \"Position\" ist, muss einer Rechnung "
-"zugeordnet sein!"
+"Eine Zeile, die nicht vom Typ \"Rechnungsposition\" ist, muss einer Rechnung"
+" zugeordnet werden."
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
-"Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine"
-" neue Position hinzugefügt werden!"
+"Zu Rechnung \"%(invoice)s\" kann keine Zeile mehr hinzugefügt werden, da sie"
+" festgeschrieben, bezahlt oder annulliert ist."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
-"Eine Rechnungsposition kann sich nicht\n"
-"auf ein Konto eines anderen Unternehmens beziehen!"
+"Erstellung von Rechnungsposition \"%(line)s\" in Rechnung \"%(invoice)s\" "
+"von Unternehmen \"%(invoice_line_company)s\" nicht möglich, weil das Konto "
+"\"%(account)s\" zu Unternehmen \"%(account_company)s\" gehört."
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not modify line from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s\" "
+"because the invoice uses the same account (%(account)s)."
 msgstr ""
-"Positionen von fakturierten oder bezahlten Rechnungen können nicht geändert "
-"werden!"
+"Erstellung von Rechnungsposition \"%(line)s\" in Rechnung \"%(invoice)s\" "
+"nicht möglich, weil das Konto (%(account)s) auf der Rechnung verwendet wird."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not use the same account\n"
-"as on the invoice!"
-msgstr "Es kann nicht das selbe Konto wie für die Rechnung verwendet werden!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
+msgstr ""
+"Änderung von Position \"%(line)s\" in Rechnung \"%(invoice)s\" nicht "
+"möglich, da diese festgeschrieben oder bezahlt ist."
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"greater than the amount to pay."
 msgstr ""
-"Ein Teilbetrag kann nicht größer als der Gesamtbetrag der Rechnung sein."
+"Für Rechnung \"%s\" kann keine Teilzahlung erstellt werden, deren Betrag "
+"größer als der zu zahlende Betrag ist."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
 msgstr "Tag des Monats muss zwischen 1 und 31 sein."
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
-msgstr "Die Werte von Prozentsatz und Divisor sind nicht konsistent."
+msgid ""
+"Percentage and Divisor values are not consistent in line \"%(line)s\" of "
+"payment term \"%(term)s\"."
+msgstr ""
+"Werte für Prozentsatz und Divisor sind nicht konsistent in Zeile "
+"\"%(line)s\" von Zahlungsbedingung \"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr "Ungültige Position in Zahlungsbedingung!"
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
+msgstr "Ungültige Zeile \"%(line)s\" in Zahlungsbedingung \"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
-msgstr "In der Zahlungsbedingung fehlt eine Restbetragsposition!"
+msgid "Missing remainder line in payment term \"%s\"."
+msgstr "Fehlende Restzeile in Zahlungsbedingung \"%s\"."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add line \"%(line)s\" to invoice \"%(invoice)s\" because it is "
+"posted, paid or canceled."
 msgstr ""
-"Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine"
-" neue Position hinzugefügt werden!"
+"Zu Rechnung \"%(invoice)s\" kann Zeile \"%(line)s\" nicht  mehr hinzugefügt "
+"werden, da sie festgeschrieben, bezahlt oder annulliert ist."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using account \"%(account)s\" from company "
+"\"%(account_company)s\"."
 msgstr ""
-"Steuern von fakturierten oder bezahlten Rechnungen können nicht geändert "
-"werden!"
+"Rechnungserstellung für \"%(invoice)s\" in Unternehmen "
+"\"%(invoice_company)s\" nicht möglich, weil Konto \"%(account)s\" zu einem "
+"anderen Unternehmen gehört (%(account_company)s)."
 
-msgctxt "error:account.invoice:"
+msgctxt "error:account.invoice.tax:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
-msgstr "Steuern stimmen nicht mit den Rechnungspositionen überein!"
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
+"\"%(base_code_company)s\"."
+msgstr ""
+"Rechnungserstellung für \"%(invoice)s\" in Unternehmen "
+"\"%(invoice_company)s\" nicht möglich, weil Steuersatz mit Code "
+"\"%(base_code)s\" zu einem anderen Unternehmen gehört "
+"(%(base_code_company)s)."
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
+msgstr ""
+"Rechnungserstellung für \"%(invoice)s\" in Unternehmen "
+"\"%(invoice_company)s\" nicht möglich, weil Steuer mit Code \"%(tax_code)s\""
+" zu einem anderen Unternehmen gehört (%(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 ""
+"Änderung von Steuer \"%(tax)s\" in Rechnung \"%(invoice)s\" nicht möglich, "
+"weil sie in Status \"Festgeschrieben\" oder \"Bezahlt\" ist."
 
 msgctxt "error:account.invoice:"
-msgid "Invoice \"%s\" must be cancelled before deletion!"
-msgstr "Rechnung \"%s\" muss annulliert werden, bevor sie gelöscht werden kann."
+msgid ""
+"Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
+"invoice and in line \"%(line)s\"."
+msgstr ""
+"Rechnung \"%(invoice)s\" bezieht sich auf dasselbe Konto \"%(account)s\" für"
+" Rechnung und in Zeile \"%(line)s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
+"Invoice \"%s\" has taxes defined but not on invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"Es sind Steuern definiert, allerdings nicht in den Rechnungspositionen!\n"
-"Bitte lassen Sie die Rechnung erneut berechnen."
+"Rechnung \"%s\" weist Steuern aus, allerdings nicht auf den Rechnungspositionen.\n"
+"Führen Sie die Berechnung der Rechnung nochmals aus."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"Steuern sind für die Rechnungspositionen definiert, allerdings nicht für die Rechnung selbst!\n"
-"Bitte lassen Sie die Rechnung erneut berechnen."
+"Rechnung \"%s\" weist Steuern auf Rechnungspositionen aus, die nicht in der Rechnung enthalten sind.\n"
+"Führen Sie die Berechnung der Rechnung nochmals aus."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
-msgstr "Haben-Konto im Journal fehlt!"
+msgid "Invoice \"%s\" must be cancelled before deletion."
+msgstr ""
+"Die Rechnung \"%s\" muss annulliert werden, bevor sie gelöscht werden kann."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
-msgstr "Das Habenkonto des Journals ist das selbe wie das Rechnungskonto!"
+msgid ""
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
+"Re-compute the invoice."
+msgstr ""
+"Rechnung \"%s\" weist Steuersätze aus, die unterschiedlich von den Rechnungspositionen sind.\n"
+"Führen Sie die Berechnung der Rechnung nochmals aus."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
-msgstr "Soll-Konto im Journal fehlt"
+msgid ""
+"The credit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
+"Das Habenkonto in Journal \"%(journal)s\" ist dasselbe wie das von Rechnung "
+"\"%(invoice)s\"'."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
-msgstr "Das Sollkonto des Journals ist das selbe wie das Rechnungskonto!"
+msgid "The credit account on journal %s\" is missing."
+msgstr "Fehlendes Habenkonto in Journal \"%s\"."
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
+msgid ""
+"The debit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
 msgstr ""
-"Rechnungsnummernkreis für diese Periode oder dieses Buchungsjahr fehlt!"
+"Das Sollkonto in Journal \"%(journal)s\" ist dasselbe wie das von Rechnung "
+"\"%(invoice)s\"'."
+
+msgctxt "error:account.invoice:"
+msgid "The debit account on journal \"%s\" is missing."
+msgstr "Fehlendes Sollkonto in Journal \"%s\"."
+
+msgctxt "error:account.invoice:"
+msgid "The numbered invoice \"%s\" can not be deleted."
+msgstr "Rechnung Nummer \"%s\" kann nicht gelöscht werden."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
+"The period of Invoice \"%s\" is closed.\n"
+"Use the today for cancel move?"
 msgstr ""
-"Es können keine Rechnungen mit einem Konto von einer anderen "
-"rechnungsstellenden Firma angelegt werden"
+"Die Buchungsperiode von Rechnung \"%s\" ist geschlossen.\n"
+"Soll das heutige Datum für die Stornobuchung verwendet werden?"
 
 msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
-msgstr "Fakturierte oder bezahlte Rechnungen können nicht geändert werden!"
+msgid ""
+"There is no invoice sequence for invoice \"%(invoice)s\" on the "
+"period/fiscal year \"%(period)s\"."
+msgstr ""
+"Fehlender Nummernkreis für Rechnung \"%(invoice)s\" in "
+"Buchungsperiode/Geschäftsjahr \"%(period)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
+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 ""
-"Eine Rechnung, die Buchungen enthält, kann nicht auf Entwurf zurückgesetzt "
-"werden!"
+"Rechnungserstellung für \"%(invoice)s\" in Unternehmen "
+"\"%(invoice_company)s\" nicht möglich, weil Konto \"%(account)s\" zu einem "
+"anderen Unternehmen gehört (%(account_company)s)."
 
 msgctxt "error:account.invoice:"
-msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
 msgstr ""
-"Es kann nicht das selbe Konto wie für die Rechnungsposition verwendet "
-"werden!"
+"Änderung von Rechnung \"%s\" nicht möglich, weil sie in Status "
+"\"Festgeschrieben\", \"Bezahlt\" oder \"Annulliert\" ist."
+
+msgctxt "error:account.period:"
+msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
+msgstr ""
+"Für die Buchungsperioden \"%(first)s\" und \"%(second)s\" ist derselbe "
+"Rechnungsnummernkreis eingetragen."
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
-"Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine "
-"Rechnung in der laufenden Periode fakturiert wurde."
+"Buchungsperioden \"%(period)s\" müssen demselben Unternehmen zugeordnet sein"
+" wie das Geschäftsjahr (%(fiscalyear)s)."
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
-"Für unterschiedliche Geschäftsjahre eines Unternehmens müssen jeweils eigene"
-" Rechnungsnummernkreise erstellt werden!"
+"Der Rechnungsnummernkreis für Buchungsperiode\"%s\" kann nicht mehr geändert"
+" werden, weil es bereits festgeschriebene Rechnungen in dieser "
+"Buchungsperiode gibt."
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -218,6 +307,10 @@ msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Zahlbarer Betrag (heute)"
 
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr "Stornobuchungssatz"
+
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Kommentar"
@@ -446,6 +539,10 @@ msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Notiz"
 
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr "Herkunft"
+
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Partei"
@@ -905,77 +1002,29 @@ msgid "Invoice Tax"
 msgstr "Rechnung Steuer"
 
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
-msgstr "Alle Rechnungen/Gutschriften"
+msgid "Invoices"
+msgstr "Rechnungsausgang"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
 msgid "Invoices"
-msgstr "Rechnungen"
+msgstr "Rechnungsausgang"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Gutschriften von Lieferanten"
 
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Entwürfe Lieferantengutschriften"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Pro Forma Lieferantengutschriften"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Fakturierte Lieferantengutschriften"
-
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Rechnungseingang"
 
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Entwürfe Lieferantenrechnungen"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Pro Forma Lieferantenrechnungen"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Fakturierte Lieferantenrechnungen"
-
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Gutschriften an Kunden"
 
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Entwürfe Kundengutschriften"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Pro Forma Kundengutschriften"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Fakturierte Kundengutschriften"
-
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Rechnungsausgang"
 
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Entwürfe Kundenrechnungen"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Pro Forma Kundenrechnungen"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Fakturierte Kundenrechnungen"
-
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Zahlungsbedingungen"
@@ -990,84 +1039,112 @@ msgstr "Rechnungsadresse"
 
 msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
-msgstr "Rechnung"
+msgstr "Rechnungsadresse"
 
 msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr "Rechnung bezahlen"
 
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
+msgstr "Alle"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Entwurf"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Festgeschrieben"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Geprüft"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
+msgstr "Alle"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
+msgstr "Entwurf"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
+msgstr "Festgeschrieben"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
+msgstr "Geprüft"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
+msgstr "Alle"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Entwurf"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Festgeschrieben"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Geprüft"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
+msgstr "Alle"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
+msgstr "Entwurf"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr "Festgeschrieben"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
+msgstr "Geprüft"
+
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
 msgstr "Rechnung"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
-msgstr "Alle Rechnungen/Gutschriften"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Gutschriften von Lieferanten"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Entwürfe Lieferantengutschriften"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Pro Forma Lieferantengutschriften"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Fakturierte Lieferantengutschriften"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Rechnungseingang"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Entwürfe Lieferantenrechnungen"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Pro Forma Lieferantenrechnungen"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Fakturierte Lieferantenrechnungen"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Gutschriften an Kunden"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Entwürfe Kundengutschriften"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Pro Forma Kundengutschriften"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Fakturierte Kundengutschriften"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Rechnungsausgang"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Entwürfe Kundenrechnungen"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Pro Forma Kundenrechnungen"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Fakturierte Kundenrechnungen"
-
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
 msgstr "Rechnungen"
@@ -1149,14 +1226,6 @@ msgid "Pro forma Invoice"
 msgstr "Rechnung Pro Forma"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr "Gutschrift Pro Forma"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr "Rechnung Pro Forma"
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Anzahl"
 
@@ -1200,6 +1269,14 @@ msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "USt-ID-Nr:"
 
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr "Geprüfte Lieferantengutschrift"
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr "Geprüfte Lieferantenrechnung"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Annulliert"
@@ -1209,16 +1286,16 @@ msgid "Draft"
 msgstr "Entwurf"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr "Fakturiert"
-
-msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Bezahlt"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr "Pro Forma"
+msgid "Posted"
+msgstr "Festgeschrieben"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Validated"
+msgstr "Geprüft"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1400,10 +1477,6 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notizen"
 
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr "Artikel"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr "Rechnung bezahlen"
@@ -1425,14 +1498,6 @@ msgid "Payment Term"
 msgstr "Zahlungsbedingung"
 
 msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr "Zahlungsbedingung Position"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr "Positionen Zahlungsbedingung"
-
-msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Zahlungsbedingung"
 
@@ -1465,16 +1530,12 @@ msgid "Taxes"
 msgstr "Steuern"
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
-msgstr "Betrag Zweitwährung"
+msgid "Also known as Pro Forma"
+msgstr "Auch bekannt als Proforma"
 
 msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr "Haben"
-
-msgctxt "view:account.invoice:"
-msgid "Debit"
-msgstr "Soll"
+msgid "Are you sure to cancel the invoice?"
+msgstr "Wollen Sie die Rechnung wirklich stornieren?"
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
@@ -1485,10 +1546,6 @@ msgid "Invoices"
 msgstr "Rechnungen"
 
 msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr "Positionen"
-
-msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Sonstiges"
 
@@ -1497,16 +1554,8 @@ msgid "Payment"
 msgstr "Zahlung"
 
 msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr "Zahlungspositionen"
-
-msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr "_Pro Forma"
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
-msgstr "Steuern"
+msgid "Validate"
+msgstr "Prüfen"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
@@ -1517,16 +1566,12 @@ msgid "_Draft"
 msgstr "_Entwurf"
 
 msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr "_Fakturieren"
-
-msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Bezahlen"
 
 msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
-msgstr "Auf Entwurf _Zurücksetzen"
+msgid "_Post"
+msgstr "_Festschreiben"
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index e1797b9..bcf761c 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -3,185 +3,265 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"No puede cambiar la secuencia de una factura si ya hay una abierta en el "
-"ejercicio fiscal."
+"El año fiscal «%(first)s» y «%(second)s» tienen la misma secuencia de "
+"facturación."
 
 msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
+msgid ""
+"You can not change invoice sequence in fiscal year \"%s\" because there are "
+"already posted invoices in this fiscal year."
 msgstr ""
-"¡Debe tener una secuencia distinta de facturación por ejercicio 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 an invoice that is not opened!"
+msgid "You can not credit with refund a supplier invoice/credit note."
 msgstr ""
-"¡No puede hacer un reembolso por devolución desde una factura que no esté "
-"abierta!"
+"No puede pagar con una devolución una factura de proveedor o nota de crédito"
+" de cliente."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgstr "No puede pagar con la factura de devolución «%s» porque tiene pagos."
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
-"¡No puede hacer un reembolso por devolución desde una factura con pagos!"
+"No puede pagar con la factura de devolución «%s» porque no está confirmada."
 
 msgctxt "error:account.invoice.line:"
-msgid "Line with \"line\" type must have an account!"
-msgstr "¡Una línea de tipo \"línea\" debe tener una cuenta!"
+msgid "Line with \"line\" type must have an account."
+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 \"línea\" debe tener una factura!"
+msgid "Line without \"line\" type must have an invoice."
+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 an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
-"¡No puede añadir una línea a una factura que está abierta, pagada o "
-"cancelada!"
+"No puede añadir una línea a la factura «%(invoice)s» confirmada, pagada o "
+"cancelada."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
-"¡No puede crear una línea de factura\n"
-"con una cuenta de una empresa distinta a la que factura!"
+"No puede crear la línea de factura «%(line)s» en la factura «%(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 modify line from an invoice that is opened, paid!"
+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 modificar una línea de una factura que está abierta o pagada!"
+"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 ""
-"You can not use the same account\n"
-"as on the invoice!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
 msgstr ""
-"¡No puede usar la misma cuenta\n"
-"que en la factura!"
+"No puede modificar la línea «%(line)s» de la factura «%(invoice)s», "
+"confirmada o pagada."
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"greater than the amount to pay."
 msgstr ""
-"¡No puede crear un pago parcial con un importe mayor que el importe a pagar!"
+"No puede crear un pago parcial en la factura «%s» por un importe mayor al "
+"importe a pagar."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
-msgstr "El día del mes debe ser entre 1 y 31."
+msgstr "El día del mes debe estar entre 1 y 31."
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
-msgstr "Los valores porcentaje y divisor no son coherentes."
+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 la línea «%(line)s» del término "
+"de pago «%(term)s»."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr "¡La línea del plazo de pago no es válida!"
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
+msgstr "La línea «%(line)s» del término de pago «%(term)s» no es correcto."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
-msgstr "¡Al plazo de pago le falta una línea con el remanente!"
+msgid "Missing remainder line in payment term \"%s\"."
+msgstr "Falta la línea de resto en el término 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 ""
+"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 "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using account \"%(account)s\" from company "
+"\"%(account_company)s\"."
 msgstr ""
-"¡No puede añadir una línea a una factura que está abierta, pagada o "
-"cancelada!"
+"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:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
+"\"%(base_code_company)s\"."
+msgstr ""
+"No puede crear la factura «%(invoice)s» de la empresa «%(invoice_company)s» "
+"utilizando el código de impuestos base «%(base_code)s» de la empresa "
+"«%(base_code_company)s»."
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
 msgstr ""
-"¡No puede modificar los impuestos de una factura que está abierta o pagada!"
+"No puede crear la factura «%(invoice)s» de la empresa «%(invoice_company)s» "
+"utilizando el código de impuestos «%(tax_code)s» de la empresa "
+"«%(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 ""
+"No puede modificar el impuesto «%(tax)s» de la factura «%(invoice)s» porque "
+"está confirmada o pagada."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
+"Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
+"invoice and in line \"%(line)s\"."
 msgstr ""
-"Los impuestos base son distintos de las líneas de la factura.\n"
-"Recalcule la factura."
+"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\" must be cancelled before deletion!"
-msgstr "¡La factura «%s» debe ser cancelada antes de eliminarla!"
+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 en las líneas de factura.\n"
+"Recalcule la factura."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"¡Tiene impuestos definidos pero ninguno en las líneas de la factura!\n"
+"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 "Debe cancelar la factura «%s» antes de eliminarla."
+
+msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"¡Los impuestos están definidos en las líneas de la factura pero no en la factura!\n"
+"La base de los impuestos de la factura «%s» es diferente de las de las líneas de la factura.\n"
 "Recalcule la factura."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
-msgstr "¡Falta la cuenta haber del diario!"
+msgid ""
+"The credit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
+"La cuenta haber del diario «%(journal)s» tiene la misma cuenta de la factura"
+" «%(invoice)s»."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
-msgstr "¡La cuenta haber del diario es la misma que la cuenta de la factura!"
+msgid "The credit account on journal %s\" is missing."
+msgstr "Falta la cuenta haber del diario «%s»."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
-msgstr "¡Falta la cuenta débito del diario!"
+msgid ""
+"The debit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
+"La cuenta debe del diario «%(journal)s» tiene la misma cuenta de la factura "
+"«%(invoice)s»."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
-msgstr "¡La cuenta débito del diario es la misma que la cuenta de la factura!"
+msgid "The debit account on journal \"%s\" is missing."
+msgstr "Falta la cuenta debe del diario «%s»."
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
-msgstr "¡No existe una secuencia de factura para el período/ejercicio fiscal!"
+msgid "The numbered invoice \"%s\" can not be deleted."
+msgstr "No se puede eliminar la factura numerada «%s»."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
+"The period of Invoice \"%s\" is closed.\n"
+"Use the today for cancel move?"
 msgstr ""
-"¡No puede crear una factura\n"
-"con una cuenta de una empresa distinta a la que factura!"
+"El período de la factura «%s» está cerrado.\n"
+"¿Usa el actual para el asiento de cancelación?"
 
 msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
-msgstr "¡No puede modificar una factura que está abierta o pagada!"
+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 período/año "
+"fiscal «%(period)s»."
 
 msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
-msgstr "¡No puede poner en borrador una factura que tiene asiento!"
+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 empresa «%(invoice_company)s» "
+"porque la cuenta «%(account)s» tiene una empresa (%(account_company)s) "
+"diferente."
 
 msgctxt "error:account.invoice:"
-msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
 msgstr ""
-"¡No puede usar la misma cuenta\n"
-"que en la línea de la factura!"
+"No puede modificar la factura «%(invoice)s» porque está confirmada, pagada o"
+" cancelada."
+
+msgctxt "error:account.period:"
+msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
+msgstr ""
+"Los períodos «%(first)s» y «%(second)s» tienen la misma secuencia de "
+"factura."
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
-"No puede cambiar la secuencia de una factura si hay una factura abierta en "
-"el período."
+"El período «%(period)s» debe tener la misma empresa y año fiscal "
+"(%(fiscalyear)s)."
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
-"¡Debe usar secuencias distintas de factura por ejercicio fiscal en la misma "
-"empresa!"
+"No puede cambiar la secuencia de facturas en el período «%s» porque ya hay "
+"facturas confirmadas en este período."
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -215,6 +295,10 @@ msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Importe a pagar hoy"
 
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr "Cancela asiento"
+
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Comentario"
@@ -241,7 +325,7 @@ msgstr "Fecha divisa"
 
 msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimales de la divisa"
+msgstr "Dígitos de divisa"
 
 msgctxt "field:account.invoice,description:"
 msgid "Description"
@@ -301,7 +385,7 @@ msgstr "Líneas de pago"
 
 msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
-msgstr "Plazo de pago"
+msgstr "Término de pago"
 
 msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
@@ -417,7 +501,7 @@ msgstr "Divisa"
 
 msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimales de la divisa"
+msgstr "Dígitos de divisa"
 
 msgctxt "field:account.invoice.line,description:"
 msgid "Description"
@@ -443,6 +527,10 @@ msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Nota"
 
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr "Origen"
+
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Entidad"
@@ -485,7 +573,7 @@ msgstr "Unidad"
 
 msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
-msgstr "Decimales de la unidad"
+msgstr "Dígitos de unidad"
 
 msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
@@ -601,7 +689,7 @@ msgstr "Divisa"
 
 msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimales de la divisa"
+msgstr "Dígitos de divisa"
 
 msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
@@ -645,7 +733,7 @@ msgstr "Líneas"
 
 msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
-msgstr "Plazo de pago"
+msgstr "Término de pago"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
@@ -677,7 +765,7 @@ msgstr "Divisa"
 
 msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimales de la divisa"
+msgstr "Dígitos de divisa"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
@@ -705,7 +793,7 @@ msgstr "Número de meses"
 
 msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
-msgstr "Plazo de pago"
+msgstr "Término de pago"
 
 msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
@@ -841,15 +929,15 @@ msgstr "Factura"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr "Plazo de pago del cliente"
+msgstr "Término de pago del cliente"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
-msgstr "Plazo de pago del proveedor"
+msgstr "Término de pago del proveedor"
 
 msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr "Si es cierto, la factura(s) actual será pagada."
+msgstr "Si está marcada, se pagarán las facturas actuales."
 
 msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
@@ -885,11 +973,11 @@ msgstr "Pagar factura"
 
 msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
-msgstr "Plazo de pago"
+msgstr "Término de pago"
 
 msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
-msgstr "Línea del plazo de pago"
+msgstr "Línea del término de pago"
 
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
@@ -900,7 +988,7 @@ msgid "Invoice Tax"
 msgstr "Impuesto de factura"
 
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
+msgid "Invoices"
 msgstr "Todas las facturas"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
@@ -911,69 +999,21 @@ msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Notas de crédito de proveedor"
 
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Notas de crédito de proveedor borrador"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Notas de crédito de proveedor pro forma"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Notas de crédito de proveedor abiertas"
-
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Facturas de proveedor"
 
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Facturas de proveedor borrador"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Facturas de proveedor pro forma"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Facturas de proveedor abiertas"
-
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Notas de crédito"
 
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Notas de crédito borrador"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Notas de crédito pro forma"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Notas de crédito abiertas"
-
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Facturas"
 
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Facturas borrador"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Facturas pro forma"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Facturas abiertas"
-
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
-msgstr "Plazos de pago"
+msgstr "Términos de pago"
 
 msgctxt "model:ir.action,name:credit"
 msgid "Credit"
@@ -991,89 +1031,117 @@ msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr "Pagar factura"
 
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validado"
+
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
-msgstr "Todas las facturas"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Notas de crédito de proveedor"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Notas de crédito de proveedor borrador"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Notas de crédito de proveedor pro forma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Notas de crédito de proveedor abiertas"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Facturas de proveedor"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Facturas de proveedor borrador"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Facturas de proveedor pro forma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Facturas de proveedor abiertas"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Notas de crédito"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Notas de crédito borrador"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Notas de crédito pro forma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Notas de crédito abiertas"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Facturas"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Facturas borrador"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Facturas pro forma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Facturas abiertas"
-
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
 msgstr "Facturas"
 
 msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
 msgid "Payment Terms"
-msgstr "Plazos de pago"
+msgstr "Términos de pago"
 
 msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
-msgstr "Plazos de pago"
+msgstr "Términos de pago"
 
 msgctxt "odt:account.invoice:"
 msgid "Amount"
@@ -1129,7 +1197,7 @@ msgstr "Factura Nº:"
 
 msgctxt "odt:account.invoice:"
 msgid "Payment Term"
-msgstr "Plazo de pago"
+msgstr "Término de pago"
 
 msgctxt "odt:account.invoice:"
 msgid "Phone:"
@@ -1144,14 +1212,6 @@ msgid "Pro forma Invoice"
 msgstr "Factura pro forma"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr "Nota de crédito de proveedor pro forma"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr "Factura de proveedor pro forma"
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Cantidad"
 
@@ -1195,6 +1255,14 @@ msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "CUIT:"
 
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr "Nota de crédito de proveedor validada"
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr "Factura de proveedor validada"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Cancelada"
@@ -1204,16 +1272,16 @@ msgid "Draft"
 msgstr "Borrador"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr "Abierta"
-
-msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Pagada"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr "Pro forma"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Validated"
+msgstr "Validado"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1395,10 +1463,6 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notas"
 
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr "Productos"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr "Pagar factura"
@@ -1409,27 +1473,19 @@ msgstr "Pagar factura"
 
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Line"
-msgstr "Línea del plazo de pago"
+msgstr "Línea del término de pago"
 
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Lines"
-msgstr "Líneas del plazo de pago"
+msgstr "Línea del término de pago"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
-msgstr "Plazo de pago"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr "Línea del plazo de pago"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr "Líneas del plazo de pago"
+msgstr "Término de pago"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
-msgstr "Plazos de pago"
+msgstr "Términos de pago"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
@@ -1460,16 +1516,12 @@ msgid "Taxes"
 msgstr "Impuestos"
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
-msgstr "Importe divisa secundaria"
-
-msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr "Haber"
+msgid "Also known as Pro Forma"
+msgstr "También conocida como Pro forma."
 
 msgctxt "view:account.invoice:"
-msgid "Debit"
-msgstr "Debe"
+msgid "Are you sure to cancel the invoice?"
+msgstr "¿Está seguro de cancelar la factura?"
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
@@ -1480,10 +1532,6 @@ msgid "Invoices"
 msgstr "Facturas"
 
 msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr "Líneas"
-
-msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Información adicional"
 
@@ -1492,16 +1540,8 @@ msgid "Payment"
 msgstr "Pago"
 
 msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr "Líneas de pago"
-
-msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr "Pro for_ma"
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
-msgstr "Impuestos"
+msgid "Validate"
+msgstr "Validar"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
@@ -1512,16 +1552,12 @@ msgid "_Draft"
 msgstr "_Borrador"
 
 msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr "_Abrir"
-
-msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Pagar"
 
 msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
-msgstr "_Restablecer a borrador"
+msgid "_Post"
+msgstr "_Confirmar"
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
@@ -1545,7 +1581,7 @@ msgstr "Líneas de pago"
 
 msgctxt "view:party.party:"
 msgid "Payment Terms"
-msgstr "Plazos de pago"
+msgstr "Términos de pago"
 
 msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 96986a7..1d52aeb 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -3,173 +3,267 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"No puede cambiar la secuencia de una factura si hay una factura abierta en "
-"el año fiscal"
+"Año fiscal \"%(first)s\" y \"%(second)s\" tienen la misma secuencia de "
+"factura."
 
 msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
-msgstr "¡Debe tener una secuencia diferente de facturación por año fiscal!"
+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."
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund a supplier invoice/credit note."
+msgstr ""
+"Usted no puede abonar con un reembolso una nota credito/factura de "
+"proveedor."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice that is not opened!"
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
-"Usted no puede abonar con un reembolso una factura que no esta abierta!"
+"Usted no puede abonar con el reembolso de la factura \"%s\" porque ha sido "
+"pagada."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
-msgstr "Usted no puede abonar con un reembolso una factura pagada!"
+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 confirmada."
 
 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!"
+msgid "Line with \"line\" type must have an account."
+msgstr "Una línea con tipo de \"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!"
+msgid "Line without \"line\" type must have an invoice."
+msgstr "Una línea sin tipo de \"línea\" debe tener una factura!"
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
-"No puede adicionar una línea a una factura que está abierta, pagada o "
-"cancelada!"
+"Usted no puede añadir una línea a una factura \"%(invoice)s\" que este "
+"confirmada, pagada o cancelada\""
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
-"¡No puede crear una línea de factura\n"
-"con cuenta a partir de una factura de una compañía distinta!"
+"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\"."
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not modify line from an invoice that is opened, paid!"
-msgstr "¡No puede modificar la línea de una factura que está abierta, pagada!"
+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)\" porque la factura usa la misma cuenta %(account)s\"."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not use the same account\n"
-"as on the invoice!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
 msgstr ""
-"No puede usar la misma cuenta\n"
-"que en la factura!"
+"No puede modificar una línea \"%(line)s\" de la factura \"%(invoice)s\" que "
+"esta confirmada o pagada."
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
-msgstr "No puede crear un pago a plazos con una cantidad mayor que el pago!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"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."
 
 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."
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
-msgstr "Porcentaje y Divisor no son consistentes."
+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\"."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr "Línea de opción de pago inválida!"
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
+msgstr "Línea inválida \"%(line)s\" en forma de pago \"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
-msgstr "Hace falta una línea final al término de pago!"
+msgid "Missing remainder line in payment term \"%s\"."
+msgstr "Falta linea de residuo en forma 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\""
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(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)\" usando la cuenta \"%(account)s\" desde la compañia "
+"\"%(account_company)s\"."
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(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)\" usando el código de impuesto base \"%(base_code)s\" "
+"desde la compañia diferente \"%(base_code_company)s\"."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
 msgstr ""
-"No puede adicionar una línea a una factura que está abierta, pagada o "
-"cancelada!"
+"No puede crear la factura \"%(invoice)s\" en la compañia "
+"\"%(invoice_company)\" usando el código de impuesto \"%(tax_code)s\" desde "
+"la compañia \"%(tax_code_company)s\"."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
-msgstr "No puede modificar impuestos de una factura que abierta o pagada!"
+msgid ""
+"You can not modify tax \"%(tax)s\" from invoice \"%(invoice)s\" because it "
+"is posted or paid."
+msgstr ""
+"No puede modificar los impuestos \"%(tax)s\" de la factura \"%(invoice)s\" "
+"porque esta abierta o pagada!"
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
-msgstr "Los Impuestos Base difieren de las líneas de factura!"
+"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\"."
 
 msgctxt "error:account.invoice:"
-msgid "Invoice \"%s\" must be cancelled before deletion!"
-msgstr "La factura \"%s\" debe ser cancelada antes de ser borrada!"
+msgid ""
+"Invoice \"%s\" has taxes defined but not on invoice lines.\n"
+"Re-compute the invoice."
+msgstr ""
+"Factura \"%s\" tiene impuestos definidos pero no los tienen en las líneas de factura.\n"
+"Reprocese la factura"
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"Impuestos definidos pero no en líneas de factura!\n"
-"Recalcule la factura."
+"Factura \"%s\" tiene impuestos en líneas de factura que no están definidos en la factura.\n"
+"Reprocese 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."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
-msgstr "Impuestos definidos en factura pero no usados en las líneas!"
+msgstr ""
+"Los impuestos base de la factura \"%s\" son diferentes a los de las líneas de factura.\n"
+"Reprocese la factura"
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
-msgstr "Falta la cuenta crédito del diario!"
+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 "
+"cuenta de factura \"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
-msgstr "¡La cuenta crédito en el diario es la misma que la cuenta facturada!"
+msgid "The credit account on journal %s\" is missing."
+msgstr "Falta la cuenta credito en el libro diario \"%s\"."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
-msgstr "Falta la cuenta débito del diario!"
+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 "
+"cuenta de la factura \"%(invoice)s\""
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
-msgstr "¡La cuenta débito en el diario es la misma que la cuenta facturada!"
+msgid "The debit account on journal \"%s\" is missing."
+msgstr "Falta la cuenta débito de libro diario \"%s\"."
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
-msgstr "No hay una secuencia de facturaas para el período/año fiscal!"
+msgid "The numbered invoice \"%s\" can not be deleted."
+msgstr "La factura numerada \"%s\" no puede ser eliminada."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
-msgstr "No puede crear una factura"
+"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 "You can not modify an invoice that is opened, paid!"
-msgstr "¡No puede modificar una factura que está abierta, pagada!"
+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\"."
 
 msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
-msgstr "¡No puede poner en borrador una factura que ha sido movida!"
+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 "
+"diferente \"%(account_company)s\"."
 
 msgctxt "error:account.invoice:"
-msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
 msgstr ""
-"¡No puede usar la misma cuenta\n"
-"como línea en la factura!"
+"No puede modificar una factura \"%s\" porque esta confirmada, 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."
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
-"No puede cambiar la secuencia de una factura si hay una factura abierta en "
-"el período"
+"Período \"%(first)s\" y \"%(second)s\" deben tener la misma compañia que su "
+"año fiscal (%(fiscalyear)s)."
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
-"¡Debe tener secuencias diferentes de facturas por año fiscal en la misma "
-"compañía!"
+"No puede cambiar la secuencia de factura en el período \"%s\" porque hay una"
+" factura confirmada en este período"
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -193,15 +287,19 @@ msgstr "Cuenta"
 
 msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
-msgstr "Fecha de contabilización"
+msgstr "Fecha de Contabilización"
 
 msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
-msgstr "Cantidad a pagar"
+msgstr "Cantidad a Pagar"
 
 msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
-msgstr "Cantidad a pagar hoy"
+msgstr "Cantidad a Pagar Hoy"
+
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr "Cancelar Asiento"
 
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
@@ -217,7 +315,7 @@ msgstr "Fecha de Creación"
 
 msgctxt "field:account.invoice,create_uid:"
 msgid "Create User"
-msgstr "Crea usuario"
+msgstr "Creado por Usuario"
 
 msgctxt "field:account.invoice,currency:"
 msgid "Currency"
@@ -257,7 +355,7 @@ msgstr "Formato de Reporte de Facturación"
 
 msgctxt "field:account.invoice,journal:"
 msgid "Journal"
-msgstr "Diario"
+msgstr "Libro Diario"
 
 msgctxt "field:account.invoice,lines:"
 msgid "Lines"
@@ -269,7 +367,7 @@ msgstr "Líneas a Pagar"
 
 msgctxt "field:account.invoice,move:"
 msgid "Move"
-msgstr "Movimiento"
+msgstr "Asiento"
 
 msgctxt "field:account.invoice,number:"
 msgid "Number"
@@ -333,11 +431,11 @@ msgstr "Sin Impuesto"
 
 msgctxt "field:account.invoice,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de Modificación"
 
 msgctxt "field:account.invoice,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Modificado por Usuario"
 
 msgctxt "field:account.invoice-account.move.line,create_date:"
 msgid "Create Date"
@@ -345,7 +443,7 @@ msgstr "Fecha de Creación"
 
 msgctxt "field:account.invoice-account.move.line,create_uid:"
 msgid "Create User"
-msgstr "Crea usuario"
+msgstr "Creado por Usuario"
 
 msgctxt "field:account.invoice-account.move.line,id:"
 msgid "ID"
@@ -365,11 +463,11 @@ msgstr "Nombre"
 
 msgctxt "field:account.invoice-account.move.line,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de Modificación"
 
 msgctxt "field:account.invoice-account.move.line,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Modificado por Usuario"
 
 msgctxt "field:account.invoice.credit.start,id:"
 msgid "ID"
@@ -397,7 +495,7 @@ msgstr "Fecha de Creación"
 
 msgctxt "field:account.invoice.line,create_uid:"
 msgid "Create User"
-msgstr "Crea usuario"
+msgstr "Creado por Usuario"
 
 msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
@@ -431,6 +529,10 @@ msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Nota"
 
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr "Origen"
+
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Terceros"
@@ -473,7 +575,7 @@ msgstr "Unidad"
 
 msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
-msgstr "Dígitos de Unidad"
+msgstr "Decimales de Unidad"
 
 msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
@@ -481,11 +583,11 @@ msgstr "Precio Unitario"
 
 msgctxt "field:account.invoice.line,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de Modificación"
 
 msgctxt "field:account.invoice.line,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Modificado por Usuario"
 
 msgctxt "field:account.invoice.line-account.tax,create_date:"
 msgid "Create Date"
@@ -493,7 +595,7 @@ msgstr "Fecha de Creación"
 
 msgctxt "field:account.invoice.line-account.tax,create_uid:"
 msgid "Create User"
-msgstr "Crea usuario"
+msgstr "Creado por Usuario"
 
 msgctxt "field:account.invoice.line-account.tax,id:"
 msgid "ID"
@@ -513,15 +615,15 @@ msgstr "Impuesto"
 
 msgctxt "field:account.invoice.line-account.tax,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de Modificación"
 
 msgctxt "field:account.invoice.line-account.tax,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Modificado por Usuario"
 
 msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr "Cancelar Cuenta"
+msgstr "Cuenta Anulada"
 
 msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
@@ -529,7 +631,7 @@ msgstr "Cantidad del Pago"
 
 msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr "Cantidad a Cancelar"
+msgstr "Cuenta Anulada"
 
 msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
@@ -545,11 +647,11 @@ msgstr "Decimales de la Moneda de Pago"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr "Cancelar Decimales de Moneda"
+msgstr "Anulado Decimales de Moneda"
 
 msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr "Cancelar Moneda"
+msgstr "Moneda Anulada"
 
 msgctxt "field:account.invoice.pay.ask,id:"
 msgid "ID"
@@ -561,7 +663,7 @@ msgstr "Factura"
 
 msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr "Cancelar Diario"
+msgstr "Libro Diario Anulado"
 
 msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
@@ -605,7 +707,7 @@ msgstr "ID"
 
 msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
-msgstr "Diario"
+msgstr "Libro Diario"
 
 msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
@@ -617,7 +719,7 @@ msgstr "Fecha de Creación"
 
 msgctxt "field:account.invoice.payment_term,create_uid:"
 msgid "Create User"
-msgstr "Crea usuario"
+msgstr "Creado por Usuario"
 
 msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
@@ -633,7 +735,7 @@ msgstr "Líneas"
 
 msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
-msgstr "Término de Pago"
+msgstr "Forma de Pago"
 
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
@@ -641,11 +743,11 @@ msgstr "Nombre"
 
 msgctxt "field:account.invoice.payment_term,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de Modificación"
 
 msgctxt "field:account.invoice.payment_term,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Modificado por Usuario"
 
 msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
@@ -657,7 +759,7 @@ msgstr "Fecha de Creación"
 
 msgctxt "field:account.invoice.payment_term.line,create_uid:"
 msgid "Create User"
-msgstr "Crea usuario"
+msgstr "Creado por Usuario"
 
 msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
@@ -665,7 +767,7 @@ msgstr "Moneda"
 
 msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de Moneda"
+msgstr "Decimales de Moneda"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
@@ -673,7 +775,7 @@ msgstr "Día del Mes"
 
 msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
-msgstr "Cantidad de días"
+msgstr "Cantidad de Días"
 
 msgctxt "field:account.invoice.payment_term.line,divisor:"
 msgid "Divisor"
@@ -693,7 +795,7 @@ msgstr "Número de Meses"
 
 msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
-msgstr "Término de Pago"
+msgstr "Forma de Pago"
 
 msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
@@ -721,11 +823,11 @@ msgstr "Número de Semanas"
 
 msgctxt "field:account.invoice.payment_term.line,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de Modificación"
 
 msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Modificado por Usuario"
 
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
@@ -757,7 +859,7 @@ msgstr "Fecha de Creación"
 
 msgctxt "field:account.invoice.tax,create_uid:"
 msgid "Create User"
-msgstr "Crea usuario"
+msgstr "Creado por Usuario"
 
 msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
@@ -801,11 +903,11 @@ msgstr "Signo del Impuesto"
 
 msgctxt "field:account.invoice.tax,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de Modificación"
 
 msgctxt "field:account.invoice.tax,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Modificado por Usuario"
 
 msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -877,7 +979,7 @@ msgstr "Forma de Pago"
 
 msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
-msgstr "Línea de Término de Pago"
+msgstr "Línea de Forma de Pago"
 
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
@@ -885,11 +987,11 @@ msgstr "Imprimir Aviso de Reporte Factura"
 
 msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
-msgstr "Impuesto en Factura"
+msgstr "Impuesto de Factura"
 
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
-msgstr "Todas las facturas"
+msgid "Invoices"
+msgstr "Facturas"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
 msgid "Invoices"
@@ -899,66 +1001,18 @@ msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Notas Crédito del Proveedor"
 
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Borrador Nota Crédito del Proveedor"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Nota Crédito de Proveedor Proforma"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Nota Crédito de Proveedor Abierta"
-
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Facturas de Proveedor"
 
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Borrador de Factura de Proveedor"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Factura del Proveedor Proforma"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Factura de Proveedor Abierta"
-
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Notas Crédito"
 
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Notas Crédito en Borrador"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Nota Crédito Proforma"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Nota Crédito Abierta"
-
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Facturas"
 
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Factura en Borrador"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Factura Proforma"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Factura Abierta"
-
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Formas de Pago"
@@ -979,78 +1033,106 @@ msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr "Pagar Factura"
 
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validado"
+
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
-msgstr "Todas las facturas"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Notas Crédito del Proveedor"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Borrador Nota Crédito Proveedor"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Nota Crédito Proveedor Proforma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Nota Crédito Proveedor Abierta"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Facturas de Proveedor"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Borrador Factura Proveedor"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Factura Proveedor Proforma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Factura Proveedor Abierta"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Notas Crédito"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Borrador Nota Crédito"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Nota Crédito Proforma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Nota Crédito Abierta"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Facturas"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Borrador Factura"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Factura Proforma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Factura Abierta"
-
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
 msgstr "Facturas"
@@ -1097,15 +1179,15 @@ msgstr "Borrador de Nota Crédito"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
-msgstr "Borrador de Factura"
+msgstr "Factura en Borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
-msgstr "Borrador de Nota Crédito del Proveedor"
+msgstr "Nota Crédito de Proveedor en Borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
-msgstr "Borrador de Factura del Proveedor"
+msgstr "Factura de Proveedor en Borrador"
 
 msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
@@ -1117,7 +1199,7 @@ msgstr "Factura N°:"
 
 msgctxt "odt:account.invoice:"
 msgid "Payment Term"
-msgstr "Término de Pago"
+msgstr "Forma de Pago"
 
 msgctxt "odt:account.invoice:"
 msgid "Phone:"
@@ -1132,14 +1214,6 @@ msgid "Pro forma Invoice"
 msgstr "Factura Proforma"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr "Nota Crédito del Proveedor Proforma"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr "Factura del Proveedor Proforma"
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Cantidad"
 
@@ -1183,6 +1257,14 @@ msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "NIT:"
 
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr ""
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Cancelado"
@@ -1192,16 +1274,16 @@ msgid "Draft"
 msgstr "Borrador"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr "Abierto"
-
-msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Pagado"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr "Pro forma"
+msgid "Posted"
+msgstr "Confirmado"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Validated"
+msgstr "Validado"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1257,11 +1339,12 @@ msgstr "Pago Parcial"
 
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
-msgstr "Exento"
+msgstr "Anulado"
 
+#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid ""
-msgstr "Cuenta de impuesto"
+msgstr "Punto de Orden"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "April"
@@ -1327,9 +1410,10 @@ msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Remainder"
 msgstr "Saldo"
 
+#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
-msgstr "Cuenta de impuesto"
+msgstr "Punto de Orden"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Friday"
@@ -1383,10 +1467,6 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notas"
 
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr "Productos"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr "Pagar Factura"
@@ -1397,23 +1477,15 @@ msgstr "Pagar Factura"
 
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Line"
-msgstr "Línea de Término de Pago"
+msgstr "Línea de Forma de Pago"
 
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Lines"
-msgstr "Líneas de Término de Pago"
+msgstr "Líneas de Forma de Pago"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
-msgstr "Término de Pago"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr "Línea de Término de Pago"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr "Líneas de Término de Pago"
+msgstr "Forma de Pago"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
@@ -1433,7 +1505,7 @@ msgstr "Tiene seleccionada más de una factura para imprimir."
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
-msgstr "Impuesto en Factura"
+msgstr "Impuesto de Factura"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
@@ -1448,16 +1520,12 @@ msgid "Taxes"
 msgstr "Impuestos"
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
-msgstr "Cantidad en la Segunda Moneda"
-
-msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr "Crédito"
+msgid "Also known as Pro Forma"
+msgstr ""
 
 msgctxt "view:account.invoice:"
-msgid "Debit"
-msgstr "Débito"
+msgid "Are you sure to cancel the invoice?"
+msgstr ""
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
@@ -1468,10 +1536,6 @@ msgid "Invoices"
 msgstr "Facturas"
 
 msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr "Líneas"
-
-msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Información Adicional"
 
@@ -1479,17 +1543,10 @@ msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Pago"
 
+#, fuzzy
 msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr "Líneas de Pago"
-
-msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr "Pro For_ma"
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
-msgstr "Impuestos"
+msgid "Validate"
+msgstr "Validar"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
@@ -1500,16 +1557,12 @@ msgid "_Draft"
 msgstr "_Borrador"
 
 msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr "_Abrir"
-
-msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Pago"
 
 msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
-msgstr "_Revertir a Borrador"
+msgid "_Post"
+msgstr ""
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 3032e65..0026612 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -3,183 +3,267 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"No puede cambiar la secuencia de una factura si ya hay una factura abierta "
-"en el ejercicio fiscal."
+"El año fiscal \"%(first)s\" y \"%(second)s\" tienen la misma secuencia de "
+"facturación."
 
 msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
-msgstr "Debe tener distintas secuencias de factura por ejercicio fiscal."
+msgid ""
+"You can not change invoice sequence in fiscal year \"%s\" because there are "
+"already posted invoices in this fiscal year."
+msgstr ""
+"No puede cambiar la secuencia de factura en el año fiscal \"%s\" porque ja "
+"hay facturas confirmadas en este año fiscal."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice that is not opened!"
+msgid "You can not credit with refund a supplier invoice/credit note."
 msgstr ""
-"No puede hacer un abono con devolución desde una factura que no esté "
-"abierta."
+"No puede pagar con una devolución una factura de proveedor o abono de "
+"cliente."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
-msgstr "No puede hacer un abono con devolución desde una factura con pagos."
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
+msgstr "No puede pagar con la factura de devolución \"%s\" porque tiene pagos."
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund invoice \"%s\" because it is not posted."
+msgstr ""
+"No puede pagar con la factura de devolución \"%s\" porque no está "
+"confirmada."
 
 msgctxt "error:account.invoice.line:"
-msgid "Line with \"line\" type must have an account!"
-msgstr "Una línea de tipo \"línea\" debe tener una cuenta."
+msgid "Line with \"line\" type must have an account."
+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 el tipo \"línea\" debe tener una factura."
+msgid "Line without \"line\" type must have an invoice."
+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 an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
-"No puede añadir una línea a una factura que está abierta, pagada o "
+"No puede añadir una línea a la factura \"%(invoice)s\" confirmada, pagada o "
 "cancelada."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
-"No puede crear una línea de factura\n"
-"con una cuenta de una empresa distinta a la que factura."
+"No puede crear la línea de factura \"%(line)s\" en la factura "
+"\"%(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 modify line from an invoice that is opened, paid!"
+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 modificar las líneas de una factura que está abierta o pagada."
+"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 ""
-"You can not use the same account\n"
-"as on the invoice!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
 msgstr ""
-"No puede usar la misma cuenta\n"
-"que en la factura."
+"No puede modificar la línea \"%(line)s\" de la factura \"%(invoice)s\", "
+"confirmada o pagada."
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"greater than the amount to pay."
 msgstr ""
-"No puede crear un pago parcial con un importe mayor que el importe a pagar."
+"No puede crear un pago parcial en la factura \"%s\" por un importe mayor al "
+"importe a pagar."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
 msgstr "El día del mes debe estar entre 1 y 31."
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
-msgstr "Los valores porcentaje y divisor no son coherentes."
+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 la línea \"%(line)s\" del plazo "
+"de pago \"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr "La línea del plazo de pago no es correcta."
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
+msgstr "La línea \"%(line)s\" del plazo de pago \"%(term)s\" no es correcto."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
-msgstr "Al plazo de pago le falta una línea con el remanente."
+msgid "Missing remainder line in payment term \"%s\"."
+msgstr "Falta la línea de resto en el plazo de pago \"%s\"."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add line \"%(line)s\" to invoice \"%(invoice)s\" because it is "
+"posted, paid or canceled."
 msgstr ""
-"No puede añadir una línea a una factura que está abierta, 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 ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using account \"%(account)s\" from company "
+"\"%(account_company)s\"."
+msgstr ""
+"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:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
+"\"%(base_code_company)s\"."
+msgstr ""
+"No puede crear la factura \"%(Invoice)s\" de la empresa "
+"\"%(invoice_company)s\" utilizando el código de impuestos base "
+"\"%(base_code)s\" de la empresa \"%(base_code_company)s\"."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
 msgstr ""
-"No puede modificar los impuestos de una factura que está abierta o pagada."
+"No puede crear la factura \"%(Invoice)s\" de la empresa "
+"\"%(invoice_company)s\" utilizando el código de impuestos \"%(tax_code)s\" "
+"de la empresa \"%(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 ""
+"No puede modificar el impuesto \"%(tax)s\" de la factura \"%(invoice)s\" "
+"porque está confirmada o pagada."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
+"Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
+"invoice and in line \"%(line)s\"."
 msgstr ""
-"Los impuestos base son distintos de las líneas de la factura.\n"
-"Recalcule la factura."
+"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\" must be cancelled before deletion!"
-msgstr "La factura \"%s\" debe ser cancelada antes de eliminarla."
+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 en las líneas de factura.\n"
+"Recalcule la factura."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"Los impuestos están definidos en la factura pero ninguno en las líneas de la factura.\n"
+"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 "Debe cancelar la factura \"%s\" antes de borrarla."
+
+msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"Los impuestos están definidos en las líneas de la factura pero no en la factura.\n"
+"La base de los impuestos de la factura \"%s\" es diferente de las de las líneas de la factura.\n"
 "Recalcule la factura."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
-msgstr "Falta la cuenta haber del diario."
+msgid ""
+"The credit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
+"La cuenta haber del diario \"%(journal)s\" tiene la misma cuenta de la "
+"factura \"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
-msgstr "La cuenta haber del diario es la misma que la cuenta de la factura."
+msgid "The credit account on journal %s\" is missing."
+msgstr "Falta la cuenta haber del diario \"%s\"."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
-msgstr "Falta la cuenta debe del diario."
+msgid ""
+"The debit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
+"La cuenta debe del diario \"%(journal)s\" tiene la misma cuenta de la "
+"factura \"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
-msgstr "La cuenta debe del diario es la misma que la cuenta de la factura."
+msgid "The debit account on journal \"%s\" is missing."
+msgstr "Falta la cuenta debe del diario \"%s\"."
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
-msgstr "No existe una secuencia de factura para el período/ejercicio fiscal."
+msgid "The numbered invoice \"%s\" can not be deleted."
+msgstr "No se puede borrar la factura numerada \"%s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
+"The period of Invoice \"%s\" is closed.\n"
+"Use the today for cancel move?"
 msgstr ""
-"No puede crear una factura\n"
-"con una cuenta de una empresa distinta a la que factura."
+"El período de la factura \"%s\" está cerrado.\n"
+"¿Usa el actual para el asiento de cancelación?"
 
 msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
-msgstr "No puede modificar una factura que está abierta o pagada."
+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 "
+"período/año fiscal \"%(period)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
-msgstr "No puede poner en borrador una factura que tiene asiento."
+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 empresa "
+"\"%(invoice_company)s\" porque la cuenta \"%(account)s\" tiene una empresa "
+"(%(account_company)s) diferente."
 
 msgctxt "error:account.invoice:"
-msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
+msgstr ""
+"No puede modificar la factura \"%(invoice)s\" porque está confirmada, pagada"
+" o cancelada."
+
+msgctxt "error:account.period:"
+msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"No puede usar la misma cuenta\n"
-"que en la línea de la factura."
+"Los períodos \"%(first)s\" y \"%(second)s\" tienen la misma secuencia de "
+"factura."
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
-"No puede cambiar la secuencia de una factura si hay una factura abierta en "
-"el período."
+"El período \"%(period)s\" debe tener la misma empresa y año fiscal "
+"(%(fiscalyear)s)."
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
-"Debe tener distintas secuencias de factura por ejercicio fiscal en la misma "
-"empresa."
+"No puede cambiar la secuencia de facturas en el período \"%s\" porque ya hay"
+" facturas confirmadas en este período."
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -213,6 +297,10 @@ msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Importe a pagar hoy"
 
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr "Asiento cancelación"
+
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Comentario"
@@ -291,7 +379,7 @@ msgstr "Tercero"
 
 msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
-msgstr "Idioma tercero"
+msgstr "Idioma del tercero"
 
 msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
@@ -441,13 +529,17 @@ msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Nota"
 
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr "Origen"
+
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Tercero"
 
 msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
-msgstr "Idioma tercero"
+msgstr "Idioma del tercero"
 
 msgctxt "field:account.invoice.line,product:"
 msgid "Product"
@@ -839,15 +931,15 @@ msgstr "Factura"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr "Plazo de pago del cliente"
+msgstr "Plazo de pago de cliente"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
-msgstr "Plazo de pago del proveedor"
+msgstr "Plazo de pago de proveedor"
 
 msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr "Si está marcada, las facturas actuales se pagarán."
+msgstr "Si está marcada, se pagarán las facturas actuales."
 
 msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
@@ -898,7 +990,7 @@ msgid "Invoice Tax"
 msgstr "Impuesto de factura"
 
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
+msgid "Invoices"
 msgstr "Todas las facturas"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
@@ -909,66 +1001,18 @@ msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Abonos de proveedor"
 
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Abonos de proveedor borrador"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Abonos de proveedor Pro Forma"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Abonos de proveedor abiertos"
-
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Facturas proveedor"
 
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Facturas de proveedor borrador"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Facturas proveedor Pro Forma"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Facturas proveedor abiertas"
-
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Abonos"
 
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Abonos borrador"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Abonos Pro Forma"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Abonos abiertos"
-
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Facturas"
 
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Facturas borrador"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Facturas Pro Forma"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Facturas abiertas"
-
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Plazos de pago"
@@ -989,77 +1033,105 @@ msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr "Pagar factura"
 
-msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
-msgid "Invoice"
-msgstr "Factura"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
+msgstr "Todo"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
-msgstr "Todas las facturas"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
-msgid "Supplier Credit Notes"
-msgstr "Abonos de proveedor"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Confirmada"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validada"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
 msgstr "Borrador"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Pro Forma"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
+msgstr "Confirmada"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Abiertos"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validada"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
-msgid "Supplier Invoices"
-msgstr "Facturas proveedor"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
+msgstr "Todo"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
 msgstr "Borrador"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Pro Forma"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Confirmada"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Abiertas"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validada"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
-msgid "Credit Notes"
-msgstr "Abonos"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
+msgstr "Todo"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
 msgstr "Borrador"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Pro Forma"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr "Confirmada"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Abiertos"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validada"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
-msgid "Invoices"
-msgstr "Facturas"
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Factura"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Borrador"
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Abonos de proveedor"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Pro Forma"
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Facturas proveedor"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Abiertas"
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Abonos"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Facturas"
 
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
@@ -1142,14 +1214,6 @@ msgid "Pro forma Invoice"
 msgstr "Factura Pro Forma"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr "Abono de proveedor Pro Forma"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr "Factura de proveedor Pro Forma"
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Cantidad"
 
@@ -1193,6 +1257,14 @@ msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "CIF/NIF:"
 
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr "Abono de proveedor validado"
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr "Factura de proveedor validada"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Cancelada"
@@ -1202,16 +1274,16 @@ msgid "Draft"
 msgstr "Borrador"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr "Abierta"
-
-msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Pagada"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr "Pro Forma"
+msgid "Posted"
+msgstr "Confirmada"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Validated"
+msgstr "Validada"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1393,10 +1465,6 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notas"
 
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr "Productos"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr "Pagar factura"
@@ -1418,14 +1486,6 @@ msgid "Payment Term"
 msgstr "Plazo de pago"
 
 msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr "Línea del plazo de pago"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr "Líneas del plazo de pago"
-
-msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Plazos de pago"
 
@@ -1458,16 +1518,12 @@ msgid "Taxes"
 msgstr "Impuestos"
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
-msgstr "Importe moneda secundaria"
-
-msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr "Haber"
+msgid "Also known as Pro Forma"
+msgstr "También conocida como pro forma."
 
 msgctxt "view:account.invoice:"
-msgid "Debit"
-msgstr "Debe"
+msgid "Are you sure to cancel the invoice?"
+msgstr "¿Está seguro de cancelar la factura?"
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
@@ -1478,10 +1534,6 @@ msgid "Invoices"
 msgstr "Facturas"
 
 msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr "Líneas"
-
-msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Información adicional"
 
@@ -1490,16 +1542,8 @@ msgid "Payment"
 msgstr "Pago"
 
 msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr "Líneas de pago"
-
-msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr "Pro For_ma"
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
-msgstr "Impuestos"
+msgid "Validate"
+msgstr "Validar"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
@@ -1510,16 +1554,12 @@ msgid "_Draft"
 msgstr "_Borrador"
 
 msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr "_Abrir"
-
-msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Pagar"
 
 msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
-msgstr "_Restablecer a borrador"
+msgid "_Post"
+msgstr "_Confirmar"
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 67b5254..fd6ee25 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -3,345 +3,267 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"Vous ne pouvez pas changer la séquence de facture si il y a déjà une facture"
-" ouverte dans l'année fiscale"
+"Les années fiscales \"%(first)s\" et \"%(second)s\" on la même séquence de "
+"facture."
 
 msgctxt "error:account.fiscalyear:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
-msgstr ""
-"Vous ne pouvez pas changer la séquence de facture si il y a déjà une facture"
-" ouverte dans l'année fiscale"
-
-msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
+"You can not change invoice sequence in fiscal year \"%s\" because there are "
+"already posted invoices in this fiscal year."
 msgstr ""
-"Vous devez utiliser des séquences de facture différentes par année fiscale !"
+"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.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund a supplier invoice/credit note."
 msgstr ""
-"Vous devez utiliser des séquences de facture différentes par année fiscale !"
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice that is not opened!"
-msgstr "Vous ne pouvez créer un remboursement sur une facture non-ouverte"
+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 "
+"contient des paiements."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
+msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
-"Vous ne pouvez créer un remboursement sur une facture avec des paiements"
-
-msgctxt "error:account.invoice.line:"
-msgid "Line with \"line\" type must have an account!"
-msgstr "Ligne de type \"ligne\" doit avoir un compte !"
+"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 "Ligne de type \"ligne\" doit avoir un compte !"
+msgid "Line with \"line\" type must have an account."
+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 "Ligne sans type \"ligne\" doit avoir une facture !"
-
-msgctxt "error:account.invoice.line:"
-msgid "Line without \"line\" type must have an invoice!"
-msgstr "Ligne sans type \"ligne\" doit avoir une facture !"
-
-msgctxt "error:account.invoice.line:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
-msgstr ""
-"Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée "
-"our annulée !"
-
-msgctxt "error:account.invoice.line:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
-msgstr ""
-"Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée "
-"our annulée !"
+msgid "Line without \"line\" type must have an invoice."
+msgstr "Les lignes qui ne sont pas de type \"ligne\" doivent avoir une facture."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
-"Vous ne pouvez pas créer de ligne de facture\n"
-"avec un compte d'une différente société que celle de la  facture !"
+"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:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
-msgstr ""
-"Vous ne pouvez pas créer de ligne de facture\n"
-"avec un compte d'une différente société que celle de la  facture !"
-
-msgctxt "error:account.invoice.line:"
-msgid "You can not modify line from an invoice that is opened, paid!"
-msgstr ""
-"Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte ou payée "
-"!"
-
-msgctxt "error:account.invoice.line:"
-msgid "You can not modify line from an invoice that is opened, paid!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
-"Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte ou payée "
-"!"
+"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 use the same account\n"
-"as on the invoice!"
+"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 pas utilier le même compte\n"
-"que celui de la factiure !"
+"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 use the same account\n"
-"as on the invoice!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
 msgstr ""
-"Vous ne pouvez pas utilier le même compte\n"
-"que celui de la factiure !"
+"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:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"greater than the amount to pay."
 msgstr ""
-"Vous ne pouvez créer un paiemet partiel avec un montant plus grand que le "
-"montant à payer"
+"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:"
 msgid "Day of month must be between 1 and 31."
 msgstr "Le jour du mois doit être entre 1 et 31"
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
-msgstr "Pourcentage et diviseur ne sont pas cohérent"
-
-msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr "Ligne de condition de paiement non-valide !"
-
-msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr "Ligne de condition de paiement non-valide !"
+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\"."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
-msgstr "La condition de paiement manque une ligne de reste !"
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
+msgstr "La ligne \"%(line)s\" de la condition de paiement \"%(term)s\" est invalide."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
-msgstr "La condition de paiement manque une ligne de reste !"
-
-msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid "Missing remainder line in payment term \"%s\"."
 msgstr ""
-"Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou"
-" annulée !"
+"Une ligne de type \"Reste\" est manquante sur la condition de paiement "
+"\"%s\"."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add line \"%(line)s\" to invoice \"%(invoice)s\" because it is "
+"posted, paid or canceled."
 msgstr ""
-"Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou"
-" annulée !"
+"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:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using account \"%(account)s\" from company "
+"\"%(account_company)s\"."
 msgstr ""
-"Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte ou payée"
-" !"
+"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 "You can not modify tax from an invoice that is opened, paid!"
-msgstr ""
-"Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte ou payée"
-" !"
-
-msgctxt "error:account.invoice:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
+"\"%(base_code_company)s\"."
 msgstr ""
-"Le montant de base des taxes sont différents des lignes de facture !\n"
-"Re-calculez la facture."
+"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:"
+msgctxt "error:account.invoice.tax:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
 msgstr ""
-"Le montant de base des taxes sont différents des lignes de facture !\n"
-"Re-calculez la facture."
+"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:"
-msgid "Invoice \"%s\" must be cancelled before deletion!"
-msgstr "La facture \"%s\" doit être annulée avant suppression"
-
-msgctxt "error:account.invoice:"
+msgctxt "error:account.invoice.tax:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
-"Re-compute the invoice."
+"You can not modify tax \"%(tax)s\" from invoice \"%(invoice)s\" because it "
+"is posted or paid."
 msgstr ""
-"Des taxes sont définies mais pas sur les lignes de facture !\n"
-"Re-calculez la facture."
+"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 ""
-"Taxes defined but not on invoice lines!\n"
-"Re-compute the invoice."
+"Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
+"invoice and in line \"%(line)s\"."
 msgstr ""
-"Des taxes sont définies mais pas sur les lignes de facture !\n"
-"Re-calculez la facture."
+"La facture \"%(invoice)s\" utilise le même compte \"%(account)s\" pour la "
+"facture et la ligne \"%(line)s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" has taxes defined but not on invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"Des taxes sont définies sur les lignes de facture mais pas sur la facture !\n"
-"Re-calculez la facture."
+"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:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"Des taxes sont définies sur les lignes de facture mais pas sur la facture !\n"
-"Re-calculez la facture."
-
-msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
-msgstr "Le compte de crédit sur le journal est manquant !"
+"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 "The credit account on journal is missing!"
-msgstr "Le compte de crédit sur le journal est manquant !"
+msgid "Invoice \"%s\" must be cancelled before deletion."
+msgstr "La facture \"%s\" doit être annulée pour être supprimée."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
+msgid ""
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
+"Re-compute the invoice."
 msgstr ""
-"Le compte de crébit sur le journal est le même que le compte de la facture !"
+"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:"
-msgid "The credit account on journal is the same than the invoice account!"
+msgid ""
+"The credit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
 msgstr ""
-"Le compte de crébit sur le journal est le même que le compte de la facture !"
+"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 debit account on journal is missing!"
-msgstr "Le compte de débit sur le journal est manquant !"
-
-msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
-msgstr "Le compte de débit sur le journal est manquant !"
-
-msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
-msgstr ""
-"Le compte de débit sur le journal est le même que le compte de la facture !"
+msgid "The credit account on journal %s\" is missing."
+msgstr "Le compte de crédit du journal \"%s\" est absent."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
+msgid ""
+"The debit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
 msgstr ""
-"Le compte de débit sur le journal est le même que le compte de la facture !"
+"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 "There is no invoice sequence on the period/fiscal year!"
-msgstr "Il n'y a pas de séquence de facture sur la période/année fiscale !"
+msgid "The debit account on journal \"%s\" is missing."
+msgstr "Le compte de débit du journal \"%s\" est manquant."
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
-msgstr "Il n'y a pas de séquence de facture sur la période/année fiscale !"
+msgid "The numbered invoice \"%s\" can not be deleted."
+msgstr "La facture \"%s\" ne peut pas être surpprimée."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
+"The period of Invoice \"%s\" is closed.\n"
+"Use the today for cancel move?"
 msgstr ""
-"Vous ne pouvez pas créer une facture\n"
-"avec un compte d'une société de facturation différente !"
+"La période de la facture \"%s\" est fermée.\n"
+"Utiliser la date du jour pour annuler le mouvement ?"
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
-msgstr ""
-"Vous ne pouvez pas créer une facture\n"
-"avec un compte d'une société de facturation différente !"
-
-msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
-msgstr "Vous ne pouvez pas modifier une facture qui est ouverte ou payée !"
-
-msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
-msgstr "Vous ne pouvez pas modifier une facture qui est ouverte ou payée !"
-
-msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
-msgstr ""
-"Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !"
-
-msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
+"There is no invoice sequence for invoice \"%(invoice)s\" on the "
+"period/fiscal year \"%(period)s\"."
 msgstr ""
-"Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !"
+"Il n'y a pas de séquence de facture pour la facture \"%s\" dans la "
+"période/année fiscale \"%(period)s\""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+"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 pas utiliser le même compte\n"
-"que sur la ligne de facture !"
+"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 use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
 msgstr ""
-"Vous ne pouvez pas utiliser le même compte\n"
-"que sur la ligne de facture !"
+"Vous ne pouvez modifier la facture \"%(invoice)s\" car elle est postée, "
+"payée ou annulée."
 
 msgctxt "error:account.period:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
-msgstr ""
-"Vous ne pouvez pas changer la séquence de facture s'il y a déjà une facture "
-"ouverte dans la période"
+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."
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
-"Vous ne pouvez pas changer la séquence de facture s'il y a déjà une facture "
-"ouverte dans la période"
+"La période \"%(period)s\" et son année fiscale (%(fiscalyear)s) doivent "
+"avoir la même société."
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
-"Vous devez avoir des séquences de facture différentes par année fiscale et "
-"dans la même société !"
-
-msgctxt "error:account.period:"
-msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
-msgstr ""
-"Vous devez avoir des séquences de facture différentes par année fiscale et "
-"dans la même société !"
+"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.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -375,6 +297,10 @@ msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Montant à payer aujourd'hui"
 
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr "Mouvement annulé"
+
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Commentaire"
@@ -603,6 +529,10 @@ msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Note"
 
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr "Origine"
+
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Tiers"
@@ -1037,11 +967,11 @@ msgstr "Ligne de facture - Taxe"
 
 msgctxt "model:account.invoice.pay.ask,name:"
 msgid "Pay Invoice"
-msgstr "payer la facture"
+msgstr "Payer la facture"
 
 msgctxt "model:account.invoice.pay.start,name:"
 msgid "Pay Invoice"
-msgstr "payer la facture"
+msgstr "Payer la facture"
 
 msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
@@ -1060,8 +990,8 @@ msgid "Invoice Tax"
 msgstr "Tax de facture"
 
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
-msgstr "Toutes les factures"
+msgid "Invoices"
+msgstr "Factures"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
 msgid "Invoices"
@@ -1071,66 +1001,18 @@ msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Notes de crédit fournisseur"
 
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Notes de crédit fournisseurs brouillon"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Notes de crédit fournisseurs pro forma"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Notes de crédit fournisseurs ouvertes"
-
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Factures fournisseur"
 
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Factures fournisseur ouvertes"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Factures fournisseur pro forma"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Factures fournisseur ouvertes"
-
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Notes de crédit"
 
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Notes de crédit en brouillon"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Notes de crédit pro forma"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Notes de crédit ouvertes"
-
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Factures"
 
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Factures en brouillon"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Factures pro forma"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Factures ouvertes"
-
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Conditions de paiement"
@@ -1149,80 +1031,108 @@ msgstr "Facture"
 
 msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
-msgstr "payer la facture"
+msgstr "Payer la facture"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
+msgstr "Toutes"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Posté"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validé"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
+msgstr "Toutes"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
+msgstr "Posté"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validé"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
+msgstr "Toutes"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Posté"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Validé"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
+msgstr "Toutes"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr "Posté"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
+msgstr "Validé"
 
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
-msgstr "Toutes les factures"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Notes de crédit fournisseur"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Notes de crédit fournisseur brouillon"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Notes de crédit fournisseur pro forma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Notes de crédit fournisseur ouvertes"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Factures fournisseur"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Factures fournisseur brouillon"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Factures fournisseur pro forma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Factures fournisseur ouvertes"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Notes de crédit"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Notes de crédit brouillon"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Notes de crédit pro forma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Notes de crédit ouvertes"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Factures"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Factures en brouillon"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Factures pro forma"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Factures ouvertes"
-
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
 msgstr "Factures"
@@ -1372,22 +1282,6 @@ msgid "Pro forma Invoice"
 msgstr "Facture pro forma"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr "Note de crédit fournisseur pro forma"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr "Note de crédit fournisseur pro forma"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr "Facture fournisseur pro forma"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr "Facture fournisseur pro forma"
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Quantité"
 
@@ -1475,6 +1369,14 @@ msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "TVA :"
 
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr "Notes de crédit fournisseur validées"
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr "Factures fournisseur validées"
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Annulé"
@@ -1492,14 +1394,6 @@ msgid "Draft"
 msgstr "Brouillon"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr "Ouvert"
-
-msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr "Ouvert"
-
-msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Payée"
 
@@ -1508,12 +1402,12 @@ msgid "Paid"
 msgstr "Payée"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr "Pro forma"
+msgid "Posted"
+msgstr "Posté"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr "Pro forma"
+msgid "Validated"
+msgstr "Validé"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1759,17 +1653,13 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notes"
 
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr "Produits"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
-msgstr "payer la facture"
+msgstr "Payer la facture"
 
 msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
-msgstr "payer la facture"
+msgstr "Payer la facture"
 
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Line"
@@ -1788,14 +1678,6 @@ msgid "Payment Term"
 msgstr "Conditions de paiement"
 
 msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr "Ligne de condition de paiement"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr "Lignes de condition de paiement"
-
-msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Conditions de paiement"
 
@@ -1844,16 +1726,12 @@ msgid "Taxes"
 msgstr "Taxes"
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
-msgstr "Montant de devise secondaire"
-
-msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr "Crédit"
+msgid "Also known as Pro Forma"
+msgstr "Alias Pro Forma"
 
 msgctxt "view:account.invoice:"
-msgid "Debit"
-msgstr "Débit"
+msgid "Are you sure to cancel the invoice?"
+msgstr "Êtes-vous sûr d'annuler la facture ?"
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
@@ -1872,10 +1750,6 @@ msgid "Invoices"
 msgstr "Factures"
 
 msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr "Lignes"
-
-msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Autre information"
 
@@ -1892,20 +1766,8 @@ msgid "Payment"
 msgstr "Paiement"
 
 msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr "Lignes de paiement"
-
-msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr "Pro For_ma"
-
-msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr "Pro For_ma"
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
-msgstr "Taxes"
+msgid "Validate"
+msgstr "Valider"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
@@ -1924,14 +1786,6 @@ msgid "_Draft"
 msgstr "_Brouillon"
 
 msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr "_Ouvrir"
-
-msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr "_Ouvrir"
-
-msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Payer"
 
@@ -1940,8 +1794,8 @@ msgid "_Pay"
 msgstr "_Payer"
 
 msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
-msgstr "_Remettre en brouillon"
+msgid "_Post"
+msgstr "_Poster"
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 2165f8c..d9f095b 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -3,63 +3,64 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"U kunt de factuurreeks niet meer aanpassen als er in dit boekjaar al een "
-"factuur is geboekt."
 
 msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
-msgstr "U moet per boekjaar verschillende factuurreeksen hebben!"
+msgid ""
+"You can not change invoice sequence in fiscal year \"%s\" because there are "
+"already posted invoices in this fiscal year."
+msgstr ""
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund a supplier invoice/credit note."
+msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice that is not opened!"
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
+msgid "You can not credit with refund invoice \"%s\" because it is not posted."
 msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "Line with \"line\" type must have an account!"
-msgstr "Regel met \"regel\" type moet een rekening hebben!"
+msgid "Line with \"line\" type must have an account."
+msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "Line without \"line\" type must have an invoice!"
-msgstr "Een regel zonder \"regel\" moet een factuur hebben!"
+msgid "Line without \"line\" type must have an invoice."
+msgstr ""
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
-"U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde "
-"factuur!"
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
-"U kunt geen factuurregel aanmaken\n"
-"op een rekening van een ander bedrijf!"
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not modify line from an invoice that is opened, paid!"
-msgstr "U kunt geen regel aanpassen van een openstraande of betaalde factuur!"
+msgid ""
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s\" "
+"because the invoice uses the same account (%(account)s)."
+msgstr ""
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not use the same account\n"
-"as on the invoice!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
 msgstr ""
-"U kunt niet dezelfde rekening \n"
-"gebruiken als op de factuur!"
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"greater than the amount to pay."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term.line:"
@@ -67,116 +68,141 @@ msgid "Day of month must be between 1 and 31."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
+msgid ""
+"Percentage and Divisor values are not consistent in line \"%(line)s\" of "
+"payment term \"%(term)s\"."
 msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr "Ongeldige betalingstermijn!"
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
+msgstr ""
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
-msgstr "De betalingstermijn mist een restantregel!"
+msgid "Missing remainder line in payment term \"%s\"."
+msgstr ""
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add line \"%(line)s\" to invoice \"%(invoice)s\" because it is "
+"posted, paid or canceled."
 msgstr ""
-"U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde "
-"factuur!"
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using account \"%(account)s\" from company "
+"\"%(account_company)s\"."
+msgstr ""
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
+"\"%(base_code_company)s\"."
+msgstr ""
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
+msgstr ""
+
+msgctxt "error:account.invoice.tax:"
+msgid ""
+"You can not modify tax \"%(tax)s\" from invoice \"%(invoice)s\" because it "
+"is posted or paid."
 msgstr ""
-"U kunt de belasting niet aanpassen van een openstaande of betaalde factuur!"
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
+"Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
+"invoice and in line \"%(line)s\"."
 msgstr ""
-"Standaard belasting wijkt af van factuurregels!\n"
-"Herbereken de factuur."
 
 msgctxt "error:account.invoice:"
-msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgid ""
+"Invoice \"%s\" has taxes defined but not on invoice lines.\n"
+"Re-compute the invoice."
 msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
-"Belasting gedefinieerd maar niet op deze factuurregels!\n"
-"Herbereken de factuur."
+
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion."
+msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
-"Belasting gedefinieerd op factuurregels, maar niet op de factuur!\n"
-"Herbereken de factuur."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
-msgstr "De credit boeking ontbreekt!"
+msgid ""
+"The credit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
+msgid "The credit account on journal %s\" is missing."
 msgstr ""
-"De credit rekening in het dagboek is dezelfde als de factuur rekening."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
-msgstr "De debit boeking ontbreekt!"
+msgid ""
+"The debit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
+msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
-msgstr "De debit rekening in het dagboek is dezelfde als de factuur rekening."
+msgid "The debit account on journal \"%s\" is missing."
+msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
-msgstr "Er is geen factuurreeks voor deze periode / dit boekjaar!"
+msgid "The numbered invoice \"%s\" can not be deleted."
+msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
+"The period of Invoice \"%s\" is closed.\n"
+"Use the today for cancel move?"
 msgstr ""
-"U kunt geen factuur aanmaken\n"
-"op een rekening van een ander bedrijf!"
 
 msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
-msgstr "U kunt een openstaande of betaalde factuur niet wijzigen!"
+msgid ""
+"There is no invoice sequence for invoice \"%(invoice)s\" on the "
+"period/fiscal year \"%(period)s\"."
+msgstr ""
 
 msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
-msgstr "Een geboekte factuur kunt u niet terugzetten naar concept!"
+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 ""
 
 msgctxt "error:account.invoice:"
-msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
+msgstr ""
+
+msgctxt "error:account.period:"
+msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
-"U kunt niet dezelfde rekening gebruiken\n"
-"als op de factuurregel!"
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
-"U kunt niet de factuurreeks aanpassen als er al een factuur in deze periode "
-"is geboekt"
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
-"U moet per boekjaar verschillende factuurreeksen hebben binnen hetzelfde "
-"bedrijf!"
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -210,6 +236,10 @@ msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Vandaag te betalen bedrag"
 
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr ""
+
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Opmerking"
@@ -438,6 +468,10 @@ msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Aantekening"
 
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr ""
+
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Relatie"
@@ -907,8 +941,9 @@ msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr "Belasting factuur"
 
+#, fuzzy
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
+msgid "Invoices"
 msgstr "Alle facturen"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
@@ -919,66 +954,18 @@ msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Credit inkoopnota's"
 
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Concept credit inkoopnota's"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Pro forma credit inkoopnota's"
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Openstaande credit inkoopnota's"
-
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Inkoopfacturen"
 
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Concept inkoopfacturen"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Pro forma inkoopfacturen"
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Openstaande inkoopfacturen"
-
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Credit verkoopnota's"
 
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Concept credit verkoopnota's"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Pro forma credit verkoopnota's"
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Openstaande credit inkoopnota's"
-
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Verkoopfacturen"
 
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Concept verkoopfacturen"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Pro forma verkoopfacturen"
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Openstaande verkoopfacturen"
-
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Betalingstermijnen"
@@ -1001,78 +988,118 @@ msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr ""
 
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Concept"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Geboekt"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Goedgekeurd"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
+msgstr "Concept"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
+msgstr "Geboekt"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
+msgstr "Goedgekeurd"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Concept"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Geboekt"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Goedgekeurd"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
+msgstr "Concept"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr "Geboekt"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
+msgstr "Goedgekeurd"
+
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
-msgstr "Alle facturen"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
 msgstr "Credit inkoopnota's"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr "Concept credit inkoopnota's"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr "Pro forma credit inkoopnota's"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr "Openstaande credit inkoopnota's"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
 msgstr "Inkoopfacturen"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr "Concept inkoopfacturen"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr "Pro forma inkoopfacturen"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr "Openstaande inkoopfacturen"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
 msgstr "Credit verkoopnota's"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr "Concept credit verkoopnota's"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr "Pro forma credit verkoopnota's"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr "Openstaande credit inkoopnota's"
-
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
 msgstr "Verkoopfacturen"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr "Concept verkoopfacturen"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr "Pro forma verkoopfacturen"
-
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr "Openstaande verkoopfacturen"
-
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
 msgstr "Facturen"
@@ -1154,14 +1181,6 @@ msgid "Pro forma Invoice"
 msgstr "Pro forma verkoopfactuur"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr "Pro forma credit inkoopnota"
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr "Pro forma factuur"
-
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Hoeveelheid"
 
@@ -1205,6 +1224,14 @@ msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "BTW:"
 
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr ""
+
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Geannuleerd"
@@ -1214,16 +1241,18 @@ msgid "Draft"
 msgstr "Concept"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr "Geopend"
-
-msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Betaald"
 
+#, fuzzy
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr "Pro forma"
+msgid "Posted"
+msgstr "Geboekt"
+
+#, fuzzy
+msgctxt "selection:account.invoice,state:"
+msgid "Validated"
+msgstr "Goedgekeurd"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1407,10 +1436,6 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Aantekeningen"
 
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr "Producten"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr ""
@@ -1434,14 +1459,6 @@ msgid "Payment Term"
 msgstr "Betalingstermijn"
 
 msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr "Betalingstermijn regel"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr "Betalingstermijn regels"
-
-msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Betalingstermijnen"
 
@@ -1475,16 +1492,12 @@ msgid "Taxes"
 msgstr "Belastingen"
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
-msgstr "Bedrag alternatieve valuta"
-
-msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr "Credit"
+msgid "Also known as Pro Forma"
+msgstr ""
 
 msgctxt "view:account.invoice:"
-msgid "Debit"
-msgstr "Debit"
+msgid "Are you sure to cancel the invoice?"
+msgstr ""
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
@@ -1495,10 +1508,6 @@ msgid "Invoices"
 msgstr "Verkoopfacturen"
 
 msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr "Regels"
-
-msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Aanvullende informatie"
 
@@ -1506,17 +1515,10 @@ msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Betaling"
 
+#, fuzzy
 msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr "Betalingen"
-
-msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr "Pro For_ma"
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
-msgstr "Belastingen"
+msgid "Validate"
+msgstr "Goedkeuren"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
@@ -1527,16 +1529,12 @@ msgid "_Draft"
 msgstr "_Concept"
 
 msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr "_Open"
-
-msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Betalen"
 
 msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
-msgstr "_Terug naar concept"
+msgid "_Post"
+msgstr ""
 
 #, fuzzy
 msgctxt "view:account.move.line:"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index 6baf99a..9b4686b 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -3,1295 +3,1340 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.fiscalyear:"
-msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the fiscalyear"
+msgid "Fiscal year \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
 msgstr ""
+"Финансовый год \"%(first)s\" и \"%(second)s\" содержат одинаковые нумерации "
+"инвойсов."
 
 msgctxt "error:account.fiscalyear:"
-msgid "You must have different invoice sequences per fiscal year!"
+msgid ""
+"You can not change invoice sequence in fiscal year \"%s\" because there are "
+"already posted invoices in this fiscal year."
 msgstr ""
+"Вы не можете изменить нумерацию инвойсов в финансовом году \"%s\" так как в "
+"этом финансовом году уже есть отправленные инвойсы."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice that is not opened!"
-msgstr ""
+msgid "You can not credit with refund a supplier invoice/credit note."
+msgstr "Вы не можете сделать возврат инвойса/сторно поставщика."
 
 msgctxt "error:account.invoice.credit:"
-msgid "You can not credit with refund an invoice with payments!"
+msgid "You can not credit with refund invoice \"%s\" because it has payments."
 msgstr ""
+"Вы не можете создать возврат для инвойса  \"%s\" так как он содержит "
+"платежи."
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund invoice \"%s\" because it is not posted."
+msgstr "Вы не можете сделать возврат \"%s\" так как он не отправлен."
 
 msgctxt "error:account.invoice.line:"
-msgid "Line with \"line\" type must have an account!"
-msgstr ""
+msgid "Line with \"line\" type must have an account."
+msgstr "Строки типа \"line\" должны иметь счет."
 
 msgctxt "error:account.invoice.line:"
-msgid "Line without \"line\" type must have an invoice!"
-msgstr ""
+msgid "Line without \"line\" type must have an invoice."
+msgstr "Строка без \"строки\" должна содержать инвойс."
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not add a line to invoice \"%(invoice)s\" that is posted, paid or "
+"cancelled."
 msgstr ""
+"Вы не можете добавить строку к инвойсу \"%(invoice)s\", который был "
+"\"Отправлен\", \"Оплачен\" или \"Отменен\"."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not create invoice line\n"
-"with account with a different invoice company!"
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s of "
+"company \"%(invoice_line_company)s because account \"%(account)s has company"
+" \"%(account_company)s\"."
 msgstr ""
+"Вы не можете создать строку \"%(line)s\" у инвойса \"%(invoice)s организации"
+" \"%(invoice_line_company)s так как счет \"%(account)s\" принадлежит "
+"организации \"%(account_company)s\"."
 
 msgctxt "error:account.invoice.line:"
-msgid "You can not modify line from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice line \"%(line)s\" on invoice \"%(invoice)s\" "
+"because the invoice uses the same account (%(account)s)."
 msgstr ""
+"Вы не можете создать строчку \"%(line)s\" в инвойсе \"%(invoice)s\" так как "
+"инвойс использует тот же счет (%(account)s)."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
-"You can not use the same account\n"
-"as on the invoice!"
+"You can not modify line \"%(line)s\" from invoice \"%(invoice)s\" that is "
+"posted or paid."
 msgstr ""
+"Вы не можете изменить строку \"%(line)s\" инвойса \"%(invoice)s\" который "
+"был отправлен или оплачен."
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
-"You can not create a partial payment with an amount greater then the amount "
-"to pay!"
+"On invoice \"%s\" you can not create a partial payment with an amount "
+"greater than the amount to pay."
 msgstr ""
+"У инвойса \"%s\" нельзя создать частичную оплату превышающую общую оплату."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
-msgstr ""
+msgstr "День месяца должен быть между 1 и 31."
 
 msgctxt "error:account.invoice.payment_term.line:"
-msgid "Percentage and Divisor values are not consistent."
+msgid ""
+"Percentage and Divisor values are not consistent in line \"%(line)s\" of "
+"payment term \"%(term)s\"."
 msgstr ""
+"Проценты и делитель не совместимы в строке \"%(line)s\" правила оплаты "
+"\"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Invalid payment term line!"
-msgstr ""
+msgid "Invalid line \"%(line)s\" in payment term \"%(term)s\"."
+msgstr "Некорректная строка \"%(line)s\" в правиле оплаты \"%(term)s\"."
 
 msgctxt "error:account.invoice.payment_term:"
-msgid "Payment term missing a remainder line!"
+msgid "Missing remainder line in payment term \"%s\"."
+msgstr "Отсутствует строчка остатка в правиле оплаты \"%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 ""
+"Вы не можете добавить строчку \"%(line)s\" в инвойс \"%(invoice)s\" так как "
+"он \"Отправлен\", \"Оплачен\" или \"Отменен\"."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using account \"%(account)s\" from company "
+"\"%(account_company)s\"."
 msgstr ""
+"Вы не можете создать инвойс \"%(invoice)s\" для организации "
+"\"%(invoice_company)s\" используя счет \"%(account)s\" от организации "
+"\"%(account_company)s\"."
 
 msgctxt "error:account.invoice.tax:"
-msgid "You can not modify tax from an invoice that is opened, paid!"
+msgid ""
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using base tax code \"%(base_code)s\" from company "
+"\"%(base_code_company)s\"."
 msgstr ""
+"Вы не можете создать инвойс \"%(invoice)s\" для организации "
+"\"%(invoice_company)s\" используя базовый код налога \"%(base_code)s\" для "
+"организации \"%(base_code_company)s\"."
 
-msgctxt "error:account.invoice:"
+msgctxt "error:account.invoice.tax:"
 msgid ""
-"Base taxes different from invoice lines!\n"
-"Re-compute the invoice."
+"You can not create invoice \"%(invoice)s\" on company "
+"\"%(invoice_company)s\" using tax code \"%(tax_code)s\" from company "
+"\"%(tax_code_company)s\"."
+msgstr ""
+"Вы не можете создать инвойс \"%(invoice)s\" для организации "
+"\"%(invoice_company)s\" используя код налога \"%(tax_code)s\" от организации"
+" \"%(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 ""
+"Вы не можете изменить налог \"%(tax)s\" у инвойса \"%(invoice)s\" так как он"
+" отправлен или оплачен."
 
 msgctxt "error:account.invoice:"
-msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgid ""
+"Invoice \"%(invoice)s\" uses the same account \"%(account)s\" for the "
+"invoice and in line \"%(line)s\"."
 msgstr ""
+"Инвойс \"%(invoice)s\" использует тот же счет \"%(account)s\" для инвойса и "
+"в строке \"%(line)s\"."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined but not on invoice lines!\n"
+"Invoice \"%s\" has taxes defined but not on invoice lines.\n"
 "Re-compute the invoice."
 msgstr ""
+"Инвойс \"%s\" содержит налоги, но не в строках инвойса.\n"
+"Пересчитайте инвойс."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"Taxes defined on invoice lines but not on invoice!\n"
+"Invoice \"%s\" has taxes on invoice lines that are not in the invoice.\n"
 "Re-compute the invoice."
 msgstr ""
+"Инвойс \"%s\" содержит налоги в строках инвойса, которые не содержатся в инвойсе.\n"
+"Пересчитайте инвойс."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is missing!"
-msgstr ""
+msgid "Invoice \"%s\" must be cancelled before deletion."
+msgstr "Инвойс \"%s\" должен быть отменен перед удалением."
 
 msgctxt "error:account.invoice:"
-msgid "The credit account on journal is the same than the invoice account!"
+msgid ""
+"Invoice \"%s\" tax bases are different from invoice lines.\n"
+"Re-compute the invoice."
 msgstr ""
+"Базы налога у инвойса \"%s\" отличаются от строк инвойса.\n"
+"Пересчитайте инвойс."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is missing!"
+msgid ""
+"The credit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
 msgstr ""
+"Кредитный счет у журнала \"%(journal)s\" точно такой же как счет инвойса "
+"\"%(invoice)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "The debit account on journal is the same than the invoice account!"
-msgstr ""
+msgid "The credit account on journal %s\" is missing."
+msgstr "Отсутствует кредитный счет в журнале \"%s\"."
 
 msgctxt "error:account.invoice:"
-msgid "There is no invoice sequence on the period/fiscal year!"
+msgid ""
+"The debit account on journal \"%(journal)s\" is the same as invoice "
+"\"%(invoice)s\"'s account."
 msgstr ""
+"Дебетовый счет у журнала \"%(journal)s\" такой же как счет инвойса "
+"\"%(invoice)s\"."
+
+msgctxt "error:account.invoice:"
+msgid "The debit account on journal \"%s\" is missing."
+msgstr "Отсутствует дебетовый счет для журнала \"%s\"."
+
+msgctxt "error:account.invoice:"
+msgid "The numbered invoice \"%s\" can not be deleted."
+msgstr "Пронумерованный инвойс \"%s\" не может быть удален."
 
 msgctxt "error:account.invoice:"
 msgid ""
-"You can not create an invoice\n"
-"with account from a different invoice company!"
+"The period of Invoice \"%s\" is closed.\n"
+"Use the today for cancel move?"
 msgstr ""
+"Период инвойса \"%s\" уже закрыт.\n"
+"Использовать текущую дату для отмены проводки?"
 
 msgctxt "error:account.invoice:"
-msgid "You can not modify an invoice that is opened, paid!"
+msgid ""
+"There is no invoice sequence for invoice \"%(invoice)s\" on the "
+"period/fiscal year \"%(period)s\"."
 msgstr ""
+"Не существует нумерации инвойсов для инвойса \"%(invoice)s\" за "
+"период/финансовый год \"%(period)s\"."
 
 msgctxt "error:account.invoice:"
-msgid "You can not reset to draft an invoice that has move!"
+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 ""
+"Вы не можете создать инвойс \"%(invoice)s\" для организации "
+"\"%(invoice_company)s так как счет \"%(account)s принадлежит другой "
+"организации (%(account_company)s.)"
 
 msgctxt "error:account.invoice:"
-msgid ""
-"You can not use the same account\n"
-"as on invoice line!"
+msgid "You can not modify invoice \"%s\" because it is posted, paid or cancelled."
 msgstr ""
+"Вы не можете изменить инвойс \"%s\" так как он \"Отправлен\", \"Оплачен\" "
+"или \"Отменен\"."
+
+msgctxt "error:account.period:"
+msgid "Period \"%(first)s\" and \"%(second)s\" have the same invoice sequence."
+msgstr ""
+"Периоды \"%(first)s\" и \"%(second)s\" имеют одинаковые последовательности "
+"инвойсов."
 
 msgctxt "error:account.period:"
 msgid ""
-"You can not change the invoice sequence if there is already an invoice "
-"opened in the period"
+"Period \"%(period)s\" must have the same company as its fiscal year "
+"(%(fiscalyear)s)."
 msgstr ""
+"Период \"%(period)s\" должен содержать ту же организацию что и в финансовом "
+"году (%(fiscalyear)s)."
 
 msgctxt "error:account.period:"
 msgid ""
-"You must have different invoice sequences per fiscal year and in the same "
-"company!"
+"You can not change the invoice sequence in period \"%s\" because there is "
+"already an invoice posted in this period"
 msgstr ""
+"Вы не можете изменить нумерацию в периоде \"%s\" так как уже есть "
+"отправленные инвойсы в этом периоде."
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr ""
+msgstr "Нумерация сторно поставщиков"
 
 msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
-msgstr ""
+msgstr "Нумерация инвойсов поставщика"
 
 msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr ""
+msgstr "Нумерация сторно заказчиков"
 
 msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr ""
+msgstr "Нумерация инвойса заказчика"
 
 msgctxt "field:account.invoice,account:"
 msgid "Account"
-msgstr ""
+msgstr "Счет"
 
 msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
-msgstr ""
+msgstr "Дата расчетов"
 
 msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
-msgstr ""
+msgstr "Сумма к оплате"
 
 msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
-msgstr ""
+msgstr "Сумма к оплате сегодня"
+
+msgctxt "field:account.invoice,cancel_move:"
+msgid "Cancel Move"
+msgstr "Отменить проводку"
 
-#, fuzzy
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Комментарии"
 
-#, fuzzy
 msgctxt "field:account.invoice,company:"
 msgid "Company"
-msgstr "Учет.орг."
+msgstr "Организация"
 
 msgctxt "field:account.invoice,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
 
 msgctxt "field:account.invoice,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
 
-#, fuzzy
 msgctxt "field:account.invoice,currency:"
 msgid "Currency"
-msgstr "Валюты"
+msgstr "Валюта"
 
 msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
-msgstr ""
+msgstr "Дата курса валюты"
 
 msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
-msgstr ""
+msgstr "Кол-во цифр валюты"
 
-#, fuzzy
 msgctxt "field:account.invoice,description:"
 msgid "Description"
 msgstr "Описание"
 
 msgctxt "field:account.invoice,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
-msgstr ""
+msgstr "Адрес для инвойса"
 
 msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
-msgstr ""
+msgstr "Дата инвойса"
 
 msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
-msgstr ""
+msgstr "Отчет Инвойса"
 
 msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
-msgstr ""
+msgstr "Формат отчета Инвойса"
 
 msgctxt "field:account.invoice,journal:"
 msgid "Journal"
-msgstr ""
+msgstr "Журнал"
 
-#, fuzzy
 msgctxt "field:account.invoice,lines:"
 msgid "Lines"
 msgstr "Строки"
 
 msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
-msgstr ""
+msgstr "Строки к оплате"
 
-#, fuzzy
 msgctxt "field:account.invoice,move:"
 msgid "Move"
 msgstr "Перемещение"
 
 msgctxt "field:account.invoice,number:"
 msgid "Number"
-msgstr ""
+msgstr "Номер"
 
-#, fuzzy
 msgctxt "field:account.invoice,party:"
 msgid "Party"
-msgstr "Организации"
+msgstr "Контрагент"
 
 msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
-msgstr ""
+msgstr "Язык контрагента"
 
 msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
-msgstr ""
+msgstr "Строки оплаты"
 
 msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
-msgstr ""
+msgstr "Правило оплаты"
 
-#, fuzzy
 msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
-msgstr ""
+msgstr "Сверено"
 
-#, fuzzy
 msgctxt "field:account.invoice,reference:"
 msgid "Reference"
 msgstr "Ссылка"
 
-#, fuzzy
 msgctxt "field:account.invoice,state:"
 msgid "State"
-msgstr "Статус"
+msgstr "Состояние"
 
 msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
-msgstr ""
+msgstr "Налог"
 
 msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
-msgstr ""
+msgstr "Строки налога"
 
 msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
-msgstr ""
+msgstr "Итого"
 
-#, fuzzy
 msgctxt "field:account.invoice,type:"
 msgid "Type"
 msgstr "Тип"
 
-#, fuzzy
 msgctxt "field:account.invoice,type_name:"
 msgid "Type"
 msgstr "Тип"
 
 msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
-msgstr ""
+msgstr "Без налога"
 
 msgctxt "field:account.invoice,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
 
 msgctxt "field:account.invoice,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
 
 msgctxt "field:account.invoice-account.move.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
 
 msgctxt "field:account.invoice-account.move.line,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
 
 msgctxt "field:account.invoice-account.move.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
-msgstr ""
+msgstr "Строка оплаты"
 
-#, fuzzy
 msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:account.invoice-account.move.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
 
 msgctxt "field:account.invoice-account.move.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
 
 msgctxt "field:account.invoice.credit.start,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
-msgstr ""
+msgstr "С возмещением"
 
 msgctxt "field:account.invoice.line,account:"
 msgid "Account"
-msgstr ""
+msgstr "Счет"
 
 msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
-msgstr ""
+msgstr "Сумма"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,company:"
 msgid "Company"
-msgstr "Учет.орг."
+msgstr "Организация"
 
 msgctxt "field:account.invoice.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
 
 msgctxt "field:account.invoice.line,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
-msgstr "Валюты"
+msgstr "Валюта"
 
 msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
-msgstr ""
+msgstr "Кол-во цифр валюты"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,description:"
 msgid "Description"
 msgstr "Описание"
 
 msgctxt "field:account.invoice.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
-msgstr ""
+msgstr "Налоги по инвойсу"
 
 msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
-msgstr ""
+msgstr "Тип инвойса"
 
 msgctxt "field:account.invoice.line,note:"
 msgid "Note"
-msgstr ""
+msgstr "Комментарий"
+
+msgctxt "field:account.invoice.line,origin:"
+msgid "Origin"
+msgstr "Первоисточник"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,party:"
 msgid "Party"
-msgstr "Организации"
+msgstr "Контрагент"
 
 msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
-msgstr ""
+msgstr "Язык контрагента"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,product:"
 msgid "Product"
-msgstr "Товарно материальные ценности (ТМЦ)"
+msgstr "Продукт"
 
 msgctxt "field:account.invoice.line,product_uom_category:"
 msgid "Product Uom Category"
-msgstr ""
+msgstr "Категория ед. измерения продукции"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
 msgstr "Кол-во"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
-msgstr "Последовательность"
+msgstr "Нумерация"
 
 msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
-msgstr ""
+msgstr "Налоги"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,type:"
 msgid "Type"
 msgstr "Тип"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
-msgstr "Штука"
+msgstr "Единица измерения"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
-msgstr "Группа цифр"
+msgstr "Кол-во цифр после запятой"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
 msgstr "Цена за единицу"
 
 msgctxt "field:account.invoice.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
 
 msgctxt "field:account.invoice.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
 
 msgctxt "field:account.invoice.line-account.tax,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
 
 msgctxt "field:account.invoice.line-account.tax,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
 
 msgctxt "field:account.invoice.line-account.tax,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
-msgstr ""
+msgstr "Строка инвойса"
 
-#, fuzzy
 msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
-msgstr ""
+msgstr "Налог"
 
 msgctxt "field:account.invoice.line-account.tax,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
 
 msgctxt "field:account.invoice.line-account.tax,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
 
 msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr ""
+msgstr "Счет списания"
 
 msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
-msgstr ""
+msgstr "Сумма оплаты"
 
 msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr ""
+msgstr "Сумма списания"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
-msgstr "Учет.орг."
+msgstr "Организация"
 
 msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
-msgstr ""
+msgstr "Валюта оплаты"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr ""
+msgstr "Точность валюты оплаты"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr ""
+msgstr "Кол-во цифр валюты списания"
 
 msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr ""
+msgstr "Валюта списания"
 
 msgctxt "field:account.invoice.pay.ask,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr ""
+msgstr "Журнал списания"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr "Строки"
 
 msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
-msgstr ""
+msgstr "Строки к оплате"
 
 msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
-msgstr ""
+msgstr "Строки оплаты"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Тип"
 
 msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
-msgstr ""
+msgstr "Сумма"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
-msgstr "Валюты"
+msgstr "Валюта"
 
 msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr ""
+msgstr "Кол-во цифр валюты"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
 msgstr "Дата"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
 msgstr "Описание"
 
 msgctxt "field:account.invoice.pay.start,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
-msgstr ""
+msgstr "Журнал"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
-msgstr "Действительный"
+msgstr "Действующий"
 
 msgctxt "field:account.invoice.payment_term,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
 
 msgctxt "field:account.invoice.payment_term,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
 msgstr "Описание"
 
 msgctxt "field:account.invoice.payment_term,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Строки"
 
 msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
-msgstr ""
+msgstr "Правило оплаты"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:account.invoice.payment_term,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
 
 msgctxt "field:account.invoice.payment_term,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
 
 msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
-msgstr ""
+msgstr "Сумма"
 
 msgctxt "field:account.invoice.payment_term.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
 
 msgctxt "field:account.invoice.payment_term.line,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
-msgstr "Валюты"
+msgstr "Валюта"
 
 msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
-msgstr ""
+msgstr "Кол-во цифр валюты"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
-msgstr ""
+msgstr "День месяца"
 
 msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
-msgstr ""
+msgstr "Кол-во дней"
 
 msgctxt "field:account.invoice.payment_term.line,divisor:"
 msgid "Divisor"
-msgstr ""
+msgstr "Делитель"
 
 msgctxt "field:account.invoice.payment_term.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.payment_term.line,month:"
 msgid "Month"
-msgstr ""
+msgstr "Месяц"
 
 msgctxt "field:account.invoice.payment_term.line,months:"
 msgid "Number of Months"
-msgstr ""
+msgstr "Кол-во месяцев"
 
 msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
-msgstr ""
+msgstr "Правило оплаты"
 
 msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
-msgstr ""
+msgstr "Процент"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
-msgstr "Последовательность"
+msgstr "Нумерация"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
 msgstr "Тип"
 
 msgctxt "field:account.invoice.payment_term.line,weekday:"
 msgid "Day of Week"
-msgstr ""
+msgstr "День недели"
 
 msgctxt "field:account.invoice.payment_term.line,weeks:"
 msgid "Number of Weeks"
-msgstr ""
+msgstr "Кол-во недель"
 
 msgctxt "field:account.invoice.payment_term.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
 
 msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
 
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
-msgstr ""
+msgstr "Счет"
 
 msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
-msgstr ""
+msgstr "Сумма"
 
 msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
-msgstr ""
+msgstr "База"
 
 msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
-msgstr ""
+msgstr "Основной код"
 
 msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
-msgstr ""
+msgstr "Основной знак"
 
 msgctxt "field:account.invoice.tax,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
 
 msgctxt "field:account.invoice.tax,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
 
-#, fuzzy
 msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
 msgstr "Описание"
 
 msgctxt "field:account.invoice.tax,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
-msgstr ""
+msgstr "Ручной"
 
-#, fuzzy
 msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
-#, fuzzy
 msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
-msgstr "Последовательность"
+msgstr "Нумерация"
 
 msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
-msgstr ""
+msgstr "Номер нумерации"
 
 msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
-msgstr ""
+msgstr "Налог"
 
 msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
-msgstr ""
+msgstr "Код налога"
 
 msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
-msgstr ""
+msgstr "Знак налога"
 
 msgctxt "field:account.invoice.tax,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
 
 msgctxt "field:account.invoice.tax,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
 
 msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr ""
+msgstr "Нумерация сторно поставщиков"
 
 msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
-msgstr ""
+msgstr "Нумерация инвойсов поставщика"
 
 msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr ""
+msgstr "Нумерация сторно заказчиков"
 
 msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr ""
+msgstr "Нумерация инвойса заказчика"
 
 msgctxt "field:party.address,invoice:"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr ""
+msgstr "Правило оплаты заказчика"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
-msgstr ""
+msgstr "Правило оплаты поставщика"
 
 msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr ""
+msgstr "Если истинно, то текущий инвойс будет оплачен."
 
 msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
-msgstr ""
+msgstr "Используется для сортировки строк в порядке возрастания"
 
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
-msgstr ""
+msgstr "Инвойс - строка оплаты"
 
 msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
-msgstr ""
+msgstr "Инициализировать возврат инвойса"
 
 msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
-msgstr ""
+msgstr "Строка инвойса"
 
 msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
-msgstr ""
+msgstr "Строка инвойса - Налоги"
 
 msgctxt "model:account.invoice.pay.ask,name:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Оплата инвойса"
 
 msgctxt "model:account.invoice.pay.start,name:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Оплата инвойса"
 
 msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
-msgstr ""
+msgstr "Правило оплаты"
 
 msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
-msgstr ""
+msgstr "Строка правила оплаты"
 
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr ""
+msgstr "Предупреждение при распечатке отчета Инвойса"
 
 msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
-msgstr ""
+msgstr "Налог по инвойсу"
 
 msgctxt "model:ir.action,name:act_invoice_form"
-msgid "All Invoices"
-msgstr ""
+msgid "Invoices"
+msgstr "Все инвойсы"
 
 msgctxt "model:ir.action,name:act_invoice_form2"
 msgid "Invoices"
-msgstr ""
+msgstr "Инвойсы"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr ""
+msgstr "Сторно поставщиков"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr ""
+msgstr "Инвойсы поставщиков"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr ""
+msgstr "Сторно"
 
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
 msgid "Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr ""
+msgstr "Инвойсы"
 
 msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
-msgstr ""
+msgstr "Правила оплаты"
 
 msgctxt "model:ir.action,name:credit"
 msgid "Credit"
-msgstr ""
+msgstr "Кредит"
 
 msgctxt "model:ir.action,name:print"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Оплата инвойса"
 
-msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
-msgid "Invoice"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_all"
+msgid "All"
+msgstr "Все"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_form"
-msgid "All Invoices"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Черновик"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
-msgid "Supplier Credit Notes"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Отправлен"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
-msgid "Draft Supplier Credit Notes"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Утвержденный"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
-msgid "Pro Forma Supplier Credit Notes"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_all"
+msgid "All"
+msgstr "Все"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
-msgid "Opened Supplier Credit Notes"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_draft"
+msgid "Draft"
+msgstr "Черновик"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
-msgid "Supplier Invoices"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_posted"
+msgid "Posted"
+msgstr "Отправлен"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
-msgid "Draft Supplier Invoices"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_in_invoice_domain_validated"
+msgid "Validated"
+msgstr "Утвержденный"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
-msgid "Pro Forma Supplier Invoices"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_all"
+msgid "All"
+msgstr "Все"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
-msgid "Opened Supplier Invoices"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_draft"
+msgid "Draft"
+msgstr "Черновик"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
-msgid "Credit Notes"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_posted"
+msgid "Posted"
+msgstr "Отправлен"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
-msgid "Draft Credit Notes"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_credit_note_domain_validated"
+msgid "Validated"
+msgstr "Утвержденный"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
-msgid "Pro Forma Credit Notes"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_all"
+msgid "All"
+msgstr "Все"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
-msgid "Opened Credit Notes"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_draft"
+msgid "Draft"
+msgstr "Черновик"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
-msgid "Invoices"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_posted"
+msgid "Posted"
+msgstr "Отправлен"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
-msgid "Draft Invoices"
-msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_invoice_out_invoice_domain_validated"
+msgid "Validated"
+msgstr "Утвержденный"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
-msgid "Pro Forma Invoices"
-msgstr ""
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Инвойс"
 
-msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
-msgid "Opened Invoices"
-msgstr ""
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Сторно поставщиков"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Инвойсы поставщиков"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Сторно"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Инвойсы"
 
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
-msgstr ""
+msgstr "Инвойсы"
 
 msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
 msgid "Payment Terms"
-msgstr ""
+msgstr "Правила оплаты"
 
 msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
-msgstr ""
+msgstr "Правила оплаты"
 
 msgctxt "odt:account.invoice:"
 msgid "Amount"
-msgstr ""
+msgstr "Сумма"
 
 msgctxt "odt:account.invoice:"
 msgid "Base"
-msgstr ""
+msgstr "База"
 
 msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
-msgstr ""
+msgstr "Сторно №:"
 
-#, fuzzy
 msgctxt "odt:account.invoice:"
 msgid "Date"
 msgstr "Дата"
 
-#, fuzzy
 msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr "Дата:"
 
-#, fuzzy
 msgctxt "odt:account.invoice:"
 msgid "Description"
 msgstr "Описание"
 
 msgctxt "odt:account.invoice:"
 msgid "Description:"
-msgstr ""
+msgstr "Описание:"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
-msgstr ""
+msgstr "Черновое сторно"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
-msgstr ""
+msgstr "Черновой инвойс"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
-msgstr ""
+msgstr "Черновое сторно поставщика"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
-msgstr ""
+msgstr "Черновой инвойс поставщика"
 
-#, fuzzy
 msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
-msgstr "E-Mail:"
+msgstr "Эл.почта:"
 
 msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
-msgstr ""
+msgstr "Инвойс №:"
 
 msgctxt "odt:account.invoice:"
 msgid "Payment Term"
-msgstr ""
+msgstr "Правило оплаты"
 
-#, fuzzy
 msgctxt "odt:account.invoice:"
 msgid "Phone:"
 msgstr "Телефон:"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
-msgstr ""
+msgstr "Предварительное сторно"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
-msgstr ""
-
-msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Credit Note"
-msgstr ""
+msgstr "Предварительный инвойс"
 
 msgctxt "odt:account.invoice:"
-msgid "Pro forma Supplier Invoice"
-msgstr ""
-
-#, fuzzy
-msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Кол-во"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
-msgstr ""
+msgstr "Сторно поставщика №:"
 
 msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
-msgstr ""
+msgstr "Инвойс поставщика №:"
 
 msgctxt "odt:account.invoice:"
 msgid "Tax"
-msgstr ""
+msgstr "Налог"
 
 msgctxt "odt:account.invoice:"
 msgid "Taxes"
-msgstr ""
+msgstr "Налоги"
 
 msgctxt "odt:account.invoice:"
 msgid "Taxes:"
-msgstr ""
+msgstr "Налоги:"
 
 msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
-msgstr ""
+msgstr "Итого (без налогов):"
 
 msgctxt "odt:account.invoice:"
 msgid "Total:"
-msgstr ""
+msgstr "Итого:"
 
-#, fuzzy
 msgctxt "odt:account.invoice:"
 msgid "Unit Price"
 msgstr "Цена за единицу"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
-msgstr ""
+msgstr "ИНН:"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT:"
-msgstr ""
+msgstr "ИНН:"
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Credit Note"
+msgstr "Утвержденное сторно поставщика"
+
+msgctxt "odt:account.invoice:"
+msgid "Validated Supplier Invoice"
+msgstr "Утвержденный инвойс поставщика"
 
-#, fuzzy
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Отменено"
 
-#, fuzzy
 msgctxt "selection:account.invoice,state:"
 msgid "Draft"
 msgstr "Черновик"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Opened"
-msgstr ""
+msgid "Paid"
+msgstr "Оплачен"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Paid"
-msgstr ""
+msgid "Posted"
+msgstr "Отправлен"
 
 msgctxt "selection:account.invoice,state:"
-msgid "Pro forma"
-msgstr ""
+msgid "Validated"
+msgstr "Утвержденный"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
-msgstr ""
+msgstr "Сторно"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
-msgstr ""
+msgstr "Сторно поставщика"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
-msgstr ""
+msgstr "Инвойс поставщика"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
-msgstr ""
+msgstr "Сторно"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
-msgstr ""
+msgstr "Сторно поставщика"
 
 msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
-msgstr ""
+msgstr "Инвойс поставщика"
 
-#, fuzzy
 msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr "Комментарии"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
-msgstr ""
+msgstr "Строка"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
-msgstr ""
+msgstr "Подитог"
 
 msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
-msgstr ""
+msgstr "Заголовок"
 
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
-msgstr ""
+msgstr "Частичная оплата"
 
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
-msgstr ""
+msgstr "Списание"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid ""
@@ -1299,322 +1344,272 @@ msgstr ""
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "April"
-msgstr ""
+msgstr "Апрель"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "August"
-msgstr ""
+msgstr "Август"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "December"
-msgstr ""
+msgstr "Декабрь"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "February"
-msgstr ""
+msgstr "Февраль"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "January"
-msgstr ""
+msgstr "Январь"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "July"
-msgstr ""
+msgstr "Июль"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "June"
-msgstr ""
+msgstr "Июнь"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "March"
-msgstr ""
+msgstr "Март"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "May"
-msgstr ""
+msgstr "Май"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "November"
-msgstr ""
+msgstr "Ноябрь"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "October"
-msgstr ""
+msgstr "Октябрь"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "September"
-msgstr ""
+msgstr "Сентябрь"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Fixed"
 msgstr "Фиксированная"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Remainder"
-msgstr ""
+msgstr "Процент от остатка"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Total"
-msgstr ""
+msgstr "Процент от общей суммы"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Remainder"
-msgstr ""
+msgstr "Остаток"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
 msgstr ""
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Friday"
 msgstr "Пятница"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Monday"
 msgstr "Понедельник"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Saturday"
 msgstr "Суббота"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Sunday"
 msgstr "Воскресенье"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Thursday"
 msgstr "Четверг"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Tuesday"
 msgstr "Вторник"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Среда"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr ""
+msgstr "Вы уверены, что хотите выставить Сторно для этих инвойсов?"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr ""
+msgstr "Выставить сторно для инвойса"
 
-#, fuzzy
 msgctxt "view:account.invoice.line:"
 msgid "General"
 msgstr "Основной"
 
 msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
-msgstr ""
+msgstr "Строка инвойса"
 
 msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
-msgstr ""
+msgstr "Строки инвойса"
 
-#, fuzzy
 msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Комментарии"
 
-#, fuzzy
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr "ТМЦ"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Оплата инвойса"
 
 msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Оплата инвойса"
 
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Line"
-msgstr ""
+msgstr "Строка правила оплаты"
 
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Lines"
-msgstr ""
+msgstr "Строки правила оплаты"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
-msgstr ""
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr ""
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr ""
+msgstr "Правило оплаты"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
-msgstr ""
+msgstr "Правила оплаты"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
-msgstr ""
+msgstr "Распечатать инвойс"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
-msgstr ""
+msgstr "Инвойсы будут отправлены <i>напрямую</i> на принтер."
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
-msgstr ""
+msgstr "Выбрано более одного инвойса для печати."
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
-msgstr ""
+msgstr "Налог по инвойсу"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
-msgstr ""
+msgstr "Налоги по инвойсу"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
-msgstr ""
+msgstr "Код налога"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Taxes"
-msgstr ""
+msgstr "Налоги"
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
-msgstr ""
+msgid "Also known as Pro Forma"
+msgstr "Так же известен как предварительный"
 
 msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr ""
-
-msgctxt "view:account.invoice:"
-msgid "Debit"
-msgstr ""
+msgid "Are you sure to cancel the invoice?"
+msgstr "Вы уверены что хотите отменить инвойс?"
 
 msgctxt "view:account.invoice:"
 msgid "Invoice"
-msgstr ""
+msgstr "Инвойс"
 
 msgctxt "view:account.invoice:"
 msgid "Invoices"
-msgstr ""
-
-#, fuzzy
-msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr "Строки"
+msgstr "Инвойсы"
 
 msgctxt "view:account.invoice:"
 msgid "Other Info"
-msgstr ""
+msgstr "Другая информация"
 
 msgctxt "view:account.invoice:"
 msgid "Payment"
-msgstr ""
-
-msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr ""
+msgstr "Оплата"
 
 msgctxt "view:account.invoice:"
-msgid "Pro For_ma"
-msgstr ""
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
-msgstr ""
+msgid "Validate"
+msgstr "Утвердить"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
-msgstr ""
+msgstr "Отменить"
 
 msgctxt "view:account.invoice:"
 msgid "_Draft"
-msgstr ""
-
-msgctxt "view:account.invoice:"
-msgid "_Open"
-msgstr ""
+msgstr "Черновик"
 
 msgctxt "view:account.invoice:"
 msgid "_Pay"
-msgstr ""
+msgstr "Оплата"
 
 msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
-msgstr ""
+msgid "_Post"
+msgstr "Отправить"
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
-msgstr ""
+msgstr "Сумма во второй валюте"
 
 msgctxt "view:account.move.line:"
 msgid "Credit"
-msgstr ""
+msgstr "Кредит"
 
 msgctxt "view:account.move.line:"
 msgid "Debit"
-msgstr ""
+msgstr "Дебет"
 
 msgctxt "view:account.move.line:"
 msgid "Lines to Pay"
-msgstr ""
+msgstr "Строки к оплате"
 
 msgctxt "view:account.move.line:"
 msgid "Payment Lines"
-msgstr ""
+msgstr "Строки оплаты"
 
 msgctxt "view:party.party:"
 msgid "Payment Terms"
-msgstr ""
+msgstr "Правила оплаты"
 
 msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
-msgstr ""
+msgstr "Кредит"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
 msgstr "Отменить"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr "Отменить"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
-msgstr "Да"
+msgstr "Ок"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
-msgstr "Да"
+msgstr "Ок"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
 msgstr "Отменить"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr "Отменить"
 
 msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
-msgstr ""
+msgstr "Печать"
diff --git a/party.xml b/party.xml
index b31c059..2ff440b 100644
--- a/party.xml
+++ b/party.xml
@@ -6,52 +6,18 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="address_view_tree">
             <field name="model">party.address</field>
             <field name="inherit" ref="party.address_view_tree"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/tree/field[@name="active"]" position="after">
-                        <field name="invoice"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
+            <field name="name">address_tree</field>
         </record>
         <record model="ir.ui.view" id="address_view_form">
             <field name="model">party.address</field>
             <field name="inherit" ref="party.address_view_form"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/form/group/field[@name="active"]"
-                        position="after">
-                        <label name="invoice"/>
-                        <field name="invoice" xexpand="0" width="25"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
+            <field name="name">address_form</field>
         </record>
 
         <record model="ir.ui.view" id="party_view_form">
             <field name="model">party.party</field>
             <field name="inherit" ref="party.party_view_form"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/form/notebook/page[@id="accounting"]/field[@name="vat_number"]"
-                        position="after">
-                        <separator string="Payment Terms" colspan="4" id="payment_terms"/>
-                        <label name="customer_payment_term"/>
-                        <field name="customer_payment_term"/>
-                        <label name="supplier_payment_term"/>
-                        <field name="supplier_payment_term"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
+            <field name="name">party_form</field>
         </record>
 
         <record model="ir.action.act_window" id="act_invoice_form2">
diff --git a/payment_term.py b/payment_term.py
index f92cb7a..9b16676 100644
--- a/payment_term.py
+++ b/payment_term.py
@@ -26,9 +26,11 @@ class PaymentTerm(ModelSQL, ModelView):
         super(PaymentTerm, cls).__setup__()
         cls._order.insert(0, ('name', 'ASC'))
         cls._error_messages.update({
-            'invalid_line': 'Invalid payment term line!',
-            'missing_remainder': 'Payment term missing a remainder line!',
-            })
+                'invalid_line': ('Invalid line "%(line)s" in payment term '
+                    '"%(term)s".'),
+                'missing_remainder': ('Missing remainder line in payment term '
+                    '"%s".'),
+                })
 
     @staticmethod
     def default_active():
@@ -56,7 +58,10 @@ class PaymentTerm(ModelSQL, ModelView):
             value_date = line.get_date(date)
             if not value or not value_date:
                 if (not remainder) and line.amount:
-                    self.raise_user_error('invalid_line')
+                    self.raise_user_error('invalid_line', {
+                            'line': line.rec_name,
+                            'term': self.rec_name,
+                            })
                 else:
                     continue
             if ((remainder - value) * sign) < Decimal('0.0'):
@@ -66,7 +71,7 @@ class PaymentTerm(ModelSQL, ModelView):
             remainder -= value
 
         if not currency.is_zero(remainder):
-            self.raise_user_error('missing_remainder')
+            self.raise_user_error('missing_remainder', (self.rec_name,))
         return res
 
 
@@ -146,12 +151,10 @@ class PaymentTermLine(ModelSQL, ModelView):
             ('day', 'CHECK(day BETWEEN 1 AND 31)',
                 'Day of month must be between 1 and 31.'),
             ]
-        cls._constraints += [
-            ('check_percentage_and_divisor', 'invalid_percentage_and_divisor'),
-            ]
         cls._error_messages.update({
-                'invalid_percentage_and_divisor': 'Percentage and '
-                        'Divisor values are not consistent.',
+                'invalid_percentage_and_divisor': ('Percentage and '
+                    'Divisor values are not consistent in line "%(line)s" '
+                    'of payment term "%(term)s".'),
                 })
 
     @classmethod
@@ -162,8 +165,8 @@ class PaymentTermLine(ModelSQL, ModelView):
 
         # Migration from 1.0 percent change into percentage
         if table.column_exist('percent'):
-            cursor.execute('UPDATE "' + cls._table + '" ' \
-                    'SET percentage = percent * 100')
+            cursor.execute('UPDATE "' + cls._table + '" '
+                'SET percentage = percent * 100')
             table.drop_column('percent', exception=True)
 
         # Migration from 2.2
@@ -266,6 +269,11 @@ class PaymentTermLine(ModelSQL, ModelView):
         return Decimal(number).quantize(quantize)
 
     @classmethod
+    def validate(cls, lines):
+        super(PaymentTermLine, cls).validate(lines)
+        cls.check_percentage_and_divisor(lines)
+
+    @classmethod
     def check_percentage_and_divisor(cls, lines):
         "Check consistency between percentage and divisor"
         percentage_digits = cls.percentage.digits[1]
@@ -274,7 +282,10 @@ class PaymentTermLine(ModelSQL, ModelView):
             if line.type not in ('percent', 'percent_on_total'):
                 continue
             if line.percentage is None or line.divisor is None:
-                return False
+                cls.raise_user_error('invalid_percentage_and_divisor', {
+                        'line': line.rec_name,
+                        'term': line.payment.rec_name,
+                        })
             if line.percentage == line.divisor == Decimal('0.0'):
                 continue
             percentage = line.percentage
@@ -286,5 +297,7 @@ class PaymentTermLine(ModelSQL, ModelView):
             if (percentage == Decimal('0.0') or divisor == Decimal('0.0')
                     or percentage != calc_percentage
                     and divisor != calc_divisor):
-                return False
-        return True
+                cls.raise_user_error('invalid_percentage_and_divisor', {
+                        'line': line.rec_name,
+                        'term': line.payment.rec_name,
+                        })
diff --git a/payment_term.xml b/payment_term.xml
index 5a6a24a..9d13d89 100644
--- a/payment_term.xml
+++ b/payment_term.xml
@@ -8,37 +8,12 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="payment_term_view_form">
             <field name="model">account.invoice.payment_term</field>
             <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Payment Term">
-                    <label name="name"/>
-                    <field name="name"/>
-                    <label name="active"/>
-                    <field name="active" xexpand="0" width="100"/>
-                    <notebook colspan="4">
-                        <page name="lines">
-                            <field name="lines" colspan="4"
-                                view_ids="account_invoice.payment_term_line_view_list_sequence"/>
-                        </page>
-                        <page name="description">
-                            <field name="description" colspan="4"/>
-                        </page>
-                    </notebook>
-                </form>
-                ]]>
-            </field>
+            <field name="name">payment_term_form</field>
         </record>
         <record model="ir.ui.view" id="payment_term_view_tree">
             <field name="model">account.invoice.payment_term</field>
             <field name="type">tree</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Payment Terms">
-                    <field name="name"/>
-                    <field name="active"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">payment_term_tree</field>
         </record>
         <record model="ir.action.act_window" id="act_payment_term_form">
             <field name="name">Payment Terms</field>
@@ -77,84 +52,20 @@ this repository contains the full copyright notices and license terms. -->
             <field name="model">account.invoice.payment_term.line</field>
             <field name="type">tree</field>
             <field name="priority" eval="10"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Payment Term Line">
-                    <field name="payment"/>
-                    <field name="type"/>
-                    <field name="percentage"/>
-                    <field name="amount"/>
-                    <field name="currency"/>
-                    <field name="months"/>
-                    <field name="month"/>
-                    <field name="weeks"/>
-                    <field name="weekday"/>
-                    <field name="days"/>
-                    <field name="day"/>
-                    <field name="sequence" tree_invisible="1"/>
-                    <field name="currency_digits" tree_invisible="1"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">payment_term_line_list</field>
         </record>
 
         <record model="ir.ui.view" id="payment_term_line_view_list_sequence">
             <field name="model">account.invoice.payment_term.line</field>
             <field name="type">tree</field>
             <field name="priority" eval="20"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Payment Term Line" sequence="sequence">
-                    <field name="type"/>
-                    <field name="percentage"/>
-                    <field name="amount"/>
-                    <field name="currency"/>
-                    <field name="months"/>
-                    <field name="month"/>
-                    <field name="weeks"/>
-                    <field name="weekday"/>
-                    <field name="days"/>
-                    <field name="day"/>
-                    <field name="sequence" tree_invisible="1"/>
-                    <field name="currency_digits" tree_invisible="1"/>
-                </tree>
-                ]]>
-            </field>
+            <field name="name">payment_term_line_list_sequence</field>
         </record>
 
         <record model="ir.ui.view" id="payment_term_line_view_form">
             <field name="model">account.invoice.payment_term.line</field>
             <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Payment Term Lines">
-                    <label name="type"/>
-                    <field name="type"/>
-                    <newline/>
-                    <label name="amount"/>
-                    <field name="amount"/>
-                    <label name="currency"/>
-                    <field name="currency"/>
-                    <newline/>
-                    <label name="percentage"/>
-                    <field name="percentage"/>
-                    <label name="divisor"/>
-                    <field name="divisor"/>
-                    <label name="months"/>
-                    <field name="months"/>
-                    <label name="month"/>
-                    <field name="month"/>
-                    <label name="weeks"/>
-                    <field name="weeks"/>
-                    <label name="weekday"/>
-                    <field name="weekday"/>
-                    <label name="days"/>
-                    <field name="days"/>
-                    <label name="day"/>
-                    <field name="day"/>
-                </form>
-                ]]>
-            </field>
+            <field name="name">payment_term_line_form</field>
         </record>
 
         <record model="ir.model.access" id="access_payment_term_line">
diff --git a/setup.py b/setup.py
index e512b68..95ef2dc 100644
--- a/setup.py
+++ b/setup.py
@@ -36,16 +36,16 @@ setup(name='trytond_account_invoice',
     long_description=open('README').read(),
     author='Tryton',
     url='http://www.tryton.org/',
-    download_url="http://downloads.tryton.org/" + \
-        info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
+    download_url=("http://downloads.tryton.org/" +
+        info.get('version', '0.0.1').rsplit('.', 1)[0] + '/'),
     package_dir={'trytond.modules.account_invoice': '.'},
     packages=[
         'trytond.modules.account_invoice',
         'trytond.modules.account_invoice.tests',
         ],
     package_data={
-        'trytond.modules.account_invoice': info.get('xml', []) \
-            + ['tryton.cfg', 'locale/*.po', 'invoice.odt'],
+        'trytond.modules.account_invoice': (info.get('xml', [])
+            + ['tryton.cfg', 'view/*.xml', 'locale/*.po', 'invoice.odt']),
         },
     classifiers=[
         'Development Status :: 5 - Production/Stable',
@@ -56,6 +56,7 @@ setup(name='trytond_account_invoice',
         'Intended Audience :: Legal Industry',
         'License :: OSI Approved :: GNU General Public License (GPL)',
         'Natural Language :: Bulgarian',
+        'Natural Language :: Catalan',
         'Natural Language :: Czech',
         'Natural Language :: Dutch',
         'Natural Language :: English',
diff --git a/tests/scenario_invoice.rst b/tests/scenario_invoice.rst
new file mode 100644
index 0000000..92a2261
--- /dev/null
+++ b/tests/scenario_invoice.rst
@@ -0,0 +1,268 @@
+================
+Invoice Scenario
+================
+
+Imports::
+    >>> import datetime
+    >>> from dateutil.relativedelta import relativedelta
+    >>> from decimal import Decimal
+    >>> from operator import attrgetter
+    >>> from proteus import config, Model, Wizard
+    >>> today = datetime.date.today()
+
+Create database::
+
+    >>> config = config.set_trytond()
+    >>> config.pool.test = True
+
+Install account_invoice::
+
+    >>> Module = Model.get('ir.module.module')
+    >>> account_invoice_module, = Module.find(
+    ...     [('name', '=', 'account_invoice')])
+    >>> Module.install([account_invoice_module.id], config.context)
+    >>> Wizard('ir.module.module.install_upgrade').execute('upgrade')
+
+Create company::
+
+    >>> Currency = Model.get('currency.currency')
+    >>> CurrencyRate = Model.get('currency.currency.rate')
+    >>> currencies = Currency.find([('code', '=', 'USD')])
+    >>> if not currencies:
+    ...     currency = Currency(name='US Dollar', symbol=u'$', code='USD',
+    ...         rounding=Decimal('0.01'), mon_grouping='[]',
+    ...         mon_decimal_point='.')
+    ...     currency.save()
+    ...     CurrencyRate(date=today + relativedelta(month=1, day=1),
+    ...         rate=Decimal('1.0'), currency=currency).save()
+    ... else:
+    ...     currency, = currencies
+    >>> Company = Model.get('company.company')
+    >>> Party = Model.get('party.party')
+    >>> company_config = Wizard('company.company.config')
+    >>> company_config.execute('company')
+    >>> company = company_config.form
+    >>> party = Party(name='Dunder Mifflin')
+    >>> party.save()
+    >>> company.party = party
+    >>> company.currency = currency
+    >>> company_config.execute('add')
+    >>> company, = Company.find([])
+
+Reload the context::
+
+    >>> User = Model.get('res.user')
+    >>> config._context = User.get_preferences(True, config.context)
+
+Create fiscal year::
+
+    >>> FiscalYear = Model.get('account.fiscalyear')
+    >>> Sequence = Model.get('ir.sequence')
+    >>> SequenceStrict = Model.get('ir.sequence.strict')
+    >>> fiscalyear = FiscalYear(name=str(today.year))
+    >>> fiscalyear.start_date = today + relativedelta(month=1, day=1)
+    >>> fiscalyear.end_date = today + relativedelta(month=12, day=31)
+    >>> fiscalyear.company = company
+    >>> post_move_seq = Sequence(name=str(today.year), code='account.move',
+    ...     company=company)
+    >>> post_move_seq.save()
+    >>> fiscalyear.post_move_sequence = post_move_seq
+    >>> invoice_seq = SequenceStrict(name=str(today.year),
+    ...     code='account.invoice', company=company)
+    >>> invoice_seq.save()
+    >>> fiscalyear.out_invoice_sequence = invoice_seq
+    >>> fiscalyear.in_invoice_sequence = invoice_seq
+    >>> fiscalyear.out_credit_note_sequence = invoice_seq
+    >>> fiscalyear.in_credit_note_sequence = invoice_seq
+    >>> fiscalyear.save()
+    >>> FiscalYear.create_period([fiscalyear.id], config.context)
+
+Create chart of accounts::
+
+    >>> AccountTemplate = Model.get('account.account.template')
+    >>> Account = Model.get('account.account')
+    >>> account_template, = AccountTemplate.find([('parent', '=', False)])
+    >>> create_chart = Wizard('account.create_chart')
+    >>> create_chart.execute('account')
+    >>> create_chart.form.account_template = account_template
+    >>> create_chart.form.company = company
+    >>> create_chart.execute('create_account')
+    >>> receivable, = Account.find([
+    ...         ('kind', '=', 'receivable'),
+    ...         ('company', '=', company.id),
+    ...         ])
+    >>> payable, = Account.find([
+    ...         ('kind', '=', 'payable'),
+    ...         ('company', '=', company.id),
+    ...         ])
+    >>> revenue, = Account.find([
+    ...         ('kind', '=', 'revenue'),
+    ...         ('company', '=', company.id),
+    ...         ])
+    >>> expense, = Account.find([
+    ...         ('kind', '=', 'expense'),
+    ...         ('company', '=', company.id),
+    ...         ])
+    >>> account_tax, = Account.find([
+    ...         ('kind', '=', 'other'),
+    ...         ('company', '=', company.id),
+    ...         ('name', '=', 'Main Tax'),
+    ...         ])
+    >>> create_chart.form.account_receivable = receivable
+    >>> create_chart.form.account_payable = payable
+    >>> create_chart.execute('create_properties')
+
+Create tax::
+
+    >>> TaxCode = Model.get('account.tax.code')
+    >>> Tax = Model.get('account.tax')
+    >>> tax = Tax()
+    >>> tax.name = 'Tax'
+    >>> tax.description = 'Tax'
+    >>> tax.type = 'percentage'
+    >>> tax.percentage = Decimal(10)
+    >>> tax.invoice_account = account_tax
+    >>> tax.credit_note_account = account_tax
+    >>> invoice_base_code = TaxCode(name='invoice base')
+    >>> invoice_base_code.save()
+    >>> tax.invoice_base_code = invoice_base_code
+    >>> invoice_tax_code = TaxCode(name='invoice tax')
+    >>> invoice_tax_code.save()
+    >>> tax.invoice_tax_code = invoice_tax_code
+    >>> credit_note_base_code = TaxCode(name='credit note base')
+    >>> credit_note_base_code.save()
+    >>> tax.credit_note_base_code = credit_note_base_code
+    >>> credit_note_tax_code = TaxCode(name='credit note tax')
+    >>> credit_note_tax_code.save()
+    >>> tax.credit_note_tax_code = credit_note_tax_code
+    >>> tax.save()
+
+Create party::
+
+    >>> Party = Model.get('party.party')
+    >>> party = Party(name='Party')
+    >>> party.save()
+
+Create product::
+
+    >>> ProductUom = Model.get('product.uom')
+    >>> unit, = ProductUom.find([('name', '=', 'Unit')])
+    >>> ProductTemplate = Model.get('product.template')
+    >>> Product = Model.get('product.product')
+    >>> product = Product()
+    >>> template = ProductTemplate()
+    >>> template.name = 'product'
+    >>> template.default_uom = unit
+    >>> template.type = 'service'
+    >>> template.list_price = Decimal('40')
+    >>> template.cost_price = Decimal('25')
+    >>> template.account_expense = expense
+    >>> template.account_revenue = revenue
+    >>> template.customer_taxes.append(tax)
+    >>> template.save()
+    >>> product.template = template
+    >>> product.save()
+
+Create payment term::
+
+    >>> PaymentTerm = Model.get('account.invoice.payment_term')
+    >>> PaymentTermLine = Model.get('account.invoice.payment_term.line')
+    >>> payment_term = PaymentTerm(name='Term')
+    >>> payment_term_line = PaymentTermLine(type='percent', days=20,
+    ...     percentage=Decimal(50))
+    >>> payment_term.lines.append(payment_term_line)
+    >>> payment_term_line = PaymentTermLine(type='remainder', days=40)
+    >>> payment_term.lines.append(payment_term_line)
+    >>> payment_term.save()
+
+Create invoice::
+
+    >>> Invoice = Model.get('account.invoice')
+    >>> InvoiceLine = Model.get('account.invoice.line')
+    >>> invoice = Invoice()
+    >>> invoice.party = party
+    >>> invoice.payment_term = payment_term
+    >>> line = InvoiceLine()
+    >>> invoice.lines.append(line)
+    >>> line.product = product
+    >>> line.quantity = 5
+    >>> line = InvoiceLine()
+    >>> invoice.lines.append(line)
+    >>> line.account = revenue
+    >>> line.description = 'Test'
+    >>> line.quantity = 1
+    >>> line.unit_price = Decimal(20)
+    >>> invoice.untaxed_amount == Decimal(220)
+    True
+    >>> invoice.tax_amount == Decimal(20)
+    True
+    >>> invoice.total_amount == Decimal(240)
+    True
+    >>> invoice.save()
+    >>> Invoice.post([invoice.id], config.context)
+    >>> invoice.reload()
+    >>> invoice.state
+    u'posted'
+    >>> invoice.untaxed_amount == Decimal(220)
+    True
+    >>> invoice.tax_amount == Decimal(20)
+    True
+    >>> invoice.total_amount == Decimal(240)
+    True
+    >>> receivable.reload()
+    >>> (receivable.debit, receivable.credit) == \
+    ... (Decimal(240), Decimal(0))
+    True
+    >>> revenue.reload()
+    >>> (revenue.debit, revenue.credit) == \
+    ... (Decimal(0), Decimal(220))
+    True
+    >>> account_tax.reload()
+    >>> (account_tax.debit, account_tax.credit) == \
+    ... (Decimal(0), Decimal(20))
+    True
+    >>> invoice_base_code.reload()
+    >>> invoice_base_code.sum == Decimal(200)
+    True
+    >>> invoice_tax_code.reload()
+    >>> invoice_tax_code.sum == Decimal(20)
+    True
+    >>> credit_note_base_code.reload()
+    >>> credit_note_base_code.sum == Decimal(0)
+    True
+    >>> credit_note_tax_code.reload()
+    >>> credit_note_tax_code.sum == Decimal(0)
+    True
+
+Credit invoice with refund::
+
+    >>> credit = Wizard('account.invoice.credit', [invoice])
+    >>> credit.form.with_refund = True
+    >>> credit.execute('credit')
+    >>> invoice.reload()
+    >>> invoice.state
+    u'paid'
+    >>> receivable.reload()
+    >>> (receivable.debit, receivable.credit) == \
+    ... (Decimal(240), Decimal(240))
+    True
+    >>> revenue.reload()
+    >>> (revenue.debit, revenue.credit) == \
+    ... (Decimal(220), Decimal(220))
+    True
+    >>> account_tax.reload()
+    >>> (account_tax.debit, account_tax.credit) == \
+    ... (Decimal(20), Decimal(20))
+    True
+    >>> invoice_base_code.reload()
+    >>> invoice_base_code.sum == Decimal(200)
+    True
+    >>> invoice_tax_code.reload()
+    >>> invoice_tax_code.sum == Decimal(20)
+    True
+    >>> credit_note_base_code.reload()
+    >>> credit_note_base_code.sum == Decimal(200)
+    True
+    >>> credit_note_tax_code.reload()
+    >>> credit_note_tax_code.sum == Decimal(20)
+    True
diff --git a/tests/scenario_invoice_supplier.rst b/tests/scenario_invoice_supplier.rst
new file mode 100644
index 0000000..5e08afe
--- /dev/null
+++ b/tests/scenario_invoice_supplier.rst
@@ -0,0 +1,249 @@
+=========================
+Invoice Supplier Scenario
+=========================
+
+Imports::
+    >>> import datetime
+    >>> from dateutil.relativedelta import relativedelta
+    >>> from decimal import Decimal
+    >>> from operator import attrgetter
+    >>> from proteus import config, Model, Wizard
+    >>> today = datetime.date.today()
+
+Create database::
+
+    >>> config = config.set_trytond()
+    >>> config.pool.test = True
+
+Install account_invoice::
+
+    >>> Module = Model.get('ir.module.module')
+    >>> account_invoice_module, = Module.find(
+    ...     [('name', '=', 'account_invoice')])
+    >>> Module.install([account_invoice_module.id], config.context)
+    >>> Wizard('ir.module.module.install_upgrade').execute('upgrade')
+
+Create company::
+
+    >>> Currency = Model.get('currency.currency')
+    >>> CurrencyRate = Model.get('currency.currency.rate')
+    >>> currencies = Currency.find([('code', '=', 'USD')])
+    >>> if not currencies:
+    ...     currency = Currency(name='US Dollar', symbol=u'$', code='USD',
+    ...         rounding=Decimal('0.01'), mon_grouping='[]',
+    ...         mon_decimal_point='.')
+    ...     currency.save()
+    ...     CurrencyRate(date=today + relativedelta(month=1, day=1),
+    ...         rate=Decimal('1.0'), currency=currency).save()
+    ... else:
+    ...     currency, = currencies
+    >>> Company = Model.get('company.company')
+    >>> Party = Model.get('party.party')
+    >>> company_config = Wizard('company.company.config')
+    >>> company_config.execute('company')
+    >>> company = company_config.form
+    >>> party = Party(name='Dunder Mifflin')
+    >>> party.save()
+    >>> company.party = party
+    >>> company.currency = currency
+    >>> company_config.execute('add')
+    >>> company, = Company.find([])
+
+Reload the context::
+
+    >>> User = Model.get('res.user')
+    >>> config._context = User.get_preferences(True, config.context)
+
+Create fiscal year::
+
+    >>> FiscalYear = Model.get('account.fiscalyear')
+    >>> Sequence = Model.get('ir.sequence')
+    >>> SequenceStrict = Model.get('ir.sequence.strict')
+    >>> fiscalyear = FiscalYear(name=str(today.year))
+    >>> fiscalyear.start_date = today + relativedelta(month=1, day=1)
+    >>> fiscalyear.end_date = today + relativedelta(month=12, day=31)
+    >>> fiscalyear.company = company
+    >>> post_move_seq = Sequence(name=str(today.year), code='account.move',
+    ...     company=company)
+    >>> post_move_seq.save()
+    >>> fiscalyear.post_move_sequence = post_move_seq
+    >>> invoice_seq = SequenceStrict(name=str(today.year),
+    ...     code='account.invoice', company=company)
+    >>> invoice_seq.save()
+    >>> fiscalyear.out_invoice_sequence = invoice_seq
+    >>> fiscalyear.in_invoice_sequence = invoice_seq
+    >>> fiscalyear.out_credit_note_sequence = invoice_seq
+    >>> fiscalyear.in_credit_note_sequence = invoice_seq
+    >>> fiscalyear.save()
+    >>> FiscalYear.create_period([fiscalyear.id], config.context)
+
+Create chart of accounts::
+
+    >>> AccountTemplate = Model.get('account.account.template')
+    >>> Account = Model.get('account.account')
+    >>> account_template, = AccountTemplate.find([('parent', '=', False)])
+    >>> create_chart = Wizard('account.create_chart')
+    >>> create_chart.execute('account')
+    >>> create_chart.form.account_template = account_template
+    >>> create_chart.form.company = company
+    >>> create_chart.execute('create_account')
+    >>> receivable, = Account.find([
+    ...         ('kind', '=', 'receivable'),
+    ...         ('company', '=', company.id),
+    ...         ])
+    >>> payable, = Account.find([
+    ...         ('kind', '=', 'payable'),
+    ...         ('company', '=', company.id),
+    ...         ])
+    >>> revenue, = Account.find([
+    ...         ('kind', '=', 'revenue'),
+    ...         ('company', '=', company.id),
+    ...         ])
+    >>> expense, = Account.find([
+    ...         ('kind', '=', 'expense'),
+    ...         ('company', '=', company.id),
+    ...         ])
+    >>> account_tax, = Account.find([
+    ...         ('kind', '=', 'other'),
+    ...         ('company', '=', company.id),
+    ...         ('name', '=', 'Main Tax'),
+    ...         ])
+    >>> create_chart.form.account_receivable = receivable
+    >>> create_chart.form.account_payable = payable
+    >>> create_chart.execute('create_properties')
+
+Create tax::
+
+    >>> TaxCode = Model.get('account.tax.code')
+    >>> Tax = Model.get('account.tax')
+    >>> tax = Tax()
+    >>> tax.name = 'Tax'
+    >>> tax.description = 'Tax'
+    >>> tax.type = 'percentage'
+    >>> tax.percentage = Decimal(10)
+    >>> tax.invoice_account = account_tax
+    >>> tax.credit_note_account = account_tax
+    >>> invoice_base_code = TaxCode(name='invoice base')
+    >>> invoice_base_code.save()
+    >>> tax.invoice_base_code = invoice_base_code
+    >>> invoice_tax_code = TaxCode(name='invoice tax')
+    >>> invoice_tax_code.save()
+    >>> tax.invoice_tax_code = invoice_tax_code
+    >>> credit_note_base_code = TaxCode(name='credit note base')
+    >>> credit_note_base_code.save()
+    >>> tax.credit_note_base_code = credit_note_base_code
+    >>> credit_note_tax_code = TaxCode(name='credit note tax')
+    >>> credit_note_tax_code.save()
+    >>> tax.credit_note_tax_code = credit_note_tax_code
+    >>> tax.save()
+
+Create party::
+
+    >>> Party = Model.get('party.party')
+    >>> party = Party(name='Party')
+    >>> party.save()
+
+Create product::
+
+    >>> ProductUom = Model.get('product.uom')
+    >>> unit, = ProductUom.find([('name', '=', 'Unit')])
+    >>> ProductTemplate = Model.get('product.template')
+    >>> Product = Model.get('product.product')
+    >>> product = Product()
+    >>> template = ProductTemplate()
+    >>> template.name = 'product'
+    >>> template.default_uom = unit
+    >>> template.type = 'service'
+    >>> template.list_price = Decimal('40')
+    >>> template.cost_price = Decimal('20')
+    >>> template.account_expense = expense
+    >>> template.account_revenue = revenue
+    >>> template.supplier_taxes.append(tax)
+    >>> template.save()
+    >>> product.template = template
+    >>> product.save()
+
+Create payment term::
+
+    >>> PaymentTerm = Model.get('account.invoice.payment_term')
+    >>> PaymentTermLine = Model.get('account.invoice.payment_term.line')
+    >>> payment_term = PaymentTerm(name='Term')
+    >>> payment_term_line = PaymentTermLine(type='remainder')
+    >>> payment_term.lines.append(payment_term_line)
+    >>> payment_term.save()
+
+Create invoice::
+
+    >>> Invoice = Model.get('account.invoice')
+    >>> InvoiceLine = Model.get('account.invoice.line')
+    >>> invoice = Invoice()
+    >>> invoice.type = 'in_invoice'
+    >>> invoice.party = party
+    >>> invoice.payment_term = payment_term
+    >>> invoice.invoice_date = today
+    >>> line = InvoiceLine()
+    >>> invoice.lines.append(line)
+    >>> line.product = product
+    >>> line.quantity = 5
+    >>> line = InvoiceLine()
+    >>> invoice.lines.append(line)
+    >>> line.account = expense
+    >>> line.description = 'Test'
+    >>> line.quantity = 1
+    >>> line.unit_price = Decimal(10)
+    >>> invoice.untaxed_amount == Decimal(110)
+    True
+    >>> invoice.tax_amount == Decimal(10)
+    True
+    >>> invoice.total_amount == Decimal(120)
+    True
+    >>> invoice.save()
+    >>> Invoice.post([invoice.id], config.context)
+    >>> invoice.reload()
+    >>> invoice.state
+    u'posted'
+    >>> invoice.untaxed_amount == Decimal(110)
+    True
+    >>> invoice.tax_amount == Decimal(10)
+    True
+    >>> invoice.total_amount == Decimal(120)
+    True
+    >>> payable.reload()
+    >>> (payable.debit, payable.credit) == \
+    ... (Decimal(0), Decimal(120))
+    True
+    >>> expense.reload()
+    >>> (expense.debit, expense.credit) == \
+    ... (Decimal(110), Decimal(0))
+    True
+    >>> account_tax.reload()
+    >>> (account_tax.debit, account_tax.credit) == \
+    ... (Decimal(10), Decimal(0))
+    True
+    >>> invoice_base_code.reload()
+    >>> invoice_base_code.sum == Decimal(100)
+    True
+    >>> invoice_tax_code.reload()
+    >>> invoice_tax_code.sum == Decimal(10)
+    True
+    >>> credit_note_base_code.reload()
+    >>> credit_note_base_code.sum == Decimal(0)
+    True
+    >>> credit_note_tax_code.reload()
+    >>> credit_note_tax_code.sum == Decimal(0)
+    True
+
+Credit invoice::
+
+    >>> credit = Wizard('account.invoice.credit', [invoice])
+    >>> credit.form.with_refund = False
+    >>> credit.execute('credit')
+    >>> credit_note, = Invoice.find([('type', '=', 'in_credit_note')])
+    >>> credit_note.state
+    u'draft'
+    >>> credit_note.untaxed_amount == invoice.untaxed_amount
+    True
+    >>> credit_note.tax_amount == invoice.tax_amount
+    True
+    >>> credit_note.total_amount == invoice.total_amount
+    True
diff --git a/tests/test_account_invoice.py b/tests/test_account_invoice.py
index f88a7c7..6fdfcbd 100644
--- a/tests/test_account_invoice.py
+++ b/tests/test_account_invoice.py
@@ -10,12 +10,14 @@ if os.path.isdir(DIR):
     sys.path.insert(0, os.path.dirname(DIR))
 
 import unittest
+import doctest
 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
 from trytond.transaction import Transaction
+from trytond.backend.sqlite.database import Database as SQLiteDatabase
 
 
 class AccountInvoiceTestCase(unittest.TestCase):
@@ -45,45 +47,42 @@ class AccountInvoiceTestCase(unittest.TestCase):
         Test payment_term.
         '''
         with Transaction().start(DB_NAME, USER, context=CONTEXT):
-            cu1 = self.currency.create({
-                    'name': 'cu1',
-                    'symbol': 'cu1',
-                    'code': 'cu1'
-                    })
+            cu1, = self.currency.create([{
+                        'name': 'cu1',
+                        'symbol': 'cu1',
+                        'code': 'cu1'
+                        }])
 
-            term = self.payment_term.create({
-                    'name': '30 days, 1 month, 1 month + 15 days',
-                    'lines': [
-                        ('create', {
-                                'sequence': 0,
-                                'type': 'percent',
-                                'divisor': 4,
-                                'percentage': 25,
-                                'days': 30,
-                                }),
-                        ('create', {
-                                'sequence': 1,
-                                'type': 'percent_on_total',
-                                'divisor': 4,
-                                'percentage': 25,
-                                'months': 1,
-                                }),
-                        ('create', {
-                                'sequence': 2,
-                                'type': 'fixed',
-                                'months': 1,
-                                'days': 30,
-                                'amount': Decimal('396.84'),
-                                'currency': cu1.id,
-                                }),
-                        ('create', {
-                                'sequence': 3,
-                                'type': 'remainder',
-                                'months': 2,
-                                'days': 30,
-                                'day': 15,
-                                })]
-                    })
+            term, = self.payment_term.create([{
+                        'name': '30 days, 1 month, 1 month + 15 days',
+                        'lines': [
+                            ('create', [{
+                                        'sequence': 0,
+                                        'type': 'percent',
+                                        'divisor': 4,
+                                        'percentage': 25,
+                                        'days': 30,
+                                        }, {
+                                        'sequence': 1,
+                                        'type': 'percent_on_total',
+                                        'divisor': 4,
+                                        'percentage': 25,
+                                        'months': 1,
+                                        }, {
+                                        'sequence': 2,
+                                        'type': 'fixed',
+                                        'months': 1,
+                                        'days': 30,
+                                        'amount': Decimal('396.84'),
+                                        'currency': cu1.id,
+                                        }, {
+                                        'sequence': 3,
+                                        'type': 'remainder',
+                                        'months': 2,
+                                        'days': 30,
+                                        'day': 15,
+                                        }])]
+                        }])
             terms = term.compute(Decimal('1587.35'), cu1,
                 date=datetime.date(2011, 10, 1))
             self.assertEqual(terms, [
@@ -94,10 +93,26 @@ class AccountInvoiceTestCase(unittest.TestCase):
                     ])
 
 
+def doctest_dropdb(test):
+    database = SQLiteDatabase().connect()
+    cursor = database.cursor(autocommit=True)
+    try:
+        database.drop(cursor, ':memory:')
+        cursor.commit()
+    finally:
+        cursor.close()
+
+
 def suite():
     suite = trytond.tests.test_tryton.suite()
     suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
         AccountInvoiceTestCase))
+    suite.addTests(doctest.DocFileSuite('scenario_invoice.rst',
+            setUp=doctest_dropdb, tearDown=doctest_dropdb, 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',
+            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
     return suite
 
 if __name__ == '__main__':
diff --git a/tryton.cfg b/tryton.cfg
index 5e36081..3286a9d 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=2.6.3
+version=2.8.0
 depends:
     account
     account_product
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 5cff6fe..1f37b87 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: 2.6.3
+Version: 2.8.0
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: UNKNOWN
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.6/
+Download-URL: http://downloads.tryton.org/2.8/
 Description: trytond_account_invoice
         =======================
         
@@ -52,6 +52,7 @@ Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
 Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Catalan
 Classifier: Natural Language :: Czech
 Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index 2f90b64..6fb34d6 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -29,10 +29,36 @@ locale/es_ES.po
 locale/fr_FR.po
 locale/nl_NL.po
 locale/ru_RU.po
+tests/scenario_invoice.rst
+tests/scenario_invoice_supplier.rst
 trytond_account_invoice.egg-info/PKG-INFO
 trytond_account_invoice.egg-info/SOURCES.txt
 trytond_account_invoice.egg-info/dependency_links.txt
 trytond_account_invoice.egg-info/entry_points.txt
 trytond_account_invoice.egg-info/not-zip-safe
 trytond_account_invoice.egg-info/requires.txt
-trytond_account_invoice.egg-info/top_level.txt
\ No newline at end of file
+trytond_account_invoice.egg-info/top_level.txt
+view/address_form.xml
+view/address_tree.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
\ No newline at end of file
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index eb620a7..3f1890c 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -1,8 +1,8 @@
 python-dateutil
-trytond_account >= 2.6, < 2.7
-trytond_account_product >= 2.6, < 2.7
-trytond_company >= 2.6, < 2.7
-trytond_currency >= 2.6, < 2.7
-trytond_party >= 2.6, < 2.7
-trytond_product >= 2.6, < 2.7
-trytond >= 2.6, < 2.7
\ No newline at end of file
+trytond_account >= 2.8, < 2.9
+trytond_account_product >= 2.8, < 2.9
+trytond_company >= 2.8, < 2.9
+trytond_currency >= 2.8, < 2.9
+trytond_party >= 2.8, < 2.9
+trytond_product >= 2.8, < 2.9
+trytond >= 2.8, < 2.9
\ No newline at end of file
diff --git a/view/address_form.xml b/view/address_form.xml
new file mode 100644
index 0000000..be0b841
--- /dev/null
+++ b/view/address_form.xml
@@ -0,0 +1,11 @@
+<?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/group/field[@name='active']"
+        position="after">
+        <label name="invoice"/>
+        <field name="invoice" xexpand="0" width="25"/>
+    </xpath>
+</data>
diff --git a/view/address_tree.xml b/view/address_tree.xml
new file mode 100644
index 0000000..d273581
--- /dev/null
+++ b/view/address_tree.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+    <xpath
+        expr="/tree/field[@name='active']" position="after">
+        <field name="invoice"/>
+    </xpath>
+</data>
diff --git a/view/credit_start_form.xml b/view/credit_start_form.xml
new file mode 100644
index 0000000..3c78c57
--- /dev/null
+++ b/view/credit_start_form.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form string="Credit Invoice" col="2">
+    <image name="tryton-dialog-information" xexpand="0"
+        xfill="0"/>
+    <group col="2" id="credit_refund">
+        <label string="Are you sure to credit those/this invoice(s)?"
+            id="credit" colspan="2"
+            yalign="0.0" xalign="0.0" xexpand="1"/>
+        <label name="with_refund"/>
+        <field name="with_refund"/>
+    </group>
+</form>
diff --git a/view/fiscalyear_form.xml b/view/fiscalyear_form.xml
new file mode 100644
index 0000000..edb7e7f
--- /dev/null
+++ b/view/fiscalyear_form.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+    <xpath
+        expr="/form/notebook/page[@id='sequences']/field[@name='post_move_sequence']"
+        position="after">
+        <newline/>
+        <label name="out_invoice_sequence"/>
+        <field name="out_invoice_sequence"/>
+        <label name="in_invoice_sequence"/>
+        <field name="in_invoice_sequence"/>
+        <label name="out_credit_note_sequence"/>
+        <field name="out_credit_note_sequence"/>
+        <label name="in_credit_note_sequence"/>
+        <field name="in_credit_note_sequence"/>
+    </xpath>
+</data>
diff --git a/view/invoice_form.xml b/view/invoice_form.xml
new file mode 100644
index 0000000..6d9f1ee
--- /dev/null
+++ b/view/invoice_form.xml
@@ -0,0 +1,94 @@
+<?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="Invoice" col="6" cursor="party">
+    <label name="type"/>
+    <field name="type"/>
+    <label name="journal"/>
+    <field name="journal"/>
+    <label name="number"/>
+    <field name="number"/>
+    <label name="party"/>
+    <field name="party"/>
+    <label name="invoice_address"/>
+    <field name="invoice_address"/>
+    <newline/>
+    <label name="description"/>
+    <field name="description" colspan="3"/>
+    <label name="reference"/>
+    <field name="reference"/>
+    <notebook colspan="6">
+        <page string="Invoice" id="invoice" col="6">
+            <label name="invoice_date"/>
+            <field name="invoice_date"/>
+            <label name="payment_term"/>
+            <field name="payment_term"/>
+            <label name="currency"/>
+            <field name="currency"/>
+            <field name="lines" colspan="6"
+                view_ids="account_invoice.invoice_line_view_tree_sequence"/>
+            <group col="2" colspan="6" id="taxes_amount_state_buttons">
+                <group col="1" colspan="1" id="taxes">
+                    <field name="taxes"
+                        view_ids="account_invoice.invoice_tax_view_tree_sequence"/>
+                </group>
+                <group col="4" colspan="1" id="amount_state_buttons">
+                    <group col="2" colspan="2" id="reconciled_state">
+                        <label name="reconciled"/>
+                        <field name="reconciled" xexpand="0"/>
+                        <label name="state"/>
+                        <field name="state"/>
+                    </group>
+                    <group col="2" colspan="2" id="amount">
+                        <label name="untaxed_amount" xalign="1.0" xexpand="1"/>
+                        <field name="untaxed_amount" xalign="1.0" xexpand="0"/>
+                        <label name="tax_amount" xalign="1.0" xexpand="1"/>
+                        <field name="tax_amount" xalign="1.0" xexpand="0"/>
+                        <label name="total_amount" xalign="1.0" xexpand="1"/>
+                        <field name="total_amount" xalign="1.0" xexpand="0"/>
+                    </group>
+                    <group col="5" colspan="4" id="buttons">
+                        <button name="cancel" string="_Cancel"
+                            icon="tryton-cancel"
+                            confirm="Are you sure to cancel the invoice?"/>
+                        <button name="draft" string="_Draft"
+                            icon="tryton-go-previous"/>
+                        <button name="validate_invoice"
+                            string="Validate"
+                            help="Also known as Pro Forma"
+                            icon="tryton-go-next"/>
+                        <button name="post" string="_Post"
+                            icon="tryton-ok"/>
+                        <button name="pay" string="_Pay"
+                            icon="tryton-go-next"/>
+                    </group>
+                </group>
+            </group>
+        </page>
+        <page string="Other Info" id="info">
+            <label name="company"/>
+            <field name="company"/>
+            <newline/>
+            <label name="account"/>
+            <field name="account"/>
+            <label name="accounting_date"/>
+            <field name="accounting_date"/>
+            <label name="move"/>
+            <field name="move"/>
+            <label name="cancel_move"/>
+            <field name="cancel_move"/>
+            <separator name="comment" colspan="4"/>
+            <field name="comment" colspan="4"
+                spell="Eval('party_lang')"/>
+        </page>
+        <page string="Payment" id="payment">
+            <label name="amount_to_pay_today"/>
+            <field name="amount_to_pay_today"/>
+            <label name="amount_to_pay"/>
+            <field name="amount_to_pay"/>
+            <field name="payment_lines" colspan="4"
+                view_ids="account_invoice.move_line_view_list_payment"/>
+        </page>
+    </notebook>
+    <field name="party_lang" invisible="1" colspan="6"/>
+</form>
diff --git a/view/invoice_line_form.xml b/view/invoice_line_form.xml
new file mode 100644
index 0000000..85fcb78
--- /dev/null
+++ b/view/invoice_line_form.xml
@@ -0,0 +1,38 @@
+<?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="Invoice Line" cursor="product">
+    <label name="invoice"/>
+    <field name="invoice" colspan="3"/>
+    <notebook colspan="4">
+        <page string="General" id="general">
+            <label name="type"/>
+            <field name="type"/>
+            <label name="sequence"/>
+            <field name="sequence"/>
+            <label name="product"/>
+            <field name="product"/>
+            <label name="account"/>
+            <field name="account"/>
+            <newline/>
+            <label name="description"/>
+            <field name="description" colspan="3"
+                spell="If(Bool(Eval('_parent_invoice')), Get(Eval('_parent_invoice', {}), 'party_lang'), Eval('party_lang'))"/>
+            <label name="quantity"/>
+            <field name="quantity"/>
+            <label name="unit"/>
+            <field name="unit"/>
+            <label name="unit_price"/>
+            <field name="unit_price"/>
+            <label name="amount"/>
+            <field name="amount"/>
+            <field name="taxes" colspan="4"/>
+        </page>
+        <page string="Notes" id="notes">
+            <separator name="note" colspan="4"/>
+            <field name="note" colspan="4"
+                spell="If(Bool(Eval('_parent_invoice')), Get(Eval('_parent_invoice', {}), 'party_lang'), Eval('party_lang'))"/>
+        </page>
+    </notebook>
+    <field name="party_lang" invisible="1" colspan="4"/>
+</form>
diff --git a/view/invoice_line_tree.xml b/view/invoice_line_tree.xml
new file mode 100644
index 0000000..b2dec0f
--- /dev/null
+++ b/view/invoice_line_tree.xml
@@ -0,0 +1,15 @@
+<?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="Invoice Lines">
+    <field name="invoice"/>
+    <field name="type"/>
+    <field name="product"/>
+    <field name="account"/>
+    <field name="description"/>
+    <field name="quantity"/>
+    <field name="unit"/>
+    <field name="unit_price"/>
+    <field name="taxes"/>
+    <field name="amount"/>
+</tree>
diff --git a/view/invoice_line_tree_sequence.xml b/view/invoice_line_tree_sequence.xml
new file mode 100644
index 0000000..266e6c9
--- /dev/null
+++ b/view/invoice_line_tree_sequence.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tree string="Invoice Lines" sequence="sequence">
+    <field name="type"/>
+    <field name="product"/>
+    <field name="account" tree_invisible="1"/>
+    <field name="description"/>
+    <field name="quantity"/>
+    <field name="unit"/>
+    <field name="unit_price"/>
+    <field name="taxes"/>
+    <field name="amount" expand="1"/>
+</tree>
diff --git a/view/invoice_tax_form.xml b/view/invoice_tax_form.xml
new file mode 100644
index 0000000..90125d7
--- /dev/null
+++ b/view/invoice_tax_form.xml
@@ -0,0 +1,31 @@
+<?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="Invoice Tax">
+    <label name="invoice"/>
+    <field name="invoice" colspan="3"/>
+    <label name="tax"/>
+    <field name="tax" colspan="3"/>
+    <label name="description"/>
+    <field name="description"/>
+    <label name="sequence"/>
+    <field name="sequence"/>
+    <label name="account"/>
+    <field name="account"/>
+    <label name="manual"/>
+    <field name="manual"/>
+    <group col="6" colspan="4" string="Tax Code" id="tax_code">
+        <label name="amount"/>
+        <field name="amount"/>
+        <label name="tax_code"/>
+        <field name="tax_code"/>
+        <label name="tax_sign"/>
+        <field name="tax_sign"/>
+        <label name="base"/>
+        <field name="base"/>
+        <label name="base_code"/>
+        <field name="base_code"/>
+        <label name="base_sign"/>
+        <field name="base_sign"/>
+    </group>
+</form>
diff --git a/view/invoice_tax_tree.xml b/view/invoice_tax_tree.xml
new file mode 100644
index 0000000..dba23ed
--- /dev/null
+++ b/view/invoice_tax_tree.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. -->
+<tree string="Invoice Taxes">
+    <field name="invoice"/>
+    <field name="tax"/>
+    <field name="description"/>
+    <field name="account"/>
+    <field name="manual"/>
+    <field name="base"/>
+    <field name="amount"/>
+</tree>
diff --git a/view/invoice_tax_tree_sequence.xml b/view/invoice_tax_tree_sequence.xml
new file mode 100644
index 0000000..4874eb2
--- /dev/null
+++ b/view/invoice_tax_tree_sequence.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tree string="Taxes" sequence="sequence">
+    <field name="description"/>
+    <field name="base"/>
+    <field name="amount" expand="1"/>
+    <field name="sequence" tree_invisible="1"/>
+    <field name="manual" tree_invisible="1"/>
+    <field name="base_code" tree_invisible="1"/>
+    <field name="base_sign" tree_invisible="1"/>
+    <field name="tax_code" tree_invisible="1"/>
+    <field name="tax_sign" tree_invisible="1"/>
+    <field name="account" tree_invisible="1"/>
+    <field name="tax" tree_invisible="1"/>
+</tree>
diff --git a/view/invoice_tree.xml b/view/invoice_tree.xml
new file mode 100644
index 0000000..61f8c83
--- /dev/null
+++ b/view/invoice_tree.xml
@@ -0,0 +1,17 @@
+<?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="Invoices">
+    <field name="type"/>
+    <field name="number"/>
+    <field name="reference"/>
+    <field name="invoice_date"/>
+    <field name="party"/>
+    <field name="currency"/>
+    <field name="untaxed_amount"/>
+    <field name="tax_amount"/>
+    <field name="total_amount"/>
+    <field name="state"/>
+    <field name="amount_to_pay_today"/>
+    <field name="description"/>
+</tree>
diff --git a/view/move_line_list_payment.xml b/view/move_line_list_payment.xml
new file mode 100644
index 0000000..dcd1a2f
--- /dev/null
+++ b/view/move_line_list_payment.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. -->
+<tree string="Payment Lines">
+    <field name="date"/>
+    <field name="debit" sum="Debit"/>
+    <field name="credit" sum="Credit"/>
+    <field name="amount_second_currency"
+        sum="Amount Second Currency"/>
+    <field name="second_currency"/>
+    <field name="currency_digits" tree_invisible="1"/>
+    <field name="second_currency_digits" tree_invisible="1"/>
+</tree>
diff --git a/view/move_line_list_to_pay.xml b/view/move_line_list_to_pay.xml
new file mode 100644
index 0000000..5121f6b
--- /dev/null
+++ b/view/move_line_list_to_pay.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. -->
+<tree string="Lines to Pay">
+    <field name="maturity_date"/>
+    <field name="debit" sum="Debit"/>
+    <field name="credit" sum="Credit"/>
+    <field name="amount_second_currency" sum="Amount Second Currency"/>
+    <field name="second_currency" expand="1"/>
+    <field name="currency_digits" tree_invisible="1"/>
+    <field name="second_currency_digits" tree_invisible="1"/>
+</tree>
diff --git a/view/party_form.xml b/view/party_form.xml
new file mode 100644
index 0000000..f258384
--- /dev/null
+++ b/view/party_form.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+    <xpath
+        expr="/form/notebook/page[@id='accounting']/field[@name='vat_number']"
+        position="after">
+        <separator string="Payment Terms" colspan="4" id="payment_terms"/>
+        <label name="customer_payment_term"/>
+        <field name="customer_payment_term"/>
+        <label name="supplier_payment_term"/>
+        <field name="supplier_payment_term"/>
+    </xpath>
+</data>
diff --git a/view/pay_ask_form.xml b/view/pay_ask_form.xml
new file mode 100644
index 0000000..9fb3b31
--- /dev/null
+++ b/view/pay_ask_form.xml
@@ -0,0 +1,25 @@
+<?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="Pay Invoice">
+    <label name="type"/>
+    <field name="type" colspan="3"/>
+    <label name="amount"/>
+    <field name="amount"/>
+    <label name="currency"/>
+    <field name="currency"/>
+    <label name="amount_writeoff"/>
+    <field name="amount_writeoff"/>
+    <label name="currency_writeoff"/>
+    <field name="currency_writeoff"/>
+    <label name="account_writeoff"/>
+    <field name="account_writeoff"/>
+    <label name="journal_writeoff"/>
+    <field name="journal_writeoff"/>
+    <field name="lines" colspan="4"
+        view_ids="account_invoice.move_line_view_list_to_pay"/>
+    <field name="payment_lines" colspan="4"
+        view_ids="account_invoice.move_line_view_list_payment"/>
+    <field name="company" colspan="4" invisible="1"/>
+    <field name="invoice" colspan="4" invisible="1"/>
+</form>
diff --git a/view/pay_start_form.xml b/view/pay_start_form.xml
new file mode 100644
index 0000000..8c76d51
--- /dev/null
+++ b/view/pay_start_form.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form string="Pay Invoice">
+    <label name="amount"/>
+    <field name="amount"/>
+    <label name="currency"/>
+    <field name="currency"/>
+    <label name="description"/>
+    <field name="description" colspan="3"/>
+    <label name="journal"/>
+    <field name="journal"/>
+    <label name="date"/>
+    <field name="date"/>
+    <field name="currency_digits" colspan="4" invisible="1"/>
+</form>
diff --git a/view/payment_term_form.xml b/view/payment_term_form.xml
new file mode 100644
index 0000000..298a525
--- /dev/null
+++ b/view/payment_term_form.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form string="Payment Term">
+    <label name="name"/>
+    <field name="name"/>
+    <label name="active"/>
+    <field name="active" xexpand="0" width="100"/>
+    <notebook colspan="4">
+        <page name="lines">
+            <field name="lines" colspan="4"
+                view_ids="account_invoice.payment_term_line_view_list_sequence"/>
+        </page>
+        <page name="description">
+            <field name="description" colspan="4"/>
+        </page>
+    </notebook>
+</form>
diff --git a/view/payment_term_line_form.xml b/view/payment_term_line_form.xml
new file mode 100644
index 0000000..232d579
--- /dev/null
+++ b/view/payment_term_line_form.xml
@@ -0,0 +1,29 @@
+<?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="Payment Term Lines">
+    <label name="type"/>
+    <field name="type"/>
+    <newline/>
+    <label name="amount"/>
+    <field name="amount"/>
+    <label name="currency"/>
+    <field name="currency"/>
+    <newline/>
+    <label name="percentage"/>
+    <field name="percentage"/>
+    <label name="divisor"/>
+    <field name="divisor"/>
+    <label name="months"/>
+    <field name="months"/>
+    <label name="month"/>
+    <field name="month"/>
+    <label name="weeks"/>
+    <field name="weeks"/>
+    <label name="weekday"/>
+    <field name="weekday"/>
+    <label name="days"/>
+    <field name="days"/>
+    <label name="day"/>
+    <field name="day"/>
+</form>
diff --git a/view/payment_term_line_list.xml b/view/payment_term_line_list.xml
new file mode 100644
index 0000000..04e09b6
--- /dev/null
+++ b/view/payment_term_line_list.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tree string="Payment Term Line">
+    <field name="payment"/>
+    <field name="type"/>
+    <field name="percentage"/>
+    <field name="amount"/>
+    <field name="currency"/>
+    <field name="months"/>
+    <field name="month"/>
+    <field name="weeks"/>
+    <field name="weekday"/>
+    <field name="days"/>
+    <field name="day"/>
+    <field name="sequence" tree_invisible="1"/>
+    <field name="currency_digits" tree_invisible="1"/>
+</tree>
diff --git a/view/payment_term_line_list_sequence.xml b/view/payment_term_line_list_sequence.xml
new file mode 100644
index 0000000..8f2b00f
--- /dev/null
+++ b/view/payment_term_line_list_sequence.xml
@@ -0,0 +1,17 @@
+<?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="Payment Term Line" sequence="sequence">
+    <field name="type"/>
+    <field name="percentage"/>
+    <field name="amount"/>
+    <field name="currency"/>
+    <field name="months"/>
+    <field name="month"/>
+    <field name="weeks"/>
+    <field name="weekday"/>
+    <field name="days"/>
+    <field name="day"/>
+    <field name="sequence" tree_invisible="1"/>
+    <field name="currency_digits" tree_invisible="1"/>
+</tree>
diff --git a/view/payment_term_tree.xml b/view/payment_term_tree.xml
new file mode 100644
index 0000000..2a24ea0
--- /dev/null
+++ b/view/payment_term_tree.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tree string="Payment Terms">
+    <field name="name"/>
+    <field name="active"/>
+</tree>
diff --git a/view/period_form.xml b/view/period_form.xml
new file mode 100644
index 0000000..670c855
--- /dev/null
+++ b/view/period_form.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+    <xpath
+        expr="/form/field[@name='post_move_sequence']"
+        position="after">
+        <newline/>
+        <label name="out_invoice_sequence"/>
+        <field name="out_invoice_sequence"/>
+        <label name="in_invoice_sequence"/>
+        <field name="in_invoice_sequence"/>
+        <label name="out_credit_note_sequence"/>
+        <field name="out_credit_note_sequence"/>
+        <label name="in_credit_note_sequence"/>
+        <field name="in_credit_note_sequence"/>
+    </xpath>
+</data>
diff --git a/view/print_warning_form.xml b/view/print_warning_form.xml
new file mode 100644
index 0000000..25e08bf
--- /dev/null
+++ b/view/print_warning_form.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form string="Print Invoice" col="2">
+    <image name="tryton-dialog-warning" xexpand="0" xfill="0"/>
+    <group col="1" id="labels">
+        <label string="You have selected more than one invoice to print."
+            id="selected"
+            yalign="0.0" xalign="0.0" xexpand="1"/>
+        <label string="The invoices will be sent <i>directly</i> to the printer."
+            id="printer"
+            yalign="0.0" xalign="0.0" xexpand="1"/>
+    </group>
+</form>
commit 5cc2ca4792f4aae63d191ddd3030aad94918a906
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Apr 27 18:44:39 2013 +0200

    Releasing debian version 2.6.3-3.

diff --git a/debian/changelog b/debian/changelog
index 583c779..c37d7f3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-account-invoice (2.6.3-3) experimental; urgency=low
+
+  * Removing Daniel from Uploaders. Thanks for your work! (Closes: #704364).
+  * Improving update of major version in Depends.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Sat, 27 Apr 2013 15:04:44 +0200
+
 tryton-modules-account-invoice (2.6.3-2) experimental; urgency=low
 
   * Updating Vcs-Git to correct address.
commit 9e09027ef7de4f990f58ea1c5d4bec38893829ad
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Apr 27 14:54:47 2013 +0200

    Improving update of major version in Depends.
    
    Pulling the major version for Depends directly from the package version.
    Thanks to Ilya Melnikov for pushing the idea.

diff --git a/debian/control b/debian/control
index 320bb78..5bded38 100644
--- a/debian/control
+++ b/debian/control
@@ -13,10 +13,13 @@ X-Python-Version: >= 2.6
 Package: tryton-modules-account-invoice
 Architecture: all
 Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.6),
- tryton-modules-account (>= 2.6), tryton-modules-account-product (>= 2.6),
- tryton-modules-company (>= 2.6), tryton-modules-currency (>= 2.6),
- tryton-modules-party (>= 2.6), tryton-modules-product (>= 2.6),
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= ${version:major}),
+ tryton-modules-account (>= ${version:major}),
+ tryton-modules-account-product (>= ${version:major}),
+ tryton-modules-company (>= ${version:major}),
+ tryton-modules-currency (>= ${version:major}),
+ tryton-modules-party (>= ${version:major}),
+ tryton-modules-product (>= ${version:major}),
  python-dateutil, python-pkg-resources
 Description: Tryton Application Platform (Financial and Accounting Module)
  Tryton is a high-level general purpose application platform written in Python
diff --git a/debian/rules b/debian/rules
index 1ae0776..0f63ab4 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,5 +1,7 @@
 #!/usr/bin/make -f
 
+MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
+
 %:
 	dh ${@} --with python2
 
@@ -8,5 +10,8 @@ override_dh_auto_clean:
 
 	rm -rf *.egg-info
 
+override_dh_gencontrol:
+	dh_gencontrol -- -Vversion:major="$(MAJOR)"
+
 override_dh_builddeb:
 	dh_builddeb -- -Zxz -z9
commit 75c6ca771511a36fd19b521f46912baa3365a9da
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Apr 21 23:24:37 2013 +0200

    Removing Daniel from Uploaders. Thanks for your work! (Closes: #704364).

diff --git a/debian/control b/debian/control
index 9fa9f8d..320bb78 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: tryton-modules-account-invoice
 Section: python
 Priority: optional
 Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
-Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
+Uploaders: Mathias Behrle <mathiasb at m9s.biz>
 Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
 Standards-Version: 3.9.4
 Homepage: http://www.tryton.org/
commit e8134db194873d98c589b06c7f98c82c11ceaa20
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Mar 23 15:03:55 2013 +0100

    Releasing debian version 2.6.3-2.

diff --git a/debian/changelog b/debian/changelog
index c522369..583c779 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-account-invoice (2.6.3-2) experimental; urgency=low
+
+  * Updating Vcs-Git to correct address.
+  * Adding watch file. Thanks to Bart Martens <bartm at debian.org>.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Sat, 23 Mar 2013 14:00:05 +0100
+
 tryton-modules-account-invoice (2.6.3-1) experimental; urgency=low
 
   * Removing obsolete Dm-Upload-Allowed
commit 1e1efa546fee5e355c23cd58013bbecd61f4be1e
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Mar 23 13:52:31 2013 +0100

    Adding watch file. Thanks to Bart Martens <bartm at debian.org>.

diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..2bdb8ba
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=3
+http://downloads.tryton.org/current/ .*trytond_account_invoice-(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz))
commit a835fedf64bbe52c4aeca100ce9a6781fc23604e
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Feb 23 20:08:08 2013 +0100

    Updating Vcs-Git to correct address.

diff --git a/debian/control b/debian/control
index 73aa932..9fa9f8d 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
 Standards-Version: 3.9.4
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-account-invoice.git
-Vcs-Git: git://debian.tryton.org/git/packages/tryton-modules-account-invoice.git
+Vcs-Git: git://debian.tryton.org/packages/tryton-modules-account-invoice.git
 X-Python-Version: >= 2.6
 
 Package: tryton-modules-account-invoice
commit 814ea829dd92a4f726e54976c8edf8b2a11c2228
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Feb 17 13:50:37 2013 +0100

    Releasing debian version 2.6.3-1.

diff --git a/debian/changelog b/debian/changelog
index 664b191..c522369 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+tryton-modules-account-invoice (2.6.3-1) experimental; urgency=low
+
+  * Removing obsolete Dm-Upload-Allowed
+  * Updating to Standards-Version: 3.9.4, no changes needed.
+  * Merging upstream version 2.6.1.
+  * Merging upstream version 2.6.2.
+  * Merging upstream version 2.6.3.
+  * Updating copyright.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Sat, 16 Feb 2013 21:35:06 +0100
+
 tryton-modules-account-invoice (2.6.0-1) experimental; urgency=low
 
   * Merging upstream version 2.6.0.
commit cf772a65cc326466e1df643d55ae5d517551b6cb
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Feb 16 21:29:18 2013 +0100

    Updating copyright.

diff --git a/debian/copyright b/debian/copyright
index 4f54669..2edb2f6 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,15 +1,15 @@
 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 
 Files: *
-Copyright: 2004-2008 Tiny SPRL
-           2008-2012 Cedric Krier
+Copyright: 2008-2013 Cédric Krier
            2008-2012 Bertrand Chenal
-           2008-2012 B2CK SPRL
+           2008-2013 B2CK SPRL
+           2004-2008 Tiny SPRL
 License: GPL-3+
 
 Files: debian/*
 Copyright: 2009-2012 Daniel Baumann <daniel at debian.org>
-           2012 Mathias Behrle <mathiasb at m9s.biz>
+           2012-2013 Mathias Behrle <mathiasb at m9s.biz>
 License: GPL-3+
 
 License: GPL-3+
commit ab438a444f5703ba1b1ee3d168d53edaca2b2400
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri Feb 15 21:01:20 2013 +0100

    Merging upstream version 2.6.3.

diff --git a/CHANGELOG b/CHANGELOG
index df807f9..96b5965 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.6.3 - 2013-02-12
+* Bug fixes (see mercurial logs for details)
+
 Version 2.6.2 - 2012-12-23
 * Bug fixes (see mercurial logs for details)
 
diff --git a/COPYRIGHT b/COPYRIGHT
index ede3fac..6e948f6 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,6 +1,6 @@
-Copyright (C) 2008-2012 Cédric Krier.
+Copyright (C) 2008-2013 Cédric Krier.
 Copyright (C) 2008-2012 Bertrand Chenal.
-Copyright (C) 2008-2012 B2CK SPRL.
+Copyright (C) 2008-2013 B2CK SPRL.
 Copyright (C) 2004-2008 Tiny SPRL.
 
 This program is free software: you can redistribute it and/or modify
diff --git a/PKG-INFO b/PKG-INFO
index b42c1f4..c304d45 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 2.6.2
+Version: 2.6.3
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/invoice.py b/invoice.py
index bfc690d..42358f4 100644
--- a/invoice.py
+++ b/invoice.py
@@ -784,7 +784,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
         if self.currency.id != self.company.currency.id:
             with Transaction().set_context(date=self.currency_date):
                 res['amount_second_currency'] = Currency.compute(
-                    self.company.currency.id, amount, self.currency.id)
+                    self.company.currency, amount, self.currency)
             res['amount_second_currency'] = abs(res['amount_second_currency'])
             res['second_currency'] = self.currency.id
         else:
@@ -868,8 +868,9 @@ class Invoice(Workflow, ModelSQL, ModelView):
         if self.type in ('in_invoice', 'in_credit_note'):
             test_state = False
 
+        accounting_date = self.accounting_date or self.invoice_date
         period_id = Period.find(self.company.id,
-            date=self.invoice_date, test_state=test_state)
+            date=accounting_date, test_state=test_state)
         period = Period(period_id)
         sequence_id = getattr(period, self.type + '_sequence').id
         if not sequence_id:
@@ -1791,7 +1792,7 @@ class InvoiceLine(ModelSQL, ModelView):
             res[field] = getattr(self, field)
 
         for field in ('unit', 'product', 'account'):
-            res[field] = getattr(self, field).id
+            res[field] = getattr(getattr(self, field), 'id', None)
 
         res['taxes'] = []
         for tax in self.taxes:
@@ -2310,8 +2311,8 @@ class PayInvoice(Wizard):
         default['company'] = invoice.company.id
 
         with Transaction().set_context(date=self.start.date):
-            amount = Currency.compute(self.start.currency.id,
-                self.start.amount, invoice.company.currency.id)
+            amount = Currency.compute(self.start.currency,
+                self.start.amount, invoice.company.currency)
 
         if invoice.company.currency.is_zero(amount):
             default['lines'] = [x.id for x in invoice.lines_to_pay]
diff --git a/tryton.cfg b/tryton.cfg
index 630bc1c..5e36081 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=2.6.2
+version=2.6.3
 depends:
     account
     account_product
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index a5166f4..5cff6fe 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond-account-invoice
-Version: 2.6.2
+Version: 2.6.3
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
commit 279d3deadce6bf0be536d1570100a320d1a7220d
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri Feb 15 20:58:21 2013 +0100

    Merging upstream version 2.6.2.

diff --git a/CHANGELOG b/CHANGELOG
index 76e2224..df807f9 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.6.2 - 2012-12-23
+* Bug fixes (see mercurial logs for details)
+
 Version 2.6.1 - 2012-11-05
 * Bug fixes (see mercurial logs for details)
 
diff --git a/PKG-INFO b/PKG-INFO
index e94f87c..b42c1f4 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 2.6.1
+Version: 2.6.2
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/invoice.py b/invoice.py
index c8a1124..bfc690d 100644
--- a/invoice.py
+++ b/invoice.py
@@ -416,9 +416,10 @@ class Invoice(Workflow, ModelSQL, ModelView):
             if tax.manual:
                 res['tax_amount'] += tax.amount or Decimal('0.0')
                 continue
-            key = (tax.base_code, tax.base_sign,
-                tax.tax_code, tax.tax_sign,
-                tax.account, tax.tax)
+            key = (tax.base_code.id if tax.base_code else None, tax.base_sign,
+                tax.tax_code.id if tax.tax_code else None, tax.tax_sign,
+                tax.account.id if tax.account else None,
+                tax.tax.id if tax.tax else None)
             if (key not in computed_taxes) or (key in tax_keys):
                 res['taxes'].setdefault('remove', [])
                 res['taxes']['remove'].append(tax.id)
@@ -1912,15 +1913,19 @@ class InvoiceTax(ModelSQL, ModelView):
             else:
                 invoice_type = 'out_invoice'
             if invoice_type in ('out_invoice', 'in_invoice'):
-                changes['base_code'] = tax.invoice_base_code.id
+                changes['base_code'] = (tax.invoice_base_code.id
+                    if tax.invoice_base_code else None)
                 changes['base_sign'] = tax.invoice_base_sign
-                changes['tax_code'] = tax.invoice_tax_code.id
+                changes['tax_code'] = (tax.invoice_tax_code.id
+                    if tax.invoice_tax_code else None)
                 changes['tax_sign'] = tax.invoice_tax_sign
                 changes['account'] = tax.invoice_account.id
             else:
-                changes['base_code'] = tax.credit_note_base_code.id
+                changes['base_code'] = (tax.credit_note_base_code.id
+                    if tax.credit_note_base_code else None)
                 changes['base_sign'] = tax.credit_note_base_sign
-                changes['tax_code'] = tax.credit_note_tax_code.id
+                changes['tax_code'] = (tax.credit_note_tax_code.id
+                    if tax.credit_note_tax_code else None)
                 changes['tax_sign'] = tax.credit_note_tax_sign
                 changes['account'] = tax.credit_note_account.id
         return changes
@@ -1930,10 +1935,10 @@ class InvoiceTax(ModelSQL, ModelView):
         if self.tax and self.manual:
             tax = self.tax
             base = self.base or Decimal(0)
-            for tax in Tax.compute([tax], base, 1):
-                if (tax['tax'] == tax
-                        and tax['base'] == self.base):
-                    return tax['amount']
+            for values in Tax.compute([tax], base, 1):
+                if (values['tax'] == tax
+                        and values['base'] == base):
+                    return values['amount']
         return self.amount
 
     @classmethod
diff --git a/tryton.cfg b/tryton.cfg
index 44ab0a1..630bc1c 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=2.6.1
+version=2.6.2
 depends:
     account
     account_product
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index bf6bfbc..a5166f4 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond-account-invoice
-Version: 2.6.1
+Version: 2.6.2
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
commit 2fbe79747f8889c6d3216d2a95cbf378d30d1794
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri Feb 15 20:50:33 2013 +0100

    Merging upstream version 2.6.1.

diff --git a/CHANGELOG b/CHANGELOG
index ca57958..76e2224 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.6.1 - 2012-11-05
+* Bug fixes (see mercurial logs for details)
+
 Version 2.6.0 - 2012-10-22
 * Bug fixes (see mercurial logs for details)
 
diff --git a/PKG-INFO b/PKG-INFO
index be62363..e94f87c 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 2.6.0
+Version: 2.6.1
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/invoice.py b/invoice.py
index 11a3ffb..c8a1124 100644
--- a/invoice.py
+++ b/invoice.py
@@ -2123,7 +2123,7 @@ class InvoiceReport(Report):
         # invoice_report_cache there was an error somewhere. So we save it now
         # in invoice_report_cache
         if invoice.state in ('open', 'paid'):
-            Invoice.write([invoice], {
+            Invoice.write([Invoice(invoice.id)], {
                 'invoice_report_format': res[0],
                 'invoice_report_cache': res[1],
                 })
diff --git a/tryton.cfg b/tryton.cfg
index 6454c07..44ab0a1 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=2.6.0
+version=2.6.1
 depends:
     account
     account_product
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index b8ebda7..bf6bfbc 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
 Name: trytond-account-invoice
-Version: 2.6.0
+Version: 2.6.1
 Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
 Author: Tryton
commit cbdf5d9a011ae95353772e1558533c71da3ea42c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri Feb 15 19:28:25 2013 +0100

    Updating to Standards-Version: 3.9.4, no changes needed.

diff --git a/debian/control b/debian/control
index 8e4de2f..73aa932 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: optional
 Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
 Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
 Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
-Standards-Version: 3.9.3
+Standards-Version: 3.9.4
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-account-invoice.git
 Vcs-Git: git://debian.tryton.org/git/packages/tryton-modules-account-invoice.git
commit 920678af12527b40d29209c19caa00118d2445cc
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Feb 13 21:37:13 2013 +0100

    Removing obsolete Dm-Upload-Allowed

diff --git a/debian/control b/debian/control
index 6c9faa8..8e4de2f 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,6 @@ Section: python
 Priority: optional
 Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
 Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
-Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
 Standards-Version: 3.9.3
 Homepage: http://www.tryton.org/
commit 5cfb0691018fde576de27b1514795e1d103cbfd6
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Oct 24 22:01:46 2012 +0200

    Releasing debian version 2.6.0-1.

diff --git a/debian/changelog b/debian/changelog
index 16ee780..664b191 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-account-invoice (2.6.0-1) experimental; urgency=low
+
+  * Merging upstream version 2.6.0.
+  * Bumping versioned tryton depends to 2.6.
+  * Adding xz compression to source/options.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Wed, 24 Oct 2012 14:23:52 +0200
+
 tryton-modules-account-invoice (2.4.2-2) experimental; urgency=low
 
   [ Daniel Baumann ]
commit 59b30669e053b8e4bf412828a0dc580e26d18188
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Oct 24 14:21:48 2012 +0200

    Adding xz compression to source/options.

diff --git a/debian/source/options b/debian/source/options
index d053b65..22a4de9 100644
--- a/debian/source/options
+++ b/debian/source/options
@@ -1,2 +1,2 @@
-compression = gzip
+compression = xz
 compression-level = 9
commit 751638e2b6f236045ac9489197c384d617544fc3
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Oct 23 19:59:46 2012 +0200

    Bumping versioned tryton depends to 2.6.

diff --git a/debian/control b/debian/control
index 816cdbe..6c9faa8 100644
--- a/debian/control
+++ b/debian/control
@@ -14,10 +14,10 @@ X-Python-Version: >= 2.6
 Package: tryton-modules-account-invoice
 Architecture: all
 Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.4),
- tryton-modules-account (>= 2.4), tryton-modules-account-product (>= 2.4),
- tryton-modules-company (>= 2.4), tryton-modules-currency (>= 2.4),
- tryton-modules-party (>= 2.4), tryton-modules-product (>= 2.4),
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.6),
+ tryton-modules-account (>= 2.6), tryton-modules-account-product (>= 2.6),
+ tryton-modules-company (>= 2.6), tryton-modules-currency (>= 2.6),
+ tryton-modules-party (>= 2.6), tryton-modules-product (>= 2.6),
  python-dateutil, python-pkg-resources
 Description: Tryton Application Platform (Financial and Accounting Module)
  Tryton is a high-level general purpose application platform written in Python
commit 0e1f6c0ed8ac76c5f9efbb49c0e8cc16b5e2e95d
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Oct 23 19:53:19 2012 +0200

    Merging upstream version 2.6.0.

diff --git a/CHANGELOG b/CHANGELOG
index 32fd9fa..ca57958 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,9 +1,6 @@
-Version 2.4.2 - 2012-09-02
+Version 2.6.0 - 2012-10-22
 * Bug fixes (see mercurial logs for details)
 
-Version 2.4.1 - 2012-04-24
-* Restore es_AR translation
-
 Version 2.4.0 - 2012-04-23
 * Bug fixes (see mercurial logs for details)
 * Add divisor field to Payment Term Lines
diff --git a/MANIFEST.in b/MANIFEST.in
index 7f5d5fd..44969c7 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -4,6 +4,7 @@ include TODO
 include COPYRIGHT
 include CHANGELOG
 include LICENSE
+include tryton.cfg
 include *.xml
 include *.odt
 include locale/*.po
diff --git a/PKG-INFO b/PKG-INFO
index dd96f68..be62363 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,22 +1,48 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 2.4.2
-Summary: Financial and Accounting Module with:
-    - Payment Term
-    - Invoice / Credit Note
-    - Supplier Invoice / Supplier Credit Note
-
-With the possibilities:
-    - to follow the payment of the invoices.
-    - to define invoice sequences on fiscal year or period.
-    - to credit any invoice.
-
+Version: 2.6.0
+Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
-Author: B2CK
-Author-email: info at b2ck.com
+Author: Tryton
+Author-email: UNKNOWN
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.4/
-Description: UNKNOWN
+Download-URL: http://downloads.tryton.org/2.6/
+Description: trytond_account_invoice
+        =======================
+        
+        The account_invoice module of the Tryton application platform.
+        
+        Installing
+        ----------
+        
+        See INSTALL
+        
+        Support
+        -------
+        
+        If you encounter any problems with Tryton, please don't hesitate to ask
+        questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+        
+          http://bugs.tryton.org/
+          http://groups.tryton.org/
+          http://wiki.tryton.org/
+          irc://irc.freenode.net/tryton
+        
+        License
+        -------
+        
+        See LICENSE
+        
+        Copyright
+        ---------
+        
+        See COPYRIGHT
+        
+        
+        For more information please visit the Tryton web site:
+        
+          http://www.tryton.org/
+        
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Plugins
diff --git a/README b/README
index 845a5ed..08c0100 100644
--- a/README
+++ b/README
@@ -2,7 +2,6 @@ trytond_account_invoice
 =======================
 
 The account_invoice module of the Tryton application platform.
-See __tryton__.py
 
 Installing
 ----------
diff --git a/__init__.py b/__init__.py
index 6dc8f98..4636280 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,7 +1,38 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 
+from trytond.pool import Pool
 from .payment_term import *
 from .invoice import *
 from .party import *
 from .account import *
+
+
+def register():
+    Pool.register(
+        PaymentTerm,
+        PaymentTermLine,
+        Invoice,
+        InvoicePaymentLine,
+        InvoiceLine,
+        InvoiceLineTax,
+        InvoiceTax,
+        PrintInvoiceWarning,
+        PayInvoiceStart,
+        PayInvoiceAsk,
+        CreditInvoiceStart,
+        Address,
+        Party,
+        FiscalYear,
+        Period,
+        Move,
+        Reconciliation,
+        module='account_invoice', type_='model')
+    Pool.register(
+        PrintInvoice,
+        PayInvoice,
+        CreditInvoice,
+        module='account_invoice', type_='wizard')
+    Pool.register(
+        InvoiceReport,
+        module='account_invoice', type_='report')
diff --git a/__tryton__.py b/__tryton__.py
deleted file mode 100644
index 5da0429..0000000
--- a/__tryton__.py
+++ /dev/null
@@ -1,137 +0,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.
-{
-    'name': 'Account Invoice',
-    'name_bg_BG': 'Фактуриране',
-    'name_ca_ES': 'Facturació',
-    'name_de_DE': 'Fakturierung',
-    'name_es_AR': 'Facturación',
-    'name_es_CO': 'Facturación',
-    'name_es_ES': 'Facturación',
-    'name_fr_FR': 'Facturation',
-    'name_nl_NL': 'Facturatie',
-    'version': '2.4.2',
-    'author': 'B2CK',
-    'email': 'info at b2ck.com',
-    'website': 'http://www.tryton.org/',
-    'description': '''Financial and Accounting Module with:
-    - Payment Term
-    - Invoice / Credit Note
-    - Supplier Invoice / Supplier Credit Note
-
-With the possibilities:
-    - to follow the payment of the invoices.
-    - to define invoice sequences on fiscal year or period.
-    - to credit any invoice.
-''',
-    'description_bg_BG': '''Финансов и счетоводен модул с:
-    - Условия за плащане
-    - Фактура / Кредитно известие
-    - Фактура за доставчик / Кредитно известие за доставчик
-
-Има следните възможности:
-    - проследяване на плащания на фактури
-    - задаване на последователности на фактура за финансова година или период
-    - кредитиране на всяка фактура
-''',
-    'description_ca_ES': '''Mòdul financer i comptable amb:
-    - Terminis de pagament
-    - Factura / Abonament
-    - Factura de proveïdor / Abonament de proveïdor
-
-Amb les possibilitats de:
-    - Fer el seguiment del pagament de factures.
-    - Definir seqüències de factures per exercici fiscal o període.
-    - Abonar qualsevol factura.
-''',
-    'description_de_DE': '''Modul für Buchhaltung und Fakturierung mit:
-    - Definition von Zahlungsbedingungen
-    - Erstellung von Rechnungen und Gutschriften für Kunden
-    - Erstellung von Rechnungen und Gutschriften für Lieferanten
-
-Ermöglicht:
-    - die Verfolgung der Bezahlung von Rechnungen
-    - die Definition von Rechnungssequenzen für das Geschäftsjahr bzw. die Buchungszeiträume
-    - die Erstellung von Gutschriften zu jeglicher Rechnung
-''',
-    'description_es_AR': '''Módulo financiero y de contabilidad con:
-    - Plazos de Pago
-    - Factura / Nota de crédito
-    - Factura de proveedor / Nota de crédito de proveedor
-
-Con las posibilidades de:
-    - hacer seguimientos del pago de facturas.
-    - definir secuencias de facturas por ejercicio fiscal o período.
-    - pagar cualquier factura.
-''',
-    'description_es_CO': '''Módulo Financiero y de Contabilidad con:
-    - Términos de Pago
-    - Notas de Facturación / Crédito
-    - Factura de Proveedores / Nota de Crédito de Proveedores
-
-Con las posibilidades de:
-    - Hacer seguimiento al pago de facturas.
-    - Definir secuencias de facturas en año o período fiscal.
-    - Acreditar una factura.
-''',
-    'description_es_ES': '''Módulo financiero y contable con:
-    - Plazos de pago
-    - Factura / Abono
-    - Factura de proveedor / Abono de proveedor
-
-Con las posibilidades de:
-    - Hacer el seguimiento del pago de facturas.
-    - Definir secuencias de facturas por ejercicio fiscal o período.
-    - Abonar cualquier factura.
-''',
-    'description_fr_FR': '''Module financier et comptable avec:
-    - Condition de paiement
-    - Facture / Note de crédit
-    - Facture fournisseur / Note de crédit fournisseur
-
-Avec la possibilité:
-    - de suivre le paiment des factures
-    - de définir les numérotations de facture par période ou par année fiscale
-    - de créditer n'importe quelle facture
-
-''',
-    'description_nl_NL': '''Module voor facturering met:
-    - Betalingstermijnen
-    - Verkoopfacturen / Credit verkoopnota's
-    - Inkoopfacturen / Credit inkoopnota's
-
-Met de mogelijkheid tot:
-    - het volgen van betalingen.
-    - het definiëren van factuurreeksen per boekjaar.
-    - het crediteren van een factuur.
-
-''',
-    'depends': [
-        'ir',
-        'account',
-        'company',
-        'party',
-        'product',
-        'res',
-        'currency',
-        'account_product',
-    ],
-    'xml': [
-        'invoice.xml',
-        'payment_term.xml',
-        'party.xml',
-        'account.xml',
-    ],
-    'translation': [
-        '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_ES.po',
-        'locale/fr_FR.po',
-        'locale/nl_NL.po',
-        'locale/ru_RU.po',
-    ]
-}
diff --git a/account.py b/account.py
index 5af92e2..d6d74c9 100644
--- a/account.py
+++ b/account.py
@@ -1,12 +1,15 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from trytond.model import Model, ModelView, ModelSQL, fields
+from trytond.model import fields
 from trytond.pyson import Eval
-from trytond.pool import Pool
+from trytond.pool import Pool, PoolMeta
 
+__all__ = ['FiscalYear', 'Period', 'Move', 'Reconciliation']
+__metaclass__ = PoolMeta
 
-class FiscalYear(ModelSQL, ModelView):
-    _name = 'account.fiscalyear'
+
+class FiscalYear:
+    __name__ = 'account.fiscalyear'
     out_invoice_sequence = fields.Many2One('ir.sequence.strict',
         'Customer Invoice Sequence', required=True,
         domain=[
@@ -62,12 +65,13 @@ class FiscalYear(ModelSQL, ModelView):
             'company': Eval('company'),
             }, depends=['company'])
 
-    def __init__(self):
-        super(FiscalYear, self).__init__()
-        self._constraints += [
+    @classmethod
+    def __setup__(cls):
+        super(FiscalYear, cls).__setup__()
+        cls._constraints += [
             ('check_invoice_sequences', 'different_invoice_sequence'),
-        ]
-        self._error_messages.update({
+            ]
+        cls._error_messages.update({
             'change_invoice_sequence': 'You can not change ' \
                     'the invoice sequence if there is already ' \
                     'an invoice opened in the fiscalyear',
@@ -75,44 +79,41 @@ class FiscalYear(ModelSQL, ModelView):
                     'invoice sequences per fiscal year!',
             })
 
-    def check_invoice_sequences(self, ids):
-        for fiscalyear in self.browse(ids):
-            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
-                    'out_credit_note_sequence', 'in_credit_note_sequence'):
-                if self.search([
-                    (sequence, '=', fiscalyear[sequence].id),
-                    ('id', '!=', fiscalyear.id),
-                    ]):
-                    return False
+    def check_invoice_sequences(self):
+        for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                'out_credit_note_sequence', 'in_credit_note_sequence'):
+            if self.search([
+                        (sequence, '=', getattr(self, sequence).id),
+                        ('id', '!=', self.id),
+                        ]):
+                return False
         return True
 
-    def write(self, ids, vals):
-        invoice_obj = Pool().get('account.invoice')
-
-        if isinstance(ids, (int, long)):
-            ids = [ids]
+    @classmethod
+    def write(cls, fiscalyears, vals):
+        Invoice = Pool().get('account.invoice')
 
         for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
                 'out_credit_note_sequence', 'in_credit_note_sequence'):
             if vals.get(sequence):
-                for fiscalyear in self.browse(ids):
-                    if fiscalyear[sequence] and \
-                            fiscalyear[sequence].id != \
-                            vals[sequence]:
-                        if invoice_obj.search([
-                            ('invoice_date', '>=', fiscalyear.start_date),
-                            ('invoice_date', '<=', fiscalyear.end_date),
-                            ('number', '!=', None),
-                            ('type', '=', sequence[:-9]),
-                            ]):
-                            self.raise_user_error('change_invoice_sequence')
-        return super(FiscalYear, self).write(ids, vals)
-
-FiscalYear()
-
-
-class Period(ModelSQL, ModelView):
-    _name = 'account.period'
+                for fiscalyear in fiscalyears:
+                    if (getattr(fiscalyear, sequence)
+                            and (getattr(fiscalyear, sequence).id !=
+                                vals[sequence])):
+                        if Invoice.search([
+                                    ('invoice_date', '>=',
+                                        fiscalyear.start_date),
+                                    ('invoice_date', '<=',
+                                        fiscalyear.end_date),
+                                    ('number', '!=', None),
+                                    ('type', '=', sequence[:-9]),
+                                    ]):
+                            cls.raise_user_error('change_invoice_sequence')
+        super(FiscalYear, cls).write(fiscalyears, vals)
+
+
+class Period:
+    __name__ = 'account.period'
     out_invoice_sequence = fields.Many2One('ir.sequence.strict',
         'Customer Invoice Sequence',
         domain=[('code', '=', 'account.invoice')],
@@ -150,12 +151,13 @@ class Period(ModelSQL, ModelView):
             },
         depends=['type'])
 
-    def __init__(self):
-        super(Period, self).__init__()
-        self._constraints += [
+    @classmethod
+    def __setup__(cls):
+        super(Period, cls).__setup__()
+        cls._constraints += [
             ('check_invoice_sequences', 'check_invoice_sequences'),
-        ]
-        self._error_messages.update({
+            ]
+        cls._error_messages.update({
             'change_invoice_sequence': 'You can not change ' \
                     'the invoice sequence if there is already ' \
                     'an invoice opened in the period',
@@ -164,86 +166,82 @@ class Period(ModelSQL, ModelView):
                     'in the same company!',
             })
 
-    def check_invoice_sequences(self, ids):
-        for period in self.browse(ids):
-            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
-                    'out_credit_note_sequence', 'in_credit_note_sequence'):
-                if self.search([
-                    (sequence, '=', period[sequence].id),
-                    ('fiscalyear', '!=', period.fiscalyear.id),
-                    ]):
-                    return False
-                if period[sequence].company \
-                        and period[sequence].company.id != \
-                        period.fiscalyear.company.id:
-                    return False
+    def check_invoice_sequences(self):
+        for sequence_name in ('out_invoice_sequence', 'in_invoice_sequence',
+                'out_credit_note_sequence', 'in_credit_note_sequence'):
+            sequence = getattr(self, sequence_name)
+            if self.search([
+                        (sequence_name, '=', sequence.id),
+                        ('fiscalyear', '!=', self.fiscalyear.id),
+                        ]):
+                return False
+            if (sequence.company
+                    and sequence.company != self.fiscalyear.company):
+                return False
         return True
 
-    def create(self, vals):
-        fiscalyear_obj = Pool().get('account.fiscalyear')
+    @classmethod
+    def create(cls, vals):
+        FiscalYear = Pool().get('account.fiscalyear')
         vals = vals.copy()
         if vals.get('fiscalyear'):
-            fiscalyear = fiscalyear_obj.browse(vals['fiscalyear'])
+            fiscalyear = FiscalYear(vals['fiscalyear'])
             for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
                     'out_credit_note_sequence', 'in_credit_note_sequence'):
                 if not vals.get(sequence):
-                    vals[sequence] = fiscalyear[sequence].id
-        return super(Period, self).create(vals)
-
-    def write(self, ids, vals):
-        invoice_obj = Pool().get('account.invoice')
+                    vals[sequence] = getattr(fiscalyear, sequence).id
+        return super(Period, cls).create(vals)
 
-        if isinstance(ids, (int, long)):
-            ids = [ids]
+    @classmethod
+    def write(cls, periods, vals):
+        Invoice = Pool().get('account.invoice')
 
-        for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+        for sequence_name in ('out_invoice_sequence', 'in_invoice_sequence',
                 'out_credit_note_sequence', 'in_credit_note_sequence'):
-            if vals.get(sequence):
-                for period in self.browse(ids):
-                    if period[sequence] and \
-                            period[sequence].id != \
-                            vals[sequence]:
-                        if invoice_obj.search([
-                            ('invoice_date', '>=', period.start_date),
-                            ('invoice_date', '<=', period.end_date),
-                            ('number', '!=', None),
-                            ('type', '=', sequence[:-9]),
-                            ]):
-                            self.raise_user_error('change_invoice_sequence')
-        return super(Period, self).write(ids, vals)
-
-Period()
-
-
-class Reconciliation(Model):
-    _name = 'account.move.reconciliation'
-
-    def create(self, values):
-        pool = Pool()
-        invoice_obj = pool.get('account.invoice')
-
-        result = super(Reconciliation, self).create(values)
-        reconciliation = self.browse(result)
+            if vals.get(sequence_name):
+                for period in periods:
+                    sequence = getattr(period, sequence_name)
+                    if (sequence and
+                            sequence.id != vals[sequence]):
+                        if Invoice.search([
+                                    ('invoice_date', '>=', period.start_date),
+                                    ('invoice_date', '<=', period.end_date),
+                                    ('number', '!=', None),
+                                    ('type', '=', sequence_name[:-9]),
+                                    ]):
+                            cls.raise_user_error('change_invoice_sequence')
+        super(Period, cls).write(periods, vals)
+
+
+class Move:
+    __name__ = 'account.move'
+
+    @classmethod
+    def _get_origin(cls):
+        return super(Move, cls)._get_origin() + ['account.invoice']
+
+
+class Reconciliation:
+    __name__ = 'account.move.reconciliation'
+
+    @classmethod
+    def create(cls, values):
+        Invoice = Pool().get('account.invoice')
+        reconciliation = super(Reconciliation, cls).create(values)
         move_ids = set(l.move.id for l in reconciliation.lines)
-        invoice_ids = invoice_obj.search([
+        invoices = Invoice.search([
                 ('move', 'in', list(move_ids)),
                 ])
-        invoice_obj.process(invoice_ids)
-        return result
+        Invoice.process(invoices)
+        return reconciliation
 
-    def delete(self, ids):
-        pool = Pool()
-        invoice_obj = pool.get('account.invoice')
+    @classmethod
+    def delete(cls, reconciliations):
+        Invoice = Pool().get('account.invoice')
 
-        if isinstance(ids, (int, long)):
-            ids = [ids]
-        reconciliations = self.browse(ids)
         move_ids = set(l.move.id for r in reconciliations for l in r.lines)
-        invoice_ids = invoice_obj.search([
+        invoices = Invoice.search([
                 ('move', 'in', list(move_ids)),
                 ])
-        result = super(Reconciliation, self).delete(ids)
-        invoice_obj.process(invoice_ids)
-        return result
-
-Reconciliation()
+        super(Reconciliation, cls).delete(reconciliations)
+        Invoice.process(invoices)
diff --git a/invoice.py b/invoice.py
index f1a66a9..11a3ffb 100644
--- a/invoice.py
+++ b/invoice.py
@@ -8,11 +8,18 @@ from trytond.report import Report
 from trytond.wizard import Wizard, StateView, StateTransition, StateAction, \
     Button
 from trytond.backend import TableHandler, FIELDS
-from trytond.pyson import If, Eval, Bool
+from trytond.pyson import If, Eval, Bool, Id
 from trytond.tools import reduce_ids
 from trytond.transaction import Transaction
 from trytond.pool import Pool
 from trytond.config import CONFIG
+from trytond.rpc import RPC
+
+__all__ = ['Invoice', 'InvoicePaymentLine', 'InvoiceLine',
+    'InvoiceLineTax', 'InvoiceTax',
+    'PrintInvoiceWarning', 'PrintInvoice', 'InvoiceReport',
+    'PayInvoiceStart', 'PayInvoiceAsk', 'PayInvoice',
+    'CreditInvoiceStart', 'CreditInvoice']
 
 _STATES = {
     'readonly': Eval('state') != 'draft',
@@ -38,8 +45,7 @@ _ZERO = Decimal('0.0')
 
 class Invoice(Workflow, ModelSQL, ModelView):
     'Invoice'
-    _name = 'account.invoice'
-    _description = __doc__
+    __name__ = 'account.invoice'
     _order_name = 'number'
     company = fields.Many2One('company.company', 'Company', required=True,
         states=_STATES, select=True, domain=[
@@ -79,7 +85,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
         required=True, states=_STATES, depends=_DEPENDS,
         on_change=['party', 'payment_term', 'type', 'company'])
     party_lang = fields.Function(fields.Char('Party Language',
-        on_change_with=['party']), 'get_party_language')
+        on_change_with=['party']), 'on_change_with_party_lang')
     invoice_address = fields.Many2One('party.address', 'Invoice Address',
         required=True, states=_STATES, depends=['state', 'party'],
         domain=[('party', '=', Eval('party'))])
@@ -89,9 +95,9 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 | (Eval('lines') & Eval('currency'))),
             }, depends=['state', 'lines'])
     currency_digits = fields.Function(fields.Integer('Currency Digits',
-        on_change_with=['currency']), 'get_currency_digits')
+        on_change_with=['currency']), 'on_change_with_currency_digits')
     currency_date = fields.Function(fields.Date('Currency Date',
-        on_change_with=['invoice_date']), 'get_currency_date',)
+        on_change_with=['invoice_date']), 'on_change_with_currency_date',)
     journal = fields.Many2One('account.journal', 'Journal', required=True,
         states=_STATES, depends=_DEPENDS, domain=[('centralised', '=', False)])
     move = fields.Many2One('account.move', 'Move', readonly=True)
@@ -138,17 +144,18 @@ class Invoice(Workflow, ModelSQL, ModelView):
     invoice_report_cache = fields.Binary('Invoice Report', readonly=True)
     invoice_report_format = fields.Char('Invoice Report Format', readonly=True)
 
-    def __init__(self):
-        super(Invoice, self).__init__()
-        self._check_modify_exclude = ['state', 'payment_lines',
+    @classmethod
+    def __setup__(cls):
+        super(Invoice, cls).__setup__()
+        cls._check_modify_exclude = ['state', 'payment_lines',
                 'invoice_report_cache', 'invoice_report_format']
-        self._constraints += [
+        cls._constraints += [
             ('check_account', 'account_different_company'),
             ('check_account2', 'same_account_on_line'),
         ]
-        self._order.insert(0, ('number', 'DESC'))
-        self._order.insert(1, ('id', 'DESC'))
-        self._error_messages.update({
+        cls._order.insert(0, ('number', 'DESC'))
+        cls._order.insert(1, ('id', 'DESC'))
+        cls._error_messages.update({
             'reset_draft': 'You can not reset to draft ' \
                     'an invoice that has move!',
             'missing_tax_line': 'Taxes defined ' \
@@ -178,7 +185,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
                     'as on invoice line!',
             'delete_cancel': 'Invoice "%s" must be cancelled before deletion!',
             })
-        self._transitions |= set((
+        cls._transitions |= set((
                 ('draft', 'proforma'),
                 ('proforma', 'open'),
                 ('draft', 'open'),
@@ -189,7 +196,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 ('proforma', 'cancel'),
                 ('cancel', 'draft'),
                 ))
-        self._buttons.update({
+        cls._buttons.update({
                 'cancel': {
                     'invisible': ~Eval('state').in_(['draft', 'proforma']),
                     },
@@ -204,12 +211,18 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 'open': {
                     'invisible': ~Eval('state').in_(['draft', 'proforma']),
                     },
+                'pay': {
+                    'invisible': Eval('state') != 'open',
+                    'readonly': ~Eval('groups', []).contains(
+                        Id('account', 'group_account')),
+                    },
                 })
 
-    def init(self, module_name):
-        super(Invoice, self).init(module_name)
+    @classmethod
+    def __register__(cls, module_name):
+        super(Invoice, cls).__register__(module_name)
         cursor = Transaction().cursor
-        table = TableHandler(cursor, self, module_name)
+        table = TableHandler(cursor, cls, module_name)
 
         # Migration from 1.2 invoice_date is no more required
         table.not_null_action('invoice_date', action='remove')
@@ -221,18 +234,18 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 and table.column_exist('invoice_report_cache')):
             limit = cursor.IN_MAX
             cursor.execute('SELECT COUNT(id) '
-                'FROM "' + self._table + '"')
+                'FROM "' + cls._table + '"')
             invoice_count, = cursor.fetchone()
             for offset in range(0, invoice_count, limit):
                 cursor.execute(cursor.limit_clause(
                     'SELECT id, invoice_report '
-                    'FROM "' + self._table + '"'
+                    'FROM "' + cls._table + '"'
                     'ORDER BY id',
                     limit, offset))
                 for invoice_id, report in cursor.fetchall():
                     if report:
                         report = buffer(base64.decodestring(str(report)))
-                        cursor.execute('UPDATE "' + self._table + '" '
+                        cursor.execute('UPDATE "' + cls._table + '" '
                             'SET invoice_report_cache = %s '
                             'WHERE id = %s', (report, invoice_id))
             table.drop_column('invoice_report')
@@ -240,283 +253,231 @@ class Invoice(Workflow, ModelSQL, ModelView):
         # Add index on create_date
         table.index_action('create_date', action='add')
 
-    def default_type(self):
+    @staticmethod
+    def default_type():
         return Transaction().context.get('type', 'out_invoice')
 
-    def default_state(self):
+    @staticmethod
+    def default_state():
         return 'draft'
 
-    def default_currency(self):
-        company_obj = Pool().get('company.company')
+    @staticmethod
+    def default_currency():
+        Company = Pool().get('company.company')
         if Transaction().context.get('company'):
-            company = company_obj.browse(Transaction().context['company'])
+            company = Company(Transaction().context['company'])
             return company.currency.id
 
-    def default_currency_digits(self):
-        company_obj = Pool().get('company.company')
+    @staticmethod
+    def default_currency_digits():
+        Company = Pool().get('company.company')
         if Transaction().context.get('company'):
-            company = company_obj.browse(Transaction().context['company'])
+            company = Company(Transaction().context['company'])
             return company.currency.digits
         return 2
 
-    def default_company(self):
+    @staticmethod
+    def default_company():
         return Transaction().context.get('company')
 
-    def default_payment_term(self):
-        payment_term_obj = Pool().get('account.invoice.payment_term')
-        payment_term_ids = payment_term_obj.search(self.payment_term.domain)
-        if len(payment_term_ids) == 1:
-            return payment_term_ids[0]
+    @classmethod
+    def default_payment_term(cls):
+        PaymentTerm = Pool().get('account.invoice.payment_term')
+        payment_terms = PaymentTerm.search(cls.payment_term.domain)
+        if len(payment_terms) == 1:
+            return payment_terms[0].id
 
-    def __get_account_payment_term(self, type_, party_id, company_id):
+    def __get_account_payment_term(self):
         '''
         Return default account and payment term
         '''
-        pool = Pool()
-        party_obj = pool.get('party.party')
-        company_obj = pool.get('company.company')
-        account_obj = pool.get('account.account')
-        payment_term_obj = pool.get('account.invoice.payment_term')
-
+        account = None
+        payment_term = None
         result = {
             'account': None,
             }
-        if party_id:
-            party = party_obj.browse(party_id)
-            if type_ in ('out_invoice', 'out_credit_note'):
-                result['account'] = party.account_receivable.id
-                if type_ == 'out_invoice' and party.customer_payment_term:
-                    result['payment_term'] = party.customer_payment_term.id
-            elif type_ in ('in_invoice', 'in_credit_note'):
-                result['account'] = party.account_payable.id
-                if type_ == 'in_invoice' and party.supplier_payment_term:
-                    result['payment_term'] = party.supplier_payment_term.id
-        if company_id and type_ in ('out_credit_note', 'in_credit_note'):
-            company = company_obj.browse(company_id)
-            if type_ == 'out_credit_note':
-                result['payment_term'] = company.customer_payment_term.id
+        if self.party:
+            if self.type in ('out_invoice', 'out_credit_note'):
+                account = self.party.account_receivable
+                if (self.type == 'out_invoice'
+                        and self.party.customer_payment_term):
+                    payment_term = self.party.customer_payment_term
+            elif self.type in ('in_invoice', 'in_credit_note'):
+                account = self.party.account_payable
+                if (self.type == 'in_invoice'
+                        and self.party.supplier_payment_term):
+                    payment_term = self.party.supplier_payment_term
+        if self.company and self.type in ('out_credit_note', 'in_credit_note'):
+            if self.type == 'out_credit_note':
+                payment_term = self.company.customer_payment_term
             else:
-                result['payment_term'] = company.supplier_payment_term.id
-        if result['account']:
-            result['account.rec_name'] = account_obj.browse(
-                    result['account']).rec_name
-        if result.get('payment_term'):
-            result['payment_term.rec_name'] = payment_term_obj.browse(
-                    result['payment_term']).rec_name
+                payment_term = self.company.supplier_payment_term
+        if account:
+            result['account'] = account.id
+            result['account.rec_name'] = account.rec_name
+        if payment_term:
+            result['payment_term'] = payment_term.id
+            result['payment_term.rec_name'] = payment_term.rec_name
         return result
 
-    def on_change_type(self, vals):
-        journal_obj = Pool().get('account.journal')
+    def on_change_type(self):
+        Journal = Pool().get('account.journal')
         res = {}
-        journal_ids = journal_obj.search([
-            ('type', '=', _TYPE2JOURNAL.get(vals.get('type', 'out_invoice'),
-                'revenue')),
-            ], limit=1)
-        if journal_ids:
-            journal = journal_obj.browse(journal_ids[0])
+        journals = Journal.search([
+                ('type', '=', _TYPE2JOURNAL.get(self.type or 'out_invoice',
+                        'revenue')),
+                ], limit=1)
+        if journals:
+            journal, = journals
             res['journal'] = journal.id
             res['journal.rec_name'] = journal.rec_name
-        res.update(self.__get_account_payment_term(vals.get('type'),
-                vals.get('party'), vals.get('company')))
+        res.update(self.__get_account_payment_term())
         return res
 
-    def on_change_party(self, vals):
-        pool = Pool()
-        party_obj = pool.get('party.party')
-        address_obj = pool.get('party.address')
+    def on_change_party(self):
         res = {
             'invoice_address': None,
-        }
-        res.update(self.__get_account_payment_term(vals.get('type'),
-                vals.get('party'), vals.get('company')))
-
-        if vals.get('party'):
-            party = party_obj.browse(vals['party'])
-            res['invoice_address'] = party_obj.address_get(party.id,
-                    type='invoice')
-        if res['invoice_address']:
-            res['invoice_address.rec_name'] = address_obj.browse(
-                    res['invoice_address']).rec_name
-        return res
-
-    def on_change_with_currency_digits(self, vals):
-        currency_obj = Pool().get('currency.currency')
-        if vals.get('currency'):
-            currency = currency_obj.browse(vals['currency'])
-            return currency.digits
-        return 2
+            }
+        res.update(self.__get_account_payment_term())
 
-    def get_currency_digits(self, ids, name):
-        res = {}
-        for invoice in self.browse(ids):
-            res[invoice.id] = invoice.currency.digits
+        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
         return res
 
-    def on_change_with_currency_date(self, vals):
-        date_obj = Pool().get('ir.date')
-        today = date_obj.today()
-        date = vals.get('invoice_date') or today
-        return date
+    def on_change_with_currency_digits(self, name=None):
+        if self.currency:
+            return self.currency.digits
+        return 2
 
-    def get_currency_date(self, ids, name):
-        date_obj = Pool().get('ir.date')
-        res = {}
-        today = date_obj.today()
-        for invoice in self.browse(ids):
-            res[invoice.id] = invoice.invoice_date or today
-        return res
+    def on_change_with_currency_date(self, name=None):
+        Date = Pool().get('ir.date')
+        return self.invoice_date or Date.today()
 
-    def on_change_with_party_lang(self, vals):
-        party_obj = Pool().get('party.party')
-        if vals.get('party'):
-            party = party_obj.browse(vals['party'])
-            if party.lang:
-                return party.lang.code
+    def on_change_with_party_lang(self, name=None):
+        if self.party:
+            if self.party.lang:
+                return self.party.lang.code
         return CONFIG['language']
 
-    def get_party_language(self, ids, name):
-        '''
-        Return the language code of the party of each invoice
-
-        :param ids: the ids of the invoices
-        :param name: the field name
-        :return: a dictionary with invoice id as key and
-            language code as value
-        '''
-        res = {}
-        for invoice in self.browse(ids):
-            if invoice.party.lang:
-                res[invoice.id] = invoice.party.lang.code
-            else:
-                res[invoice.id] = CONFIG['language']
-        return res
-
-    def get_type_name(self, ids, name):
-        res = {}
+    @classmethod
+    def get_type_name(self, invoices, name):
+        type_names = {}
         type2name = {}
         for type, name in self.fields_get(fields_names=['type']
                 )['type']['selection']:
             type2name[type] = name
-        for invoice in self.browse(ids):
-            res[invoice.id] = type2name[invoice.type]
-        return res
+        for invoice in invoices:
+            type_names[invoice.id] = type2name[invoice.type]
+        return type_names
 
-    def on_change_lines(self, vals):
-        return self._on_change_lines_taxes(vals)
+    def on_change_lines(self):
+        return self._on_change_lines_taxes()
 
-    def on_change_taxes(self, vals):
-        return self._on_change_lines_taxes(vals)
+    def on_change_taxes(self):
+        return self._on_change_lines_taxes()
 
-    def _on_change_lines_taxes(self, vals):
-        currency_obj = Pool().get('currency.currency')
-        tax_obj = Pool().get('account.tax')
+    def _on_change_lines_taxes(self):
+        pool = Pool()
+        Tax = pool.get('account.tax')
         res = {
             'untaxed_amount': Decimal('0.0'),
             'tax_amount': Decimal('0.0'),
             'total_amount': Decimal('0.0'),
             'taxes': {},
-        }
-        currency = None
-        if vals.get('currency'):
-            currency = currency_obj.browse(vals['currency'])
+            }
         computed_taxes = {}
-        if vals.get('lines'):
-            context = self.get_tax_context(vals)
-            for line in vals['lines']:
-                if line.get('type', 'line') != 'line':
+        if self.lines:
+            context = self.get_tax_context()
+            for line in self.lines:
+                if (line.type or 'line') != 'line':
                     continue
-                res['untaxed_amount'] += line.get('amount') or 0
+                res['untaxed_amount'] += line.amount or 0
                 with Transaction().set_context(**context):
-                    taxes = tax_obj.compute(line.get('taxes', []),
-                            line.get('unit_price') or Decimal('0.0'),
-                            line.get('quantity', 0.0))
+                    taxes = Tax.compute(line.taxes,
+                        line.unit_price or Decimal('0.0'),
+                        line.quantity or 0.0)
                 for tax in taxes:
                     key, val = self._compute_tax(tax,
-                            vals.get('type', 'out_invoice'))
+                        self.type or 'out_invoice')
                     if not key in computed_taxes:
                         computed_taxes[key] = val
                     else:
                         computed_taxes[key]['base'] += val['base']
                         computed_taxes[key]['amount'] += val['amount']
-        if currency:
+        if self.currency:
             for key in computed_taxes:
                 for field in ('base', 'amount'):
-                    computed_taxes[key][field] = currency_obj.round(currency,
-                            computed_taxes[key][field])
+                    computed_taxes[key][field] = self.currency.round(
+                        computed_taxes[key][field])
         tax_keys = []
-        for tax in vals.get('taxes', []):
-            if tax.get('manual', False):
-                res['tax_amount'] += tax.get('amount') or Decimal('0.0')
+        for tax in (self.taxes or []):
+            if tax.manual:
+                res['tax_amount'] += tax.amount or Decimal('0.0')
                 continue
-            key = (tax.get('base_code'), tax.get('base_sign'),
-                    tax.get('tax_code'), tax.get('tax_sign'),
-                    tax.get('account'), tax.get('tax'))
+            key = (tax.base_code, tax.base_sign,
+                tax.tax_code, tax.tax_sign,
+                tax.account, tax.tax)
             if (key not in computed_taxes) or (key in tax_keys):
                 res['taxes'].setdefault('remove', [])
-                res['taxes']['remove'].append(tax.get('id'))
+                res['taxes']['remove'].append(tax.id)
                 continue
             tax_keys.append(key)
-            if currency:
-                if not currency_obj.is_zero(currency,
+            if self.currency:
+                if not self.currency.is_zero(
                         computed_taxes[key]['base'] - \
-                                (tax.get('base') or Decimal('0.0'))):
+                            (tax.base or Decimal('0.0'))):
                     res['tax_amount'] += computed_taxes[key]['amount']
                     res['taxes'].setdefault('update', [])
                     res['taxes']['update'].append({
-                        'id': tax.get('id'),
-                        'amount': computed_taxes[key]['amount'],
-                        'base': computed_taxes[key]['base'],
-                        })
+                            'id': tax.id,
+                            'amount': computed_taxes[key]['amount'],
+                            'base': computed_taxes[key]['base'],
+                            })
                 else:
-                    res['tax_amount'] += tax.get('amount') or Decimal('0.0')
+                    res['tax_amount'] += tax.amount or Decimal('0.0')
             else:
-                if computed_taxes[key]['base'] - \
-                        (tax.get('base') or Decimal('0.0')) != Decimal('0.0'):
+                if (computed_taxes[key]['base'] - (tax.base or Decimal('0.0'))
+                        != Decimal('0.0')):
                     res['tax_amount'] += computed_taxes[key]['amount']
                     res['taxes'].setdefault('update', [])
                     res['taxes']['update'].append({
-                        'id': tax.get('id'),
+                        'id': tax.id,
                         'amount': computed_taxes[key]['amount'],
                         'base': computed_taxes[key]['base'],
                         })
                 else:
-                    res['tax_amount'] += tax.get('amount') or Decimal('0.0')
+                    res['tax_amount'] += tax.amount or Decimal('0.0')
         for key in computed_taxes:
             if key not in tax_keys:
                 res['tax_amount'] += computed_taxes[key]['amount']
                 res['taxes'].setdefault('add', [])
-                value = tax_obj.default_get(tax_obj._columns.keys())
+                value = Tax.default_get(Tax._fields.keys())
                 value.update(computed_taxes[key])
                 res['taxes']['add'].append(value)
-        if currency:
-            res['untaxed_amount'] = currency_obj.round(currency,
-                    res['untaxed_amount'])
-            res['tax_amount'] = currency_obj.round(currency, res['tax_amount'])
+        if self.currency:
+            res['untaxed_amount'] = self.currency.round(res['untaxed_amount'])
+            res['tax_amount'] = self.currency.round(res['tax_amount'])
         res['total_amount'] = res['untaxed_amount'] + res['tax_amount']
-        if currency:
-            res['total_amount'] = currency_obj.round(currency,
-                    res['total_amount'])
+        if self.currency:
+            res['total_amount'] = self.currency.round(res['total_amount'])
         return res
 
-    def get_untaxed_amount(self, ids, name):
-        currency_obj = Pool().get('currency.currency')
-        res = {}
-        for invoice in self.browse(ids):
-            res.setdefault(invoice.id, _ZERO)
-            for line in invoice.lines:
-                if line.type != 'line':
-                    continue
-                res[invoice.id] += line.amount
-            res[invoice.id] = currency_obj.round(invoice.currency,
-                    res[invoice.id])
-        return res
+    def get_untaxed_amount(self, name):
+        amount = _ZERO
+        for line in self.lines:
+            if line.type != 'line':
+                continue
+            amount += line.amount
+        return self.currency.round(amount)
 
-    def get_tax_amount(self, ids, name):
-        currency_obj = Pool().get('currency.currency')
+    @classmethod
+    def get_tax_amount(cls, invoices, name):
         cursor = Transaction().cursor
         res = {}
-        type_name = FIELDS[self.tax_amount._type].sql_type(self.tax_amount)[0]
-        red_sql, red_ids = reduce_ids('invoice', ids)
+        type_name = FIELDS[cls.tax_amount._type].sql_type(cls.tax_amount)[0]
+        red_sql, red_ids = reduce_ids('invoice', [i.id for i in invoices])
         cursor.execute('SELECT invoice, ' \
                     'CAST(COALESCE(SUM(amount), 0) AS ' + type_name + ') ' \
                 'FROM account_invoice_tax ' \
@@ -528,66 +489,56 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 sum = Decimal(str(sum))
             res[invoice_id] = sum
 
-        for invoice in self.browse(ids):
+        for invoice in invoices:
             res.setdefault(invoice.id, Decimal('0.0'))
-            res[invoice.id] = currency_obj.round(invoice.currency,
-                    res[invoice.id])
-        return res
-
-    def get_total_amount(self, ids, name):
-        currency_obj = Pool().get('currency.currency')
-        res = {}
-        for invoice in self.browse(ids):
-            res[invoice.id] = currency_obj.round(invoice.currency,
-                    invoice.untaxed_amount + invoice.tax_amount)
+            res[invoice.id] = invoice.currency.round(res[invoice.id])
         return res
 
-    def get_reconciled(self, ids, name):
-        res = {}
-        for invoice in self.browse(ids):
-            res[invoice.id] = True
-            if not invoice.lines_to_pay:
-                res[invoice.id] = False
-                continue
-            for line in invoice.lines_to_pay:
-                if not line.reconciliation:
-                    res[invoice.id] = False
-                    break
-        return res
+    def get_total_amount(self, name):
+        return self.currency.round(self.untaxed_amount + self.tax_amount)
 
-    def get_lines_to_pay(self, ids, name):
-        res = {}
-        for invoice in self.browse(ids):
-            lines = []
-            if invoice.move:
-                for line in invoice.move.lines:
-                    if line.account.id == invoice.account.id \
-                            and line.maturity_date:
-                        lines.append(line)
-            lines.sort(key=operator.attrgetter('maturity_date'))
-            res[invoice.id] = [x.id for x in lines]
-        return res
+    def get_reconciled(self, name):
+        if not self.lines_to_pay:
+            return False
+        for line in self.lines_to_pay:
+            if not line.reconciliation:
+                return False
+        return True
 
-    def get_amount_to_pay(self, ids, name):
-        currency_obj = Pool().get('currency.currency')
-        date_obj = Pool().get('ir.date')
+    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_amount_to_pay(cls, invoices, name):
+        pool = Pool()
+        Currency = pool.get('currency.currency')
+        Date = pool.get('ir.date')
 
-        compute_ids = self.search([
-            ('id', 'in', ids),
-            ('state', '=', 'open'),
-            ])
+        computes = cls.search([
+                ('id', 'in', [i.id for i in invoices]),
+                ('state', '=', 'open'),
+                ])
 
-        res = dict((x, _ZERO) for x in ids)
-        for invoice in self.browse(compute_ids):
+        today = Date.today()
+        res = dict((x.id, _ZERO) for x in invoices)
+        for invoice in computes:
             amount = _ZERO
             amount_currency = _ZERO
             for line in invoice.lines_to_pay:
                 if line.reconciliation:
                     continue
-                if name == 'amount_to_pay_today' \
-                        and line.maturity_date > date_obj.today():
+                if (name == 'amount_to_pay_today'
+                        and line.maturity_date > today):
                     continue
-                if line.second_currency.id == invoice.currency.id:
+                if (line.second_currency
+                        and line.second_currency == invoice.currency):
                     if line.debit - line.credit > _ZERO:
                         amount_currency += abs(line.amount_second_currency)
                     else:
@@ -597,7 +548,8 @@ class Invoice(Workflow, ModelSQL, ModelView):
             for line in invoice.payment_lines:
                 if line.reconciliation:
                     continue
-                if line.second_currency.id == invoice.currency.id:
+                if (line.second_currency
+                        and line.second_currency == invoice.currency):
                     if line.debit - line.credit > _ZERO:
                         amount_currency += abs(line.amount_second_currency)
                     else:
@@ -609,40 +561,41 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 amount_currency = - amount_currency
             if amount != _ZERO:
                 with Transaction().set_context(date=invoice.currency_date):
-                    amount_currency += currency_obj.compute(
-                    invoice.company.currency.id, amount, invoice.currency.id)
+                    amount_currency += Currency.compute(
+                        invoice.company.currency, amount, invoice.currency)
             if amount_currency < _ZERO:
                 amount_currency = _ZERO
             res[invoice.id] = amount_currency
         return res
 
-    def search_total_amount(self, name, clause):
+    @classmethod
+    def search_total_amount(cls, name, clause):
         pool = Pool()
-        rule_obj = pool.get('ir.rule')
-        line_obj = pool.get('account.invoice.line')
-        tax_obj = pool.get('account.invoice.tax')
-        type_name = FIELDS[self.total_amount._type].sql_type(
-                self.total_amount)[0]
+        Rule = pool.get('ir.rule')
+        Line = pool.get('account.invoice.line')
+        Tax = pool.get('account.invoice.tax')
+        type_name = FIELDS[cls.total_amount._type].sql_type(
+            cls.total_amount)[0]
         cursor = Transaction().cursor
 
-        invoice_query, invoice_val = rule_obj.domain_get('account.invoice')
+        invoice_query, invoice_val = Rule.domain_get('account.invoice')
 
         cursor.execute('SELECT invoice FROM ('
                     'SELECT invoice, '
                         'COALESCE(SUM(quantity * unit_price), 0) '
                             'AS total_amount '
-                    'FROM "' + line_obj._table + '" '
-                    'JOIN "' + self._table + '" ON '
-                        '("' + self._table + '".id = '
-                            '"' + line_obj._table + '".invoice) '
+                    'FROM "' + Line._table + '" '
+                    'JOIN "' + cls._table + '" ON '
+                        '("' + cls._table + '".id = '
+                            '"' + Line._table + '".invoice) '
                     'WHERE ' + invoice_query + ' '
                     'GROUP BY invoice '
                 'UNION '
                     'SELECT invoice, COALESCE(SUM(amount), 0) AS total_amount '
-                    'FROM "' + tax_obj._table + '" '
-                    'JOIN "' + self._table + '" ON '
-                        '("' + self._table + '".id = '
-                            '"' + tax_obj._table + '".invoice) '
+                    'FROM "' + Tax._table + '" '
+                    'JOIN "' + cls._table + '" ON '
+                        '("' + cls._table + '".id = '
+                            '"' + Tax._table + '".invoice) '
                     'WHERE ' + invoice_query + ' '
                     'GROUP BY invoice  '
                 ') AS u '
@@ -652,20 +605,21 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 invoice_val + invoice_val + [str(clause[2])])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
-    def search_untaxed_amount(self, name, clause):
+    @classmethod
+    def search_untaxed_amount(cls, name, clause):
         pool = Pool()
-        rule_obj = pool.get('ir.rule')
-        line_obj = pool.get('account.invoice.line')
-        type_name = FIELDS[self.untaxed_amount._type].sql_type(
-                self.untaxed_amount)[0]
+        Rule = pool.get('ir.rule')
+        Line = pool.get('account.invoice.line')
+        type_name = FIELDS[cls.untaxed_amount._type].sql_type(
+                cls.untaxed_amount)[0]
         cursor = Transaction().cursor
 
-        invoice_query, invoice_val = rule_obj.domain_get('account.invoice')
+        invoice_query, invoice_val = Rule.domain_get('account.invoice')
 
-        cursor.execute('SELECT invoice FROM "' + line_obj._table + '" '
-                'JOIN "' + self._table + '" ON '
-                    '("' + self._table + '".id = '
-                        '"' + line_obj._table + '".invoice) '
+        cursor.execute('SELECT invoice FROM "' + Line._table + '" '
+                'JOIN "' + cls._table + '" ON '
+                    '("' + cls._table + '".id = '
+                        '"' + Line._table + '".invoice) '
                 'WHERE ' + invoice_query + ' '
                 'GROUP BY invoice '
                 'HAVING (CAST(COALESCE(SUM(quantity * unit_price), 0) '
@@ -673,20 +627,21 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 invoice_val + [str(clause[2])])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
-    def search_tax_amount(self, name, clause):
+    @classmethod
+    def search_tax_amount(cls, name, clause):
         pool = Pool()
-        rule_obj = pool.get('ir.rule')
-        tax_obj = pool.get('account.invoice.tax')
-        type_name = FIELDS[self.tax_amount._type].sql_type(
-                self.tax_amount)[0]
+        Rule = pool.get('ir.rule')
+        Tax = pool.get('account.invoice.tax')
+        type_name = FIELDS[cls.tax_amount._type].sql_type(
+                cls.tax_amount)[0]
         cursor = Transaction().cursor
 
-        invoice_query, invoice_val = rule_obj.domain_get('account.invoice')
+        invoice_query, invoice_val = Rule.domain_get('account.invoice')
 
-        cursor.execute('SELECT invoice FROM "' + tax_obj._table + '" '
-                'JOIN "' + self._table + '" ON '
-                    '("' + self._table + '".id = '
-                        '"' + tax_obj._table + '".invoice) '
+        cursor.execute('SELECT invoice FROM "' + Tax._table + '" '
+                'JOIN "' + cls._table + '" ON '
+                    '("' + cls._table + '".id = '
+                        '"' + Tax._table + '".invoice) '
                 'WHERE ' + invoice_query + ' '
                 'GROUP BY invoice '
                 'HAVING (CAST(COALESCE(SUM(amount), 0) '
@@ -694,62 +649,61 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 invoice_val + [str(clause[2])])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
-    def get_tax_context(self, invoice):
-        party_obj = Pool().get('party.party')
-        res = {}
-        if isinstance(invoice, dict):
-            if invoice.get('party'):
-                party = party_obj.browse(invoice['party'])
-                if party.lang:
-                    res['language'] = party.lang.code
-        else:
-            if invoice.party.lang:
-                res['language'] = invoice.party.lang.code
-        return res
+    def get_tax_context(self):
+        context = {}
+        if self.party and self.party.lang:
+            context['language'] = self.party.lang.code
+        return context
 
-    def _compute_tax(self, tax, invoice_type):
+    @staticmethod
+    def _compute_tax(invoice_tax, invoice_type):
         val = {}
+        tax = invoice_tax['tax']
         val['manual'] = False
-        val['description'] = tax['tax'].description
-        val['base'] = tax['base']
-        val['amount'] = tax['amount']
-        val['tax'] = tax['tax'].id
+        val['description'] = tax.description
+        val['base'] = invoice_tax['base']
+        val['amount'] = invoice_tax['amount']
+        val['tax'] = tax.id if tax else None
 
         if invoice_type in ('out_invoice', 'in_invoice'):
-            val['base_code'] = tax['tax'].invoice_base_code.id
-            val['base_sign'] = tax['tax'].invoice_base_sign
-            val['tax_code'] = tax['tax'].invoice_tax_code.id
-            val['tax_sign'] = tax['tax'].invoice_tax_sign
-            val['account'] = tax['tax'].invoice_account.id
+            val['base_code'] = (tax.invoice_base_code.id
+                if tax.invoice_base_code else None)
+            val['base_sign'] = tax.invoice_base_sign
+            val['tax_code'] = (tax.invoice_tax_code.id
+                if tax.invoice_tax_code else None)
+            val['tax_sign'] = tax.invoice_tax_sign
+            val['account'] = (tax.invoice_account.id
+                if tax.invoice_account else None)
         else:
-            val['base_code'] = tax['tax'].credit_note_base_code.id
-            val['base_sign'] = tax['tax'].credit_note_base_sign
-            val['tax_code'] = tax['tax'].credit_note_tax_code.id
-            val['tax_sign'] = tax['tax'].credit_note_tax_sign
-            val['account'] = tax['tax'].credit_note_account.id
+            val['base_code'] = (tax.credit_note_base_code.id
+                if tax.credit_note_base_code else None)
+            val['base_sign'] = tax.credit_note_base_sign
+            val['tax_code'] = (tax.credit_note_tax_code.id
+                if tax.credit_note_tax_code else None)
+            val['tax_sign'] = tax.credit_note_tax_sign
+            val['account'] = (tax.credit_note_account.id
+                if tax.credit_note_account else None)
         key = (val['base_code'], val['base_sign'],
                 val['tax_code'], val['tax_sign'],
                 val['account'], val['tax'])
         return key, val
 
-    def _compute_taxes(self, invoice):
-        tax_obj = Pool().get('account.tax')
-        currency_obj = Pool().get('currency.currency')
+    def _compute_taxes(self):
+        Tax = Pool().get('account.tax')
 
-        context = self.get_tax_context(invoice)
+        context = self.get_tax_context()
 
         res = {}
-        for line in invoice.lines:
+        for line in self.lines:
             # Don't round on each line to handle rounding error
             if line.type != 'line':
                 continue
-            tax_ids = [x.id for x in line.taxes]
             with Transaction().set_context(**context):
-                taxes = tax_obj.compute(tax_ids, line.unit_price,
+                taxes = Tax.compute(line.taxes, line.unit_price,
                         line.quantity)
             for tax in taxes:
-                key, val = self._compute_tax(tax, invoice.type)
-                val['invoice'] = invoice.id
+                key, val = self._compute_tax(tax, self.type)
+                val['invoice'] = self.id
                 if not key in res:
                     res[key] = val
                 else:
@@ -757,82 +711,81 @@ class Invoice(Workflow, ModelSQL, ModelView):
                     res[key]['amount'] += val['amount']
         for key in res:
             for field in ('base', 'amount'):
-                res[key][field] = currency_obj.round(invoice.currency,
-                        res[key][field])
+                res[key][field] = self.currency.round(res[key][field])
         return res
 
-    def update_taxes(self, ids, exception=False):
-        tax_obj = Pool().get('account.invoice.tax')
-        currency_obj = Pool().get('currency.currency')
-        for invoice in self.browse(ids):
+    @classmethod
+    def update_taxes(cls, invoices, exception=False):
+        Tax = Pool().get('account.invoice.tax')
+        for invoice in invoices:
             if invoice.state in ('open', 'paid', 'cancel'):
                 continue
-            computed_taxes = self._compute_taxes(invoice)
+            computed_taxes = invoice._compute_taxes()
             if not invoice.taxes:
                 for tax in computed_taxes.values():
-                    tax_obj.create(tax)
+                    Tax.create(tax)
             else:
                 tax_keys = []
                 for tax in invoice.taxes:
                     if tax.manual:
                         continue
-                    key = (tax.base_code.id, tax.base_sign,
-                            tax.tax_code.id, tax.tax_sign,
-                            tax.account.id, tax.tax.id)
+                    base_code_id = tax.base_code.id if tax.base_code else None
+                    tax_code_id = tax.tax_code.id if tax.tax_code else None
+                    tax_id = tax.tax.id if tax.tax else None
+                    key = (base_code_id, tax.base_sign,
+                            tax_code_id, tax.tax_sign,
+                            tax.account.id, tax_id)
                     if (not key in computed_taxes) or (key in tax_keys):
                         if exception:
-                            self.raise_user_error('missing_tax_line')
-                        tax_obj.delete(tax.id)
+                            cls.raise_user_error('missing_tax_line')
+                        Tax.delete([tax])
                         continue
                     tax_keys.append(key)
-                    if not currency_obj.is_zero(invoice.currency,
+                    if not invoice.currency.is_zero(
                             computed_taxes[key]['base'] - tax.base):
                         if exception:
-                            self.raise_user_error('diff_tax_line')
-                        tax_obj.write(tax.id, computed_taxes[key])
+                            cls.raise_user_error('diff_tax_line')
+                        Tax.write([tax], computed_taxes[key])
                 for key in computed_taxes:
                     if not key in tax_keys:
                         if exception:
-                            self.raise_user_error('missing_tax_line')
-                        tax_obj.create(computed_taxes[key])
-        return True
+                            cls.raise_user_error('missing_tax_line')
+                        Tax.create(computed_taxes[key])
 
-    def _get_move_line_invoice_line(self, invoice):
+    def _get_move_line_invoice_line(self):
         '''
         Return list of move line values for each invoice lines
         '''
-        line_obj = Pool().get('account.invoice.line')
         res = []
-        for line in invoice.lines:
-            val = line_obj.get_move_line(line)
+        for line in self.lines:
+            val = line.get_move_line()
             if val:
                 res.extend(val)
         return res
 
-    def _get_move_line_invoice_tax(self, invoice):
+    def _get_move_line_invoice_tax(self):
         '''
         Return list of move line values for each invoice taxes
         '''
-        tax_obj = Pool().get('account.invoice.tax')
         res = []
-        for tax in invoice.taxes:
-            val = tax_obj.get_move_line(tax)
+        for tax in self.taxes:
+            val = tax.get_move_line()
             if val:
                 res.extend(val)
         return res
 
-    def _get_move_line(self, invoice, date, amount):
+    def _get_move_line(self, date, amount):
         '''
         Return move line
         '''
-        currency_obj = Pool().get('currency.currency')
+        Currency = Pool().get('currency.currency')
         res = {}
-        if invoice.currency.id != invoice.company.currency.id:
-            with Transaction().set_context(date=invoice.currency_date):
-                res['amount_second_currency'] = currency_obj.compute(
-                    invoice.company.currency.id, amount, invoice.currency.id)
+        if self.currency.id != self.company.currency.id:
+            with Transaction().set_context(date=self.currency_date):
+                res['amount_second_currency'] = Currency.compute(
+                    self.company.currency.id, amount, self.currency.id)
             res['amount_second_currency'] = abs(res['amount_second_currency'])
-            res['second_currency'] = invoice.currency.id
+            res['second_currency'] = self.currency.id
         else:
             res['amount_second_currency'] = Decimal('0.0')
             res['second_currency'] = None
@@ -842,28 +795,26 @@ class Invoice(Workflow, ModelSQL, ModelView):
         else:
             res['debit'] = - amount
             res['credit'] = Decimal('0.0')
-        res['account'] = invoice.account.id
+        res['account'] = self.account.id
         res['maturity_date'] = date
-        res['reference'] = invoice.reference
-        res['name'] = invoice.number
-        res['party'] = invoice.party.id
+        res['description'] = self.description
+        res['party'] = self.party.id
         return res
 
-    def create_move(self, invoice):
+    def create_move(self):
         '''
-        Create account move for the invoice and return the created move id
+        Create account move for the invoice and return the created move
         '''
         pool = Pool()
-        payment_term_obj = pool.get('account.invoice.payment_term')
-        currency_obj = pool.get('currency.currency')
-        move_obj = pool.get('account.move')
-        period_obj = pool.get('account.period')
+        Move = pool.get('account.move')
+        Period = pool.get('account.period')
+        Date = pool.get('ir.date')
 
-        if invoice.move:
+        if self.move:
             return True
-        self.update_taxes([invoice.id], exception=True)
-        move_lines = self._get_move_line_invoice_line(invoice)
-        move_lines += self._get_move_line_invoice_tax(invoice)
+        self.update_taxes([self], exception=True)
+        move_lines = self._get_move_line_invoice_line()
+        move_lines += self._get_move_line_invoice_tax()
 
         total = Decimal('0.0')
         total_currency = Decimal('0.0')
@@ -871,128 +822,117 @@ class Invoice(Workflow, ModelSQL, ModelView):
             total += line['debit'] - line['credit']
             total_currency += line['amount_second_currency']
 
-        term_lines = payment_term_obj.compute(total, invoice.company.currency,
-                invoice.payment_term, invoice.invoice_date)
+        term_lines = self.payment_term.compute(total, self.company.currency,
+            self.invoice_date)
         remainder_total_currency = total_currency
+        if not term_lines:
+            term_lines = [(Date.today(), total)]
         for date, amount in term_lines:
-            val = self._get_move_line(invoice, date, amount)
+            val = self._get_move_line(date, amount)
             remainder_total_currency -= val['amount_second_currency']
             move_lines.append(val)
-        if not currency_obj.is_zero(invoice.currency,
-                remainder_total_currency):
+        if not self.currency.is_zero(remainder_total_currency):
             move_lines[-1]['amount_second_currency'] += \
                 remainder_total_currency
 
-        accounting_date = invoice.accounting_date or invoice.invoice_date
-        period_id = period_obj.find(invoice.company.id, date=accounting_date)
+        accounting_date = self.accounting_date or self.invoice_date
+        period_id = Period.find(self.company.id, date=accounting_date)
 
-        move_id = move_obj.create({
-            'journal': invoice.journal.id,
+        move = Move.create({
+            'journal': self.journal.id,
             'period': period_id,
             'date': accounting_date,
+            'origin': str(self),
             'lines': [('create', x) for x in move_lines],
             })
-        self.write(invoice.id, {
-            'move': move_id,
-            })
-        move_obj.post(move_id)
-        return move_id
+        self.write([self], {
+                'move': move.id,
+                })
+        Move.post([move])
+        return move
 
-    def set_number(self, invoice):
+    def set_number(self):
         '''
         Set number to the invoice
         '''
         pool = Pool()
-        period_obj = pool.get('account.period')
-        sequence_obj = pool.get('ir.sequence.strict')
-        date_obj = pool.get('ir.date')
+        Period = pool.get('account.period')
+        Sequence = pool.get('ir.sequence.strict')
+        Date = pool.get('ir.date')
 
-        if invoice.number:
+        if self.number:
             return
 
         test_state = True
-        if invoice.type in ('in_invoice', 'in_credit_note'):
+        if self.type in ('in_invoice', 'in_credit_note'):
             test_state = False
 
-        period_id = period_obj.find(invoice.company.id,
-                date=invoice.invoice_date, test_state=test_state)
-        period = period_obj.browse(period_id)
-        sequence_id = period[invoice.type + '_sequence'].id
+        period_id = Period.find(self.company.id,
+            date=self.invoice_date, test_state=test_state)
+        period = Period(period_id)
+        sequence_id = getattr(period, self.type + '_sequence').id
         if not sequence_id:
             self.raise_user_error('no_invoice_sequence')
         with Transaction().set_context(
-                date=invoice.invoice_date or date_obj.today()):
-            number = sequence_obj.get_id(sequence_id)
+                date=self.invoice_date or Date.today()):
+            number = Sequence.get_id(sequence_id)
             vals = {'number': number}
-            if not invoice.invoice_date:
+            if not self.invoice_date:
                 vals['invoice_date'] = Transaction().context['date']
-        self.write(invoice.id, vals)
+        self.write([self], vals)
 
-    def check_modify(self, ids):
+    @classmethod
+    def check_modify(cls, invoices):
         '''
         Check if the invoices can be modified
         '''
-        for invoice in self.browse(ids):
+        for invoice in invoices:
             if invoice.state in ('open', 'paid'):
-                self.raise_user_error('modify_invoice')
-        return
-
-    def get_rec_name(self, ids, name):
-        if not ids:
-            return {}
-        res = {}
-        for invoice in self.browse(ids):
-            res[invoice.id] = invoice.number or unicode(invoice.id) + \
-                    (invoice.reference and (' ' + invoice.reference) or '') + \
-                    ' ' + invoice.party.rec_name
-        return res
-
-    def search_rec_name(self, name, clause):
-        ids = self.search(['OR',
-            ('number',) + clause[1:],
-            ('reference',) + clause[1:],
-            ], order=[])
-        if ids:
-            return [('id', 'in', ids)]
+                cls.raise_user_error('modify_invoice')
+
+    def get_rec_name(self, name):
+        return (self.number or unicode(self.id)
+            + (self.reference and (' ' + self.reference) or '')
+            + ' ' + self.party.rec_name)
+
+    @classmethod
+    def search_rec_name(cls, name, clause):
+        invoices = cls.search(['OR',
+                ('number',) + clause[1:],
+                ('reference',) + clause[1:],
+                ], order=[])
+        if invoices:
+            return [('id', 'in', [i.id for i in invoices])]
         return [('party',) + clause[1:]]
 
-    def delete(self, ids):
-        if not ids:
-            return True
-        if isinstance(ids, (int, long)):
-            ids = [ids]
-        self.check_modify(ids)
+    @classmethod
+    def delete(cls, invoices):
+        cls.check_modify(invoices)
         # Cancel before delete
-        self.cancel(ids)
-        for invoice in self.browse(ids):
+        cls.cancel(invoices)
+        for invoice in invoices:
             if invoice.state != 'cancel':
-                self.raise_user_error('delete_cancel', invoice.rec_name)
-        return super(Invoice, self).delete(ids)
+                cls.raise_user_error('delete_cancel', invoice.rec_name)
+        super(Invoice, cls).delete(invoices)
 
-    def write(self, ids, vals):
-        if isinstance(ids, (int, long)):
-            ids = [ids]
+    @classmethod
+    def write(cls, invoices, vals):
         keys = vals.keys()
-        for key in self._check_modify_exclude:
+        for key in cls._check_modify_exclude:
             if key in keys:
                 keys.remove(key)
         if len(keys):
-            self.check_modify(ids)
-        update_tax_ids = [x.id for x in self.browse(ids) if x.state == 'draft']
-        res = super(Invoice, self).write(ids, vals)
-        if update_tax_ids:
-            self.update_taxes(update_tax_ids)
-        return res
-
-    def copy(self, ids, default=None):
+            cls.check_modify(invoices)
+        update_tax = [i for i in invoices if i.state == 'draft']
+        super(Invoice, cls).write(invoices, vals)
+        if update_tax:
+            cls.update_taxes(update_tax)
+
+    @classmethod
+    def copy(cls, invoices, default=None):
         pool = Pool()
-        line_obj = pool.get('account.invoice.line')
-        tax_obj = pool.get('account.invoice.tax')
-
-        int_id = False
-        if isinstance(ids, (int, long)):
-            int_id = True
-            ids = [ids]
+        Line = pool.get('account.invoice.line')
+        Tax = pool.get('account.invoice.tax')
 
         if default is None:
             default = {}
@@ -1009,322 +949,297 @@ class Invoice(Workflow, ModelSQL, ModelView):
         default.setdefault('accounting_date', None)
         default['lines_to_pay'] = None
 
-        new_ids = []
-        for invoice in self.browse(ids):
-            new_id = super(Invoice, self).copy(invoice.id, default=default)
-            line_obj.copy([x.id for x in invoice.lines], default={
-                'invoice': new_id,
-                })
-            tax_obj.copy([x.id for x in invoice.taxes], default={
-                'invoice': new_id,
-                })
-            new_ids.append(new_id)
+        new_invoices = []
+        for invoice in invoices:
+            new_invoice, = super(Invoice, cls).copy([invoice], default=default)
+            Line.copy(invoice.lines, default={
+                    'invoice': new_invoice.id,
+                    })
+            Tax.copy(invoice.taxes, default={
+                    'invoice': new_invoice.id,
+                    })
+            new_invoices.append(new_invoice)
+        return new_invoices
 
-        if int_id:
-            return new_ids[0]
-        return new_ids
+    def check_account(self):
+        return self.account.company == self.company
 
-    def check_account(self, ids):
-        for invoice in self.browse(ids):
-            if invoice.account.company.id != invoice.company.id:
+    def check_account2(self):
+        for line in self.lines:
+            if (line.type == 'line'
+                    and line.account == self.account):
                 return False
         return True
 
-    def check_account2(self, ids):
-        for invoice in self.browse(ids):
-            for line in invoice.lines:
-                if line.type == 'line' \
-                        and line.account.id == invoice.account.id:
-                    return False
-        return True
-
-    def get_reconcile_lines_for_amount(self, invoice, amount,
-            exclude_ids=None):
+    def get_reconcile_lines_for_amount(self, amount, exclude_lines=None):
         '''
-        Return list of line ids and the remainder to make reconciliation.
+        Return list of lines and the remainder to make reconciliation.
         '''
-        currency_obj = Pool().get('currency.currency')
-
-        if exclude_ids is None:
-            exclude_ids = []
+        if exclude_lines is None:
+            exclude_lines = []
         payment_amount = Decimal('0.0')
-        remainder = invoice.total_amount
+        remainder = self.total_amount
         lines = []
         payment_lines = []
 
-        for line in invoice.payment_lines:
+        for line in self.payment_lines:
             if line.reconciliation:
                 continue
             payment_amount += line.debit - line.credit
-            payment_lines.append(line.id)
+            payment_lines.append(line)
 
-        if invoice.type in ('out_invoice', 'in_credit_note'):
+        if self.type in ('out_invoice', 'in_credit_note'):
             amount = - abs(amount)
         else:
             amount = abs(amount)
 
-        for line in invoice.lines_to_pay:
+        for line in self.lines_to_pay:
 
             if line.reconciliation:
                 continue
-            if line.id in exclude_ids:
+            if line in exclude_lines:
                 continue
 
             test_amount = amount + (line.debit - line.credit)
-            if currency_obj.is_zero(invoice.currency, test_amount):
-                return ([line.id], Decimal('0.0'))
+            if self.currency.is_zero(test_amount):
+                return ([line], Decimal('0.0'))
             if abs(test_amount) < abs(remainder):
-                lines = [line.id]
+                lines = [line]
                 remainder = test_amount
 
             test_amount = (amount + payment_amount)
             test_amount += (line.debit - line.credit)
-            if currency_obj.is_zero(invoice.currency, test_amount):
-                return ([line.id] + payment_lines, Decimal('0.0'))
+            if self.currency.is_zero(test_amount):
+                return ([line] + payment_lines, Decimal('0.0'))
             if abs(test_amount) < abs(remainder):
-                lines = [line.id] + payment_lines
+                lines = [line] + payment_lines
                 remainder = test_amount
 
-            exclude_ids2 = exclude_ids[:]
-            exclude_ids2.append(line.id)
-            res = self.get_reconcile_lines_for_amount(invoice,
-                    (amount + (line.debit - line.credit)),
-                    exclude_ids=exclude_ids2)
-            if res[1] == Decimal('0.0'):
-                res[0].append(line.id)
-                return res
-            if abs(res[1]) < abs(remainder):
-                res[0].append(line.id)
-                lines = res[0]
-                remainder = res[1]
+            exclude_lines2 = exclude_lines[:]
+            exclude_lines2.append(line)
+            lines2, remainder2 = self.get_reconcile_lines_for_amount(
+                (amount + (line.debit - line.credit)),
+                exclude_lines=exclude_lines2)
+            if remainder2 == Decimal('0.0'):
+                lines2.append(line)
+                return lines2, remainder2
+            if abs(remainder2) < abs(remainder):
+                lines2.append(line)
+                lines, remainder = lines2, remainder2
 
         return (lines, remainder)
 
-    def pay_invoice(self, invoice_id, amount, journal_id, date, description,
+    def pay_invoice(self, amount, journal, date, description,
             amount_second_currency=None, second_currency=None):
         '''
-        Add a payment to an invoice
-
-        :param invoice_id: the invoice id
-        :param amount: the amount to pay
-        :param journal_id: the journal id for the move
-        :param date: the date of the move
-        :param description: the description of the move
-        :param amount_second_currency: the amount in the second currenry if one
-        :param second_currency: the id of the second currency
-        :return: the id of the payment line
+        Adds a payment of amount to an invoice using the journal, date and
+        description.
+        Returns the payment line.
         '''
         pool = Pool()
-        journal_obj = pool.get('account.journal')
-        move_obj = pool.get('account.move')
-        period_obj = pool.get('account.period')
+        Move = pool.get('account.move')
+        Period = pool.get('account.period')
 
         lines = []
-        invoice = self.browse(invoice_id)
-        journal = journal_obj.browse(journal_id)
 
-        if invoice.type in ('out_invoice', 'in_credit_note'):
-            lines.append({
-                'name': description,
-                'account': invoice.account.id,
-                'party': invoice.party.id,
-                'debit': Decimal('0.0'),
-                'credit': amount,
-                'amount_second_currency': amount_second_currency,
-                'second_currency': second_currency,
-            })
-            lines.append({
-                'name': description,
-                'account': journal.debit_account.id,
-                'party': invoice.party.id,
-                'debit': amount,
-                'credit': Decimal('0.0'),
-                'amount_second_currency': amount_second_currency,
-                'second_currency': second_currency,
-            })
-            if invoice.account.id == journal.debit_account.id:
+        if self.type in ('out_invoice', 'in_credit_note'):
+            if self.account == journal.debit_account:
                 self.raise_user_error('same_debit_account')
             if not journal.debit_account:
                 self.raise_user_error('missing_debit_account')
-        else:
+
             lines.append({
-                'name': description,
-                'account': invoice.account.id,
-                'party': invoice.party.id,
-                'debit': amount,
-                'credit': Decimal('0.0'),
-                'amount_second_currency': amount_second_currency,
-                'second_currency': second_currency,
-            })
+                    'description': description,
+                    'account': self.account.id,
+                    'party': self.party.id,
+                    'debit': Decimal('0.0'),
+                    'credit': amount,
+                    'amount_second_currency': amount_second_currency,
+                    'second_currency': second_currency,
+                    })
             lines.append({
-                'name': description,
-                'account': journal.credit_account.id,
-                'party': invoice.party.id,
-                'debit': Decimal('0.0'),
-                'credit': amount,
-                'amount_second_currency': amount_second_currency,
-                'second_currency': second_currency,
-            })
-            if invoice.account.id == journal.credit_account.id:
+                    'description': description,
+                    'account': journal.debit_account.id,
+                    'party': self.party.id,
+                    'debit': amount,
+                    'credit': Decimal('0.0'),
+                    'amount_second_currency': amount_second_currency,
+                    'second_currency': second_currency,
+                    })
+        else:
+            if self.account == journal.credit_account:
                 self.raise_user_error('same_credit_account')
             if not journal.credit_account:
                 self.raise_user_error('missing_credit_account')
 
-        period_id = period_obj.find(invoice.company.id, date=date)
+            lines.append({
+                    'description': description,
+                    'account': self.account.id,
+                    'party': self.party.id,
+                    'debit': amount,
+                    'credit': Decimal('0.0'),
+                    'amount_second_currency': amount_second_currency,
+                    'second_currency': second_currency,
+                    })
+            lines.append({
+                    'description': description,
+                    'account': journal.credit_account.id,
+                    'party': self.party.id,
+                    'debit': Decimal('0.0'),
+                    'credit': amount,
+                    'amount_second_currency': amount_second_currency,
+                    'second_currency': second_currency,
+                    })
 
-        move_id = move_obj.create({
-            'journal': journal.id,
-            'period': period_id,
-            'date': date,
-            'lines': [('create', x) for x in lines],
-            })
-        move_obj.post(move_id)
+        period_id = Period.find(self.company.id, date=date)
 
-        move = move_obj.browse(move_id)
+        move = Move.create({
+                'journal': journal.id,
+                'period': period_id,
+                'date': date,
+                'lines': [('create', x) for x in lines],
+                })
+        Move.post([move])
 
         for line in move.lines:
-            if line.account.id == invoice.account.id:
-                self.write(invoice.id, {
-                    'payment_lines': [('add', line.id)],
-                    })
-                return line.id
+            if line.account == self.account:
+                self.write([self], {
+                        'payment_lines': [('add', [line.id])],
+                        })
+                return line
         raise Exception('Missing account')
 
-    def print_invoice(self, invoice):
+    def print_invoice(self):
         '''
         Generate invoice report and store it in invoice_report field.
         '''
-        if invoice.invoice_report_cache:
+        if self.invoice_report_cache:
             return
-        invoice_report = Pool().get('account.invoice', type='report')
-        invoice_report.execute([invoice.id], {})
+        InvoiceReport = Pool().get('account.invoice', type='report')
+        InvoiceReport.execute([self.id], {})
 
-    def _credit(self, invoice):
+    def _credit(self):
         '''
         Return values to credit invoice.
         '''
-        invoice_line_obj = Pool().get('account.invoice.line')
-        invoice_tax_obj = Pool().get('account.invoice.tax')
-
         res = {}
-        if invoice.type == 'out_invoice':
+        if self.type == 'out_invoice':
             res['type'] = 'out_credit_note'
-        elif invoice.type == 'in_invoice':
+        elif self.type == 'in_invoice':
             res['type'] = 'in_credit_note'
-        elif invoice.type == 'out_credit_note':
+        elif self.type == 'out_credit_note':
             res['type'] = 'out_invoice'
-        elif invoice.type == 'in_credit_note':
+        elif self.type == 'in_credit_note':
             res['type'] = 'in_invoice'
 
         for field in ('description', 'comment'):
-            res[field] = invoice[field]
+            res[field] = getattr(self, field)
 
-        res['reference'] = invoice.number or invoice.reference
+        res['reference'] = self.number or self.reference
 
         for field in ('company', 'party', 'invoice_address', 'currency',
                 'journal', 'account', 'payment_term'):
-            res[field] = invoice[field].id
+            res[field] = getattr(self, field).id
 
         res['lines'] = []
-        for line in invoice.lines:
-            value = invoice_line_obj._credit(line)
+        for line in self.lines:
+            value = line._credit()
             res['lines'].append(('create', value))
 
         res['taxes'] = []
-        for tax in invoice.taxes:
+        for tax in self.taxes:
             if not tax.manual:
                 continue
-            value = invoice_tax_obj._credit(tax)
+            value = tax._credit()
             res['taxes'].append(('create', value))
         return res
 
-    def credit(self, ids, refund=False):
+    @classmethod
+    def credit(cls, invoices, refund=False):
         '''
         Credit invoices and return ids of new invoices.
-
-        :param ids: a list of invoice id
-        :param refund: a boolean to specify the refund
-        :return: the list of new invoice id
+        Return the list of new invoice
         '''
-        move_line_obj = Pool().get('account.move.line')
+        MoveLine = Pool().get('account.move.line')
 
-        new_ids = []
-        for invoice in self.browse(ids):
-            vals = self._credit(invoice)
-            new_id = self.create(vals)
-            new_ids.append(new_id)
+        new_invoices = []
+        for invoice in invoices:
+            new_invoice = cls.create(invoice._credit())
+            new_invoices.append(new_invoice)
             if refund:
-                self.open([new_id])
-                new_invoice = self.browse(new_id)
+                cls.open([new_invoice])
                 if new_invoice.state == 'open':
-                    line_ids = [x.id for x in invoice.lines_to_pay
-                            if not x.reconciliation] + \
-                                    [x.id for x in new_invoice.lines_to_pay
-                                            if not x.reconciliation]
-                    move_line_obj.reconcile(line_ids)
-        return new_ids
+                    MoveLine.reconcile([l for l in invoice.lines_to_pay
+                            if not l.reconciliation] +
+                        [l for l in new_invoice.lines_to_pay
+                            if not l.reconciliation])
+        return new_invoices
 
+    @classmethod
     @ModelView.button
     @Workflow.transition('draft')
-    def draft(self, ids):
+    def draft(cls, invoices):
         pass
 
+    @classmethod
     @ModelView.button
     @Workflow.transition('proforma')
-    def proforma(self, ids):
+    def proforma(cls, invoices):
         pass
 
+    @classmethod
     @ModelView.button
     @Workflow.transition('open')
-    def open(self, ids):
-        for invoice in self.browse(ids):
-            self.set_number(invoice)
-            self.create_move(invoice)
-            self.print_invoice(invoice)
+    def open(cls, invoices):
+        for invoice in invoices:
+            invoice.set_number()
+            invoice.create_move()
+            invoice.print_invoice()
+
+    @classmethod
+    @ModelView.button_action('account_invoice.wizard_pay')
+    def pay(cls, invoices):
+        pass
 
-    def process(self, ids):
+    @classmethod
+    def process(cls, invoices):
         paid = []
         open_ = []
-        for invoice in self.browse(ids):
+        for invoice in invoices:
             if invoice.state not in ('open', 'paid'):
                 continue
             if invoice.reconciled:
-                paid.append(invoice.id)
+                paid.append(invoice)
             else:
-                open_.append(invoice.id)
-        self.paid(paid)
-        self.open(open_)
+                open_.append(invoice)
+        cls.paid(paid)
+        cls.open(open_)
 
+    @classmethod
     @Workflow.transition('paid')
-    def paid(self, ids):
+    def paid(cls, invoices):
         pass
 
+    @classmethod
     @ModelView.button
     @Workflow.transition('cancel')
-    def cancel(self, ids):
+    def cancel(cls, invoices):
         pass
 
-Invoice()
-
 
 class InvoicePaymentLine(ModelSQL):
     'Invoice - Payment Line'
-    _name = 'account.invoice-account.move.line'
-    _description = __doc__
+    __name__ = 'account.invoice-account.move.line'
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
             select=True, required=True)
     line = fields.Many2One('account.move.line', 'Payment Line',
             ondelete='CASCADE', select=True, required=True)
 
-InvoicePaymentLine()
-
 
 class InvoiceLine(ModelSQL, ModelView):
     'Invoice Line'
-    _name = 'account.invoice.line'
+    __name__ = 'account.invoice.line'
     _rec_name = 'description'
-    _description = __doc__
-
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
         select=True, states={
             'required': (~Eval('invoice_type') & Eval('party')
@@ -1344,14 +1259,14 @@ class InvoiceLine(ModelSQL, ModelView):
             },
         depends=['invoice'])
     party_lang = fields.Function(fields.Char('Party Language',
-        on_change_with=['party']), 'get_party_language')
+        on_change_with=['party']), 'on_change_with_party_lang')
     currency = fields.Many2One('currency.currency', 'Currency',
         states={
             'required': ~Eval('invoice'),
             },
         depends=['invoice'])
     currency_digits = fields.Function(fields.Integer('Currency Digits',
-        on_change_with=['currency']), 'get_currency_digits')
+        on_change_with=['currency']), 'on_change_with_currency_digits')
     company = fields.Many2One('company.company', 'Company',
         states={
             'required': ~Eval('invoice'),
@@ -1361,7 +1276,9 @@ class InvoiceLine(ModelSQL, ModelView):
             ],
         depends=['invoice'], select=True)
 
-    sequence = fields.Integer('Sequence', required=True,
+    sequence = fields.Integer('Sequence',
+        order_field='(%(table)s.sequence IS NULL) %(order)s, '
+        '%(table)s.sequence %(order)s',
         states={
             'invisible': Bool(Eval('context', {}).get('standalone')),
             })
@@ -1392,7 +1309,7 @@ class InvoiceLine(ModelSQL, ModelView):
             ],
         depends=['product', 'type', 'product_uom_category'])
     unit_digits = fields.Function(fields.Integer('Unit Digits',
-        on_change_with=['unit']), 'get_unit_digits')
+        on_change_with=['unit']), 'on_change_with_unit_digits')
     product = fields.Many2One('product.product', 'Product',
         states={
             'invisible': Eval('type') != 'line',
@@ -1405,22 +1322,28 @@ class InvoiceLine(ModelSQL, ModelView):
     product_uom_category = fields.Function(
         fields.Many2One('product.uom.category', 'Product Uom Category',
             on_change_with=['product']),
-        'get_product_uom_category')
+        'on_change_with_product_uom_category')
     account = fields.Many2One('account.account', 'Account',
         domain=[
             ('company', '=', Eval('_parent_invoice', {}).get('company',
                     Eval('context', {}).get('company', 0))),
-            If(Eval('_parent_invoice', {}).get('type').in_(['out_invoice',
-                        'out_credit_note']),
-                ('kind', '=', 'revenue'),
-                ('kind', '=', 'expense')),
+            If(Bool(Eval('_parent_invoice')),
+                If(Eval('_parent_invoice', {}).get('type').in_(['out_invoice',
+                    'out_credit_note']),
+                    ('kind', '=', 'revenue'),
+                    ('kind', '=', 'expense')),
+                If(Eval('invoice_type').in_(['out_invoice',
+                            'out_credit_note']),
+                    ('kind', '=', 'revenue'),
+                    ('kind', '=', 'expense')))
             ],
-        on_change=['account', 'product'],
+        on_change=['account', 'product', '_parent_invoice.party',
+            '_parent_invoice.type'],
         states={
             'invisible': Eval('type') != 'line',
             'required': Eval('type') == 'line',
             },
-        depends=['type'])
+        depends=['type', 'invoice_type'])
     unit_price = fields.Numeric('Unit Price', digits=(16, 4),
         states={
             'invisible': Eval('type') != 'line',
@@ -1447,9 +1370,10 @@ class InvoiceLine(ModelSQL, ModelView):
     invoice_taxes = fields.Function(fields.One2Many('account.invoice.tax',
         None, 'Invoice Taxes'), 'get_invoice_taxes')
 
-    def __init__(self):
-        super(InvoiceLine, self).__init__()
-        self._sql_constraints += [
+    @classmethod
+    def __setup__(cls):
+        super(InvoiceLine, cls).__setup__()
+        cls._sql_constraints += [
             ('type_account',
                 'CHECK((type = \'line\' AND account IS NOT NULL) ' \
                         'OR (type != \'line\'))',
@@ -1458,13 +1382,13 @@ class InvoiceLine(ModelSQL, ModelView):
                 'CHECK((type != \'line\' AND invoice IS NOT NULL) ' \
                         'OR (type = \'line\'))',
                 'Line without "line" type must have an invoice!'),
-        ]
-        self._constraints += [
+            ]
+        cls._constraints += [
             ('check_account', 'account_different_company'),
             ('check_account2', 'same_account_on_invoice'),
-        ]
-        self._order.insert(0, ('sequence', 'ASC'))
-        self._error_messages.update({
+            ]
+        cls._order.insert(0, ('sequence', 'ASC'))
+        cls._error_messages.update({
             'modify': 'You can not modify line from an invoice ' \
                     'that is opened, paid!',
             'create': 'You can not add a line to an invoice ' \
@@ -1475,417 +1399,363 @@ class InvoiceLine(ModelSQL, ModelView):
                     'as on the invoice!',
             })
 
-    def init(self, module_name):
-        super(InvoiceLine, self).init(module_name)
+    @classmethod
+    def __register__(cls, module_name):
+        super(InvoiceLine, cls).__register__(module_name)
         cursor = Transaction().cursor
-        table = TableHandler(cursor, self, module_name)
+        table = TableHandler(cursor, cls, module_name)
 
         # Migration from 1.0 invoice is no more required
         table.not_null_action('invoice', action='remove')
 
-    def default_invoice_type(self):
+        # Migration from 2.4: drop required on sequence
+        table.not_null_action('sequence', action='remove')
+
+    @staticmethod
+    def default_invoice_type():
         return Transaction().context.get('invoice_type', 'out_invoice')
 
-    def default_currency(self):
-        company_obj = Pool().get('company.company')
+    @staticmethod
+    def default_currency():
+        Company = Pool().get('company.company')
         if Transaction().context.get('company'):
-            company = company_obj.browse(Transaction().context['company'])
+            company = Company(Transaction().context['company'])
             return company.currency.id
 
-    def default_currency_digits(self):
-        company_obj = Pool().get('company.company')
+    @staticmethod
+    def default_currency_digits():
+        Company = Pool().get('company.company')
         if Transaction().context.get('company'):
-            company = company_obj.browse(Transaction().context['company'])
+            company = Company(Transaction().context['company'])
             return company.currency.digits
         return 2
 
-    def default_unit_digits(self):
+    @staticmethod
+    def default_unit_digits():
         return 2
 
-    def default_company(self):
+    @staticmethod
+    def default_company():
         return Transaction().context.get('company')
 
-    def default_type(self):
+    @staticmethod
+    def default_type():
         return 'line'
 
-    def on_change_with_party_lang(self, vals):
-        party_obj = Pool().get('party.party')
-        if vals.get('party'):
-            party = party_obj.browse(vals['party'])
-            if party.lang:
-                return party.lang.code
+    def on_change_with_party_lang(self, name=None):
+        if self.party and self.party.lang:
+            return self.party.lang.code
         return CONFIG['language']
 
-    def get_party_language(self, ids, name):
-        '''
-        Return the language code of the party of each line
+    def on_change_with_unit_digits(self, name=None):
+        if self.unit:
+            return self.unit.digits
+        return 2
 
-        :param ids: the ids of the account.invoice.line
-        :param name: the field name
-        :return: a dictionary with account.invoice.line id as key and
-            language code as value
-        '''
-        res = {}
-        for line in self.browse(ids):
-            if line.party and line.party.lang:
-                res[line.id] = line.party.lang.code
-            else:
-                res[line.id] = CONFIG['language']
-        return res
+    def on_change_with_currency_digits(self, name=None):
+        if self.currency:
+            return self.currency.digits
+        return 2
 
-    def on_change_with_amount(self, vals):
-        currency_obj = Pool().get('currency.currency')
-        if vals.get('type') == 'line':
-            currency = (vals.get('_parent_invoice.currency')
-                or vals.get('currency'))
-            if isinstance(currency, (int, long)) and currency:
-                currency = currency_obj.browse(currency)
-            amount = Decimal(str(vals.get('quantity') or '0.0')) * \
-                    (vals.get('unit_price') or Decimal('0.0'))
+    def on_change_with_amount(self):
+        if self.type == 'line':
+            currency = (self.invoice.currency if self.invoice
+                else self.currency)
+            amount = (Decimal(str(self.quantity or '0.0'))
+                * (self.unit_price or Decimal('0.0')))
             if currency:
-                return currency_obj.round(currency, amount)
+                return currency.round(amount)
             return amount
         return Decimal('0.0')
 
-    def on_change_with_unit_digits(self, vals):
-        uom_obj = Pool().get('product.uom')
-        if vals.get('unit'):
-            uom = uom_obj.browse(vals['unit'])
-            return uom.digits
-        return 2
-
-    def get_unit_digits(self, ids, name):
-        res = {}
-        for line in self.browse(ids):
-            if line.unit:
-                res[line.id] = line.unit.digits
-            else:
-                res[line.id] = 2
-        return res
-
-    def on_change_with_currency_digits(self, vals):
-        currency_obj = Pool().get('currency.currency')
-        if vals.get('currency'):
-            currency = currency_obj.browse(vals['currency'])
-            return currency.digits
-        return 2
-
-    def get_currency_digits(self, ids, name):
-        res = {}
-        for line in self.browse(ids):
-            res[line.id] = line.currency and line.currency.digits or 2
-        return res
-
-    def get_amount(self, ids, name):
-        currency_obj = Pool().get('currency.currency')
-        res = {}
-        for line in self.browse(ids):
-            if line.type == 'line':
-                currency = line.invoice and line.invoice.currency \
-                        or line.currency
-                res[line.id] = currency_obj.round(currency,
-                        Decimal(str(line.quantity)) * line.unit_price)
-            elif line.type == 'subtotal':
-                res[line.id] = _ZERO
-                for line2 in line.invoice.lines:
-                    if line2.type == 'line':
-                        res[line.id] += currency_obj.round(
-                            line2.invoice.currency,
-                            Decimal(str(line2.quantity)) * line2.unit_price)
-                    elif line2.type == 'subtotal':
-                        if line.id == line2.id:
-                            break
-                        res[line.id] = _ZERO
-            else:
-                res[line.id] = _ZERO
-        return res
+    def get_amount(self, name):
+        if self.type == 'line':
+            return self.on_change_with_amount()
+        elif self.type == 'subtotal':
+            subtotal = _ZERO
+            for line2 in self.invoice.lines:
+                if line2.type == 'line':
+                    subtotal += line2.invoice.currency.round(
+                        Decimal(str(line2.quantity)) * line2.unit_price)
+                elif line2.type == 'subtotal':
+                    if self == line2:
+                        break
+                    subtotal = _ZERO
+            return subtotal
+        else:
+            return _ZERO
 
-    def get_invoice_taxes(self, ids, name):
-        tax_obj = Pool().get('account.tax')
-        invoice_obj = Pool().get('account.invoice')
+    def get_invoice_taxes(self, name):
+        pool = Pool()
+        Tax = pool.get('account.tax')
+        Invoice = pool.get('account.invoice')
 
-        res = {}
-        for line in self.browse(ids):
-            if not line.invoice:
-                res[line.id] = None
+        if not self.invoice:
+            return
+        context = self.invoice.get_tax_context()
+        taxes_keys = []
+        with Transaction().set_context(**context):
+            taxes = Tax.compute(self.taxes, self.unit_price, self.quantity)
+        for tax in taxes:
+            key, _ = Invoice._compute_tax(tax, self.invoice.type)
+            taxes_keys.append(key)
+        taxes = []
+        for tax in self.invoice.taxes:
+            if tax.manual:
                 continue
-            context = invoice_obj.get_tax_context(line.invoice)
-            tax_ids = [x.id for x in line.taxes]
-            taxes_keys = []
-            with Transaction().set_context(**context):
-                taxes = tax_obj.compute(tax_ids, line.unit_price,
-                        line.quantity)
-            for tax in taxes:
-                key, _ = invoice_obj._compute_tax(tax, line.invoice.type)
-                taxes_keys.append(key)
-            res[line.id] = []
-            for tax in line.invoice.taxes:
-                if tax.manual:
-                    continue
-                key = (tax.base_code.id, tax.base_sign,
-                        tax.tax_code.id, tax.tax_sign,
-                        tax.account.id, tax.tax.id)
-                if key in taxes_keys:
-                    res[line.id].append(tax.id)
-        return res
-
-    def _get_tax_rule_pattern(self, party, vals):
+            base_code_id = tax.base_code.id if tax.base_code else None
+            tax_code_id = tax.tax_code.id if tax.tax_code else None
+            tax_id = tax.tax.id if tax.tax else None
+            key = (base_code_id, tax.base_sign,
+                    tax_code_id, tax.tax_sign,
+                    tax.account.id, tax_id)
+            if key in taxes_keys:
+                taxes.append(tax.id)
+        return taxes
+
+    def _get_tax_rule_pattern(self):
         '''
         Get tax rule pattern
-
-        :param party: the BrowseRecord of the party
-        :param vals: a dictionary with value from on_change
-        :return: a dictionary to use as pattern for tax rule
         '''
-        res = {}
-        return res
+        return {}
 
-    def on_change_product(self, vals):
+    def on_change_product(self):
         pool = Pool()
-        product_obj = pool.get('product.product')
-        party_obj = pool.get('party.party')
-        company_obj = pool.get('company.company')
-        currency_obj = pool.get('currency.currency')
-        tax_rule_obj = pool.get('account.tax.rule')
-        invoice_obj = pool.get('account.invoice')
-        date_obj = pool.get('ir.date')
-
-        if not vals.get('product'):
+        Product = pool.get('product.product')
+        Company = pool.get('company.company')
+        Currency = pool.get('currency.currency')
+        Date = pool.get('ir.date')
+
+        if not self.product:
             return {}
         res = {}
 
         context = {}
         party = None
-        if vals.get('_parent_invoice.party') or vals.get('party'):
-            party = party_obj.browse(vals.get('_parent_invoice.party')
-                    or vals.get('party'))
-            if party.lang:
-                context['language'] = party.lang.code
-
-        product = product_obj.browse(vals['product'])
+        if self.invoice and self.invoice.party:
+            party = self.invoice.party
+        elif self.party:
+            party = self.party
+        if party and party.lang:
+            context['language'] = party.lang.code
 
         company = None
         if Transaction().context.get('company'):
-            company = company_obj.browse(Transaction().context['company'])
+            company = Company(Transaction().context['company'])
         currency = None
-        currency_date = date_obj.today()
-        if '_parent_invoice.currency_date' in vals:
-            if vals['_parent_invoice.currency_date']:
-                currency_date = vals['_parent_invoice.currency_date']
-        elif vals.get('invoice'):
-            invoice = invoice_obj.browse(vals['invoice'])
-            currency_date = invoice.currency_date
-        if vals.get('_parent_invoice.currency') or vals.get('currency'):
-            #TODO check if today date is correct
-            currency = currency_obj.browse(
-                    vals.get('_parent_invoice.currency') or
-                    vals.get('currency'))
-
-        if (vals.get('_parent_invoice.type') or vals.get('invoice_type')) \
-                in ('in_invoice', 'in_credit_note'):
+        currency_date = Date.today()
+        if self.invoice and self.invoice.currency_date:
+            currency_date = self.invoice.currency_date
+        #TODO check if today date is correct
+        if self.invoice and self.invoice.currency:
+            currency = self.invoice.currency
+        elif self.currency:
+            currency = self.currency
+
+        if self.invoice and self.invoice.type:
+            type_ = self.invoice.type
+        elif self.invoice_type:
+            type_ = self.invoice_type
+        if type_ in ('in_invoice', 'in_credit_note'):
             if company and currency:
                 with Transaction().set_context(date=currency_date):
-                    res['unit_price'] = currency_obj.compute(
-                            company.currency.id, product.cost_price,
-                            currency.id, round=False)
+                    res['unit_price'] = Currency.compute(
+                        company.currency, self.product.cost_price,
+                        currency, round=False)
             else:
-                res['unit_price'] = product.cost_price
+                res['unit_price'] = self.product.cost_price
             try:
-                res['account'] = product.account_expense_used.id
-                res['account.rec_name'] = product.account_expense_used.rec_name
+                account_expense = self.product.account_expense_used
+                res['account'] = account_expense.id
+                res['account.rec_name'] = account_expense.rec_name
             except Exception:
                 pass
             res['taxes'] = []
-            pattern = self._get_tax_rule_pattern(party, vals)
-            for tax in product.supplier_taxes_used:
+            pattern = self._get_tax_rule_pattern()
+            for tax in self.product.supplier_taxes_used:
                 if party and party.supplier_tax_rule:
-                    tax_ids = tax_rule_obj.apply(party.supplier_tax_rule, tax,
-                            pattern)
+                    tax_ids = party.supplier_tax_rule.apply(tax, pattern)
                     if tax_ids:
                         res['taxes'].extend(tax_ids)
                     continue
                 res['taxes'].append(tax.id)
             if party and party.supplier_tax_rule:
-                tax_ids = tax_rule_obj.apply(party.supplier_tax_rule, None,
-                        pattern)
+                tax_ids = party.supplier_tax_rule.apply(None, pattern)
                 if tax_ids:
                     res['taxes'].extend(tax_ids)
         else:
             if company and currency:
                 with Transaction().set_context(date=currency_date):
-                    res['unit_price'] = currency_obj.compute(
-                            company.currency.id, product.list_price,
-                            currency.id, round=False)
+                    res['unit_price'] = Currency.compute(
+                        company.currency, self.product.list_price,
+                        currency, round=False)
             else:
-                res['unit_price'] = product.list_price
+                res['unit_price'] = self.product.list_price
             try:
-                res['account'] = product.account_revenue_used.id
-                res['account.rec_name'] = product.account_revenue_used.rec_name
+                account_revenue = self.product.account_revenue_used
+                res['account'] = account_revenue.id
+                res['account.rec_name'] = account_revenue.rec_name
             except Exception:
                 pass
             res['taxes'] = []
-            pattern = self._get_tax_rule_pattern(party, vals)
-            for tax in product.customer_taxes_used:
+            pattern = self._get_tax_rule_pattern()
+            for tax in self.product.customer_taxes_used:
                 if party and party.customer_tax_rule:
-                    tax_ids = tax_rule_obj.apply(party.customer_tax_rule, tax,
-                            pattern)
+                    tax_ids = party.customer_tax_rule.apply(tax, pattern)
                     if tax_ids:
                         res['taxes'].extend(tax_ids)
                     continue
                 res['taxes'].append(tax.id)
             if party and party.customer_tax_rule:
-                tax_ids = tax_rule_obj.apply(party.customer_tax_rule, None,
-                        pattern)
+                tax_ids = party.customer_tax_rule.apply(None, pattern)
                 if tax_ids:
                     res['taxes'].extend(tax_ids)
 
-        if not vals.get('description'):
+        if not self.description:
             with Transaction().set_context(**context):
-                res['description'] = product_obj.browse(product.id).rec_name
-
-        category = product.default_uom.category
-        if not vals.get('unit') \
-                or vals.get('unit') not in [x.id for x in category.uoms]:
-            res['unit'] = product.default_uom.id
-            res['unit.rec_name'] = product.default_uom.rec_name
-            res['unit_digits'] = product.default_uom.digits
-
-        vals = vals.copy()
-        vals['unit_price'] = res['unit_price']
-        vals['type'] = 'line'
-        res['amount'] = self.on_change_with_amount(vals)
+                res['description'] = Product(self.product.id).rec_name
+
+        category = self.product.default_uom.category
+        if not self.unit or self.unit not in category.uoms:
+            res['unit'] = self.product.default_uom.id
+            res['unit.rec_name'] = self.product.default_uom.rec_name
+            res['unit_digits'] = self.product.default_uom.digits
+
+        self.unit_price = res['unit_price']
+        self.type = 'line'
+        res['amount'] = self.on_change_with_amount()
         return res
 
-    def on_change_with_product_uom_category(self, values):
-        pool = Pool()
-        product_obj = pool.get('product.product')
-        if values.get('product'):
-            product = product_obj.browse(values['product'])
-            return product.default_uom_category.id
-
-    def get_product_uom_category(self, ids, name):
-        categories = {}
-        for line in self.browse(ids):
-            if line.product:
-                categories[line.id] = line.product.default_uom_category.id
-            else:
-                categories[line.id] = None
-        return categories
+    def on_change_with_product_uom_category(self, name=None):
+        if self.product:
+            return self.product.default_uom_category.id
 
-    def on_change_account(self, values):
-        account_obj = Pool().get('account.account')
-        if values.get('product'):
+    def on_change_account(self):
+        if self.product:
             return {}
         taxes = []
         result = {
             'taxes': taxes,
-        }
-        if values.get('account'):
-            account = account_obj.browse(values['account'])
-            taxes.extend(tax.id for tax in account.taxes)
+            }
+        if (self.invoice and self.invoice.party
+                and self.invoice.type):
+            party = self.invoice.party
+            if self.invoice.type in ('in_invoice', 'in_credit_note'):
+                tax_rule = party.supplier_tax_rule
+            else:
+                tax_rule = party.customer_tax_rule
+        else:
+            tax_rule = None
+
+        if self.account:
+            pattern = self._get_tax_rule_pattern()
+            for tax in self.account.taxes:
+                if tax_rule:
+                    tax_ids = tax_rule.apply(tax, pattern)
+                    if tax_ids:
+                        taxes.extend(tax_ids)
+                    continue
+                taxes.append(tax.id)
         return result
 
-    def check_modify(self, ids):
+    @classmethod
+    def check_modify(cls, lines):
         '''
         Check if the lines can be modified
         '''
-        for line in self.browse(ids):
-            if line.invoice and \
-                    line.invoice.state in ('open', 'paid'):
-                self.raise_user_error('modify')
-        return
-
-    def delete(self, ids):
-        if isinstance(ids, (int, long)):
-            ids = [ids]
-        self.check_modify(ids)
-        return super(InvoiceLine, self).delete(ids)
-
-    def write(self, ids, vals):
-        if isinstance(ids, (int, long)):
-            ids = [ids]
-        self.check_modify(ids)
-        return super(InvoiceLine, self).write(ids, vals)
-
-    def create(self, vals):
-        invoice_obj = Pool().get('account.invoice')
+        for line in lines:
+            if (line.invoice
+                    and line.invoice.state in ('open', 'paid')):
+                cls.raise_user_error('modify')
+
+    @classmethod
+    def delete(cls, lines):
+        cls.check_modify(lines)
+        super(InvoiceLine, cls).delete(lines)
+
+    @classmethod
+    def write(cls, lines, vals):
+        cls.check_modify(lines)
+        super(InvoiceLine, cls).write(lines, vals)
+
+    @classmethod
+    def create(cls, vals):
+        Invoice = Pool().get('account.invoice')
         if vals.get('invoice'):
-            invoice = invoice_obj.browse(vals['invoice'])
+            invoice = Invoice(vals['invoice'])
             if invoice.state in ('open', 'paid', 'cancel'):
-                self.raise_user_error('create')
-        return super(InvoiceLine, self).create(vals)
-
-    def check_account(self, ids):
-        for line in self.browse(ids):
-            if line.type == 'line':
-                if line.invoice:
-                    if line.account.company.id != line.invoice.company.id:
-                        return False
-                elif line.company:
-                    if line.account.company.id != line.company.id:
-                        return False
-        return True
+                cls.raise_user_error('create')
+        return super(InvoiceLine, cls).create(vals)
 
-    def check_account2(self, ids):
-        for line in self.browse(ids):
-            if line.type == 'line':
-                if line.invoice \
-                        and line.account.id == line.invoice.account.id:
+    def check_account(self):
+        if self.type == 'line':
+            if self.invoice:
+                if self.account.company != self.invoice.company:
+                    return False
+            elif self.company:
+                if self.account.company != self.company:
                     return False
         return True
 
-    def _compute_taxes(self, line):
+    def check_account2(self):
+        if self.type == 'line':
+            if (self.invoice
+                    and self.account == self.invoice.account):
+                return False
+        return True
+
+    def _compute_taxes(self):
         pool = Pool()
-        tax_obj = pool.get('account.tax')
-        currency_obj = pool.get('currency.currency')
-        invoice_obj = pool.get('account.invoice')
+        Tax = pool.get('account.tax')
+        Currency = pool.get('currency.currency')
 
-        context = invoice_obj.get_tax_context(line.invoice)
+        context = self.invoice.get_tax_context()
         res = []
-        if line.type != 'line':
+        if self.type != 'line':
             return res
-        tax_ids = [x.id for x in line.taxes]
         with Transaction().set_context(**context):
-            taxes = tax_obj.compute(tax_ids, line.unit_price, line.quantity)
+            taxes = Tax.compute(self.taxes, self.unit_price, self.quantity)
         for tax in taxes:
-            if line.invoice.type in ('out_invoice', 'in_invoice'):
-                base_code_id = tax['tax'].invoice_base_code.id
+            if self.invoice.type in ('out_invoice', 'in_invoice'):
+                base_code_id = (tax['tax'].invoice_base_code.id
+                    if tax['tax'].invoice_base_code else None)
                 amount = tax['base'] * tax['tax'].invoice_base_sign
             else:
-                base_code_id = tax['tax'].credit_note_base_code.id
+                base_code_id = (tax['tax'].credit_note_base_code.id
+                    if tax['tax'].credit_note_base_code else None)
                 amount = tax['base'] * tax['tax'].credit_note_base_sign
             if base_code_id:
                 with Transaction().set_context(
-                        date=line.invoice.currency_date):
-                    amount = currency_obj.compute(line.invoice.currency.id,
-                            amount, line.invoice.company.currency.id)
+                        date=self.invoice.currency_date):
+                    amount = Currency.compute(self.invoice.currency,
+                        amount, self.invoice.company.currency)
                 res.append({
-                    'code': base_code_id,
-                    'amount': amount,
-                    'tax': tax['tax'].id
-                })
+                        'code': base_code_id,
+                        'amount': amount,
+                        'tax': tax['tax'].id if tax['tax'] else None,
+                        })
         return res
 
-    def get_move_line(self, line):
+    def get_move_line(self):
         '''
         Return a list of move lines values for invoice line
         '''
-        currency_obj = Pool().get('currency.currency')
+        Currency = Pool().get('currency.currency')
         res = {}
-        if line.type != 'line':
+        if self.type != 'line':
             return []
-        res['name'] = line.description
-        if line.invoice.currency.id != line.invoice.company.currency.id:
-            with Transaction().set_context(date=line.invoice.currency_date):
-                amount = currency_obj.compute(line.invoice.currency.id,
-                        line.amount, line.invoice.company.currency.id)
-            res['amount_second_currency'] = line.amount
-            res['second_currency'] = line.invoice.currency.id
+        res['description'] = self.description
+        if self.invoice.currency != self.invoice.company.currency:
+            with Transaction().set_context(date=self.invoice.currency_date):
+                amount = Currency.compute(self.invoice.currency,
+                    self.amount, self.invoice.company.currency)
+            res['amount_second_currency'] = self.amount
+            res['second_currency'] = self.invoice.currency.id
         else:
-            amount = line.amount
+            amount = self.amount
             res['amount_second_currency'] = Decimal('0.0')
             res['second_currency'] = None
-        if line.invoice.type in ('in_invoice', 'out_credit_note'):
+        if self.invoice.type in ('in_invoice', 'out_credit_note'):
             if amount >= Decimal('0.0'):
                 res['debit'] = amount
                 res['credit'] = Decimal('0.0')
@@ -1901,15 +1771,15 @@ class InvoiceLine(ModelSQL, ModelView):
             else:
                 res['debit'] = - amount
                 res['credit'] = Decimal('0.0')
-        res['account'] = line.account.id
-        res['party'] = line.invoice.party.id
-        computed_taxes = self._compute_taxes(line)
+        res['account'] = self.account.id
+        res['party'] = self.invoice.party.id
+        computed_taxes = self._compute_taxes()
         for tax in computed_taxes:
             res.setdefault('tax_lines', [])
             res['tax_lines'].append(('create', tax))
         return [res]
 
-    def _credit(self, line):
+    def _credit(self):
         '''
         Return values to credit line.
         '''
@@ -1917,42 +1787,37 @@ class InvoiceLine(ModelSQL, ModelView):
 
         for field in ('sequence', 'type', 'quantity', 'unit_price',
                 'description'):
-            res[field] = line[field]
+            res[field] = getattr(self, field)
 
         for field in ('unit', 'product', 'account'):
-            res[field] = line[field].id
+            res[field] = getattr(self, field).id
 
         res['taxes'] = []
-        for tax in line.taxes:
+        for tax in self.taxes:
             res['taxes'].append(('add', tax.id))
         return res
 
-InvoiceLine()
-
 
 class InvoiceLineTax(ModelSQL):
     'Invoice Line - Tax'
-    _name = 'account.invoice.line-account.tax'
+    __name__ = 'account.invoice.line-account.tax'
     _table = 'account_invoice_line_account_tax'
-    _description = __doc__
     line = fields.Many2One('account.invoice.line', 'Invoice Line',
             ondelete='CASCADE', select=True, required=True)
     tax = fields.Many2One('account.tax', 'Tax', ondelete='RESTRICT',
             required=True)
 
-InvoiceLineTax()
-
 
 class InvoiceTax(ModelSQL, ModelView):
     'Invoice Tax'
-    _name = 'account.invoice.tax'
+    __name__ = 'account.invoice.tax'
     _rec_name = 'description'
-    _description = __doc__
-
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
             select=True)
     description = fields.Char('Description', size=None, required=True)
-    sequence = fields.Integer('Sequence', required=True)
+    sequence = fields.Integer('Sequence',
+        order_field='(%(table)s.sequence IS NULL) %(order)s, '
+        '%(table)s.sequence %(order)s')
     sequence_number = fields.Function(fields.Integer('Sequence Number'),
             'get_sequence_number')
     account = fields.Many2One('account.account', 'Account', required=True,
@@ -1963,7 +1828,9 @@ class InvoiceTax(ModelSQL, ModelView):
     base = fields.Numeric('Base', required=True,
         digits=(16, Eval('_parent_invoice', {}).get('currency_digits', 2)))
     amount = fields.Numeric('Amount', required=True,
-        digits=(16, Eval('_parent_invoice', {}).get('currency_digits', 2)))
+        digits=(16, Eval('_parent_invoice', {}).get('currency_digits', 2)),
+        on_change_with=['tax', 'base', 'amount', 'manual'],
+        depends=['tax', 'base', 'manual'])
     manual = fields.Boolean('Manual')
     base_code = fields.Many2One('account.tax.code', 'Base Code',
         domain=[
@@ -1975,112 +1842,168 @@ class InvoiceTax(ModelSQL, ModelView):
             ('company', '=', Eval('_parent_invoice', {}).get('company', 0)),
             ])
     tax_sign = fields.Numeric('Tax Sign', digits=(2, 0), required=True)
-    tax = fields.Many2One('account.tax', 'Tax')
-
-    def __init__(self):
-        super(InvoiceTax, self).__init__()
-        self._constraints += [
+    tax = fields.Many2One('account.tax', 'Tax',
+        states={
+            'readonly': ~Eval('manual', False),
+            },
+        on_change=['tax', '_parent_invoice.party',
+            '_parent_invoice.type'],
+        depends=['manual'])
+
+    @classmethod
+    def __setup__(cls):
+        super(InvoiceTax, cls).__setup__()
+        cls._constraints += [
             ('check_company', 'You can not create invoice tax \n' \
                     'with account or code from a different invoice company!',
                     ['account', 'base_code', 'tax_code']),
-        ]
-        self._order.insert(0, ('sequence', 'ASC'))
-        self._error_messages.update({
+            ]
+        cls._order.insert(0, ('sequence', 'ASC'))
+        cls._error_messages.update({
             'modify': 'You can not modify tax from an invoice ' \
                     'that is opened, paid!',
             'create': 'You can not add a line to an invoice ' \
                     'that is open, paid or canceled!',
             })
 
-    def default_base(self):
+    @classmethod
+    def __register__(cls, module_name):
+        cursor = Transaction().cursor
+        table = TableHandler(cursor, cls, module_name)
+
+        super(InvoiceTax, cls).__register__(module_name)
+
+        # Migration from 2.4: drop required on sequence
+        table.not_null_action('sequence', action='remove')
+
+    @staticmethod
+    def default_base():
         return Decimal('0.0')
 
-    def default_amount(self):
+    @staticmethod
+    def default_amount():
         return Decimal('0.0')
 
-    def default_manual(self):
+    @staticmethod
+    def default_manual():
         return True
 
-    def default_base_sign(self):
+    @staticmethod
+    def default_base_sign():
         return Decimal('1')
 
-    def default_tax_sign(self):
+    @staticmethod
+    def default_tax_sign():
         return Decimal('1')
 
-    def check_modify(self, ids):
+    def on_change_tax(self):
+        Tax = Pool().get('account.tax')
+        changes = {}
+        if self.tax:
+            if self.invoice:
+                context = self.invoice.get_tax_context()
+            else:
+                context = {}
+            with Transaction().set_context(**context):
+                tax = Tax(self.tax.id)
+            changes['description'] = tax.description
+            if self.invoice and self.invoice.type:
+                invoice_type = self.invoice.type
+            else:
+                invoice_type = 'out_invoice'
+            if invoice_type in ('out_invoice', 'in_invoice'):
+                changes['base_code'] = tax.invoice_base_code.id
+                changes['base_sign'] = tax.invoice_base_sign
+                changes['tax_code'] = tax.invoice_tax_code.id
+                changes['tax_sign'] = tax.invoice_tax_sign
+                changes['account'] = tax.invoice_account.id
+            else:
+                changes['base_code'] = tax.credit_note_base_code.id
+                changes['base_sign'] = tax.credit_note_base_sign
+                changes['tax_code'] = tax.credit_note_tax_code.id
+                changes['tax_sign'] = tax.credit_note_tax_sign
+                changes['account'] = tax.credit_note_account.id
+        return changes
+
+    def on_change_with_amount(self):
+        Tax = Pool().get('account.tax')
+        if self.tax and self.manual:
+            tax = self.tax
+            base = self.base or Decimal(0)
+            for tax in Tax.compute([tax], base, 1):
+                if (tax['tax'] == tax
+                        and tax['base'] == self.base):
+                    return tax['amount']
+        return self.amount
+
+    @classmethod
+    def check_modify(cls, taxes):
         '''
         Check if the taxes can be modified
         '''
-        for tax in self.browse(ids):
+        for tax in taxes:
             if tax.invoice.state in ('open', 'paid'):
-                self.raise_user_error('modify')
-        return
-
-    def get_sequence_number(self, ids, name):
-        res = {}
-        for tax in self.browse(ids):
-            res[tax.id] = 0
-            i = 1
-            for tax2 in tax.invoice.taxes:
-                if tax2.id == tax.id:
-                    res[tax.id] = i
-                    break
-                i += 1
-        return res
-
-    def delete(self, ids):
-        if isinstance(ids, (int, long)):
-            ids = [ids]
-        self.check_modify(ids)
-        return super(InvoiceTax, self).delete(ids)
-
-    def write(self, ids, vals):
-        if isinstance(ids, (int, long)):
-            ids = [ids]
-        self.check_modify(ids)
-        return super(InvoiceTax, self).write(ids, vals)
-
-    def create(self, vals):
-        invoice_obj = Pool().get('account.invoice')
+                cls.raise_user_error('modify')
+
+    def get_sequence_number(self, name):
+        i = 1
+        for tax in self.invoice.taxes:
+            if tax == self:
+                return i
+            i += 1
+        return 0
+
+    @classmethod
+    def delete(cls, taxes):
+        cls.check_modify(taxes)
+        super(InvoiceTax, cls).delete(taxes)
+
+    @classmethod
+    def write(cls, taxes, vals):
+        cls.check_modify(taxes)
+        super(InvoiceTax, cls).write(taxes, vals)
+
+    @classmethod
+    def create(cls, vals):
+        Invoice = Pool().get('account.invoice')
         if vals.get('invoice'):
-            invoice = invoice_obj.browse(vals['invoice'])
+            invoice = Invoice(vals['invoice'])
             if invoice.state in ('open', 'paid', 'cancel'):
-                self.raise_user_error('create')
-        return super(InvoiceTax, self).create(vals)
-
-    def check_company(self, ids):
-        for tax in self.browse(ids):
-            company = tax.invoice.company
-            if tax.account.company.id != company.id:
+                cls.raise_user_error('create')
+        return super(InvoiceTax, cls).create(vals)
+
+    def check_company(self):
+        company = self.invoice.company
+        if self.account.company != company:
+            return False
+        if self.base_code:
+            if self.base_code.company != company:
+                return False
+        if self.tax_code:
+            if self.tax_code.company != company:
                 return False
-            if tax.base_code:
-                if tax.base_code.company.id != company.id:
-                    return False
-            if tax.tax_code:
-                if tax.tax_code.company.id != company.id:
-                    return False
         return True
 
-    def get_move_line(self, tax):
+    def get_move_line(self):
         '''
         Return a list of move lines values for invoice tax
         '''
-        currency_obj = Pool().get('currency.currency')
+        Currency = Pool().get('currency.currency')
         res = {}
-        if not tax.amount:
+        if not self.amount:
             return []
-        res['name'] = tax.description
-        if tax.invoice.currency.id != tax.invoice.company.currency.id:
-            with Transaction().set_context(date=tax.invoice.currency_date):
-                amount = currency_obj.compute(tax.invoice.currency.id,
-                        tax.amount, tax.invoice.company.currency.id)
-            res['amount_second_currency'] = tax.amount
-            res['second_currency'] = tax.invoice.currency.id
+        res['description'] = self.description
+        if self.invoice.currency != self.invoice.company.currency:
+            with Transaction().set_context(date=self.invoice.currency_date):
+                amount = Currency.compute(self.invoice.currency, self.amount,
+                    self.invoice.company.currency)
+            res['amount_second_currency'] = self.amount
+            res['second_currency'] = self.invoice.currency.id
         else:
-            amount = tax.amount
+            amount = self.amount
             res['amount_second_currency'] = Decimal('0.0')
             res['second_currency'] = None
-        if tax.invoice.type in ('in_invoice', 'out_credit_note'):
+        if self.invoice.type in ('in_invoice', 'out_credit_note'):
             if amount >= Decimal('0.0'):
                 res['debit'] = amount
                 res['credit'] = Decimal('0.0')
@@ -2096,17 +2019,17 @@ class InvoiceTax(ModelSQL, ModelView):
             else:
                 res['debit'] = - amount
                 res['credit'] = Decimal('0.0')
-        res['account'] = tax.account.id
-        res['party'] = tax.invoice.party.id
-        if tax.tax_code:
+        res['account'] = self.account.id
+        res['party'] = self.invoice.party.id
+        if self.tax_code:
             res['tax_lines'] = [('create', {
-                'code': tax.tax_code.id,
-                'amount': amount * tax.tax_sign,
-                'tax': tax.tax and tax.tax.id or None
+                'code': self.tax_code.id,
+                'amount': amount * self.tax_sign,
+                'tax': self.tax and self.tax.id or None
             })]
         return [res]
 
-    def _credit(self, tax):
+    def _credit(self):
         '''
         Return values to credit tax.
         '''
@@ -2114,27 +2037,21 @@ class InvoiceTax(ModelSQL, ModelView):
 
         for field in ('description', 'sequence', 'base', 'amount',
                 'manual', 'base_sign', 'tax_sign'):
-            res[field] = tax[field]
+            res[field] = getattr(self, field)
 
         for field in ('account', 'base_code', 'tax_code', 'tax'):
-            res[field] = tax[field].id
+            res[field] = getattr(self, field).id
         return res
 
-InvoiceTax()
-
 
 class PrintInvoiceWarning(ModelView):
     'Print Invoice Report Warning'
-    _name = 'account.invoice.print.warning'
-    _description = __doc__
-
-PrintInvoiceWarning()
+    __name__ = 'account.invoice.print.warning'
 
 
 class PrintInvoice(Wizard):
     'Print Invoice Report'
-    _name = 'account.invoice.print'
-
+    __name__ = 'account.invoice.print'
     start = StateTransition()
     warning = StateView('account.invoice.print.warning',
         'account_invoice.print_warning_view_form', [
@@ -2143,112 +2060,107 @@ class PrintInvoice(Wizard):
             ])
     print_ = StateAction('account_invoice.report_invoice')
 
-    def transition_start(self, session):
+    def transition_start(self):
         if len(Transaction().context['active_ids']) > 1:
             return 'warning'
         return 'print_'
 
-    def do_print_(self, session, action):
+    def do_print_(self, action):
         data = {}
         data['id'] = Transaction().context['active_ids'].pop()
         data['ids'] = [data['id']]
         return action, data
 
-    def transition_print_(self, session):
+    def transition_print_(self):
         if Transaction().context['active_ids']:
             return 'print_'
         return 'end'
 
-PrintInvoice()
-
 
 class InvoiceReport(Report):
-    _name = 'account.invoice'
+    __name__ = 'account.invoice'
 
-    def __init__(self):
-        super(InvoiceReport, self).__init__()
-        self._rpc['execute'] = True
+    @classmethod
+    def __setup__(cls):
+        super(InvoiceReport, cls).__setup__()
+        cls.__rpc__['execute'] = RPC(False)
 
-    def execute(self, ids, data):
-        invoice_obj = Pool().get('account.invoice')
+    @classmethod
+    def execute(cls, ids, data):
+        Invoice = Pool().get('account.invoice')
 
-        res = super(InvoiceReport, self).execute(ids, data)
+        res = super(InvoiceReport, cls).execute(ids, data)
         if len(ids) > 1:
             res = (res[0], res[1], True, res[3])
         else:
-            invoice = invoice_obj.browse(ids[0])
+            invoice = Invoice(ids[0])
             if invoice.number:
                 res = (res[0], res[1], res[2], res[3] + ' - ' + invoice.number)
         return res
 
-    def _get_objects(self, ids, model, data):
-        invoice_obj = Pool().get('account.invoice')
-
+    @classmethod
+    def _get_records(cls, ids, model, data):
         with Transaction().set_context(language=False):
-            return invoice_obj.browse([ids[0]])
+            return super(InvoiceReport, cls)._get_records(ids[:1], model, data)
 
-    def parse(self, report, objects, data, localcontext):
-        user_obj = Pool().get('res.user')
-        invoice_obj = Pool().get('account.invoice')
+    @classmethod
+    def parse(cls, report, records, data, localcontext):
+        pool = Pool()
+        User = pool.get('res.user')
+        Invoice = pool.get('account.invoice')
 
-        invoice = objects[0]
+        invoice = records[0]
 
         if invoice.invoice_report_cache:
             return (invoice.invoice_report_format,
                 invoice.invoice_report_cache)
 
-        user = user_obj.browse(Transaction().user)
+        user = User(Transaction().user)
         localcontext['company'] = user.company
-        res = super(InvoiceReport, self).parse(report, objects, data,
+        res = super(InvoiceReport, cls).parse(report, records, data,
                 localcontext)
         # If the invoice is open or paid and the report not saved in
         # invoice_report_cache there was an error somewhere. So we save it now
         # in invoice_report_cache
         if invoice.state in ('open', 'paid'):
-            invoice_obj.write(invoice.id, {
+            Invoice.write([invoice], {
                 'invoice_report_format': res[0],
                 'invoice_report_cache': res[1],
                 })
         return res
 
-InvoiceReport()
-
 
 class PayInvoiceStart(ModelView):
     'Pay Invoice'
-    _name = 'account.invoice.pay.start'
-    _description = __doc__
+    __name__ = 'account.invoice.pay.start'
     amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)),
         depends=['currency_digits'], required=True)
     currency = fields.Many2One('currency.currency', 'Currency', required=True)
     currency_digits = fields.Integer('Currency Digits', readonly=True,
             on_change_with=['currency'])
-    description = fields.Char('Description', size=None, required=True)
+    description = fields.Char('Description', size=None)
     journal = fields.Many2One('account.journal', 'Journal', required=True,
             domain=[('type', '=', 'cash')])
     date = fields.Date('Date', required=True)
 
-    def default_date(self):
-        date_obj = Pool().get('ir.date')
-        return date_obj.today()
+    @staticmethod
+    def default_date():
+        Date = Pool().get('ir.date')
+        return Date.today()
 
-    def default_currency_digits(self):
+    @staticmethod
+    def default_currency_digits():
         return 2
 
-    def on_change_with_currency_digits(self, vals):
-        currency_obj = Pool().get('currency.currency')
-        if vals.get('currency'):
-            currency = currency_obj.browse(vals['currency'])
-            return currency.digits
+    def on_change_with_currency_digits(self):
+        if self.currency:
+            return self.currency.digits
         return 2
 
-PayInvoiceStart()
-
 
 class PayInvoiceAsk(ModelView):
     'Pay Invoice'
-    _name = 'account.invoice.pay.ask'
-    _description = __doc__
+    __name__ = 'account.invoice.pay.ask'
     type = fields.Selection([
         ('writeoff', 'Write-Off'),
         ('partial', 'Partial Payment'),
@@ -2304,37 +2216,31 @@ class PayInvoiceAsk(ModelView):
     company = fields.Many2One('company.company', 'Company', readonly=True)
     invoice = fields.Many2One('account.invoice', 'Invoice', readonly=True)
 
-    def default_type(self):
+    @staticmethod
+    def default_type():
         return 'partial'
 
-    def on_change_lines(self, vals):
-        pool = Pool()
-        currency_obj = pool.get('currency.currency')
-        line_obj = pool.get('account.move.line')
-        invoice_obj = pool.get('account.invoice')
+    def on_change_lines(self):
+        Currency = Pool().get('currency.currency')
 
         res = {}
-        invoice = invoice_obj.browse(vals['invoice'])
-        with Transaction().set_context(date=invoice.currency_date):
-            amount = currency_obj.compute(vals['currency'], vals['amount'],
-                    vals['currency_writeoff'])
+        with Transaction().set_context(date=self.invoice.currency_date):
+            amount = Currency.compute(self.currency, self.amount,
+                self.currency_writeoff)
 
         res['amount_writeoff'] = Decimal('0.0')
-        for line in line_obj.browse(vals['lines']):
+        for line in self.lines:
             res['amount_writeoff'] += line.debit - line.credit
-        if invoice.type in ('in_invoice', 'out_credit_note'):
+        if self.invoice.type in ('in_invoice', 'out_credit_note'):
             res['amount_writeoff'] = - res['amount_writeoff'] - amount
         else:
             res['amount_writeoff'] = res['amount_writeoff'] - amount
         return res
 
-PayInvoiceAsk()
-
 
 class PayInvoice(Wizard):
     'Pay Invoice'
-    _name = 'account.invoice.pay'
-
+    __name__ = 'account.invoice.pay'
     start = StateView('account.invoice.pay.start',
         'account_invoice.pay_start_view_form', [
             Button('Cancel', 'end', 'tryton-cancel'),
@@ -2348,17 +2254,18 @@ class PayInvoice(Wizard):
             ])
     pay = StateTransition()
 
-    def __init__(self):
-        super(PayInvoice, self).__init__()
-        self._error_messages.update({
+    @classmethod
+    def __setup__(cls):
+        super(PayInvoice, cls).__setup__()
+        cls._error_messages.update({
             'amount_greater_amount_to_pay': 'You can not create a partial ' \
                     'payment with an amount greater then the amount to pay!',
             })
 
-    def default_start(self, session, fields):
-        invoice_obj = Pool().get('account.invoice')
+    def default_start(self, fields):
+        Invoice = Pool().get('account.invoice')
         default = {}
-        invoice = invoice_obj.browse(Transaction().context['active_id'])
+        invoice = Invoice(Transaction().context['active_id'])
         default['currency'] = invoice.currency.id
         default['currency_digits'] = invoice.currency.digits
         default['amount'] = (invoice.amount_to_pay_today
@@ -2366,52 +2273,52 @@ class PayInvoice(Wizard):
         default['description'] = invoice.number
         return default
 
-    def transition_choice(self, session):
-        invoice_obj = Pool().get('account.invoice')
-        currency_obj = Pool().get('currency.currency')
+    def transition_choice(self):
+        pool = Pool()
+        Invoice = pool.get('account.invoice')
+        Currency = pool.get('currency.currency')
 
-        invoice = invoice_obj.browse(Transaction().context['active_id'])
+        invoice = Invoice(Transaction().context['active_id'])
 
-        with Transaction().set_context(date=session.start.date):
-            amount = currency_obj.compute(session.start.currency.id,
-                session.start.amount, invoice.company.currency.id)
-        _, remainder = invoice_obj.get_reconcile_lines_for_amount(invoice,
-            amount)
+        with Transaction().set_context(date=self.start.date):
+            amount = Currency.compute(self.start.currency,
+                self.start.amount, invoice.company.currency)
+        _, remainder = invoice.get_reconcile_lines_for_amount(amount)
         if remainder == Decimal('0.0') and amount <= invoice.amount_to_pay:
             return 'pay'
         return 'ask'
 
-    def default_ask(self, session, fields):
+    def default_ask(self, fields):
         pool = Pool()
-        invoice_obj = pool.get('account.invoice')
-        currency_obj = pool.get('currency.currency')
-        line_obj = pool.get('account.move.line')
+        Invoice = pool.get('account.invoice')
+        Currency = pool.get('currency.currency')
+        Line = pool.get('account.move.line')
 
         default = {}
-        invoice = invoice_obj.browse(Transaction().context['active_id'])
+        invoice = Invoice(Transaction().context['active_id'])
         default['lines_to_pay'] = [x.id for x in invoice.lines_to_pay
                 if not x.reconciliation]
 
-        default['amount'] = session.start.amount
-        default['currency'] = session.start.currency.id
-        default['currency_digits'] = session.start.currency_digits
+        default['amount'] = self.start.amount
+        default['currency'] = self.start.currency.id
+        default['currency_digits'] = self.start.currency_digits
         default['company'] = invoice.company.id
 
-        with Transaction().set_context(date=session.start.date):
-            amount = currency_obj.compute(session.start.currency.id,
-                session.start.amount, invoice.company.currency.id)
+        with Transaction().set_context(date=self.start.date):
+            amount = Currency.compute(self.start.currency.id,
+                self.start.amount, invoice.company.currency.id)
 
-        if currency_obj.is_zero(invoice.company.currency, amount):
+        if invoice.company.currency.is_zero(amount):
             default['lines'] = [x.id for x in invoice.lines_to_pay]
         else:
             default['lines'], _ = \
-                invoice_obj.get_reconcile_lines_for_amount(invoice, amount)
+                invoice.get_reconcile_lines_for_amount(amount)
         for line_id in default['lines'][:]:
             if line_id not in default['lines_to_pay']:
                 default['lines'].remove(line_id)
 
         default['amount_writeoff'] = Decimal('0.0')
-        for line in line_obj.browse(default['lines']):
+        for line in Line.browse(default['lines']):
             default['amount_writeoff'] += line.debit - line.credit
         for line in invoice.payment_lines:
             default['amount_writeoff'] += line.debit - line.credit
@@ -2426,81 +2333,75 @@ class PayInvoice(Wizard):
         default['payment_lines'] = [x.id for x in invoice.payment_lines
                 if not x.reconciliation]
 
-        if amount > invoice.amount_to_pay \
-                or currency_obj.is_zero(invoice.company.currency, amount):
+        if (amount > invoice.amount_to_pay
+                or invoice.company.currency.is_zero(amount)):
             default['type'] = 'writeoff'
         return default
 
-    def transition_pay(self, session):
+    def transition_pay(self):
         pool = Pool()
-        invoice_obj = pool.get('account.invoice')
-        currency_obj = pool.get('currency.currency')
-        move_line_obj = pool.get('account.move.line')
+        Invoice = pool.get('account.invoice')
+        Currency = pool.get('currency.currency')
+        MoveLine = pool.get('account.move.line')
 
-        invoice = invoice_obj.browse(Transaction().context['active_id'])
+        invoice = Invoice(Transaction().context['active_id'])
 
-        with Transaction().set_context(date=session.start.date):
-            amount = currency_obj.compute(session.start.currency.id,
-                session.start.amount, invoice.company.currency.id)
+        with Transaction().set_context(date=self.start.date):
+            amount = Currency.compute(self.start.currency,
+                self.start.amount, invoice.company.currency)
 
         reconcile_lines, remainder = \
-            invoice_obj.get_reconcile_lines_for_amount(invoice, amount)
+            invoice.get_reconcile_lines_for_amount(amount)
 
         amount_second_currency = None
         second_currency = None
-        if session.start.currency.id != invoice.company.currency.id:
-            amount_second_currency = session.start.amount
-            second_currency = session.start.currency
+        if self.start.currency != invoice.company.currency:
+            amount_second_currency = self.start.amount
+            second_currency = self.start.currency
 
         if amount > invoice.amount_to_pay and \
-                session.ask.type != 'writeoff':
+                self.ask.type != 'writeoff':
             self.raise_user_error('amount_greater_amount_to_pay')
 
-        line_id = None
-        if not currency_obj.is_zero(invoice.company.currency, amount):
-            line_id = invoice_obj.pay_invoice(invoice.id, amount,
-                session.start.journal.id, session.start.date,
-                session.start.description, amount_second_currency,
+        line = None
+        if not invoice.company.currency.is_zero(amount):
+            line = invoice.pay_invoice(amount,
+                self.start.journal, self.start.date,
+                self.start.description, amount_second_currency,
                 second_currency)
 
         if remainder != Decimal('0.0'):
-            if session.ask.type == 'writeoff':
-                line_ids = [x.id for x in session.ask.lines] + \
-                    [x.id for x in invoice.payment_lines
-                        if not x.reconciliation]
-                if line_id and line_id not in line_ids:
+            if self.ask.type == 'writeoff':
+                lines = [l for l in self.ask.lines] + \
+                    [l for l in invoice.payment_lines
+                        if not l.reconciliation]
+                if line and line not in lines:
                     # Add new payment line if payment_lines was cached before
                     # its creation
-                    line_ids += [line_id]
-                if line_ids:
-                    move_line_obj.reconcile(line_ids,
-                        journal_id=session.ask.journal_writeoff.id,
-                        date=session.start.date,
-                        account_id=session.ask.account_writeoff.id)
+                    lines += [line]
+                if lines:
+                    MoveLine.reconcile(lines,
+                        journal=self.ask.journal_writeoff,
+                        date=self.start.date,
+                        account=self.ask.account_writeoff)
         else:
-            if line_id:
-                reconcile_lines += [line_id]
+            if line:
+                reconcile_lines += [line]
             if reconcile_lines:
-                move_line_obj.reconcile(reconcile_lines)
+                MoveLine.reconcile(reconcile_lines)
         return 'end'
 
-PayInvoice()
-
 
 class CreditInvoiceStart(ModelView):
     'Credit Invoice Init'
-    _name = 'account.invoice.credit.start'
-    _description = __doc__
+    __name__ = 'account.invoice.credit.start'
     with_refund = fields.Boolean('With Refund', help='If true, ' \
             'the current invoice(s) will be paid.')
 
-CreditInvoiceStart()
-
 
 class CreditInvoice(Wizard):
     'Credit Invoice'
-    _name = 'account.invoice.credit'
-
+    __name__ = 'account.invoice.credit'
     start = StateView('account.invoice.credit.start',
         'account_invoice.credit_start_view_form', [
             Button('Cancel', 'end', 'tryton-cancel'),
@@ -2508,45 +2409,44 @@ class CreditInvoice(Wizard):
             ])
     credit = StateAction('account_invoice.act_invoice_form')
 
-    def __init__(self):
-        super(CreditInvoice, self).__init__()
-        self._error_messages.update({
+    @classmethod
+    def __setup__(cls):
+        super(CreditInvoice, cls).__setup__()
+        cls._error_messages.update({
             'refund_non_open': 'You can not credit with refund ' \
                     'an invoice that is not opened!',
             'refund_with_payement': 'You can not credit with refund ' \
                     'an invoice with payments!',
             })
 
-    def default_start(self, session, fields):
-        invoice_obj = Pool().get('account.invoice')
+    def default_start(self, fields):
+        Invoice = Pool().get('account.invoice')
         default = {
             'with_refund': True,
-        }
-        for invoice in invoice_obj.browse(Transaction().context['active_ids']):
+            }
+        for invoice in Invoice.browse(Transaction().context['active_ids']):
             if invoice.state != 'open' or invoice.payment_lines:
                 default['with_refund'] = False
                 break
         return default
 
-    def do_credit(self, session, action):
+    def do_credit(self, action):
         pool = Pool()
-        invoice_obj = pool.get('account.invoice')
+        Invoice = pool.get('account.invoice')
 
-        refund = session.start.with_refund
-        invoice_ids = Transaction().context['active_ids']
+        refund = self.start.with_refund
+        invoices = Invoice.browse(Transaction().context['active_ids'])
 
         if refund:
-            for invoice in invoice_obj.browse(invoice_ids):
+            for invoice in invoices:
                 if invoice.state != 'open':
                     self.raise_user_error('refund_non_open')
                 if invoice.payment_lines:
                     self.raise_user_error('refund_with_payement')
 
-        invoice_ids = invoice_obj.credit(invoice_ids, refund=refund)
+        invoice_ids = Invoice.credit(invoices, refund=refund)
 
         data = {'res_id': invoice_ids}
         if len(invoice_ids) == 1:
             action['views'].reverse()
         return action, data
-
-CreditInvoice()
diff --git a/invoice.xml b/invoice.xml
index e53f452..faf5355 100644
--- a/invoice.xml
+++ b/invoice.xml
@@ -67,17 +67,12 @@ this repository contains the full copyright notices and license terms. -->
                                         <button name="cancel" string="_Cancel"
                                             icon="tryton-cancel"/>
                                         <button name="draft" string="_Draft"
-                                            type="object"
                                             icon="tryton-go-previous"/>
                                         <button name="proforma" string="Pro For_ma"
-                                            type="object"
                                             icon="tryton-go-next"/>
                                         <button name="open" string="_Open"
-                                            type="object"
                                             icon="tryton-ok"/>
-                                        <button name="%(wizard_pay)d" string="_Pay"
-                                            type="action"
-                                            states="{'invisible': Not(Equal(Eval('state'), 'open')), 'readonly': Not(In(%(account.group_account)d, Eval('groups', [])))}"
+                                        <button name="pay" string="_Pay"
                                             icon="tryton-go-next"/>
                                     </group>
                                 </group>
@@ -655,6 +650,8 @@ this repository contains the full copyright notices and license terms. -->
                 <form string="Invoice Tax">
                     <label name="invoice"/>
                     <field name="invoice" colspan="3"/>
+                    <label name="tax"/>
+                    <field name="tax" colspan="3"/>
                     <label name="description"/>
                     <field name="description"/>
                     <label name="sequence"/>
@@ -677,7 +674,6 @@ this repository contains the full copyright notices and license terms. -->
                         <label name="base_sign"/>
                         <field name="base_sign"/>
                     </group>
-                    <field name="tax" colspan="4" invisible="1"/>
                 </form>
                 ]]>
             </field>
@@ -690,12 +686,12 @@ this repository contains the full copyright notices and license terms. -->
                 <![CDATA[
                 <tree string="Invoice Taxes">
                     <field name="invoice"/>
+                    <field name="tax"/>
                     <field name="description"/>
                     <field name="account"/>
                     <field name="manual"/>
                     <field name="base"/>
                     <field name="amount"/>
-                    <field name="tax" tree_invisible="1"/>
                 </tree>
                 ]]>
             </field>
@@ -718,6 +714,7 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="tax_code" tree_invisible="1"/>
                     <field name="tax_sign" tree_invisible="1"/>
                     <field name="account" tree_invisible="1"/>
+                    <field name="tax" tree_invisible="1"/>
                 </tree>
                 ]]>
             </field>
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 7e6ce0e..e31fcaf 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -66,11 +66,11 @@ msgstr ""
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
-msgstr ""
+msgstr "Деня от месеца трябва да бъде между 1 и 31."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Percentage and Divisor values are not consistent."
-msgstr ""
+msgstr "Процент и Делител не съотвестват"
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
@@ -99,7 +99,7 @@ msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid "Invoice \"%s\" must be cancelled before deletion!"
-msgstr ""
+msgstr "Преди да бъде изтрита фактура \"%s\" трябва да бъде прекратена!"
 
 msgctxt "error:account.invoice:"
 msgid ""
@@ -451,7 +451,7 @@ msgstr "Продукт"
 
 msgctxt "field:account.invoice.line,product_uom_category:"
 msgid "Product Uom Category"
-msgstr ""
+msgstr "Категория мер. ед. на продукт"
 
 msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
@@ -675,7 +675,7 @@ msgstr "Цифри за валута"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
-msgstr ""
+msgstr "Ден от месеца"
 
 msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
@@ -683,7 +683,7 @@ msgstr "Брой дни"
 
 msgctxt "field:account.invoice.payment_term.line,divisor:"
 msgid "Divisor"
-msgstr ""
+msgstr "Делител"
 
 msgctxt "field:account.invoice.payment_term.line,id:"
 msgid "ID"
@@ -695,7 +695,7 @@ msgstr "Месец"
 
 msgctxt "field:account.invoice.payment_term.line,months:"
 msgid "Number of Months"
-msgstr ""
+msgstr "Брой месеци"
 
 msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
@@ -719,11 +719,11 @@ msgstr "Вид"
 
 msgctxt "field:account.invoice.payment_term.line,weekday:"
 msgid "Day of Week"
-msgstr ""
+msgstr "Ден от седмицата"
 
 msgctxt "field:account.invoice.payment_term.line,weeks:"
 msgid "Number of Weeks"
-msgstr ""
+msgstr "Брой седмици"
 
 msgctxt "field:account.invoice.payment_term.line,write_date:"
 msgid "Write Date"
@@ -733,14 +733,6 @@ msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
 msgstr "Променено от"
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr "Име"
-
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr "Име"
-
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
 msgstr "ID"
@@ -843,7 +835,7 @@ msgstr "Фактура"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr ""
+msgstr "Условие за плащане на клиент"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
@@ -893,14 +885,6 @@ msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Ред от условие за плащане"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "Payment Term Line Delay"
-msgstr ""
-
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "Payment Term Line Type"
-msgstr ""
-
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr "Предупреждение при отпечатване на справка за фактура"
@@ -1291,7 +1275,7 @@ msgstr "Април"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "August"
-msgstr ""
+msgstr "Август"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "December"
@@ -1311,7 +1295,7 @@ msgstr "Юли"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "June"
-msgstr ""
+msgstr "Юни"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "March"
@@ -1319,15 +1303,15 @@ msgstr "Март"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "May"
-msgstr ""
+msgstr "Май"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "November"
-msgstr ""
+msgstr "Ноември"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "October"
-msgstr ""
+msgstr "Октомври"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "September"
@@ -1339,15 +1323,15 @@ msgstr "Фиксирана"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Remainder"
-msgstr ""
+msgstr "Процент от остъчна стойност"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Total"
-msgstr ""
+msgstr "Процент от общата сума"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Remainder"
-msgstr ""
+msgstr "Напомняне"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 0bf4fdf..8016805 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -7,172 +7,179 @@ msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
 msgstr ""
-"No pot canviar la seqüència d'una factura si ja n'hi ha una d'oberta en "
-"l'exercici fiscal"
+"No podeu canviar la seqüència d'una factura si ja hi ha una factura oberta "
+"en l'exercici fiscal."
 
 msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
-msgstr "Ha de tenir una seqüència diferent de facturació per exercici fiscal"
+msgstr "Heu de tenir diferents seqüències de factura per exercici fiscal."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
 msgstr ""
+"No podeu fer un abonament amb devolució des d'una factura que no estigui "
+"oberta."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
 msgstr ""
+"No podeu fer un abonament amb devolució des d'una factura amb pagaments."
 
 msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account!"
-msgstr "Una línia de tipus «línia» ha de tenir un compte"
+msgstr "Una línia del tipus \"línia\" ha de tenir un compte."
 
 msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice!"
-msgstr "Una línia sense tipus «línia» ha de tenir una factura"
+msgstr "Una línia sense el tipus \"línia\" ha de tenir una factura."
 
 msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
-"No pot afegir una línia a una factura que està oberta, pagada o cancel·lada"
+"No podeu afegir una línia a una factura que està oberta, pagada o "
+"cancel·lada."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line\n"
 "with account with a different invoice company!"
 msgstr ""
-"No pot crear una línia de factura\n"
-"amb un compte d'una empresa diferent a la qual factura"
+"No podeu crear una línia de factura\n"
+"amb un compte d'una empresa diferent de la que factura."
 
 msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
-msgstr "No pot modificar una línia d'una factura que està oberta o pagada"
+msgstr "No podeu modificar les línies d'una factura que està oberta o pagada."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not use the same account\n"
 "as on the invoice!"
 msgstr ""
-"No pot usar el mateix compte\n"
-"que en la factura"
+"No podeu utilitzar el mateix compte\n"
+"que en la factura."
 
 msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
 msgstr ""
+"No podeu crear un pagament parcial amb un import major que l'import a pagar."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
-msgstr ""
+msgstr "El dia del mes ha d'estar entre 1 i 31."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Percentage and Divisor values are not consistent."
-msgstr ""
+msgstr "Els valors percentatge i divisor no són coherents."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
-msgstr "La línia del termini no és vàlida"
+msgstr "La línia del termini de pagament no és correcta."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Payment term missing a remainder line!"
-msgstr "Al termini de pagament li falta una línia amb el resta"
+msgstr "Al termini de pagament li falta una línia amb el remanent."
 
 msgctxt "error:account.invoice.tax:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
-"No pot afegir una línia a una factura que està oberta, pagada o cancel·lada"
+"No podeu afegir una línia a una factura que està oberta, pagada o "
+"cancel·lada."
 
 msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
-msgstr "No pot modificar els impostos d'una factura que està oberta o pagada"
+msgstr ""
+"No podeu modificar els impostos d'una factura que està oberta o pagada."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Base taxes different from invoice lines!\n"
 "Re-compute the invoice."
 msgstr ""
-"Els imposats base són diferents de les línies de la factura.\n"
-"Recalculi la factura."
+"Els impostos base són diferents de les línies de la factura.\n"
+"Recalculeu la factura."
 
 msgctxt "error:account.invoice:"
 msgid "Invoice \"%s\" must be cancelled before deletion!"
-msgstr ""
+msgstr "La factura \"%s\" ha de ser cancel·lada abans d'eliminar-la."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
 msgstr ""
-"Té impostos definits però cap en les línies de la factura\n"
-"Recalculi la factura."
+"Els impostos estan definits a la factura però cap a les línies de la factura.\n"
+"Recalculeu la factura."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined on invoice lines but not on invoice!\n"
 "Re-compute the invoice."
 msgstr ""
-"Els impostos estan definits en les línies de la factura però no en la factura.\n"
-"Recalculi la factura."
+"Els impostos estan definits a les línies de la factura però no a la factura.\n"
+"Recalculeu la factura."
 
 msgctxt "error:account.invoice:"
 msgid "The credit account on journal is missing!"
-msgstr "Falta el compte d'haver del diari"
+msgstr "Falta el compte haver del diari."
 
 msgctxt "error:account.invoice:"
 msgid "The credit account on journal is the same than the invoice account!"
-msgstr "El compte d'haver en el diari és la mateixa que el compte facturat"
+msgstr "El compte haver del diari és el mateix que el de la factura."
 
 msgctxt "error:account.invoice:"
 msgid "The debit account on journal is missing!"
-msgstr "Falta el compte de dèbit del diari"
+msgstr "Falta el compte deure del diari."
 
 msgctxt "error:account.invoice:"
 msgid "The debit account on journal is the same than the invoice account!"
-msgstr "El compte de dèbit en el diari és la mateixa que el compte facturat"
+msgstr "El compte deure del diari és el mateix que el de la factura."
 
 msgctxt "error:account.invoice:"
 msgid "There is no invoice sequence on the period/fiscal year!"
-msgstr "No hi ha una seqüència de factura per al període/exercici fiscal"
+msgstr "No existeix una seqüència de factura pel període/exercici fiscal."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "You can not create an invoice\n"
 "with account from a different invoice company!"
 msgstr ""
-"No pot crear una factura\n"
-"amb un compte d'una companyia diferent a la qual factura"
+"No podeu crear una factura\n"
+"amb un compte d'una empresa diferent de la que factura."
 
 msgctxt "error:account.invoice:"
 msgid "You can not modify an invoice that is opened, paid!"
-msgstr "No pot modificar una factura que està oberta o pagada"
+msgstr "No podeu modificar una factura que està oberta o pagada."
 
 msgctxt "error:account.invoice:"
 msgid "You can not reset to draft an invoice that has move!"
-msgstr "No pot posar en esborrany una factura que té assentaments"
+msgstr "No podeu posar en esborrany una factura que té assentament."
 
 msgctxt "error:account.invoice:"
 msgid ""
 "You can not use the same account\n"
 "as on invoice line!"
 msgstr ""
-"No pot usar el mateix compte\n"
-"que la línia de la factura"
+"No podeu utilitzar el mateix compte\n"
+"que en la línia de la factura."
 
 msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the period"
 msgstr ""
-"No pot canviar la seqüència d'una factura si hi ha una factura oberta en el "
-"període"
+"No podeu canviar la seqüència d'una factura si ja hi ha una factura oberta "
+"en el període."
 
 msgctxt "error:account.period:"
 msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
 msgstr ""
-"Ha d'usar seqüències diferents de factura per exercici fiscal en la mateixa "
-"empresa"
+"Heu de tenir diferents seqüències de factura per exercici fiscal en la "
+"mateixa empresa."
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -184,11 +191,11 @@ msgstr "Seqüència de factura de proveïdor"
 
 msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Seqüència d'abonament a client"
+msgstr "Seqüència d'abonament de client"
 
 msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr "Seqüència de factures a client"
+msgstr "Seqüència de factura de client"
 
 msgctxt "field:account.invoice,account:"
 msgid "Account"
@@ -196,15 +203,15 @@ msgstr "Compte"
 
 msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
-msgstr "Data de comptabilització"
+msgstr "Data comptabilització"
 
 msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
-msgstr "Quantitat a pagar"
+msgstr "Import a pagar"
 
 msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
-msgstr "Quantitat a pagar avui"
+msgstr "Import a pagar avui"
 
 msgctxt "field:account.invoice,comment:"
 msgid "Comment"
@@ -216,24 +223,23 @@ msgstr "Empresa"
 
 msgctxt "field:account.invoice,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
 
-#, fuzzy
 msgctxt "field:account.invoice,create_uid:"
 msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
 
 msgctxt "field:account.invoice,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
-msgstr ""
+msgstr "Data moneda"
 
 msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimals de la divisa"
+msgstr "Dígits de la moneda"
 
 msgctxt "field:account.invoice,description:"
 msgid "Description"
@@ -241,23 +247,23 @@ msgstr "Descripció"
 
 msgctxt "field:account.invoice,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
-msgstr "Adreça de facturació"
+msgstr "Adreça de factura"
 
 msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
-msgstr "Data de factura"
+msgstr "Data factura"
 
 msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
-msgstr ""
+msgstr "Informe factura"
 
 msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
-msgstr "Format de l'informe de facturació"
+msgstr "Format de l'informe de factura"
 
 msgctxt "field:account.invoice,journal:"
 msgid "Journal"
@@ -285,7 +291,7 @@ msgstr "Tercer"
 
 msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
-msgstr "Idioma del tercer"
+msgstr "Idioma tercer"
 
 msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
@@ -301,7 +307,7 @@ msgstr "Nom"
 
 msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
-msgstr "Conciliat"
+msgstr "Concil·liada"
 
 msgctxt "field:account.invoice,reference:"
 msgid "Reference"
@@ -333,28 +339,27 @@ msgstr "Tipus"
 
 msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
-msgstr "Sense impost"
+msgstr "Base imponible"
 
 msgctxt "field:account.invoice,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
 
 msgctxt "field:account.invoice,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
 
 msgctxt "field:account.invoice-account.move.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
 
-#, fuzzy
 msgctxt "field:account.invoice-account.move.line,create_uid:"
 msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
 
 msgctxt "field:account.invoice-account.move.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
@@ -370,19 +375,19 @@ msgstr "Nom"
 
 msgctxt "field:account.invoice-account.move.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
 
 msgctxt "field:account.invoice-account.move.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
 
 msgctxt "field:account.invoice.credit.start,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
-msgstr ""
+msgstr "Amb devolució"
 
 msgctxt "field:account.invoice.line,account:"
 msgid "Account"
@@ -390,7 +395,7 @@ msgstr "Compte"
 
 msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
-msgstr "Quantitat"
+msgstr "Import"
 
 msgctxt "field:account.invoice.line,company:"
 msgid "Company"
@@ -398,20 +403,19 @@ msgstr "Empresa"
 
 msgctxt "field:account.invoice.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,create_uid:"
 msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
 
 msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimals de la divisa"
+msgstr "Dígits de la moneda"
 
 msgctxt "field:account.invoice.line,description:"
 msgid "Description"
@@ -419,7 +423,7 @@ msgstr "Descripció"
 
 msgctxt "field:account.invoice.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
@@ -443,7 +447,7 @@ msgstr "Tercer"
 
 msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
-msgstr "Idioma del tercer"
+msgstr "Idioma tercer"
 
 msgctxt "field:account.invoice.line,product:"
 msgid "Product"
@@ -451,7 +455,7 @@ msgstr "Producte"
 
 msgctxt "field:account.invoice.line,product_uom_category:"
 msgid "Product Uom Category"
-msgstr ""
+msgstr "Categoria UdM del producte"
 
 msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
@@ -483,28 +487,27 @@ msgstr "Decimals de la unitat"
 
 msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
-msgstr "Preu unitari"
+msgstr "Preu unitat"
 
 msgctxt "field:account.invoice.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
 
 msgctxt "field:account.invoice.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
 
 msgctxt "field:account.invoice.line-account.tax,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
 
-#, fuzzy
 msgctxt "field:account.invoice.line-account.tax,create_uid:"
 msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
 
 msgctxt "field:account.invoice.line-account.tax,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
@@ -520,108 +523,96 @@ msgstr "Impost"
 
 msgctxt "field:account.invoice.line-account.tax,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
 
 msgctxt "field:account.invoice.line-account.tax,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
 
 msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr ""
+msgstr "Compte del desajust"
 
 msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
-msgstr ""
+msgstr "Import del pagament"
 
 msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr ""
+msgstr "Import del desajust"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr "Empresa"
 
 msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
-msgstr ""
+msgstr "Moneda de pagament"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr ""
+msgstr "Decimals moneda de pagament"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr ""
+msgstr "Decimals de la moneda del desajust"
 
 msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr ""
+msgstr "Moneda del desajust"
 
 msgctxt "field:account.invoice.pay.ask,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
 msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr ""
+msgstr "Diari del desajust"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr "Línies"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Línies a pagar"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr "Línies de pagament"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Tipus"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
-msgstr "Quantitat"
+msgstr "Import"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
-msgstr "Gestió de divises"
+msgstr "Moneda"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígits de la divisa"
+msgstr "Dígits de la moneda"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
 msgstr "Data"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
 msgstr "Descripció"
 
 msgctxt "field:account.invoice.pay.start,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr "Diari"
@@ -632,12 +623,11 @@ msgstr "Actiu"
 
 msgctxt "field:account.invoice.payment_term,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term,create_uid:"
 msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
 
 msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
@@ -645,7 +635,7 @@ msgstr "Descripció"
 
 msgctxt "field:account.invoice.payment_term,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
@@ -661,57 +651,55 @@ msgstr "Nom"
 
 msgctxt "field:account.invoice.payment_term,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
 
 msgctxt "field:account.invoice.payment_term,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
 
 msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
-msgstr "Quantitat"
+msgstr "Import"
 
 msgctxt "field:account.invoice.payment_term.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term.line,create_uid:"
 msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
 
 msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimals de la divisa"
+msgstr "Dígits de la moneda"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
-msgstr ""
+msgstr "Dia del mes"
 
 msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
-msgstr "Nombre de dies"
+msgstr "Número de dies"
 
 msgctxt "field:account.invoice.payment_term.line,divisor:"
 msgid "Divisor"
-msgstr ""
+msgstr "Divisor"
 
 msgctxt "field:account.invoice.payment_term.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term.line,month:"
 msgid "Month"
 msgstr "Mes"
 
 msgctxt "field:account.invoice.payment_term.line,months:"
 msgid "Number of Months"
-msgstr ""
+msgstr "Número de mesos"
 
 msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
@@ -735,31 +723,23 @@ msgstr "Tipus"
 
 msgctxt "field:account.invoice.payment_term.line,weekday:"
 msgid "Day of Week"
-msgstr ""
+msgstr "Dia de la setmana"
 
 msgctxt "field:account.invoice.payment_term.line,weeks:"
 msgid "Number of Weeks"
-msgstr ""
+msgstr "Número de setmanes"
 
 msgctxt "field:account.invoice.payment_term.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
 
 msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
-msgstr ""
-
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr "Nom"
-
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgstr "Usuari modificació"
 
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
@@ -767,7 +747,7 @@ msgstr "Compte"
 
 msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
-msgstr "Quantitat"
+msgstr "Import"
 
 msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
@@ -775,20 +755,19 @@ msgstr "Base"
 
 msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
-msgstr "Codi de la base"
+msgstr "Codi base"
 
 msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
-msgstr "Signe de la base"
+msgstr "Signe base"
 
 msgctxt "field:account.invoice.tax,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
 
-#, fuzzy
 msgctxt "field:account.invoice.tax,create_uid:"
 msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
 
 msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
@@ -796,7 +775,7 @@ msgstr "Descripció"
 
 msgctxt "field:account.invoice.tax,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
@@ -816,7 +795,7 @@ msgstr "Seqüència"
 
 msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
-msgstr "Nombre de seqüència"
+msgstr "Número de seqüència"
 
 msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
@@ -832,15 +811,15 @@ msgstr "Signe de l'impost"
 
 msgctxt "field:account.invoice.tax,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
 
 msgctxt "field:account.invoice.tax,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
 
 msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr "Seqüència de l'abonament de proveïdor"
+msgstr "Seqüència d'abonament de proveïdor"
 
 msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
@@ -848,11 +827,11 @@ msgstr "Seqüència de factura de proveïdor"
 
 msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Seqüència d'abonament a client"
+msgstr "Seqüència d'abonament de client"
 
 msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr "Seqüència de factura a client"
+msgstr "Seqüència de factura de client"
 
 msgctxt "field:party.address,invoice:"
 msgid "Invoice"
@@ -860,19 +839,19 @@ msgstr "Factura"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr ""
+msgstr "Termini pagament del client"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
-msgstr "Termini de pagament al proveïdor"
+msgstr "Termini de pagament del proveïdor"
 
 msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr ""
+msgstr "Si està marcada, les factures actuals es pagarán."
 
 msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
-msgstr "Empleat per ordenar les línies ascendentemente"
+msgstr "Serveix per ordenar les línies de forma ascendent."
 
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
@@ -884,7 +863,7 @@ msgstr "Factura - Línia de pagament"
 
 msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
-msgstr ""
+msgstr "Inicialització factura abonament"
 
 msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
@@ -896,11 +875,11 @@ msgstr "Línia de factura - Impost"
 
 msgctxt "model:account.invoice.pay.ask,name:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Paga factura"
 
 msgctxt "model:account.invoice.pay.start,name:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Paga factura"
 
 msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
@@ -908,21 +887,11 @@ msgstr "Termini de pagament"
 
 msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
-msgstr "Línia del termini de pagament"
-
-#, fuzzy
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "account.invoice.payment_term.line.delay"
-msgstr "Linea de retard del termini de pagament"
-
-#, fuzzy
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "account.invoice.payment_term.line.type"
-msgstr "Tipus de línia del termini de pagament"
+msgstr "Línia termini de pagament"
 
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr ""
+msgstr "Imprimeix avís informe de factura"
 
 msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
@@ -942,11 +911,11 @@ msgstr "Abonaments de proveïdor"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
 msgid "Draft Supplier Credit Notes"
-msgstr "Esborrany d'abonaments de proveïdor"
+msgstr "Abonaments de proveïdor esborrany"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
 msgid "Pro Forma Supplier Credit Notes"
-msgstr "Abonaments de proveïdor pro forma"
+msgstr "Abonaments de proveïdor Pro Forma"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
 msgid "Opened Supplier Credit Notes"
@@ -958,11 +927,11 @@ msgstr "Factures de proveïdor"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
 msgid "Draft Supplier Invoices"
-msgstr "Esborrany de factures de proveïdor"
+msgstr "Factures de proveïdor esborrany"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
 msgid "Pro Forma Supplier Invoices"
-msgstr "Factures de proveïdor pro forma"
+msgstr "Factures de proveïdor Pro Forma"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
 msgid "Opened Supplier Invoices"
@@ -978,7 +947,7 @@ msgstr "Abonaments esborrany"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
 msgid "Pro Forma Credit Notes"
-msgstr "Abonaments pro forma"
+msgstr "Abonaments Pro Forma"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
 msgid "Opened Credit Notes"
@@ -994,7 +963,7 @@ msgstr "Factures esborrany"
 
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
 msgid "Pro Forma Invoices"
-msgstr "Factures pro forma"
+msgstr "Factures Pro Forma"
 
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
 msgid "Opened Invoices"
@@ -1004,12 +973,10 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Terminis de pagament"
 
-#, fuzzy
 msgctxt "model:ir.action,name:credit"
 msgid "Credit"
-msgstr "Haver-hi"
+msgstr "Abona"
 
-#, fuzzy
 msgctxt "model:ir.action,name:print"
 msgid "Invoice"
 msgstr "Factura"
@@ -1020,7 +987,7 @@ msgstr "Factura"
 
 msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Paga factura"
 
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
@@ -1032,19 +999,19 @@ msgstr "Totes les factures"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
-msgstr "Abonaments del proveïdor"
+msgstr "Abonaments de proveïdor"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
 msgid "Draft Supplier Credit Notes"
-msgstr "Abonaments de proveïdor esborrany"
+msgstr "Esborrany"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
 msgid "Pro Forma Supplier Credit Notes"
-msgstr "Abonaments de proveïdor pro forma"
+msgstr "Pro Forma"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
 msgid "Opened Supplier Credit Notes"
-msgstr "Abonaments de proveïdor oberts"
+msgstr "Oberts"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
@@ -1052,15 +1019,15 @@ msgstr "Factures de proveïdor"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
 msgid "Draft Supplier Invoices"
-msgstr "Factures de proveïdor esborrany"
+msgstr "Esborrany"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
 msgid "Pro Forma Supplier Invoices"
-msgstr "Factures de proveïdor pro forma"
+msgstr "Pro Forma"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
 msgid "Opened Supplier Invoices"
-msgstr "Factures de proveïdor obertes"
+msgstr "Obertes"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
@@ -1068,15 +1035,15 @@ msgstr "Abonaments"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
 msgid "Draft Credit Notes"
-msgstr "Abonament esborrany"
+msgstr "Esborrany"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
 msgid "Pro Forma Credit Notes"
-msgstr "Abonaments pro forma"
+msgstr "Pro Forma"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
 msgid "Opened Credit Notes"
-msgstr "Abonaments oberts"
+msgstr "Oberts"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
@@ -1084,15 +1051,15 @@ msgstr "Factures"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
 msgid "Draft Invoices"
-msgstr "Factures esborrany"
+msgstr "Esborrany"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
 msgid "Pro Forma Invoices"
-msgstr "Factures pro forma"
+msgstr "Pro Forma"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
 msgid "Opened Invoices"
-msgstr "Factures obertes"
+msgstr "Obertes"
 
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
@@ -1108,7 +1075,7 @@ msgstr "Terminis de pagament"
 
 msgctxt "odt:account.invoice:"
 msgid "Amount"
-msgstr "Quantitat"
+msgstr "Import"
 
 msgctxt "odt:account.invoice:"
 msgid "Base"
@@ -1116,7 +1083,7 @@ msgstr "Base"
 
 msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
-msgstr "Nº d'abonament:"
+msgstr "Abonament Nº:"
 
 msgctxt "odt:account.invoice:"
 msgid "Date"
@@ -1144,11 +1111,11 @@ msgstr "Factura esborrany"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
-msgstr "Esborrany d'abonament de proveïdor"
+msgstr "Abonament de proveïdor esborrany"
 
 msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
-msgstr "Esborrany de factura de proveïdor"
+msgstr "Factura de proveïdor esborrany"
 
 msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
@@ -1156,7 +1123,7 @@ msgstr "Correu electrònic:"
 
 msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
-msgstr "Nº de factura:"
+msgstr "Factura Nº:"
 
 msgctxt "odt:account.invoice:"
 msgid "Payment Term"
@@ -1168,19 +1135,19 @@ msgstr "Telèfon:"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
-msgstr "Abonament pro forma"
+msgstr "Abonament Pro Forma"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
-msgstr "Factura pro forma"
+msgstr "Factura Pro Forma"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
-msgstr "Abonament de proveïdor pro forma"
+msgstr "Abonament de proveïdor Pro Forma"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
-msgstr "Factura de proveïdor pro forma"
+msgstr "Factura de proveïdor Pro Forma"
 
 msgctxt "odt:account.invoice:"
 msgid "Quantity"
@@ -1216,15 +1183,15 @@ msgstr "Total:"
 
 msgctxt "odt:account.invoice:"
 msgid "Unit Price"
-msgstr "Preu"
+msgstr "Preu unitat"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
-msgstr ""
+msgstr "CIF/NIF:"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT:"
-msgstr "NIF:"
+msgstr "CIF/NIF:"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
@@ -1244,7 +1211,7 @@ msgstr "Pagada"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
-msgstr "Pro forma"
+msgstr "Pro Forma"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1256,7 +1223,7 @@ msgstr "Factura"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
-msgstr "Abonament del proveïdor"
+msgstr "Abonament de proveïdor"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
@@ -1296,128 +1263,120 @@ msgstr "Títol"
 
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
-msgstr ""
+msgstr "Pagament parcial"
 
-#, fuzzy
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
-msgstr "Pèrdua"
+msgstr "Desajust"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid ""
-msgstr ""
+msgstr " "
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "April"
-msgstr ""
+msgstr "Abril"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "August"
-msgstr ""
+msgstr "Agost"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "December"
-msgstr ""
+msgstr "Desembre"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "February"
-msgstr ""
+msgstr "Febrer"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "January"
-msgstr ""
+msgstr "Gener"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "July"
-msgstr ""
+msgstr "Juliol"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "June"
-msgstr ""
+msgstr "Juny"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "March"
-msgstr ""
+msgstr "Març"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "May"
-msgstr ""
+msgstr "Maig"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "November"
-msgstr ""
+msgstr "Novembre"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "October"
-msgstr ""
+msgstr "Octubre"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "September"
-msgstr ""
+msgstr "Setembre"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Fixed"
 msgstr "Fix"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Remainder"
-msgstr ""
+msgstr "Percentatge sobre remanent"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Total"
-msgstr ""
+msgstr "Percentatge sobre total"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Remainder"
-msgstr ""
+msgstr "Remanent"
 
+#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
-msgstr ""
+msgstr "Servidor"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Friday"
 msgstr "Divendres"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Monday"
 msgstr "Dilluns"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Saturday"
 msgstr "Dissabte"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Sunday"
 msgstr "Diumenge"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Thursday"
 msgstr "Dijous"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Tuesday"
 msgstr "Dimarts"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Dimecres"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr ""
+msgstr "Esteu segur d'abonar aquestes factures?"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr ""
+msgstr "Factura abonament"
 
 msgctxt "view:account.invoice.line:"
 msgid "General"
@@ -1435,55 +1394,41 @@ msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notes"
 
-msgctxt "view:account.invoice.line:"
-msgid "Products"
-msgstr "Productes"
-
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Paga factura"
 
 msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Paga factura"
 
-#, fuzzy
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Line"
-msgstr "Línia del termini de pagament"
+msgstr "Línia termini de pagament"
 
-#, fuzzy
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Lines"
-msgstr "Línies del termini de pagament"
+msgstr "Línies termini de pagament"
 
 msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
 msgstr "Termini de pagament"
 
 msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Line"
-msgstr "Línia del termini de pagament"
-
-msgctxt "view:account.invoice.payment_term:"
-msgid "Payment Term Lines"
-msgstr "Línies del termini de pagament"
-
-msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Terminis de pagament"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
-msgstr ""
+msgstr "Imprimeix factura"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
-msgstr ""
+msgstr "Les factures s'enviaran <i>directament</i> a la impressora."
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
-msgstr ""
+msgstr "Heu seleccionat més d'una factura per imprimir."
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
@@ -1491,30 +1436,17 @@ msgstr "Impost de la factura"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
-msgstr "Impostos de la factura"
+msgstr "Impostos de factura"
 
 msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr "Codi d'impost"
 
-#, fuzzy
 msgctxt "view:account.invoice.tax:"
 msgid "Taxes"
 msgstr "Impostos"
 
 msgctxt "view:account.invoice:"
-msgid "Amount Second Currency"
-msgstr "Quantitat en la divisa secundària"
-
-msgctxt "view:account.invoice:"
-msgid "Credit"
-msgstr "Haver"
-
-msgctxt "view:account.invoice:"
-msgid "Debit"
-msgstr "Deure"
-
-msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
@@ -1523,10 +1455,6 @@ msgid "Invoices"
 msgstr "Factures"
 
 msgctxt "view:account.invoice:"
-msgid "Lines"
-msgstr "Línies"
-
-msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Informació addicional"
 
@@ -1535,20 +1463,12 @@ msgid "Payment"
 msgstr "Pagament"
 
 msgctxt "view:account.invoice:"
-msgid "Payment Lines"
-msgstr "Línies de pagament"
-
-msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
-msgstr "Pro for_ma"
-
-msgctxt "view:account.invoice:"
-msgid "Taxes"
-msgstr "Impostos"
+msgstr "Pro For_ma"
 
 msgctxt "view:account.invoice:"
 msgid "_Cancel"
-msgstr "_Cancel·lar"
+msgstr "_Cancel·la"
 
 msgctxt "view:account.invoice:"
 msgid "_Draft"
@@ -1556,37 +1476,28 @@ msgstr "_Esborrany"
 
 msgctxt "view:account.invoice:"
 msgid "_Open"
-msgstr "_Obrir"
+msgstr "_Obre"
 
 msgctxt "view:account.invoice:"
 msgid "_Pay"
-msgstr "_Pagar"
-
-msgctxt "view:account.invoice:"
-msgid "_Reset to Draft"
-msgstr "_Restablir a esborrany"
+msgstr "_Paga"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
-msgstr "Quantitat en la divisa secundària"
+msgstr "Import segona moneda"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Credit"
-msgstr "Haver-hi"
+msgstr "Haver"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Debit"
-msgstr "Dèbit"
+msgstr "Deure"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Lines to Pay"
 msgstr "Línies a pagar"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Payment Lines"
 msgstr "Línies de pagament"
@@ -1595,41 +1506,34 @@ msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr "Terminis de pagament"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
-msgstr "Haver-hi"
+msgstr "Abona"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
-msgstr "Cancel·lar"
+msgstr "Cancel·la"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
-msgstr "Cancel·lar"
+msgstr "Cancel·la"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
-msgstr "Acceptar"
+msgstr "D'acord"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
-msgstr "Acceptar"
+msgstr "D'acord"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
-msgstr "Cancel·lar"
+msgstr "Cancel·la"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
-msgstr "Cancel·lar"
+msgstr "Cancel·la"
 
 msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
-msgstr ""
+msgstr "Imprimeix"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 9290ecf..b8ca226 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -708,14 +708,6 @@ msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr ""
-
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr ""
-
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
 msgstr ""
@@ -868,14 +860,6 @@ msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr ""
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "account.invoice.payment_term.line.delay"
-msgstr ""
-
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "account.invoice.payment_term.line.type"
-msgstr ""
-
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index acd0748..cce601a 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -742,14 +742,6 @@ msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr "Name"
-
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr "Name"
-
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
 msgstr "ID"
@@ -904,14 +896,6 @@ msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Zahlungsbedingung Position"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "account.invoice.payment_term.line.delay"
-msgstr "Zahlungsbedingung Position Frist"
-
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "account.invoice.payment_term.line.type"
-msgstr "Zahlungsbedingung Position Typ"
-
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr "Druck Rechnungsbericht Warnung"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index b5d8660..e1797b9 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -105,7 +105,7 @@ msgstr ""
 
 msgctxt "error:account.invoice:"
 msgid "Invoice \"%s\" must be cancelled before deletion!"
-msgstr "¡La factura \"%s\" debe ser cancelada antes de eliminarla!"
+msgstr "¡La factura «%s» debe ser cancelada antes de eliminarla!"
 
 msgctxt "error:account.invoice:"
 msgid ""
@@ -739,14 +739,6 @@ msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
 msgstr "ID"
@@ -899,14 +891,6 @@ msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Línea del plazo de pago"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "account.invoice.payment_term.line.delay"
-msgstr "Línea de retraso del plazo de pago"
-
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "account.invoice.payment_term.line.type"
-msgstr "Tipo de línea del plazo de pago"
-
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr "Imprimir aviso informe de factura"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index a6b59d8..96986a7 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -17,10 +17,11 @@ msgstr "¡Debe tener una secuencia diferente de facturación por año fiscal!"
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
 msgstr ""
+"Usted no puede abonar con un reembolso una factura que no esta abierta!"
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
-msgstr ""
+msgstr "Usted no puede abonar con un reembolso una factura pagada!"
 
 msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account!"
@@ -60,15 +61,15 @@ msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
-msgstr ""
+msgstr "No puede crear un pago a plazos con una cantidad mayor que el pago!"
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
-msgstr ""
+msgstr "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."
-msgstr ""
+msgstr "Porcentaje y Divisor no son consistentes."
 
 msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
@@ -86,7 +87,7 @@ msgstr ""
 
 msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
-msgstr ""
+msgstr "No puede modificar impuestos de una factura que abierta o pagada!"
 
 msgctxt "error:account.invoice:"
 msgid ""
@@ -96,7 +97,7 @@ msgstr "Los Impuestos Base difieren de las líneas de factura!"
 
 msgctxt "error:account.invoice:"
 msgid "Invoice \"%s\" must be cancelled before deletion!"
-msgstr ""
+msgstr "La factura \"%s\" debe ser cancelada antes de ser borrada!"
 
 msgctxt "error:account.invoice:"
 msgid ""
@@ -212,12 +213,11 @@ msgstr "Compañía"
 
 msgctxt "field:account.invoice,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
 
-#, fuzzy
 msgctxt "field:account.invoice,create_uid:"
 msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Crea usuario"
 
 msgctxt "field:account.invoice,currency:"
 msgid "Currency"
@@ -225,11 +225,11 @@ msgstr "Moneda"
 
 msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
-msgstr ""
+msgstr "Fecha de Moneda"
 
 msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de Moneda"
+msgstr "Decimales de Moneda"
 
 msgctxt "field:account.invoice,description:"
 msgid "Description"
@@ -237,7 +237,7 @@ msgstr "Descripción"
 
 msgctxt "field:account.invoice,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
@@ -249,7 +249,7 @@ msgstr "Fecha de Factura"
 
 msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
-msgstr ""
+msgstr "Informe de Factura"
 
 msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
@@ -289,7 +289,7 @@ msgstr "Líneas de Pago"
 
 msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
-msgstr "Término de Pago"
+msgstr "Forma de Pago"
 
 msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
@@ -333,24 +333,23 @@ msgstr "Sin Impuesto"
 
 msgctxt "field:account.invoice,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Fecha modificación"
 
 msgctxt "field:account.invoice,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuario modificación"
 
 msgctxt "field:account.invoice-account.move.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
 
-#, fuzzy
 msgctxt "field:account.invoice-account.move.line,create_uid:"
 msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Crea usuario"
 
 msgctxt "field:account.invoice-account.move.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
@@ -366,19 +365,19 @@ msgstr "Nombre"
 
 msgctxt "field:account.invoice-account.move.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Fecha modificación"
 
 msgctxt "field:account.invoice-account.move.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuario modificación"
 
 msgctxt "field:account.invoice.credit.start,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
-msgstr ""
+msgstr "Con Reembolso"
 
 msgctxt "field:account.invoice.line,account:"
 msgid "Account"
@@ -394,12 +393,11 @@ msgstr "Compañía"
 
 msgctxt "field:account.invoice.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
 
-#, fuzzy
 msgctxt "field:account.invoice.line,create_uid:"
 msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Crea usuario"
 
 msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
@@ -407,7 +405,7 @@ msgstr "Moneda"
 
 msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de Moneda"
+msgstr "Decimales de Moneda"
 
 msgctxt "field:account.invoice.line,description:"
 msgid "Description"
@@ -415,7 +413,7 @@ msgstr "Descripción"
 
 msgctxt "field:account.invoice.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
@@ -447,7 +445,7 @@ msgstr "Producto"
 
 msgctxt "field:account.invoice.line,product_uom_category:"
 msgid "Product Uom Category"
-msgstr ""
+msgstr "Categoría UdM del Producto"
 
 msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
@@ -483,24 +481,23 @@ msgstr "Precio Unitario"
 
 msgctxt "field:account.invoice.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Fecha modificación"
 
 msgctxt "field:account.invoice.line,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuario modificación"
 
 msgctxt "field:account.invoice.line-account.tax,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
 
-#, fuzzy
 msgctxt "field:account.invoice.line-account.tax,create_uid:"
 msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Crea usuario"
 
 msgctxt "field:account.invoice.line-account.tax,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
@@ -516,108 +513,96 @@ msgstr "Impuesto"
 
 msgctxt "field:account.invoice.line-account.tax,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Fecha modificación"
 
 msgctxt "field:account.invoice.line-account.tax,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuario modificación"
 
 msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr ""
+msgstr "Cancelar Cuenta"
 
 msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
-msgstr ""
+msgstr "Cantidad del Pago"
 
 msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr ""
+msgstr "Cantidad a Cancelar"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr "Compañía"
 
 msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
-msgstr ""
+msgstr "Moneda de Pago"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr ""
+msgstr "Decimales de la Moneda de Pago"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr ""
+msgstr "Cancelar Decimales de Moneda"
 
 msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr ""
+msgstr "Cancelar Moneda"
 
 msgctxt "field:account.invoice.pay.ask,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
 msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr ""
+msgstr "Cancelar Diario"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr "Líneas de Inventario"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Líneas a Pagar"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr "Líneas de Pago"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Tipo"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
 msgstr "Cantidad"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
 msgstr "Moneda"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr "Gestión de Moneda"
+msgstr "Decimales de Moneda"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
 msgstr "Fecha"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
 msgstr "Descripción"
 
 msgctxt "field:account.invoice.pay.start,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr "Diario"
@@ -628,12 +613,11 @@ msgstr "Activo"
 
 msgctxt "field:account.invoice.payment_term,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term,create_uid:"
 msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Crea usuario"
 
 msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
@@ -641,7 +625,7 @@ msgstr "Descripción"
 
 msgctxt "field:account.invoice.payment_term,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
@@ -657,11 +641,11 @@ msgstr "Nombre"
 
 msgctxt "field:account.invoice.payment_term,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Fecha modificación"
 
 msgctxt "field:account.invoice.payment_term,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuario modificación"
 
 msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
@@ -669,12 +653,11 @@ msgstr "Cantidad"
 
 msgctxt "field:account.invoice.payment_term.line,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term.line,create_uid:"
 msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Crea usuario"
 
 msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
@@ -686,7 +669,7 @@ msgstr "Dígitos de Moneda"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
-msgstr ""
+msgstr "Día del Mes"
 
 msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
@@ -694,20 +677,19 @@ msgstr "Cantidad de días"
 
 msgctxt "field:account.invoice.payment_term.line,divisor:"
 msgid "Divisor"
-msgstr ""
+msgstr "Divisor"
 
 msgctxt "field:account.invoice.payment_term.line,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
-#, fuzzy
 msgctxt "field:account.invoice.payment_term.line,month:"
 msgid "Month"
 msgstr "Mes"
 
 msgctxt "field:account.invoice.payment_term.line,months:"
 msgid "Number of Months"
-msgstr ""
+msgstr "Número de Meses"
 
 msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
@@ -731,31 +713,23 @@ msgstr "Tipo"
 
 msgctxt "field:account.invoice.payment_term.line,weekday:"
 msgid "Day of Week"
-msgstr ""
+msgstr "Día de la Semana"
 
 msgctxt "field:account.invoice.payment_term.line,weeks:"
 msgid "Number of Weeks"
-msgstr ""
+msgstr "Número de Semanas"
 
 msgctxt "field:account.invoice.payment_term.line,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Fecha modificación"
 
 msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
-msgstr ""
-
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgstr "Usuario modificación"
 
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
@@ -779,12 +753,11 @@ msgstr "Signo Base"
 
 msgctxt "field:account.invoice.tax,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
 
-#, fuzzy
 msgctxt "field:account.invoice.tax,create_uid:"
 msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Crea usuario"
 
 msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
@@ -792,7 +765,7 @@ msgstr "Descripción"
 
 msgctxt "field:account.invoice.tax,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
@@ -828,11 +801,11 @@ msgstr "Signo del Impuesto"
 
 msgctxt "field:account.invoice.tax,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Fecha modificación"
 
 msgctxt "field:account.invoice.tax,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Usuario modificación"
 
 msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
@@ -856,15 +829,15 @@ msgstr "Factura"
 
 msgctxt "field:party.party,customer_payment_term:"
 msgid "Customer Payment Term"
-msgstr ""
+msgstr "Formas de Pago del Cliente"
 
 msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
-msgstr "Término de Pago a Proveedor"
+msgstr "Forma de Pago a Proveedor"
 
 msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr ""
+msgstr "Si es verdadero, las actuales facturas serán pagadas."
 
 msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
@@ -880,7 +853,7 @@ msgstr "Factura - Línea de pago"
 
 msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
-msgstr ""
+msgstr "Inicializar Factura Credito"
 
 msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
@@ -892,33 +865,23 @@ msgstr "Línea de Factura - Impuesto"
 
 msgctxt "model:account.invoice.pay.ask,name:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Pagar Factura"
 
 msgctxt "model:account.invoice.pay.start,name:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Pagar Factura"
 
 msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
-msgstr "Término de Pago"
+msgstr "Forma de Pago"
 
 msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Línea de Término de Pago"
 
-#, fuzzy
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "account.invoice.payment_term.line.delay"
-msgstr "Línea de Pago Tardío"
-
-#, fuzzy
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "account.invoice.payment_term.line.type"
-msgstr "Tipo Pago de Término"
-
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr ""
+msgstr "Imprimir Aviso de Reporte Factura"
 
 msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
@@ -1000,12 +963,10 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Formas de Pago"
 
-#, fuzzy
 msgctxt "model:ir.action,name:credit"
 msgid "Credit"
 msgstr "Crédito"
 
-#, fuzzy
 msgctxt "model:ir.action,name:print"
 msgid "Invoice"
 msgstr "Factura"
@@ -1016,7 +977,7 @@ msgstr "Factura"
 
 msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Pagar Factura"
 
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
@@ -1216,11 +1177,11 @@ msgstr "Precio Unitario"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
-msgstr ""
+msgstr "Número NIT:"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT:"
-msgstr "IVA:"
+msgstr "NIT:"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
@@ -1292,128 +1253,119 @@ msgstr "Título"
 
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
-msgstr ""
+msgstr "Pago Parcial"
 
-#, fuzzy
 msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
 msgstr "Exento"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid ""
-msgstr ""
+msgstr "Cuenta de impuesto"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "April"
-msgstr ""
+msgstr "Abril"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "August"
-msgstr ""
+msgstr "Agosto"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "December"
-msgstr ""
+msgstr "Diciembre"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "February"
-msgstr ""
+msgstr "Febrero"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "January"
-msgstr ""
+msgstr "Enero"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "July"
-msgstr ""
+msgstr "Julio"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "June"
-msgstr ""
+msgstr "Junio"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "March"
-msgstr ""
+msgstr "Marzo"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "May"
-msgstr ""
+msgstr "Mayo"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "November"
-msgstr ""
+msgstr "Noviembre"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "October"
-msgstr ""
+msgstr "Octubre"
 
 msgctxt "selection:account.invoice.payment_term.line,month:"
 msgid "September"
-msgstr ""
+msgstr "Septiembre"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Fixed"
 msgstr "Fijo"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Remainder"
-msgstr ""
+msgstr "Porcentaje del Resto"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Percentage on Total"
-msgstr ""
+msgstr "Porcentaje del Total"
 
 msgctxt "selection:account.invoice.payment_term.line,type:"
 msgid "Remainder"
-msgstr ""
+msgstr "Saldo"
 
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid ""
-msgstr ""
+msgstr "Cuenta de impuesto"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Friday"
 msgstr "Viernes"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Monday"
 msgstr "Lunes"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Saturday"
 msgstr "Sábado"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Sunday"
 msgstr "Domingo"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Thursday"
 msgstr "Jueves"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Tuesday"
 msgstr "Martes"
 
-#, fuzzy
 msgctxt "selection:account.invoice.payment_term.line,weekday:"
 msgid "Wednesday"
 msgstr "Miércoles"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr ""
+msgstr "Esta seguro que desea acreditar esta(s) facturas?"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr ""
+msgstr "Factura Credito"
 
 msgctxt "view:account.invoice.line:"
 msgid "General"
@@ -1437,18 +1389,16 @@ msgstr "Productos"
 
 msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Pagar Factura"
 
 msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
-msgstr ""
+msgstr "Pagar Factura"
 
-#, fuzzy
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Line"
 msgstr "Línea de Término de Pago"
 
-#, fuzzy
 msgctxt "view:account.invoice.payment_term.line:"
 msgid "Payment Term Lines"
 msgstr "Líneas de Término de Pago"
@@ -1471,15 +1421,15 @@ msgstr "Formas de Pago"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
-msgstr ""
+msgstr "Imprimir Factura"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
-msgstr ""
+msgstr "Las facturas serán enviadas <i>directamente</i> a la impresora."
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
-msgstr ""
+msgstr "Tiene seleccionada más de una factura para imprimir."
 
 msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
@@ -1493,14 +1443,13 @@ msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr "Código de Impuesto"
 
-#, fuzzy
 msgctxt "view:account.invoice.tax:"
 msgid "Taxes"
 msgstr "Impuestos"
 
 msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
-msgstr "Cantidad en la Moneda Secundaria"
+msgstr "Cantidad en la Segunda Moneda"
 
 msgctxt "view:account.invoice:"
 msgid "Credit"
@@ -1562,27 +1511,22 @@ msgctxt "view:account.invoice:"
 msgid "_Reset to Draft"
 msgstr "_Revertir a Borrador"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
-msgstr "Cantidad en la Moneda Secundaria"
+msgstr "Cantidad en la Segunda Moneda"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Credit"
 msgstr "Crédito"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Debit"
 msgstr "Débito"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Lines to Pay"
 msgstr "Líneas a Pagar"
 
-#, fuzzy
 msgctxt "view:account.move.line:"
 msgid "Payment Lines"
 msgstr "Líneas de Pago"
@@ -1591,41 +1535,34 @@ msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr "Formas de Pago"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
 msgstr "Crédito"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
 msgstr "Aceptar"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
 msgstr "Aceptar"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#, fuzzy
 msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
 msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
-msgstr ""
+msgstr "Imprimir"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 76ef64b..3032e65 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -7,13 +7,12 @@ msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
 msgstr ""
-"No puede cambiar la secuencia de una factura si ya hay una abierta en el "
-"ejercicio fiscal."
+"No puede cambiar la secuencia de una factura si ya hay una factura abierta "
+"en el ejercicio fiscal."
 
 msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
-msgstr ""
-"Debe tener una secuencia distinta de facturación por ejercicio fiscal."
+msgstr "Debe tener distintas secuencias de factura por ejercicio fiscal."
 
 msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
@@ -31,7 +30,7 @@ msgstr "Una 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 \"línea\" debe tener una factura."
+msgstr "Una línea sin el tipo \"línea\" debe tener una factura."
 
 msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
@@ -50,7 +49,7 @@ msgstr ""
 msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
 msgstr ""
-"No puede modificar una línea de una factura que está abierta o pagada."
+"No puede modificar las líneas de una factura que está abierta o pagada."
 
 msgctxt "error:account.invoice.line:"
 msgid ""
@@ -69,7 +68,7 @@ msgstr ""
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Day of month must be between 1 and 31."
-msgstr "El día del mes debe ser entre 1 y 31."
+msgstr "El día del mes debe estar entre 1 y 31."
 
 msgctxt "error:account.invoice.payment_term.line:"
 msgid "Percentage and Divisor values are not consistent."
@@ -111,7 +110,7 @@ msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
 msgstr ""
-"Tiene impuestos definidos pero ninguno en las líneas de la factura.\n"
+"Los impuestos están definidos en la factura pero ninguno en las líneas de la factura.\n"
 "Recalcule la factura."
 
 msgctxt "error:account.invoice:"
@@ -179,7 +178,7 @@ msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
 msgstr ""
-"Debe usar secuencias distintas de factura por ejercicio fiscal en la misma "
+"Debe tener distintas secuencias de factura por ejercicio fiscal en la misma "
 "empresa."
 
 msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
@@ -232,15 +231,15 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.invoice,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
-msgstr "Fecha divisa"
+msgstr "Fecha moneda"
 
 msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimales de la divisa"
+msgstr "Decimales de la moneda"
 
 msgctxt "field:account.invoice,description:"
 msgid "Description"
@@ -412,11 +411,11 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimales de la divisa"
+msgstr "Decimales de la moneda"
 
 msgctxt "field:account.invoice.line,description:"
 msgid "Description"
@@ -488,7 +487,7 @@ msgstr "Decimales de la unidad"
 
 msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
-msgstr "Precio unitario"
+msgstr "Precio unidad"
 
 msgctxt "field:account.invoice.line,write_date:"
 msgid "Write Date"
@@ -532,15 +531,15 @@ msgstr "Usuario modificación"
 
 msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr "Cuenta de desajuste"
+msgstr "Cuenta del desajuste"
 
 msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
-msgstr "Importe de pago"
+msgstr "Importe del pago"
 
 msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr "Importe de desajuste"
+msgstr "Importe del desajuste"
 
 msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
@@ -548,19 +547,19 @@ msgstr "Empresa"
 
 msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
-msgstr "Divisa de pago"
+msgstr "Moneda de pago"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr "Decimales divisa de pago"
+msgstr "Decimales moneda de pago"
 
 msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr "Decimales divisa de desajuste"
+msgstr "Decimales moneda del desajuste"
 
 msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr "Divisa de desajuste"
+msgstr "Moneda del desajuste"
 
 msgctxt "field:account.invoice.pay.ask,id:"
 msgid "ID"
@@ -572,7 +571,7 @@ msgstr "Factura"
 
 msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr "Diario de desajuste"
+msgstr "Diario del desajuste"
 
 msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
@@ -596,11 +595,11 @@ msgstr "Importe"
 
 msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimales de la divisa"
+msgstr "Decimales de la moneda"
 
 msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
@@ -672,11 +671,11 @@ msgstr "Usuario creación"
 
 msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
-msgstr "Divisa"
+msgstr "Moneda"
 
 msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
-msgstr "Decimales de la divisa"
+msgstr "Decimales de la moneda"
 
 msgctxt "field:account.invoice.payment_term.line,day:"
 msgid "Day of Month"
@@ -738,14 +737,6 @@ msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
 msgstr "Usuario modificación"
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
 msgstr "ID"
@@ -856,11 +847,11 @@ msgstr "Plazo de pago del proveedor"
 
 msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr "Si está marcada, la factura(s) actual será pagada."
+msgstr "Si está marcada, las facturas actuales se pagarán."
 
 msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
-msgstr "Sirve para ordenar las líneas ascendentemente."
+msgstr "Sirve para ordenar las líneas de forma ascendente."
 
 msgctxt "model:account.invoice,name:"
 msgid "Invoice"
@@ -898,14 +889,6 @@ msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Línea del plazo de pago"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "account.invoice.payment_term.line.delay"
-msgstr "Línea de retraso del plazo de pago"
-
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "account.invoice.payment_term.line.type"
-msgstr "Tipo de línea del plazo de pago"
-
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr "Imprimir aviso informe de factura"
@@ -932,7 +915,7 @@ msgstr "Abonos de proveedor borrador"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
 msgid "Pro Forma Supplier Credit Notes"
-msgstr "Abonos de proveedor pro forma"
+msgstr "Abonos de proveedor Pro Forma"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
 msgid "Opened Supplier Credit Notes"
@@ -940,7 +923,7 @@ msgstr "Abonos de proveedor abiertos"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
-msgstr "Facturas de proveedor"
+msgstr "Facturas proveedor"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
 msgid "Draft Supplier Invoices"
@@ -948,11 +931,11 @@ msgstr "Facturas de proveedor borrador"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
 msgid "Pro Forma Supplier Invoices"
-msgstr "Facturas de proveedor pro forma"
+msgstr "Facturas proveedor Pro Forma"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
 msgid "Opened Supplier Invoices"
-msgstr "Facturas de proveedor abiertas"
+msgstr "Facturas proveedor abiertas"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
@@ -964,7 +947,7 @@ msgstr "Abonos borrador"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
 msgid "Pro Forma Credit Notes"
-msgstr "Abonos pro forma"
+msgstr "Abonos Pro Forma"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
 msgid "Opened Credit Notes"
@@ -980,7 +963,7 @@ msgstr "Facturas borrador"
 
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
 msgid "Pro Forma Invoices"
-msgstr "Facturas pro forma"
+msgstr "Facturas Pro Forma"
 
 msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
 msgid "Opened Invoices"
@@ -1020,31 +1003,31 @@ msgstr "Abonos de proveedor"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
 msgid "Draft Supplier Credit Notes"
-msgstr "Abonos de proveedor borrador"
+msgstr "Borrador"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
 msgid "Pro Forma Supplier Credit Notes"
-msgstr "Abonos de proveedor pro forma"
+msgstr "Pro Forma"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
 msgid "Opened Supplier Credit Notes"
-msgstr "Abonos de proveedor abiertos"
+msgstr "Abiertos"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
-msgstr "Facturas de proveedor"
+msgstr "Facturas proveedor"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
 msgid "Draft Supplier Invoices"
-msgstr "Facturas de proveedor borrador"
+msgstr "Borrador"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
 msgid "Pro Forma Supplier Invoices"
-msgstr "Facturas de proveedor pro forma"
+msgstr "Pro Forma"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
 msgid "Opened Supplier Invoices"
-msgstr "Facturas de proveedor abiertas"
+msgstr "Abiertas"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
@@ -1052,15 +1035,15 @@ msgstr "Abonos"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
 msgid "Draft Credit Notes"
-msgstr "Abono borrador"
+msgstr "Borrador"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
 msgid "Pro Forma Credit Notes"
-msgstr "Abonos pro forma"
+msgstr "Pro Forma"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
 msgid "Opened Credit Notes"
-msgstr "Abonos abiertos"
+msgstr "Abiertos"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
 msgid "Invoices"
@@ -1068,15 +1051,15 @@ msgstr "Facturas"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
 msgid "Draft Invoices"
-msgstr "Facturas borrador"
+msgstr "Borrador"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
 msgid "Pro Forma Invoices"
-msgstr "Facturas pro forma"
+msgstr "Pro Forma"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
 msgid "Opened Invoices"
-msgstr "Facturas abiertas"
+msgstr "Abiertas"
 
 msgctxt "model:ir.ui.menu,name:menu_invoices"
 msgid "Invoices"
@@ -1152,19 +1135,19 @@ msgstr "Teléfono:"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
-msgstr "Abono pro forma"
+msgstr "Abono Pro Forma"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
-msgstr "Factura pro forma"
+msgstr "Factura Pro Forma"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
-msgstr "Abono de proveedor pro forma"
+msgstr "Abono de proveedor Pro Forma"
 
 msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
-msgstr "Factura de proveedor pro forma"
+msgstr "Factura de proveedor Pro Forma"
 
 msgctxt "odt:account.invoice:"
 msgid "Quantity"
@@ -1204,11 +1187,11 @@ msgstr "Precio unidad"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
-msgstr "NIF:"
+msgstr "CIF/NIF:"
 
 msgctxt "odt:account.invoice:"
 msgid "VAT:"
-msgstr "NIF:"
+msgstr "CIF/NIF:"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
@@ -1228,7 +1211,7 @@ msgstr "Pagada"
 
 msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
-msgstr "Pro forma"
+msgstr "Pro Forma"
 
 msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
@@ -1388,7 +1371,7 @@ msgstr "Miércoles"
 
 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?"
+msgstr "¿Está seguro de abonar estas facturas?"
 
 msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
@@ -1452,7 +1435,7 @@ msgstr "Imprimir factura"
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
-msgstr "Las facturas serán enviadas <i>directamente</i> a la impresora."
+msgstr "Las facturas se enviarán <i>directamente</i> a la impresora."
 
 msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
@@ -1476,7 +1459,7 @@ msgstr "Impuestos"
 
 msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
-msgstr "Importe divisa secundaria"
+msgstr "Importe moneda secundaria"
 
 msgctxt "view:account.invoice:"
 msgid "Credit"
@@ -1512,7 +1495,7 @@ msgstr "Líneas de pago"
 
 msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
-msgstr "Pro for_ma"
+msgstr "Pro For_ma"
 
 msgctxt "view:account.invoice:"
 msgid "Taxes"
@@ -1540,7 +1523,7 @@ msgstr "_Restablecer a borrador"
 
 msgctxt "view:account.move.line:"
 msgid "Amount Second Currency"
-msgstr "Importe divisa secundaria"
+msgstr "Importe moneda secundaria"
 
 msgctxt "view:account.move.line:"
 msgid "Credit"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index f1d4676..67b5254 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -861,7 +861,7 @@ msgstr "Mois"
 
 msgctxt "field:account.invoice.payment_term.line,months:"
 msgid "Number of Months"
-msgstr "Bombre de mois"
+msgstr "Nombre de mois"
 
 msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
@@ -899,14 +899,6 @@ msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr "Nom"
-
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr "Nom"
-
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
 msgstr "ID"
@@ -1059,14 +1051,6 @@ msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Ligne de condition de paiement"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "account.invoice.payment_term.line.delay"
-msgstr "Délai de ligne de condition de paiement"
-
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "account.invoice.payment_term.line.type"
-msgstr "Type de line de condition de paiement"
-
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr "Avertissement impression facture"
@@ -1089,7 +1073,7 @@ msgstr "Notes de crédit fournisseur"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
 msgid "Draft Supplier Credit Notes"
-msgstr "Notes de crédit fournisseurs en brouillon"
+msgstr "Notes de crédit fournisseurs brouillon"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
 msgid "Pro Forma Supplier Credit Notes"
@@ -1101,19 +1085,19 @@ msgstr "Notes de crédit fournisseurs ouvertes"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
 msgid "Supplier Invoices"
-msgstr "Factures fournisseurs"
+msgstr "Factures fournisseur"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
 msgid "Draft Supplier Invoices"
-msgstr "Factures fournisseurs ouvertes"
+msgstr "Factures fournisseur ouvertes"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
 msgid "Pro Forma Supplier Invoices"
-msgstr "Factures fournisseurs pro forma"
+msgstr "Factures fournisseur pro forma"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
 msgid "Opened Supplier Invoices"
-msgstr "Factures fournisseurs ouvertes"
+msgstr "Factures fournisseur ouvertes"
 
 msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
 msgid "Credit Notes"
@@ -1181,7 +1165,7 @@ msgstr "Notes de crédit fournisseur"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
 msgid "Draft Supplier Credit Notes"
-msgstr "Notes de crédit fournisseur en brouillon"
+msgstr "Notes de crédit fournisseur brouillon"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
 msgid "Pro Forma Supplier Credit Notes"
@@ -1193,19 +1177,19 @@ msgstr "Notes de crédit fournisseur ouvertes"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
 msgid "Supplier Invoices"
-msgstr "Factures fournisseurs"
+msgstr "Factures fournisseur"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
 msgid "Draft Supplier Invoices"
-msgstr "Factures fournisseurs en brouillon"
+msgstr "Factures fournisseur brouillon"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
 msgid "Pro Forma Supplier Invoices"
-msgstr "Factures fournisseurs pro forma"
+msgstr "Factures fournisseur pro forma"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
 msgid "Opened Supplier Invoices"
-msgstr "Factures fournisseurs ouvertes"
+msgstr "Factures fournisseur ouvertes"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
 msgid "Credit Notes"
@@ -1213,7 +1197,7 @@ msgstr "Notes de crédit"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
 msgid "Draft Credit Notes"
-msgstr "Notes de crédit en brouillon"
+msgstr "Notes de crédit brouillon"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
 msgid "Pro Forma Credit Notes"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index a87fa2e..2165f8c 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -747,14 +747,6 @@ msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr "Naam"
-
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr "Naam"
-
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
 msgstr ""
@@ -907,16 +899,6 @@ msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Betalingstermijn regel"
 
-#, fuzzy
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "account.invoice.payment_term.line.delay"
-msgstr "Betalingstermijn uitstelregel"
-
-#, fuzzy
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "account.invoice.payment_term.line.type"
-msgstr "Betalingstermijn regeltype"
-
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr ""
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index 679484d..6baf99a 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -748,16 +748,6 @@ msgctxt "field:account.invoice.payment_term.line,write_uid:"
 msgid "Write User"
 msgstr ""
 
-#, fuzzy
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
-msgid "Name"
-msgstr "Наименование"
-
-#, fuzzy
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
-msgid "Name"
-msgstr "Наименование"
-
 msgctxt "field:account.invoice.print.warning,id:"
 msgid "ID"
 msgstr ""
@@ -913,14 +903,6 @@ msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr ""
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:"
-msgid "account.invoice.payment_term.line.delay"
-msgstr ""
-
-msgctxt "model:account.invoice.payment_term.line.type,name:"
-msgid "account.invoice.payment_term.line.type"
-msgstr ""
-
 msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr ""
diff --git a/party.py b/party.py
index 7fd97bb..ebbf2af 100644
--- a/party.py
+++ b/party.py
@@ -1,37 +1,37 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 from trytond.model import ModelView, ModelSQL, fields
-from trytond.pool import Pool
+from trytond.pool import Pool, PoolMeta
 
+__all__ = ['Address', 'Party']
+__metaclass__ = PoolMeta
 
-class Address(ModelSQL, ModelView):
-    _name = 'party.address'
-    invoice = fields.Boolean('Invoice')
 
-Address()
+class Address:
+    __name__ = 'party.address'
+    invoice = fields.Boolean('Invoice')
 
 
 class Party(ModelSQL, ModelView):
-    _name = 'party.party'
+    __name__ = 'party.party'
     customer_payment_term = fields.Property(fields.Many2One(
         'account.invoice.payment_term', string='Customer Payment Term'))
     supplier_payment_term = fields.Property(fields.Many2One(
         'account.invoice.payment_term', string='Supplier Payment Term'))
 
-    def init(self, module_name):
-        ir_model_field_obj = Pool().get('ir.model.field')
+    @classmethod
+    def __register__(cls, module_name):
+        ModelField = Pool().get('ir.model.field')
 
         # Migration from 2.2: property field payment_term renamed
         # to customer_payment_term
-        field_ids = ir_model_field_obj.search([
+        fields = ModelField.search([
                 ('name', '=', 'payment_term'),
                 ('model.model', '=', 'party.party')
                 ])
-        if field_ids:
-            ir_model_field_obj.write(field_ids, {
+        if fields:
+            ModelField.write(fields, {
                     'name': 'customer_payment_term',
                     })
 
-        super(Party, self).init(module_name)
-
-Party()
+        super(Party, cls).__register__(module_name)
diff --git a/payment_term.py b/payment_term.py
index 3c32599..f92cb7a 100644
--- a/payment_term.py
+++ b/payment_term.py
@@ -8,11 +8,12 @@ from trytond.pyson import Eval
 from trytond.transaction import Transaction
 from trytond.pool import Pool
 
+__all__ = ['PaymentTerm', 'PaymentTermLine']
+
 
 class PaymentTerm(ModelSQL, ModelView):
     'Payment Term'
-    _name = 'account.invoice.payment_term'
-    _description = __doc__
+    __name__ = 'account.invoice.payment_term'
     name = fields.Char('Payment Term', size=None, required=True,
         translate=True)
     active = fields.Boolean('Active')
@@ -20,41 +21,39 @@ class PaymentTerm(ModelSQL, ModelView):
     lines = fields.One2Many('account.invoice.payment_term.line', 'payment',
             'Lines')
 
-    def __init__(self):
-        super(PaymentTerm, self).__init__()
-        self._order.insert(0, ('name', 'ASC'))
-        self._error_messages.update({
+    @classmethod
+    def __setup__(cls):
+        super(PaymentTerm, cls).__setup__()
+        cls._order.insert(0, ('name', 'ASC'))
+        cls._error_messages.update({
             'invalid_line': 'Invalid payment term line!',
             'missing_remainder': 'Payment term missing a remainder line!',
             })
 
-    def default_active(self):
+    @staticmethod
+    def default_active():
         return True
 
-    def compute(self, amount, currency, payment_term, date=None):
+    def compute(self, amount, currency, date=None):
         """Calculate payment terms and return a list of tuples
         with (date, amount) for each payment term line.
 
-        amount must be a Decimal used for the calculation and
-        both currency and payment_term must be BrowseRecord. If
-        specified, date will be used as the start date, otherwise
-        current date will be used.
+        amount must be a Decimal used for the calculation.
+        If specified, date will be used as the start date, otherwise current
+        date will be used.
         """
         #TODO implement business_days
         # http://pypi.python.org/pypi/BusinessHours/
-        pool = Pool()
-        line_obj = pool.get('account.invoice.payment_term.line')
-        currency_obj = pool.get('currency.currency')
-        date_obj = pool.get('ir.date')
+        Date = Pool().get('ir.date')
 
         sign = 1 if amount >= Decimal('0.0') else -1
         res = []
         if date is None:
-            date = date_obj.today()
+            date = Date.today()
         remainder = amount
-        for line in payment_term.lines:
-            value = line_obj.get_value(line, remainder, amount, currency)
-            value_date = line_obj.get_date(line, date)
+        for line in self.lines:
+            value = line.get_value(remainder, amount, currency)
+            value_date = line.get_date(date)
             if not value or not value_date:
                 if (not remainder) and line.amount:
                     self.raise_user_error('invalid_line')
@@ -66,19 +65,18 @@ class PaymentTerm(ModelSQL, ModelView):
             res.append((value_date, value))
             remainder -= value
 
-        if not currency_obj.is_zero(currency, remainder):
+        if not currency.is_zero(remainder):
             self.raise_user_error('missing_remainder')
         return res
 
-PaymentTerm()
-
 
 class PaymentTermLine(ModelSQL, ModelView):
     'Payment Term Line'
-    _name = 'account.invoice.payment_term.line'
-    _description = __doc__
-    sequence = fields.Integer('Sequence', required=True,
-            help='Use to order lines in ascending order')
+    __name__ = 'account.invoice.payment_term.line'
+    sequence = fields.Integer('Sequence',
+        order_field='(%(table)s.sequence IS NULL) %(order)s, '
+        '%(table)s.sequence %(order)s',
+        help='Use to order lines in ascending order')
     payment = fields.Many2One('account.invoice.payment_term', 'Payment Term',
             required=True, ondelete="CASCADE")
     type = fields.Selection([
@@ -109,7 +107,7 @@ class PaymentTermLine(ModelSQL, ModelView):
             'required': Eval('type') == 'fixed',
             }, depends=['type'])
     currency_digits = fields.Function(fields.Integer('Currency Digits',
-        on_change_with=['currency']), 'get_currency_digits')
+        on_change_with=['currency']), 'on_change_with_currency_digits')
     day = fields.Integer('Day of Month')
     month = fields.Selection([
             (None, ''),
@@ -140,129 +138,126 @@ class PaymentTermLine(ModelSQL, ModelView):
     weeks = fields.Integer('Number of Weeks', required=True)
     days = fields.Integer('Number of Days', required=True)
 
-    def __init__(self):
-        super(PaymentTermLine, self).__init__()
-        self._order.insert(0, ('sequence', 'ASC'))
-        self._sql_constraints += [
+    @classmethod
+    def __setup__(cls):
+        super(PaymentTermLine, cls).__setup__()
+        cls._order.insert(0, ('sequence', 'ASC'))
+        cls._sql_constraints += [
             ('day', 'CHECK(day BETWEEN 1 AND 31)',
                 'Day of month must be between 1 and 31.'),
             ]
-        self._constraints += [
+        cls._constraints += [
             ('check_percentage_and_divisor', 'invalid_percentage_and_divisor'),
             ]
-        self._error_messages.update({
+        cls._error_messages.update({
                 'invalid_percentage_and_divisor': 'Percentage and '
                         'Divisor values are not consistent.',
                 })
 
-    def init(self, module_name):
-        super(PaymentTermLine, self).init(module_name)
+    @classmethod
+    def __register__(cls, module_name):
+        super(PaymentTermLine, cls).__register__(module_name)
         cursor = Transaction().cursor
-        table = TableHandler(cursor, self, module_name)
+        table = TableHandler(cursor, cls, module_name)
 
         # Migration from 1.0 percent change into percentage
         if table.column_exist('percent'):
-            cursor.execute('UPDATE "' + self._table + '" ' \
+            cursor.execute('UPDATE "' + cls._table + '" ' \
                     'SET percentage = percent * 100')
             table.drop_column('percent', exception=True)
 
         # Migration from 2.2
         if table.column_exist('delay'):
-            cursor.execute('UPDATE "' + self._table + '" SET day = 31 '
+            cursor.execute('UPDATE "' + cls._table + '" SET day = 31 '
                 "WHERE delay = 'end_month'")
             table.drop_column('delay', exception=True)
-            ids = self.search([])
-            for line in self.browse(ids):
+            lines = cls.search([])
+            for line in lines:
                 if line.percentage:
-                    self.write(line.id, {
-                            'divisor': self.round(Decimal('100.0') /
-                                line.percentage, self.divisor.digits[1]),
+                    cls.write([line], {
+                            'divisor': cls.round(Decimal('100.0') /
+                                line.percentage, cls.divisor.digits[1]),
                             })
 
-    def default_currency_digits(self):
+        # Migration from 2.4: drop required on sequence
+        table.not_null_action('sequence', action='remove')
+
+    @staticmethod
+    def default_currency_digits():
         return 2
 
-    def default_type(self):
+    @staticmethod
+    def default_type():
         return 'remainder'
 
-    def default_months(self):
+    @staticmethod
+    def default_months():
         return 0
 
-    def default_weeks(self):
+    @staticmethod
+    def default_weeks():
         return 0
 
-    def default_days(self):
+    @staticmethod
+    def default_days():
         return 0
 
-    def on_change_type(self, vals):
-        if not 'type' in vals:
-            return {}
+    def on_change_type(self):
         res = {}
-        if vals['type'] != 'fixed':
+        if self.type != 'fixed':
             res['amount'] = Decimal('0.0')
             res['currency'] = None
-        if vals['type'] not in ('percent', 'percent_on_total'):
+        if self.type not in ('percent', 'percent_on_total'):
             res['percentage'] = Decimal('0.0')
             res['divisor'] = Decimal('0.0')
         return res
 
-    def on_change_percentage(self, value):
-        if not value.get('percentage'):
+    def on_change_percentage(self):
+        if not self.percentage:
             return {'divisor': 0.0}
         return {
-            'divisor': self.round(Decimal('100.0') / value['percentage'],
-                self.divisor.digits[1]),
+            'divisor': self.round(Decimal('100.0') / self.percentage,
+                self.__class__.divisor.digits[1]),
             }
 
-    def on_change_divisor(self, value):
-        if not value.get('divisor'):
+    def on_change_divisor(self):
+        if not self.divisor:
             return {'percentage': 0.0}
         return {
-            'percentage': self.round(Decimal('100.0') / value['divisor'],
-                self.percentage.digits[1]),
+            'percentage': self.round(Decimal('100.0') / self.divisor,
+                self.__class__.percentage.digits[1]),
             }
 
-    def on_change_with_currency_digits(self, vals):
-        currency_obj = Pool().get('currency.currency')
-        if vals.get('currency'):
-            currency = currency_obj.browse(vals['currency'])
-            return currency.digits
+    def on_change_with_currency_digits(self, name=None):
+        if self.currency:
+            return self.currency.digits
         return 2
 
-    def get_currency_digits(self, ids, name):
-        res = {}
-        for line in self.browse(ids):
-            if line.currency:
-                res[line.id] = line.currency.digits
-            else:
-                res[line.id] = 2
-        return res
-
-    def get_delta(self, line):
+    def get_delta(self):
         return {
-            'day': line.day,
-            'month': int(line.month) if line.month else None,
-            'days': line.days,
-            'weeks': line.weeks,
-            'months': line.months,
-            'weekday': int(line.weekday) if line.weekday else None,
+            'day': self.day,
+            'month': int(self.month) if self.month else None,
+            'days': self.days,
+            'weeks': self.weeks,
+            'months': self.months,
+            'weekday': int(self.weekday) if self.weekday else None,
             }
 
-    def get_date(self, line, date):
-        return date + relativedelta(**self.get_delta(line))
+    def get_date(self, date):
+        return date + relativedelta(**self.get_delta())
 
-    def get_value(self, line, remainder, amount, currency):
-        currency_obj = Pool().get('currency.currency')
-        if line.type == 'fixed':
-            return currency_obj.compute(line.currency, line.amount, currency)
-        elif line.type == 'percent':
-            return currency_obj.round(currency,
-                remainder * line.percentage / Decimal('100'))
-        elif line.type == 'percent_on_total':
-            return currency_obj.round(currency,
-                amount * line.percentage / Decimal('100'))
-        elif line.type == 'remainder':
-            return currency_obj.round(currency, remainder)
+    def get_value(self, remainder, amount, currency):
+        Currency = Pool().get('currency.currency')
+        if self.type == 'fixed':
+            return Currency.compute(self.currency, self.amount, currency)
+        elif self.type == 'percent':
+            return currency.round(
+                remainder * self.percentage / Decimal('100'))
+        elif self.type == 'percent_on_total':
+            return currency.round(
+                amount * self.percentage / Decimal('100'))
+        elif self.type == 'remainder':
+            return currency.round(remainder)
         return None
 
     @staticmethod
@@ -270,11 +265,12 @@ class PaymentTermLine(ModelSQL, ModelView):
         quantize = Decimal(10) ** -Decimal(digits)
         return Decimal(number).quantize(quantize)
 
-    def check_percentage_and_divisor(self, ids):
+    @classmethod
+    def check_percentage_and_divisor(cls, lines):
         "Check consistency between percentage and divisor"
-        percentage_digits = self.percentage.digits[1]
-        divisor_digits = self.divisor.digits[1]
-        for line in self.browse(ids):
+        percentage_digits = cls.percentage.digits[1]
+        divisor_digits = cls.divisor.digits[1]
+        for line in lines:
             if line.type not in ('percent', 'percent_on_total'):
                 continue
             if line.percentage is None or line.divisor is None:
@@ -283,14 +279,12 @@ class PaymentTermLine(ModelSQL, ModelView):
                 continue
             percentage = line.percentage
             divisor = line.divisor
-            calc_percentage = self.round(Decimal('100.0') / divisor,
+            calc_percentage = cls.round(Decimal('100.0') / divisor,
                     percentage_digits)
-            calc_divisor = self.round(Decimal('100.0') / percentage,
+            calc_divisor = cls.round(Decimal('100.0') / percentage,
                     divisor_digits)
             if (percentage == Decimal('0.0') or divisor == Decimal('0.0')
                     or percentage != calc_percentage
                     and divisor != calc_divisor):
                 return False
         return True
-
-PaymentTermLine()
diff --git a/setup.py b/setup.py
index 96ff654..e512b68 100644
--- a/setup.py
+++ b/setup.py
@@ -4,8 +4,19 @@
 
 from setuptools import setup
 import re
+import os
+import ConfigParser
 
-info = eval(open('__tryton__.py').read())
+
+def read(fname):
+    return open(os.path.join(os.path.dirname(__file__), fname)).read()
+
+config = ConfigParser.ConfigParser()
+config.readfp(open('tryton.cfg'))
+info = dict(config.items('tryton'))
+for key in ('depends', 'extras_depend', 'xml'):
+    if key in info:
+        info[key] = info[key].strip().splitlines()
 major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
 major_version = int(major_version)
 minor_version = int(minor_version)
@@ -21,22 +32,21 @@ requires.append('trytond >= %s.%s, < %s.%s' %
 
 setup(name='trytond_account_invoice',
     version=info.get('version', '0.0.1'),
-    description=info.get('description', ''),
-    author=info.get('author', ''),
-    author_email=info.get('email', ''),
-    url=info.get('website', ''),
+    description='Tryton module for invoicing',
+    long_description=open('README').read(),
+    author='Tryton',
+    url='http://www.tryton.org/',
     download_url="http://downloads.tryton.org/" + \
-            info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
+        info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
     package_dir={'trytond.modules.account_invoice': '.'},
     packages=[
         'trytond.modules.account_invoice',
         'trytond.modules.account_invoice.tests',
-    ],
+        ],
     package_data={
         'trytond.modules.account_invoice': info.get('xml', []) \
-                + info.get('translation', []) \
-                + ['invoice.odt'],
-    },
+            + ['tryton.cfg', 'locale/*.po', 'invoice.odt'],
+        },
     classifiers=[
         'Development Status :: 5 - Production/Stable',
         'Environment :: Plugins',
@@ -58,7 +68,7 @@ setup(name='trytond_account_invoice',
         'Programming Language :: Python :: 2.7',
         'Topic :: Office/Business',
         'Topic :: Office/Business :: Financial :: Accounting',
-    ],
+        ],
     license='GPL-3',
     install_requires=requires,
     zip_safe=False,
@@ -68,4 +78,4 @@ setup(name='trytond_account_invoice',
     """,
     test_suite='tests',
     test_loader='trytond.test_loader:Loader',
-)
+    )
diff --git a/tests/test_account_invoice.py b/tests/test_account_invoice.py
index a350835..f88a7c7 100644
--- a/tests/test_account_invoice.py
+++ b/tests/test_account_invoice.py
@@ -45,14 +45,13 @@ class AccountInvoiceTestCase(unittest.TestCase):
         Test payment_term.
         '''
         with Transaction().start(DB_NAME, USER, context=CONTEXT):
-            cu1_id = self.currency.create({
+            cu1 = self.currency.create({
                     'name': 'cu1',
                     'symbol': 'cu1',
                     'code': 'cu1'
                     })
-            cu1 = self.currency.browse(cu1_id)
 
-            term_id = self.payment_term.create({
+            term = self.payment_term.create({
                     'name': '30 days, 1 month, 1 month + 15 days',
                     'lines': [
                         ('create', {
@@ -75,7 +74,7 @@ class AccountInvoiceTestCase(unittest.TestCase):
                                 'months': 1,
                                 'days': 30,
                                 'amount': Decimal('396.84'),
-                                'currency': cu1_id,
+                                'currency': cu1.id,
                                 }),
                         ('create', {
                                 'sequence': 3,
@@ -85,9 +84,8 @@ class AccountInvoiceTestCase(unittest.TestCase):
                                 'day': 15,
                                 })]
                     })
-            term = self.payment_term.browse(term_id)
-            terms = term.compute(Decimal('1587.35'), cu1, term,
-                    date=datetime.date(2011, 10, 1))
+            terms = term.compute(Decimal('1587.35'), cu1,
+                date=datetime.date(2011, 10, 1))
             self.assertEqual(terms, [
                     (datetime.date(2011, 10, 31), Decimal('396.84')),
                     (datetime.date(2011, 11, 01), Decimal('396.84')),
diff --git a/tryton.cfg b/tryton.cfg
new file mode 100644
index 0000000..6454c07
--- /dev/null
+++ b/tryton.cfg
@@ -0,0 +1,16 @@
+[tryton]
+version=2.6.0
+depends:
+    account
+    account_product
+    company
+    currency
+    ir
+    party
+    product
+    res
+xml:
+    invoice.xml
+    payment_term.xml
+    party.xml
+    account.xml
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index a404de1..b8ebda7 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,22 +1,48 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 2.4.2
-Summary: Financial and Accounting Module with:
-    - Payment Term
-    - Invoice / Credit Note
-    - Supplier Invoice / Supplier Credit Note
-
-With the possibilities:
-    - to follow the payment of the invoices.
-    - to define invoice sequences on fiscal year or period.
-    - to credit any invoice.
-
+Version: 2.6.0
+Summary: Tryton module for invoicing
 Home-page: http://www.tryton.org/
-Author: B2CK
-Author-email: info at b2ck.com
+Author: Tryton
+Author-email: UNKNOWN
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.4/
-Description: UNKNOWN
+Download-URL: http://downloads.tryton.org/2.6/
+Description: trytond_account_invoice
+        =======================
+        
+        The account_invoice module of the Tryton application platform.
+        
+        Installing
+        ----------
+        
+        See INSTALL
+        
+        Support
+        -------
+        
+        If you encounter any problems with Tryton, please don't hesitate to ask
+        questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+        
+          http://bugs.tryton.org/
+          http://groups.tryton.org/
+          http://wiki.tryton.org/
+          irc://irc.freenode.net/tryton
+        
+        License
+        -------
+        
+        See LICENSE
+        
+        Copyright
+        ---------
+        
+        See COPYRIGHT
+        
+        
+        For more information please visit the Tryton web site:
+        
+          http://www.tryton.org/
+        
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Plugins
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index 4d1d090..2f90b64 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -11,8 +11,8 @@ invoice.xml
 party.xml
 payment_term.xml
 setup.py
+tryton.cfg
 ./__init__.py
-./__tryton__.py
 ./account.py
 ./invoice.py
 ./party.py
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index b1675a4..eb620a7 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -1,8 +1,8 @@
 python-dateutil
-trytond_account >= 2.4, < 2.5
-trytond_company >= 2.4, < 2.5
-trytond_party >= 2.4, < 2.5
-trytond_product >= 2.4, < 2.5
-trytond_currency >= 2.4, < 2.5
-trytond_account_product >= 2.4, < 2.5
-trytond >= 2.4, < 2.5
\ No newline at end of file
+trytond_account >= 2.6, < 2.7
+trytond_account_product >= 2.6, < 2.7
+trytond_company >= 2.6, < 2.7
+trytond_currency >= 2.6, < 2.7
+trytond_party >= 2.6, < 2.7
+trytond_product >= 2.6, < 2.7
+trytond >= 2.6, < 2.7
\ No newline at end of file
commit 45f416d8e7b8900bb4119fdb8ce32e969b3386d3
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Sep 18 16:07:15 2012 +0200

    Releasing debian version 2.4.2-2.

diff --git a/debian/changelog b/debian/changelog
index 1132feb..16ee780 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+tryton-modules-account-invoice (2.4.2-2) experimental; urgency=low
+
+  [ Daniel Baumann ]
+  * Updating maintainers field.
+  * Updating vcs fields.
+  * Correcting copyright file to match format version 1.0.
+  * Switching to xz compression.
+  * Updating to debhelper version 9.
+
+  [ Mathias Behrle ]
+  * Merging branch debian-wheezy-2.2 (Closes: #687759).
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 18 Sep 2012 13:28:48 +0200
+
 tryton-modules-account-invoice (2.4.2-1) experimental; urgency=low
 
   * Merging upstream version 2.4.2.
commit 0b27cd570b57fd5a85f67a5253361efc99e5a282
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Jun 30 18:02:28 2012 +0200

    Updating to debhelper version 9.

diff --git a/debian/compat b/debian/compat
index 45a4fb7..ec63514 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-8
+9
diff --git a/debian/control b/debian/control
index 4fa2b34..816cdbe 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: optional
 Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
 Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
 Dm-Upload-Allowed: yes
-Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
+Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
 Standards-Version: 3.9.3
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-account-invoice.git
commit 2953bb1dce51c93026dc7309f30b084a45e012a0
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Jun 30 17:53:50 2012 +0200

    Switching to xz compression.

diff --git a/debian/rules b/debian/rules
index e32b791..1ae0776 100755
--- a/debian/rules
+++ b/debian/rules
@@ -7,3 +7,6 @@ override_dh_auto_clean:
 	dh_auto_clean
 
 	rm -rf *.egg-info
+
+override_dh_builddeb:
+	dh_builddeb -- -Zxz -z9
commit dfe2268cba5378ffdba16dd2698d6e8a44344ae0
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Jun 30 17:50:23 2012 +0200

    Correcting copyright file to match format version 1.0.

diff --git a/debian/copyright b/debian/copyright
index 936d353..4f54669 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,17 +1,15 @@
 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 
 Files: *
-Copyright:
- (C) 2004-2008 Tiny SPRL
- (C) 2008-2012 Cedric Krier
- (C) 2008-2012 Bertrand Chenal
- (C) 2008-2012 B2CK SPRL
+Copyright: 2004-2008 Tiny SPRL
+           2008-2012 Cedric Krier
+           2008-2012 Bertrand Chenal
+           2008-2012 B2CK SPRL
 License: GPL-3+
 
 Files: debian/*
-Copyright:
- (C) 2009-2012 Daniel Baumann <daniel at debian.org>
- (C) 2012 Mathias Behrle <mathiasb at m9s.biz>
+Copyright: 2009-2012 Daniel Baumann <daniel at debian.org>
+           2012 Mathias Behrle <mathiasb at m9s.biz>
 License: GPL-3+
 
 License: GPL-3+
commit ad1cbbacc838ed3020c820039ab8a93a2af16744
Author: Daniel Baumann <daniel at 127011.net>
Date:   Sat Jun 30 16:55:03 2012 +0200

    Updating vcs fields.

diff --git a/debian/control b/debian/control
index 183dff1..4fa2b34 100644
--- a/debian/control
+++ b/debian/control
@@ -7,8 +7,8 @@ Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
 Standards-Version: 3.9.3
 Homepage: http://www.tryton.org/
-Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
-Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
+Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-account-invoice.git
+Vcs-Git: git://debian.tryton.org/git/packages/tryton-modules-account-invoice.git
 X-Python-Version: >= 2.6
 
 Package: tryton-modules-account-invoice
commit 48976044d81f9a7b87c5e30ca70874b5213a1aba
Author: Daniel Baumann <daniel at 127011.net>
Date:   Sat Jun 30 16:52:29 2012 +0200

    Updating maintainers field.

diff --git a/debian/control b/debian/control
index c4014a5..183dff1 100644
--- a/debian/control
+++ b/debian/control
@@ -1,7 +1,7 @@
 Source: tryton-modules-account-invoice
 Section: python
 Priority: optional
-Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
+Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
 Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
 Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
commit 34eb19d9b2894a3bf2f072a72d550e4d25473799
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Sep 11 14:28:51 2012 +0200

    Releasing debian version 2.4.2-1.

diff --git a/debian/changelog b/debian/changelog
index b5b2d32..1132feb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-account-invoice (2.4.2-1) experimental; urgency=low
+
+  * Merging upstream version 2.4.2.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 11 Sep 2012 13:26:58 +0200
+
 tryton-modules-account-invoice (2.4.1-1) experimental; urgency=low
 
   * Updating to Standards-Version: 3.9.3, no changes needed.
commit fd9544e911a2d00baebd4fe52377f4695e100a1c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Sep 11 13:25:47 2012 +0200

    Merging upstream version 2.4.2.

diff --git a/CHANGELOG b/CHANGELOG
index 50bec1a..32fd9fa 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.4.2 - 2012-09-02
+* Bug fixes (see mercurial logs for details)
+
 Version 2.4.1 - 2012-04-24
 * Restore es_AR translation
 
diff --git a/PKG-INFO b/PKG-INFO
index e98357b..dd96f68 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 2.4.1
+Version: 2.4.2
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
diff --git a/__tryton__.py b/__tryton__.py
index 0ec9fb4..5da0429 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -10,7 +10,7 @@
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
     'name_nl_NL': 'Facturatie',
-    'version': '2.4.1',
+    'version': '2.4.2',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/invoice.py b/invoice.py
index dbb8059..f1a66a9 100644
--- a/invoice.py
+++ b/invoice.py
@@ -428,7 +428,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
                 res['untaxed_amount'] += line.get('amount') or 0
                 with Transaction().set_context(**context):
                     taxes = tax_obj.compute(line.get('taxes', []),
-                            line.get('unit_price', Decimal('0.0')),
+                            line.get('unit_price') or Decimal('0.0'),
                             line.get('quantity', 0.0))
                 for tax in taxes:
                     key, val = self._compute_tax(tax,
@@ -446,7 +446,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
         tax_keys = []
         for tax in vals.get('taxes', []):
             if tax.get('manual', False):
-                res['tax_amount'] += tax.get('amount', Decimal('0.0'))
+                res['tax_amount'] += tax.get('amount') or Decimal('0.0')
                 continue
             key = (tax.get('base_code'), tax.get('base_sign'),
                     tax.get('tax_code'), tax.get('tax_sign'),
@@ -459,7 +459,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
             if currency:
                 if not currency_obj.is_zero(currency,
                         computed_taxes[key]['base'] - \
-                                tax.get('base', Decimal('0.0'))):
+                                (tax.get('base') or Decimal('0.0'))):
                     res['tax_amount'] += computed_taxes[key]['amount']
                     res['taxes'].setdefault('update', [])
                     res['taxes']['update'].append({
@@ -468,10 +468,10 @@ class Invoice(Workflow, ModelSQL, ModelView):
                         'base': computed_taxes[key]['base'],
                         })
                 else:
-                    res['tax_amount'] += tax.get('amount', Decimal('0.0'))
+                    res['tax_amount'] += tax.get('amount') or Decimal('0.0')
             else:
                 if computed_taxes[key]['base'] - \
-                        tax.get('base', Decimal('0.0')) != Decimal('0.0'):
+                        (tax.get('base') or Decimal('0.0')) != Decimal('0.0'):
                     res['tax_amount'] += computed_taxes[key]['amount']
                     res['taxes'].setdefault('update', [])
                     res['taxes']['update'].append({
@@ -480,7 +480,7 @@ class Invoice(Workflow, ModelSQL, ModelView):
                         'base': computed_taxes[key]['base'],
                         })
                 else:
-                    res['tax_amount'] += tax.get('amount', Decimal('0.0'))
+                    res['tax_amount'] += tax.get('amount') or Decimal('0.0')
         for key in computed_taxes:
             if key not in tax_keys:
                 res['tax_amount'] += computed_taxes[key]['amount']
@@ -2468,11 +2468,15 @@ class PayInvoice(Wizard):
                 line_ids = [x.id for x in session.ask.lines] + \
                     [x.id for x in invoice.payment_lines
                         if not x.reconciliation]
+                if line_id and line_id not in line_ids:
+                    # Add new payment line if payment_lines was cached before
+                    # its creation
+                    line_ids += [line_id]
                 if line_ids:
                     move_line_obj.reconcile(line_ids,
-                        journal_id=session.ask.journal_writeoff,
+                        journal_id=session.ask.journal_writeoff.id,
                         date=session.start.date,
-                        account_id=session.ask.account_writeoff)
+                        account_id=session.ask.account_writeoff.id)
         else:
             if line_id:
                 reconcile_lines += [line_id]
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index c46f043..a404de1 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 2.4.1
+Version: 2.4.2
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
commit b97438a37aa18a74c4e5d6883eb1668bbf1fa594
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Apr 28 12:43:10 2012 +0200

    Releasing debian version 2.4.1-1.

diff --git a/debian/changelog b/debian/changelog
index 96ace14..b5b2d32 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,16 @@
+tryton-modules-account-invoice (2.4.1-1) experimental; urgency=low
+
+  * Updating to Standards-Version: 3.9.3, no changes needed.
+  * Updating year in copyright.
+  * Adding myself to copyright.
+  * Adding Format header for DEP5.
+  * Merging upstream version 2.4.0.
+  * Merging upstream version 2.4.1.
+  * Updating Copyright.
+  * Bumping versioned tryton depends to 2.4.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Thu, 26 Apr 2012 19:35:11 +0200
+
 tryton-modules-account-invoice (2.2.1-1) unstable; urgency=low
 
   * Merging upstream version 2.2.1.
commit 86dc0de4f3677a4402929064b4795521fd5bf1e6
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu Apr 26 19:10:55 2012 +0200

    Bumping versioned tryton depends to 2.4.

diff --git a/debian/control b/debian/control
index e0bde83..c4014a5 100644
--- a/debian/control
+++ b/debian/control
@@ -14,10 +14,10 @@ X-Python-Version: >= 2.6
 Package: tryton-modules-account-invoice
 Architecture: all
 Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.2),
- tryton-modules-account (>= 2.2), tryton-modules-account-product (>= 2.2),
- tryton-modules-company (>= 2.2), tryton-modules-currency (>= 2.2),
- tryton-modules-party (>= 2.2), tryton-modules-product (>= 2.2),
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.4),
+ tryton-modules-account (>= 2.4), tryton-modules-account-product (>= 2.4),
+ tryton-modules-company (>= 2.4), tryton-modules-currency (>= 2.4),
+ tryton-modules-party (>= 2.4), tryton-modules-product (>= 2.4),
  python-dateutil, python-pkg-resources
 Description: Tryton Application Platform (Financial and Accounting Module)
  Tryton is a high-level general purpose application platform written in Python
commit b5b5852a144a8027f0e59fe5972259a762ce0984
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Apr 25 20:08:32 2012 +0200

    Updating Copyright.

diff --git a/debian/copyright b/debian/copyright
index 21a85a7..936d353 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -3,9 +3,9 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Files: *
 Copyright:
  (C) 2004-2008 Tiny SPRL
- (C) 2008-2011 Cedric Krier
- (C) 2008-2011 Bertrand Chenal
- (C) 2008-2011 B2CK SPRL
+ (C) 2008-2012 Cedric Krier
+ (C) 2008-2012 Bertrand Chenal
+ (C) 2008-2012 B2CK SPRL
 License: GPL-3+
 
 Files: debian/*
commit 6421e91e83ff8a3c7600553c758c234f489ac39d
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Apr 25 11:03:27 2012 +0200

    Merging upstream version 2.4.1.

diff --git a/CHANGELOG b/CHANGELOG
index 099218b..50bec1a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.4.1 - 2012-04-24
+* Restore es_AR translation
+
 Version 2.4.0 - 2012-04-23
 * Bug fixes (see mercurial logs for details)
 * Add divisor field to Payment Term Lines
diff --git a/PKG-INFO b/PKG-INFO
index fca3291..e98357b 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 2.4.0
+Version: 2.4.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
diff --git a/__tryton__.py b/__tryton__.py
index e50b93c..0ec9fb4 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -10,7 +10,7 @@
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
     'name_nl_NL': 'Facturatie',
-    'version': '2.4.0',
+    'version': '2.4.1',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 542f292..b5d8660 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -1,3 +1,1596 @@
 # 
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+"No puede cambiar la secuencia de una factura si ya hay una abierta en el "
+"ejercicio fiscal."
+
+msgctxt "error:account.fiscalyear:"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr ""
+"¡Debe tener una secuencia distinta de facturación por ejercicio fiscal!"
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr ""
+"¡No puede hacer un reembolso por devolución desde una factura que no esté "
+"abierta!"
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr ""
+"¡No puede hacer un reembolso por devolución desde una factura con pagos!"
+
+msgctxt "error:account.invoice.line:"
+msgid "Line with \"line\" type must have an account!"
+msgstr "¡Una 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 \"línea\" debe tener una factura!"
+
+msgctxt "error:account.invoice.line:"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"¡No puede añadir una línea a una factura que está abierta, pagada o "
+"cancelada!"
+
+msgctxt "error:account.invoice.line:"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+"¡No puede crear una línea de factura\n"
+"con una cuenta de una empresa distinta a la que factura!"
+
+msgctxt "error:account.invoice.line:"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr ""
+"¡No puede modificar una línea de una factura que está abierta o pagada!"
+
+msgctxt "error:account.invoice.line:"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+"¡No puede usar la misma cuenta\n"
+"que en la factura!"
+
+msgctxt "error:account.invoice.pay:"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+"¡No puede crear un pago parcial con un importe mayor que el importe a pagar!"
+
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
+msgstr "El día del mes debe ser entre 1 y 31."
+
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
+msgstr "Los valores porcentaje y divisor no son coherentes."
+
+msgctxt "error:account.invoice.payment_term:"
+msgid "Invalid payment term line!"
+msgstr "¡La línea del plazo de pago no es válida!"
+
+msgctxt "error:account.invoice.payment_term:"
+msgid "Payment term missing a remainder line!"
+msgstr "¡Al plazo de pago le falta una línea con el remanente!"
+
+msgctxt "error:account.invoice.tax:"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"¡No puede añadir una línea a una factura que está abierta, pagada o "
+"cancelada!"
+
+msgctxt "error:account.invoice.tax:"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr ""
+"¡No puede modificar los impuestos de una factura que está abierta o pagada!"
+
+msgctxt "error:account.invoice:"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Los impuestos base son distintos de las líneas de 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 eliminarla!"
+
+msgctxt "error:account.invoice:"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"¡Tiene impuestos definidos pero ninguno en las líneas de la factura!\n"
+"Recalcule la factura."
+
+msgctxt "error:account.invoice:"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+"¡Los impuestos están definidos en las líneas de la factura pero no en la factura!\n"
+"Recalcule la factura."
+
+msgctxt "error:account.invoice:"
+msgid "The credit account on journal is missing!"
+msgstr "¡Falta la cuenta haber del diario!"
+
+msgctxt "error:account.invoice:"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr "¡La cuenta haber del diario es la misma que la cuenta de la factura!"
+
+msgctxt "error:account.invoice:"
+msgid "The debit account on journal is missing!"
+msgstr "¡Falta la cuenta débito del diario!"
+
+msgctxt "error:account.invoice:"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr "¡La cuenta débito del diario es la misma que la cuenta de la factura!"
+
+msgctxt "error:account.invoice:"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr "¡No existe una secuencia de factura para el período/ejercicio fiscal!"
+
+msgctxt "error:account.invoice:"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+"¡No puede crear una factura\n"
+"con una cuenta de una empresa distinta a la que factura!"
+
+msgctxt "error:account.invoice:"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr "¡No puede modificar una factura que está abierta o pagada!"
+
+msgctxt "error:account.invoice:"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr "¡No puede poner en borrador una factura que tiene asiento!"
+
+msgctxt "error:account.invoice:"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+"¡No puede usar la misma cuenta\n"
+"que en la línea de la factura!"
+
+msgctxt "error:account.period:"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+"No puede cambiar la secuencia de una factura si hay una factura abierta en "
+"el período."
+
+msgctxt "error:account.period:"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+"¡Debe usar secuencias distintas de factura por ejercicio fiscal en la misma "
+"empresa!"
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
+msgid "Supplier Credit Note Sequence"
+msgstr "Secuencia de nota de crédito de proveedor"
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
+msgid "Supplier Invoice Sequence"
+msgstr "Secuencia de factura de proveedor"
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
+msgid "Customer Credit Note Sequence"
+msgstr "Secuencia de nota de crédito de cliente"
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
+msgid "Customer Invoice Sequence"
+msgstr "Secuencia de factura de cliente"
+
+msgctxt "field:account.invoice,account:"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice,accounting_date:"
+msgid "Accounting Date"
+msgstr "Fecha contabilización"
+
+msgctxt "field:account.invoice,amount_to_pay:"
+msgid "Amount to Pay"
+msgstr "Importe a pagar"
+
+msgctxt "field:account.invoice,amount_to_pay_today:"
+msgid "Amount to Pay Today"
+msgstr "Importe a pagar hoy"
+
+msgctxt "field:account.invoice,comment:"
+msgid "Comment"
+msgstr "Comentario"
+
+msgctxt "field:account.invoice,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice,currency:"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice,currency_date:"
+msgid "Currency Date"
+msgstr "Fecha divisa"
+
+msgctxt "field:account.invoice,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimales de la divisa"
+
+msgctxt "field:account.invoice,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice,invoice_address:"
+msgid "Invoice Address"
+msgstr "Dirección de facturación"
+
+msgctxt "field:account.invoice,invoice_date:"
+msgid "Invoice Date"
+msgstr "Fecha factura"
+
+msgctxt "field:account.invoice,invoice_report_cache:"
+msgid "Invoice Report"
+msgstr "Informe factura"
+
+msgctxt "field:account.invoice,invoice_report_format:"
+msgid "Invoice Report Format"
+msgstr "Formato del informe de factura"
+
+msgctxt "field:account.invoice,journal:"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.invoice,lines:"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.invoice,lines_to_pay:"
+msgid "Lines to Pay"
+msgstr "Líneas a pagar"
+
+msgctxt "field:account.invoice,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.invoice,number:"
+msgid "Number"
+msgstr "Número"
+
+msgctxt "field:account.invoice,party:"
+msgid "Party"
+msgstr "Entidad"
+
+msgctxt "field:account.invoice,party_lang:"
+msgid "Party Language"
+msgstr "Idioma entidad"
+
+msgctxt "field:account.invoice,payment_lines:"
+msgid "Payment Lines"
+msgstr "Líneas de pago"
+
+msgctxt "field:account.invoice,payment_term:"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "field:account.invoice,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice,reconciled:"
+msgid "Reconciled"
+msgstr "Conciliado"
+
+msgctxt "field:account.invoice,reference:"
+msgid "Reference"
+msgstr "Referencia"
+
+msgctxt "field:account.invoice,state:"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:account.invoice,tax_amount:"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.invoice,taxes:"
+msgid "Tax Lines"
+msgstr "Líneas de impuesto"
+
+msgctxt "field:account.invoice,total_amount:"
+msgid "Total"
+msgstr "Total"
+
+msgctxt "field:account.invoice,type:"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice,type_name:"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice,untaxed_amount:"
+msgid "Untaxed"
+msgstr "Base imponible"
+
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice-account.move.line,line:"
+msgid "Payment Line"
+msgstr "Línea de pago"
+
+msgctxt "field:account.invoice-account.move.line,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
+msgid "With Refund"
+msgstr "Con devolución"
+
+msgctxt "field:account.invoice.line,account:"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice.line,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.invoice.line,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.line,currency:"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice.line,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimales de la divisa"
+
+msgctxt "field:account.invoice.line,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.line,invoice_taxes:"
+msgid "Invoice Taxes"
+msgstr "Impuestos de factura"
+
+msgctxt "field:account.invoice.line,invoice_type:"
+msgid "Invoice Type"
+msgstr "Tipo de factura"
+
+msgctxt "field:account.invoice.line,note:"
+msgid "Note"
+msgstr "Nota"
+
+msgctxt "field:account.invoice.line,party:"
+msgid "Party"
+msgstr "Entidad"
+
+msgctxt "field:account.invoice.line,party_lang:"
+msgid "Party Language"
+msgstr "Idioma entidad"
+
+msgctxt "field:account.invoice.line,product:"
+msgid "Product"
+msgstr "Producto"
+
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr "Categoría UdM del producto"
+
+msgctxt "field:account.invoice.line,quantity:"
+msgid "Quantity"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.line,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.line,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.invoice.line,taxes:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "field:account.invoice.line,type:"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice.line,unit:"
+msgid "Unit"
+msgstr "Unidad"
+
+msgctxt "field:account.invoice.line,unit_digits:"
+msgid "Unit Digits"
+msgstr "Decimales de la unidad"
+
+msgctxt "field:account.invoice.line,unit_price:"
+msgid "Unit Price"
+msgstr "Precio unitario"
+
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line-account.tax,line:"
+msgid "Invoice Line"
+msgstr "Línea de factura"
+
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.line-account.tax,tax:"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
+msgid "Write-Off Account"
+msgstr "Cuenta de desajuste"
+
+msgctxt "field:account.invoice.pay.ask,amount:"
+msgid "Payment Amount"
+msgstr "Importe de pago"
+
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
+msgid "Write-Off Amount"
+msgstr "Importe de desajuste"
+
+msgctxt "field:account.invoice.pay.ask,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.invoice.pay.ask,currency:"
+msgid "Payment Currency"
+msgstr "Divisa de pago"
+
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
+msgid "Payment Currency Digits"
+msgstr "Decimales divisa de pago"
+
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
+msgid "Write-Off Currency Digits"
+msgstr "Decimales divisa de desajuste"
+
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
+msgid "Write-Off Currency"
+msgstr "Divisa de desajuste"
+
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.pay.ask,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
+msgid "Write-Off Journal"
+msgstr "Diario de desajuste"
+
+msgctxt "field:account.invoice.pay.ask,lines:"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
+msgid "Lines to Pay"
+msgstr "Líneas a pagar"
+
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
+msgid "Payment Lines"
+msgstr "Líneas de pago"
+
+msgctxt "field:account.invoice.pay.ask,type:"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice.pay.start,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.invoice.pay.start,currency:"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice.pay.start,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimales de la divisa"
+
+msgctxt "field:account.invoice.pay.start,date:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.invoice.pay.start,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.pay.start,journal:"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.invoice.payment_term,active:"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.payment_term,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.payment_term,lines:"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.invoice.payment_term,name:"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "field:account.invoice.payment_term,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.payment_term.line,currency:"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimales de la divisa"
+
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr "Día del mes"
+
+msgctxt "field:account.invoice.payment_term.line,days:"
+msgid "Number of Days"
+msgstr "Número de días"
+
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
+msgstr "Divisor"
+
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr "Mes"
+
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr "Número de meses"
+
+msgctxt "field:account.invoice.payment_term.line,payment:"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "field:account.invoice.payment_term.line,percentage:"
+msgid "Percentage"
+msgstr "Porcentaje"
+
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.invoice.payment_term.line,type:"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
+msgstr "Día de la semana"
+
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
+msgstr "Número de semanas"
+
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,account:"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice.tax,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.invoice.tax,base:"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "field:account.invoice.tax,base_code:"
+msgid "Base Code"
+msgstr "Código de la base"
+
+msgctxt "field:account.invoice.tax,base_sign:"
+msgid "Base Sign"
+msgstr "Signo de la base"
+
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.tax,description:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.tax,manual:"
+msgid "Manual"
+msgstr "Manual"
+
+msgctxt "field:account.invoice.tax,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.tax,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.invoice.tax,sequence_number:"
+msgid "Sequence Number"
+msgstr "Número de secuencia"
+
+msgctxt "field:account.invoice.tax,tax:"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.invoice.tax,tax_code:"
+msgid "Tax Code"
+msgstr "Código de impuesto"
+
+msgctxt "field:account.invoice.tax,tax_sign:"
+msgid "Tax Sign"
+msgstr "Signo del impuesto"
+
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.period,in_credit_note_sequence:"
+msgid "Supplier Credit Note Sequence"
+msgstr "Secuencia de nota de crédito de proveedor"
+
+msgctxt "field:account.period,in_invoice_sequence:"
+msgid "Supplier Invoice Sequence"
+msgstr "Secuencia de factura de proveedor"
+
+msgctxt "field:account.period,out_credit_note_sequence:"
+msgid "Customer Credit Note Sequence"
+msgstr "Secuencia de nota de crédito de cliente"
+
+msgctxt "field:account.period,out_invoice_sequence:"
+msgid "Customer Invoice Sequence"
+msgstr "Secuencia de factura de cliente"
+
+msgctxt "field:party.address,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
+msgstr "Plazo de pago del cliente"
+
+msgctxt "field:party.party,supplier_payment_term:"
+msgid "Supplier Payment Term"
+msgstr "Plazo de pago del proveedor"
+
+msgctxt "help:account.invoice.credit.start,with_refund:"
+msgid "If true, the current invoice(s) will be paid."
+msgstr "Si es cierto, la factura(s) actual será pagada."
+
+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.invoice,name:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:account.invoice-account.move.line,name:"
+msgid "Invoice - Payment Line"
+msgstr "Factura - Línea de pago"
+
+msgctxt "model:account.invoice.credit.start,name:"
+msgid "Credit Invoice Init"
+msgstr "Inicialización factura reembolso"
+
+msgctxt "model:account.invoice.line,name:"
+msgid "Invoice Line"
+msgstr "Línea de factura"
+
+msgctxt "model:account.invoice.line-account.tax,name:"
+msgid "Invoice Line - Tax"
+msgstr "Línea de factura - Impuesto"
+
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
+
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
+
+msgctxt "model:account.invoice.payment_term,name:"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "model:account.invoice.payment_term.line,name:"
+msgid "Payment Term Line"
+msgstr "Línea del plazo de pago"
+
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
+msgid "account.invoice.payment_term.line.delay"
+msgstr "Línea de retraso del plazo de pago"
+
+msgctxt "model:account.invoice.payment_term.line.type,name:"
+msgid "account.invoice.payment_term.line.type"
+msgstr "Tipo de línea del plazo de pago"
+
+msgctxt "model:account.invoice.print.warning,name:"
+msgid "Print Invoice Report Warning"
+msgstr "Imprimir aviso informe de factura"
+
+msgctxt "model:account.invoice.tax,name:"
+msgid "Invoice Tax"
+msgstr "Impuesto de factura"
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr "Todas las facturas"
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Notas de crédito de proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Notas de crédito de proveedor borrador"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Notas de crédito de proveedor pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Notas de crédito de proveedor abiertas"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Facturas de proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Facturas de proveedor borrador"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Facturas de proveedor pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Facturas de proveedor abiertas"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Notas de crédito"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Notas de crédito borrador"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Notas de crédito pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Notas de crédito abiertas"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Facturas borrador"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Facturas pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Facturas abiertas"
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "model:ir.action,name:credit"
+msgid "Credit"
+msgstr "Abonar"
+
+msgctxt "model:ir.action,name:print"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.action,name:wizard_pay"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr "Todas las facturas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Notas de crédito de proveedor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Notas de crédito de proveedor borrador"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Notas de crédito de proveedor pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Notas de crédito de proveedor abiertas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Facturas de proveedor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Facturas de proveedor borrador"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Facturas de proveedor pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Facturas de proveedor abiertas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Notas de crédito"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Notas de crédito borrador"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Notas de crédito pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Notas de crédito abiertas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Facturas borrador"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Facturas pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Facturas abiertas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "odt:account.invoice:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "odt:account.invoice:"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "odt:account.invoice:"
+msgid "Credit Note N°:"
+msgstr "Nota de crédito Nº:"
+
+msgctxt "odt:account.invoice:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "odt:account.invoice:"
+msgid "Date:"
+msgstr "Fecha:"
+
+msgctxt "odt:account.invoice:"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "odt:account.invoice:"
+msgid "Description:"
+msgstr "Descripción:"
+
+msgctxt "odt:account.invoice:"
+msgid "Draft Credit Note"
+msgstr "Nota de crédito borrador"
+
+msgctxt "odt:account.invoice:"
+msgid "Draft Invoice"
+msgstr "Factura borrador"
+
+msgctxt "odt:account.invoice:"
+msgid "Draft Supplier Credit Note"
+msgstr "Nota de crédito de proveedor borrador"
+
+msgctxt "odt:account.invoice:"
+msgid "Draft Supplier Invoice"
+msgstr "Factura de proveedor borrador"
+
+msgctxt "odt:account.invoice:"
+msgid "E-Mail:"
+msgstr "Correo electrónico:"
+
+msgctxt "odt:account.invoice:"
+msgid "Invoice N°:"
+msgstr "Factura Nº:"
+
+msgctxt "odt:account.invoice:"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "odt:account.invoice:"
+msgid "Phone:"
+msgstr "Teléfono:"
+
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Credit Note"
+msgstr "Nota de crédito pro forma"
+
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Invoice"
+msgstr "Factura pro forma"
+
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Supplier Credit Note"
+msgstr "Nota de crédito de proveedor pro forma"
+
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Supplier Invoice"
+msgstr "Factura de proveedor pro forma"
+
+msgctxt "odt:account.invoice:"
+msgid "Quantity"
+msgstr "Cantidad"
+
+msgctxt "odt:account.invoice:"
+msgid "Supplier Credit Note N°:"
+msgstr "Nota de crédito de proveedor Nº:"
+
+msgctxt "odt:account.invoice:"
+msgid "Supplier Invoice N°:"
+msgstr "Factura de proveedor Nº:"
+
+msgctxt "odt:account.invoice:"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "odt:account.invoice:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "odt:account.invoice:"
+msgid "Taxes:"
+msgstr "Impuestos:"
+
+msgctxt "odt:account.invoice:"
+msgid "Total (excl. taxes):"
+msgstr "Total (sin impuestos):"
+
+msgctxt "odt:account.invoice:"
+msgid "Total:"
+msgstr "Total:"
+
+msgctxt "odt:account.invoice:"
+msgid "Unit Price"
+msgstr "Precio unidad"
+
+msgctxt "odt:account.invoice:"
+msgid "VAT Number:"
+msgstr "CUIT:"
+
+msgctxt "odt:account.invoice:"
+msgid "VAT:"
+msgstr "CUIT:"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Canceled"
+msgstr "Cancelada"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Opened"
+msgstr "Abierta"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Paid"
+msgstr "Pagada"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Credit Note"
+msgstr "Nota de crédito"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Supplier Credit Note"
+msgstr "Nota de crédito de proveedor"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Supplier Invoice"
+msgstr "Factura de proveedor"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Credit Note"
+msgstr "Nota de crédito"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Supplier Credit Note"
+msgstr "Nota de crédito de proveedor"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Supplier Invoice"
+msgstr "Factura de proveedor"
+
+msgctxt "selection:account.invoice.line,type:"
+msgid "Comment"
+msgstr "Comentario"
+
+msgctxt "selection:account.invoice.line,type:"
+msgid "Line"
+msgstr "Línea"
+
+msgctxt "selection:account.invoice.line,type:"
+msgid "Subtotal"
+msgstr "Subtotal"
+
+msgctxt "selection:account.invoice.line,type:"
+msgid "Title"
+msgstr "Título"
+
+msgctxt "selection:account.invoice.pay.ask,type:"
+msgid "Partial Payment"
+msgstr "Pago parcial"
+
+msgctxt "selection:account.invoice.pay.ask,type:"
+msgid "Write-Off"
+msgstr "Desajuste"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr "Abril"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr "Agosto"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr "Diciembre"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr "Febrero"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr "Enero"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr "Julio"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr "Junio"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr "Marzo"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr "Mayo"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr "Noviembre"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr "Octubre"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr "Septiembre"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr "Fijo"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr "Porcentaje sobre remanente"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr "Porcentaje sobre total"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr "Remanente"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr "Viernes"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr "Lunes"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr "Sábado"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr "Domingo"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr "Jueves"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr "Martes"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr "Miércoles"
+
+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?"
+
+msgctxt "view:account.invoice.credit.start:"
+msgid "Credit Invoice"
+msgstr "Factura reembolso"
+
+msgctxt "view:account.invoice.line:"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:account.invoice.line:"
+msgid "Invoice Line"
+msgstr "Línea de factura"
+
+msgctxt "view:account.invoice.line:"
+msgid "Invoice Lines"
+msgstr "Líneas de factura"
+
+msgctxt "view:account.invoice.line:"
+msgid "Notes"
+msgstr "Notas"
+
+msgctxt "view:account.invoice.line:"
+msgid "Products"
+msgstr "Productos"
+
+msgctxt "view:account.invoice.pay.ask:"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
+
+msgctxt "view:account.invoice.pay.start:"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
+
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
+msgstr "Línea del plazo de pago"
+
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
+msgstr "Líneas del plazo de pago"
+
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Term Line"
+msgstr "Línea del plazo de pago"
+
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Term Lines"
+msgstr "Líneas del plazo de pago"
+
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "view:account.invoice.print.warning:"
+msgid "Print Invoice"
+msgstr "Imprimir factura"
+
+msgctxt "view:account.invoice.print.warning:"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr "Las facturas serán enviadas <i>directamente</i> a la impresora."
+
+msgctxt "view:account.invoice.print.warning:"
+msgid "You have selected more than one invoice to print."
+msgstr "Ha seleccionado más de una factura para imprimir."
+
+msgctxt "view:account.invoice.tax:"
+msgid "Invoice Tax"
+msgstr "Impuesto de la factura"
+
+msgctxt "view:account.invoice.tax:"
+msgid "Invoice Taxes"
+msgstr "Impuestos de la factura"
+
+msgctxt "view:account.invoice.tax:"
+msgid "Tax Code"
+msgstr "Código de impuesto"
+
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "view:account.invoice:"
+msgid "Amount Second Currency"
+msgstr "Importe divisa secundaria"
+
+msgctxt "view:account.invoice:"
+msgid "Credit"
+msgstr "Haber"
+
+msgctxt "view:account.invoice:"
+msgid "Debit"
+msgstr "Debe"
+
+msgctxt "view:account.invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "view:account.invoice:"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "view:account.invoice:"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "view:account.invoice:"
+msgid "Other Info"
+msgstr "Información adicional"
+
+msgctxt "view:account.invoice:"
+msgid "Payment"
+msgstr "Pago"
+
+msgctxt "view:account.invoice:"
+msgid "Payment Lines"
+msgstr "Líneas de pago"
+
+msgctxt "view:account.invoice:"
+msgid "Pro For_ma"
+msgstr "Pro for_ma"
+
+msgctxt "view:account.invoice:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "view:account.invoice:"
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+msgctxt "view:account.invoice:"
+msgid "_Draft"
+msgstr "_Borrador"
+
+msgctxt "view:account.invoice:"
+msgid "_Open"
+msgstr "_Abrir"
+
+msgctxt "view:account.invoice:"
+msgid "_Pay"
+msgstr "_Pagar"
+
+msgctxt "view:account.invoice:"
+msgid "_Reset to Draft"
+msgstr "_Restablecer a borrador"
+
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr "Importe divisa secundaria"
+
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr "Haber"
+
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr "Debe"
+
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr "Líneas a pagar"
+
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr "Líneas de pago"
+
+msgctxt "view:party.party:"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
+msgid "Credit"
+msgstr "Abonar"
+
+msgctxt "wizard_button:account.invoice.credit,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.invoice.pay,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.print,warning,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
+msgid "Print"
+msgstr "Imprimir"
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index a314f9e..c46f043 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 2.4.0
+Version: 2.4.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
commit 593f0248859cd182982c8cf31fd65f00b109d01f
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Apr 24 19:30:35 2012 +0200

    Merging upstream version 2.4.0.

diff --git a/CHANGELOG b/CHANGELOG
index a86d3b4..099218b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,9 @@
-Version 2.2.1 - 2011-12-26
+Version 2.4.0 - 2012-04-23
 * Bug fixes (see mercurial logs for details)
+* Add divisor field to Payment Term Lines
+* Allow setting months, weeks, days as well as month, weekday and day in
+  Payment Term Lines
+* Rename field payment_term to customer_payment_term
 
 Version 2.2.0 - 2011-10-24
 * Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index a9feb41..ede3fac 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,6 +1,6 @@
-Copyright (C) 2008-2011 Cédric Krier.
-Copyright (C) 2008-2011 Bertrand Chenal.
-Copyright (C) 2008-2011 B2CK SPRL.
+Copyright (C) 2008-2012 Cédric Krier.
+Copyright (C) 2008-2012 Bertrand Chenal.
+Copyright (C) 2008-2012 B2CK SPRL.
 Copyright (C) 2004-2008 Tiny SPRL.
 
 This program is free software: you can redistribute it and/or modify
diff --git a/INSTALL b/INSTALL
index 45fe3da..7dc8d86 100644
--- a/INSTALL
+++ b/INSTALL
@@ -4,7 +4,7 @@ Installing trytond_account_invoice
 Prerequisites
 -------------
 
- * Python 2.5 or later (http://www.python.org/)
+ * Python 2.6 or later (http://www.python.org/)
  * python-dateutil (http://labix.org/python-dateutil)
  * trytond (http://www.tryton.org/)
  * trytond_account (http://www.tryton.org/)
diff --git a/PKG-INFO b/PKG-INFO
index 7b43f96..fca3291 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 2.2.1
+Version: 2.4.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.2/
+Download-URL: http://downloads.tryton.org/2.4/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/__init__.py b/__init__.py
index 87e60c6..6dc8f98 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,7 +1,7 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 
-from payment_term import *
-from invoice import *
-from party import *
-from account import *
+from .payment_term import *
+from .invoice import *
+from .party import *
+from .account import *
diff --git a/__tryton__.py b/__tryton__.py
index 51239e5..e50b93c 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -3,12 +3,14 @@
 {
     'name': 'Account Invoice',
     'name_bg_BG': 'Фактуриране',
+    'name_ca_ES': 'Facturació',
     'name_de_DE': 'Fakturierung',
+    'name_es_AR': 'Facturación',
     'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
     'name_nl_NL': 'Facturatie',
-    'version': '2.2.1',
+    'version': '2.4.0',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
@@ -32,6 +34,16 @@ With the possibilities:
     - задаване на последователности на фактура за финансова година или период
     - кредитиране на всяка фактура
 ''',
+    'description_ca_ES': '''Mòdul financer i comptable amb:
+    - Terminis de pagament
+    - Factura / Abonament
+    - Factura de proveïdor / Abonament de proveïdor
+
+Amb les possibilitats de:
+    - Fer el seguiment del pagament de factures.
+    - Definir seqüències de factures per exercici fiscal o període.
+    - Abonar qualsevol factura.
+''',
     'description_de_DE': '''Modul für Buchhaltung und Fakturierung mit:
     - Definition von Zahlungsbedingungen
     - Erstellung von Rechnungen und Gutschriften für Kunden
@@ -42,25 +54,35 @@ Ermöglicht:
     - die Definition von Rechnungssequenzen für das Geschäftsjahr bzw. die Buchungszeiträume
     - die Erstellung von Gutschriften zu jeglicher Rechnung
 ''',
+    'description_es_AR': '''Módulo financiero y de contabilidad con:
+    - Plazos de Pago
+    - Factura / Nota de crédito
+    - Factura de proveedor / Nota de crédito de proveedor
+
+Con las posibilidades de:
+    - hacer seguimientos del pago de facturas.
+    - definir secuencias de facturas por ejercicio fiscal o período.
+    - pagar cualquier factura.
+''',
     'description_es_CO': '''Módulo Financiero y de Contabilidad con:
     - Términos de Pago
     - Notas de Facturación / Crédito
     - Factura de Proveedores / Nota de Crédito de Proveedores
 
 Con las posibilidades de:
-    - hacer seguimiento al pago de facturas.
-    - definir secuencias de facturas en año o período fiscal.
-    - acreditar una factura.
+    - Hacer seguimiento al pago de facturas.
+    - Definir secuencias de facturas en año o período fiscal.
+    - Acreditar una factura.
 ''',
-    'description_es_ES': '''Módulo financiero y de contabilidad con:
-    - Plazos de Pago
+    'description_es_ES': '''Módulo financiero y contable con:
+    - Plazos de pago
     - Factura / Abono
     - Factura de proveedor / Abono de proveedor
 
 Con las posibilidades de:
-    - hacer seguimientos del pago de facturas.
-    - definir secuencias de facturas por ejercicio fiscal o período.
-    - pagar cualquier factura.
+    - Hacer el seguimiento del pago de facturas.
+    - Definir secuencias de facturas por ejercicio fiscal o período.
+    - Abonar cualquier factura.
 ''',
     'description_fr_FR': '''Module financier et comptable avec:
     - Condition de paiement
@@ -91,7 +113,6 @@ Met de mogelijkheid tot:
         'party',
         'product',
         'res',
-        'workflow',
         'currency',
         'account_product',
     ],
@@ -103,8 +124,10 @@ Met de mogelijkheid tot:
     ],
     'translation': [
         '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_ES.po',
         'locale/fr_FR.po',
diff --git a/account.py b/account.py
index cad747b..5af92e2 100644
--- a/account.py
+++ b/account.py
@@ -1,6 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from trytond.model import ModelView, ModelSQL, fields
+from trytond.model import Model, ModelView, ModelSQL, fields
 from trytond.pyson import Eval
 from trytond.pool import Pool
 
@@ -13,7 +13,7 @@ class FiscalYear(ModelSQL, ModelView):
             ('code', '=', 'account.invoice'),
             ['OR',
                 ('company', '=', Eval('company')),
-                ('company', '=', False),
+                ('company', '=', None),
                 ],
             ],
         context={
@@ -27,7 +27,7 @@ class FiscalYear(ModelSQL, ModelView):
             ('code', '=', 'account.invoice'),
             ['OR',
                 ('company', '=', Eval('company')),
-                ('company', '=', False),
+                ('company', '=', None),
                 ],
             ],
         context={
@@ -41,7 +41,7 @@ class FiscalYear(ModelSQL, ModelView):
             ('code', '=', 'account.invoice'),
             ['OR',
                 ('company', '=', Eval('company')),
-                ('company', '=', False),
+                ('company', '=', None),
                 ],
             ],
         context={
@@ -54,7 +54,7 @@ class FiscalYear(ModelSQL, ModelView):
             ('code', '=', 'account.invoice'),
             ['OR',
                 ('company', '=', Eval('company')),
-                ('company', '=', False),
+                ('company', '=', None),
                 ],
             ],
         context={
@@ -102,7 +102,7 @@ class FiscalYear(ModelSQL, ModelView):
                         if invoice_obj.search([
                             ('invoice_date', '>=', fiscalyear.start_date),
                             ('invoice_date', '<=', fiscalyear.end_date),
-                            ('number', '!=', False),
+                            ('number', '!=', None),
                             ('type', '=', sequence[:-9]),
                             ]):
                             self.raise_user_error('change_invoice_sequence')
@@ -206,10 +206,44 @@ class Period(ModelSQL, ModelView):
                         if invoice_obj.search([
                             ('invoice_date', '>=', period.start_date),
                             ('invoice_date', '<=', period.end_date),
-                            ('number', '!=', False),
+                            ('number', '!=', None),
                             ('type', '=', sequence[:-9]),
                             ]):
                             self.raise_user_error('change_invoice_sequence')
         return super(Period, self).write(ids, vals)
 
 Period()
+
+
+class Reconciliation(Model):
+    _name = 'account.move.reconciliation'
+
+    def create(self, values):
+        pool = Pool()
+        invoice_obj = pool.get('account.invoice')
+
+        result = super(Reconciliation, self).create(values)
+        reconciliation = self.browse(result)
+        move_ids = set(l.move.id for l in reconciliation.lines)
+        invoice_ids = invoice_obj.search([
+                ('move', 'in', list(move_ids)),
+                ])
+        invoice_obj.process(invoice_ids)
+        return result
+
+    def delete(self, ids):
+        pool = Pool()
+        invoice_obj = pool.get('account.invoice')
+
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+        reconciliations = self.browse(ids)
+        move_ids = set(l.move.id for r in reconciliations for l in r.lines)
+        invoice_ids = invoice_obj.search([
+                ('move', 'in', list(move_ids)),
+                ])
+        result = super(Reconciliation, self).delete(ids)
+        invoice_obj.process(invoice_ids)
+        return result
+
+Reconciliation()
diff --git a/account.xml b/account.xml
index 275c1b2..3c6d10e 100644
--- a/account.xml
+++ b/account.xml
@@ -50,5 +50,45 @@ this repository contains the full copyright notices and license terms. -->
                 ]]>
             </field>
         </record>
+
+        <record model="ir.ui.view" id="move_line_view_list_payment">
+            <field name="model">account.move.line</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="20"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Payment Lines">
+                    <field name="date"/>
+                    <field name="debit" sum="Debit"/>
+                    <field name="credit" sum="Credit"/>
+                    <field name="amount_second_currency"
+                        sum="Amount Second Currency"/>
+                    <field name="second_currency"/>
+                    <field name="currency_digits" tree_invisible="1"/>
+                    <field name="second_currency_digits" tree_invisible="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="move_line_view_list_to_pay">
+            <field name="model">account.move.line</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="20"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Lines to Pay">
+                    <field name="maturity_date"/>
+                    <field name="debit" sum="Debit"/>
+                    <field name="credit" sum="Credit"/>
+                    <field name="amount_second_currency" sum="Amount Second Currency"/>
+                    <field name="second_currency" expand="1"/>
+                    <field name="currency_digits" tree_invisible="1"/>
+                    <field name="second_currency_digits" tree_invisible="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+
     </data>
 </tryton>
diff --git a/invoice.py b/invoice.py
index 4c20569..dbb8059 100644
--- a/invoice.py
+++ b/invoice.py
@@ -3,14 +3,16 @@
 from decimal import Decimal
 import base64
 import operator
-from trytond.model import ModelWorkflow, ModelView, ModelSQL, fields
+from trytond.model import Workflow, ModelView, ModelSQL, fields
 from trytond.report import Report
-from trytond.wizard import Wizard
+from trytond.wizard import Wizard, StateView, StateTransition, StateAction, \
+    Button
 from trytond.backend import TableHandler, FIELDS
 from trytond.pyson import If, Eval, Bool
 from trytond.tools import reduce_ids
 from trytond.transaction import Transaction
 from trytond.pool import Pool
+from trytond.config import CONFIG
 
 _STATES = {
     'readonly': Eval('state') != 'draft',
@@ -34,18 +36,18 @@ _TYPE2JOURNAL = {
 _ZERO = Decimal('0.0')
 
 
-class Invoice(ModelWorkflow, ModelSQL, ModelView):
+class Invoice(Workflow, ModelSQL, ModelView):
     'Invoice'
     _name = 'account.invoice'
     _description = __doc__
     _order_name = 'number'
     company = fields.Many2One('company.company', 'Company', required=True,
-        states=_STATES, select=1, domain=[
+        states=_STATES, select=True, domain=[
             ('id', If(Eval('context', {}).contains('company'), '=', '!='),
                 Eval('context', {}).get('company', 0)),
             ],
         depends=_DEPENDS)
-    type = fields.Selection(_TYPE, 'Type', select=1, on_change=['type',
+    type = fields.Selection(_TYPE, 'Type', select=True, on_change=['type',
             'party', 'company'],
         required=True, states={
             'readonly': ((Eval('state') != 'draft')
@@ -53,7 +55,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 | (Eval('lines') & Eval('type'))),
             }, depends=['state', 'lines'])
     type_name = fields.Function(fields.Char('Type'), 'get_type_name')
-    number = fields.Char('Number', size=None, readonly=True, select=1)
+    number = fields.Char('Number', size=None, readonly=True, select=True)
     reference = fields.Char('Reference', size=None, states=_STATES,
         depends=_DEPENDS)
     description = fields.Char('Description', size=None, states=_STATES,
@@ -73,7 +75,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         depends=['state'])
     accounting_date = fields.Date('Accounting Date', states=_STATES,
         depends=_DEPENDS)
-    party = fields.Many2One('party.party', 'Party', change_default=True,
+    party = fields.Many2One('party.party', 'Party',
         required=True, states=_STATES, depends=_DEPENDS,
         on_change=['party', 'payment_term', 'type', 'company'])
     party_lang = fields.Function(fields.Char('Party Language',
@@ -94,10 +96,12 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         states=_STATES, depends=_DEPENDS, domain=[('centralised', '=', False)])
     move = fields.Many2One('account.move', 'Move', readonly=True)
     account = fields.Many2One('account.account', 'Account', required=True,
-        states=_STATES, depends=_DEPENDS,
+        states=_STATES, depends=_DEPENDS + ['type'],
         domain=[
             ('company', '=', Eval('context', {}).get('company', 0)),
-            ('kind', '!=', 'view'),
+            If(Eval('type').in_(['out_invoice', 'out_credit_note']),
+                ('kind', '=', 'receivable'),
+                ('kind', '=', 'payable')),
             ])
     payment_term = fields.Many2One('account.invoice.payment_term',
         'Payment Term', required=True, states=_STATES, depends=_DEPENDS)
@@ -138,9 +142,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         super(Invoice, self).__init__()
         self._check_modify_exclude = ['state', 'payment_lines',
                 'invoice_report_cache', 'invoice_report_format']
-        self._rpc.update({
-            'button_draft': True,
-        })
         self._constraints += [
             ('check_account', 'account_different_company'),
             ('check_account2', 'same_account_on_line'),
@@ -175,7 +176,35 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     'with account from a different invoice company!',
             'same_account_on_line': 'You can not use the same account\n' \
                     'as on invoice line!',
+            'delete_cancel': 'Invoice "%s" must be cancelled before deletion!',
             })
+        self._transitions |= set((
+                ('draft', 'proforma'),
+                ('proforma', 'open'),
+                ('draft', 'open'),
+                ('open', 'paid'),
+                ('proforma', 'draft'),
+                ('paid', 'open'),
+                ('draft', 'cancel'),
+                ('proforma', 'cancel'),
+                ('cancel', 'draft'),
+                ))
+        self._buttons.update({
+                'cancel': {
+                    'invisible': ~Eval('state').in_(['draft', 'proforma']),
+                    },
+                'draft': {
+                    'invisible': ~Eval('state').in_(['cancel', 'proforma']),
+                    'icon': If(Eval('state') == 'cancel', 'tryton-clear',
+                        'tryton-go-previous'),
+                    },
+                'proforma': {
+                    'invisible': Eval('state') != 'draft',
+                    },
+                'open': {
+                    'invisible': ~Eval('state').in_(['draft', 'proforma']),
+                    },
+                })
 
     def init(self, module_name):
         super(Invoice, self).init(module_name)
@@ -190,15 +219,23 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
 
         if (table.column_exist('invoice_report')
                 and table.column_exist('invoice_report_cache')):
-            cursor.execute('SELECT id, invoice_report '
+            limit = cursor.IN_MAX
+            cursor.execute('SELECT COUNT(id) '
                 'FROM "' + self._table + '"')
-            for invoice_id, report in cursor.fetchall():
-                if report:
-                    report = buffer(base64.decodestring(str(report)))
-                    cursor.execute('UPDATE "' + self._table + '" '
-                        'SET invoice_report_cache = %s '
-                        'WHERE id = %s', (report, invoice_id))
-                table.drop_column('invoice_report')
+            invoice_count, = cursor.fetchone()
+            for offset in range(0, invoice_count, limit):
+                cursor.execute(cursor.limit_clause(
+                    'SELECT id, invoice_report '
+                    'FROM "' + self._table + '"'
+                    'ORDER BY id',
+                    limit, offset))
+                for invoice_id, report in cursor.fetchall():
+                    if report:
+                        report = buffer(base64.decodestring(str(report)))
+                        cursor.execute('UPDATE "' + self._table + '" '
+                            'SET invoice_report_cache = %s '
+                            'WHERE id = %s', (report, invoice_id))
+            table.drop_column('invoice_report')
 
         # Add index on create_date
         table.index_action('create_date', action='add')
@@ -211,11 +248,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
 
     def default_currency(self):
         company_obj = Pool().get('company.company')
-        currency_obj = Pool().get('currency.currency')
         if Transaction().context.get('company'):
             company = company_obj.browse(Transaction().context['company'])
             return company.currency.id
-        return False
 
     def default_currency_digits(self):
         company_obj = Pool().get('company.company')
@@ -225,14 +260,13 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return 2
 
     def default_company(self):
-        return Transaction().context.get('company') or False
+        return Transaction().context.get('company')
 
     def default_payment_term(self):
         payment_term_obj = Pool().get('account.invoice.payment_term')
         payment_term_ids = payment_term_obj.search(self.payment_term.domain)
         if len(payment_term_ids) == 1:
             return payment_term_ids[0]
-        return False
 
     def __get_account_payment_term(self, type_, party_id, company_id):
         '''
@@ -245,14 +279,14 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         payment_term_obj = pool.get('account.invoice.payment_term')
 
         result = {
-            'account': False,
+            'account': None,
             }
         if party_id:
             party = party_obj.browse(party_id)
             if type_ in ('out_invoice', 'out_credit_note'):
                 result['account'] = party.account_receivable.id
-                if type_ == 'out_invoice' and party.payment_term:
-                    result['payment_term'] = party.payment_term.id
+                if type_ == 'out_invoice' and party.customer_payment_term:
+                    result['payment_term'] = party.customer_payment_term.id
             elif type_ in ('in_invoice', 'in_credit_note'):
                 result['account'] = party.account_payable.id
                 if type_ == 'in_invoice' and party.supplier_payment_term:
@@ -260,7 +294,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         if company_id and type_ in ('out_credit_note', 'in_credit_note'):
             company = company_obj.browse(company_id)
             if type_ == 'out_credit_note':
-                result['payment_term'] = company.payment_term.id
+                result['payment_term'] = company.customer_payment_term.id
             else:
                 result['payment_term'] = company.supplier_payment_term.id
         if result['account']:
@@ -291,7 +325,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         party_obj = pool.get('party.party')
         address_obj = pool.get('party.address')
         res = {
-            'invoice_address': False,
+            'invoice_address': None,
         }
         res.update(self.__get_account_payment_term(vals.get('type'),
                 vals.get('party'), vals.get('company')))
@@ -338,7 +372,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             party = party_obj.browse(vals['party'])
             if party.lang:
                 return party.lang.code
-        return 'en_US'
+        return CONFIG['language']
 
     def get_party_language(self, ids, name):
         '''
@@ -354,7 +388,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             if invoice.party.lang:
                 res[invoice.id] = invoice.party.lang.code
             else:
-                res[invoice.id] = 'en_US'
+                res[invoice.id] = CONFIG['language']
         return res
 
     def get_type_name(self, ids, name):
@@ -391,7 +425,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             for line in vals['lines']:
                 if line.get('type', 'line') != 'line':
                     continue
-                res['untaxed_amount'] += line.get('amount', Decimal('0.0'))
+                res['untaxed_amount'] += line.get('amount') or 0
                 with Transaction().set_context(**context):
                     taxes = tax_obj.compute(line.get('taxes', []),
                             line.get('unit_price', Decimal('0.0')),
@@ -451,7 +485,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             if key not in tax_keys:
                 res['tax_amount'] += computed_taxes[key]['amount']
                 res['taxes'].setdefault('add', [])
-                res['taxes']['add'].append(computed_taxes[key])
+                value = tax_obj.default_get(tax_obj._columns.keys())
+                value.update(computed_taxes[key])
+                res['taxes']['add'].append(value)
         if currency:
             res['untaxed_amount'] = currency_obj.round(currency,
                     res['untaxed_amount'])
@@ -620,7 +656,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         pool = Pool()
         rule_obj = pool.get('ir.rule')
         line_obj = pool.get('account.invoice.line')
-        tax_obj = pool.get('account.invoice.tax')
         type_name = FIELDS[self.untaxed_amount._type].sql_type(
                 self.untaxed_amount)[0]
         cursor = Transaction().cursor
@@ -641,7 +676,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     def search_tax_amount(self, name, clause):
         pool = Pool()
         rule_obj = pool.get('ir.rule')
-        line_obj = pool.get('account.invoice.line')
         tax_obj = pool.get('account.invoice.tax')
         type_name = FIELDS[self.tax_amount._type].sql_type(
                 self.tax_amount)[0]
@@ -660,15 +694,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 invoice_val + [str(clause[2])])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
-    def button_draft(self, ids):
-        invoices = self.browse(ids)
-        for invoice in invoices:
-            if invoice.move:
-                self.raise_user_error('reset_draft')
-        self.workflow_trigger_create([x.id for x in invoices])
-        self.write(ids, {'state': 'draft'})
-        return True
-
     def get_tax_context(self, invoice):
         party_obj = Pool().get('party.party')
         res = {}
@@ -810,7 +835,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             res['second_currency'] = invoice.currency.id
         else:
             res['amount_second_currency'] = Decimal('0.0')
-            res['second_currency'] = False
+            res['second_currency'] = None
         if amount >= Decimal('0.0'):
             res['debit'] = Decimal('0.0')
             res['credit'] = amount
@@ -824,15 +849,16 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         res['party'] = invoice.party.id
         return res
 
-    def create_move(self, invoice_id):
+    def create_move(self, invoice):
+        '''
+        Create account move for the invoice and return the created move id
+        '''
         pool = Pool()
-        tax_obj = pool.get('account.invoice.tax')
         payment_term_obj = pool.get('account.invoice.payment_term')
         currency_obj = pool.get('currency.currency')
         move_obj = pool.get('account.move')
         period_obj = pool.get('account.period')
 
-        invoice = self.browse(invoice_id)
         if invoice.move:
             return True
         self.update_taxes([invoice.id], exception=True)
@@ -854,7 +880,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             move_lines.append(val)
         if not currency_obj.is_zero(invoice.currency,
                 remainder_total_currency):
-            move_lines[-1]['amount_second_currency'] += remainder_total_currency
+            move_lines[-1]['amount_second_currency'] += \
+                remainder_total_currency
 
         accounting_date = invoice.accounting_date or invoice.invoice_date
         period_id = period_obj.find(invoice.company.id, date=accounting_date)
@@ -871,16 +898,17 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         move_obj.post(move_id)
         return move_id
 
-    def set_number(self, invoice_id):
+    def set_number(self, invoice):
+        '''
+        Set number to the invoice
+        '''
         pool = Pool()
         period_obj = pool.get('account.period')
         sequence_obj = pool.get('ir.sequence.strict')
         date_obj = pool.get('ir.date')
 
-        invoice = self.browse(invoice_id)
-
         if invoice.number:
-            return True
+            return
 
         test_state = True
         if invoice.type in ('in_invoice', 'in_credit_note'):
@@ -899,7 +927,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             if not invoice.invoice_date:
                 vals['invoice_date'] = Transaction().context['date']
         self.write(invoice.id, vals)
-        return True
 
     def check_modify(self, ids):
         '''
@@ -935,6 +962,11 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         if isinstance(ids, (int, long)):
             ids = [ids]
         self.check_modify(ids)
+        # Cancel before delete
+        self.cancel(ids)
+        for invoice in self.browse(ids):
+            if invoice.state != 'cancel':
+                self.raise_user_error('delete_cancel', invoice.rec_name)
         return super(Invoice, self).delete(ids)
 
     def write(self, ids, vals):
@@ -950,15 +982,12 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         res = super(Invoice, self).write(ids, vals)
         if update_tax_ids:
             self.update_taxes(update_tax_ids)
-        if 'state' in vals and vals['state'] in ('paid', 'cancel'):
-            self.workflow_trigger_trigger(ids)
         return res
 
     def copy(self, ids, default=None):
         pool = Pool()
         line_obj = pool.get('account.invoice.line')
         tax_obj = pool.get('account.invoice.tax')
-        date_obj = pool.get('ir.date')
 
         int_id = False
         if isinstance(ids, (int, long)):
@@ -969,16 +998,16 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             default = {}
         default = default.copy()
         default['state'] = 'draft'
-        default['number'] = False
-        default['move'] = False
-        default['invoice_report_cache'] = False
-        default['invoice_report_format'] = False
-        default['payment_lines'] = False
-        default['lines'] = False
-        default['taxes'] = False
-        default.setdefault('invoice_date', False)
-        default.setdefault('accounting_date', False)
-        default['lines_to_pay'] = False
+        default['number'] = None
+        default['move'] = None
+        default['invoice_report_cache'] = None
+        default['invoice_report_format'] = None
+        default['payment_lines'] = None
+        default['lines'] = None
+        default['taxes'] = None
+        default.setdefault('invoice_date', None)
+        default.setdefault('accounting_date', None)
+        default['lines_to_pay'] = None
 
         new_ids = []
         for invoice in self.browse(ids):
@@ -1048,7 +1077,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 lines = [line.id]
                 remainder = test_amount
 
-            test_amount = (amount + payment_amount) + (line.debit - line.credit)
+            test_amount = (amount + payment_amount)
+            test_amount += (line.debit - line.credit)
             if currency_obj.is_zero(invoice.currency, test_amount):
                 return ([line.id] + payment_lines, Decimal('0.0'))
             if abs(test_amount) < abs(remainder):
@@ -1071,7 +1101,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return (lines, remainder)
 
     def pay_invoice(self, invoice_id, amount, journal_id, date, description,
-            amount_second_currency=False, second_currency=False):
+            amount_second_currency=None, second_currency=None):
         '''
         Add a payment to an invoice
 
@@ -1135,7 +1165,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 'amount_second_currency': amount_second_currency,
                 'second_currency': second_currency,
             })
-            if invoice.account.id == journal.debit_account.id:
+            if invoice.account.id == journal.credit_account.id:
                 self.raise_user_error('same_credit_account')
             if not journal.credit_account:
                 self.raise_user_error('missing_credit_account')
@@ -1148,6 +1178,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             'date': date,
             'lines': [('create', x) for x in lines],
             })
+        move_obj.post(move_id)
 
         move = move_obj.browse(move_id)
 
@@ -1159,13 +1190,14 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 return line.id
         raise Exception('Missing account')
 
-    def print_invoice(self, invoice_id):
+    def print_invoice(self, invoice):
         '''
         Generate invoice report and store it in invoice_report field.
         '''
+        if invoice.invoice_report_cache:
+            return
         invoice_report = Pool().get('account.invoice', type='report')
-        invoice_report.execute([invoice_id], {'id': invoice_id})
-        return
+        invoice_report.execute([invoice.id], {})
 
     def _credit(self, invoice):
         '''
@@ -1222,7 +1254,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             new_id = self.create(vals)
             new_ids.append(new_id)
             if refund:
-                self.workflow_trigger_validate(new_id, 'open')
+                self.open([new_id])
                 new_invoice = self.browse(new_id)
                 if new_invoice.state == 'open':
                     line_ids = [x.id for x in invoice.lines_to_pay
@@ -1232,29 +1264,45 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     move_line_obj.reconcile(line_ids)
         return new_ids
 
-    def wkf_draft(self, invoice):
-        self.write(invoice.id, {'state': 'draft'})
-
-    def wkf_proforma(self, invoice):
-        self.write(invoice.id, {'state': 'proforma'})
+    @ModelView.button
+    @Workflow.transition('draft')
+    def draft(self, ids):
+        pass
 
-    def wkf_open(self, invoice):
-        self.set_number(invoice.id)
-        self.create_move(invoice.id)
-        self.write(invoice.id, {'state': 'open'})
-        self.print_invoice(invoice.id)
+    @ModelView.button
+    @Workflow.transition('proforma')
+    def proforma(self, ids):
+        pass
 
-    def wkf_paid(self, invoice):
-        self.write(invoice.id, {'state': 'paid'})
+    @ModelView.button
+    @Workflow.transition('open')
+    def open(self, ids):
+        for invoice in self.browse(ids):
+            self.set_number(invoice)
+            self.create_move(invoice)
+            self.print_invoice(invoice)
 
-    def wkf_cancel(self, invoice):
-        self.write(invoice.id, {'state': 'cancel'})
+    def process(self, ids):
+        paid = []
+        open_ = []
+        for invoice in self.browse(ids):
+            if invoice.state not in ('open', 'paid'):
+                continue
+            if invoice.reconciled:
+                paid.append(invoice.id)
+            else:
+                open_.append(invoice.id)
+        self.paid(paid)
+        self.open(open_)
 
-    def wkf_triggered_moves(self, invoice):
-        return [x.id for x in invoice.lines_to_pay]
+    @Workflow.transition('paid')
+    def paid(self, ids):
+        pass
 
-    def wkf_open2paid(self, invoice):
-        return invoice.reconciled
+    @ModelView.button
+    @Workflow.transition('cancel')
+    def cancel(self, ids):
+        pass
 
 Invoice()
 
@@ -1264,9 +1312,9 @@ class InvoicePaymentLine(ModelSQL):
     _name = 'account.invoice-account.move.line'
     _description = __doc__
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
-            select=1, required=True)
+            select=True, required=True)
     line = fields.Many2One('account.move.line', 'Payment Line',
-            ondelete='CASCADE', select=1, required=True)
+            ondelete='CASCADE', select=True, required=True)
 
 InvoicePaymentLine()
 
@@ -1278,19 +1326,19 @@ class InvoiceLine(ModelSQL, ModelView):
     _description = __doc__
 
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
-        select=1, states={
+        select=True, states={
             'required': (~Eval('invoice_type') & Eval('party')
                 & Eval('currency') & Eval('company')),
             'invisible': Bool(Eval('context', {}).get('standalone')),
             },
         depends=['invoice_type', 'party', 'company', 'currency'])
-    invoice_type = fields.Selection(_TYPE, 'Invoice Type', select=1,
+    invoice_type = fields.Selection(_TYPE, 'Invoice Type', select=True,
         states={
             'readonly': Eval('context', {}).get('type') | Eval('type'),
             'required': ~Eval('invoice'),
             },
         depends=['invoice', 'type'])
-    party = fields.Many2One('party.party', 'Party', select=1,
+    party = fields.Many2One('party.party', 'Party', select=True,
         states={
             'required': ~Eval('invoice'),
             },
@@ -1311,9 +1359,9 @@ class InvoiceLine(ModelSQL, ModelView):
             ('id', If(Eval('context', {}).contains('company'), '=', '!='),
                 Eval('context', {}).get('company', 0)),
             ],
-        depends=['invoice'])
+        depends=['invoice'], select=True)
 
-    sequence = fields.Integer('Sequence',
+    sequence = fields.Integer('Sequence', required=True,
         states={
             'invisible': Bool(Eval('context', {}).get('standalone')),
             })
@@ -1322,7 +1370,7 @@ class InvoiceLine(ModelSQL, ModelView):
         ('subtotal', 'Subtotal'),
         ('title', 'Title'),
         ('comment', 'Comment'),
-        ], 'Type', select=1, required=True, states={
+        ], 'Type', select=True, required=True, states={
             'invisible': Bool(Eval('context', {}).get('standalone')),
         })
     quantity = fields.Float('Quantity',
@@ -1338,13 +1386,11 @@ class InvoiceLine(ModelSQL, ModelView):
             'invisible': Eval('type') != 'line',
             },
         domain=[
-            ('category', '=',
-                (Eval('product'), 'product.default_uom.category')),
+            If(Bool(Eval('product_uom_category')),
+                ('category', '=', Eval('product_uom_category')),
+                ('category', '!=', -1)),
             ],
-        context={
-            'category': (Eval('product'), 'product.default_uom.category'),
-            },
-        depends=['product', 'type'])
+        depends=['product', 'type', 'product_uom_category'])
     unit_digits = fields.Function(fields.Integer('Unit Digits',
         on_change_with=['unit']), 'get_unit_digits')
     product = fields.Many2One('product.product', 'Product',
@@ -1356,12 +1402,18 @@ class InvoiceLine(ModelSQL, ModelView):
             '_parent_invoice.currency', '_parent_invoice.currency_date',
             'party', 'currency', 'invoice'],
         depends=['type'])
+    product_uom_category = fields.Function(
+        fields.Many2One('product.uom.category', 'Product Uom Category',
+            on_change_with=['product']),
+        'get_product_uom_category')
     account = fields.Many2One('account.account', 'Account',
         domain=[
-            ('kind', '!=', 'view'),
             ('company', '=', Eval('_parent_invoice', {}).get('company',
                     Eval('context', {}).get('company', 0))),
-            ('id', '!=', Eval('_parent_invoice', {}).get('account', 0)),
+            If(Eval('_parent_invoice', {}).get('type').in_(['out_invoice',
+                        'out_credit_note']),
+                ('kind', '=', 'revenue'),
+                ('kind', '=', 'expense')),
             ],
         on_change=['account', 'product'],
         states={
@@ -1387,7 +1439,7 @@ class InvoiceLine(ModelSQL, ModelView):
     description = fields.Text('Description', size=None, required=True)
     note = fields.Text('Note')
     taxes = fields.Many2Many('account.invoice.line-account.tax',
-        'line', 'tax', 'Taxes', domain=[('parent', '=', False)],
+        'line', 'tax', 'Taxes', domain=[('parent', '=', None)],
         states={
             'invisible': Eval('type') != 'line',
             },
@@ -1436,11 +1488,9 @@ class InvoiceLine(ModelSQL, ModelView):
 
     def default_currency(self):
         company_obj = Pool().get('company.company')
-        currency_obj = Pool().get('currency.currency')
         if Transaction().context.get('company'):
             company = company_obj.browse(Transaction().context['company'])
             return company.currency.id
-        return False
 
     def default_currency_digits(self):
         company_obj = Pool().get('company.company')
@@ -1449,25 +1499,22 @@ class InvoiceLine(ModelSQL, ModelView):
             return company.currency.digits
         return 2
 
+    def default_unit_digits(self):
+        return 2
+
     def default_company(self):
-        return Transaction().context.get('company') or False
+        return Transaction().context.get('company')
 
     def default_type(self):
         return 'line'
 
-    def default_quantity(self):
-        return 0.0
-
-    def default_unit_price(self):
-        return Decimal('0.0')
-
     def on_change_with_party_lang(self, vals):
         party_obj = Pool().get('party.party')
         if vals.get('party'):
             party = party_obj.browse(vals['party'])
             if party.lang:
                 return party.lang.code
-        return 'en_US'
+        return CONFIG['language']
 
     def get_party_language(self, ids, name):
         '''
@@ -1483,13 +1530,14 @@ class InvoiceLine(ModelSQL, ModelView):
             if line.party and line.party.lang:
                 res[line.id] = line.party.lang.code
             else:
-                res[line.id] = 'en_US'
+                res[line.id] = CONFIG['language']
         return res
 
     def on_change_with_amount(self, vals):
         currency_obj = Pool().get('currency.currency')
         if vals.get('type') == 'line':
-            currency = vals.get('_parent_invoice.currency') or vals.get('currency')
+            currency = (vals.get('_parent_invoice.currency')
+                or vals.get('currency'))
             if isinstance(currency, (int, long)) and currency:
                 currency = currency_obj.browse(currency)
             amount = Decimal(str(vals.get('quantity') or '0.0')) * \
@@ -1542,8 +1590,8 @@ class InvoiceLine(ModelSQL, ModelView):
                 for line2 in line.invoice.lines:
                     if line2.type == 'line':
                         res[line.id] += currency_obj.round(
-                                line2.invoice.currency,
-                                Decimal(str(line2.quantity)) * line2.unit_price)
+                            line2.invoice.currency,
+                            Decimal(str(line2.quantity)) * line2.unit_price)
                     elif line2.type == 'subtotal':
                         if line.id == line2.id:
                             break
@@ -1559,7 +1607,7 @@ class InvoiceLine(ModelSQL, ModelView):
         res = {}
         for line in self.browse(ids):
             if not line.invoice:
-                res[line.id] = False
+                res[line.id] = None
                 continue
             context = invoice_obj.get_tax_context(line.invoice)
             tax_ids = [x.id for x in line.taxes]
@@ -1596,8 +1644,6 @@ class InvoiceLine(ModelSQL, ModelView):
         pool = Pool()
         product_obj = pool.get('product.product')
         party_obj = pool.get('party.party')
-        account_obj = pool.get('account.account')
-        uom_obj = pool.get('product.uom')
         company_obj = pool.get('company.company')
         currency_obj = pool.get('currency.currency')
         tax_rule_obj = pool.get('account.tax.rule')
@@ -1660,7 +1706,7 @@ class InvoiceLine(ModelSQL, ModelView):
                     continue
                 res['taxes'].append(tax.id)
             if party and party.supplier_tax_rule:
-                tax_ids = tax_rule_obj.apply(party.supplier_tax_rule, False,
+                tax_ids = tax_rule_obj.apply(party.supplier_tax_rule, None,
                         pattern)
                 if tax_ids:
                     res['taxes'].extend(tax_ids)
@@ -1688,7 +1734,7 @@ class InvoiceLine(ModelSQL, ModelView):
                     continue
                 res['taxes'].append(tax.id)
             if party and party.customer_tax_rule:
-                tax_ids = tax_rule_obj.apply(party.customer_tax_rule, False,
+                tax_ids = tax_rule_obj.apply(party.customer_tax_rule, None,
                         pattern)
                 if tax_ids:
                     res['taxes'].extend(tax_ids)
@@ -1710,6 +1756,22 @@ class InvoiceLine(ModelSQL, ModelView):
         res['amount'] = self.on_change_with_amount(vals)
         return res
 
+    def on_change_with_product_uom_category(self, values):
+        pool = Pool()
+        product_obj = pool.get('product.product')
+        if values.get('product'):
+            product = product_obj.browse(values['product'])
+            return product.default_uom_category.id
+
+    def get_product_uom_category(self, ids, name):
+        categories = {}
+        for line in self.browse(ids):
+            if line.product:
+                categories[line.id] = line.product.default_uom_category.id
+            else:
+                categories[line.id] = None
+        return categories
+
     def on_change_account(self, values):
         account_obj = Pool().get('account.account')
         if values.get('product'):
@@ -1822,7 +1884,7 @@ class InvoiceLine(ModelSQL, ModelView):
         else:
             amount = line.amount
             res['amount_second_currency'] = Decimal('0.0')
-            res['second_currency'] = False
+            res['second_currency'] = None
         if line.invoice.type in ('in_invoice', 'out_credit_note'):
             if amount >= Decimal('0.0'):
                 res['debit'] = amount
@@ -1874,7 +1936,7 @@ class InvoiceLineTax(ModelSQL):
     _table = 'account_invoice_line_account_tax'
     _description = __doc__
     line = fields.Many2One('account.invoice.line', 'Invoice Line',
-            ondelete='CASCADE', select=1, required=True)
+            ondelete='CASCADE', select=True, required=True)
     tax = fields.Many2One('account.tax', 'Tax', ondelete='RESTRICT',
             required=True)
 
@@ -1888,9 +1950,9 @@ class InvoiceTax(ModelSQL, ModelView):
     _description = __doc__
 
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
-            select=1)
+            select=True)
     description = fields.Char('Description', size=None, required=True)
-    sequence = fields.Integer('Sequence')
+    sequence = fields.Integer('Sequence', required=True)
     sequence_number = fields.Function(fields.Integer('Sequence Number'),
             'get_sequence_number')
     account = fields.Many2One('account.account', 'Account', required=True,
@@ -1898,21 +1960,21 @@ class InvoiceTax(ModelSQL, ModelView):
             ('kind', '!=', 'view'),
             ('company', '=', Eval('_parent_invoice', {}).get('company', 0)),
             ])
-    base = fields.Numeric('Base',
+    base = fields.Numeric('Base', required=True,
         digits=(16, Eval('_parent_invoice', {}).get('currency_digits', 2)))
-    amount = fields.Numeric('Amount',
+    amount = fields.Numeric('Amount', required=True,
         digits=(16, Eval('_parent_invoice', {}).get('currency_digits', 2)))
     manual = fields.Boolean('Manual')
     base_code = fields.Many2One('account.tax.code', 'Base Code',
         domain=[
             ('company', '=', Eval('_parent_invoice', {}).get('company', 0)),
             ])
-    base_sign = fields.Numeric('Base Sign', digits=(2, 0))
+    base_sign = fields.Numeric('Base Sign', digits=(2, 0), required=True)
     tax_code = fields.Many2One('account.tax.code', 'Tax Code',
         domain=[
             ('company', '=', Eval('_parent_invoice', {}).get('company', 0)),
             ])
-    tax_sign = fields.Numeric('Tax Sign', digits=(2, 0))
+    tax_sign = fields.Numeric('Tax Sign', digits=(2, 0), required=True)
     tax = fields.Many2One('account.tax', 'Tax')
 
     def __init__(self):
@@ -2017,7 +2079,7 @@ class InvoiceTax(ModelSQL, ModelView):
         else:
             amount = tax.amount
             res['amount_second_currency'] = Decimal('0.0')
-            res['second_currency'] = False
+            res['second_currency'] = None
         if tax.invoice.type in ('in_invoice', 'out_credit_note'):
             if amount >= Decimal('0.0'):
                 res['debit'] = amount
@@ -2040,7 +2102,7 @@ class InvoiceTax(ModelSQL, ModelView):
             res['tax_lines'] = [('create', {
                 'code': tax.tax_code.id,
                 'amount': amount * tax.tax_sign,
-                'tax': tax.tax and tax.tax.id or False
+                'tax': tax.tax and tax.tax.id or None
             })]
         return [res]
 
@@ -2061,78 +2123,43 @@ class InvoiceTax(ModelSQL, ModelView):
 InvoiceTax()
 
 
-class PrintInvoiceReportWarning(ModelView):
+class PrintInvoiceWarning(ModelView):
     'Print Invoice Report Warning'
-    _name = 'account.invoice.print_invoice_report.warning'
+    _name = 'account.invoice.print.warning'
     _description = __doc__
 
-PrintInvoiceReportWarning()
+PrintInvoiceWarning()
 
 
-class PrintInvoiceReport(Wizard):
+class PrintInvoice(Wizard):
     'Print Invoice Report'
-    _name = 'account.invoice.print_invoice_report'
-    states = {
-        'init': {
-            'result': {
-                'type': 'choice',
-                'next_state': '_choice',
-            },
-        },
-        'warning': {
-            'result': {
-                'type': 'form',
-                'object': 'account.invoice.print_invoice_report.warning',
-                'state': [
-                    ('end', 'Cancel', 'tryton-cancel'),
-                    ('print', 'Print', 'tryton-ok', True),
-                ],
-            },
-        },
-        'print': {
-            'actions': ['_print_init'],
-            'result': {
-                'type': 'print',
-                'report': 'account.invoice',
-                'state': 'print_next',
-                'get_id_from_action': True,
-            },
-        },
-        'print_next': {
-            'actions': ['_next_id'],
-            'result': {
-                'type': 'choice',
-                'next_state': '_print_next',
-            },
-        }
-    }
+    _name = 'account.invoice.print'
 
-    def _choice(self, data):
-        if len(data['ids']) > 1:
+    start = StateTransition()
+    warning = StateView('account.invoice.print.warning',
+        'account_invoice.print_warning_view_form', [
+            Button('Cancel', 'end', 'tryton-cancel'),
+            Button('Print', 'print_', 'tryton-print', default=True),
+            ])
+    print_ = StateAction('account_invoice.report_invoice')
+
+    def transition_start(self, session):
+        if len(Transaction().context['active_ids']) > 1:
             return 'warning'
-        return 'print'
+        return 'print_'
 
-    def _print_init(self, data):
-        res = {}
-        if 'ids' in data['form']:
-            res['ids'] = data['form']['ids']
-        else:
-            res['ids'] = data['ids']
-        return res
+    def do_print_(self, session, action):
+        data = {}
+        data['id'] = Transaction().context['active_ids'].pop()
+        data['ids'] = [data['id']]
+        return action, data
 
-    def _next_id(self, data):
-        res = {}
-        if data['form']['ids']:
-            data['form']['ids'].pop(0)
-        res['ids'] = data['form']['ids']
-        return res
-
-    def _print_next(self, data):
-        if not data['form']['ids']:
-            return 'end'
-        return 'print'
+    def transition_print_(self, session):
+        if Transaction().context['active_ids']:
+            return 'print_'
+        return 'end'
 
-PrintInvoiceReport()
+PrintInvoice()
 
 
 class InvoiceReport(Report):
@@ -2142,11 +2169,11 @@ class InvoiceReport(Report):
         super(InvoiceReport, self).__init__()
         self._rpc['execute'] = True
 
-    def execute(self, ids, datas):
+    def execute(self, ids, data):
         invoice_obj = Pool().get('account.invoice')
 
-        res = super(InvoiceReport, self).execute(ids, datas)
-        if len(ids) > 1 or datas['id'] != ids[0]:
+        res = super(InvoiceReport, self).execute(ids, data)
+        if len(ids) > 1:
             res = (res[0], res[1], True, res[3])
         else:
             invoice = invoice_obj.browse(ids[0])
@@ -2154,13 +2181,13 @@ class InvoiceReport(Report):
                 res = (res[0], res[1], res[2], res[3] + ' - ' + invoice.number)
         return res
 
-    def _get_objects(self, ids, model, datas):
+    def _get_objects(self, ids, model, data):
         invoice_obj = Pool().get('account.invoice')
 
         with Transaction().set_context(language=False):
             return invoice_obj.browse([ids[0]])
 
-    def parse(self, report, objects, datas, localcontext):
+    def parse(self, report, objects, data, localcontext):
         user_obj = Pool().get('res.user')
         invoice_obj = Pool().get('account.invoice')
 
@@ -2172,7 +2199,7 @@ class InvoiceReport(Report):
 
         user = user_obj.browse(Transaction().user)
         localcontext['company'] = user.company
-        res = super(InvoiceReport, self).parse(report, objects, datas,
+        res = super(InvoiceReport, self).parse(report, objects, data,
                 localcontext)
         # If the invoice is open or paid and the report not saved in
         # invoice_report_cache there was an error somewhere. So we save it now
@@ -2187,12 +2214,12 @@ class InvoiceReport(Report):
 InvoiceReport()
 
 
-class PayInvoiceInit(ModelView):
-    'Pay Invoice Init'
-    _name = 'account.invoice.pay_invoice.init'
+class PayInvoiceStart(ModelView):
+    'Pay Invoice'
+    _name = 'account.invoice.pay.start'
     _description = __doc__
     amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)),
-        depends=['currency_digits'])
+        depends=['currency_digits'], required=True)
     currency = fields.Many2One('currency.currency', 'Currency', required=True)
     currency_digits = fields.Integer('Currency Digits', readonly=True,
             on_change_with=['currency'])
@@ -2205,6 +2232,9 @@ class PayInvoiceInit(ModelView):
         date_obj = Pool().get('ir.date')
         return date_obj.today()
 
+    def default_currency_digits(self):
+        return 2
+
     def on_change_with_currency_digits(self, vals):
         currency_obj = Pool().get('currency.currency')
         if vals.get('currency'):
@@ -2212,12 +2242,12 @@ class PayInvoiceInit(ModelView):
             return currency.digits
         return 2
 
-PayInvoiceInit()
+PayInvoiceStart()
 
 
 class PayInvoiceAsk(ModelView):
-    'Pay Invoice Ask'
-    _name = 'account.invoice.pay_invoice.ask'
+    'Pay Invoice'
+    _name = 'account.invoice.pay.ask'
     _description = __doc__
     type = fields.Selection([
         ('writeoff', 'Write-Off'),
@@ -2253,7 +2283,7 @@ class PayInvoiceAsk(ModelView):
             'invisible': Eval('type') != 'writeoff',
             }, depends=['type'])
     currency_digits_writeoff = fields.Integer('Write-Off Currency Digits',
-            readonly=True)
+            required=True, readonly=True)
     lines_to_pay = fields.Many2Many('account.move.line', None, None,
             'Lines to Pay', readonly=True)
     lines = fields.Many2Many('account.move.line', None, None, 'Lines',
@@ -2271,12 +2301,7 @@ class PayInvoiceAsk(ModelView):
         states={
             'invisible': Eval('type') != 'writeoff',
             }, depends=['type'])
-    description = fields.Char('Description', size=None, readonly=True)
-    journal = fields.Many2One('account.journal', 'Journal', readonly=True,
-            domain=[('type', '=', 'cash')])
-    date = fields.Date('Date', readonly=True)
     company = fields.Many2One('company.company', 'Company', readonly=True)
-    account = fields.Many2One('account.account', 'Account', readonly=True)
     invoice = fields.Many2One('account.invoice', 'Invoice', readonly=True)
 
     def default_type(self):
@@ -2308,44 +2333,20 @@ PayInvoiceAsk()
 
 class PayInvoice(Wizard):
     'Pay Invoice'
-    _name = 'account.invoice.pay_invoice'
-    states = {
-        'init': {
-            'actions': ['_init'],
-            'result': {
-                'type': 'form',
-                'object': 'account.invoice.pay_invoice.init',
-                'state': [
-                    ('end', 'Cancel', 'tryton-cancel'),
-                    ('choice', 'Ok', 'tryton-ok', True),
-                ],
-            },
-        },
-        'choice': {
-            'result': {
-                'type': 'choice',
-                'next_state': '_choice',
-            },
-        },
-        'ask': {
-            'actions': ['_ask'],
-            'result': {
-                'type': 'form',
-                'object': 'account.invoice.pay_invoice.ask',
-                'state': [
-                    ('end', 'Cancel', 'tryton-cancel'),
-                    ('pay', 'Ok', 'tryton-ok', True),
-                ],
-            },
-        },
-        'pay': {
-            'result': {
-                'type': 'action',
-                'action': '_action_pay',
-                'state': 'end',
-            },
-        },
-    }
+    _name = 'account.invoice.pay'
+
+    start = StateView('account.invoice.pay.start',
+        'account_invoice.pay_start_view_form', [
+            Button('Cancel', 'end', 'tryton-cancel'),
+            Button('Ok', 'choice', 'tryton-ok', default=True),
+            ])
+    choice = StateTransition()
+    ask = StateView('account.invoice.pay.ask',
+        'account_invoice.pay_ask_view_form', [
+            Button('Cancel', 'end', 'tryton-cancel'),
+            Button('Ok', 'pay', 'tryton-ok', default=True),
+            ])
+    pay = StateTransition()
 
     def __init__(self):
         super(PayInvoice, self).__init__()
@@ -2354,169 +2355,154 @@ class PayInvoice(Wizard):
                     'payment with an amount greater then the amount to pay!',
             })
 
-    def _init(self, data):
+    def default_start(self, session, fields):
         invoice_obj = Pool().get('account.invoice')
-        res = {}
-        invoice = invoice_obj.browse(data['id'])
-        res['currency'] = invoice.currency.id
-        res['currency_digits'] = invoice.currency.digits
-        res['amount'] = invoice.amount_to_pay_today or invoice.amount_to_pay
-        res['description'] = invoice.number
-        return res
-
-    def _choice(self, data):
+        default = {}
+        invoice = invoice_obj.browse(Transaction().context['active_id'])
+        default['currency'] = invoice.currency.id
+        default['currency_digits'] = invoice.currency.digits
+        default['amount'] = (invoice.amount_to_pay_today
+            or invoice.amount_to_pay)
+        default['description'] = invoice.number
+        return default
+
+    def transition_choice(self, session):
         invoice_obj = Pool().get('account.invoice')
         currency_obj = Pool().get('currency.currency')
 
-        invoice = invoice_obj.browse(data['id'])
+        invoice = invoice_obj.browse(Transaction().context['active_id'])
 
-        with Transaction().set_context(date=data['form']['date']):
-            amount = currency_obj.compute(data['form']['currency'],
-                    data['form']['amount'], invoice.company.currency.id)
-        res = invoice_obj.get_reconcile_lines_for_amount(invoice, amount)
-        if res[1] == Decimal('0.0') and amount <= invoice.amount_to_pay:
+        with Transaction().set_context(date=session.start.date):
+            amount = currency_obj.compute(session.start.currency.id,
+                session.start.amount, invoice.company.currency.id)
+        _, remainder = invoice_obj.get_reconcile_lines_for_amount(invoice,
+            amount)
+        if remainder == Decimal('0.0') and amount <= invoice.amount_to_pay:
             return 'pay'
         return 'ask'
 
-    def _ask(self, data):
+    def default_ask(self, session, fields):
         pool = Pool()
         invoice_obj = pool.get('account.invoice')
         currency_obj = pool.get('currency.currency')
         line_obj = pool.get('account.move.line')
 
-        res = {}
-        invoice = invoice_obj.browse(data['id'])
-        res['lines_to_pay'] = [x.id for x in invoice.lines_to_pay
+        default = {}
+        invoice = invoice_obj.browse(Transaction().context['active_id'])
+        default['lines_to_pay'] = [x.id for x in invoice.lines_to_pay
                 if not x.reconciliation]
 
-        res['amount'] = data['form']['amount']
-        res['currency'] = data['form']['currency']
-        res['currency_digits'] = data['form']['currency_digits']
-        res['description'] = data['form']['description']
-        res['journal'] = data['form']['journal']
-        res['date'] = data['form']['date']
-        res['company'] = invoice.company.id
+        default['amount'] = session.start.amount
+        default['currency'] = session.start.currency.id
+        default['currency_digits'] = session.start.currency_digits
+        default['company'] = invoice.company.id
 
-        with Transaction().set_context(date=data['form']['date']):
-            amount = currency_obj.compute(data['form']['currency'],
-                data['form']['amount'], invoice.company.currency.id)
+        with Transaction().set_context(date=session.start.date):
+            amount = currency_obj.compute(session.start.currency.id,
+                session.start.amount, invoice.company.currency.id)
 
         if currency_obj.is_zero(invoice.company.currency, amount):
-            res['lines'] = [x.id for x in invoice.lines_to_pay]
+            default['lines'] = [x.id for x in invoice.lines_to_pay]
         else:
-            res['lines'] = invoice_obj.get_reconcile_lines_for_amount(invoice,
-                    amount)[0]
-        for line_id in res['lines'][:]:
-            if line_id not in res['lines_to_pay']:
-                res['lines'].remove(line_id)
-
-        res['amount_writeoff'] = Decimal('0.0')
-        for line in line_obj.browse(res['lines']):
-            res['amount_writeoff'] += line.debit - line.credit
+            default['lines'], _ = \
+                invoice_obj.get_reconcile_lines_for_amount(invoice, amount)
+        for line_id in default['lines'][:]:
+            if line_id not in default['lines_to_pay']:
+                default['lines'].remove(line_id)
+
+        default['amount_writeoff'] = Decimal('0.0')
+        for line in line_obj.browse(default['lines']):
+            default['amount_writeoff'] += line.debit - line.credit
         for line in invoice.payment_lines:
-            res['amount_writeoff'] += line.debit - line.credit
+            default['amount_writeoff'] += line.debit - line.credit
         if invoice.type in ('in_invoice', 'out_credit_note'):
-            res['amount_writeoff'] = - res['amount_writeoff'] - amount
+            default['amount_writeoff'] = - default['amount_writeoff'] - amount
         else:
-            res['amount_writeoff'] = res['amount_writeoff'] - amount
+            default['amount_writeoff'] = default['amount_writeoff'] - amount
 
-        res['currency_writeoff'] = invoice.company.currency.id
-        res['currency_digits_writeoff'] = invoice.company.currency.digits
-        res['invoice'] = invoice.id
-        res['payment_lines'] = [x.id for x in invoice.payment_lines
+        default['currency_writeoff'] = invoice.company.currency.id
+        default['currency_digits_writeoff'] = invoice.company.currency.digits
+        default['invoice'] = invoice.id
+        default['payment_lines'] = [x.id for x in invoice.payment_lines
                 if not x.reconciliation]
 
         if amount > invoice.amount_to_pay \
                 or currency_obj.is_zero(invoice.company.currency, amount):
-            res['type'] = 'writeoff'
-        return res
+            default['type'] = 'writeoff'
+        return default
 
-    def _action_pay(self, data):
+    def transition_pay(self, session):
         pool = Pool()
         invoice_obj = pool.get('account.invoice')
         currency_obj = pool.get('currency.currency')
         move_line_obj = pool.get('account.move.line')
 
-        invoice = invoice_obj.browse(data['id'])
+        invoice = invoice_obj.browse(Transaction().context['active_id'])
 
-        with Transaction().set_context(date=data['form']['date']):
-            amount = currency_obj.compute(data['form']['currency'],
-                    data['form']['amount'], invoice.company.currency.id)
+        with Transaction().set_context(date=session.start.date):
+            amount = currency_obj.compute(session.start.currency.id,
+                session.start.amount, invoice.company.currency.id)
 
-        reconcile_lines = invoice_obj.get_reconcile_lines_for_amount(invoice,
-                amount)
+        reconcile_lines, remainder = \
+            invoice_obj.get_reconcile_lines_for_amount(invoice, amount)
 
-        amount_second_currency = False
-        second_currency = False
-        if data['form']['currency'] != invoice.company.currency.id:
-            amount_second_currency = data['form']['amount']
-            second_currency = data['form']['currency']
+        amount_second_currency = None
+        second_currency = None
+        if session.start.currency.id != invoice.company.currency.id:
+            amount_second_currency = session.start.amount
+            second_currency = session.start.currency
 
         if amount > invoice.amount_to_pay and \
-                data['form'].get('type') != 'writeoff':
+                session.ask.type != 'writeoff':
             self.raise_user_error('amount_greater_amount_to_pay')
 
-        line_id = False
+        line_id = None
         if not currency_obj.is_zero(invoice.company.currency, amount):
-            line_id = invoice_obj.pay_invoice(data['id'], amount,
-                    data['form']['journal'], data['form']['date'],
-                    data['form']['description'], amount_second_currency,
-                    second_currency)
-
-        if reconcile_lines[1] != Decimal('0.0'):
-            if data['form'].get('type') == 'writeoff':
-                line_ids = data['form']['lines'][0][1] + \
-                        [x.id for x in invoice.payment_lines
-                                if not x.reconciliation]
+            line_id = invoice_obj.pay_invoice(invoice.id, amount,
+                session.start.journal.id, session.start.date,
+                session.start.description, amount_second_currency,
+                second_currency)
+
+        if remainder != Decimal('0.0'):
+            if session.ask.type == 'writeoff':
+                line_ids = [x.id for x in session.ask.lines] + \
+                    [x.id for x in invoice.payment_lines
+                        if not x.reconciliation]
                 if line_ids:
                     move_line_obj.reconcile(line_ids,
-                            journal_id=data['form']['journal_writeoff'],
-                            date=data['form']['date'],
-                            account_id=data['form']['account_writeoff'])
+                        journal_id=session.ask.journal_writeoff,
+                        date=session.start.date,
+                        account_id=session.ask.account_writeoff)
         else:
-            line_ids = reconcile_lines[0]
             if line_id:
-                line_ids += [line_id]
-            if line_ids:
-                move_line_obj.reconcile(line_ids)
-        return {}
+                reconcile_lines += [line_id]
+            if reconcile_lines:
+                move_line_obj.reconcile(reconcile_lines)
+        return 'end'
 
 PayInvoice()
 
 
-class CreditInvoiceInit(ModelView):
+class CreditInvoiceStart(ModelView):
     'Credit Invoice Init'
-    _name = 'account.invoice.credit_invoice.init'
+    _name = 'account.invoice.credit.start'
     _description = __doc__
     with_refund = fields.Boolean('With Refund', help='If true, ' \
             'the current invoice(s) will be paid.')
 
-CreditInvoiceInit()
+CreditInvoiceStart()
 
 
 class CreditInvoice(Wizard):
     'Credit Invoice'
-    _name = 'account.invoice.credit_invoice'
-    states = {
-        'init': {
-            'actions': ['_init'],
-            'result': {
-                'type': 'form',
-                'object': 'account.invoice.credit_invoice.init',
-                'state': [
-                    ('end', 'Cancel', 'tryton-cancel'),
-                    ('credit', 'Credit', 'tryton-ok', True),
-                ],
-            }
-        },
-        'credit': {
-            'result': {
-                'type': 'action',
-                'action': '_action_credit',
-                'state': 'end',
-            },
-        },
-    }
+    _name = 'account.invoice.credit'
+
+    start = StateView('account.invoice.credit.start',
+        'account_invoice.credit_start_view_form', [
+            Button('Cancel', 'end', 'tryton-cancel'),
+            Button('Credit', 'credit', 'tryton-ok', default=True),
+            ])
+    credit = StateAction('account_invoice.act_invoice_form')
 
     def __init__(self):
         super(CreditInvoice, self).__init__()
@@ -2527,40 +2513,36 @@ class CreditInvoice(Wizard):
                     'an invoice with payments!',
             })
 
-    def _init(self, data):
+    def default_start(self, session, fields):
         invoice_obj = Pool().get('account.invoice')
-        res = {
+        default = {
             'with_refund': True,
         }
-        for invoice in invoice_obj.browse(data['ids']):
+        for invoice in invoice_obj.browse(Transaction().context['active_ids']):
             if invoice.state != 'open' or invoice.payment_lines:
-                res['with_refund'] = False
+                default['with_refund'] = False
                 break
-        return res
+        return default
 
-    def _action_credit(self, data):
+    def do_credit(self, session, action):
         pool = Pool()
-        model_data_obj = pool.get('ir.model.data')
-        act_window_obj = pool.get('ir.action.act_window')
         invoice_obj = pool.get('account.invoice')
 
-        refund = data['form']['with_refund']
+        refund = session.start.with_refund
+        invoice_ids = Transaction().context['active_ids']
 
         if refund:
-            for invoice in invoice_obj.browse(data['ids']):
+            for invoice in invoice_obj.browse(invoice_ids):
                 if invoice.state != 'open':
                     self.raise_user_error('refund_non_open')
                 if invoice.payment_lines:
                     self.raise_user_error('refund_with_payement')
 
-        invoice_ids = invoice_obj.credit(data['ids'], refund=refund)
+        invoice_ids = invoice_obj.credit(invoice_ids, refund=refund)
 
-        act_window_id = model_data_obj.get_id('account_invoice',
-                'act_invoice_form')
-        res = act_window_obj.read(act_window_id)
-        res['res_id'] = invoice_ids
+        data = {'res_id': invoice_ids}
         if len(invoice_ids) == 1:
-            res['views'].reverse()
-        return res
+            action['views'].reverse()
+        return action, data
 
 CreditInvoice()
diff --git a/invoice.xml b/invoice.xml
index f5fbc0e..e53f452 100644
--- a/invoice.xml
+++ b/invoice.xml
@@ -3,14 +3,12 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
-        <menuitem name="Payment Terms" parent="account.menu_account_configuration"
-            id="menu_payment_terms_configuration"/>
         <menuitem name="Invoices" parent="account.menu_account"
             id="menu_invoices" sequence="20"/>
 
-        <record model="ir.action.wizard" id="wizard_pay_invoice">
+        <record model="ir.action.wizard" id="wizard_pay">
             <field name="name">Pay Invoice</field>
-            <field name="wiz_name">account.invoice.pay_invoice</field>
+            <field name="wiz_name">account.invoice.pay</field>
             <field name="model">account.invoice</field>
         </record>
 
@@ -43,38 +41,12 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="payment_term"/>
                             <label name="currency"/>
                             <field name="currency"/>
-                            <field name="lines" colspan="6">
-                                <tree string="Lines" sequence="sequence" fill="1">
-                                    <field name="type"/>
-                                    <field name="product"/>
-                                    <field name="account" tree_invisible="1"/>
-                                    <field name="description"/>
-                                    <field name="quantity"/>
-                                    <field name="unit"/>
-                                    <field name="unit_price"/>
-                                    <field name="taxes"/>
-                                    <field name="amount"/>
-                                    <field name="sequence" tree_invisible="1"/>
-                                    <field name="unit_digits" tree_invisible="1"/>
-                                    <field name="currency_digits" tree_invisible="1"/>
-                                </tree>
-                            </field>
+                            <field name="lines" colspan="6"
+                                view_ids="account_invoice.invoice_line_view_tree_sequence"/>
                             <group col="2" colspan="6" id="taxes_amount_state_buttons">
                                 <group col="1" colspan="1" id="taxes">
-                                    <field name="taxes">
-                                        <tree string="Taxes" sequence="sequence" fill="1">
-                                            <field name="description"/>
-                                            <field name="base"/>
-                                            <field name="amount"/>
-                                            <field name="sequence" tree_invisible="1"/>
-                                            <field name="manual" tree_invisible="1"/>
-                                            <field name="base_code" tree_invisible="1"/>
-                                            <field name="base_sign" tree_invisible="1"/>
-                                            <field name="tax_code" tree_invisible="1"/>
-                                            <field name="tax_sign" tree_invisible="1"/>
-                                            <field name="account" tree_invisible="1"/>
-                                        </tree>
-                                    </field>
+                                    <field name="taxes"
+                                        view_ids="account_invoice.invoice_tax_view_tree_sequence"/>
                                 </group>
                                 <group col="4" colspan="1" id="amount_state_buttons">
                                     <group col="2" colspan="2" id="reconciled_state">
@@ -93,22 +65,17 @@ this repository contains the full copyright notices and license terms. -->
                                     </group>
                                     <group col="5" colspan="4" id="buttons">
                                         <button name="cancel" string="_Cancel"
-                                            states="{'invisible': Not(In(Eval('state'), ['draft', 'proforma'])), 'readonly': Not(In(%(account.group_account)d, Eval('groups', [])))}"
                                             icon="tryton-cancel"/>
-                                        <button name="button_draft" string="_Reset to Draft"
-                                            type="object"
-                                            states="{'invisible': Not(Equal(Eval('state'), 'cancel'))}"
-                                            icon="tryton-clear"/>
                                         <button name="draft" string="_Draft"
-                                            states="{'invisible': Not(Equal(Eval('state'), 'proforma'))}"
+                                            type="object"
                                             icon="tryton-go-previous"/>
                                         <button name="proforma" string="Pro For_ma"
-                                            states="{'invisible': Not(Equal(Eval('state'), 'draft'))}"
+                                            type="object"
                                             icon="tryton-go-next"/>
                                         <button name="open" string="_Open"
-                                            states="{'invisible': Not(In(Eval('state'), ['draft', 'proforma'])), 'readonly': Not(In(%(account.group_account)d, Eval('groups', [])))}"
+                                            type="object"
                                             icon="tryton-ok"/>
-                                        <button name="%(wizard_pay_invoice)d" string="_Pay"
+                                        <button name="%(wizard_pay)d" string="_Pay"
                                             type="action"
                                             states="{'invisible': Not(Equal(Eval('state'), 'open')), 'readonly': Not(In(%(account.group_account)d, Eval('groups', [])))}"
                                             icon="tryton-go-next"/>
@@ -134,18 +101,8 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="amount_to_pay_today"/>
                             <label name="amount_to_pay"/>
                             <field name="amount_to_pay"/>
-                            <field name="payment_lines" colspan="4">
-                                <tree string="Payment Lines">
-                                    <field name="date"/>
-                                    <field name="debit" sum="Debit"/>
-                                    <field name="credit" sum="Credit"/>
-                                    <field name="amount_second_currency"
-                                        sum="Amount Second Currency"/>
-                                    <field name="second_currency"/>
-                                    <field name="currency_digits" tree_invisible="1"/>
-                                    <field name="second_currency_digits" tree_invisible="1"/>
-                                </tree>
-                            </field>
+                            <field name="payment_lines" colspan="4"
+                                view_ids="account_invoice.move_line_view_list_payment"/>
                         </page>
                     </notebook>
                     <field name="currency_digits" invisible="1" colspan="6"/>
@@ -519,6 +476,47 @@ this repository contains the full copyright notices and license terms. -->
             <field name="perm_create" eval="True"/>
             <field name="perm_delete" eval="True"/>
         </record>
+
+        <record model="ir.model.button" id="invoice_cancel_button">
+            <field name="name">cancel</field>
+            <field name="model" search="[('model', '=', 'account.invoice')]"/>
+        </record>
+        <record model="ir.model.button-res.group"
+            id="invoice_cancel_button_group_account">
+            <field name="button" ref="invoice_cancel_button"/>
+            <field name="group" ref="account.group_account"/>
+        </record>
+
+        <record model="ir.model.button" id="invoice_draft_button">
+            <field name="name">draft</field>
+            <field name="model" search="[('model', '=', 'account.invoice')]"/>
+        </record>
+        <record model="ir.model.button-res.group"
+            id="invoice_draft_button_group_account">
+            <field name="button" ref="invoice_draft_button"/>
+            <field name="group" ref="account.group_account"/>
+        </record>
+
+        <record model="ir.model.button" id="invoice_proforma_button">
+            <field name="name">proforma</field>
+            <field name="model" search="[('model', '=', 'account.invoice')]"/>
+        </record>
+        <record model="ir.model.button-res.group"
+            id="invoice_proforma_button_group_account">
+            <field name="button" ref="invoice_proforma_button"/>
+            <field name="group" ref="account.group_account"/>
+        </record>
+
+        <record model="ir.model.button" id="invoice_open_button">
+            <field name="name">open</field>
+            <field name="model" search="[('model', '=', 'account.invoice')]"/>
+        </record>
+        <record model="ir.model.button-res.group"
+            id="invoice_open_button_group_account">
+            <field name="button" ref="invoice_open_button"/>
+            <field name="group" ref="account.group_account"/>
+        </record>
+
         <record model="ir.action.report" id="report_invoice">
             <field name="name">Invoice</field>
             <field name="model">account.invoice</field>
@@ -541,81 +539,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="group" ref="account.group_account_admin"/>
         </record>
 
-        <record model="workflow" id="invoice_workflow">
-            <field name="name">Invoice workflow</field>
-            <field name="model">account.invoice</field>
-            <field name="on_create" eval="True"/>
-        </record>
-        <record model="workflow.activity" id="invoice_activity_draft">
-            <field name="name">Draft</field>
-            <field name="workflow" ref="invoice_workflow"/>
-            <field name="method">wkf_draft</field>
-            <field name="flow_start" eval="True"/>
-        </record>
-        <record model="workflow.activity" id="invoice_activity_proforma">
-            <field name="name">Pro forma</field>
-            <field name="workflow" ref="invoice_workflow"/>
-            <field name="method">wkf_proforma</field>
-        </record>
-        <record model="workflow.activity" id="invoice_activity_open">
-            <field name="name">Open</field>
-            <field name="workflow" ref="invoice_workflow"/>
-            <field name="method">wkf_open</field>
-        </record>
-        <record model="workflow.activity" id="invoice_activity_paid">
-            <field name="name">Paid</field>
-            <field name="workflow" ref="invoice_workflow"/>
-            <field name="method">wkf_paid</field>
-            <field name="flow_stop" eval="True"/>
-        </record>
-        <record model="workflow.activity" id="invoice_activity_cancel">
-            <field name="name">Canceled</field>
-            <field name="workflow" ref="invoice_workflow"/>
-            <field name="method">wkf_cancel</field>
-            <field name="flow_stop" eval="True"/>
-        </record>
-        <record model="workflow.transition" id="invoice_transition_draft_proforma">
-            <field name="act_from" ref="invoice_activity_draft"/>
-            <field name="act_to" ref="invoice_activity_proforma"/>
-            <field name="signal">proforma</field>
-        </record>
-        <record model="workflow.transition" id="invoice_transition_proforma_draft">
-            <field name="act_from" ref="invoice_activity_proforma"/>
-            <field name="act_to" ref="invoice_activity_draft"/>
-            <field name="signal">draft</field>
-        </record>
-        <record model="workflow.transition" id="invoice_transition_draft_open">
-            <field name="act_from" ref="invoice_activity_draft"/>
-            <field name="act_to" ref="invoice_activity_open"/>
-            <field name="signal">open</field>
-            <field name="group" ref="account.group_account"/>
-        </record>
-        <record model="workflow.transition" id="invoice_transition_proforma_open">
-            <field name="act_from" ref="invoice_activity_proforma"/>
-            <field name="act_to" ref="invoice_activity_open"/>
-            <field name="signal">open</field>
-            <field name="group" ref="account.group_account"/>
-        </record>
-        <record model="workflow.transition" id="invoice_transition_open_paid">
-            <field name="act_from" ref="invoice_activity_open"/>
-            <field name="act_to" ref="invoice_activity_paid"/>
-            <field name="trigger_model">account.move.line</field>
-            <field name="trigger_ids">wkf_triggered_moves</field>
-            <field name="condition">wkf_open2paid</field>
-        </record>
-        <record model="workflow.transition" id="invoice_transition_draft_cancel">
-            <field name="act_from" ref="invoice_activity_draft"/>
-            <field name="act_to" ref="invoice_activity_cancel"/>
-            <field name="signal">cancel</field>
-            <field name="group" ref="account.group_account"/>
-        </record>
-        <record model="workflow.transition" id="invoice_transition_proforma_cancel">
-            <field name="act_from" ref="invoice_activity_proforma"/>
-            <field name="act_to" ref="invoice_activity_cancel"/>
-            <field name="signal">cancel</field>
-            <field name="group" ref="account.group_account"/>
-        </record>
-
         <record model="ir.ui.view" id="invoice_line_view_form">
             <field name="model">account.invoice.line</field>
             <field name="type">form</field>
@@ -631,16 +554,7 @@ this repository contains the full copyright notices and license terms. -->
                             <label name="sequence"/>
                             <field name="sequence"/>
                             <label name="product"/>
-                            <field name="product">
-                                <tree string="Products">
-                                    <field name="name"/>
-                                    <field name="code"/>
-                                    <field name="list_price_uom"/>
-                                    <field name="cost_price_uom"/>
-                                    <field name="default_uom"/>
-                                    <field name="active"/>
-                                </tree>
-                            </field>
+                            <field name="product"/>
                             <label name="account"/>
                             <field name="account"/>
                             <newline/>
@@ -673,6 +587,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="invoice_line_view_tree">
             <field name="model">account.invoice.line</field>
             <field name="type">tree</field>
+            <field name="priority" eval="10"/>
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Invoice Lines">
@@ -692,6 +607,30 @@ this repository contains the full copyright notices and license terms. -->
                 ]]>
             </field>
         </record>
+
+        <record model="ir.ui.view" id="invoice_line_view_tree_sequence">
+            <field name="model">account.invoice.line</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="20"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Invoice Lines" sequence="sequence">
+                    <field name="type"/>
+                    <field name="product"/>
+                    <field name="account" tree_invisible="1"/>
+                    <field name="description"/>
+                    <field name="quantity"/>
+                    <field name="unit"/>
+                    <field name="unit_price"/>
+                    <field name="taxes"/>
+                    <field name="amount" expand="1"/>
+                    <field name="unit_digits" tree_invisible="1"/>
+                    <field name="currency_digits" tree_invisible="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+
         <record model="ir.model.access" id="access_invoice_line">
             <field name="model" search="[('model', '=', 'account.invoice.line')]"/>
             <field name="perm_read" eval="False"/>
@@ -746,6 +685,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="invoice_tax_view_tree">
             <field name="model">account.invoice.tax</field>
             <field name="type">tree</field>
+            <field name="priority" eval="10"/>
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Invoice Taxes">
@@ -760,6 +700,29 @@ this repository contains the full copyright notices and license terms. -->
                 ]]>
             </field>
         </record>
+
+        <record model="ir.ui.view" id="invoice_tax_view_tree_sequence">
+            <field name="model">account.invoice.tax</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="20"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Taxes" sequence="sequence">
+                    <field name="description"/>
+                    <field name="base"/>
+                    <field name="amount" expand="1"/>
+                    <field name="sequence" tree_invisible="1"/>
+                    <field name="manual" tree_invisible="1"/>
+                    <field name="base_code" tree_invisible="1"/>
+                    <field name="base_sign" tree_invisible="1"/>
+                    <field name="tax_code" tree_invisible="1"/>
+                    <field name="tax_sign" tree_invisible="1"/>
+                    <field name="account" tree_invisible="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+
         <record model="ir.model.access" id="access_invoice_tax">
             <field name="model" search="[('model', '=', 'account.invoice.tax')]"/>
             <field name="perm_read" eval="True"/>
@@ -776,8 +739,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="perm_delete" eval="True"/>
         </record>
 
-        <record model="ir.ui.view" id="pay_invoice_init_view_form">
-            <field name="model">account.invoice.pay_invoice.init</field>
+        <record model="ir.ui.view" id="pay_start_view_form">
+            <field name="model">account.invoice.pay.start</field>
             <field name="type">form</field>
             <field name="arch" type="xml">
                 <![CDATA[
@@ -798,8 +761,8 @@ this repository contains the full copyright notices and license terms. -->
             </field>
         </record>
 
-        <record model="ir.ui.view" id="pay_invoice_ask_view_form">
-            <field name="model">account.invoice.pay_invoice.ask</field>
+        <record model="ir.ui.view" id="pay_ask_view_form">
+            <field name="model">account.invoice.pay.ask</field>
             <field name="type">form</field>
             <field name="arch" type="xml">
                 <![CDATA[
@@ -818,31 +781,10 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="account_writeoff"/>
                     <label name="journal_writeoff"/>
                     <field name="journal_writeoff"/>
-                    <field name="lines" colspan="4">
-                        <tree string="Lines to Pay" fill="1">
-                            <field name="maturity_date"/>
-                            <field name="debit" sum="Debit"/>
-                            <field name="credit" sum="Credit"/>
-                            <field name="amount_second_currency" sum="Amount Second Currency"/>
-                            <field name="second_currency"/>
-                            <field name="currency_digits" tree_invisible="1"/>
-                            <field name="second_currency_digits" tree_invisible="1"/>
-                        </tree>
-                    </field>
-                    <field name="payment_lines" colspan="4">
-                        <tree string="Payment Lines" fill="1">
-                            <field name="date"/>
-                            <field name="debit" sum="Debit"/>
-                            <field name="credit" sum="Credit"/>
-                            <field name="amount_second_currency" sum="Amount Second Currency"/>
-                            <field name="second_currency"/>
-                            <field name="currency_digits" tree_invisible="1"/>
-                            <field name="second_currency_digits" tree_invisible="1"/>
-                        </tree>
-                    </field>
-                    <field name="description" colspan="4" invisible="1"/>
-                    <field name="journal" colspan="4" invisible="1"/>
-                    <field name="date" colspan="4" invisible="1"/>
+                    <field name="lines" colspan="4"
+                        view_ids="account_invoice.move_line_view_list_to_pay"/>
+                    <field name="payment_lines" colspan="4"
+                        view_ids="account_invoice.move_line_view_list_payment"/>
                     <field name="company" colspan="4" invisible="1"/>
                     <field name="invoice" colspan="4" invisible="1"/>
                 </form>
@@ -850,8 +792,8 @@ this repository contains the full copyright notices and license terms. -->
             </field>
         </record>
 
-        <record model="ir.ui.view" id="print_invoice_report_warning_view_form">
-            <field name="model">account.invoice.print_invoice_report.warning</field>
+        <record model="ir.ui.view" id="print_warning_view_form">
+            <field name="model">account.invoice.print.warning</field>
             <field name="type">form</field>
             <field name="arch" type="xml">
                 <![CDATA[
@@ -870,19 +812,19 @@ this repository contains the full copyright notices and license terms. -->
             </field>
         </record>
 
-        <record model="ir.action.wizard" id="print_invoice_report">
+        <record model="ir.action.wizard" id="print">
             <field name="name">Invoice</field>
-            <field name="wiz_name">account.invoice.print_invoice_report</field>
+            <field name="wiz_name">account.invoice.print</field>
             <field name="model">account.invoice</field>
         </record>
-        <record model="ir.action.keyword" id="print_invoice_report_keyword">
+        <record model="ir.action.keyword" id="print_keyword">
             <field name="keyword">form_print</field>
             <field name="model">account.invoice,-1</field>
-            <field name="action" ref="print_invoice_report"/>
+            <field name="action" ref="print"/>
         </record>
 
-        <record model="ir.ui.view" id="credit_invoice_init_view_form">
-            <field name="model">account.invoice.credit_invoice.init</field>
+        <record model="ir.ui.view" id="credit_start_view_form">
+            <field name="model">account.invoice.credit.start</field>
             <field name="type">form</field>
             <field name="arch" type="xml">
                 <![CDATA[
@@ -901,15 +843,15 @@ this repository contains the full copyright notices and license terms. -->
             </field>
         </record>
 
-        <record model="ir.action.wizard" id="credit_invoice">
+        <record model="ir.action.wizard" id="credit">
             <field name="name">Credit</field>
-            <field name="wiz_name">account.invoice.credit_invoice</field>
+            <field name="wiz_name">account.invoice.credit</field>
             <field name="model">account.invoice</field>
         </record>
-        <record model="ir.action.keyword" id="credit_invoice_keyword">
+        <record model="ir.action.keyword" id="credit_keyword">
             <field name="keyword">form_action</field>
             <field name="model">account.invoice,-1</field>
-            <field name="action" ref="credit_invoice"/>
+            <field name="action" ref="credit"/>
         </record>
 
         <record model="ir.rule.group" id="rule_group_invoice">
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index deea1f6..7e6ce0e 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -2,7 +2,7 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
@@ -10,33 +10,33 @@ msgstr ""
 "Не може а променяте последователност на фактура ако има вече отворена "
 "фактура за финансовата година"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
 msgstr ""
 "За финансова година трябва да имате различни последователности за фактура  "
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
-msgstr "Не можете да кредитиратe обезщетение фактура по която не е отворена!"
+msgstr "Не можете да кредитиратe с обезщетение фактура която не е отворена!"
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
-msgstr "Не можете да кредитиратe обезщетение фактура по която има плащане!"
+msgstr "Не можете да кредитиратe с обезщетение фактура по която има плащане!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account!"
 msgstr "Ред от вид \"line\" трябва да има сметка!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice!"
 msgstr "Ред без \"ред\" трябва да има фактура!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "Не може да добавяте ред към фактура която е отворена/платена/отказана!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line\n"
 "with account with a different invoice company!"
@@ -44,11 +44,11 @@ msgstr ""
 "Не може да създавате ред от фактура\n"
 "със сметка от различна фактурираща фирма!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
 msgstr "Не може да променяте ред от фактура която е отворена и/или платена!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not use the same account\n"
 "as on the invoice!"
@@ -56,7 +56,7 @@ msgstr ""
 "Не може да използвате същата сметка\n"
 "като тази на фактурата!"
 
-msgctxt "error:account.invoice.pay_invoice:0"
+msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
@@ -64,32 +64,32 @@ msgstr ""
 "Не може да създавате частично плащане за сума по-голяма от сумата за "
 "плащане!"
 
-msgctxt "error:account.invoice.payment_term.line.delay:0"
-msgid "The code must be unique!"
-msgstr "Кода трябва да е уникален!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
+msgstr ""
 
-msgctxt "error:account.invoice.payment_term.line.type:0"
-msgid "The code must be unique!"
-msgstr "Кода трябва да е уникален!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
+msgstr ""
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
 msgstr "Невалиден ред от условие за плащане!"
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Payment term missing a remainder line!"
 msgstr "В условието за плащане липсва ред от напомняне!"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "Не може да добавяте ред към фактура която е отворена/платена/отказана!"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
 msgstr "Не може да променяте данък от фактура която е отворена и/или платена!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Base taxes different from invoice lines!\n"
 "Re-compute the invoice."
@@ -97,7 +97,11 @@ msgstr ""
 "Данъчната основа е различна от тази на редовете на фактурата!\n"
 "Наново изчислете фактурата."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
@@ -105,7 +109,7 @@ msgstr ""
 "Зададени са данъци но не за редове на фактура!\n"
 "Преизчислете фактурата."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined on invoice lines but not on invoice!\n"
 "Re-compute the invoice."
@@ -113,27 +117,27 @@ msgstr ""
 "Данъци са зададени върху редовете на фактурата но не на фактурата!\n"
 "Преизчислете фактурата"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is missing!"
 msgstr "Лиспва кредитна сметка за дневника!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is the same than the invoice account!"
 msgstr "Кредитната сметка на дневника е същата като сметката на фактурата!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is missing!"
 msgstr "Липсва дебитна сметка за дневник!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is the same than the invoice account!"
 msgstr "Дебитната сметка на дневника е същата като сметката на фактурата!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "There is no invoice sequence on the period/fiscal year!"
 msgstr "Няма последователност за фактура върху период/финансова година!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not create an invoice\n"
 "with account from a different invoice company!"
@@ -141,15 +145,15 @@ msgstr ""
 "Не може да създадете фактура\n"
 "със сметка на друга фактурираща фирма!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not modify an invoice that is opened, paid!"
 msgstr "Не може да променяте фактура която е отворена или платена!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not reset to draft an invoice that has move!"
 msgstr "Не може да прехвърлите в проект фактура която има движение!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not use the same account\n"
 "as on invoice line!"
@@ -157,7 +161,7 @@ msgstr ""
 "Не може да ползвате съшата сметка\n"
 "като тази на реда от фактурата!"
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the period"
@@ -165,7 +169,7 @@ msgstr ""
 "Не може а променяте последователност на фактура ако има вече отворена "
 "фактура за финансовата година"
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
@@ -173,616 +177,735 @@ msgstr ""
 "За финансова година и една и съща фирма трябва да имате различни "
 "последователности за фактура !"
 
-msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Последователност за кредитно известие на доставчик"
 
-msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Последователност на фактура за доставчик"
 
-msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Последователност за кредитно известие на клиент"
 
-msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Последователност за фактура на клиент"
 
-msgctxt "field:account.invoice,account:0"
+msgctxt "field:account.invoice,account:"
 msgid "Account"
 msgstr "Сметка"
 
-msgctxt "field:account.invoice,accounting_date:0"
+msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
 msgstr "Дата на осчетоводяване"
 
-msgctxt "field:account.invoice,amount_to_pay:0"
+msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
 msgstr "Сума за плащане"
 
-msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Сума за плащане днес"
 
-msgctxt "field:account.invoice,comment:0"
+msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Коментар"
 
-msgctxt "field:account.invoice,company:0"
+msgctxt "field:account.invoice,company:"
 msgid "Company"
 msgstr "Фирма"
 
-msgctxt "field:account.invoice,currency:0"
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:account.invoice,currency:"
 msgid "Currency"
 msgstr "Валута"
 
-msgctxt "field:account.invoice,currency_date:0"
+msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
 msgstr "Текуща дата"
 
-msgctxt "field:account.invoice,currency_digits:0"
+msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
 msgstr "Цифри за валута"
 
-msgctxt "field:account.invoice,description:0"
+msgctxt "field:account.invoice,description:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "field:account.invoice,invoice_address:0"
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
 msgstr "Адрес за фактура"
 
-msgctxt "field:account.invoice,invoice_date:0"
+msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
 msgstr "Дата на фактура"
 
-msgctxt "field:account.invoice,invoice_report_cache:0"
+msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
-msgstr ""
+msgstr "Справка за фактура"
 
-msgctxt "field:account.invoice,invoice_report_format:0"
+msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
 msgstr "Формат на спавка за фактура"
 
-msgctxt "field:account.invoice,journal:0"
+msgctxt "field:account.invoice,journal:"
 msgid "Journal"
 msgstr "Дневник"
 
-msgctxt "field:account.invoice,lines:0"
+msgctxt "field:account.invoice,lines:"
 msgid "Lines"
 msgstr "Редове"
 
-msgctxt "field:account.invoice,lines_to_pay:0"
+msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Редове за плащане"
 
-msgctxt "field:account.invoice,move:0"
+msgctxt "field:account.invoice,move:"
 msgid "Move"
 msgstr "Движение"
 
-msgctxt "field:account.invoice,number:0"
+msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Номер"
 
-msgctxt "field:account.invoice,party:0"
+msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Партньор"
 
-msgctxt "field:account.invoice,party_lang:0"
+msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
 msgstr "Език на партньор"
 
-msgctxt "field:account.invoice,payment_lines:0"
+msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
 msgstr "Редове от плащане"
 
-msgctxt "field:account.invoice,payment_term:0"
+msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
 msgstr "Условие за плащане"
 
-msgctxt "field:account.invoice,rec_name:0"
+msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:account.invoice,reconciled:0"
+msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
 msgstr "Съгласуван"
 
-msgctxt "field:account.invoice,reference:0"
+msgctxt "field:account.invoice,reference:"
 msgid "Reference"
 msgstr "Отпратка"
 
-msgctxt "field:account.invoice,state:0"
+msgctxt "field:account.invoice,state:"
 msgid "State"
 msgstr "Състояние"
 
-msgctxt "field:account.invoice,tax_amount:0"
+msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
 msgstr "Данък"
 
-msgctxt "field:account.invoice,taxes:0"
+msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
 msgstr "Ред на данъци"
 
-msgctxt "field:account.invoice,total_amount:0"
+msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
 msgstr "Общо"
 
-msgctxt "field:account.invoice,type:0"
+msgctxt "field:account.invoice,type:"
 msgid "Type"
 msgstr "Вид"
 
-msgctxt "field:account.invoice,type_name:0"
+msgctxt "field:account.invoice,type_name:"
 msgid "Type"
 msgstr "Вид"
 
-msgctxt "field:account.invoice,untaxed_amount:0"
+msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
 msgstr "Необложен с данък"
 
-msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "field:account.invoice-account.move.line,line:0"
+msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
 msgstr "Ред от плащане"
 
-msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
-msgstr "С обежщетение"
+msgstr "С обещетение"
 
-msgctxt "field:account.invoice.line,account:0"
+msgctxt "field:account.invoice.line,account:"
 msgid "Account"
 msgstr "Сметка"
 
-msgctxt "field:account.invoice.line,amount:0"
+msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
 msgstr "Сума"
 
-msgctxt "field:account.invoice.line,company:0"
+msgctxt "field:account.invoice.line,company:"
 msgid "Company"
 msgstr "Фирма"
 
-msgctxt "field:account.invoice.line,currency:0"
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
 msgstr "Валута"
 
-msgctxt "field:account.invoice.line,currency_digits:0"
+msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Цифри за валута"
 
-msgctxt "field:account.invoice.line,description:0"
+msgctxt "field:account.invoice.line,description:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "field:account.invoice.line,invoice:0"
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
 msgstr "Данъци на фактура"
 
-msgctxt "field:account.invoice.line,invoice_type:0"
+msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
 msgstr "Вид фактура"
 
-msgctxt "field:account.invoice.line,note:0"
+msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Бележка"
 
-msgctxt "field:account.invoice.line,party:0"
+msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Партньор"
 
-msgctxt "field:account.invoice.line,party_lang:0"
+msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
 msgstr "Език на партньор"
 
-msgctxt "field:account.invoice.line,product:0"
+msgctxt "field:account.invoice.line,product:"
 msgid "Product"
 msgstr "Продукт"
 
-msgctxt "field:account.invoice.line,quantity:0"
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr ""
+
+msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
 msgstr "Количество"
 
-msgctxt "field:account.invoice.line,rec_name:0"
+msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:account.invoice.line,sequence:0"
+msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
 msgstr "Последователност"
 
-msgctxt "field:account.invoice.line,taxes:0"
+msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
 msgstr "Данъци"
 
-msgctxt "field:account.invoice.line,type:0"
+msgctxt "field:account.invoice.line,type:"
 msgid "Type"
 msgstr "Вид"
 
-msgctxt "field:account.invoice.line,unit:0"
+msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
 msgstr "Единица"
 
-msgctxt "field:account.invoice.line,unit_digits:0"
+msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
 msgstr "Десетични единици"
 
-msgctxt "field:account.invoice.line,unit_price:0"
+msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
 msgstr "Единична цена"
 
-msgctxt "field:account.invoice.line-account.tax,line:0"
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
 msgstr "Ред от фактура"
 
-msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
 msgstr "Данък"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account:0"
-msgid "Account"
-msgstr "Сметка"
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
 msgstr "Сметка на отписване"
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
 msgstr "Платена сума"
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
 msgstr "Сума за отписване"
 
-msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr "Фирма"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
 msgstr "Валута при плащане"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
 msgstr "Цифри на валута за плащане"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
 msgstr "Цифри на валута за отписване"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
 msgstr "Валута на отписване"
 
-msgctxt "field:account.invoice.pay_invoice.ask,date:0"
-msgid "Date"
-msgstr "Дата"
-
-msgctxt "field:account.invoice.pay_invoice.ask,description:0"
-msgid "Description"
-msgstr "Описание"
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
+msgstr "ID"
 
-msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
-msgid "Journal"
-msgstr "Дневник"
-
-msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
 msgstr "Дневник на отписване"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr "Редове"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Редове за плащане"
 
-msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr "Редове от плащане"
 
-msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Вид"
 
-msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
 msgstr "Сума"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
 msgstr "Валута"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
 msgstr "Цифри за валута"
 
-msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
 msgstr "Дата"
 
-msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr "Дневник"
 
-msgctxt "field:account.invoice.payment_term,active:0"
+msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
 msgstr "Активен"
 
-msgctxt "field:account.invoice.payment_term,description:0"
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "field:account.invoice.payment_term,lines:0"
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Редове"
 
-msgctxt "field:account.invoice.payment_term,name:0"
+msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Условие за плащане"
 
-msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
 msgstr "Сума"
 
-msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
 msgstr "Валута"
 
-msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Цифри за валута"
 
-msgctxt "field:account.invoice.payment_term.line,days:0"
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
 msgstr "Брой дни"
 
-msgctxt "field:account.invoice.payment_term.line,delay:0"
-msgid "Condition"
-msgstr "Условие"
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr "Месец"
 
-msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
 msgstr "Условие за плащане"
 
-msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
 msgstr "Процент"
 
-msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
 msgstr "Последователност"
 
-msgctxt "field:account.invoice.payment_term.line,type:0"
+msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
 msgstr "Вид"
 
-msgctxt "field:account.invoice.payment_term.line.delay,code:0"
-msgid "Code"
-msgstr "Код"
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,name:0"
-msgid "Name"
-msgstr "Име"
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
-msgid "Name"
-msgstr "Име"
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
 
-msgctxt "field:account.invoice.payment_term.line.type,code:0"
-msgid "Code"
-msgstr "Код"
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
 
-msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:account.invoice.tax,account:0"
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
 msgstr "Сметка"
 
-msgctxt "field:account.invoice.tax,amount:0"
+msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
 msgstr "Сума"
 
-msgctxt "field:account.invoice.tax,base:0"
+msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
 msgstr "Основа"
 
-msgctxt "field:account.invoice.tax,base_code:0"
+msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
 msgstr "Основен код"
 
-msgctxt "field:account.invoice.tax,base_sign:0"
+msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
 msgstr "Основен знак"
 
-msgctxt "field:account.invoice.tax,description:0"
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "field:account.invoice.tax,invoice:0"
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "field:account.invoice.tax,manual:0"
+msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
 msgstr "Ръчно"
 
-msgctxt "field:account.invoice.tax,rec_name:0"
+msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:account.invoice.tax,sequence:0"
+msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
 msgstr "Последователност"
 
-msgctxt "field:account.invoice.tax,sequence_number:0"
+msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
 msgstr "Номер на последователност"
 
-msgctxt "field:account.invoice.tax,tax:0"
+msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
 msgstr "Данък"
 
-msgctxt "field:account.invoice.tax,tax_code:0"
+msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
 msgstr "Код на данък"
 
-msgctxt "field:account.invoice.tax,tax_sign:0"
+msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
 msgstr "Знак на данък"
 
-msgctxt "field:account.period,in_credit_note_sequence:0"
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
+msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Последователност за кредитно известие на доставчик"
 
-msgctxt "field:account.period,in_invoice_sequence:0"
+msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Последователност на фактура за доставчик"
 
-msgctxt "field:account.period,out_credit_note_sequence:0"
+msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Последователност за кредитно известие на клиент"
 
-msgctxt "field:account.period,out_invoice_sequence:0"
+msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Последователност за фактура на клиент"
 
-msgctxt "field:party.address,invoice:0"
+msgctxt "field:party.address,invoice:"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "field:party.party,payment_term:0"
-msgid "Invoice Payment Term"
-msgstr "Условие за плащане на фактура"
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
+msgstr ""
 
-msgctxt "field:party.party,supplier_payment_term:0"
+msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
 msgstr "Условие за плащане на доставчик"
 
-msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr "Ако е истина текущара(те) сметка(и) ще бъдат платена(и)."
-
-msgctxt "help:account.invoice.payment_term.line,percentage:0"
-msgid "In %"
-msgstr "В %"
+msgstr "Ако е истина текущата(те) сметка(и) ще бъдат платена(и)."
 
-msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "За подреждане на редовете във възходящ ред"
 
-msgctxt "model:account.invoice,name:0"
+msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "model:account.invoice-account.move.line,name:0"
+msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr "Фактура - Ред от плащане"
 
-msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
 msgstr "Начало на кредитна фактура"
 
-msgctxt "model:account.invoice.line,name:0"
+msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
 msgstr "Ред от фактура"
 
-msgctxt "model:account.invoice.line-account.tax,name:0"
+msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
 msgstr "Ред от фактура - Данък"
 
-msgctxt "model:account.invoice.pay_invoice.ask,name:0"
-msgid "Pay Invoice Ask"
-msgstr "Запистване за плащане на фактура"
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
+msgstr "Плащане на фактура"
 
-msgctxt "model:account.invoice.pay_invoice.init,name:0"
-msgid "Pay Invoice Init"
-msgstr "Начално плащане на фактура"
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
+msgstr "Плащане на фактура"
 
-msgctxt "model:account.invoice.payment_term,name:0"
+msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Условие за плащане"
 
-msgctxt "model:account.invoice.payment_term.line,name:0"
+msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Ред от условие за плащане"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:0"
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
 msgid "Payment Term Line Delay"
-msgstr "Ред от забавяне на условие за плащане"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
-msgid "End Month"
-msgstr "Край на месеца"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
-msgid "Net Days"
-msgstr "Дни (нето)"
+msgstr ""
 
-msgctxt "model:account.invoice.payment_term.line.type,name:0"
+msgctxt "model:account.invoice.payment_term.line.type,name:"
 msgid "Payment Term Line Type"
-msgstr "Ред от вид условие за плащане"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
-msgid "Fixed"
-msgstr "Фиксиран"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
-msgid "Percentage"
-msgstr "Процент"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
-msgid "Remainder"
-msgstr "Напомняне"
+msgstr ""
 
-msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr "Предупреждение при отпечатване на справка за фактура"
 
-msgctxt "model:account.invoice.tax,name:0"
+msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr "Данък към фактура"
 
@@ -862,11 +985,11 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Условия за плащане"
 
-msgctxt "model:ir.action,name:credit_invoice"
+msgctxt "model:ir.action,name:credit"
 msgid "Credit"
 msgstr "Кредит"
 
-msgctxt "model:ir.action,name:print_invoice_report"
+msgctxt "model:ir.action,name:print"
 msgid "Invoice"
 msgstr "Фактура"
 
@@ -874,7 +997,7 @@ msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr "Плащане на фактура"
 
@@ -962,422 +1085,506 @@ msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
 msgstr "Условия за плащане"
 
-msgctxt "model:workflow,name:invoice_workflow"
-msgid "Invoice workflow"
-msgstr "Работен процес на фактура"
-
-msgctxt "model:workflow.activity,name:invoice_activity_cancel"
-msgid "Canceled"
-msgstr "Отказан"
-
-msgctxt "model:workflow.activity,name:invoice_activity_draft"
-msgid "Draft"
-msgstr "Проект"
-
-msgctxt "model:workflow.activity,name:invoice_activity_open"
-msgid "Open"
-msgstr "Отваряне"
-
-msgctxt "model:workflow.activity,name:invoice_activity_paid"
-msgid "Paid"
-msgstr "Платен"
-
-msgctxt "model:workflow.activity,name:invoice_activity_proforma"
-msgid "Pro forma"
-msgstr "ПРО-ФОРМА"
-
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Сума"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Base"
 msgstr "Основа"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
 msgstr "Кредитно известие N°:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date"
 msgstr "Дата"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr "Дата:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description:"
 msgstr "Описание:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
 msgstr "Проект на кредитно известие"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
 msgstr "Проект на фактура"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
 msgstr "Проект на кредитно известие на доставчик"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
 msgstr "Проект на фактура за доставчик"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
 msgstr "E-Mail:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
 msgstr "Фактура N°:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Payment Term"
 msgstr "Условие за плащане"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Phone:"
 msgstr "Телефон:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
 msgstr "ПРО-ФОРМА на кредитно известие"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
 msgstr "ПРО-ФОРМА фактура"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
 msgstr "ПРО-ФОРМА на кредитно известие на доставчик"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
 msgstr "ПРО-ФОРМА фактура за доставчик"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Количество"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Кредитно известие на доставчик N°:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
 msgstr "Фактура за доставчик N°:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Tax"
 msgstr "Данък"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes"
 msgstr "Данъци"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes:"
 msgstr "Данъци:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
 msgstr "Общо (без данъци):"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total:"
 msgstr "Общо:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Unit Price"
 msgstr "Единична цена"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
-msgstr ""
+msgstr "ДДС номер:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "ДДС:"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Отказан"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Draft"
 msgstr "Проект"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Opened"
 msgstr "Отворен"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Платен"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
 msgstr "ПРО-ФОРМА"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
 msgstr "Кредитно известие"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
 msgstr "Кредитно известие на доставчик"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr "Фактура за доставчик"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Кредитно известие"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
 msgstr "Кредитно известие на доставчик"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
 msgstr "Фактура за доставчик"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr "Коментар"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
 msgstr "Ред"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
 msgstr "Междинна сума"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
 msgstr "Заглавие"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
 msgstr "Частично плащане"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
 msgstr "Анулиран"
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr "Април"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr "Декември"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr "Февруари"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr "Януари"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr "Юли"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr "Март"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr "Септември"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr "Фиксирана"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr "Петък"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr "Понеделник"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr "Събота"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr "Неделя"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr "Четвъртък"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr "Вторник"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr "Сряда"
+
+msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr "Сигурни ли сте че искате да кредитирате тази/тези фактура/фактури?"
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
 msgstr "Кредитна фактура"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "General"
 msgstr "Основен"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
 msgstr "Ред от фактура"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
 msgstr "Редове от фактура"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Бележки"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Products"
 msgstr "Продукти"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Amount Second Currency"
-msgstr "Сума в допълнителна валута"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Credit"
-msgstr "Кредит"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Debit"
-msgstr "Дебит"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Lines to Pay"
-msgstr "Редове за плащане"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr "Плащане на фактура"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Payment Lines"
-msgstr "Редове от плащане"
-
-msgctxt "view:account.invoice.pay_invoice.init:0"
+msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
 msgstr "Плащане на фактура"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
+msgstr "Ред от условие за плащане"
+
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
+msgstr "Ред от условие за плащане"
+
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
 msgstr "Условие за плащане"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Line"
 msgstr "Ред от условие за плащане"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Lines"
 msgstr "Ред от условие за плащане"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Условия за плащане"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
-msgid "<b>Warning!</b>"
-msgstr "<b>Внимание!</b>"
-
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
 msgstr "Отпечатване на фактура"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
 msgstr "Фактурите ще бъдет изпратени <i>директно</i> на принтера."
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
 msgstr "Избрали сте за печат повече от една фактура"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
 msgstr "Данък към фактура"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
 msgstr "Данъци на фактура"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr "Код на данък"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr "Данъци"
+
+msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
 msgstr "Сума в допълнителна валута"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Credit"
 msgstr "Кредит"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Debit"
 msgstr "Дебит"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr "Фактура"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoices"
 msgstr "Фактури"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Lines"
 msgstr "Редове"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Друга информация"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Плащане"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment Lines"
 msgstr "Редове от плащане"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
 msgstr "ПРО ФОРМА"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Taxes"
 msgstr "Данъци"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Cancel"
 msgstr "Отказ"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Draft"
 msgstr "Проект"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Open"
 msgstr "Отваряне"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "Плащане"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Reset to Draft"
 msgstr "Изпращане в проект"
 
-msgctxt "view:party.party:0"
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr "Сума в допълнителна валута"
+
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr "Кредит"
+
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr "Дебит"
+
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr "Редове за плащане"
+
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr "Редове от плащане"
+
+msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr "Условия за плащане"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
 msgstr "Кредит"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
 msgstr "Отказ"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr "Отказ"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
 msgstr "Добре"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
 msgstr "Добре"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
 msgstr "Отказ"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr "Отказ"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
 msgstr "Печат"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
new file mode 100644
index 0000000..0bf4fdf
--- /dev/null
+++ b/locale/ca_ES.po
@@ -0,0 +1,1635 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+"No pot canviar la seqüència d'una factura si ja n'hi ha una d'oberta en "
+"l'exercici fiscal"
+
+msgctxt "error:account.fiscalyear:"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr "Ha de tenir una seqüència diferent de facturació per exercici fiscal"
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr ""
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:"
+msgid "Line with \"line\" type must have an account!"
+msgstr "Una línia de tipus «línia» ha de tenir un compte"
+
+msgctxt "error:account.invoice.line:"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr "Una línia sense tipus «línia» ha de tenir una factura"
+
+msgctxt "error:account.invoice.line:"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"No pot afegir una línia a una factura que està oberta, pagada o cancel·lada"
+
+msgctxt "error:account.invoice.line:"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+"No pot crear una línia de factura\n"
+"amb un compte d'una empresa diferent a la qual factura"
+
+msgctxt "error:account.invoice.line:"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr "No pot modificar una línia d'una factura que està oberta o pagada"
+
+msgctxt "error:account.invoice.line:"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+"No pot usar el mateix compte\n"
+"que en la factura"
+
+msgctxt "error:account.invoice.pay:"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term:"
+msgid "Invalid payment term line!"
+msgstr "La línia del termini no és vàlida"
+
+msgctxt "error:account.invoice.payment_term:"
+msgid "Payment term missing a remainder line!"
+msgstr "Al termini de pagament li falta una línia amb el resta"
+
+msgctxt "error:account.invoice.tax:"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"No pot afegir una línia a una factura que està oberta, pagada o cancel·lada"
+
+msgctxt "error:account.invoice.tax:"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr "No pot modificar els impostos d'una factura que està oberta o pagada"
+
+msgctxt "error:account.invoice:"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Els imposats base són diferents de les línies de la factura.\n"
+"Recalculi la factura."
+
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgstr ""
+
+msgctxt "error:account.invoice:"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Té impostos definits però cap en les línies de la factura\n"
+"Recalculi la factura."
+
+msgctxt "error:account.invoice:"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+"Els impostos estan definits en les línies de la factura però no en la factura.\n"
+"Recalculi la factura."
+
+msgctxt "error:account.invoice:"
+msgid "The credit account on journal is missing!"
+msgstr "Falta el compte d'haver del diari"
+
+msgctxt "error:account.invoice:"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr "El compte d'haver en el diari és la mateixa que el compte facturat"
+
+msgctxt "error:account.invoice:"
+msgid "The debit account on journal is missing!"
+msgstr "Falta el compte de dèbit del diari"
+
+msgctxt "error:account.invoice:"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr "El compte de dèbit en el diari és la mateixa que el compte facturat"
+
+msgctxt "error:account.invoice:"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr "No hi ha una seqüència de factura per al període/exercici fiscal"
+
+msgctxt "error:account.invoice:"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+"No pot crear una factura\n"
+"amb un compte d'una companyia diferent a la qual factura"
+
+msgctxt "error:account.invoice:"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr "No pot modificar una factura que està oberta o pagada"
+
+msgctxt "error:account.invoice:"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr "No pot posar en esborrany una factura que té assentaments"
+
+msgctxt "error:account.invoice:"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+"No pot usar el mateix compte\n"
+"que la línia de la factura"
+
+msgctxt "error:account.period:"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+"No pot canviar la seqüència d'una factura si hi ha una factura oberta en el "
+"període"
+
+msgctxt "error:account.period:"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+"Ha d'usar seqüències diferents de factura per exercici fiscal en la mateixa "
+"empresa"
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
+msgid "Supplier Credit Note Sequence"
+msgstr "Seqüència d'abonament de proveïdor"
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
+msgid "Supplier Invoice Sequence"
+msgstr "Seqüència de factura de proveïdor"
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
+msgid "Customer Credit Note Sequence"
+msgstr "Seqüència d'abonament a client"
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
+msgid "Customer Invoice Sequence"
+msgstr "Seqüència de factures a client"
+
+msgctxt "field:account.invoice,account:"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "field:account.invoice,accounting_date:"
+msgid "Accounting Date"
+msgstr "Data de comptabilització"
+
+msgctxt "field:account.invoice,amount_to_pay:"
+msgid "Amount to Pay"
+msgstr "Quantitat a pagar"
+
+msgctxt "field:account.invoice,amount_to_pay_today:"
+msgid "Amount to Pay Today"
+msgstr "Quantitat a pagar avui"
+
+msgctxt "field:account.invoice,comment:"
+msgid "Comment"
+msgstr "Comentari"
+
+msgctxt "field:account.invoice,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:account.invoice,currency:"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice,currency_date:"
+msgid "Currency Date"
+msgstr ""
+
+msgctxt "field:account.invoice,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimals de la divisa"
+
+msgctxt "field:account.invoice,description:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_address:"
+msgid "Invoice Address"
+msgstr "Adreça de facturació"
+
+msgctxt "field:account.invoice,invoice_date:"
+msgid "Invoice Date"
+msgstr "Data de factura"
+
+msgctxt "field:account.invoice,invoice_report_cache:"
+msgid "Invoice Report"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_report_format:"
+msgid "Invoice Report Format"
+msgstr "Format de l'informe de facturació"
+
+msgctxt "field:account.invoice,journal:"
+msgid "Journal"
+msgstr "Diari"
+
+msgctxt "field:account.invoice,lines:"
+msgid "Lines"
+msgstr "Línies"
+
+msgctxt "field:account.invoice,lines_to_pay:"
+msgid "Lines to Pay"
+msgstr "Línies a pagar"
+
+msgctxt "field:account.invoice,move:"
+msgid "Move"
+msgstr "Assentament"
+
+msgctxt "field:account.invoice,number:"
+msgid "Number"
+msgstr "Número"
+
+msgctxt "field:account.invoice,party:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "field:account.invoice,party_lang:"
+msgid "Party Language"
+msgstr "Idioma del tercer"
+
+msgctxt "field:account.invoice,payment_lines:"
+msgid "Payment Lines"
+msgstr "Línies de pagament"
+
+msgctxt "field:account.invoice,payment_term:"
+msgid "Payment Term"
+msgstr "Termini de pagament"
+
+msgctxt "field:account.invoice,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice,reconciled:"
+msgid "Reconciled"
+msgstr "Conciliat"
+
+msgctxt "field:account.invoice,reference:"
+msgid "Reference"
+msgstr "Referència"
+
+msgctxt "field:account.invoice,state:"
+msgid "State"
+msgstr "Estat"
+
+msgctxt "field:account.invoice,tax_amount:"
+msgid "Tax"
+msgstr "Impost"
+
+msgctxt "field:account.invoice,taxes:"
+msgid "Tax Lines"
+msgstr "Línies d'impost"
+
+msgctxt "field:account.invoice,total_amount:"
+msgid "Total"
+msgstr "Total"
+
+msgctxt "field:account.invoice,type:"
+msgid "Type"
+msgstr "Tipus"
+
+msgctxt "field:account.invoice,type_name:"
+msgid "Type"
+msgstr "Tipus"
+
+msgctxt "field:account.invoice,untaxed_amount:"
+msgid "Untaxed"
+msgstr "Sense impost"
+
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice-account.move.line,line:"
+msgid "Payment Line"
+msgstr "Línia de pagament"
+
+msgctxt "field:account.invoice-account.move.line,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
+msgid "With Refund"
+msgstr ""
+
+msgctxt "field:account.invoice.line,account:"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "field:account.invoice.line,amount:"
+msgid "Amount"
+msgstr "Quantitat"
+
+msgctxt "field:account.invoice.line,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:account.invoice.line,currency:"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice.line,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimals de la divisa"
+
+msgctxt "field:account.invoice.line,description:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.line,invoice_taxes:"
+msgid "Invoice Taxes"
+msgstr "Impostos de la factura"
+
+msgctxt "field:account.invoice.line,invoice_type:"
+msgid "Invoice Type"
+msgstr "Tipus de factura"
+
+msgctxt "field:account.invoice.line,note:"
+msgid "Note"
+msgstr "Nota"
+
+msgctxt "field:account.invoice.line,party:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "field:account.invoice.line,party_lang:"
+msgid "Party Language"
+msgstr "Idioma del tercer"
+
+msgctxt "field:account.invoice.line,product:"
+msgid "Product"
+msgstr "Producte"
+
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr ""
+
+msgctxt "field:account.invoice.line,quantity:"
+msgid "Quantity"
+msgstr "Quantitat"
+
+msgctxt "field:account.invoice.line,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.line,sequence:"
+msgid "Sequence"
+msgstr "Seqüència"
+
+msgctxt "field:account.invoice.line,taxes:"
+msgid "Taxes"
+msgstr "Impostos"
+
+msgctxt "field:account.invoice.line,type:"
+msgid "Type"
+msgstr "Tipus"
+
+msgctxt "field:account.invoice.line,unit:"
+msgid "Unit"
+msgstr "Unitat"
+
+msgctxt "field:account.invoice.line,unit_digits:"
+msgid "Unit Digits"
+msgstr "Decimals de la unitat"
+
+msgctxt "field:account.invoice.line,unit_price:"
+msgid "Unit Price"
+msgstr "Preu unitari"
+
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,line:"
+msgid "Invoice Line"
+msgstr "Línia de factura"
+
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.line-account.tax,tax:"
+msgid "Tax"
+msgstr "Impost"
+
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
+msgid "Write-Off Account"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.ask,amount:"
+msgid "Payment Amount"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
+msgid "Write-Off Amount"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.invoice.pay.ask,currency:"
+msgid "Payment Currency"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
+msgid "Payment Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
+msgid "Write-Off Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
+msgid "Write-Off Currency"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
+msgid "Write-Off Journal"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,lines:"
+msgid "Lines"
+msgstr "Línies"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
+msgid "Lines to Pay"
+msgstr "Línies a pagar"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
+msgid "Payment Lines"
+msgstr "Línies de pagament"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,type:"
+msgid "Type"
+msgstr "Tipus"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,amount:"
+msgid "Amount"
+msgstr "Quantitat"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,currency:"
+msgid "Currency"
+msgstr "Gestió de divises"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,currency_digits:"
+msgid "Currency Digits"
+msgstr "Dígits de la divisa"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,date:"
+msgid "Date"
+msgstr "Data"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,description:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,journal:"
+msgid "Journal"
+msgstr "Diari"
+
+msgctxt "field:account.invoice.payment_term,active:"
+msgid "Active"
+msgstr "Actiu"
+
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:account.invoice.payment_term,description:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,lines:"
+msgid "Lines"
+msgstr "Línies"
+
+msgctxt "field:account.invoice.payment_term,name:"
+msgid "Payment Term"
+msgstr "Termini de pagament"
+
+msgctxt "field:account.invoice.payment_term,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
+msgid "Amount"
+msgstr "Quantitat"
+
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:account.invoice.payment_term.line,currency:"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimals de la divisa"
+
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,days:"
+msgid "Number of Days"
+msgstr "Nombre de dies"
+
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr "Mes"
+
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,payment:"
+msgid "Payment Term"
+msgstr "Termini de pagament"
+
+msgctxt "field:account.invoice.payment_term.line,percentage:"
+msgid "Percentage"
+msgstr "Percentatge"
+
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.payment_term.line,sequence:"
+msgid "Sequence"
+msgstr "Seqüència"
+
+msgctxt "field:account.invoice.payment_term.line,type:"
+msgid "Type"
+msgstr "Tipus"
+
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,account:"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "field:account.invoice.tax,amount:"
+msgid "Amount"
+msgstr "Quantitat"
+
+msgctxt "field:account.invoice.tax,base:"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "field:account.invoice.tax,base_code:"
+msgid "Base Code"
+msgstr "Codi de la base"
+
+msgctxt "field:account.invoice.tax,base_sign:"
+msgid "Base Sign"
+msgstr "Signe de la base"
+
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:account.invoice.tax,description:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.tax,manual:"
+msgid "Manual"
+msgstr "Manual"
+
+msgctxt "field:account.invoice.tax,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.tax,sequence:"
+msgid "Sequence"
+msgstr "Seqüència"
+
+msgctxt "field:account.invoice.tax,sequence_number:"
+msgid "Sequence Number"
+msgstr "Nombre de seqüència"
+
+msgctxt "field:account.invoice.tax,tax:"
+msgid "Tax"
+msgstr "Impost"
+
+msgctxt "field:account.invoice.tax,tax_code:"
+msgid "Tax Code"
+msgstr "Codi d'impost"
+
+msgctxt "field:account.invoice.tax,tax_sign:"
+msgid "Tax Sign"
+msgstr "Signe de l'impost"
+
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.period,in_credit_note_sequence:"
+msgid "Supplier Credit Note Sequence"
+msgstr "Seqüència de l'abonament de proveïdor"
+
+msgctxt "field:account.period,in_invoice_sequence:"
+msgid "Supplier Invoice Sequence"
+msgstr "Seqüència de factura de proveïdor"
+
+msgctxt "field:account.period,out_credit_note_sequence:"
+msgid "Customer Credit Note Sequence"
+msgstr "Seqüència d'abonament a client"
+
+msgctxt "field:account.period,out_invoice_sequence:"
+msgid "Customer Invoice Sequence"
+msgstr "Seqüència de factura a client"
+
+msgctxt "field:party.address,invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
+msgstr ""
+
+msgctxt "field:party.party,supplier_payment_term:"
+msgid "Supplier Payment Term"
+msgstr "Termini de pagament al proveïdor"
+
+msgctxt "help:account.invoice.credit.start,with_refund:"
+msgid "If true, the current invoice(s) will be paid."
+msgstr ""
+
+msgctxt "help:account.invoice.payment_term.line,sequence:"
+msgid "Use to order lines in ascending order"
+msgstr "Empleat per ordenar les línies ascendentemente"
+
+msgctxt "model:account.invoice,name:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:account.invoice-account.move.line,name:"
+msgid "Invoice - Payment Line"
+msgstr "Factura - Línia de pagament"
+
+msgctxt "model:account.invoice.credit.start,name:"
+msgid "Credit Invoice Init"
+msgstr ""
+
+msgctxt "model:account.invoice.line,name:"
+msgid "Invoice Line"
+msgstr "Línia de factura"
+
+msgctxt "model:account.invoice.line-account.tax,name:"
+msgid "Invoice Line - Tax"
+msgstr "Línia de factura - Impost"
+
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "model:account.invoice.payment_term,name:"
+msgid "Payment Term"
+msgstr "Termini de pagament"
+
+msgctxt "model:account.invoice.payment_term.line,name:"
+msgid "Payment Term Line"
+msgstr "Línia del termini de pagament"
+
+#, fuzzy
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
+msgid "account.invoice.payment_term.line.delay"
+msgstr "Linea de retard del termini de pagament"
+
+#, fuzzy
+msgctxt "model:account.invoice.payment_term.line.type,name:"
+msgid "account.invoice.payment_term.line.type"
+msgstr "Tipus de línia del termini de pagament"
+
+msgctxt "model:account.invoice.print.warning,name:"
+msgid "Print Invoice Report Warning"
+msgstr ""
+
+msgctxt "model:account.invoice.tax,name:"
+msgid "Invoice Tax"
+msgstr "Impost de factura"
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr "Totes les factures"
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Abonaments de proveïdor"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Esborrany d'abonaments de proveïdor"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Abonaments de proveïdor pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Abonaments de proveïdor oberts"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Factures de proveïdor"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Esborrany de factures de proveïdor"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Factures de proveïdor pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Factures de proveïdor obertes"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Abonaments"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Abonaments esborrany"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Abonaments pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Abonaments oberts"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Factures esborrany"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Factures pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Factures obertes"
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr "Terminis de pagament"
+
+#, fuzzy
+msgctxt "model:ir.action,name:credit"
+msgid "Credit"
+msgstr "Haver-hi"
+
+#, fuzzy
+msgctxt "model:ir.action,name:print"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.action,name:wizard_pay"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr "Totes les factures"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Abonaments del proveïdor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Abonaments de proveïdor esborrany"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Abonaments de proveïdor pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Abonaments de proveïdor oberts"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Factures de proveïdor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Factures de proveïdor esborrany"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Factures de proveïdor pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Factures de proveïdor obertes"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Abonaments"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Abonament esborrany"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Abonaments pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Abonaments oberts"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Factures esborrany"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Factures pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Factures obertes"
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr "Terminis de pagament"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr "Terminis de pagament"
+
+msgctxt "odt:account.invoice:"
+msgid "Amount"
+msgstr "Quantitat"
+
+msgctxt "odt:account.invoice:"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "odt:account.invoice:"
+msgid "Credit Note N°:"
+msgstr "Nº d'abonament:"
+
+msgctxt "odt:account.invoice:"
+msgid "Date"
+msgstr "Data"
+
+msgctxt "odt:account.invoice:"
+msgid "Date:"
+msgstr "Data:"
+
+msgctxt "odt:account.invoice:"
+msgid "Description"
+msgstr "Descripció"
+
+msgctxt "odt:account.invoice:"
+msgid "Description:"
+msgstr "Descripció:"
+
+msgctxt "odt:account.invoice:"
+msgid "Draft Credit Note"
+msgstr "Abonament esborrany"
+
+msgctxt "odt:account.invoice:"
+msgid "Draft Invoice"
+msgstr "Factura esborrany"
+
+msgctxt "odt:account.invoice:"
+msgid "Draft Supplier Credit Note"
+msgstr "Esborrany d'abonament de proveïdor"
+
+msgctxt "odt:account.invoice:"
+msgid "Draft Supplier Invoice"
+msgstr "Esborrany de factura de proveïdor"
+
+msgctxt "odt:account.invoice:"
+msgid "E-Mail:"
+msgstr "Correu electrònic:"
+
+msgctxt "odt:account.invoice:"
+msgid "Invoice N°:"
+msgstr "Nº de factura:"
+
+msgctxt "odt:account.invoice:"
+msgid "Payment Term"
+msgstr "Termini de pagament"
+
+msgctxt "odt:account.invoice:"
+msgid "Phone:"
+msgstr "Telèfon:"
+
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Credit Note"
+msgstr "Abonament pro forma"
+
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Invoice"
+msgstr "Factura pro forma"
+
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Supplier Credit Note"
+msgstr "Abonament de proveïdor pro forma"
+
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Supplier Invoice"
+msgstr "Factura de proveïdor pro forma"
+
+msgctxt "odt:account.invoice:"
+msgid "Quantity"
+msgstr "Quantitat"
+
+msgctxt "odt:account.invoice:"
+msgid "Supplier Credit Note N°:"
+msgstr "Abonament de proveïdor Nº:"
+
+msgctxt "odt:account.invoice:"
+msgid "Supplier Invoice N°:"
+msgstr "Factura de proveïdor Nº:"
+
+msgctxt "odt:account.invoice:"
+msgid "Tax"
+msgstr "Impost"
+
+msgctxt "odt:account.invoice:"
+msgid "Taxes"
+msgstr "Impostos"
+
+msgctxt "odt:account.invoice:"
+msgid "Taxes:"
+msgstr "Impostos:"
+
+msgctxt "odt:account.invoice:"
+msgid "Total (excl. taxes):"
+msgstr "Total (sense impostos):"
+
+msgctxt "odt:account.invoice:"
+msgid "Total:"
+msgstr "Total:"
+
+msgctxt "odt:account.invoice:"
+msgid "Unit Price"
+msgstr "Preu"
+
+msgctxt "odt:account.invoice:"
+msgid "VAT Number:"
+msgstr ""
+
+msgctxt "odt:account.invoice:"
+msgid "VAT:"
+msgstr "NIF:"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Canceled"
+msgstr "Cancel·lada"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Draft"
+msgstr "Esborrany"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Opened"
+msgstr "Oberta"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Paid"
+msgstr "Pagada"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Credit Note"
+msgstr "Abonament"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Supplier Credit Note"
+msgstr "Abonament del proveïdor"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Supplier Invoice"
+msgstr "Factura de proveïdor"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Credit Note"
+msgstr "Abonament"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Supplier Credit Note"
+msgstr "Abonament de proveïdor"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Supplier Invoice"
+msgstr "Factura de proveïdor"
+
+msgctxt "selection:account.invoice.line,type:"
+msgid "Comment"
+msgstr "Comentari"
+
+msgctxt "selection:account.invoice.line,type:"
+msgid "Line"
+msgstr "Línia"
+
+msgctxt "selection:account.invoice.line,type:"
+msgid "Subtotal"
+msgstr "Subtotal"
+
+msgctxt "selection:account.invoice.line,type:"
+msgid "Title"
+msgstr "Títol"
+
+msgctxt "selection:account.invoice.pay.ask,type:"
+msgid "Partial Payment"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice.pay.ask,type:"
+msgid "Write-Off"
+msgstr "Pèrdua"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr "Fix"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr "Divendres"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr "Dilluns"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr "Dissabte"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr "Diumenge"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr "Dijous"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr "Dimarts"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr "Dimecres"
+
+msgctxt "view:account.invoice.credit.start:"
+msgid "Are you sure to credit those/this invoice(s)?"
+msgstr ""
+
+msgctxt "view:account.invoice.credit.start:"
+msgid "Credit Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.line:"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:account.invoice.line:"
+msgid "Invoice Line"
+msgstr "Línia de factura"
+
+msgctxt "view:account.invoice.line:"
+msgid "Invoice Lines"
+msgstr "Línies de factura"
+
+msgctxt "view:account.invoice.line:"
+msgid "Notes"
+msgstr "Notes"
+
+msgctxt "view:account.invoice.line:"
+msgid "Products"
+msgstr "Productes"
+
+msgctxt "view:account.invoice.pay.ask:"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.pay.start:"
+msgid "Pay Invoice"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
+msgstr "Línia del termini de pagament"
+
+#, fuzzy
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
+msgstr "Línies del termini de pagament"
+
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Term"
+msgstr "Termini de pagament"
+
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Term Line"
+msgstr "Línia del termini de pagament"
+
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Term Lines"
+msgstr "Línies del termini de pagament"
+
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Terms"
+msgstr "Terminis de pagament"
+
+msgctxt "view:account.invoice.print.warning:"
+msgid "Print Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.print.warning:"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr ""
+
+msgctxt "view:account.invoice.print.warning:"
+msgid "You have selected more than one invoice to print."
+msgstr ""
+
+msgctxt "view:account.invoice.tax:"
+msgid "Invoice Tax"
+msgstr "Impost de la factura"
+
+msgctxt "view:account.invoice.tax:"
+msgid "Invoice Taxes"
+msgstr "Impostos de la factura"
+
+msgctxt "view:account.invoice.tax:"
+msgid "Tax Code"
+msgstr "Codi d'impost"
+
+#, fuzzy
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr "Impostos"
+
+msgctxt "view:account.invoice:"
+msgid "Amount Second Currency"
+msgstr "Quantitat en la divisa secundària"
+
+msgctxt "view:account.invoice:"
+msgid "Credit"
+msgstr "Haver"
+
+msgctxt "view:account.invoice:"
+msgid "Debit"
+msgstr "Deure"
+
+msgctxt "view:account.invoice:"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "view:account.invoice:"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "view:account.invoice:"
+msgid "Lines"
+msgstr "Línies"
+
+msgctxt "view:account.invoice:"
+msgid "Other Info"
+msgstr "Informació addicional"
+
+msgctxt "view:account.invoice:"
+msgid "Payment"
+msgstr "Pagament"
+
+msgctxt "view:account.invoice:"
+msgid "Payment Lines"
+msgstr "Línies de pagament"
+
+msgctxt "view:account.invoice:"
+msgid "Pro For_ma"
+msgstr "Pro for_ma"
+
+msgctxt "view:account.invoice:"
+msgid "Taxes"
+msgstr "Impostos"
+
+msgctxt "view:account.invoice:"
+msgid "_Cancel"
+msgstr "_Cancel·lar"
+
+msgctxt "view:account.invoice:"
+msgid "_Draft"
+msgstr "_Esborrany"
+
+msgctxt "view:account.invoice:"
+msgid "_Open"
+msgstr "_Obrir"
+
+msgctxt "view:account.invoice:"
+msgid "_Pay"
+msgstr "_Pagar"
+
+msgctxt "view:account.invoice:"
+msgid "_Reset to Draft"
+msgstr "_Restablir a esborrany"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr "Quantitat en la divisa secundària"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr "Haver-hi"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr "Dèbit"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr "Línies a pagar"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr "Línies de pagament"
+
+msgctxt "view:party.party:"
+msgid "Payment Terms"
+msgstr "Terminis de pagament"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
+msgid "Credit"
+msgstr "Haver-hi"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.credit,start,end:"
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
+msgid "Ok"
+msgstr "Acceptar"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
+msgid "Ok"
+msgstr "Acceptar"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,start,end:"
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.print,warning,end:"
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
+msgid "Print"
+msgstr ""
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 9601179..9290ecf 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -2,762 +2,885 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
 msgstr ""
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
 msgstr ""
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
 msgstr ""
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line\n"
 "with account with a different invoice company!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not use the same account\n"
 "as on the invoice!"
 msgstr ""
 
-msgctxt "error:account.invoice.pay_invoice:0"
+msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
 msgstr ""
 
-msgctxt "error:account.invoice.payment_term.line.delay:0"
-msgid "The code must be unique!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
 msgstr ""
 
-msgctxt "error:account.invoice.payment_term.line.type:0"
-msgid "The code must be unique!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
 msgstr ""
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
 msgstr ""
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Payment term missing a remainder line!"
 msgstr ""
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Base taxes different from invoice lines!\n"
 "Re-compute the invoice."
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined on invoice lines but not on invoice!\n"
 "Re-compute the invoice."
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is missing!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is the same than the invoice account!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is missing!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is the same than the invoice account!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "There is no invoice sequence on the period/fiscal year!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not create an invoice\n"
 "with account from a different invoice company!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not modify an invoice that is opened, paid!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not reset to draft an invoice that has move!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not use the same account\n"
 "as on invoice line!"
 msgstr ""
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the period"
 msgstr ""
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
 msgstr ""
 
-msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr ""
 
-msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr ""
 
-msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr ""
 
-msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr ""
 
-msgctxt "field:account.invoice,account:0"
+msgctxt "field:account.invoice,account:"
 msgid "Account"
 msgstr ""
 
-msgctxt "field:account.invoice,accounting_date:0"
+msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
 msgstr ""
 
-msgctxt "field:account.invoice,amount_to_pay:0"
+msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
 msgstr ""
 
-msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr ""
 
-msgctxt "field:account.invoice,comment:0"
+msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr ""
 
-msgctxt "field:account.invoice,company:0"
+msgctxt "field:account.invoice,company:"
 msgid "Company"
 msgstr ""
 
-msgctxt "field:account.invoice,currency:0"
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice,currency:"
 msgid "Currency"
 msgstr ""
 
-msgctxt "field:account.invoice,currency_date:0"
+msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
 msgstr ""
 
-msgctxt "field:account.invoice,currency_digits:0"
+msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
 msgstr ""
 
-msgctxt "field:account.invoice,description:0"
+msgctxt "field:account.invoice,description:"
 msgid "Description"
 msgstr ""
 
-msgctxt "field:account.invoice,invoice_address:0"
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
 msgstr ""
 
-msgctxt "field:account.invoice,invoice_date:0"
+msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
 msgstr ""
 
-msgctxt "field:account.invoice,invoice_report_cache:0"
+msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
 msgstr ""
 
-msgctxt "field:account.invoice,invoice_report_format:0"
+msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
 msgstr ""
 
-msgctxt "field:account.invoice,journal:0"
+msgctxt "field:account.invoice,journal:"
 msgid "Journal"
 msgstr ""
 
-msgctxt "field:account.invoice,lines:0"
+msgctxt "field:account.invoice,lines:"
 msgid "Lines"
 msgstr ""
 
-msgctxt "field:account.invoice,lines_to_pay:0"
+msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr ""
 
-msgctxt "field:account.invoice,move:0"
+msgctxt "field:account.invoice,move:"
 msgid "Move"
 msgstr ""
 
-msgctxt "field:account.invoice,number:0"
+msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr ""
 
-msgctxt "field:account.invoice,party:0"
+msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr ""
 
-msgctxt "field:account.invoice,party_lang:0"
+msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
 msgstr ""
 
-msgctxt "field:account.invoice,payment_lines:0"
+msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
 msgstr ""
 
-msgctxt "field:account.invoice,payment_term:0"
+msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
 msgstr ""
 
-msgctxt "field:account.invoice,rec_name:0"
+msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:account.invoice,reconciled:0"
+msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
 msgstr ""
 
-msgctxt "field:account.invoice,reference:0"
+msgctxt "field:account.invoice,reference:"
 msgid "Reference"
 msgstr ""
 
-msgctxt "field:account.invoice,state:0"
+msgctxt "field:account.invoice,state:"
 msgid "State"
 msgstr ""
 
-msgctxt "field:account.invoice,tax_amount:0"
+msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
 msgstr ""
 
-msgctxt "field:account.invoice,taxes:0"
+msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
 msgstr ""
 
-msgctxt "field:account.invoice,total_amount:0"
+msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
 msgstr ""
 
-msgctxt "field:account.invoice,type:0"
+msgctxt "field:account.invoice,type:"
 msgid "Type"
 msgstr ""
 
-msgctxt "field:account.invoice,type_name:0"
+msgctxt "field:account.invoice,type_name:"
 msgid "Type"
 msgstr ""
 
-msgctxt "field:account.invoice,untaxed_amount:0"
+msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
 msgstr ""
 
-msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "field:account.invoice-account.move.line,line:0"
+msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
 msgstr ""
 
-msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
 msgstr ""
 
-msgctxt "field:account.invoice.line,account:0"
+msgctxt "field:account.invoice.line,account:"
 msgid "Account"
 msgstr ""
 
-msgctxt "field:account.invoice.line,amount:0"
+msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
 msgstr ""
 
-msgctxt "field:account.invoice.line,company:0"
+msgctxt "field:account.invoice.line,company:"
 msgid "Company"
 msgstr ""
 
-msgctxt "field:account.invoice.line,currency:0"
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
 msgstr ""
 
-msgctxt "field:account.invoice.line,currency_digits:0"
+msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
 msgstr ""
 
-msgctxt "field:account.invoice.line,description:0"
+msgctxt "field:account.invoice.line,description:"
 msgid "Description"
 msgstr ""
 
-msgctxt "field:account.invoice.line,invoice:0"
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
 msgstr ""
 
-msgctxt "field:account.invoice.line,invoice_type:0"
+msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
 msgstr ""
 
-msgctxt "field:account.invoice.line,note:0"
+msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr ""
 
-msgctxt "field:account.invoice.line,party:0"
+msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr ""
 
-msgctxt "field:account.invoice.line,party_lang:0"
+msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
 msgstr ""
 
-msgctxt "field:account.invoice.line,product:0"
+msgctxt "field:account.invoice.line,product:"
 msgid "Product"
 msgstr ""
 
-msgctxt "field:account.invoice.line,quantity:0"
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr ""
+
+msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
 msgstr ""
 
-msgctxt "field:account.invoice.line,rec_name:0"
+msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:account.invoice.line,sequence:0"
+msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
 msgstr ""
 
-msgctxt "field:account.invoice.line,taxes:0"
+msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
 msgstr ""
 
-msgctxt "field:account.invoice.line,type:0"
+msgctxt "field:account.invoice.line,type:"
 msgid "Type"
 msgstr ""
 
-msgctxt "field:account.invoice.line,unit:0"
+msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
 msgstr ""
 
-msgctxt "field:account.invoice.line,unit_digits:0"
+msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
 msgstr ""
 
-msgctxt "field:account.invoice.line,unit_price:0"
+msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
 msgstr ""
 
-msgctxt "field:account.invoice.line-account.tax,line:0"
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
 msgstr ""
 
-msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,account:0"
-msgid "Account"
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,date:0"
-msgid "Date"
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,description:0"
-msgid "Description"
-msgstr ""
-
-msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
-msgid "Journal"
-msgstr ""
-
-msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term,active:0"
+msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term,description:0"
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term,lines:0"
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term,name:0"
+msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,days:0"
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,delay:0"
-msgid "Condition"
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,type:0"
+msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,code:0"
-msgid "Code"
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,name:0"
-msgid "Name"
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
-msgid "Name"
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.type,code:0"
-msgid "Code"
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,account:0"
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,amount:0"
+msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,base:0"
+msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,base_code:0"
+msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,base_sign:0"
+msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,description:0"
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,invoice:0"
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,manual:0"
+msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,rec_name:0"
+msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,sequence:0"
+msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,sequence_number:0"
+msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,tax:0"
+msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,tax_code:0"
+msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,tax_sign:0"
+msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
 msgstr ""
 
-msgctxt "field:account.period,in_credit_note_sequence:0"
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr ""
 
-msgctxt "field:account.period,in_invoice_sequence:0"
+msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr ""
 
-msgctxt "field:account.period,out_credit_note_sequence:0"
+msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr ""
 
-msgctxt "field:account.period,out_invoice_sequence:0"
+msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr ""
 
-msgctxt "field:party.address,invoice:0"
+msgctxt "field:party.address,invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "field:party.party,payment_term:0"
-msgid "Invoice Payment Term"
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
 msgstr ""
 
-msgctxt "field:party.party,supplier_payment_term:0"
+msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
 msgstr ""
 
-msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
 msgstr ""
 
-msgctxt "help:account.invoice.payment_term.line,percentage:0"
-msgid "In %"
-msgstr ""
-
-msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr ""
 
-msgctxt "model:account.invoice,name:0"
+msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "model:account.invoice-account.move.line,name:0"
+msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr ""
 
-msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
 msgstr ""
 
-msgctxt "model:account.invoice.line,name:0"
+msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
 msgstr ""
 
-msgctxt "model:account.invoice.line-account.tax,name:0"
+msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
 msgstr ""
 
-msgctxt "model:account.invoice.pay_invoice.ask,name:0"
-msgid "Pay Invoice Ask"
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
 msgstr ""
 
-msgctxt "model:account.invoice.pay_invoice.init,name:0"
-msgid "Pay Invoice Init"
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
 msgstr ""
 
-msgctxt "model:account.invoice.payment_term,name:0"
+msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr ""
 
-msgctxt "model:account.invoice.payment_term.line,name:0"
+msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr ""
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:0"
-msgid "Payment Term Line Delay"
-msgstr ""
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
-msgid "End Month"
-msgstr ""
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
-msgid "Net Days"
-msgstr ""
-
-msgctxt "model:account.invoice.payment_term.line.type,name:0"
-msgid "Payment Term Line Type"
-msgstr ""
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
-msgid "Fixed"
-msgstr ""
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
-msgid "Percentage"
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
+msgid "account.invoice.payment_term.line.delay"
 msgstr ""
 
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
-msgid "Remainder"
+msgctxt "model:account.invoice.payment_term.line.type,name:"
+msgid "account.invoice.payment_term.line.type"
 msgstr ""
 
-msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr ""
 
-msgctxt "model:account.invoice.tax,name:0"
+msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr ""
 
@@ -837,11 +960,11 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr ""
 
-msgctxt "model:ir.action,name:credit_invoice"
+msgctxt "model:ir.action,name:credit"
 msgid "Credit"
 msgstr ""
 
-msgctxt "model:ir.action,name:print_invoice_report"
+msgctxt "model:ir.action,name:print"
 msgid "Invoice"
 msgstr ""
 
@@ -849,7 +972,7 @@ msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr ""
 
@@ -937,418 +1060,506 @@ msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
 msgstr ""
 
-msgctxt "model:workflow,name:invoice_workflow"
-msgid "Invoice workflow"
-msgstr ""
-
-msgctxt "model:workflow.activity,name:invoice_activity_cancel"
-msgid "Canceled"
-msgstr ""
-
-msgctxt "model:workflow.activity,name:invoice_activity_draft"
-msgid "Draft"
-msgstr ""
-
-msgctxt "model:workflow.activity,name:invoice_activity_open"
-msgid "Open"
-msgstr ""
-
-msgctxt "model:workflow.activity,name:invoice_activity_paid"
-msgid "Paid"
-msgstr ""
-
-msgctxt "model:workflow.activity,name:invoice_activity_proforma"
-msgid "Pro forma"
-msgstr ""
-
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Base"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Payment Term"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Phone:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Tax"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Unit Price"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr ""
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr ""
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Draft"
 msgstr ""
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Opened"
 msgstr ""
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr ""
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
 msgstr ""
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
 msgstr ""
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
 msgstr ""
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
 msgstr ""
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
 msgstr ""
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
 msgstr ""
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr ""
+
+msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr ""
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
 msgstr ""
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "General"
 msgstr ""
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
 msgstr ""
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
 msgstr ""
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr ""
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Products"
 msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Amount Second Currency"
-msgstr ""
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Credit"
-msgstr ""
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Debit"
-msgstr ""
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Lines to Pay"
+msgctxt "view:account.invoice.pay.ask:"
+msgid "Pay Invoice"
 msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
 msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Payment Lines"
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
 msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.init:0"
-msgid "Pay Invoice"
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
 msgstr ""
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
 msgstr ""
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Line"
 msgstr ""
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Lines"
 msgstr ""
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
 msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
 msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
 msgstr ""
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
 msgstr ""
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
 msgstr ""
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr ""
+
+msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Credit"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Debit"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoices"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Lines"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment Lines"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Taxes"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Cancel"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Draft"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Open"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Reset to Draft"
 msgstr ""
 
-msgctxt "view:party.party:0"
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr ""
+
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr ""
+
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr ""
+
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr ""
+
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr ""
+
+msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr ""
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
 msgstr ""
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
 msgstr ""
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr ""
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
 msgstr ""
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
 msgstr ""
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
 msgstr ""
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr ""
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
 msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 604753b..acd0748 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -2,7 +2,7 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
@@ -10,39 +10,39 @@ msgstr ""
 "Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine "
 "Rechnung im laufenden Buchungsjahr fakturiert wurde."
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
 msgstr ""
 "Für unterschiedliche Geschäftsjahre müssen jeweils eigene "
 "Rechnungsnummernkreise erstellt werden!"
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
 msgstr "Nur Rechnungen im Status 'Fakturiert' können verrechnet werden!"
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
 msgstr ""
 "Die Verrechnung einer Rechnung ist nicht möglich, wenn bereits Zahlungen für"
 " diese gebucht sind!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account!"
 msgstr "Eine Zeile vom Typ \"Position\" muss einem Konto zugeordnet sein!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice!"
 msgstr ""
 "Eine Zeile, die nicht vom Typ \"Position\" ist, muss einer Rechnung "
 "zugeordnet sein!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine"
 " neue Position hinzugefügt werden!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line\n"
 "with account with a different invoice company!"
@@ -50,60 +50,64 @@ msgstr ""
 "Eine Rechnungsposition kann sich nicht\n"
 "auf ein Konto eines anderen Unternehmens beziehen!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
 msgstr ""
 "Positionen von fakturierten oder bezahlten Rechnungen können nicht geändert "
 "werden!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not use the same account\n"
 "as on the invoice!"
 msgstr "Es kann nicht das selbe Konto wie für die Rechnung verwendet werden!"
 
-msgctxt "error:account.invoice.pay_invoice:0"
+msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
 msgstr ""
-"Ein Teilbetrag kann nicht größer als der Gesamtbetrag der Rechnung sein!"
+"Ein Teilbetrag kann nicht größer als der Gesamtbetrag der Rechnung sein."
 
-msgctxt "error:account.invoice.payment_term.line.delay:0"
-msgid "The code must be unique!"
-msgstr "Code kann nicht mehrfach vergeben werden!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
+msgstr "Tag des Monats muss zwischen 1 und 31 sein."
 
-msgctxt "error:account.invoice.payment_term.line.type:0"
-msgid "The code must be unique!"
-msgstr "Code kann nicht mehrfach vergeben werden!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
+msgstr "Die Werte von Prozentsatz und Divisor sind nicht konsistent."
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
 msgstr "Ungültige Position in Zahlungsbedingung!"
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Payment term missing a remainder line!"
-msgstr "In der Zahlungsbedingung fehlt eine Restbetragszeile!"
+msgstr "In der Zahlungsbedingung fehlt eine Restbetragsposition!"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine"
 " neue Position hinzugefügt werden!"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
 msgstr ""
 "Steuern von fakturierten oder bezahlten Rechnungen können nicht geändert "
 "werden!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Base taxes different from invoice lines!\n"
 "Re-compute the invoice."
 msgstr "Steuern stimmen nicht mit den Rechnungspositionen überein!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgstr "Rechnung \"%s\" muss annulliert werden, bevor sie gelöscht werden kann."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
@@ -111,7 +115,7 @@ msgstr ""
 "Es sind Steuern definiert, allerdings nicht in den Rechnungspositionen!\n"
 "Bitte lassen Sie die Rechnung erneut berechnen."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined on invoice lines but not on invoice!\n"
 "Re-compute the invoice."
@@ -119,28 +123,28 @@ msgstr ""
 "Steuern sind für die Rechnungspositionen definiert, allerdings nicht für die Rechnung selbst!\n"
 "Bitte lassen Sie die Rechnung erneut berechnen."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is missing!"
 msgstr "Haben-Konto im Journal fehlt!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is the same than the invoice account!"
 msgstr "Das Habenkonto des Journals ist das selbe wie das Rechnungskonto!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is missing!"
 msgstr "Soll-Konto im Journal fehlt"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is the same than the invoice account!"
 msgstr "Das Sollkonto des Journals ist das selbe wie das Rechnungskonto!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "There is no invoice sequence on the period/fiscal year!"
 msgstr ""
 "Rechnungsnummernkreis für diese Periode oder dieses Buchungsjahr fehlt!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not create an invoice\n"
 "with account from a different invoice company!"
@@ -148,17 +152,17 @@ msgstr ""
 "Es können keine Rechnungen mit einem Konto von einer anderen "
 "rechnungsstellenden Firma angelegt werden"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not modify an invoice that is opened, paid!"
 msgstr "Fakturierte oder bezahlte Rechnungen können nicht geändert werden!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not reset to draft an invoice that has move!"
 msgstr ""
 "Eine Rechnung, die Buchungen enthält, kann nicht auf Entwurf zurückgesetzt "
 "werden!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not use the same account\n"
 "as on invoice line!"
@@ -166,7 +170,7 @@ msgstr ""
 "Es kann nicht das selbe Konto wie für die Rechnungsposition verwendet "
 "werden!"
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the period"
@@ -174,7 +178,7 @@ msgstr ""
 "Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine "
 "Rechnung in der laufenden Periode fakturiert wurde."
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
@@ -182,618 +186,737 @@ msgstr ""
 "Für unterschiedliche Geschäftsjahre eines Unternehmens müssen jeweils eigene"
 " Rechnungsnummernkreise erstellt werden!"
 
-msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Nummernkreis Gutschriften Lieferanten"
 
-msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Nummernkreis Rechnungen Lieferanten"
 
-msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Nummernkreis Gutschriften Kunden"
 
-msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Nummernkreis Rechnungen Kunden"
 
-msgctxt "field:account.invoice,account:0"
+msgctxt "field:account.invoice,account:"
 msgid "Account"
 msgstr "Konto"
 
-msgctxt "field:account.invoice,accounting_date:0"
+msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
 msgstr "Buchungsdatum"
 
-msgctxt "field:account.invoice,amount_to_pay:0"
+msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
 msgstr "Zahlbarer Betrag"
 
-msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Zahlbarer Betrag (heute)"
 
-msgctxt "field:account.invoice,comment:0"
+msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Kommentar"
 
-msgctxt "field:account.invoice,company:0"
+msgctxt "field:account.invoice,company:"
 msgid "Company"
 msgstr "Unternehmen"
 
-msgctxt "field:account.invoice,currency:0"
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.invoice,currency:"
 msgid "Currency"
 msgstr "Währung"
 
-msgctxt "field:account.invoice,currency_date:0"
+msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
 msgstr "Währungsdatum"
 
-msgctxt "field:account.invoice,currency_digits:0"
+msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
 msgstr "Währung (signifikante Stellen)"
 
-msgctxt "field:account.invoice,description:0"
+msgctxt "field:account.invoice,description:"
 msgid "Description"
 msgstr "Beschreibung"
 
-msgctxt "field:account.invoice,invoice_address:0"
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
 msgstr "Rechnungsadresse"
 
-msgctxt "field:account.invoice,invoice_date:0"
+msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
 msgstr "Rechnungsdatum"
 
-msgctxt "field:account.invoice,invoice_report_cache:0"
+msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
 msgstr "Bericht Rechnung"
 
-msgctxt "field:account.invoice,invoice_report_format:0"
+msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
 msgstr "Format Rechnungsbericht"
 
-msgctxt "field:account.invoice,journal:0"
+msgctxt "field:account.invoice,journal:"
 msgid "Journal"
 msgstr "Journal"
 
-msgctxt "field:account.invoice,lines:0"
+msgctxt "field:account.invoice,lines:"
 msgid "Lines"
 msgstr "Positionen"
 
-msgctxt "field:account.invoice,lines_to_pay:0"
+msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Zahlbare Positionen"
 
-msgctxt "field:account.invoice,move:0"
+msgctxt "field:account.invoice,move:"
 msgid "Move"
 msgstr "Buchung"
 
-msgctxt "field:account.invoice,number:0"
+msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Nummer"
 
-msgctxt "field:account.invoice,party:0"
+msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Partei"
 
-msgctxt "field:account.invoice,party_lang:0"
+msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
 msgstr "Sprache Partei"
 
-msgctxt "field:account.invoice,payment_lines:0"
+msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
 msgstr "Zahlungspositionen"
 
-msgctxt "field:account.invoice,payment_term:0"
+msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
 msgstr "Zahlungsbedingung"
 
-msgctxt "field:account.invoice,rec_name:0"
+msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:account.invoice,reconciled:0"
+msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
 msgstr "Abgestimmt"
 
-msgctxt "field:account.invoice,reference:0"
+msgctxt "field:account.invoice,reference:"
 msgid "Reference"
 msgstr "Interner Beleg"
 
-msgctxt "field:account.invoice,state:0"
+msgctxt "field:account.invoice,state:"
 msgid "State"
 msgstr "Status"
 
-msgctxt "field:account.invoice,tax_amount:0"
+msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
 msgstr "Steuer"
 
-msgctxt "field:account.invoice,taxes:0"
+msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
 msgstr "Steuerpositionen"
 
-msgctxt "field:account.invoice,total_amount:0"
+msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
 msgstr "Brutto"
 
-msgctxt "field:account.invoice,type:0"
+msgctxt "field:account.invoice,type:"
 msgid "Type"
 msgstr "Typ"
 
-msgctxt "field:account.invoice,type_name:0"
+msgctxt "field:account.invoice,type_name:"
 msgid "Type"
 msgstr "Typ"
 
-msgctxt "field:account.invoice,untaxed_amount:0"
+msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
 msgstr "Netto"
 
-msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
 msgstr "Rechnung"
 
-msgctxt "field:account.invoice-account.move.line,line:0"
+msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
 msgstr "Zahlungsposition"
 
-msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
 msgstr "Mit Verrechnung"
 
-msgctxt "field:account.invoice.line,account:0"
+msgctxt "field:account.invoice.line,account:"
 msgid "Account"
 msgstr "Konto"
 
-msgctxt "field:account.invoice.line,amount:0"
+msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
 msgstr "Betrag"
 
-msgctxt "field:account.invoice.line,company:0"
+msgctxt "field:account.invoice.line,company:"
 msgid "Company"
 msgstr "Unternehmen"
 
-msgctxt "field:account.invoice.line,currency:0"
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
 msgstr "Währung"
 
-msgctxt "field:account.invoice.line,currency_digits:0"
+msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Stellen Währung"
 
-msgctxt "field:account.invoice.line,description:0"
+msgctxt "field:account.invoice.line,description:"
 msgid "Description"
 msgstr "Bezeichnung"
 
-msgctxt "field:account.invoice.line,invoice:0"
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
 msgstr "Rechnung"
 
-msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
 msgstr "Steuern Rechnung"
 
-msgctxt "field:account.invoice.line,invoice_type:0"
+msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
 msgstr "Rechnungstyp"
 
-msgctxt "field:account.invoice.line,note:0"
+msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Notiz"
 
-msgctxt "field:account.invoice.line,party:0"
+msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Partei"
 
-msgctxt "field:account.invoice.line,party_lang:0"
+msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
 msgstr "Sprache Partei"
 
-msgctxt "field:account.invoice.line,product:0"
+msgctxt "field:account.invoice.line,product:"
 msgid "Product"
 msgstr "Artikel"
 
-msgctxt "field:account.invoice.line,quantity:0"
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr "Artikel Maßeinheit Kategorie"
+
+msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
 msgstr "Anzahl"
 
-msgctxt "field:account.invoice.line,rec_name:0"
+msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:account.invoice.line,sequence:0"
+msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
 msgstr "Reihenfolge"
 
-msgctxt "field:account.invoice.line,taxes:0"
+msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
 msgstr "Steuern"
 
-msgctxt "field:account.invoice.line,type:0"
+msgctxt "field:account.invoice.line,type:"
 msgid "Type"
 msgstr "Typ"
 
-msgctxt "field:account.invoice.line,unit:0"
+msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
 msgstr "Einheit"
 
-msgctxt "field:account.invoice.line,unit_digits:0"
+msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
 msgstr "Anzahl Stellen"
 
-msgctxt "field:account.invoice.line,unit_price:0"
+msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
 msgstr "Einzelpreis"
 
-msgctxt "field:account.invoice.line-account.tax,line:0"
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
 msgstr "Rechnungsposition"
 
-msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
 msgstr "Steuer"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account:0"
-msgid "Account"
-msgstr "Konto"
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
 msgstr "Konto Ausbuchung"
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
 msgstr "Betrag"
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr "Betrag Ausbuchung"
+msgstr "Konto Ausbuchung"
 
-msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr "Unternehmen"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
 msgstr "Währung"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
 msgstr "Stellen Währung"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
 msgstr "Stellen Währung Ausbuchung"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
 msgstr "Währung Ausbuchung"
 
-msgctxt "field:account.invoice.pay_invoice.ask,date:0"
-msgid "Date"
-msgstr "Datum"
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
+msgstr "ID"
 
-msgctxt "field:account.invoice.pay_invoice.ask,description:0"
-msgid "Description"
-msgstr "Beschreibung"
-
-msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
-msgstr "Rechnung"
-
-msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
-msgid "Journal"
-msgstr "Journal"
+msgstr "Rechnungsadresse"
 
-msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
 msgstr "Journal Ausbuchung"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr "Positionen"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Zahlbare Positionen"
 
-msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr "Zahlungspositionen"
 
-msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Typ"
 
-msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
 msgstr "Betrag"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
-msgstr "Währung"
+msgstr "Währungen"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr "Stellen Währung"
+msgstr "Währung (signifikante Stellen)"
 
-msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
-msgstr "Datum"
+msgstr "Zeitpunkt"
 
-msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
-msgstr "Beschreibung"
+msgstr "Bezeichnung"
+
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr "ID"
 
-msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr "Journal"
 
-msgctxt "field:account.invoice.payment_term,active:0"
+msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
 msgstr "Aktiv"
 
-msgctxt "field:account.invoice.payment_term,description:0"
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
 msgstr "Beschreibung"
 
-msgctxt "field:account.invoice.payment_term,lines:0"
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
-msgstr "Positionen"
+msgstr "Positionen Zahlungsbedingung"
 
-msgctxt "field:account.invoice.payment_term,name:0"
+msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Zahlungsbedingung"
 
-msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
 msgstr "Betrag"
 
-msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
 msgstr "Währung"
 
-msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Währung (signifikante Stellen)"
 
-msgctxt "field:account.invoice.payment_term.line,days:0"
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr "Tag des Monats"
+
+msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
 msgstr "Anzahl an Tagen"
 
-msgctxt "field:account.invoice.payment_term.line,delay:0"
-msgid "Condition"
-msgstr "Bedingung"
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
+msgstr "Divisor"
+
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr "Monat"
 
-msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr "Anzahl an Monaten"
+
+msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
 msgstr "Zahlungsbedingung"
 
-msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
 msgstr "Prozentsatz"
 
-msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
 msgstr "Reihenfolge"
 
-msgctxt "field:account.invoice.payment_term.line,type:0"
+msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
 msgstr "Typ"
 
-msgctxt "field:account.invoice.payment_term.line.delay,code:0"
-msgid "Code"
-msgstr "Kundennummer"
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
+msgstr "Wochentag"
 
-msgctxt "field:account.invoice.payment_term.line.delay,name:0"
-msgid "Name"
-msgstr "Name"
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
+msgstr "Anzahl an Wochen"
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
-msgid "Name"
-msgstr "Name"
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
 
-msgctxt "field:account.invoice.payment_term.line.type,code:0"
-msgid "Code"
-msgstr "Kundennummer"
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
 
-msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:account.invoice.tax,account:0"
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
 msgstr "Konto"
 
-msgctxt "field:account.invoice.tax,amount:0"
+msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
 msgstr "Betrag"
 
-msgctxt "field:account.invoice.tax,base:0"
+msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
 msgstr "Netto"
 
-msgctxt "field:account.invoice.tax,base_code:0"
+msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
 msgstr "Code Netto"
 
-msgctxt "field:account.invoice.tax,base_sign:0"
+msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
 msgstr "Vorzeichen (Netto)"
 
-msgctxt "field:account.invoice.tax,description:0"
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
 msgstr "Beschreibung"
 
-msgctxt "field:account.invoice.tax,invoice:0"
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
 msgstr "Rechnung"
 
-msgctxt "field:account.invoice.tax,manual:0"
+msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
 msgstr "Manuell"
 
-msgctxt "field:account.invoice.tax,rec_name:0"
+msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:account.invoice.tax,sequence:0"
+msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
 msgstr "Reihenfolge"
 
-msgctxt "field:account.invoice.tax,sequence_number:0"
+msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
 msgstr "Name Nummernkreis"
 
-msgctxt "field:account.invoice.tax,tax:0"
+msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
 msgstr "Steuer"
 
-msgctxt "field:account.invoice.tax,tax_code:0"
+msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
 msgstr "Steuerkennziffer"
 
-msgctxt "field:account.invoice.tax,tax_sign:0"
+msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
 msgstr "Vorzeichen (Steuer)"
 
-msgctxt "field:account.period,in_credit_note_sequence:0"
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
+msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Nummernkreis Gutschriften Lieferanten"
 
-msgctxt "field:account.period,in_invoice_sequence:0"
+msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Nummernkreis Rechnungen Lieferanten"
 
-msgctxt "field:account.period,out_credit_note_sequence:0"
+msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Nummernkreis Gutschriften Kunden"
 
-msgctxt "field:account.period,out_invoice_sequence:0"
+msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Nummernkreis Rechnungen Kunden"
 
-msgctxt "field:party.address,invoice:0"
+msgctxt "field:party.address,invoice:"
 msgid "Invoice"
 msgstr "Rechnungsadresse"
 
-msgctxt "field:party.party,payment_term:0"
-msgid "Invoice Payment Term"
-msgstr "Zahlungsbedingung Verkauf"
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
+msgstr "Zahlungsbedingung Kunde"
 
-msgctxt "field:party.party,supplier_payment_term:0"
+msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
 msgstr "Zahlungsbedingung Einkauf"
 
-msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
 msgstr ""
 "Bei Aktivierung werden die ausgewählte(n ) Rechnung(en) und hierzu neu "
 "erstellte(n) Gutschrift(en) auf bezahlt gesetzt und miteinander abgestimmt."
 
-msgctxt "help:account.invoice.payment_term.line,percentage:0"
-msgid "In %"
-msgstr "Eingabe in %"
-
-msgctxt "help:account.invoice.payment_term.line,sequence:0"
+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.invoice,name:0"
+msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Rechnung"
 
-msgctxt "model:account.invoice-account.move.line,name:0"
+msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr "Rechnung - Zahlungsposition"
 
-msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
-msgstr "Gutschrift Init"
+msgstr "Gutschrift Rechnung Init"
 
-msgctxt "model:account.invoice.line,name:0"
+msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
 msgstr "Rechnungsposition"
 
-msgctxt "model:account.invoice.line-account.tax,name:0"
+msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
 msgstr "Rechnungsposition - Steuer"
 
-msgctxt "model:account.invoice.pay_invoice.ask,name:0"
-msgid "Pay Invoice Ask"
-msgstr "Zahlung Rechnung Nachfrage"
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
+msgstr "Rechnung bezahlen"
 
-msgctxt "model:account.invoice.pay_invoice.init,name:0"
-msgid "Pay Invoice Init"
-msgstr "Zahlung Rechnung Init"
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
+msgstr "Rechnung bezahlen"
 
-msgctxt "model:account.invoice.payment_term,name:0"
+msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Zahlungsbedingung"
 
-msgctxt "model:account.invoice.payment_term.line,name:0"
+msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
-msgstr "Zahlungsbedingung Zeile"
-
-msgctxt "model:account.invoice.payment_term.line.delay,name:0"
-msgid "Payment Term Line Delay"
-msgstr "Zahlungsbedingung Zeile Frist"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
-msgid "End Month"
-msgstr "Ende Monat"
+msgstr "Zahlungsbedingung Position"
 
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
-msgid "Net Days"
-msgstr "Tage netto"
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
+msgid "account.invoice.payment_term.line.delay"
+msgstr "Zahlungsbedingung Position Frist"
 
-msgctxt "model:account.invoice.payment_term.line.type,name:0"
-msgid "Payment Term Line Type"
-msgstr "Zahlungsbedingung Zeile Typ"
+msgctxt "model:account.invoice.payment_term.line.type,name:"
+msgid "account.invoice.payment_term.line.type"
+msgstr "Zahlungsbedingung Position Typ"
 
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
-msgid "Fixed"
-msgstr "Fix"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
-msgid "Percentage"
-msgstr "Prozentsatz"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
-msgid "Remainder"
-msgstr "Rest"
-
-msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr "Druck Rechnung Warnung"
+msgstr "Druck Rechnungsbericht Warnung"
 
-msgctxt "model:account.invoice.tax,name:0"
+msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr "Rechnung Steuer"
 
@@ -873,19 +996,19 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Zahlungsbedingungen"
 
-msgctxt "model:ir.action,name:credit_invoice"
+msgctxt "model:ir.action,name:credit"
 msgid "Credit"
-msgstr "Gutschrift erstellen"
+msgstr "Haben"
 
-msgctxt "model:ir.action,name:print_invoice_report"
+msgctxt "model:ir.action,name:print"
 msgid "Invoice"
-msgstr "Rechnung/Gutschrift"
+msgstr "Rechnungsadresse"
 
 msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
 msgstr "Rechnung"
 
-msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr "Rechnung bezahlen"
 
@@ -973,422 +1096,506 @@ msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
 msgstr "Zahlungsbedingungen"
 
-msgctxt "model:workflow,name:invoice_workflow"
-msgid "Invoice workflow"
-msgstr "Workflow Rechnung"
-
-msgctxt "model:workflow.activity,name:invoice_activity_cancel"
-msgid "Canceled"
-msgstr "Annulliert"
-
-msgctxt "model:workflow.activity,name:invoice_activity_draft"
-msgid "Draft"
-msgstr "Entwurf"
-
-msgctxt "model:workflow.activity,name:invoice_activity_open"
-msgid "Open"
-msgstr "Fakturieren"
-
-msgctxt "model:workflow.activity,name:invoice_activity_paid"
-msgid "Paid"
-msgstr "Bezahlt"
-
-msgctxt "model:workflow.activity,name:invoice_activity_proforma"
-msgid "Pro forma"
-msgstr "Pro Forma"
-
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Betrag"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Base"
 msgstr "Netto"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
 msgstr "Gutschrift Nr.:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date"
 msgstr "Fällig am"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr "Datum:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description"
 msgstr "Beschreibung"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description:"
 msgstr "Beschreibung:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
 msgstr "Gutschrift (Entwurf)"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
 msgstr "Rechnung (Entwurf)"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
 msgstr "Gutschrift (Entwurf)"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
 msgstr "Rechnung (Entwurf)"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
 msgstr "E-Mail:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
 msgstr "Rechnung Nr.:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Payment Term"
 msgstr "Zahlungsbedingung"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Phone:"
 msgstr "Telefon:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
 msgstr "Gutschrift Pro Forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
 msgstr "Rechnung Pro Forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
 msgstr "Gutschrift Pro Forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
 msgstr "Rechnung Pro Forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Anzahl"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Gutschrift Nr.:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
 msgstr "Rechnung Nr.:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Tax"
 msgstr "Steuer"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes"
 msgstr "Steuern"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes:"
 msgstr "Steuern:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
 msgstr "Netto:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total:"
 msgstr "Rechnungsbetrag"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Unit Price"
 msgstr "Einzelpreis"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
 msgstr "USt-ID-Nr.:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "USt-ID-Nr:"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Annulliert"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Draft"
 msgstr "Entwurf"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Opened"
 msgstr "Fakturiert"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Bezahlt"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
 msgstr "Pro Forma"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
 msgstr "Gutschrift an Kunde"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
 msgstr "Kundenrechnung"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
 msgstr "Gutschrift von Lieferant"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr "Lieferantenrechnung"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Kundengutschrift"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
 msgstr "Kundenrechnung"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
 msgstr "Lieferantengutschrift"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
 msgstr "Lieferantenrechnung"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr "Kommentar"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
 msgstr "Position"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
 msgstr "Zwischensumme"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
 msgstr "Überschrift"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
 msgstr "Teilzahlung"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
 msgstr "Ausbuchung"
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr "April"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr "August"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr "Dezember"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr "Februar"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr "Januar"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr "Juli"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr "Juni"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr "März"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr "Mai"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr "November"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr "Oktober"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr "September"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr "Fix"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr "Prozentsatz auf Restbetrag"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr "Prozentsatz auf Gesamtbetrag"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr "Restbetrag"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr "Freitag"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr "Montag"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr "Samstag"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr "Sonntag"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr "Donnerstag"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr "Dienstag"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr "Mittwoch"
+
+msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr "Wollen Sie diese Rechnungen wirklich gutschreiben?"
+msgstr "Wollen Sie diese Rechnung(en) wirklich gutschreiben?"
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr "Rechnung gutschreiben"
+msgstr "Gutschrift Rechnung"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "General"
 msgstr "Allgemein"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
 msgstr "Rechnungsposition"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
 msgstr "Rechnungspositionen"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notizen"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Products"
 msgstr "Artikel"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Amount Second Currency"
-msgstr "Betrag Zweitwährung"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Credit"
-msgstr "Haben"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Debit"
-msgstr "Soll"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Lines to Pay"
-msgstr "Zahlbare Positionen"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr "Rechnung bezahlen"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Payment Lines"
-msgstr "Zahlungspositionen"
-
-msgctxt "view:account.invoice.pay_invoice.init:0"
+msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
 msgstr "Rechnung bezahlen"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
+msgstr "Zahlungsbedingung Position"
+
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
+msgstr "Positionen Zahlungsbedingung"
+
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
 msgstr "Zahlungsbedingung"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Line"
-msgstr "Zahlungsbedingung Zeile"
+msgstr "Zahlungsbedingung Position"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Lines"
-msgstr "Zeilen Zahlungsbedingung"
+msgstr "Positionen Zahlungsbedingung"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Zahlungsbedingung"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
-msgid "<b>Warning!</b>"
-msgstr "<b>Warnung!</b>"
-
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
-msgstr "Rechnung/Gutschrift drucken"
+msgstr "Rechnung drucken"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
 msgstr "Die Rechnungen werden <i>direkt</i> an den Drucker gesendet."
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
 msgstr "Sie haben mehr als eine Rechnung zum Ausdrucken gewählt."
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
 msgstr "Rechnungssteuer"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
 msgstr "Rechnungssteuern"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr "Steuerkennziffer"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr "Steuern"
+
+msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
 msgstr "Betrag Zweitwährung"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Credit"
 msgstr "Haben"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Debit"
 msgstr "Soll"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr "Rechnung"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoices"
 msgstr "Rechnungen"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Lines"
 msgstr "Positionen"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Sonstiges"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Zahlung"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment Lines"
 msgstr "Zahlungspositionen"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
 msgstr "_Pro Forma"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Taxes"
 msgstr "Steuern"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Cancel"
 msgstr "_Annullieren"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Draft"
 msgstr "_Entwurf"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Open"
 msgstr "_Fakturieren"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Bezahlen"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Reset to Draft"
 msgstr "Auf Entwurf _Zurücksetzen"
 
-msgctxt "view:party.party:0"
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr "Betrag Zweitwährung"
+
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr "Haben"
+
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr "Soll"
+
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr "Zahlbare Positionen"
+
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr "Zahlungspositionen"
+
+msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr "Zahlungsbedingungen"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
-msgstr "Gutschrift erstellen"
+msgstr "Haben"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
-msgstr "Abbrechen"
+msgstr "Annulliert"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr "Abbrechen"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
 msgstr "OK"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
 msgstr "OK"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
-msgstr "Abbrechen"
+msgstr "Annulliert"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr "Abbrechen"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
 msgstr "Drucken"
diff --git a/locale/es_AR.po b/locale/es_AR.po
new file mode 100644
index 0000000..542f292
--- /dev/null
+++ b/locale/es_AR.po
@@ -0,0 +1,3 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 53f56b0..a6b59d8 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -2,7 +2,7 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
@@ -10,33 +10,33 @@ msgstr ""
 "No puede cambiar la secuencia de una factura si hay una factura abierta en "
 "el año fiscal"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
 msgstr "¡Debe tener una secuencia diferente de facturación por año fiscal!"
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
-msgstr "¡No puede acreditar con reembolsos una factura que no está abierta!"
+msgstr ""
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
-msgstr "¡No puede acreditar una devolución de una factura con pagos!"
+msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+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!"
 
-msgctxt "error:account.invoice.line:0"
+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!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "No puede adicionar una línea a una factura que está abierta, pagada o "
 "cancelada!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line\n"
 "with account with a different invoice company!"
@@ -44,11 +44,11 @@ msgstr ""
 "¡No puede crear una línea de factura\n"
 "con cuenta a partir de una factura de una compañía distinta!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
 msgstr "¡No puede modificar la línea de una factura que está abierta, pagada!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not use the same account\n"
 "as on the invoice!"
@@ -56,46 +56,49 @@ msgstr ""
 "No puede usar la misma cuenta\n"
 "que en la factura!"
 
-msgctxt "error:account.invoice.pay_invoice:0"
+msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
 msgstr ""
-"¡No puede crear un pago parcial con un monto mayor que el valor a pagar!"
 
-msgctxt "error:account.invoice.payment_term.line.delay:0"
-msgid "The code must be unique!"
-msgstr "¡El código debe ser único!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
+msgstr ""
 
-msgctxt "error:account.invoice.payment_term.line.type:0"
-msgid "The code must be unique!"
-msgstr "¡El código debe ser único!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
+msgstr ""
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
 msgstr "Línea de opción de pago inválida!"
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Payment term missing a remainder line!"
 msgstr "Hace falta una línea final al término de pago!"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "No puede adicionar una línea a una factura que está abierta, pagada o "
 "cancelada!"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Base taxes different from invoice lines!\n"
 "Re-compute the invoice."
 msgstr "Los Impuestos Base difieren de las líneas de factura!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
@@ -103,47 +106,47 @@ msgstr ""
 "Impuestos definidos pero no en líneas de factura!\n"
 "Recalcule la factura."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined on invoice lines but not on invoice!\n"
 "Re-compute the invoice."
 msgstr "Impuestos definidos en factura pero no usados en las líneas!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is missing!"
 msgstr "Falta la cuenta crédito del diario!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is the same than the invoice account!"
 msgstr "¡La cuenta crédito en el diario es la misma que la cuenta facturada!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is missing!"
 msgstr "Falta la cuenta débito del diario!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is the same than the invoice account!"
 msgstr "¡La cuenta débito en el diario es la misma que la cuenta facturada!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "There is no invoice sequence on the period/fiscal year!"
 msgstr "No hay una secuencia de facturaas para el período/año fiscal!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not create an invoice\n"
 "with account from a different invoice company!"
 msgstr "No puede crear una factura"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not modify an invoice that is opened, paid!"
 msgstr "¡No puede modificar una factura que está abierta, pagada!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not reset to draft an invoice that has move!"
 msgstr "¡No puede poner en borrador una factura que ha sido movida!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not use the same account\n"
 "as on invoice line!"
@@ -151,7 +154,7 @@ msgstr ""
 "¡No puede usar la misma cuenta\n"
 "como línea en la factura!"
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the period"
@@ -159,7 +162,7 @@ msgstr ""
 "No puede cambiar la secuencia de una factura si hay una factura abierta en "
 "el período"
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
@@ -167,616 +170,757 @@ msgstr ""
 "¡Debe tener secuencias diferentes de facturas por año fiscal en la misma "
 "compañía!"
 
-msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Secuencia de la Nota Crédito del Proveedor"
 
-msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Secuencia de Factura de Proveedor"
 
-msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Secuencia de Nota Crédito de Cliente"
 
-msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Secuencia de Facturas de Cliente"
 
-msgctxt "field:account.invoice,account:0"
+msgctxt "field:account.invoice,account:"
 msgid "Account"
 msgstr "Cuenta"
 
-msgctxt "field:account.invoice,accounting_date:0"
+msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
 msgstr "Fecha de contabilización"
 
-msgctxt "field:account.invoice,amount_to_pay:0"
+msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
 msgstr "Cantidad a pagar"
 
-msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Cantidad a pagar hoy"
 
-msgctxt "field:account.invoice,comment:0"
+msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Comentario"
 
-msgctxt "field:account.invoice,company:0"
+msgctxt "field:account.invoice,company:"
 msgid "Company"
 msgstr "Compañía"
 
-msgctxt "field:account.invoice,currency:0"
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:account.invoice,currency:"
 msgid "Currency"
 msgstr "Moneda"
 
-msgctxt "field:account.invoice,currency_date:0"
+msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
 msgstr ""
 
-msgctxt "field:account.invoice,currency_digits:0"
+msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
 msgstr "Dígitos de Moneda"
 
-msgctxt "field:account.invoice,description:0"
+msgctxt "field:account.invoice,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice,invoice_address:0"
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
 msgstr "Dirección de Facturación"
 
-msgctxt "field:account.invoice,invoice_date:0"
+msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
 msgstr "Fecha de Factura"
 
-msgctxt "field:account.invoice,invoice_report_cache:0"
+msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
 msgstr ""
 
-msgctxt "field:account.invoice,invoice_report_format:0"
+msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
 msgstr "Formato de Reporte de Facturación"
 
-msgctxt "field:account.invoice,journal:0"
+msgctxt "field:account.invoice,journal:"
 msgid "Journal"
 msgstr "Diario"
 
-msgctxt "field:account.invoice,lines:0"
+msgctxt "field:account.invoice,lines:"
 msgid "Lines"
 msgstr "Líneas"
 
-msgctxt "field:account.invoice,lines_to_pay:0"
+msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Líneas a Pagar"
 
-msgctxt "field:account.invoice,move:0"
+msgctxt "field:account.invoice,move:"
 msgid "Move"
 msgstr "Movimiento"
 
-msgctxt "field:account.invoice,number:0"
+msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Número"
 
-msgctxt "field:account.invoice,party:0"
+msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Tercero"
 
-msgctxt "field:account.invoice,party_lang:0"
+msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
 msgstr "Idioma del Tercero"
 
-msgctxt "field:account.invoice,payment_lines:0"
+msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
 msgstr "Líneas de Pago"
 
-msgctxt "field:account.invoice,payment_term:0"
+msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
 msgstr "Término de Pago"
 
-msgctxt "field:account.invoice,rec_name:0"
+msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice,reconciled:0"
+msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
 msgstr "Conciliado"
 
-msgctxt "field:account.invoice,reference:0"
+msgctxt "field:account.invoice,reference:"
 msgid "Reference"
 msgstr "Referencia"
 
-msgctxt "field:account.invoice,state:0"
+msgctxt "field:account.invoice,state:"
 msgid "State"
 msgstr "Estado"
 
-msgctxt "field:account.invoice,tax_amount:0"
+msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
 msgstr "Impuesto"
 
-msgctxt "field:account.invoice,taxes:0"
+msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
 msgstr "Líneas de Impuestos"
 
-msgctxt "field:account.invoice,total_amount:0"
+msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
 msgstr "Total"
 
-msgctxt "field:account.invoice,type:0"
+msgctxt "field:account.invoice,type:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice,type_name:0"
+msgctxt "field:account.invoice,type_name:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice,untaxed_amount:0"
+msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
 msgstr "Sin Impuesto"
 
-msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:account.invoice-account.move.line,line:0"
+msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
 msgstr "Línea de pago"
 
-msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
-msgstr "Con devolución"
+msgstr ""
 
-msgctxt "field:account.invoice.line,account:0"
+msgctxt "field:account.invoice.line,account:"
 msgid "Account"
 msgstr "Cuenta"
 
-msgctxt "field:account.invoice.line,amount:0"
+msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
 msgstr "Cantidad"
 
-msgctxt "field:account.invoice.line,company:0"
+msgctxt "field:account.invoice.line,company:"
 msgid "Company"
 msgstr "Compañía"
 
-msgctxt "field:account.invoice.line,currency:0"
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
 msgstr "Moneda"
 
-msgctxt "field:account.invoice.line,currency_digits:0"
+msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Dígitos de Moneda"
 
-msgctxt "field:account.invoice.line,description:0"
+msgctxt "field:account.invoice.line,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice.line,invoice:0"
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
 msgstr "Impuestos de Facturas"
 
-msgctxt "field:account.invoice.line,invoice_type:0"
+msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
 msgstr "Tipo de Factura"
 
-msgctxt "field:account.invoice.line,note:0"
+msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Nota"
 
-msgctxt "field:account.invoice.line,party:0"
+msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Terceros"
 
-msgctxt "field:account.invoice.line,party_lang:0"
+msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
 msgstr "Idioma del Tercero"
 
-msgctxt "field:account.invoice.line,product:0"
+msgctxt "field:account.invoice.line,product:"
 msgid "Product"
 msgstr "Producto"
 
-msgctxt "field:account.invoice.line,quantity:0"
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr ""
+
+msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
 msgstr "Cantidad"
 
-msgctxt "field:account.invoice.line,rec_name:0"
+msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.line,sequence:0"
+msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
 msgstr "Secuencia"
 
-msgctxt "field:account.invoice.line,taxes:0"
+msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
 msgstr "Impuestos"
 
-msgctxt "field:account.invoice.line,type:0"
+msgctxt "field:account.invoice.line,type:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice.line,unit:0"
+msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
 msgstr "Unidad"
 
-msgctxt "field:account.invoice.line,unit_digits:0"
+msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
 msgstr "Dígitos de Unidad"
 
-msgctxt "field:account.invoice.line,unit_price:0"
+msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
 msgstr "Precio Unitario"
 
-msgctxt "field:account.invoice.line-account.tax,line:0"
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
 msgstr "Línea de Factura"
 
-msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
 msgstr "Impuesto"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account:0"
-msgid "Account"
-msgstr "Cuenta"
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr "Cuenta de Ajustes"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
-msgstr "Valor del Pago"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr "Valor del Ajuste"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr "Compañía"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
-msgstr "Pago en Moneda"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr "Dígitos de Pago de Moneda"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr "Ajuste de Dígitos de Moneda"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr "Ajuste de Moneda"
-
-msgctxt "field:account.invoice.pay_invoice.ask,date:0"
-msgid "Date"
-msgstr "Fecha"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,description:0"
-msgid "Description"
-msgstr "Descripción"
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
-msgid "Journal"
-msgstr "Diario"
-
-msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr "Diario de Ajuste"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
-msgstr "Líneas"
+msgstr "Líneas de Inventario"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Líneas a Pagar"
 
-msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr "Líneas de Pago"
 
-msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
 msgstr "Cantidad"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
 msgstr "Moneda"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
-msgstr "Dígitos de Moneda"
+msgstr "Gestión de Moneda"
 
-msgctxt "field:account.invoice.pay_invoice.init,date:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
 msgstr "Fecha"
 
-msgctxt "field:account.invoice.pay_invoice.init,description:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr "Diario"
 
-msgctxt "field:account.invoice.payment_term,active:0"
+msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
 msgstr "Activo"
 
-msgctxt "field:account.invoice.payment_term,description:0"
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice.payment_term,lines:0"
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Líneas"
 
-msgctxt "field:account.invoice.payment_term,name:0"
+msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Término de Pago"
 
-msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
 msgstr "Cantidad"
 
-msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
 msgstr "Moneda"
 
-msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Dígitos de Moneda"
 
-msgctxt "field:account.invoice.payment_term.line,days:0"
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
 msgstr "Cantidad de días"
 
-msgctxt "field:account.invoice.payment_term.line,delay:0"
-msgid "Condition"
-msgstr "Condición"
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr "Mes"
 
-msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
 msgstr "Término de Pago"
 
-msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
 msgstr "Porcentaje"
 
-msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
 msgstr "Secuencia"
 
-msgctxt "field:account.invoice.payment_term.line,type:0"
+msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice.payment_term.line.delay,code:0"
-msgid "Code"
-msgstr "Código"
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,name:0"
-msgid "Name"
-msgstr "Nombre"
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
-msgid "Name"
-msgstr "Nombre"
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.type,code:0"
-msgid "Code"
-msgstr "Código"
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.tax,account:0"
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
 msgstr "Cuenta"
 
-msgctxt "field:account.invoice.tax,amount:0"
+msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
 msgstr "Cantidad"
 
-msgctxt "field:account.invoice.tax,base:0"
+msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
 msgstr "Base"
 
-msgctxt "field:account.invoice.tax,base_code:0"
+msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
 msgstr "Código Base"
 
-msgctxt "field:account.invoice.tax,base_sign:0"
+msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
 msgstr "Signo Base"
 
-msgctxt "field:account.invoice.tax,description:0"
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice.tax,invoice:0"
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:account.invoice.tax,manual:0"
+msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
 msgstr "Manual"
 
-msgctxt "field:account.invoice.tax,rec_name:0"
+msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.tax,sequence:0"
+msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
 msgstr "Secuencia"
 
-msgctxt "field:account.invoice.tax,sequence_number:0"
+msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
 msgstr "Número de Secuencia"
 
-msgctxt "field:account.invoice.tax,tax:0"
+msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
 msgstr "Impuesto"
 
-msgctxt "field:account.invoice.tax,tax_code:0"
+msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
 msgstr "Código de Impuesto"
 
-msgctxt "field:account.invoice.tax,tax_sign:0"
+msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
 msgstr "Signo del Impuesto"
 
-msgctxt "field:account.period,in_credit_note_sequence:0"
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Secuencia de la Nota Crédito del Proveedor"
 
-msgctxt "field:account.period,in_invoice_sequence:0"
+msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Secuencia de Factura de Proveedor"
 
-msgctxt "field:account.period,out_credit_note_sequence:0"
+msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Secuencia de Nota Crédito de Cliente"
 
-msgctxt "field:account.period,out_invoice_sequence:0"
+msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Secuencia de Facturas de Cliente"
 
-msgctxt "field:party.address,invoice:0"
+msgctxt "field:party.address,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:party.party,payment_term:0"
-msgid "Invoice Payment Term"
-msgstr "Término de Pago de la Factura"
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
+msgstr ""
 
-msgctxt "field:party.party,supplier_payment_term:0"
+msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
 msgstr "Término de Pago a Proveedor"
 
-msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr "Si cierto, la(s) factura(s) actuales se pagarán."
-
-msgctxt "help:account.invoice.payment_term.line,percentage:0"
-msgid "In %"
-msgstr "En %"
+msgstr ""
 
-msgctxt "help:account.invoice.payment_term.line,sequence:0"
+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.invoice,name:0"
+msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "model:account.invoice-account.move.line,name:0"
+msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr "Factura - Línea de pago"
 
-msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
-msgstr "Inicio de Factura Crédito"
+msgstr ""
 
-msgctxt "model:account.invoice.line,name:0"
+msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
 msgstr "Línea de Factura"
 
-msgctxt "model:account.invoice.line-account.tax,name:0"
+msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
 msgstr "Línea de Factura - Impuesto"
 
-msgctxt "model:account.invoice.pay_invoice.ask,name:0"
-msgid "Pay Invoice Ask"
-msgstr "Solicitud de Pago de Factura"
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
+msgstr ""
 
-msgctxt "model:account.invoice.pay_invoice.init,name:0"
-msgid "Pay Invoice Init"
-msgstr "Inicio de Pago de Factura"
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
+msgstr ""
 
-msgctxt "model:account.invoice.payment_term,name:0"
+msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Término de Pago"
 
-msgctxt "model:account.invoice.payment_term.line,name:0"
+msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Línea de Término de Pago"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:0"
-msgid "Payment Term Line Delay"
+#, fuzzy
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
+msgid "account.invoice.payment_term.line.delay"
 msgstr "Línea de Pago Tardío"
 
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
-msgid "End Month"
-msgstr "Mes Final"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
-msgid "Net Days"
-msgstr "Días Netos"
-
-msgctxt "model:account.invoice.payment_term.line.type,name:0"
-msgid "Payment Term Line Type"
+#, fuzzy
+msgctxt "model:account.invoice.payment_term.line.type,name:"
+msgid "account.invoice.payment_term.line.type"
 msgstr "Tipo Pago de Término"
 
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
-msgid "Fixed"
-msgstr "Fijo"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
-msgid "Percentage"
-msgstr "Porcentaje"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
-msgid "Remainder"
-msgstr "Diferencia"
-
-msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr "Imprimir Advertencia de Pago de Factura"
+msgstr ""
 
-msgctxt "model:account.invoice.tax,name:0"
+msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr "Impuesto en Factura"
 
@@ -856,11 +1000,13 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Formas de Pago"
 
-msgctxt "model:ir.action,name:credit_invoice"
+#, fuzzy
+msgctxt "model:ir.action,name:credit"
 msgid "Credit"
 msgstr "Crédito"
 
-msgctxt "model:ir.action,name:print_invoice_report"
+#, fuzzy
+msgctxt "model:ir.action,name:print"
 msgid "Invoice"
 msgstr "Factura"
 
@@ -868,9 +1014,9 @@ msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
-msgstr "Pagar Factura"
+msgstr ""
 
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
@@ -956,422 +1102,530 @@ msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
 msgstr "Formas de Pago"
 
-msgctxt "model:workflow,name:invoice_workflow"
-msgid "Invoice workflow"
-msgstr "Flujo de Trabajo Factura"
-
-msgctxt "model:workflow.activity,name:invoice_activity_cancel"
-msgid "Canceled"
-msgstr "Cancelado"
-
-msgctxt "model:workflow.activity,name:invoice_activity_draft"
-msgid "Draft"
-msgstr "Borrador"
-
-msgctxt "model:workflow.activity,name:invoice_activity_open"
-msgid "Open"
-msgstr "Abrir"
-
-msgctxt "model:workflow.activity,name:invoice_activity_paid"
-msgid "Paid"
-msgstr "Pagado"
-
-msgctxt "model:workflow.activity,name:invoice_activity_proforma"
-msgid "Pro forma"
-msgstr "Pro forma"
-
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Cantidad"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Base"
 msgstr "Base"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
 msgstr "Nota Crédito N°:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date"
 msgstr "Fecha"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr "Fecha:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description:"
 msgstr "Descripción:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
 msgstr "Borrador de Nota Crédito"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
 msgstr "Borrador de Factura"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
 msgstr "Borrador de Nota Crédito del Proveedor"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
 msgstr "Borrador de Factura del Proveedor"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
 msgstr "Correo electrónico:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
 msgstr "Factura N°:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Payment Term"
 msgstr "Término de Pago"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Phone:"
 msgstr "Teléfono:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
 msgstr "Nota Crédito Proforma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
 msgstr "Factura Proforma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
 msgstr "Nota Crédito del Proveedor Proforma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
 msgstr "Factura del Proveedor Proforma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Cantidad"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Nota Crédito del Proveedor N°:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
 msgstr "Factura del Proveedor N°:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Tax"
 msgstr "Impuesto"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes"
 msgstr "Impuestos"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes:"
 msgstr "Impuestos:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
 msgstr "Total (sin impuestos):"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total:"
 msgstr "Total:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Unit Price"
 msgstr "Precio Unitario"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "IVA:"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Cancelado"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Draft"
 msgstr "Borrador"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Opened"
 msgstr "Abierto"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Pagado"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
 msgstr "Pro forma"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
 msgstr "Nota de Crédito"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
 msgstr "Nota Crédito del Proveedor"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr "Factura de Proveedor"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Nota Crédito"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
 msgstr "Nota Crédito del Proveedor"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
 msgstr "Factura de Proveedor"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr "Comentario"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
 msgstr "Línea"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
 msgstr "Subtotal"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
 msgstr "Título"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
-msgstr "Pago Parcial"
+msgstr ""
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+#, fuzzy
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
-msgstr "Ajuste"
+msgstr "Exento"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr "Fijo"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr ""
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr "Viernes"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr "Lunes"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr "Sábado"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr "Domingo"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr "Jueves"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr "Martes"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr "Miércoles"
+
+msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr "Segur@ desea acreditar la(s) factura(s)?"
+msgstr ""
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr "Factura Crédito"
+msgstr ""
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "General"
 msgstr "General"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
 msgstr "Línea de Factura"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
 msgstr "Líneas de Factura"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notas"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Products"
 msgstr "Productos"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Amount Second Currency"
-msgstr "Cantidad en la Moneda Secundaria"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Credit"
-msgstr "Crédito"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Debit"
-msgstr "Débito"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Lines to Pay"
-msgstr "Líneas a Pagar"
+msgctxt "view:account.invoice.pay.ask:"
+msgid "Pay Invoice"
+msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
-msgstr "Pagar Factura"
+msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Payment Lines"
-msgstr "Líneas de Pago"
+#, fuzzy
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
+msgstr "Línea de Término de Pago"
 
-msgctxt "view:account.invoice.pay_invoice.init:0"
-msgid "Pay Invoice"
-msgstr "Pagar Factura"
+#, fuzzy
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
+msgstr "Líneas de Término de Pago"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
 msgstr "Término de Pago"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Line"
 msgstr "Línea de Término de Pago"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Lines"
 msgstr "Líneas de Término de Pago"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Formas de Pago"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
-msgid "<b>Warning!</b>"
-msgstr "<b>Advertencia!</b>"
-
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
-msgstr "Imprimir Factura"
+msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
-msgstr "Las facturas serán enviadas <i>directamente</i> a la impresora."
+msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
-msgstr "Ha elegido más de una factura para imprimir"
+msgstr ""
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
 msgstr "Impuesto en Factura"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
 msgstr "Impuestos de Facturas"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr "Código de Impuesto"
 
-msgctxt "view:account.invoice:0"
+#, fuzzy
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
 msgstr "Cantidad en la Moneda Secundaria"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Credit"
 msgstr "Crédito"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Debit"
 msgstr "Débito"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoices"
 msgstr "Facturas"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Lines"
 msgstr "Líneas"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Información Adicional"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Pago"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment Lines"
 msgstr "Líneas de Pago"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
 msgstr "Pro For_ma"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Taxes"
 msgstr "Impuestos"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Cancel"
 msgstr "_Cancelar"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Draft"
 msgstr "_Borrador"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Open"
 msgstr "_Abrir"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Pago"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Reset to Draft"
 msgstr "_Revertir a Borrador"
 
-msgctxt "view:party.party:0"
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr "Cantidad en la Moneda Secundaria"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr "Crédito"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr "Débito"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr "Líneas a Pagar"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr "Líneas de Pago"
+
+msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr "Formas de Pago"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
 msgstr "Crédito"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
 msgstr "Aceptar"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
 msgstr "Aceptar"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
-msgstr "Imprimir"
+msgstr ""
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 5664e8e..76ef64b 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -2,95 +2,99 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
 msgstr ""
 "No puede cambiar la secuencia de una factura si ya hay una abierta en el "
-"ejercicio fiscal"
+"ejercicio fiscal."
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
 msgstr ""
-"Debe tener una secuencia diferente de facturación por ejercicio fiscal"
+"Debe tener una secuencia distinta de facturación por ejercicio fiscal."
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
-msgstr "No puede pagar con una devolución una factura que no está abierta"
+msgstr ""
+"No puede hacer un abono con devolución desde una factura que no esté "
+"abierta."
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
-msgstr "No puede pagar con una devolución una factura que tiene pagos"
+msgstr "No puede hacer un abono con devolución desde una factura con pagos."
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account!"
-msgstr "Una línea de tipo «línea» debe tener una cuenta"
+msgstr "Una línea de tipo \"línea\" debe tener una cuenta."
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice!"
-msgstr "Una línea sin tipo «línea» debe tener una factura"
+msgstr "Una línea sin tipo \"línea\" debe tener una factura."
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
-"No puede añadir una línea a una factura que está abierta, pagada o cancelada"
+"No puede añadir una línea a una factura que está abierta, pagada o "
+"cancelada."
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line\n"
 "with account with a different invoice company!"
 msgstr ""
 "No puede crear una línea de factura\n"
-"con una cuenta de una empresa distinta a la que factura"
+"con una cuenta de una empresa distinta a la que factura."
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
-msgstr "No puede modificar una línea de una factura que está abierta o pagada"
+msgstr ""
+"No puede modificar una línea de una factura que está abierta o pagada."
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not use the same account\n"
 "as on the invoice!"
 msgstr ""
 "No puede usar la misma cuenta\n"
-"que en la factura"
+"que en la factura."
 
-msgctxt "error:account.invoice.pay_invoice:0"
+msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
 msgstr ""
-"No puede crear un pago parcial con una cantidad mayor de la que hay que "
-"pagar"
+"No puede crear un pago parcial con un importe mayor que el importe a pagar."
 
-msgctxt "error:account.invoice.payment_term.line.delay:0"
-msgid "The code must be unique!"
-msgstr "El código debe ser único"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
+msgstr "El día del mes debe ser entre 1 y 31."
 
-msgctxt "error:account.invoice.payment_term.line.type:0"
-msgid "The code must be unique!"
-msgstr "El código debe ser único"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
+msgstr "Los valores porcentaje y divisor no son coherentes."
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
-msgstr "La línea del plazo no es válida"
+msgstr "La línea del plazo de pago no es correcta."
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Payment term missing a remainder line!"
-msgstr "Al plazo de pago le falta una línea con el remanente"
+msgstr "Al plazo de pago le falta una línea con el remanente."
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
-"No puede añadir una línea a una factura que está abierta, pagada o cancelada"
+"No puede añadir una línea a una factura que está abierta, pagada o "
+"cancelada."
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
 msgstr ""
-"No puede modificar los impuestos de una factura que está abierta o pagada"
+"No puede modificar los impuestos de una factura que está abierta o pagada."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Base taxes different from invoice lines!\n"
 "Re-compute the invoice."
@@ -98,692 +102,815 @@ msgstr ""
 "Los impuestos base son distintos de las líneas de la factura.\n"
 "Recalcule la factura."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgstr "La factura \"%s\" debe ser cancelada antes de eliminarla."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
 msgstr ""
-"Tiene impuestos definidos pero ninguno en las líneas de la factura\n"
+"Tiene impuestos definidos pero ninguno en las líneas de la factura.\n"
 "Recalcule la factura."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined on invoice lines but not on invoice!\n"
 "Re-compute the invoice."
 msgstr ""
-"Los impuestos están definidos en las lineas de la factura pero no en la factura.\n"
+"Los impuestos están definidos en las líneas de la factura pero no en la factura.\n"
 "Recalcule la factura."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is missing!"
-msgstr "Falta la cuenta crédito del diario"
+msgstr "Falta la cuenta haber del diario."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is the same than the invoice account!"
-msgstr "La cuenta de crédito en el diario es la misma que la cuenta facturada"
+msgstr "La cuenta haber del diario es la misma que la cuenta de la factura."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is missing!"
-msgstr "Falta la cuenta débito del diario"
+msgstr "Falta la cuenta debe del diario."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is the same than the invoice account!"
-msgstr "La cuenta de débito en el diario es la misma que la cuenta facturada"
+msgstr "La cuenta debe del diario es la misma que la cuenta de la factura."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "There is no invoice sequence on the period/fiscal year!"
-msgstr "No hay una secuencia de factura para el período/ejercicio fiscal"
+msgstr "No existe una secuencia de factura para el período/ejercicio fiscal."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not create an invoice\n"
 "with account from a different invoice company!"
 msgstr ""
 "No puede crear una factura\n"
-"con una cuenta de una compañía distinta a la que factura"
+"con una cuenta de una empresa distinta a la que factura."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not modify an invoice that is opened, paid!"
-msgstr "No puede modificar una factura que está abierta o pagada"
+msgstr "No puede modificar una factura que está abierta o pagada."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not reset to draft an invoice that has move!"
-msgstr "No puede poner en borrador una factura que tiene asientos"
+msgstr "No puede poner en borrador una factura que tiene asiento."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not use the same account\n"
 "as on invoice line!"
 msgstr ""
 "No puede usar la misma cuenta\n"
-"que la línea de la factura"
+"que en la línea de la factura."
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the period"
 msgstr ""
 "No puede cambiar la secuencia de una factura si hay una factura abierta en "
-"el período"
+"el período."
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
 msgstr ""
 "Debe usar secuencias distintas de factura por ejercicio fiscal en la misma "
-"empresa"
+"empresa."
 
-msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Secuencia de abono de proveedor"
 
-msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Secuencia de factura de proveedor"
 
-msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Secuencia de abono a cliente"
+msgstr "Secuencia de abono de cliente"
 
-msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr "Secuencia de facturas a cliente"
+msgstr "Secuencia de factura de cliente"
 
-msgctxt "field:account.invoice,account:0"
+msgctxt "field:account.invoice,account:"
 msgid "Account"
 msgstr "Cuenta"
 
-msgctxt "field:account.invoice,accounting_date:0"
+msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
-msgstr "Fecha de contabilización"
+msgstr "Fecha contabilización"
 
-msgctxt "field:account.invoice,amount_to_pay:0"
+msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
-msgstr "Cantidad a pagar"
+msgstr "Importe a pagar"
 
-msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
-msgstr "Cantidad a pagar hoy"
+msgstr "Importe a pagar hoy"
 
-msgctxt "field:account.invoice,comment:0"
+msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Comentario"
 
-msgctxt "field:account.invoice,company:0"
+msgctxt "field:account.invoice,company:"
 msgid "Company"
 msgstr "Empresa"
 
-msgctxt "field:account.invoice,currency:0"
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice,currency:"
 msgid "Currency"
 msgstr "Divisa"
 
-msgctxt "field:account.invoice,currency_date:0"
+msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
-msgstr ""
+msgstr "Fecha divisa"
 
-msgctxt "field:account.invoice,currency_digits:0"
+msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
 msgstr "Decimales de la divisa"
 
-msgctxt "field:account.invoice,description:0"
+msgctxt "field:account.invoice,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice,invoice_address:0"
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
 msgstr "Dirección de facturación"
 
-msgctxt "field:account.invoice,invoice_date:0"
+msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
-msgstr "Fecha de factura"
+msgstr "Fecha factura"
 
-msgctxt "field:account.invoice,invoice_report_cache:0"
+msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
-msgstr ""
+msgstr "Informe factura"
 
-msgctxt "field:account.invoice,invoice_report_format:0"
+msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
-msgstr "Formato del informe de facturación"
+msgstr "Formato del informe de factura"
 
-msgctxt "field:account.invoice,journal:0"
+msgctxt "field:account.invoice,journal:"
 msgid "Journal"
 msgstr "Diario"
 
-msgctxt "field:account.invoice,lines:0"
+msgctxt "field:account.invoice,lines:"
 msgid "Lines"
 msgstr "Líneas"
 
-msgctxt "field:account.invoice,lines_to_pay:0"
+msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Líneas a pagar"
 
-msgctxt "field:account.invoice,move:0"
+msgctxt "field:account.invoice,move:"
 msgid "Move"
 msgstr "Asiento"
 
-msgctxt "field:account.invoice,number:0"
+msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Número"
 
-msgctxt "field:account.invoice,party:0"
+msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Tercero"
 
-msgctxt "field:account.invoice,party_lang:0"
+msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
-msgstr "Idioma del tercero"
+msgstr "Idioma tercero"
 
-msgctxt "field:account.invoice,payment_lines:0"
+msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
 msgstr "Líneas de pago"
 
-msgctxt "field:account.invoice,payment_term:0"
+msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
 msgstr "Plazo de pago"
 
-msgctxt "field:account.invoice,rec_name:0"
+msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice,reconciled:0"
+msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
 msgstr "Conciliado"
 
-msgctxt "field:account.invoice,reference:0"
+msgctxt "field:account.invoice,reference:"
 msgid "Reference"
 msgstr "Referencia"
 
-msgctxt "field:account.invoice,state:0"
+msgctxt "field:account.invoice,state:"
 msgid "State"
 msgstr "Estado"
 
-msgctxt "field:account.invoice,tax_amount:0"
+msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
 msgstr "Impuesto"
 
-msgctxt "field:account.invoice,taxes:0"
+msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
 msgstr "Líneas de impuesto"
 
-msgctxt "field:account.invoice,total_amount:0"
+msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
 msgstr "Total"
 
-msgctxt "field:account.invoice,type:0"
+msgctxt "field:account.invoice,type:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice,type_name:0"
+msgctxt "field:account.invoice,type_name:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice,untaxed_amount:0"
+msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
-msgstr "Sin impuesto"
+msgstr "Base imponible"
+
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
 
-msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:account.invoice-account.move.line,line:0"
+msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
 msgstr "Línea de pago"
 
-msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
 msgstr "Con devolución"
 
-msgctxt "field:account.invoice.line,account:0"
+msgctxt "field:account.invoice.line,account:"
 msgid "Account"
 msgstr "Cuenta"
 
-msgctxt "field:account.invoice.line,amount:0"
+msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
-msgstr "Cantidad"
+msgstr "Importe"
 
-msgctxt "field:account.invoice.line,company:0"
+msgctxt "field:account.invoice.line,company:"
 msgid "Company"
 msgstr "Empresa"
 
-msgctxt "field:account.invoice.line,currency:0"
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
 msgstr "Divisa"
 
-msgctxt "field:account.invoice.line,currency_digits:0"
+msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Decimales de la divisa"
 
-msgctxt "field:account.invoice.line,description:0"
+msgctxt "field:account.invoice.line,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice.line,invoice:0"
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
-msgstr "Impuestos de la factura"
+msgstr "Impuestos de factura"
 
-msgctxt "field:account.invoice.line,invoice_type:0"
+msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
 msgstr "Tipo de factura"
 
-msgctxt "field:account.invoice.line,note:0"
+msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Nota"
 
-msgctxt "field:account.invoice.line,party:0"
+msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Tercero"
 
-msgctxt "field:account.invoice.line,party_lang:0"
+msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
-msgstr "Idioma del tercero"
+msgstr "Idioma tercero"
 
-msgctxt "field:account.invoice.line,product:0"
+msgctxt "field:account.invoice.line,product:"
 msgid "Product"
 msgstr "Producto"
 
-msgctxt "field:account.invoice.line,quantity:0"
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr "Categoría UdM del producto"
+
+msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
 msgstr "Cantidad"
 
-msgctxt "field:account.invoice.line,rec_name:0"
+msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.line,sequence:0"
+msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
 msgstr "Secuencia"
 
-msgctxt "field:account.invoice.line,taxes:0"
+msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
 msgstr "Impuestos"
 
-msgctxt "field:account.invoice.line,type:0"
+msgctxt "field:account.invoice.line,type:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice.line,unit:0"
+msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
 msgstr "Unidad"
 
-msgctxt "field:account.invoice.line,unit_digits:0"
+msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
 msgstr "Decimales de la unidad"
 
-msgctxt "field:account.invoice.line,unit_price:0"
+msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
 msgstr "Precio unitario"
 
-msgctxt "field:account.invoice.line-account.tax,line:0"
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
 msgstr "Línea de factura"
 
-msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
 msgstr "Impuesto"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account:0"
-msgid "Account"
-msgstr "Cuenta"
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr "Cuenta de pérdidas"
+msgstr "Cuenta de desajuste"
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
-msgstr "Cantidad a pagar"
+msgstr "Importe de pago"
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr "Valor de la pérdida"
+msgstr "Importe de desajuste"
 
-msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr "Empresa"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
 msgstr "Divisa de pago"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr "Decimales del pago de divisa"
+msgstr "Decimales divisa de pago"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr "Decimales de la pérdida de divisa"
+msgstr "Decimales divisa de desajuste"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr "Pérdida de divisa"
+msgstr "Divisa de desajuste"
 
-msgctxt "field:account.invoice.pay_invoice.ask,date:0"
-msgid "Date"
-msgstr "Fecha"
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
+msgstr "ID"
 
-msgctxt "field:account.invoice.pay_invoice.ask,description:0"
-msgid "Description"
-msgstr "Descripción"
-
-msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
-msgid "Journal"
-msgstr "Diario"
-
-msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr "Diario de pérdidas"
+msgstr "Diario de desajuste"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr "Líneas"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Líneas a pagar"
 
-msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr "Líneas de pago"
 
-msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
-msgstr "Cantidad"
+msgstr "Importe"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
 msgstr "Divisa"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
 msgstr "Decimales de la divisa"
 
-msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
 msgstr "Fecha"
 
-msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr "Diario"
 
-msgctxt "field:account.invoice.payment_term,active:0"
+msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
 msgstr "Activo"
 
-msgctxt "field:account.invoice.payment_term,description:0"
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice.payment_term,lines:0"
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Líneas"
 
-msgctxt "field:account.invoice.payment_term,name:0"
+msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Plazo de pago"
 
-msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
-msgstr "Cantidad"
+msgstr "Importe"
 
-msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
 msgstr "Divisa"
 
-msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Decimales de la divisa"
 
-msgctxt "field:account.invoice.payment_term.line,days:0"
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr "Día del mes"
+
+msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
 msgstr "Número de días"
 
-msgctxt "field:account.invoice.payment_term.line,delay:0"
-msgid "Condition"
-msgstr "Condición"
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
+msgstr "Divisor"
 
-msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr "Mes"
+
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr "Número de meses"
+
+msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
 msgstr "Plazo de pago"
 
-msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
 msgstr "Porcentaje"
 
-msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
 msgstr "Secuencia"
 
-msgctxt "field:account.invoice.payment_term.line,type:0"
+msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
 msgstr "Tipo"
 
-msgctxt "field:account.invoice.payment_term.line.delay,code:0"
-msgid "Code"
-msgstr "Código"
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
+msgstr "Día de la semana"
 
-msgctxt "field:account.invoice.payment_term.line.delay,name:0"
-msgid "Name"
-msgstr "Nombre"
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
+msgstr "Número de semanas"
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
-msgid "Name"
-msgstr "Nombre"
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
 
-msgctxt "field:account.invoice.payment_term.line.type,code:0"
-msgid "Code"
-msgstr "Código"
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
 
-msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.tax,account:0"
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
 msgstr "Cuenta"
 
-msgctxt "field:account.invoice.tax,amount:0"
+msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
-msgstr "Cantidad"
+msgstr "Importe"
 
-msgctxt "field:account.invoice.tax,base:0"
+msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
 msgstr "Base"
 
-msgctxt "field:account.invoice.tax,base_code:0"
+msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
 msgstr "Código de la base"
 
-msgctxt "field:account.invoice.tax,base_sign:0"
+msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
 msgstr "Signo de la base"
 
-msgctxt "field:account.invoice.tax,description:0"
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "field:account.invoice.tax,invoice:0"
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:account.invoice.tax,manual:0"
+msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
 msgstr "Manual"
 
-msgctxt "field:account.invoice.tax,rec_name:0"
+msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:account.invoice.tax,sequence:0"
+msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
 msgstr "Secuencia"
 
-msgctxt "field:account.invoice.tax,sequence_number:0"
+msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
 msgstr "Número de secuencia"
 
-msgctxt "field:account.invoice.tax,tax:0"
+msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
 msgstr "Impuesto"
 
-msgctxt "field:account.invoice.tax,tax_code:0"
+msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
 msgstr "Código de impuesto"
 
-msgctxt "field:account.invoice.tax,tax_sign:0"
+msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
 msgstr "Signo del impuesto"
 
-msgctxt "field:account.period,in_credit_note_sequence:0"
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
-msgstr "Secuencia del abono de proveedor"
+msgstr "Secuencia de abono de proveedor"
 
-msgctxt "field:account.period,in_invoice_sequence:0"
+msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Secuencia de factura de proveedor"
 
-msgctxt "field:account.period,out_credit_note_sequence:0"
+msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
-msgstr "Secuencia de abono a cliente"
+msgstr "Secuencia de abono de cliente"
 
-msgctxt "field:account.period,out_invoice_sequence:0"
+msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
-msgstr "Secuencia de factura a cliente"
+msgstr "Secuencia de factura de cliente"
 
-msgctxt "field:party.address,invoice:0"
+msgctxt "field:party.address,invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "field:party.party,payment_term:0"
-msgid "Invoice Payment Term"
-msgstr "Plazo de pago de la factura"
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
+msgstr "Plazo de pago del cliente"
 
-msgctxt "field:party.party,supplier_payment_term:0"
+msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
-msgstr "Plazo de pago al proveedor"
+msgstr "Plazo de pago del proveedor"
 
-msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr "Si es cierto, la(s) factura(s) actuales se pagarán."
-
-msgctxt "help:account.invoice.payment_term.line,percentage:0"
-msgid "In %"
-msgstr "En %"
+msgstr "Si está marcada, la factura(s) actual será pagada."
 
-msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
-msgstr "Empleado para ordenar las líneas ascendentemente"
+msgstr "Sirve para ordenar las líneas ascendentemente."
 
-msgctxt "model:account.invoice,name:0"
+msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "model:account.invoice-account.move.line,name:0"
+msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr "Factura - Línea de pago"
 
-msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
-msgstr "Inicializa la factura de crédito"
+msgstr "Inicialización factura abono"
 
-msgctxt "model:account.invoice.line,name:0"
+msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
 msgstr "Línea de factura"
 
-msgctxt "model:account.invoice.line-account.tax,name:0"
+msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
 msgstr "Línea de factura - Impuesto"
 
-msgctxt "model:account.invoice.pay_invoice.ask,name:0"
-msgid "Pay Invoice Ask"
-msgstr "Solicitud de pago de factura"
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
 
-msgctxt "model:account.invoice.pay_invoice.init,name:0"
-msgid "Pay Invoice Init"
-msgstr "Inicializa el pago de factura"
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
 
-msgctxt "model:account.invoice.payment_term,name:0"
+msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Plazo de pago"
 
-msgctxt "model:account.invoice.payment_term.line,name:0"
+msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Línea del plazo de pago"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:0"
-msgid "Payment Term Line Delay"
-msgstr "Linea de retraso del plazo de pago"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
-msgid "End Month"
-msgstr "Final de mes"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
-msgid "Net Days"
-msgstr "Días netos"
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
+msgid "account.invoice.payment_term.line.delay"
+msgstr "Línea de retraso del plazo de pago"
 
-msgctxt "model:account.invoice.payment_term.line.type,name:0"
-msgid "Payment Term Line Type"
+msgctxt "model:account.invoice.payment_term.line.type,name:"
+msgid "account.invoice.payment_term.line.type"
 msgstr "Tipo de línea del plazo de pago"
 
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
-msgid "Fixed"
-msgstr "Fijo"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
-msgid "Percentage"
-msgstr "Porcentaje"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
-msgid "Remainder"
-msgstr "Resto"
-
-msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr "Imprimir informe de aviso de facturas"
+msgstr "Imprimir aviso informe de factura"
 
-msgctxt "model:account.invoice.tax,name:0"
+msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr "Impuesto de factura"
 
@@ -801,7 +928,7 @@ msgstr "Abonos de proveedor"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
 msgid "Draft Supplier Credit Notes"
-msgstr "Borrador de abonos de proveedor"
+msgstr "Abonos de proveedor borrador"
 
 msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
 msgid "Pro Forma Supplier Credit Notes"
@@ -817,7 +944,7 @@ msgstr "Facturas de proveedor"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
 msgid "Draft Supplier Invoices"
-msgstr "Borrador de facturas de proveedor"
+msgstr "Facturas de proveedor borrador"
 
 msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
 msgid "Pro Forma Supplier Invoices"
@@ -863,11 +990,11 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Plazos de pago"
 
-msgctxt "model:ir.action,name:credit_invoice"
+msgctxt "model:ir.action,name:credit"
 msgid "Credit"
-msgstr "Haber"
+msgstr "Abonar"
 
-msgctxt "model:ir.action,name:print_invoice_report"
+msgctxt "model:ir.action,name:print"
 msgid "Invoice"
 msgstr "Factura"
 
@@ -875,7 +1002,7 @@ msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr "Pagar factura"
 
@@ -889,7 +1016,7 @@ msgstr "Todas las facturas"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
 msgid "Supplier Credit Notes"
-msgstr "Abonos del proveedor"
+msgstr "Abonos de proveedor"
 
 msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
 msgid "Draft Supplier Credit Notes"
@@ -963,422 +1090,506 @@ msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
 msgstr "Plazos de pago"
 
-msgctxt "model:workflow,name:invoice_workflow"
-msgid "Invoice workflow"
-msgstr "Flujo de trabajo de la factura"
-
-msgctxt "model:workflow.activity,name:invoice_activity_cancel"
-msgid "Canceled"
-msgstr "Cancelada"
-
-msgctxt "model:workflow.activity,name:invoice_activity_draft"
-msgid "Draft"
-msgstr "Borrador"
-
-msgctxt "model:workflow.activity,name:invoice_activity_open"
-msgid "Open"
-msgstr "Abrir"
-
-msgctxt "model:workflow.activity,name:invoice_activity_paid"
-msgid "Paid"
-msgstr "Pagada"
-
-msgctxt "model:workflow.activity,name:invoice_activity_proforma"
-msgid "Pro forma"
-msgstr "Pro forma"
-
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Amount"
-msgstr "Cantidad"
+msgstr "Importe"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Base"
 msgstr "Base"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
 msgstr "Abono Nº:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date"
 msgstr "Fecha"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr "Fecha:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description"
 msgstr "Descripción"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description:"
 msgstr "Descripción:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
 msgstr "Abono borrador"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
 msgstr "Factura borrador"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
-msgstr "Borrador de abono de proveedor"
+msgstr "Abono de proveedor borrador"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
-msgstr "Borrador de factura de proveedor"
+msgstr "Factura de proveedor borrador"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
 msgstr "Correo electrónico:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
 msgstr "Factura Nº:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Payment Term"
 msgstr "Plazo de pago"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Phone:"
 msgstr "Teléfono:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
 msgstr "Abono pro forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
 msgstr "Factura pro forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
 msgstr "Abono de proveedor pro forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
 msgstr "Factura de proveedor pro forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Cantidad"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Abono de proveedor Nº:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
 msgstr "Factura de proveedor Nº:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Tax"
 msgstr "Impuesto"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes"
 msgstr "Impuestos"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes:"
 msgstr "Impuestos:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
 msgstr "Total (sin impuestos):"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total:"
 msgstr "Total:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Unit Price"
-msgstr "Precio"
+msgstr "Precio unidad"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
-msgstr ""
+msgstr "NIF:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "NIF:"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Cancelada"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Draft"
 msgstr "Borrador"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Opened"
 msgstr "Abierta"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Pagada"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
 msgstr "Pro forma"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
 msgstr "Abono"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
-msgstr "Abono del proveedor"
+msgstr "Abono de proveedor"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr "Factura de proveedor"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Abono"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
 msgstr "Abono de proveedor"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
 msgstr "Factura de proveedor"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr "Comentario"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
 msgstr "Línea"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
 msgstr "Subtotal"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
 msgstr "Título"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
 msgstr "Pago parcial"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
-msgstr "Pérdida"
+msgstr "Desajuste"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr "Abril"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr "Agosto"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr "Diciembre"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr "Febrero"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr "Enero"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr "Julio"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr "Junio"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr "Marzo"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr "Mayo"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr "Noviembre"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr "Octubre"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr "Septiembre"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr "Fijo"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr "Porcentaje sobre remanente"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr "Porcentaje sobre total"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr "Remanente"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr "Viernes"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr "Lunes"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr "Sábado"
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr "Domingo"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr "Jueves"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr "Martes"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr "Miércoles"
+
+msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr "¿Está seguro que quiere devolver esta/estas factura(s)?"
+msgstr "¿Está seguro de abonar esta/s factura/s?"
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr "Factura crédito"
+msgstr "Factura abono"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "General"
 msgstr "General"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
 msgstr "Línea de factura"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
 msgstr "Líneas de factura"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notas"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Products"
 msgstr "Productos"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Amount Second Currency"
-msgstr "Cantidad en la divisa secundaria"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Credit"
-msgstr "Haber"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Debit"
-msgstr "Debe"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Lines to Pay"
-msgstr "Líneas a pagar"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgctxt "view:account.invoice.pay.ask:"
 msgid "Pay Invoice"
 msgstr "Pagar factura"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Payment Lines"
-msgstr "Líneas de pago"
-
-msgctxt "view:account.invoice.pay_invoice.init:0"
+msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
 msgstr "Pagar factura"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
+msgstr "Línea del plazo de pago"
+
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
+msgstr "Líneas del plazo de pago"
+
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
 msgstr "Plazo de pago"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Line"
 msgstr "Línea del plazo de pago"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Lines"
 msgstr "Líneas del plazo de pago"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Plazos de pago"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
-msgid "<b>Warning!</b>"
-msgstr "<b>Atención</b>"
-
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
 msgstr "Imprimir factura"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
-msgstr "Las facturas se enviarán <i>directamente</i> a la impresora."
+msgstr "Las facturas serán enviadas <i>directamente</i> a la impresora."
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
-msgstr "Ha elegido más de una factura para imprimir."
+msgstr "Ha seleccionado más de una factura para imprimir."
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
 msgstr "Impuesto de la factura"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
 msgstr "Impuestos de la factura"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr "Código de impuesto"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
-msgstr "Cantidad en la divisa secundaria"
+msgstr "Importe divisa secundaria"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Credit"
 msgstr "Haber"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Debit"
 msgstr "Debe"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr "Factura"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoices"
 msgstr "Facturas"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Lines"
 msgstr "Líneas"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Información adicional"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Pago"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment Lines"
 msgstr "Líneas de pago"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
 msgstr "Pro for_ma"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Taxes"
 msgstr "Impuestos"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Cancel"
 msgstr "_Cancelar"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Draft"
 msgstr "_Borrador"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Open"
 msgstr "_Abrir"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Pagar"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Reset to Draft"
 msgstr "_Restablecer a borrador"
 
-msgctxt "view:party.party:0"
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr "Importe divisa secundaria"
+
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr "Haber"
+
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr "Debe"
+
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr "Líneas a pagar"
+
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr "Líneas de pago"
+
+msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr "Plazos de pago"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
-msgstr "Haber"
+msgstr "Abonar"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
 msgstr "Aceptar"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
 msgstr "Aceptar"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
 msgstr "Imprimir"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index eb507e6..f1d4676 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -2,7 +2,7 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
@@ -10,38 +10,70 @@ msgstr ""
 "Vous ne pouvez pas changer la séquence de facture si il y a déjà une facture"
 " ouverte dans l'année fiscale"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+"Vous ne pouvez pas changer la séquence de facture si il y a déjà une facture"
+" ouverte dans l'année fiscale"
+
+msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
 msgstr ""
 "Vous devez utiliser des séquences de facture différentes par année fiscale !"
 
-msgctxt "error:account.invoice.credit_invoice:0"
-msgid "You can not credit with refund an invoice that is not opened!"
+msgctxt "error:account.fiscalyear:"
+msgid "You must have different invoice sequences per fiscal year!"
 msgstr ""
-"Vous ne pouvez pas créditer avec un remboursement une facture qui n'est pas "
-"ouverte !"
+"Vous devez utiliser des séquences de facture différentes par année fiscale !"
+
+msgctxt "error:account.invoice.credit:"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr "Vous ne pouvez créer un remboursement sur une facture non-ouverte"
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
 msgstr ""
-"Vous ne pouvez pas créditer avec un remboursement une facture avec paiements"
-" !"
+"Vous ne pouvez créer un remboursement sur une facture avec des paiements"
+
+msgctxt "error:account.invoice.line:"
+msgid "Line with \"line\" type must have an account!"
+msgstr "Ligne de type \"ligne\" doit avoir un compte !"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account!"
 msgstr "Ligne de type \"ligne\" doit avoir un compte !"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice!"
 msgstr "Ligne sans type \"ligne\" doit avoir une facture !"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr "Ligne sans type \"ligne\" doit avoir une facture !"
+
+msgctxt "error:account.invoice.line:"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée "
+"our annulée !"
+
+msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée "
 "our annulée !"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+"Vous ne pouvez pas créer de ligne de facture\n"
+"avec un compte d'une différente société que celle de la  facture !"
+
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line\n"
 "with account with a different invoice company!"
@@ -49,13 +81,19 @@ msgstr ""
 "Vous ne pouvez pas créer de ligne de facture\n"
 "avec un compte d'une différente société que celle de la  facture !"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
 msgstr ""
 "Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte ou payée "
 "!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr ""
+"Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte ou payée "
+"!"
+
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not use the same account\n"
 "as on the invoice!"
@@ -63,43 +101,79 @@ msgstr ""
 "Vous ne pouvez pas utilier le même compte\n"
 "que celui de la factiure !"
 
-msgctxt "error:account.invoice.pay_invoice:0"
+msgctxt "error:account.invoice.line:"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+"Vous ne pouvez pas utilier le même compte\n"
+"que celui de la factiure !"
+
+msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
 msgstr ""
-"Vous ne pouvez pas créer un paiement partiel dont le montant est supérieur "
-"au montant qu'il reste à payer !"
+"Vous ne pouvez créer un paiemet partiel avec un montant plus grand que le "
+"montant à payer"
 
-msgctxt "error:account.invoice.payment_term.line.delay:0"
-msgid "The code must be unique!"
-msgstr "Le code doit être unique !"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
+msgstr "Le jour du mois doit être entre 1 et 31"
 
-msgctxt "error:account.invoice.payment_term.line.type:0"
-msgid "The code must be unique!"
-msgstr "Le code doit être unique !"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
+msgstr "Pourcentage et diviseur ne sont pas cohérent"
+
+msgctxt "error:account.invoice.payment_term:"
+msgid "Invalid payment term line!"
+msgstr "Ligne de condition de paiement non-valide !"
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
 msgstr "Ligne de condition de paiement non-valide !"
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Payment term missing a remainder line!"
 msgstr "La condition de paiement manque une ligne de reste !"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.payment_term:"
+msgid "Payment term missing a remainder line!"
+msgstr "La condition de paiement manque une ligne de reste !"
+
+msgctxt "error:account.invoice.tax:"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou"
+" annulée !"
+
+msgctxt "error:account.invoice.tax:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou"
 " annulée !"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
 msgstr ""
 "Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte ou payée"
 " !"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice.tax:"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr ""
+"Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte ou payée"
+" !"
+
+msgctxt "error:account.invoice:"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Le montant de base des taxes sont différents des lignes de facture !\n"
+"Re-calculez la facture."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Base taxes different from invoice lines!\n"
 "Re-compute the invoice."
@@ -107,7 +181,19 @@ msgstr ""
 "Le montant de base des taxes sont différents des lignes de facture !\n"
 "Re-calculez la facture."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgstr "La facture \"%s\" doit être annulée avant suppression"
+
+msgctxt "error:account.invoice:"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Des taxes sont définies mais pas sur les lignes de facture !\n"
+"Re-calculez la facture."
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
@@ -115,7 +201,7 @@ msgstr ""
 "Des taxes sont définies mais pas sur les lignes de facture !\n"
 "Re-calculez la facture."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined on invoice lines but not on invoice!\n"
 "Re-compute the invoice."
@@ -123,29 +209,59 @@ msgstr ""
 "Des taxes sont définies sur les lignes de facture mais pas sur la facture !\n"
 "Re-calculez la facture."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+"Des taxes sont définies sur les lignes de facture mais pas sur la facture !\n"
+"Re-calculez la facture."
+
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is missing!"
 msgstr "Le compte de crédit sur le journal est manquant !"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "The credit account on journal is missing!"
+msgstr "Le compte de crédit sur le journal est manquant !"
+
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is the same than the invoice account!"
 msgstr ""
 "Le compte de crébit sur le journal est le même que le compte de la facture !"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr ""
+"Le compte de crébit sur le journal est le même que le compte de la facture !"
+
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is missing!"
 msgstr "Le compte de débit sur le journal est manquant !"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "The debit account on journal is missing!"
+msgstr "Le compte de débit sur le journal est manquant !"
+
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is the same than the invoice account!"
 msgstr ""
 "Le compte de débit sur le journal est le même que le compte de la facture !"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr ""
+"Le compte de débit sur le journal est le même que le compte de la facture !"
+
+msgctxt "error:account.invoice:"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr "Il n'y a pas de séquence de facture sur la période/année fiscale !"
+
+msgctxt "error:account.invoice:"
 msgid "There is no invoice sequence on the period/fiscal year!"
 msgstr "Il n'y a pas de séquence de facture sur la période/année fiscale !"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not create an invoice\n"
 "with account from a different invoice company!"
@@ -153,16 +269,33 @@ msgstr ""
 "Vous ne pouvez pas créer une facture\n"
 "avec un compte d'une société de facturation différente !"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+"Vous ne pouvez pas créer une facture\n"
+"avec un compte d'une société de facturation différente !"
+
+msgctxt "error:account.invoice:"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr "Vous ne pouvez pas modifier une facture qui est ouverte ou payée !"
+
+msgctxt "error:account.invoice:"
 msgid "You can not modify an invoice that is opened, paid!"
 msgstr "Vous ne pouvez pas modifier une facture qui est ouverte ou payée !"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr ""
+"Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !"
+
+msgctxt "error:account.invoice:"
 msgid "You can not reset to draft an invoice that has move!"
 msgstr ""
 "Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not use the same account\n"
 "as on invoice line!"
@@ -170,7 +303,15 @@ msgstr ""
 "Vous ne pouvez pas utiliser le même compte\n"
 "que sur la ligne de facture !"
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.invoice:"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+"Vous ne pouvez pas utiliser le même compte\n"
+"que sur la ligne de facture !"
+
+msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the period"
@@ -178,7 +319,23 @@ msgstr ""
 "Vous ne pouvez pas changer la séquence de facture s'il y a déjà une facture "
 "ouverte dans la période"
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+"Vous ne pouvez pas changer la séquence de facture s'il y a déjà une facture "
+"ouverte dans la période"
+
+msgctxt "error:account.period:"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+"Vous devez avoir des séquences de facture différentes par année fiscale et "
+"dans la même société !"
+
+msgctxt "error:account.period:"
 msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
@@ -186,616 +343,735 @@ msgstr ""
 "Vous devez avoir des séquences de facture différentes par année fiscale et "
 "dans la même société !"
 
-msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Séquence des notes de crédit fournisseur"
 
-msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Séquence de facture fournisseur"
 
-msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Séquence des notes de crédit client"
 
-msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Séquence de facture client"
 
-msgctxt "field:account.invoice,account:0"
+msgctxt "field:account.invoice,account:"
 msgid "Account"
 msgstr "Compte"
 
-msgctxt "field:account.invoice,accounting_date:0"
+msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
 msgstr "Date comptable"
 
-msgctxt "field:account.invoice,amount_to_pay:0"
+msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
 msgstr "Montant à payer"
 
-msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Montant à payer aujourd'hui"
 
-msgctxt "field:account.invoice,comment:0"
+msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Commentaire"
 
-msgctxt "field:account.invoice,company:0"
+msgctxt "field:account.invoice,company:"
 msgid "Company"
 msgstr "Société"
 
-msgctxt "field:account.invoice,currency:0"
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.invoice,currency:"
 msgid "Currency"
 msgstr "Devise"
 
-msgctxt "field:account.invoice,currency_date:0"
+msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
 msgstr "Date du taux de change"
 
-msgctxt "field:account.invoice,currency_digits:0"
+msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
 msgstr "Décimales de la devise"
 
-msgctxt "field:account.invoice,description:0"
+msgctxt "field:account.invoice,description:"
 msgid "Description"
 msgstr "Description"
 
-msgctxt "field:account.invoice,invoice_address:0"
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
 msgstr "Adresse de facturation"
 
-msgctxt "field:account.invoice,invoice_date:0"
+msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
 msgstr "Date de facturation"
 
-msgctxt "field:account.invoice,invoice_report_cache:0"
+msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
 msgstr "Rapport de facture"
 
-msgctxt "field:account.invoice,invoice_report_format:0"
+msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
 msgstr "Format du rapport de facturation"
 
-msgctxt "field:account.invoice,journal:0"
+msgctxt "field:account.invoice,journal:"
 msgid "Journal"
 msgstr "Journal"
 
-msgctxt "field:account.invoice,lines:0"
+msgctxt "field:account.invoice,lines:"
 msgid "Lines"
 msgstr "Lignes"
 
-msgctxt "field:account.invoice,lines_to_pay:0"
+msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Lignes à payer"
 
-msgctxt "field:account.invoice,move:0"
+msgctxt "field:account.invoice,move:"
 msgid "Move"
 msgstr "Mouvement"
 
-msgctxt "field:account.invoice,number:0"
+msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Numéro"
 
-msgctxt "field:account.invoice,party:0"
+msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Tiers"
 
-msgctxt "field:account.invoice,party_lang:0"
+msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
 msgstr "Langue du tiers"
 
-msgctxt "field:account.invoice,payment_lines:0"
+msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
 msgstr "Lignes de paiement"
 
-msgctxt "field:account.invoice,payment_term:0"
+msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
 msgstr "Condition de paiement"
 
-msgctxt "field:account.invoice,rec_name:0"
+msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:account.invoice,reconciled:0"
+msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
 msgstr "Réconcilié"
 
-msgctxt "field:account.invoice,reference:0"
+msgctxt "field:account.invoice,reference:"
 msgid "Reference"
 msgstr "Référence"
 
-msgctxt "field:account.invoice,state:0"
+msgctxt "field:account.invoice,state:"
 msgid "State"
 msgstr "État"
 
-msgctxt "field:account.invoice,tax_amount:0"
+msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
 msgstr "Taxe"
 
-msgctxt "field:account.invoice,taxes:0"
+msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
 msgstr "Lignes de taxe"
 
-msgctxt "field:account.invoice,total_amount:0"
+msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
 msgstr "Total"
 
-msgctxt "field:account.invoice,type:0"
+msgctxt "field:account.invoice,type:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice,type_name:0"
+msgctxt "field:account.invoice,type_name:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice,untaxed_amount:0"
+msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
 msgstr "Hors taxe"
 
-msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "field:account.invoice-account.move.line,line:0"
+msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
 msgstr "Ligne de paiement"
 
-msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
-msgstr "Avec remboursement"
+msgstr "Avec note de crédit"
 
-msgctxt "field:account.invoice.line,account:0"
+msgctxt "field:account.invoice.line,account:"
 msgid "Account"
 msgstr "Compte"
 
-msgctxt "field:account.invoice.line,amount:0"
+msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
 msgstr "Montant"
 
-msgctxt "field:account.invoice.line,company:0"
+msgctxt "field:account.invoice.line,company:"
 msgid "Company"
 msgstr "Société"
 
-msgctxt "field:account.invoice.line,currency:0"
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
 msgstr "Devise"
 
-msgctxt "field:account.invoice.line,currency_digits:0"
+msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Décimales de la devise"
 
-msgctxt "field:account.invoice.line,description:0"
+msgctxt "field:account.invoice.line,description:"
 msgid "Description"
 msgstr "Description"
 
-msgctxt "field:account.invoice.line,invoice:0"
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
 msgstr "Taxes de le facture"
 
-msgctxt "field:account.invoice.line,invoice_type:0"
+msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
 msgstr "Type de facture"
 
-msgctxt "field:account.invoice.line,note:0"
+msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Note"
 
-msgctxt "field:account.invoice.line,party:0"
+msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Tiers"
 
-msgctxt "field:account.invoice.line,party_lang:0"
+msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
 msgstr "Langue du tiers"
 
-msgctxt "field:account.invoice.line,product:0"
+msgctxt "field:account.invoice.line,product:"
 msgid "Product"
 msgstr "Produit"
 
-msgctxt "field:account.invoice.line,quantity:0"
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr "Catégorie d'unité de mesure"
+
+msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
 msgstr "Quantité"
 
-msgctxt "field:account.invoice.line,rec_name:0"
+msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:account.invoice.line,sequence:0"
+msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
 msgstr "Séquence"
 
-msgctxt "field:account.invoice.line,taxes:0"
+msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
 msgstr "Taxes"
 
-msgctxt "field:account.invoice.line,type:0"
+msgctxt "field:account.invoice.line,type:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice.line,unit:0"
+msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
 msgstr "Unité"
 
-msgctxt "field:account.invoice.line,unit_digits:0"
+msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
 msgstr "Décimales de l'unité"
 
-msgctxt "field:account.invoice.line,unit_price:0"
+msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
 msgstr "Prix unitaire"
 
-msgctxt "field:account.invoice.line-account.tax,line:0"
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
 msgstr "Ligne de facture"
 
-msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
 msgstr "Taxe"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account:0"
-msgid "Account"
-msgstr "Compte"
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
 msgstr "Compte de pertes et profits"
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
-msgstr "Montant"
+msgstr "Montant du paiement"
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr "Montant de pertes et profits"
+msgstr "Compte de pertes et profits"
 
-msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr "Société"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
-msgstr "Devise"
+msgstr "Devise du paiement"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr "Décimales de la devise"
+msgstr "Unité de la devise du paiement"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
 msgstr "Décimales de la devise de pertes et profits"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr "Devise pertes et profits"
+msgstr "Devise de pertes et profits"
 
-msgctxt "field:account.invoice.pay_invoice.ask,date:0"
-msgid "Date"
-msgstr "Date"
-
-msgctxt "field:account.invoice.pay_invoice.ask,description:0"
-msgid "Description"
-msgstr "Description"
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
+msgstr "ID"
 
-msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
-msgid "Journal"
-msgstr "Journal"
-
-msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr "Journal"
+msgstr "Journal de pertes et profits"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr "Lignes"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Lignes à payer"
 
-msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr "Lignes de paiement"
 
-msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
 msgstr "Montant"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
 msgstr "Devise"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
 msgstr "Décimales de la devise"
 
-msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
-msgstr "date"
+msgstr "Date"
 
-msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
 msgstr "Description"
 
-msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr "Journal"
 
-msgctxt "field:account.invoice.payment_term,active:0"
+msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
 msgstr "Actif"
 
-msgctxt "field:account.invoice.payment_term,description:0"
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
 msgstr "Description"
 
-msgctxt "field:account.invoice.payment_term,lines:0"
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Lignes"
 
-msgctxt "field:account.invoice.payment_term,name:0"
+msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Condition de paiement"
 
-msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
 msgstr "Montant"
 
-msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
 msgstr "Devise"
 
-msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Décimales de la devise"
 
-msgctxt "field:account.invoice.payment_term.line,days:0"
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr "Jour du mois"
+
+msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
 msgstr "Nombre de jours"
 
-msgctxt "field:account.invoice.payment_term.line,delay:0"
-msgid "Condition"
-msgstr "Condition"
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
+msgstr "Diviseur"
+
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr "ID"
 
-msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr "Mois"
+
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr "Bombre de mois"
+
+msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
 msgstr "Condition de paiement"
 
-msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
 msgstr "Pourcentage"
 
-msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
 msgstr "Séquence"
 
-msgctxt "field:account.invoice.payment_term.line,type:0"
+msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice.payment_term.line.delay,code:0"
-msgid "Code"
-msgstr "Code"
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
+msgstr "Jour de la semaine"
 
-msgctxt "field:account.invoice.payment_term.line.delay,name:0"
-msgid "Name"
-msgstr "Nom"
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
+msgstr "Nombre de semaines"
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
-msgid "Name"
-msgstr "Nom"
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
 
-msgctxt "field:account.invoice.payment_term.line.type,code:0"
-msgid "Code"
-msgstr "Code"
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
 
-msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:account.invoice.tax,account:0"
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
 msgstr "Compte"
 
-msgctxt "field:account.invoice.tax,amount:0"
+msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
 msgstr "Montant"
 
-msgctxt "field:account.invoice.tax,base:0"
+msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
 msgstr "Base"
 
-msgctxt "field:account.invoice.tax,base_code:0"
+msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
 msgstr "Code de base"
 
-msgctxt "field:account.invoice.tax,base_sign:0"
+msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
 msgstr "Signe de base"
 
-msgctxt "field:account.invoice.tax,description:0"
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
 msgstr "Description"
 
-msgctxt "field:account.invoice.tax,invoice:0"
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "field:account.invoice.tax,manual:0"
+msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
 msgstr "Manuel"
 
-msgctxt "field:account.invoice.tax,rec_name:0"
+msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:account.invoice.tax,sequence:0"
+msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
 msgstr "Séquence"
 
-msgctxt "field:account.invoice.tax,sequence_number:0"
+msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
 msgstr "Numéro de séquence"
 
-msgctxt "field:account.invoice.tax,tax:0"
+msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
 msgstr "Taxe"
 
-msgctxt "field:account.invoice.tax,tax_code:0"
+msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
 msgstr "Code de taxe"
 
-msgctxt "field:account.invoice.tax,tax_sign:0"
+msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
 msgstr "Signe de taxe"
 
-msgctxt "field:account.period,in_credit_note_sequence:0"
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Séquence des notes de crédit fournisseur"
 
-msgctxt "field:account.period,in_invoice_sequence:0"
+msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Séquence de facture fournisseur"
 
-msgctxt "field:account.period,out_credit_note_sequence:0"
+msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Séquence des notes de crédit client"
 
-msgctxt "field:account.period,out_invoice_sequence:0"
+msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Séquence de facture client"
 
-msgctxt "field:party.address,invoice:0"
+msgctxt "field:party.address,invoice:"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "field:party.party,payment_term:0"
-msgid "Invoice Payment Term"
-msgstr "Conditions de paiement du client"
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
+msgstr "Condition de paiement client"
 
-msgctxt "field:party.party,supplier_payment_term:0"
+msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
 msgstr "Conditions de paiement du fournisseur"
 
-msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr "Si vrai, les factures seront payées."
-
-msgctxt "help:account.invoice.payment_term.line,percentage:0"
-msgid "In %"
-msgstr "En %"
+msgstr "Si vrai, les facture courantes seront payées"
 
-msgctxt "help:account.invoice.payment_term.line,sequence:0"
+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.invoice,name:0"
+msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "model:account.invoice-account.move.line,name:0"
+msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr "Facture - Ligne de paiement"
 
-msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
-msgstr "Crediter la facture - Init"
+msgstr "Créer les demandes d'achat - Initialisation"
 
-msgctxt "model:account.invoice.line,name:0"
+msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
 msgstr "Ligne de Facture"
 
-msgctxt "model:account.invoice.line-account.tax,name:0"
+msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
 msgstr "Ligne de facture - Taxe"
 
-msgctxt "model:account.invoice.pay_invoice.ask,name:0"
-msgid "Pay Invoice Ask"
-msgstr "Payer la facture - Demande"
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
+msgstr "payer la facture"
 
-msgctxt "model:account.invoice.pay_invoice.init,name:0"
-msgid "Pay Invoice Init"
-msgstr "Payer la facture - Init"
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
+msgstr "payer la facture"
 
-msgctxt "model:account.invoice.payment_term,name:0"
+msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Conditions de paiement"
 
-msgctxt "model:account.invoice.payment_term.line,name:0"
+msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Ligne de condition de paiement"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:0"
-msgid "Payment Term Line Delay"
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
+msgid "account.invoice.payment_term.line.delay"
 msgstr "Délai de ligne de condition de paiement"
 
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
-msgid "End Month"
-msgstr "fin du mois"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
-msgid "Net Days"
-msgstr "Jours"
-
-msgctxt "model:account.invoice.payment_term.line.type,name:0"
-msgid "Payment Term Line Type"
+msgctxt "model:account.invoice.payment_term.line.type,name:"
+msgid "account.invoice.payment_term.line.type"
 msgstr "Type de line de condition de paiement"
 
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
-msgid "Fixed"
-msgstr "Fixe"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
-msgid "Percentage"
-msgstr "Pourcentage"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
-msgid "Remainder"
-msgstr "Reste"
-
-msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr "Imprimer de la factures - Avertissement"
+msgstr "Avertissement impression facture"
 
-msgctxt "model:account.invoice.tax,name:0"
+msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr "Tax de facture"
 
@@ -875,11 +1151,11 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Conditions de paiement"
 
-msgctxt "model:ir.action,name:credit_invoice"
+msgctxt "model:ir.action,name:credit"
 msgid "Credit"
 msgstr "Crédit"
 
-msgctxt "model:ir.action,name:print_invoice_report"
+msgctxt "model:ir.action,name:print"
 msgid "Invoice"
 msgstr "Facture"
 
@@ -887,9 +1163,9 @@ msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
-msgstr "Payer facture"
+msgstr "payer la facture"
 
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
@@ -975,426 +1251,774 @@ msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
 msgstr "Conditions de paiement"
 
-msgctxt "model:workflow,name:invoice_workflow"
-msgid "Invoice workflow"
-msgstr "Workflow facture"
-
-msgctxt "model:workflow.activity,name:invoice_activity_cancel"
-msgid "Canceled"
-msgstr "Annulé"
-
-msgctxt "model:workflow.activity,name:invoice_activity_draft"
-msgid "Draft"
-msgstr "Brouillon"
-
-msgctxt "model:workflow.activity,name:invoice_activity_open"
-msgid "Open"
-msgstr "Ouvert"
-
-msgctxt "model:workflow.activity,name:invoice_activity_paid"
-msgid "Paid"
-msgstr "Payé"
-
-msgctxt "model:workflow.activity,name:invoice_activity_proforma"
-msgid "Pro forma"
-msgstr "Pro forma"
+msgctxt "odt:account.invoice:"
+msgid "Amount"
+msgstr "Montant"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Montant"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Base"
 msgstr "Base"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
 msgstr "N° de note de crédit :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Credit Note N°:"
+msgstr "N° de note de crédit :"
+
+msgctxt "odt:account.invoice:"
+msgid "Date"
+msgstr "Date"
+
+msgctxt "odt:account.invoice:"
 msgid "Date"
 msgstr "Date"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Date:"
+msgstr "Date :"
+
+msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr "Date :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "odt:account.invoice:"
 msgid "Description"
 msgstr "Description"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description:"
 msgstr "Description :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Description:"
+msgstr "Description :"
+
+msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
 msgstr "Note de crédit brouillon"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Draft Credit Note"
+msgstr "Note de crédit brouillon"
+
+msgctxt "odt:account.invoice:"
+msgid "Draft Invoice"
+msgstr "Facture brouillon"
+
+msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
 msgstr "Facture brouillon"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Draft Supplier Credit Note"
+msgstr "Note de crédit fournisseur brouillon"
+
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
 msgstr "Note de crédit fournisseur brouillon"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Draft Supplier Invoice"
+msgstr "Facture fournisseur brouillon"
+
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
 msgstr "Facture fournisseur brouillon"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
 msgstr "E-Mail:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "E-Mail:"
+msgstr "E-Mail:"
+
+msgctxt "odt:account.invoice:"
+msgid "Invoice N°:"
+msgstr "N° de facture :"
+
+msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
 msgstr "N° de facture :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Payment Term"
 msgstr "Condition de paiement"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Payment Term"
+msgstr "Condition de paiement"
+
+msgctxt "odt:account.invoice:"
+msgid "Phone:"
+msgstr "Téléphone"
+
+msgctxt "odt:account.invoice:"
 msgid "Phone:"
 msgstr "Téléphone"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
 msgstr "Note de crédit pro forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Credit Note"
+msgstr "Note de crédit pro forma"
+
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
 msgstr "Facture pro forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Invoice"
+msgstr "Facture pro forma"
+
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
 msgstr "Note de crédit fournisseur pro forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Supplier Credit Note"
+msgstr "Note de crédit fournisseur pro forma"
+
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
 msgstr "Facture fournisseur pro forma"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Pro forma Supplier Invoice"
+msgstr "Facture fournisseur pro forma"
+
+msgctxt "odt:account.invoice:"
+msgid "Quantity"
+msgstr "Quantité"
+
+msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Quantité"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "N° de note de crédit fournisseur :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Supplier Credit Note N°:"
+msgstr "N° de note de crédit fournisseur :"
+
+msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
 msgstr "N° de facture fournisseur :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Supplier Invoice N°:"
+msgstr "N° de facture fournisseur :"
+
+msgctxt "odt:account.invoice:"
 msgid "Tax"
 msgstr "Taxe"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Tax"
+msgstr "Taxe"
+
+msgctxt "odt:account.invoice:"
+msgid "Taxes"
+msgstr "Taxes"
+
+msgctxt "odt:account.invoice:"
 msgid "Taxes"
 msgstr "Taxes"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Taxes:"
+msgstr "Taxes :"
+
+msgctxt "odt:account.invoice:"
 msgid "Taxes:"
 msgstr "Taxes :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
 msgstr "Total (hors-taxes) :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Total (excl. taxes):"
+msgstr "Total (hors-taxes) :"
+
+msgctxt "odt:account.invoice:"
 msgid "Total:"
 msgstr "Total :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Total:"
+msgstr "Total :"
+
+msgctxt "odt:account.invoice:"
 msgid "Unit Price"
 msgstr "Prix unitaire"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "Unit Price"
+msgstr "Prix unitaire"
+
+msgctxt "odt:account.invoice:"
+msgid "VAT Number:"
+msgstr "Numéro TVA :"
+
+msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
 msgstr "Numéro TVA :"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
+msgid "VAT:"
+msgstr "TVA :"
+
+msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "TVA :"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Annulé"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
+msgid "Canceled"
+msgstr "Annulé"
+
+msgctxt "selection:account.invoice,state:"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt "selection:account.invoice,state:"
 msgid "Draft"
 msgstr "Brouillon"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
+msgid "Opened"
+msgstr "Ouvert"
+
+msgctxt "selection:account.invoice,state:"
 msgid "Opened"
 msgstr "Ouvert"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
+msgid "Paid"
+msgstr "Payée"
+
+msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Payée"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
 msgstr "Pro forma"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,state:"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Credit Note"
+msgstr "Note de crédit"
+
+msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
 msgstr "Note de crédit"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "selection:account.invoice,type:"
+msgid "Supplier Credit Note"
+msgstr "Note de crédit fournisseur"
+
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
 msgstr "Note de crédit fournisseur"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
+msgid "Supplier Invoice"
+msgstr "Facture fournisseur"
+
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr "Facture fournisseur"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Note de crédit"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Credit Note"
+msgstr "Note de crédit"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
 msgstr "Note de crédit fournisseur"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Supplier Credit Note"
+msgstr "Note de crédit fournisseur"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
+msgid "Supplier Invoice"
+msgstr "Facture fournisseur"
+
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
 msgstr "Facture fournisseur"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
+msgid "Comment"
+msgstr "Commentaire"
+
+msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr "Commentaire"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
 msgstr "Ligne"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
+msgid "Line"
+msgstr "Ligne"
+
+msgctxt "selection:account.invoice.line,type:"
+msgid "Subtotal"
+msgstr "Sous-total"
+
+msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
 msgstr "Sous-total"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
 msgstr "Titre"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.line,type:"
+msgid "Title"
+msgstr "Titre"
+
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
 msgstr "Paiement partiel"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
 msgstr "Pertes et profits"
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr "Avril"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr "Août"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr "Décembre"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr "Février"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr "Janvier"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr "Juillet"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr "Juin"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr "Mars"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr "Mai"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr "Novembre"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr "Octobre"
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr "Septembre"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr "Fixe"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr "Pourcentage du reste"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr "Pourcentage du total"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr "Reste"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr "Vendredi"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr "Lundi"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr "Samedi"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr "Dimanche"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr "Jeudi"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr "Mardi"
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr "Mercredi"
+
+msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr "Etes-vous sûr de vouloir créditer cette/ces factures ?"
+msgstr "Etes-vous sûr de créditer ces factures ?"
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr "Facture de crédit"
+msgstr "Créer les demandes d'achat"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "General"
 msgstr "Général"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
 msgstr "Ligne de facture"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
+msgid "Invoice Line"
+msgstr "Ligne de facture"
+
+msgctxt "view:account.invoice.line:"
+msgid "Invoice Lines"
+msgstr "Lignes de facture"
+
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
 msgstr "Lignes de facture"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
+msgid "Notes"
+msgstr "Notes"
+
+msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Notes"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Products"
 msgstr "Produits"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Amount Second Currency"
-msgstr "Montant en devise secondaire"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Credit"
-msgstr "Crédit"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Debit"
-msgstr "Débit"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Lines to Pay"
-msgstr "Lignes à payer"
+msgctxt "view:account.invoice.pay.ask:"
+msgid "Pay Invoice"
+msgstr "payer la facture"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
-msgstr "Payer la facture"
+msgstr "payer la facture"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Payment Lines"
-msgstr "Lignes de paiement"
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
+msgstr "Ligne de condition de paiement"
 
-msgctxt "view:account.invoice.pay_invoice.init:0"
-msgid "Pay Invoice"
-msgstr "Payer la facture"
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
+msgstr "Lignes de condition de paiement"
+
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Term"
+msgstr "Conditions de paiement"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
 msgstr "Conditions de paiement"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Line"
 msgstr "Ligne de condition de paiement"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Lines"
 msgstr "Lignes de condition de paiement"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Conditions de paiement"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
-msgid "<b>Warning!</b>"
-msgstr "<b>Attention!</b>"
+msgctxt "view:account.invoice.payment_term:"
+msgid "Payment Terms"
+msgstr "Conditions de paiement"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
 msgstr "Imprimer la facture"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
-msgstr "Les factures seront envoyées <i>directement</i> à l'imprimante."
+msgstr "Les factures seront envoyées  <i>directement </i> à l'imprimente"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
-msgstr "Vous avez sélectionné plus d'une facture à imprimer."
+msgstr "Vous avez sélectionné plus d'une facture pour imprimer"
+
+msgctxt "view:account.invoice.tax:"
+msgid "Invoice Tax"
+msgstr "Taxes de le facture"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
 msgstr "Taxes de le facture"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
+msgid "Invoice Taxes"
+msgstr "Taxes de le facture"
+
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
 msgstr "Taxes de le facture"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr "Code de taxe"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice.tax:"
+msgid "Tax Code"
+msgstr "Code de taxe"
+
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr "Taxes"
+
+msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
 msgstr "Montant de devise secondaire"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Credit"
 msgstr "Crédit"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Debit"
 msgstr "Débit"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr "Facture"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "view:account.invoice:"
 msgid "Invoices"
 msgstr "Factures"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Lines"
 msgstr "Lignes"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
+msgid "Other Info"
+msgstr "Autre information"
+
+msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Autre information"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Paiement"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
+msgid "Payment"
+msgstr "Paiement"
+
+msgctxt "view:account.invoice:"
 msgid "Payment Lines"
 msgstr "Lignes de paiement"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
 msgstr "Pro For_ma"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
+msgid "Pro For_ma"
+msgstr "Pro For_ma"
+
+msgctxt "view:account.invoice:"
 msgid "Taxes"
 msgstr "Taxes"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
+msgid "_Cancel"
+msgstr "_Annuler"
+
+msgctxt "view:account.invoice:"
 msgid "_Cancel"
 msgstr "_Annuler"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
+msgid "_Draft"
+msgstr "_Brouillon"
+
+msgctxt "view:account.invoice:"
 msgid "_Draft"
 msgstr "_Brouillon"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
+msgid "_Open"
+msgstr "_Ouvrir"
+
+msgctxt "view:account.invoice:"
 msgid "_Open"
 msgstr "_Ouvrir"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Payer"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
+msgid "_Pay"
+msgstr "_Payer"
+
+msgctxt "view:account.invoice:"
 msgid "_Reset to Draft"
 msgstr "_Remettre en brouillon"
 
-msgctxt "view:party.party:0"
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr "Montant en devise secondaire"
+
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr "Crédit"
+
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr "Débit"
+
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr "Lignes à payer"
+
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr "Lignes de paiement"
+
+msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr "Conditions de paiement"
 
-msgctxt "view:product.product:0"
+msgctxt "view:party.party:"
+msgid "Payment Terms"
+msgstr "Conditions de paiement"
+
+msgctxt "view:product.product:"
 msgid "Taxes"
 msgstr "Taxes"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
-msgstr "Créditer"
+msgstr "Crédit"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
 msgstr "Annuler"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr "Annuler"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
 msgstr "Ok"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
 msgstr "Ok"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
 msgstr "Annuler"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr "Annuler"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
 msgstr "Imprimer"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index af21248..a87fa2e 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -2,7 +2,7 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
@@ -10,35 +10,33 @@ msgstr ""
 "U kunt de factuurreeks niet meer aanpassen als er in dit boekjaar al een "
 "factuur is geboekt."
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
 msgstr "U moet per boekjaar verschillende factuurreeksen hebben!"
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
-msgstr "Alleen een openstaande factuur kunt u crediteren met terugbetaling!"
+msgstr ""
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
 msgstr ""
-"Een (gedeeltelijk) betaalde factuur kunt u niet crediteren met "
-"terugbetaling!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account!"
 msgstr "Regel met \"regel\" type moet een rekening hebben!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice!"
 msgstr "Een regel zonder \"regel\" moet een factuur hebben!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde "
 "factuur!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line\n"
 "with account with a different invoice company!"
@@ -46,11 +44,11 @@ msgstr ""
 "U kunt geen factuurregel aanmaken\n"
 "op een rekening van een ander bedrijf!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
 msgstr "U kunt geen regel aanpassen van een openstraande of betaalde factuur!"
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not use the same account\n"
 "as on the invoice!"
@@ -58,42 +56,40 @@ msgstr ""
 "U kunt niet dezelfde rekening \n"
 "gebruiken als op de factuur!"
 
-msgctxt "error:account.invoice.pay_invoice:0"
+msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
 msgstr ""
-"U kunt geen gedeeltelijke betaling boeken die groter is dan het te betalen "
-"bedrag!"
 
-msgctxt "error:account.invoice.payment_term.line.delay:0"
-msgid "The code must be unique!"
-msgstr "De code moet uniek zijn!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
+msgstr ""
 
-msgctxt "error:account.invoice.payment_term.line.type:0"
-msgid "The code must be unique!"
-msgstr "De code moet uniek zijn!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
+msgstr ""
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
 msgstr "Ongeldige betalingstermijn!"
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Payment term missing a remainder line!"
 msgstr "De betalingstermijn mist een restantregel!"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 "U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde "
 "factuur!"
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
 msgstr ""
 "U kunt de belasting niet aanpassen van een openstaande of betaalde factuur!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Base taxes different from invoice lines!\n"
 "Re-compute the invoice."
@@ -101,7 +97,11 @@ msgstr ""
 "Standaard belasting wijkt af van factuurregels!\n"
 "Herbereken de factuur."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
@@ -109,7 +109,7 @@ msgstr ""
 "Belasting gedefinieerd maar niet op deze factuurregels!\n"
 "Herbereken de factuur."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined on invoice lines but not on invoice!\n"
 "Re-compute the invoice."
@@ -117,28 +117,28 @@ msgstr ""
 "Belasting gedefinieerd op factuurregels, maar niet op de factuur!\n"
 "Herbereken de factuur."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is missing!"
 msgstr "De credit boeking ontbreekt!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is the same than the invoice account!"
 msgstr ""
 "De credit rekening in het dagboek is dezelfde als de factuur rekening."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is missing!"
 msgstr "De debit boeking ontbreekt!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is the same than the invoice account!"
 msgstr "De debit rekening in het dagboek is dezelfde als de factuur rekening."
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "There is no invoice sequence on the period/fiscal year!"
 msgstr "Er is geen factuurreeks voor deze periode / dit boekjaar!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not create an invoice\n"
 "with account from a different invoice company!"
@@ -146,15 +146,15 @@ msgstr ""
 "U kunt geen factuur aanmaken\n"
 "op een rekening van een ander bedrijf!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not modify an invoice that is opened, paid!"
 msgstr "U kunt een openstaande of betaalde factuur niet wijzigen!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not reset to draft an invoice that has move!"
 msgstr "Een geboekte factuur kunt u niet terugzetten naar concept!"
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not use the same account\n"
 "as on invoice line!"
@@ -162,7 +162,7 @@ msgstr ""
 "U kunt niet dezelfde rekening gebruiken\n"
 "als op de factuurregel!"
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the period"
@@ -170,7 +170,7 @@ msgstr ""
 "U kunt niet de factuurreeks aanpassen als er al een factuur in deze periode "
 "is geboekt"
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
@@ -178,616 +178,750 @@ msgstr ""
 "U moet per boekjaar verschillende factuurreeksen hebben binnen hetzelfde "
 "bedrijf!"
 
-msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Credit inkoopnota reeks"
 
-msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Inkoopfactuurreeks"
 
-msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Credit verkoopnota reeks"
 
-msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Verkoopfactuur reeks"
 
-msgctxt "field:account.invoice,account:0"
+msgctxt "field:account.invoice,account:"
 msgid "Account"
 msgstr "Rekening"
 
-msgctxt "field:account.invoice,accounting_date:0"
+msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
 msgstr "Boekingsdatum"
 
-msgctxt "field:account.invoice,amount_to_pay:0"
+msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
 msgstr "Te betalen bedrag"
 
-msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr "Vandaag te betalen bedrag"
 
-msgctxt "field:account.invoice,comment:0"
+msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Opmerking"
 
-msgctxt "field:account.invoice,company:0"
+msgctxt "field:account.invoice,company:"
 msgid "Company"
 msgstr "Bedrijf"
 
-msgctxt "field:account.invoice,currency:0"
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice,currency:"
 msgid "Currency"
 msgstr "Valuta"
 
-msgctxt "field:account.invoice,currency_date:0"
+msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
 msgstr ""
 
-msgctxt "field:account.invoice,currency_digits:0"
+msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
 msgstr "Valuta decimalen"
 
-msgctxt "field:account.invoice,description:0"
+msgctxt "field:account.invoice,description:"
 msgid "Description"
 msgstr "Omschrijving"
 
-msgctxt "field:account.invoice,invoice_address:0"
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
 msgstr "Factuuradres"
 
-msgctxt "field:account.invoice,invoice_date:0"
+msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
 msgstr "Factuurdatum"
 
-msgctxt "field:account.invoice,invoice_report_cache:0"
+msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
 msgstr ""
 
-msgctxt "field:account.invoice,invoice_report_format:0"
+msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
 msgstr "Opmaak factuuroverzicht"
 
-msgctxt "field:account.invoice,journal:0"
+msgctxt "field:account.invoice,journal:"
 msgid "Journal"
 msgstr "Dagboek"
 
-msgctxt "field:account.invoice,lines:0"
+msgctxt "field:account.invoice,lines:"
 msgid "Lines"
 msgstr "Regels"
 
-msgctxt "field:account.invoice,lines_to_pay:0"
+msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Te betalen boekingen"
 
-msgctxt "field:account.invoice,move:0"
+msgctxt "field:account.invoice,move:"
 msgid "Move"
 msgstr "Boeking"
 
-msgctxt "field:account.invoice,number:0"
+msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr "Nummer"
 
-msgctxt "field:account.invoice,party:0"
+msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Relatie"
 
-msgctxt "field:account.invoice,party_lang:0"
+msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
 msgstr "Taal relatie"
 
-msgctxt "field:account.invoice,payment_lines:0"
+msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
 msgstr "Betalingen"
 
-msgctxt "field:account.invoice,payment_term:0"
+msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
 msgstr "Betalingstermijn"
 
-msgctxt "field:account.invoice,rec_name:0"
+msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:account.invoice,reconciled:0"
+msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
 msgstr "Afgeletterd"
 
-msgctxt "field:account.invoice,reference:0"
+msgctxt "field:account.invoice,reference:"
 msgid "Reference"
 msgstr "Referentie"
 
-msgctxt "field:account.invoice,state:0"
+msgctxt "field:account.invoice,state:"
 msgid "State"
 msgstr "Status"
 
-msgctxt "field:account.invoice,tax_amount:0"
+msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
 msgstr "Belasting"
 
-msgctxt "field:account.invoice,taxes:0"
+msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
 msgstr "Belastingregels"
 
-msgctxt "field:account.invoice,total_amount:0"
+msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
 msgstr "Totaal"
 
-msgctxt "field:account.invoice,type:0"
+msgctxt "field:account.invoice,type:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice,type_name:0"
+msgctxt "field:account.invoice,type_name:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice,untaxed_amount:0"
+msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
 msgstr "Onbelast"
 
-msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "field:account.invoice-account.move.line,line:0"
+msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
 msgstr "Betalingen"
 
-msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
-msgstr "Met restitutie"
+msgstr ""
 
-msgctxt "field:account.invoice.line,account:0"
+msgctxt "field:account.invoice.line,account:"
 msgid "Account"
 msgstr "Rekening"
 
-msgctxt "field:account.invoice.line,amount:0"
+msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
 msgstr "Bedrag"
 
-msgctxt "field:account.invoice.line,company:0"
+msgctxt "field:account.invoice.line,company:"
 msgid "Company"
 msgstr "Bedrijf"
 
-msgctxt "field:account.invoice.line,currency:0"
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
 msgstr "Valuta"
 
-msgctxt "field:account.invoice.line,currency_digits:0"
+msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Valuta decimalen"
 
-msgctxt "field:account.invoice.line,description:0"
+msgctxt "field:account.invoice.line,description:"
 msgid "Description"
 msgstr "Omschrijving"
 
-msgctxt "field:account.invoice.line,invoice:0"
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
 msgstr "Belastingen factuur"
 
-msgctxt "field:account.invoice.line,invoice_type:0"
+msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
 msgstr "Factuurtype"
 
-msgctxt "field:account.invoice.line,note:0"
+msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr "Aantekening"
 
-msgctxt "field:account.invoice.line,party:0"
+msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Relatie"
 
-msgctxt "field:account.invoice.line,party_lang:0"
+msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
 msgstr "Taal relatie"
 
-msgctxt "field:account.invoice.line,product:0"
+msgctxt "field:account.invoice.line,product:"
 msgid "Product"
 msgstr "Product"
 
-msgctxt "field:account.invoice.line,quantity:0"
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr ""
+
+msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
 msgstr "Hoeveelheid"
 
-msgctxt "field:account.invoice.line,rec_name:0"
+msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:account.invoice.line,sequence:0"
+msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
 msgstr "Reeks"
 
-msgctxt "field:account.invoice.line,taxes:0"
+msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
 msgstr "Belastingen"
 
-msgctxt "field:account.invoice.line,type:0"
+msgctxt "field:account.invoice.line,type:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice.line,unit:0"
+msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
 msgstr "Eenheid"
 
-msgctxt "field:account.invoice.line,unit_digits:0"
+msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
 msgstr "Decimalen eenheid"
 
-msgctxt "field:account.invoice.line,unit_price:0"
+msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
 msgstr "Eenheidsprijs"
 
-msgctxt "field:account.invoice.line-account.tax,line:0"
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
 msgstr "Factuurregel"
 
-msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
 msgstr "Belasting"
 
-msgctxt "field:account.invoice.pay_invoice.ask,account:0"
-msgid "Account"
-msgstr "Rekening"
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
-msgstr "Rekening afschrijving"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
-msgstr "Bedrag betaling"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
-msgstr "Rekening afschrijving"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr "Bedrijf"
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
-msgstr "Valuta betaling"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
-msgstr "Decimalen valuta betaling"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
-msgstr "Decimalen valuta afschrijving"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
-msgstr "Valuta afschrijving"
-
-msgctxt "field:account.invoice.pay_invoice.ask,date:0"
-msgid "Date"
-msgstr "Datum"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,description:0"
-msgid "Description"
-msgstr "Omschrijving"
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,invoice:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
-msgid "Journal"
-msgstr "Dagboek"
-
-msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
-msgstr "Dagboek afschrijving"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr "Regels"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr "Te betalen boekingen"
 
-msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr "Betalingen"
 
-msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
 msgstr "Bedrag"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
 msgstr "Valuta"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
 msgstr "Valuta decimalen"
 
-msgctxt "field:account.invoice.pay_invoice.init,date:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
-msgstr "Datum"
+msgstr "Vervaldatum"
 
-msgctxt "field:account.invoice.pay_invoice.init,description:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
-msgstr "Omschrijving"
+msgstr "Specificatie"
+
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+#, fuzzy
+msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr "Dagboek"
 
-msgctxt "field:account.invoice.payment_term,active:0"
+msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
 msgstr "Actief"
 
-msgctxt "field:account.invoice.payment_term,description:0"
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
 msgstr "Omschrijving"
 
-msgctxt "field:account.invoice.payment_term,lines:0"
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Regels"
 
-msgctxt "field:account.invoice.payment_term,name:0"
+msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Betalingstermijn"
 
-msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
 msgstr "Bedrag"
 
-msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
 msgstr "Valuta"
 
-msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
 msgstr "Valuta decimalen"
 
-msgctxt "field:account.invoice.payment_term.line,days:0"
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
 msgstr "Aantal dagen"
 
-msgctxt "field:account.invoice.payment_term.line,delay:0"
-msgid "Condition"
-msgstr "Voorwaarde"
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr "Maand"
+
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
 msgstr "Betalingstermijn"
 
-msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
 msgstr "Percentage"
 
-msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
 msgstr "Reeks"
 
-msgctxt "field:account.invoice.payment_term.line,type:0"
+msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
 msgstr "Type"
 
-msgctxt "field:account.invoice.payment_term.line.delay,code:0"
-msgid "Code"
-msgstr "Code"
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,name:0"
-msgid "Name"
-msgstr "Naam"
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
-msgid "Name"
-msgstr "Naam"
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.type,code:0"
-msgid "Code"
-msgstr "Code"
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:account.invoice.tax,account:0"
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
 msgstr "Rekening"
 
-msgctxt "field:account.invoice.tax,amount:0"
+msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
 msgstr "Bedrag"
 
-msgctxt "field:account.invoice.tax,base:0"
+msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
 msgstr "Basis"
 
-msgctxt "field:account.invoice.tax,base_code:0"
+msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
 msgstr "Basiscode"
 
-msgctxt "field:account.invoice.tax,base_sign:0"
+msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
 msgstr "Basisteken"
 
-msgctxt "field:account.invoice.tax,description:0"
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
 msgstr "Omschrijving"
 
-msgctxt "field:account.invoice.tax,invoice:0"
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "field:account.invoice.tax,manual:0"
+msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
 msgstr "Handmatig"
 
-msgctxt "field:account.invoice.tax,rec_name:0"
+msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:account.invoice.tax,sequence:0"
+msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
 msgstr "Reeks"
 
-msgctxt "field:account.invoice.tax,sequence_number:0"
+msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
 msgstr "Reeksnummer"
 
-msgctxt "field:account.invoice.tax,tax:0"
+msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
 msgstr "Belasting"
 
-msgctxt "field:account.invoice.tax,tax_code:0"
+msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
 msgstr "Belastingcode"
 
-msgctxt "field:account.invoice.tax,tax_sign:0"
+msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
 msgstr "Teken belasting"
 
-msgctxt "field:account.period,in_credit_note_sequence:0"
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr "Credit inkoopnota reeks"
 
-msgctxt "field:account.period,in_invoice_sequence:0"
+msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr "Inkoopfactuurreeks"
 
-msgctxt "field:account.period,out_credit_note_sequence:0"
+msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr "Credit verkoopnota reeks"
 
-msgctxt "field:account.period,out_invoice_sequence:0"
+msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr "Verkoopfactuur reeks"
 
-msgctxt "field:party.address,invoice:0"
+msgctxt "field:party.address,invoice:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "field:party.party,payment_term:0"
-msgid "Invoice Payment Term"
-msgstr "Betalingstermijn debiteur"
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
+msgstr ""
 
-msgctxt "field:party.party,supplier_payment_term:0"
+msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
 msgstr "Betalingstermijn crediteur"
 
-msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
-msgstr "Zo ja, dan zullen deze facturen betaald worden."
-
-msgctxt "help:account.invoice.payment_term.line,percentage:0"
-msgid "In %"
-msgstr "In %"
+msgstr ""
 
-msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr "Gebruiken voor oplopend sorteren"
 
-msgctxt "model:account.invoice,name:0"
+msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "model:account.invoice-account.move.line,name:0"
+msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr "Factuurbetalingen"
 
-msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
-msgstr "Creditnota gaan aanmaken"
+msgstr ""
 
-msgctxt "model:account.invoice.line,name:0"
+msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
 msgstr "Factuurregel"
 
-msgctxt "model:account.invoice.line-account.tax,name:0"
+msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
 msgstr "Factuurregel - belasting"
 
-msgctxt "model:account.invoice.pay_invoice.ask,name:0"
-msgid "Pay Invoice Ask"
-msgstr "Betaal factuur vragen"
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
+msgstr ""
 
-msgctxt "model:account.invoice.pay_invoice.init,name:0"
-msgid "Pay Invoice Init"
-msgstr "Factuur gaan betalen"
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
+msgstr ""
 
-msgctxt "model:account.invoice.payment_term,name:0"
+msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr "Betalingstermijn"
 
-msgctxt "model:account.invoice.payment_term.line,name:0"
+msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr "Betalingstermijn regel"
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:0"
-msgid "Payment Term Line Delay"
+#, fuzzy
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
+msgid "account.invoice.payment_term.line.delay"
 msgstr "Betalingstermijn uitstelregel"
 
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
-msgid "End Month"
-msgstr "Einde van de maand"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
-msgid "Net Days"
-msgstr "Dagen netto"
-
-msgctxt "model:account.invoice.payment_term.line.type,name:0"
-msgid "Payment Term Line Type"
+#, fuzzy
+msgctxt "model:account.invoice.payment_term.line.type,name:"
+msgid "account.invoice.payment_term.line.type"
 msgstr "Betalingstermijn regeltype"
 
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
-msgid "Fixed"
-msgstr "Vast"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
-msgid "Percentage"
-msgstr "Percentage"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
-msgid "Remainder"
-msgstr "Restant"
-
-msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
-msgstr "Afdrukken waarschuwwing factuuroverzicht"
+msgstr ""
 
-msgctxt "model:account.invoice.tax,name:0"
+msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr "Belasting factuur"
 
@@ -867,21 +1001,23 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr "Betalingstermijnen"
 
-msgctxt "model:ir.action,name:credit_invoice"
+#, fuzzy
+msgctxt "model:ir.action,name:credit"
 msgid "Credit"
 msgstr "Credit"
 
-msgctxt "model:ir.action,name:print_invoice_report"
+#, fuzzy
+msgctxt "model:ir.action,name:print"
 msgid "Invoice"
-msgstr "Factuur"
+msgstr "Verkoopfactuur"
 
 msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
-msgstr "Betaal factuur"
+msgstr ""
 
 msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
 msgid "Invoice"
@@ -967,422 +1103,523 @@ msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
 msgstr "Betalingstermijnen"
 
-msgctxt "model:workflow,name:invoice_workflow"
-msgid "Invoice workflow"
-msgstr "Procedure facturatie"
-
-msgctxt "model:workflow.activity,name:invoice_activity_cancel"
-msgid "Canceled"
-msgstr "Geannuleerd"
-
-msgctxt "model:workflow.activity,name:invoice_activity_draft"
-msgid "Draft"
-msgstr "Concept"
-
-msgctxt "model:workflow.activity,name:invoice_activity_open"
-msgid "Open"
-msgstr "Open"
-
-msgctxt "model:workflow.activity,name:invoice_activity_paid"
-msgid "Paid"
-msgstr "Betaald"
-
-msgctxt "model:workflow.activity,name:invoice_activity_proforma"
-msgid "Pro forma"
-msgstr "Pro forma"
-
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr "Bedrag"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Base"
 msgstr "Basisbedrag"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
 msgstr "Creditnotanummer:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date"
 msgstr "Vervaldatum"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr "Datum:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description"
 msgstr "Specificatie"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description:"
 msgstr "Betreft:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
 msgstr "Concept creditnota"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
 msgstr "Concept verkoopfactuur"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
 msgstr "Concept credit inkoopnota"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
 msgstr "Concept inkoopfactuur"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
 msgstr "E-mail:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
 msgstr "Factuur:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Payment Term"
 msgstr "Betalingstermijn"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Phone:"
 msgstr "Telefoon:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
 msgstr "Pro forma creditnota"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
 msgstr "Pro forma verkoopfactuur"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
 msgstr "Pro forma credit inkoopnota"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
 msgstr "Pro forma factuur"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Hoeveelheid"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr "Credit inkoopnotanummer:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
 msgstr "Inkoopfactuurnummer:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Tax"
 msgstr "Belasting"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes"
 msgstr "Belastingen"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes:"
 msgstr "Belastingen:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
 msgstr "Totaal (excl. belasting):"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total:"
 msgstr "Totaal:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Unit Price"
 msgstr "Eenheids- prijs"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
 msgstr "BTW-nummer:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr "BTW:"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Geannuleerd"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Draft"
 msgstr "Concept"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Opened"
 msgstr "Geopend"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr "Betaald"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
 msgstr "Pro forma"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
 msgstr "Credit verkoopnota"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
 msgstr "Credit inkoopnota"
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr "Inkoopfactuur"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr "Credit verkoopnota"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
 msgstr "Credit inkoopnota"
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
 msgstr "Inkoopfactuur"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr "Opmerking"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
 msgstr "Regel"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
 msgstr "Subtotaal"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
 msgstr "Titel"
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
-msgstr "Deelbetaling"
+msgstr ""
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+#, fuzzy
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
 msgstr "Afschrijven"
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr "Vast"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr ""
+
+msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
-msgstr "Wilt u deze factuur/facturen echt crediteren?"
+msgstr ""
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
-msgstr "Credit verkoopfactuur"
+msgstr ""
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "General"
 msgstr "Algemeen"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
 msgstr "Factuurregel"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
 msgstr "Factuurregels"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Aantekeningen"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Products"
 msgstr "Producten"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Amount Second Currency"
-msgstr "Bedrag alternatieve valuta"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Credit"
-msgstr "Credit"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Debit"
-msgstr "Debit"
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Lines to Pay"
-msgstr "Te betalen boekingen"
+msgctxt "view:account.invoice.pay.ask:"
+msgid "Pay Invoice"
+msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
-msgstr "Betaal factuur"
+msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Payment Lines"
-msgstr "Betalingen"
+#, fuzzy
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
+msgstr "Betalingstermijn regel"
 
-msgctxt "view:account.invoice.pay_invoice.init:0"
-msgid "Pay Invoice"
-msgstr "Betaal factuur"
+#, fuzzy
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
+msgstr "Betalingstermijn regels"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
 msgstr "Betalingstermijn"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Line"
 msgstr "Betalingstermijn regel"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Lines"
 msgstr "Betalingstermijn regels"
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr "Betalingstermijnen"
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
-msgid "<b>Warning!</b>"
-msgstr "<b>Waarschuwing!</b>"
-
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
-msgstr "Factuur afdrukken"
+msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
-msgstr "De factuur wordt <i>direct</i> afgedrukt."
+msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
-msgstr "U heeft meer dan één factuur geselecteerd om af te drukken."
+msgstr ""
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
 msgstr "Belasting factuur"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
 msgstr "Belastingen factuur"
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr "Belastingcode"
 
-msgctxt "view:account.invoice:0"
+#, fuzzy
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr "Belastingen"
+
+msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
 msgstr "Bedrag alternatieve valuta"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Credit"
 msgstr "Credit"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Debit"
 msgstr "Debit"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr "Verkoopfactuur"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoices"
 msgstr "Verkoopfacturen"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Lines"
 msgstr "Regels"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr "Aanvullende informatie"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr "Betaling"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment Lines"
 msgstr "Betalingen"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
 msgstr "Pro For_ma"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Taxes"
 msgstr "Belastingen"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Cancel"
 msgstr "_Annuleren"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Draft"
 msgstr "_Concept"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Open"
 msgstr "_Open"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr "_Betalen"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Reset to Draft"
 msgstr "_Terug naar concept"
 
-msgctxt "view:party.party:0"
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr "Bedrag alternatieve valuta"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr "Credit"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr "Debit"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr "Te betalen boekingen"
+
+#, fuzzy
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr "Betalingen"
+
+msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr "Betalingstermijnen"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
 msgstr "Credit"
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
 msgstr "Annuleren"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr "Annuleren"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
 msgstr "Oké"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
 msgstr "Oké"
 
-msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
 msgstr "Annuleren"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+#, fuzzy
+msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr "Annuleren"
 
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
-msgstr "Afdrukken"
+msgstr ""
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index 262bee2..679484d 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -2,815 +2,930 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the fiscalyear"
 msgstr ""
 
-msgctxt "error:account.fiscalyear:0"
+msgctxt "error:account.fiscalyear:"
 msgid "You must have different invoice sequences per fiscal year!"
 msgstr ""
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice that is not opened!"
 msgstr ""
 
-msgctxt "error:account.invoice.credit_invoice:0"
+msgctxt "error:account.invoice.credit:"
 msgid "You can not credit with refund an invoice with payments!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line with \"line\" type must have an account!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "Line without \"line\" type must have an invoice!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not create invoice line\n"
 "with account with a different invoice company!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid "You can not modify line from an invoice that is opened, paid!"
 msgstr ""
 
-msgctxt "error:account.invoice.line:0"
+msgctxt "error:account.invoice.line:"
 msgid ""
 "You can not use the same account\n"
 "as on the invoice!"
 msgstr ""
 
-msgctxt "error:account.invoice.pay_invoice:0"
+msgctxt "error:account.invoice.pay:"
 msgid ""
 "You can not create a partial payment with an amount greater then the amount "
 "to pay!"
 msgstr ""
 
-msgctxt "error:account.invoice.payment_term.line.delay:0"
-msgid "The code must be unique!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Day of month must be between 1 and 31."
 msgstr ""
 
-msgctxt "error:account.invoice.payment_term.line.type:0"
-msgid "The code must be unique!"
+msgctxt "error:account.invoice.payment_term.line:"
+msgid "Percentage and Divisor values are not consistent."
 msgstr ""
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Invalid payment term line!"
 msgstr ""
 
-msgctxt "error:account.invoice.payment_term:0"
+msgctxt "error:account.invoice.payment_term:"
 msgid "Payment term missing a remainder line!"
 msgstr ""
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not add a line to an invoice that is open, paid or canceled!"
 msgstr ""
 
-msgctxt "error:account.invoice.tax:0"
+msgctxt "error:account.invoice.tax:"
 msgid "You can not modify tax from an invoice that is opened, paid!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Base taxes different from invoice lines!\n"
 "Re-compute the invoice."
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
+msgid "Invoice \"%s\" must be cancelled before deletion!"
+msgstr ""
+
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined but not on invoice lines!\n"
 "Re-compute the invoice."
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "Taxes defined on invoice lines but not on invoice!\n"
 "Re-compute the invoice."
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is missing!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The credit account on journal is the same than the invoice account!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is missing!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "The debit account on journal is the same than the invoice account!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "There is no invoice sequence on the period/fiscal year!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not create an invoice\n"
 "with account from a different invoice company!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not modify an invoice that is opened, paid!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid "You can not reset to draft an invoice that has move!"
 msgstr ""
 
-msgctxt "error:account.invoice:0"
+msgctxt "error:account.invoice:"
 msgid ""
 "You can not use the same account\n"
 "as on invoice line!"
 msgstr ""
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You can not change the invoice sequence if there is already an invoice "
 "opened in the period"
 msgstr ""
 
-msgctxt "error:account.period:0"
+msgctxt "error:account.period:"
 msgid ""
 "You must have different invoice sequences per fiscal year and in the same "
 "company!"
 msgstr ""
 
-msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr ""
 
-msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr ""
 
-msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr ""
 
-msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgctxt "field:account.fiscalyear,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr ""
 
-msgctxt "field:account.invoice,account:0"
+msgctxt "field:account.invoice,account:"
 msgid "Account"
 msgstr ""
 
-msgctxt "field:account.invoice,accounting_date:0"
+msgctxt "field:account.invoice,accounting_date:"
 msgid "Accounting Date"
 msgstr ""
 
-msgctxt "field:account.invoice,amount_to_pay:0"
+msgctxt "field:account.invoice,amount_to_pay:"
 msgid "Amount to Pay"
 msgstr ""
 
-msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgctxt "field:account.invoice,amount_to_pay_today:"
 msgid "Amount to Pay Today"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice,comment:0"
+msgctxt "field:account.invoice,comment:"
 msgid "Comment"
 msgstr "Комментарии"
 
 #, fuzzy
-msgctxt "field:account.invoice,company:0"
+msgctxt "field:account.invoice,company:"
 msgid "Company"
 msgstr "Учет.орг."
 
+msgctxt "field:account.invoice,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice,create_uid:"
+msgid "Create User"
+msgstr ""
+
 #, fuzzy
-msgctxt "field:account.invoice,currency:0"
+msgctxt "field:account.invoice,currency:"
 msgid "Currency"
 msgstr "Валюты"
 
-msgctxt "field:account.invoice,currency_date:0"
+msgctxt "field:account.invoice,currency_date:"
 msgid "Currency Date"
 msgstr ""
 
-msgctxt "field:account.invoice,currency_digits:0"
+msgctxt "field:account.invoice,currency_digits:"
 msgid "Currency Digits"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice,description:0"
+msgctxt "field:account.invoice,description:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "field:account.invoice,invoice_address:0"
+msgctxt "field:account.invoice,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_address:"
 msgid "Invoice Address"
 msgstr ""
 
-msgctxt "field:account.invoice,invoice_date:0"
+msgctxt "field:account.invoice,invoice_date:"
 msgid "Invoice Date"
 msgstr ""
 
-msgctxt "field:account.invoice,invoice_report_cache:0"
+msgctxt "field:account.invoice,invoice_report_cache:"
 msgid "Invoice Report"
 msgstr ""
 
-msgctxt "field:account.invoice,invoice_report_format:0"
+msgctxt "field:account.invoice,invoice_report_format:"
 msgid "Invoice Report Format"
 msgstr ""
 
-msgctxt "field:account.invoice,journal:0"
+msgctxt "field:account.invoice,journal:"
 msgid "Journal"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice,lines:0"
+msgctxt "field:account.invoice,lines:"
 msgid "Lines"
 msgstr "Строки"
 
-msgctxt "field:account.invoice,lines_to_pay:0"
+msgctxt "field:account.invoice,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice,move:0"
+msgctxt "field:account.invoice,move:"
 msgid "Move"
 msgstr "Перемещение"
 
-msgctxt "field:account.invoice,number:0"
+msgctxt "field:account.invoice,number:"
 msgid "Number"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice,party:0"
+msgctxt "field:account.invoice,party:"
 msgid "Party"
 msgstr "Организации"
 
-msgctxt "field:account.invoice,party_lang:0"
+msgctxt "field:account.invoice,party_lang:"
 msgid "Party Language"
 msgstr ""
 
-msgctxt "field:account.invoice,payment_lines:0"
+msgctxt "field:account.invoice,payment_lines:"
 msgid "Payment Lines"
 msgstr ""
 
-msgctxt "field:account.invoice,payment_term:0"
+msgctxt "field:account.invoice,payment_term:"
 msgid "Payment Term"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice,rec_name:0"
+msgctxt "field:account.invoice,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
-msgctxt "field:account.invoice,reconciled:0"
+msgctxt "field:account.invoice,reconciled:"
 msgid "Reconciled"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice,reference:0"
+msgctxt "field:account.invoice,reference:"
 msgid "Reference"
 msgstr "Ссылка"
 
 #, fuzzy
-msgctxt "field:account.invoice,state:0"
+msgctxt "field:account.invoice,state:"
 msgid "State"
 msgstr "Статус"
 
-msgctxt "field:account.invoice,tax_amount:0"
+msgctxt "field:account.invoice,tax_amount:"
 msgid "Tax"
 msgstr ""
 
-msgctxt "field:account.invoice,taxes:0"
+msgctxt "field:account.invoice,taxes:"
 msgid "Tax Lines"
 msgstr ""
 
-msgctxt "field:account.invoice,total_amount:0"
+msgctxt "field:account.invoice,total_amount:"
 msgid "Total"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice,type:0"
+msgctxt "field:account.invoice,type:"
 msgid "Type"
 msgstr "Тип"
 
 #, fuzzy
-msgctxt "field:account.invoice,type_name:0"
+msgctxt "field:account.invoice,type_name:"
 msgid "Type"
 msgstr "Тип"
 
-msgctxt "field:account.invoice,untaxed_amount:0"
+msgctxt "field:account.invoice,untaxed_amount:"
 msgid "Untaxed"
 msgstr ""
 
-msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgctxt "field:account.invoice,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "field:account.invoice-account.move.line,line:0"
+msgctxt "field:account.invoice-account.move.line,line:"
 msgid "Payment Line"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgctxt "field:account.invoice-account.move.line,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
-msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "field:account.invoice-account.move.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.credit.start,with_refund:"
 msgid "With Refund"
 msgstr ""
 
-msgctxt "field:account.invoice.line,account:0"
+msgctxt "field:account.invoice.line,account:"
 msgid "Account"
 msgstr ""
 
-msgctxt "field:account.invoice.line,amount:0"
+msgctxt "field:account.invoice.line,amount:"
 msgid "Amount"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.line,company:0"
+msgctxt "field:account.invoice.line,company:"
 msgid "Company"
 msgstr "Учет.орг."
 
+msgctxt "field:account.invoice.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line,create_uid:"
+msgid "Create User"
+msgstr ""
+
 #, fuzzy
-msgctxt "field:account.invoice.line,currency:0"
+msgctxt "field:account.invoice.line,currency:"
 msgid "Currency"
 msgstr "Валюты"
 
-msgctxt "field:account.invoice.line,currency_digits:0"
+msgctxt "field:account.invoice.line,currency_digits:"
 msgid "Currency Digits"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.line,description:0"
+msgctxt "field:account.invoice.line,description:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "field:account.invoice.line,invoice:0"
+msgctxt "field:account.invoice.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgctxt "field:account.invoice.line,invoice_taxes:"
 msgid "Invoice Taxes"
 msgstr ""
 
-msgctxt "field:account.invoice.line,invoice_type:0"
+msgctxt "field:account.invoice.line,invoice_type:"
 msgid "Invoice Type"
 msgstr ""
 
-msgctxt "field:account.invoice.line,note:0"
+msgctxt "field:account.invoice.line,note:"
 msgid "Note"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.line,party:0"
+msgctxt "field:account.invoice.line,party:"
 msgid "Party"
 msgstr "Организации"
 
-msgctxt "field:account.invoice.line,party_lang:0"
+msgctxt "field:account.invoice.line,party_lang:"
 msgid "Party Language"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.line,product:0"
+msgctxt "field:account.invoice.line,product:"
 msgid "Product"
 msgstr "Товарно материальные ценности (ТМЦ)"
 
+msgctxt "field:account.invoice.line,product_uom_category:"
+msgid "Product Uom Category"
+msgstr ""
+
 #, fuzzy
-msgctxt "field:account.invoice.line,quantity:0"
+msgctxt "field:account.invoice.line,quantity:"
 msgid "Quantity"
 msgstr "Кол-во"
 
 #, fuzzy
-msgctxt "field:account.invoice.line,rec_name:0"
+msgctxt "field:account.invoice.line,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
 #, fuzzy
-msgctxt "field:account.invoice.line,sequence:0"
+msgctxt "field:account.invoice.line,sequence:"
 msgid "Sequence"
 msgstr "Последовательность"
 
-msgctxt "field:account.invoice.line,taxes:0"
+msgctxt "field:account.invoice.line,taxes:"
 msgid "Taxes"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.line,type:0"
+msgctxt "field:account.invoice.line,type:"
 msgid "Type"
 msgstr "Тип"
 
 #, fuzzy
-msgctxt "field:account.invoice.line,unit:0"
+msgctxt "field:account.invoice.line,unit:"
 msgid "Unit"
 msgstr "Штука"
 
 #, fuzzy
-msgctxt "field:account.invoice.line,unit_digits:0"
+msgctxt "field:account.invoice.line,unit_digits:"
 msgid "Unit Digits"
 msgstr "Группа цифр"
 
 #, fuzzy
-msgctxt "field:account.invoice.line,unit_price:0"
+msgctxt "field:account.invoice.line,unit_price:"
 msgid "Unit Price"
 msgstr "Цена за единицу"
 
-msgctxt "field:account.invoice.line-account.tax,line:0"
+msgctxt "field:account.invoice.line,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,line:"
 msgid "Invoice Line"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgctxt "field:account.invoice.line-account.tax,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
-msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgctxt "field:account.invoice.line-account.tax,tax:"
 msgid "Tax"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,account:0"
-msgid "Account"
+msgctxt "field:account.invoice.line-account.tax,write_date:"
+msgid "Write Date"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgctxt "field:account.invoice.line-account.tax,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.ask,account_writeoff:"
 msgid "Write-Off Account"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgctxt "field:account.invoice.pay.ask,amount:"
 msgid "Payment Amount"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,amount_writeoff:"
 msgid "Write-Off Amount"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgctxt "field:account.invoice.pay.ask,company:"
 msgid "Company"
 msgstr "Учет.орг."
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgctxt "field:account.invoice.pay.ask,currency:"
 msgid "Payment Currency"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits:"
 msgid "Payment Currency Digits"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_digits_writeoff:"
 msgid "Write-Off Currency Digits"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,currency_writeoff:"
 msgid "Write-Off Currency"
 msgstr ""
 
-#, fuzzy
-msgctxt "field:account.invoice.pay_invoice.ask,date:0"
-msgid "Date"
-msgstr "Дата"
-
-#, fuzzy
-msgctxt "field:account.invoice.pay_invoice.ask,description:0"
-msgid "Description"
-msgstr "Описание"
-
-msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
-msgid "Invoice"
+msgctxt "field:account.invoice.pay.ask,id:"
+msgid "ID"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
-msgid "Journal"
+msgctxt "field:account.invoice.pay.ask,invoice:"
+msgid "Invoice"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgctxt "field:account.invoice.pay.ask,journal_writeoff:"
 msgid "Write-Off Journal"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgctxt "field:account.invoice.pay.ask,lines:"
 msgid "Lines"
 msgstr "Строки"
 
-msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgctxt "field:account.invoice.pay.ask,lines_to_pay:"
 msgid "Lines to Pay"
 msgstr ""
 
-msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgctxt "field:account.invoice.pay.ask,payment_lines:"
 msgid "Payment Lines"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgctxt "field:account.invoice.pay.ask,type:"
 msgid "Type"
 msgstr "Тип"
 
-msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgctxt "field:account.invoice.pay.start,amount:"
 msgid "Amount"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgctxt "field:account.invoice.pay.start,currency:"
 msgid "Currency"
 msgstr "Валюты"
 
-msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgctxt "field:account.invoice.pay.start,currency_digits:"
 msgid "Currency Digits"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgctxt "field:account.invoice.pay.start,date:"
 msgid "Date"
 msgstr "Дата"
 
 #, fuzzy
-msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgctxt "field:account.invoice.pay.start,description:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgctxt "field:account.invoice.pay.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.pay.start,journal:"
 msgid "Journal"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.payment_term,active:0"
+msgctxt "field:account.invoice.payment_term,active:"
 msgid "Active"
 msgstr "Действительный"
 
+msgctxt "field:account.invoice.payment_term,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,create_uid:"
+msgid "Create User"
+msgstr ""
+
 #, fuzzy
-msgctxt "field:account.invoice.payment_term,description:0"
+msgctxt "field:account.invoice.payment_term,description:"
 msgid "Description"
 msgstr "Описание"
 
+msgctxt "field:account.invoice.payment_term,id:"
+msgid "ID"
+msgstr ""
+
 #, fuzzy
-msgctxt "field:account.invoice.payment_term,lines:0"
+msgctxt "field:account.invoice.payment_term,lines:"
 msgid "Lines"
 msgstr "Строки"
 
-msgctxt "field:account.invoice.payment_term,name:0"
+msgctxt "field:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgctxt "field:account.invoice.payment_term,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
-msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgctxt "field:account.invoice.payment_term,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,amount:"
 msgid "Amount"
 msgstr ""
 
+msgctxt "field:account.invoice.payment_term.line,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,create_uid:"
+msgid "Create User"
+msgstr ""
+
 #, fuzzy
-msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgctxt "field:account.invoice.payment_term.line,currency:"
 msgid "Currency"
 msgstr "Валюты"
 
-msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgctxt "field:account.invoice.payment_term.line,currency_digits:"
 msgid "Currency Digits"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,days:0"
+msgctxt "field:account.invoice.payment_term.line,day:"
+msgid "Day of Month"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,days:"
 msgid "Number of Days"
 msgstr ""
 
-#, fuzzy
-msgctxt "field:account.invoice.payment_term.line,delay:0"
-msgid "Condition"
-msgstr "Состояние"
+msgctxt "field:account.invoice.payment_term.line,divisor:"
+msgid "Divisor"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,month:"
+msgid "Month"
+msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgctxt "field:account.invoice.payment_term.line,months:"
+msgid "Number of Months"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,payment:"
 msgid "Payment Term"
 msgstr ""
 
-msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgctxt "field:account.invoice.payment_term.line,percentage:"
 msgid "Percentage"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
 #, fuzzy
-msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgctxt "field:account.invoice.payment_term.line,sequence:"
 msgid "Sequence"
 msgstr "Последовательность"
 
 #, fuzzy
-msgctxt "field:account.invoice.payment_term.line,type:0"
+msgctxt "field:account.invoice.payment_term.line,type:"
 msgid "Type"
 msgstr "Тип"
 
-#, fuzzy
-msgctxt "field:account.invoice.payment_term.line.delay,code:0"
-msgid "Code"
-msgstr "Код страны"
+msgctxt "field:account.invoice.payment_term.line,weekday:"
+msgid "Day of Week"
+msgstr ""
 
-#, fuzzy
-msgctxt "field:account.invoice.payment_term.line.delay,name:0"
-msgid "Name"
-msgstr "Наименование"
+msgctxt "field:account.invoice.payment_term.line,weeks:"
+msgid "Number of Weeks"
+msgstr ""
 
-#, fuzzy
-msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
-msgid "Name"
-msgstr "Наименование"
+msgctxt "field:account.invoice.payment_term.line,write_date:"
+msgid "Write Date"
+msgstr ""
 
-#, fuzzy
-msgctxt "field:account.invoice.payment_term.line.type,code:0"
-msgid "Code"
-msgstr "Код страны"
+msgctxt "field:account.invoice.payment_term.line,write_uid:"
+msgid "Write User"
+msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
 #, fuzzy
-msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
-msgctxt "field:account.invoice.tax,account:0"
+msgctxt "field:account.invoice.print.warning,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,account:"
 msgid "Account"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,amount:0"
+msgctxt "field:account.invoice.tax,amount:"
 msgid "Amount"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,base:0"
+msgctxt "field:account.invoice.tax,base:"
 msgid "Base"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,base_code:0"
+msgctxt "field:account.invoice.tax,base_code:"
 msgid "Base Code"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,base_sign:0"
+msgctxt "field:account.invoice.tax,base_sign:"
 msgid "Base Sign"
 msgstr ""
 
+msgctxt "field:account.invoice.tax,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,create_uid:"
+msgid "Create User"
+msgstr ""
+
 #, fuzzy
-msgctxt "field:account.invoice.tax,description:0"
+msgctxt "field:account.invoice.tax,description:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "field:account.invoice.tax,invoice:0"
+msgctxt "field:account.invoice.tax,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,manual:0"
+msgctxt "field:account.invoice.tax,manual:"
 msgid "Manual"
 msgstr ""
 
 #, fuzzy
-msgctxt "field:account.invoice.tax,rec_name:0"
+msgctxt "field:account.invoice.tax,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
 #, fuzzy
-msgctxt "field:account.invoice.tax,sequence:0"
+msgctxt "field:account.invoice.tax,sequence:"
 msgid "Sequence"
 msgstr "Последовательность"
 
-msgctxt "field:account.invoice.tax,sequence_number:0"
+msgctxt "field:account.invoice.tax,sequence_number:"
 msgid "Sequence Number"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,tax:0"
+msgctxt "field:account.invoice.tax,tax:"
 msgid "Tax"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,tax_code:0"
+msgctxt "field:account.invoice.tax,tax_code:"
 msgid "Tax Code"
 msgstr ""
 
-msgctxt "field:account.invoice.tax,tax_sign:0"
+msgctxt "field:account.invoice.tax,tax_sign:"
 msgid "Tax Sign"
 msgstr ""
 
-msgctxt "field:account.period,in_credit_note_sequence:0"
+msgctxt "field:account.invoice.tax,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:account.period,in_credit_note_sequence:"
 msgid "Supplier Credit Note Sequence"
 msgstr ""
 
-msgctxt "field:account.period,in_invoice_sequence:0"
+msgctxt "field:account.period,in_invoice_sequence:"
 msgid "Supplier Invoice Sequence"
 msgstr ""
 
-msgctxt "field:account.period,out_credit_note_sequence:0"
+msgctxt "field:account.period,out_credit_note_sequence:"
 msgid "Customer Credit Note Sequence"
 msgstr ""
 
-msgctxt "field:account.period,out_invoice_sequence:0"
+msgctxt "field:account.period,out_invoice_sequence:"
 msgid "Customer Invoice Sequence"
 msgstr ""
 
-msgctxt "field:party.address,invoice:0"
+msgctxt "field:party.address,invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "field:party.party,payment_term:0"
-msgid "Invoice Payment Term"
+msgctxt "field:party.party,customer_payment_term:"
+msgid "Customer Payment Term"
 msgstr ""
 
-msgctxt "field:party.party,supplier_payment_term:0"
+msgctxt "field:party.party,supplier_payment_term:"
 msgid "Supplier Payment Term"
 msgstr ""
 
-msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgctxt "help:account.invoice.credit.start,with_refund:"
 msgid "If true, the current invoice(s) will be paid."
 msgstr ""
 
-msgctxt "help:account.invoice.payment_term.line,percentage:0"
-msgid "In %"
-msgstr ""
-
-msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgctxt "help:account.invoice.payment_term.line,sequence:"
 msgid "Use to order lines in ascending order"
 msgstr ""
 
-msgctxt "model:account.invoice,name:0"
+msgctxt "model:account.invoice,name:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "model:account.invoice-account.move.line,name:0"
+msgctxt "model:account.invoice-account.move.line,name:"
 msgid "Invoice - Payment Line"
 msgstr ""
 
-msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgctxt "model:account.invoice.credit.start,name:"
 msgid "Credit Invoice Init"
 msgstr ""
 
-msgctxt "model:account.invoice.line,name:0"
+msgctxt "model:account.invoice.line,name:"
 msgid "Invoice Line"
 msgstr ""
 
-msgctxt "model:account.invoice.line-account.tax,name:0"
+msgctxt "model:account.invoice.line-account.tax,name:"
 msgid "Invoice Line - Tax"
 msgstr ""
 
-msgctxt "model:account.invoice.pay_invoice.ask,name:0"
-msgid "Pay Invoice Ask"
+msgctxt "model:account.invoice.pay.ask,name:"
+msgid "Pay Invoice"
 msgstr ""
 
-msgctxt "model:account.invoice.pay_invoice.init,name:0"
-msgid "Pay Invoice Init"
+msgctxt "model:account.invoice.pay.start,name:"
+msgid "Pay Invoice"
 msgstr ""
 
-msgctxt "model:account.invoice.payment_term,name:0"
+msgctxt "model:account.invoice.payment_term,name:"
 msgid "Payment Term"
 msgstr ""
 
-msgctxt "model:account.invoice.payment_term.line,name:0"
+msgctxt "model:account.invoice.payment_term.line,name:"
 msgid "Payment Term Line"
 msgstr ""
 
-msgctxt "model:account.invoice.payment_term.line.delay,name:0"
-msgid "Payment Term Line Delay"
-msgstr ""
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
-msgid "End Month"
-msgstr ""
-
-msgctxt ""
-"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
-msgid "Net Days"
-msgstr ""
-
-msgctxt "model:account.invoice.payment_term.line.type,name:0"
-msgid "Payment Term Line Type"
+msgctxt "model:account.invoice.payment_term.line.delay,name:"
+msgid "account.invoice.payment_term.line.delay"
 msgstr ""
 
-#, fuzzy
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
-msgid "Fixed"
-msgstr "Фиксированная"
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
-msgid "Percentage"
-msgstr ""
-
-msgctxt ""
-"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
-msgid "Remainder"
+msgctxt "model:account.invoice.payment_term.line.type,name:"
+msgid "account.invoice.payment_term.line.type"
 msgstr ""
 
-msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgctxt "model:account.invoice.print.warning,name:"
 msgid "Print Invoice Report Warning"
 msgstr ""
 
-msgctxt "model:account.invoice.tax,name:0"
+msgctxt "model:account.invoice.tax,name:"
 msgid "Invoice Tax"
 msgstr ""
 
@@ -890,11 +1005,11 @@ msgctxt "model:ir.action,name:act_payment_term_form"
 msgid "Payment Terms"
 msgstr ""
 
-msgctxt "model:ir.action,name:credit_invoice"
+msgctxt "model:ir.action,name:credit"
 msgid "Credit"
 msgstr ""
 
-msgctxt "model:ir.action,name:print_invoice_report"
+msgctxt "model:ir.action,name:print"
 msgid "Invoice"
 msgstr ""
 
@@ -902,7 +1017,7 @@ msgctxt "model:ir.action,name:report_invoice"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgctxt "model:ir.action,name:wizard_pay"
 msgid "Pay Invoice"
 msgstr ""
 
@@ -990,442 +1105,534 @@ msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
 msgid "Payment Terms"
 msgstr ""
 
-msgctxt "model:workflow,name:invoice_workflow"
-msgid "Invoice workflow"
-msgstr ""
-
-#, fuzzy
-msgctxt "model:workflow.activity,name:invoice_activity_cancel"
-msgid "Canceled"
-msgstr "Отменено"
-
-#, fuzzy
-msgctxt "model:workflow.activity,name:invoice_activity_draft"
-msgid "Draft"
-msgstr "Черновик"
-
-#, fuzzy
-msgctxt "model:workflow.activity,name:invoice_activity_open"
-msgid "Open"
-msgstr "Открыть"
-
-msgctxt "model:workflow.activity,name:invoice_activity_paid"
-msgid "Paid"
-msgstr ""
-
-msgctxt "model:workflow.activity,name:invoice_activity_proforma"
-msgid "Pro forma"
-msgstr ""
-
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Amount"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Base"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Credit Note N°:"
 msgstr ""
 
 #, fuzzy
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date"
 msgstr "Дата"
 
 #, fuzzy
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Date:"
 msgstr "Дата:"
 
 #, fuzzy
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description"
 msgstr "Описание"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Description:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Credit Note"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Invoice"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Credit Note"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Draft Supplier Invoice"
 msgstr ""
 
 #, fuzzy
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "E-Mail:"
 msgstr "E-Mail:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Invoice N°:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Payment Term"
 msgstr ""
 
 #, fuzzy
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Phone:"
 msgstr "Телефон:"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Credit Note"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Invoice"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Credit Note"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Pro forma Supplier Invoice"
 msgstr ""
 
 #, fuzzy
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Quantity"
 msgstr "Кол-во"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Credit Note N°:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Supplier Invoice N°:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Tax"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Taxes:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total (excl. taxes):"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Total:"
 msgstr ""
 
 #, fuzzy
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "Unit Price"
 msgstr "Цена за единицу"
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT Number:"
 msgstr ""
 
-msgctxt "odt:account.invoice:0"
+msgctxt "odt:account.invoice:"
 msgid "VAT:"
 msgstr ""
 
 #, fuzzy
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Canceled"
 msgstr "Отменено"
 
 #, fuzzy
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Draft"
 msgstr "Черновик"
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Opened"
 msgstr ""
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Paid"
 msgstr ""
 
-msgctxt "selection:account.invoice,state:0"
+msgctxt "selection:account.invoice,state:"
 msgid "Pro forma"
 msgstr ""
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Credit Note"
 msgstr ""
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Credit Note"
 msgstr ""
 
-msgctxt "selection:account.invoice,type:0"
+msgctxt "selection:account.invoice,type:"
 msgid "Supplier Invoice"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Credit Note"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Credit Note"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,invoice_type:0"
+msgctxt "selection:account.invoice.line,invoice_type:"
 msgid "Supplier Invoice"
 msgstr ""
 
 #, fuzzy
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Comment"
 msgstr "Комментарии"
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Line"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Subtotal"
 msgstr ""
 
-msgctxt "selection:account.invoice.line,type:0"
+msgctxt "selection:account.invoice.line,type:"
 msgid "Title"
 msgstr ""
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Partial Payment"
 msgstr ""
 
-msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgctxt "selection:account.invoice.pay.ask,type:"
 msgid "Write-Off"
 msgstr ""
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid ""
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "April"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "August"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "December"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "February"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "January"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "July"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "June"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "March"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "May"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "November"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "October"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,month:"
+msgid "September"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Fixed"
+msgstr "Фиксированная"
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Percentage on Total"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,type:"
+msgid "Remainder"
+msgstr ""
+
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid ""
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Friday"
+msgstr "Пятница"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Monday"
+msgstr "Понедельник"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Saturday"
+msgstr "Суббота"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Sunday"
+msgstr "Воскресенье"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Thursday"
+msgstr "Четверг"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Tuesday"
+msgstr "Вторник"
+
+#, fuzzy
+msgctxt "selection:account.invoice.payment_term.line,weekday:"
+msgid "Wednesday"
+msgstr "Среда"
+
+msgctxt "view:account.invoice.credit.start:"
 msgid "Are you sure to credit those/this invoice(s)?"
 msgstr ""
 
-msgctxt "view:account.invoice.credit_invoice.init:0"
+msgctxt "view:account.invoice.credit.start:"
 msgid "Credit Invoice"
 msgstr ""
 
 #, fuzzy
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "General"
 msgstr "Основной"
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Line"
 msgstr ""
 
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Invoice Lines"
 msgstr ""
 
 #, fuzzy
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Notes"
 msgstr "Комментарии"
 
 #, fuzzy
-msgctxt "view:account.invoice.line:0"
+msgctxt "view:account.invoice.line:"
 msgid "Products"
 msgstr "ТМЦ"
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Amount Second Currency"
-msgstr ""
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Credit"
-msgstr ""
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Debit"
-msgstr ""
-
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Lines to Pay"
+msgctxt "view:account.invoice.pay.ask:"
+msgid "Pay Invoice"
 msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgctxt "view:account.invoice.pay.start:"
 msgid "Pay Invoice"
 msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.ask:0"
-msgid "Payment Lines"
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Line"
 msgstr ""
 
-msgctxt "view:account.invoice.pay_invoice.init:0"
-msgid "Pay Invoice"
+msgctxt "view:account.invoice.payment_term.line:"
+msgid "Payment Term Lines"
 msgstr ""
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term"
 msgstr ""
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Line"
 msgstr ""
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Term Lines"
 msgstr ""
 
-msgctxt "view:account.invoice.payment_term:0"
+msgctxt "view:account.invoice.payment_term:"
 msgid "Payment Terms"
 msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "Print Invoice"
 msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "The invoices will be sent <i>directly</i> to the printer."
 msgstr ""
 
-msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgctxt "view:account.invoice.print.warning:"
 msgid "You have selected more than one invoice to print."
 msgstr ""
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Tax"
 msgstr ""
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Invoice Taxes"
 msgstr ""
 
-msgctxt "view:account.invoice.tax:0"
+msgctxt "view:account.invoice.tax:"
 msgid "Tax Code"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice.tax:"
+msgid "Taxes"
+msgstr ""
+
+msgctxt "view:account.invoice:"
 msgid "Amount Second Currency"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Credit"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Debit"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoice"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Invoices"
 msgstr ""
 
 #, fuzzy
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Lines"
 msgstr "Строки"
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Other Info"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Payment Lines"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Pro For_ma"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "Taxes"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Cancel"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Draft"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Open"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Pay"
 msgstr ""
 
-msgctxt "view:account.invoice:0"
+msgctxt "view:account.invoice:"
 msgid "_Reset to Draft"
 msgstr ""
 
-msgctxt "view:party.party:0"
+msgctxt "view:account.move.line:"
+msgid "Amount Second Currency"
+msgstr ""
+
+msgctxt "view:account.move.line:"
+msgid "Credit"
+msgstr ""
+
+msgctxt "view:account.move.line:"
+msgid "Debit"
+msgstr ""
+
+msgctxt "view:account.move.line:"
+msgid "Lines to Pay"
+msgstr ""
+
+msgctxt "view:account.move.line:"
+msgid "Payment Lines"
+msgstr ""
+
+msgctxt "view:party.party:"
 msgid "Payment Terms"
 msgstr ""
 
-msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgctxt "wizard_button:account.invoice.credit,start,credit:"
 msgid "Credit"
 msgstr ""
 
 #, fuzzy
-msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.credit,start,end:"
 msgid "Cancel"
 msgstr "Отменить"
 
 #, fuzzy
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgctxt "wizard_button:account.invoice.pay,ask,end:"
 msgid "Cancel"
 msgstr "Отменить"
 
 #, fuzzy
-msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgctxt "wizard_button:account.invoice.pay,ask,pay:"
 msgid "Ok"
-msgstr "Ок"
+msgstr "Да"
 
 #, fuzzy
-msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgctxt "wizard_button:account.invoice.pay,start,choice:"
 msgid "Ok"
-msgstr "Ок"
+msgstr "Да"
 
 #, fuzzy
-msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgctxt "wizard_button:account.invoice.pay,start,end:"
 msgid "Cancel"
 msgstr "Отменить"
 
 #, fuzzy
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgctxt "wizard_button:account.invoice.print,warning,end:"
 msgid "Cancel"
 msgstr "Отменить"
 
-#, fuzzy
-msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgctxt "wizard_button:account.invoice.print,warning,print_:"
 msgid "Print"
-msgstr "Печать"
+msgstr ""
diff --git a/party.py b/party.py
index f92cdc1..7fd97bb 100644
--- a/party.py
+++ b/party.py
@@ -1,6 +1,7 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 from trytond.model import ModelView, ModelSQL, fields
+from trytond.pool import Pool
 
 
 class Address(ModelSQL, ModelView):
@@ -12,9 +13,25 @@ Address()
 
 class Party(ModelSQL, ModelView):
     _name = 'party.party'
-    payment_term = fields.Property(fields.Many2One(
-        'account.invoice.payment_term', string='Invoice Payment Term'))
+    customer_payment_term = fields.Property(fields.Many2One(
+        'account.invoice.payment_term', string='Customer Payment Term'))
     supplier_payment_term = fields.Property(fields.Many2One(
         'account.invoice.payment_term', string='Supplier Payment Term'))
 
+    def init(self, module_name):
+        ir_model_field_obj = Pool().get('ir.model.field')
+
+        # Migration from 2.2: property field payment_term renamed
+        # to customer_payment_term
+        field_ids = ir_model_field_obj.search([
+                ('name', '=', 'payment_term'),
+                ('model.model', '=', 'party.party')
+                ])
+        if field_ids:
+            ir_model_field_obj.write(field_ids, {
+                    'name': 'customer_payment_term',
+                    })
+
+        super(Party, self).init(module_name)
+
 Party()
diff --git a/party.xml b/party.xml
index e606dc7..b31c059 100644
--- a/party.xml
+++ b/party.xml
@@ -44,8 +44,8 @@ this repository contains the full copyright notices and license terms. -->
                         expr="/form/notebook/page[@id="accounting"]/field[@name="vat_number"]"
                         position="after">
                         <separator string="Payment Terms" colspan="4" id="payment_terms"/>
-                        <label name="payment_term"/>
-                        <field name="payment_term"/>
+                        <label name="customer_payment_term"/>
+                        <field name="customer_payment_term"/>
                         <label name="supplier_payment_term"/>
                         <field name="supplier_payment_term"/>
                     </xpath>
diff --git a/payment_term.py b/payment_term.py
index fb3d51b..3c32599 100644
--- a/payment_term.py
+++ b/payment_term.py
@@ -1,8 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 from decimal import Decimal
-import datetime
-import time
 from dateutil.relativedelta import relativedelta
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.backend import TableHandler
@@ -15,7 +13,8 @@ class PaymentTerm(ModelSQL, ModelView):
     'Payment Term'
     _name = 'account.invoice.payment_term'
     _description = __doc__
-    name = fields.Char('Payment Term', size=None, required=True, translate=True)
+    name = fields.Char('Payment Term', 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',
@@ -33,32 +32,40 @@ class PaymentTerm(ModelSQL, ModelView):
         return True
 
     def compute(self, amount, currency, payment_term, date=None):
-        '''
-        Return list with (date, amount) for each payment term lines
-        '''
+        """Calculate payment terms and return a list of tuples
+        with (date, amount) for each payment term line.
+
+        amount must be a Decimal used for the calculation and
+        both currency and payment_term must be BrowseRecord. If
+        specified, date will be used as the start date, otherwise
+        current date will be used.
+        """
         #TODO implement business_days
         # http://pypi.python.org/pypi/BusinessHours/
         pool = Pool()
-        type_obj = pool.get('account.invoice.payment_term.line.type')
-        delay_obj = pool.get(
-                'account.invoice.payment_term.line.delay')
+        line_obj = pool.get('account.invoice.payment_term.line')
         currency_obj = pool.get('currency.currency')
         date_obj = pool.get('ir.date')
 
+        sign = 1 if amount >= Decimal('0.0') else -1
         res = []
         if date is None:
             date = date_obj.today()
         remainder = amount
         for line in payment_term.lines:
-            value = type_obj.get_value(line, remainder, currency)
-            value_date = delay_obj.get_date(line, date)
+            value = line_obj.get_value(line, remainder, amount, currency)
+            value_date = line_obj.get_date(line, date)
             if not value or not value_date:
                 if (not remainder) and line.amount:
                     self.raise_user_error('invalid_line')
                 else:
                     continue
+            if ((remainder - value) * sign) < Decimal('0.0'):
+                res.append((value_date, remainder))
+                break
             res.append((value_date, value))
             remainder -= value
+
         if not currency_obj.is_zero(currency, remainder):
             self.raise_user_error('missing_remainder')
         return res
@@ -66,74 +73,31 @@ class PaymentTerm(ModelSQL, ModelView):
 PaymentTerm()
 
 
-class PaymentTermLineType(ModelSQL, ModelView):
-    'Payment Term Line Type'
-    _name = 'account.invoice.payment_term.line.type'
-    _description = __doc__
-    name = fields.Char('Name', size=None, translate=True, required=True)
-    code = fields.Char('Code', size=None, required=True)
-
-    def __init__(self):
-        super(PaymentTermLineType, self).__init__()
-        self._sql_constraints += [
-            ('code_uniq', 'UNIQUE(code)', 'The code must be unique!'),
-        ]
-        self._order.insert(0, ('name', 'ASC'))
-
-    def get_value(self, line, amount, currency):
-        currency_obj = Pool().get('currency.currency')
-        if line.type == 'fixed':
-            return currency_obj.compute(line.currency, line.amount, currency)
-        elif line.type == 'percent':
-            return currency_obj.round(currency,
-                    amount * line.percentage / Decimal('100'))
-        elif line.type == 'remainder':
-            return currency_obj.round(currency, amount)
-        return None
-
-PaymentTermLineType()
-
-
-class PaymentTermLineDelay(ModelSQL, ModelView):
-    'Payment Term Line Delay'
-    _name = 'account.invoice.payment_term.line.delay'
-    _description = __doc__
-    name = fields.Char('Name', size=None, translate=True, required=True)
-    code = fields.Char('Code', size=None, required=True)
-
-    def __init__(self):
-        super(PaymentTermLineDelay, self).__init__()
-        self._sql_constraints += [
-            ('code_uniq', 'UNIQUE(code)', 'The code must be unique!'),
-        ]
-        self._order.insert(0, ('name', 'ASC'))
-
-    def get_date(self, line, date):
-        value = None
-        if line.delay in ('net_days', 'end_month'):
-            value = date + relativedelta(days=line.days)
-            if line.delay == 'end_month':
-                value += relativedelta(day=31)
-        return value
-
-PaymentTermLineDelay()
-
-
 class PaymentTermLine(ModelSQL, ModelView):
     'Payment Term Line'
     _name = 'account.invoice.payment_term.line'
     _description = __doc__
-    sequence = fields.Integer('Sequence',
+    sequence = fields.Integer('Sequence', required=True,
             help='Use to order lines in ascending order')
     payment = fields.Many2One('account.invoice.payment_term', 'Payment Term',
             required=True, ondelete="CASCADE")
-    type = fields.Selection('get_type', 'Type', required=True,
+    type = fields.Selection([
+            ('fixed', 'Fixed'),
+            ('percent', 'Percentage on Remainder'),
+            ('percent_on_total', 'Percentage on Total'),
+            ('remainder', 'Remainder'),
+            ], 'Type', required=True,
             on_change=['type'])
     percentage = fields.Numeric('Percentage', digits=(16, 8),
         states={
-            'invisible': Eval('type') != 'percent',
-            'required': Eval('type') == 'percent',
-            }, depends=['type'], help='In %')
+            'invisible': ~Eval('type').in_(['percent', 'percent_on_total']),
+            'required': Eval('type').in_(['percent', 'percent_on_total']),
+            }, on_change=['percentage'], depends=['type'])
+    divisor = fields.Numeric('Divisor', digits=(16, 8),
+        states={
+            'invisible': ~Eval('type').in_(['percent', 'percent_on_total']),
+            'required': Eval('type').in_(['percent', 'percent_on_total']),
+            }, on_change=['divisor'], depends=['type'])
     amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)),
         states={
             'invisible': Eval('type') != 'fixed',
@@ -146,12 +110,50 @@ class PaymentTermLine(ModelSQL, ModelView):
             }, depends=['type'])
     currency_digits = fields.Function(fields.Integer('Currency Digits',
         on_change_with=['currency']), 'get_currency_digits')
-    days = fields.Integer('Number of Days')
-    delay = fields.Selection('get_delay', 'Condition', required=True)
+    day = fields.Integer('Day of Month')
+    month = fields.Selection([
+            (None, ''),
+            ('1', 'January'),
+            ('2', 'February'),
+            ('3', 'March'),
+            ('4', 'April'),
+            ('5', 'May'),
+            ('6', 'June'),
+            ('7', 'July'),
+            ('8', 'August'),
+            ('9', 'September'),
+            ('10', 'October'),
+            ('11', 'November'),
+            ('12', 'December'),
+            ], 'Month', sort=False)
+    weekday = fields.Selection([
+            (None, ''),
+            ('0', 'Monday'),
+            ('1', 'Tuesday'),
+            ('2', 'Wednesday'),
+            ('3', 'Thursday'),
+            ('4', 'Friday'),
+            ('5', 'Saturday'),
+            ('6', 'Sunday'),
+            ], 'Day of Week', sort=False)
+    months = fields.Integer('Number of Months', required=True)
+    weeks = fields.Integer('Number of Weeks', required=True)
+    days = fields.Integer('Number of Days', required=True)
 
     def __init__(self):
         super(PaymentTermLine, self).__init__()
         self._order.insert(0, ('sequence', 'ASC'))
+        self._sql_constraints += [
+            ('day', 'CHECK(day BETWEEN 1 AND 31)',
+                'Day of month must be between 1 and 31.'),
+            ]
+        self._constraints += [
+            ('check_percentage_and_divisor', 'invalid_percentage_and_divisor'),
+            ]
+        self._error_messages.update({
+                'invalid_percentage_and_divisor': 'Percentage and '
+                        'Divisor values are not consistent.',
+                })
 
     def init(self, module_name):
         super(PaymentTermLine, self).init(module_name)
@@ -164,23 +166,33 @@ class PaymentTermLine(ModelSQL, ModelView):
                     'SET percentage = percent * 100')
             table.drop_column('percent', exception=True)
 
+        # Migration from 2.2
+        if table.column_exist('delay'):
+            cursor.execute('UPDATE "' + self._table + '" SET day = 31 '
+                "WHERE delay = 'end_month'")
+            table.drop_column('delay', exception=True)
+            ids = self.search([])
+            for line in self.browse(ids):
+                if line.percentage:
+                    self.write(line.id, {
+                            'divisor': self.round(Decimal('100.0') /
+                                line.percentage, self.divisor.digits[1]),
+                            })
+
+    def default_currency_digits(self):
+        return 2
+
     def default_type(self):
         return 'remainder'
 
-    def default_delay(self):
-        return 'net_days'
+    def default_months(self):
+        return 0
 
-    def get_type(self):
-        type_obj = Pool().get('account.invoice.payment_term.line.type')
-        type_ids = type_obj.search([])
-        types = type_obj.browse(type_ids)
-        return [(x.code, x.name) for x in types]
+    def default_weeks(self):
+        return 0
 
-    def get_delay(self):
-        delay_obj = Pool().get('account.invoice.payment_term.line.delay')
-        delay_ids = delay_obj.search([])
-        delays = delay_obj.browse(delay_ids)
-        return [(x.code, x.name) for x in delays]
+    def default_days(self):
+        return 0
 
     def on_change_type(self, vals):
         if not 'type' in vals:
@@ -188,11 +200,28 @@ class PaymentTermLine(ModelSQL, ModelView):
         res = {}
         if vals['type'] != 'fixed':
             res['amount'] = Decimal('0.0')
-            res['currency'] =  False
-        if vals['type'] != 'percent':
-            res['percentage'] =  Decimal('0.0')
+            res['currency'] = None
+        if vals['type'] not in ('percent', 'percent_on_total'):
+            res['percentage'] = Decimal('0.0')
+            res['divisor'] = Decimal('0.0')
         return res
 
+    def on_change_percentage(self, value):
+        if not value.get('percentage'):
+            return {'divisor': 0.0}
+        return {
+            'divisor': self.round(Decimal('100.0') / value['percentage'],
+                self.divisor.digits[1]),
+            }
+
+    def on_change_divisor(self, value):
+        if not value.get('divisor'):
+            return {'percentage': 0.0}
+        return {
+            'percentage': self.round(Decimal('100.0') / value['divisor'],
+                self.percentage.digits[1]),
+            }
+
     def on_change_with_currency_digits(self, vals):
         currency_obj = Pool().get('currency.currency')
         if vals.get('currency'):
@@ -209,6 +238,59 @@ class PaymentTermLine(ModelSQL, ModelView):
                 res[line.id] = 2
         return res
 
-PaymentTermLine()
+    def get_delta(self, line):
+        return {
+            'day': line.day,
+            'month': int(line.month) if line.month else None,
+            'days': line.days,
+            'weeks': line.weeks,
+            'months': line.months,
+            'weekday': int(line.weekday) if line.weekday else None,
+            }
+
+    def get_date(self, line, date):
+        return date + relativedelta(**self.get_delta(line))
+
+    def get_value(self, line, remainder, amount, currency):
+        currency_obj = Pool().get('currency.currency')
+        if line.type == 'fixed':
+            return currency_obj.compute(line.currency, line.amount, currency)
+        elif line.type == 'percent':
+            return currency_obj.round(currency,
+                remainder * line.percentage / Decimal('100'))
+        elif line.type == 'percent_on_total':
+            return currency_obj.round(currency,
+                amount * line.percentage / Decimal('100'))
+        elif line.type == 'remainder':
+            return currency_obj.round(currency, remainder)
+        return None
+
+    @staticmethod
+    def round(number, digits):
+        quantize = Decimal(10) ** -Decimal(digits)
+        return Decimal(number).quantize(quantize)
 
+    def check_percentage_and_divisor(self, ids):
+        "Check consistency between percentage and divisor"
+        percentage_digits = self.percentage.digits[1]
+        divisor_digits = self.divisor.digits[1]
+        for line in self.browse(ids):
+            if line.type not in ('percent', 'percent_on_total'):
+                continue
+            if line.percentage is None or line.divisor is None:
+                return False
+            if line.percentage == line.divisor == Decimal('0.0'):
+                continue
+            percentage = line.percentage
+            divisor = line.divisor
+            calc_percentage = self.round(Decimal('100.0') / divisor,
+                    percentage_digits)
+            calc_divisor = self.round(Decimal('100.0') / percentage,
+                    divisor_digits)
+            if (percentage == Decimal('0.0') or divisor == Decimal('0.0')
+                    or percentage != calc_percentage
+                    and divisor != calc_divisor):
+                return False
+        return True
 
+PaymentTermLine()
diff --git a/payment_term.xml b/payment_term.xml
index 309ed26..5a6a24a 100644
--- a/payment_term.xml
+++ b/payment_term.xml
@@ -3,6 +3,8 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
+        <menuitem name="Payment Terms" parent="account.menu_account_configuration"
+            id="menu_payment_terms_configuration"/>
         <record model="ir.ui.view" id="payment_term_view_form">
             <field name="model">account.invoice.payment_term</field>
             <field name="type">form</field>
@@ -15,37 +17,8 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="active" xexpand="0" width="100"/>
                     <notebook colspan="4">
                         <page name="lines">
-                            <field name="lines" colspan="4">
-                                <tree string="Payment Term Line" sequence="sequence">
-                                    <field name="type"/>
-                                    <field name="percentage"/>
-                                    <field name="amount"/>
-                                    <field name="currency"/>
-                                    <field name="days"/>
-                                    <field name="delay"/>
-                                    <field name="sequence" tree_invisible="1"/>
-                                    <field name="currency_digits" tree_invisible="1"/>
-                                </tree>
-                                <form string="Payment Term Lines">
-                                    <label name="type"/>
-                                    <field name="type"/>
-                                    <group col="1" id="label_amount_percent">
-                                        <label name="percentage" yfill="1" xexpand="1" yexpand="1"/>
-                                        <label name="amount" yfill="1" xexpand="1" yexpand="1"/>
-                                    </group>
-                                    <group col="3" id="amount_percent">
-                                        <field name="percentage" colspan="3"/>
-                                        <field name="amount"/>
-                                        <label name="currency"/>
-                                        <field name="currency"/>
-                                    </group>
-                                    <label name="days"/>
-                                    <field name="days"/>
-                                    <label name="delay"/>
-                                    <field name="delay"/>
-                                    <field name="currency_digits" invisible="1"/>
-                                </form>
-                            </field>
+                            <field name="lines" colspan="4"
+                                view_ids="account_invoice.payment_term_line_view_list_sequence"/>
                         </page>
                         <page name="description">
                             <field name="description" colspan="4"/>
@@ -99,6 +72,91 @@ this repository contains the full copyright notices and license terms. -->
             <field name="perm_create" eval="True"/>
             <field name="perm_delete" eval="True"/>
         </record>
+
+        <record model="ir.ui.view" id="payment_term_line_view_list">
+            <field name="model">account.invoice.payment_term.line</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="10"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Payment Term Line">
+                    <field name="payment"/>
+                    <field name="type"/>
+                    <field name="percentage"/>
+                    <field name="amount"/>
+                    <field name="currency"/>
+                    <field name="months"/>
+                    <field name="month"/>
+                    <field name="weeks"/>
+                    <field name="weekday"/>
+                    <field name="days"/>
+                    <field name="day"/>
+                    <field name="sequence" tree_invisible="1"/>
+                    <field name="currency_digits" tree_invisible="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="payment_term_line_view_list_sequence">
+            <field name="model">account.invoice.payment_term.line</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="20"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Payment Term Line" sequence="sequence">
+                    <field name="type"/>
+                    <field name="percentage"/>
+                    <field name="amount"/>
+                    <field name="currency"/>
+                    <field name="months"/>
+                    <field name="month"/>
+                    <field name="weeks"/>
+                    <field name="weekday"/>
+                    <field name="days"/>
+                    <field name="day"/>
+                    <field name="sequence" tree_invisible="1"/>
+                    <field name="currency_digits" tree_invisible="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="payment_term_line_view_form">
+            <field name="model">account.invoice.payment_term.line</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Payment Term Lines">
+                    <label name="type"/>
+                    <field name="type"/>
+                    <newline/>
+                    <label name="amount"/>
+                    <field name="amount"/>
+                    <label name="currency"/>
+                    <field name="currency"/>
+                    <newline/>
+                    <label name="percentage"/>
+                    <field name="percentage"/>
+                    <label name="divisor"/>
+                    <field name="divisor"/>
+                    <label name="months"/>
+                    <field name="months"/>
+                    <label name="month"/>
+                    <field name="month"/>
+                    <label name="weeks"/>
+                    <field name="weeks"/>
+                    <label name="weekday"/>
+                    <field name="weekday"/>
+                    <label name="days"/>
+                    <field name="days"/>
+                    <label name="day"/>
+                    <field name="day"/>
+                </form>
+                ]]>
+            </field>
+        </record>
+
         <record model="ir.model.access" id="access_payment_term_line">
             <field name="model" search="[('model', '=', 'account.invoice.payment_term.line')]"/>
             <field name="perm_read" eval="True"/>
@@ -116,39 +174,5 @@ this repository contains the full copyright notices and license terms. -->
             <field name="perm_delete" eval="True"/>
         </record>
 
-        <record model="account.invoice.payment_term.line.type"
-            id="payment_term_line_type_fixed">
-            <field name="name">Fixed</field>
-            <field name="code">fixed</field>
-        </record>
-        <record model="account.invoice.payment_term.line.type"
-            id="payment_term_line_type_percent">
-            <field name="name">Percentage</field>
-            <field name="code">percent</field>
-        </record>
-        <record model="account.invoice.payment_term.line.type"
-            id="payment_term_line_type_remainder">
-            <field name="name">Remainder</field>
-            <field name="code">remainder</field>
-        </record>
-
-        <record model="account.invoice.payment_term.line.delay"
-            id="payment_term_line_delay_net_days">
-            <field name="name">Net Days</field>
-            <field name="code">net_days</field>
-        </record>
-        <record model="account.invoice.payment_term.line.delay"
-            id="payment_term_line_delay_end_month">
-            <field name="name">End Month</field>
-            <field name="code">end_month</field>
-        </record>
-        <record model="ir.model.access" id="access_payment_term_line_type">
-            <field name="model"
-                search="[('model', '=', 'account.invoice.payment_term.line.type')]"/>
-            <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>
     </data>
 </tryton>
diff --git a/setup.py b/setup.py
index 439b5d0..96ff654 100644
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@ minor_version = int(minor_version)
 
 requires = ['python-dateutil']
 for dep in info.get('depends', []):
-    if not re.match(r'(ir|res|workflow|webdav)(\W|$)', dep):
+    if not re.match(r'(ir|res|webdav)(\W|$)', dep):
         requires.append('trytond_%s >= %s.%s, < %s.%s' %
                 (dep, major_version, minor_version, major_version,
                     minor_version + 1))
diff --git a/tests/__init__.py b/tests/__init__.py
index 9b51bcb..91fc30b 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,4 +1,4 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 
-from test_account_invoice import suite
+from .test_account_invoice import suite
diff --git a/tests/test_account_invoice.py b/tests/test_account_invoice.py
index 8bce50f..a350835 100644
--- a/tests/test_account_invoice.py
+++ b/tests/test_account_invoice.py
@@ -2,15 +2,20 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 
-import sys, os
+import sys
+import os
 DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
     '..', '..', '..', '..', '..', 'trytond')))
 if os.path.isdir(DIR):
     sys.path.insert(0, os.path.dirname(DIR))
 
 import unittest
+import datetime
+from decimal import Decimal
 import trytond.tests.test_tryton
-from trytond.tests.test_tryton import test_view, test_depends
+from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view,\
+        test_depends
+from trytond.transaction import Transaction
 
 
 class AccountInvoiceTestCase(unittest.TestCase):
@@ -20,6 +25,8 @@ class AccountInvoiceTestCase(unittest.TestCase):
 
     def setUp(self):
         trytond.tests.test_tryton.install_module('account_invoice')
+        self.payment_term = POOL.get('account.invoice.payment_term')
+        self.currency = POOL.get('currency.currency')
 
     def test0005views(self):
         '''
@@ -33,6 +40,62 @@ class AccountInvoiceTestCase(unittest.TestCase):
         '''
         test_depends()
 
+    def test0010payment_term(self):
+        '''
+        Test payment_term.
+        '''
+        with Transaction().start(DB_NAME, USER, context=CONTEXT):
+            cu1_id = self.currency.create({
+                    'name': 'cu1',
+                    'symbol': 'cu1',
+                    'code': 'cu1'
+                    })
+            cu1 = self.currency.browse(cu1_id)
+
+            term_id = self.payment_term.create({
+                    'name': '30 days, 1 month, 1 month + 15 days',
+                    'lines': [
+                        ('create', {
+                                'sequence': 0,
+                                'type': 'percent',
+                                'divisor': 4,
+                                'percentage': 25,
+                                'days': 30,
+                                }),
+                        ('create', {
+                                'sequence': 1,
+                                'type': 'percent_on_total',
+                                'divisor': 4,
+                                'percentage': 25,
+                                'months': 1,
+                                }),
+                        ('create', {
+                                'sequence': 2,
+                                'type': 'fixed',
+                                'months': 1,
+                                'days': 30,
+                                'amount': Decimal('396.84'),
+                                'currency': cu1_id,
+                                }),
+                        ('create', {
+                                'sequence': 3,
+                                'type': 'remainder',
+                                'months': 2,
+                                'days': 30,
+                                'day': 15,
+                                })]
+                    })
+            term = self.payment_term.browse(term_id)
+            terms = term.compute(Decimal('1587.35'), cu1, term,
+                    date=datetime.date(2011, 10, 1))
+            self.assertEqual(terms, [
+                    (datetime.date(2011, 10, 31), Decimal('396.84')),
+                    (datetime.date(2011, 11, 01), Decimal('396.84')),
+                    (datetime.date(2011, 12, 01), Decimal('396.84')),
+                    (datetime.date(2012, 01, 14), Decimal('396.83')),
+                    ])
+
+
 def suite():
     suite = trytond.tests.test_tryton.suite()
     suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index d26eb65..a314f9e 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 2.2.1
+Version: 2.4.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.2/
+Download-URL: http://downloads.tryton.org/2.4/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index 2c3ad87..4d1d090 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -20,8 +20,10 @@ setup.py
 ./tests/__init__.py
 ./tests/test_account_invoice.py
 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_ES.po
 locale/fr_FR.po
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index 4c4981e..b1675a4 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -1,8 +1,8 @@
 python-dateutil
-trytond_account >= 2.2, < 2.3
-trytond_company >= 2.2, < 2.3
-trytond_party >= 2.2, < 2.3
-trytond_product >= 2.2, < 2.3
-trytond_currency >= 2.2, < 2.3
-trytond_account_product >= 2.2, < 2.3
-trytond >= 2.2, < 2.3
\ No newline at end of file
+trytond_account >= 2.4, < 2.5
+trytond_company >= 2.4, < 2.5
+trytond_party >= 2.4, < 2.5
+trytond_product >= 2.4, < 2.5
+trytond_currency >= 2.4, < 2.5
+trytond_account_product >= 2.4, < 2.5
+trytond >= 2.4, < 2.5
\ No newline at end of file
commit e1fd26053ce1850d7d1ac55699a6895796e217a7
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Mar 25 15:28:17 2012 +0200

    Adding Format header for DEP5.

diff --git a/debian/copyright b/debian/copyright
index 0ce2e9b..21a85a7 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,3 +1,5 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
 Files: *
 Copyright:
  (C) 2004-2008 Tiny SPRL
commit cddf703c5ed1e5c4c9e3b71414ef5acd31cd0904
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri Feb 24 14:09:12 2012 +0100

    Adding myself to copyright.

diff --git a/debian/copyright b/debian/copyright
index 9e33b25..0ce2e9b 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -7,7 +7,9 @@ Copyright:
 License: GPL-3+
 
 Files: debian/*
-Copyright: (C) 2009-2012 Daniel Baumann <daniel at debian.org>
+Copyright:
+ (C) 2009-2012 Daniel Baumann <daniel at debian.org>
+ (C) 2012 Mathias Behrle <mathiasb at m9s.biz>
 License: GPL-3+
 
 License: GPL-3+
commit c3a892dfd972349c1b5cfb1e140450e49e355b6b
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri Feb 24 14:01:03 2012 +0100

    Updating year in copyright.

diff --git a/debian/copyright b/debian/copyright
index b2d5d1a..9e33b25 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -7,7 +7,7 @@ Copyright:
 License: GPL-3+
 
 Files: debian/*
-Copyright: (C) 2009-2011 Daniel Baumann <daniel at debian.org>
+Copyright: (C) 2009-2012 Daniel Baumann <daniel at debian.org>
 License: GPL-3+
 
 License: GPL-3+
commit f239cc48031f2bdbeaca2f8ed8f79c0e414beb78
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri Feb 24 13:47:00 2012 +0100

    Updating to Standards-Version: 3.9.3, no changes needed.

diff --git a/debian/control b/debian/control
index d3015c6..e0bde83 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
 Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
 Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
-Standards-Version: 3.9.2
+Standards-Version: 3.9.3
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
commit e4d1f03069edfc1ff2d7e5f5b1cb51f62ed475b3
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Dec 26 18:09:13 2011 +0100

    Releasing debian version 2.2.1-1.

diff --git a/debian/changelog b/debian/changelog
index c0ed0a7..96ace14 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+tryton-modules-account-invoice (2.2.1-1) unstable; urgency=low
+
+  * Merging upstream version 2.2.1.
+  * Bumping X-Python-Version to >=2.6.
+  * Updating versioned tryton depends to 2.2.
+  * Merging upstream version 2.2.0.
+  * Removing deprecated XB-Python-Version for dh_python2.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Mon, 26 Dec 2011 13:54:33 +0100
+
 tryton-modules-account-invoice (2.0.0-2) unstable; urgency=low
 
   [ Daniel Baumann ]
commit e76a8cd31e909b510e13a47b6d133ee5da4add7a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Dec 26 13:35:46 2011 +0100

    Merging upstream version 2.2.1.

diff --git a/CHANGELOG b/CHANGELOG
index b544576..a86d3b4 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.2.1 - 2011-12-26
+* Bug fixes (see mercurial logs for details)
+
 Version 2.2.0 - 2011-10-24
 * Bug fixes (see mercurial logs for details)
 
diff --git a/PKG-INFO b/PKG-INFO
index cc6df67..7b43f96 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
 Name: trytond_account_invoice
-Version: 2.2.0
+Version: 2.2.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
diff --git a/__tryton__.py b/__tryton__.py
index 7df606a..51239e5 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -8,7 +8,7 @@
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
     'name_nl_NL': 'Facturatie',
-    'version': '2.2.0',
+    'version': '2.2.1',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/invoice.py b/invoice.py
index e09463b..4c20569 100644
--- a/invoice.py
+++ b/invoice.py
@@ -194,10 +194,10 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 'FROM "' + self._table + '"')
             for invoice_id, report in cursor.fetchall():
                 if report:
-                    report = base64.decodestring(report)
+                    report = buffer(base64.decodestring(str(report)))
                     cursor.execute('UPDATE "' + self._table + '" '
                         'SET invoice_report_cache = %s '
-                        'WHERE id = %s', (invoice_id, report))
+                        'WHERE id = %s', (report, invoice_id))
                 table.drop_column('invoice_report')
 
         # Add index on create_date
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 0fcd845..d26eb65 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
 Name: trytond-account-invoice
-Version: 2.2.0
+Version: 2.2.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
commit d37feb855d41c8234fd19141b2f2609571469cf2
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Dec 17 13:59:41 2011 +0100

    Bumping X-Python-Version to >=2.6.

diff --git a/debian/control b/debian/control
index 5fc14b8..d3015c6 100644
--- a/debian/control
+++ b/debian/control
@@ -9,7 +9,7 @@ Standards-Version: 3.9.2
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
-X-Python-Version: >= 2.5
+X-Python-Version: >= 2.6
 
 Package: tryton-modules-account-invoice
 Architecture: all
commit c2705767d407c2a824a05bd828fb5e987f8dea0b
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Nov 1 15:19:31 2011 +0100

    Updating versioned tryton depends to 2.2.

diff --git a/debian/control b/debian/control
index 91c3c14..5fc14b8 100644
--- a/debian/control
+++ b/debian/control
@@ -14,10 +14,10 @@ X-Python-Version: >= 2.5
 Package: tryton-modules-account-invoice
 Architecture: all
 Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.0),
- tryton-modules-account (>= 2.0), tryton-modules-account-product (>= 2.0),
- tryton-modules-company (>= 2.0), tryton-modules-currency (>= 2.0),
- tryton-modules-party (>= 2.0), tryton-modules-product (>= 2.0),
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.2),
+ tryton-modules-account (>= 2.2), tryton-modules-account-product (>= 2.2),
+ tryton-modules-company (>= 2.2), tryton-modules-currency (>= 2.2),
+ tryton-modules-party (>= 2.2), tryton-modules-product (>= 2.2),
  python-dateutil, python-pkg-resources
 Description: Tryton Application Platform (Financial and Accounting Module)
  Tryton is a high-level general purpose application platform written in Python
commit f303303ce8ccf8080da1ed6ffff87e9c379edb14
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Oct 31 16:20:27 2011 +0100

    Merging upstream version 2.2.0.

diff --git a/CHANGELOG b/CHANGELOG
index 9c7c50a..b544576 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.2.0 - 2011-10-24
+* Bug fixes (see mercurial logs for details)
+
 Version 2.0.0 - 2011-04-27
 * Bug fixes (see mercurial logs for details)
 * Add field currency_date to set the date for the rate calculation
diff --git a/MANIFEST.in b/MANIFEST.in
index 5343ad8..7f5d5fd 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,4 +6,4 @@ include CHANGELOG
 include LICENSE
 include *.xml
 include *.odt
-include *.csv
+include locale/*.po
diff --git a/PKG-INFO b/PKG-INFO
index 2656498..cc6df67 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 2.0.0
+Version: 2.2.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,23 +15,25 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.0/
+Download-URL: http://downloads.tryton.org/2.2/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Plugins
+Classifier: Framework :: Tryton
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
 Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Czech
 Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
 Classifier: Natural Language :: French
 Classifier: Natural Language :: German
+Classifier: Natural Language :: Russian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.5
 Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Topic :: Office/Business
diff --git a/__tryton__.py b/__tryton__.py
index 675598d..7df606a 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -8,7 +8,7 @@
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
     'name_nl_NL': 'Facturatie',
-    'version': '2.0.0',
+    'version': '2.2.0',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
@@ -71,7 +71,7 @@ Avec la possibilité:
     - de suivre le paiment des factures
     - de définir les numérotations de facture par période ou par année fiscale
     - de créditer n'importe quelle facture
-    
+
 ''',
     'description_nl_NL': '''Module voor facturering met:
     - Betalingstermijnen
@@ -82,7 +82,7 @@ Met de mogelijkheid tot:
     - het volgen van betalingen.
     - het definiëren van factuurreeksen per boekjaar.
     - het crediteren van een factuur.
-    
+
 ''',
     'depends': [
         'ir',
@@ -102,11 +102,13 @@ Met de mogelijkheid tot:
         'account.xml',
     ],
     'translation': [
-        'bg_BG.csv',
-        'de_DE.csv',
-        'es_CO.csv',
-        'es_ES.csv',
-        'fr_FR.csv',
-        'nl_NL.csv',
+        'locale/bg_BG.po',
+        'locale/cs_CZ.po',
+        'locale/de_DE.po',
+        'locale/es_CO.po',
+        'locale/es_ES.po',
+        'locale/fr_FR.po',
+        'locale/nl_NL.po',
+        'locale/ru_RU.po',
     ]
 }
diff --git a/account.py b/account.py
index b5e1bbd..cad747b 100644
--- a/account.py
+++ b/account.py
@@ -1,63 +1,66 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 from trytond.model import ModelView, ModelSQL, fields
-from trytond.pyson import Eval, Not, Equal
+from trytond.pyson import Eval
+from trytond.pool import Pool
 
 
 class FiscalYear(ModelSQL, ModelView):
     _name = 'account.fiscalyear'
     out_invoice_sequence = fields.Many2One('ir.sequence.strict',
-            'Customer Invoice Sequence', required=True,
-            domain=[
-                ('code', '=', 'account.invoice'),
-                ['OR',
-                    ('company', '=', Eval('company')),
-                    ('company', '=', False),
+        'Customer Invoice Sequence', required=True,
+        domain=[
+            ('code', '=', 'account.invoice'),
+            ['OR',
+                ('company', '=', Eval('company')),
+                ('company', '=', False),
                 ],
             ],
-            context={
-                'code': 'account.invoice',
-                'company': Eval('company'),
-            })
+        context={
+            'code': 'account.invoice',
+            'company': Eval('company'),
+            },
+        depends=['company'])
     in_invoice_sequence = fields.Many2One('ir.sequence.strict',
-            'Supplier Invoice Sequence', required=True,
-            domain=[
-                ('code', '=', 'account.invoice'),
-                ['OR',
-                    ('company', '=', Eval('company')),
-                    ('company', '=', False),
+        'Supplier Invoice Sequence', required=True,
+        domain=[
+            ('code', '=', 'account.invoice'),
+            ['OR',
+                ('company', '=', Eval('company')),
+                ('company', '=', False),
                 ],
             ],
-            context={
-                'code': 'account.invoice',
-                'company': Eval('company'),
-            })
+        context={
+            'code': 'account.invoice',
+            'company': Eval('company'),
+            },
+        depends=['company'])
     out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
-            'Customer Credit Note Sequence', required=True,
-            domain=[
-                ('code', '=', 'account.invoice'),
-                ['OR',
-                    ('company', '=', Eval('company')),
-                    ('company', '=', False),
+        'Customer Credit Note Sequence', required=True,
+        domain=[
+            ('code', '=', 'account.invoice'),
+            ['OR',
+                ('company', '=', Eval('company')),
+                ('company', '=', False),
                 ],
             ],
-            context={
-                'code': 'account.invoice',
-                'company': Eval('company'),
-            })
+        context={
+            'code': 'account.invoice',
+            'company': Eval('company'),
+            }, depends=['company'])
     in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
-            'Supplier Credit Note Sequence', required=True,
-            domain=[
-                ('code', '=', 'account.invoice'),
-                ['OR',
-                    ('company', '=', Eval('company')),
-                    ('company', '=', False),
+        'Supplier Credit Note Sequence', required=True,
+        domain=[
+            ('code', '=', 'account.invoice'),
+            ['OR',
+                ('company', '=', Eval('company')),
+                ('company', '=', False),
                 ],
             ],
-            context={
-                'code': 'account.invoice',
-                'company': Eval('company'),
-            })
+        context={
+            'code': 'account.invoice',
+            'company': Eval('company'),
+            }, depends=['company'])
 
     def __init__(self):
         super(FiscalYear, self).__init__()
@@ -84,7 +87,7 @@ class FiscalYear(ModelSQL, ModelView):
         return True
 
     def write(self, ids, vals):
-        invoice_obj = self.pool.get('account.invoice')
+        invoice_obj = Pool().get('account.invoice')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -111,37 +114,41 @@ FiscalYear()
 class Period(ModelSQL, ModelView):
     _name = 'account.period'
     out_invoice_sequence = fields.Many2One('ir.sequence.strict',
-            'Customer Invoice Sequence',
-            domain=[('code', '=', 'account.invoice')],
-            context={'code': 'account.invoice'},
-            states={
-                'required': Equal(Eval('type'), 'standard'),
-                'invisible': Not(Equal(Eval('type'), 'standard')),
-            })
+        'Customer Invoice Sequence',
+        domain=[('code', '=', 'account.invoice')],
+        context={'code': 'account.invoice'},
+        states={
+            'required': Eval('type') == 'standard',
+            'invisible': Eval('type') != 'standard',
+            },
+        depends=['type'])
     in_invoice_sequence = fields.Many2One('ir.sequence.strict',
-            'Supplier Invoice Sequence',
-            domain=[('code', '=', 'account.invoice')],
-            context={'code': 'account.invoice'},
-            states={
-                'required': Equal(Eval('type'), 'standard'),
-                'invisible': Not(Equal(Eval('type'), 'standard')),
-            })
+        'Supplier Invoice Sequence',
+        domain=[('code', '=', 'account.invoice')],
+        context={'code': 'account.invoice'},
+        states={
+            'required': Eval('type') == 'standard',
+            'invisible': Eval('type') != 'standard',
+            },
+        depends=['type'])
     out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
-            'Customer Credit Note Sequence',
-            domain=[('code', '=', 'account.invoice')],
-            context={'code': 'account.invoice'},
-            states={
-                'required': Equal(Eval('type'), 'standard'),
-                'invisible': Not(Equal(Eval('type'), 'standard')),
-            })
+        'Customer Credit Note Sequence',
+        domain=[('code', '=', 'account.invoice')],
+        context={'code': 'account.invoice'},
+        states={
+            'required': Eval('type') == 'standard',
+            'invisible': Eval('type') != 'standard',
+            },
+        depends=['type'])
     in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
-            'Supplier Credit Note Sequence',
-            domain=[('code', '=', 'account.invoice')],
-            context={'code': 'account.invoice'},
-            states={
-                'required': Equal(Eval('type'), 'standard'),
-                'invisible': Not(Equal(Eval('type'), 'standard')),
-            })
+        'Supplier Credit Note Sequence',
+        domain=[('code', '=', 'account.invoice')],
+        context={'code': 'account.invoice'},
+        states={
+            'required': Eval('type') == 'standard',
+            'invisible': Eval('type') != 'standard',
+            },
+        depends=['type'])
 
     def __init__(self):
         super(Period, self).__init__()
@@ -173,7 +180,7 @@ class Period(ModelSQL, ModelView):
         return True
 
     def create(self, vals):
-        fiscalyear_obj = self.pool.get('account.fiscalyear')
+        fiscalyear_obj = Pool().get('account.fiscalyear')
         vals = vals.copy()
         if vals.get('fiscalyear'):
             fiscalyear = fiscalyear_obj.browse(vals['fiscalyear'])
@@ -184,7 +191,7 @@ class Period(ModelSQL, ModelView):
         return super(Period, self).create(vals)
 
     def write(self, ids, vals):
-        invoice_obj = self.pool.get('account.invoice')
+        invoice_obj = Pool().get('account.invoice')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
diff --git a/bg_BG.csv b/bg_BG.csv
deleted file mode 100644
index a29fda4..0000000
--- a/bg_BG.csv
+++ /dev/null
@@ -1,357 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,Не може а променяте последователност на фактура ако има вече отворена фактура за финансовата година,0
-error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,За финансова година трябва да имате различни последователности за фактура  ,0
-error,account.invoice,0,"Base taxes different from invoice lines!
-Re-compute the invoice.","Данъчната основа е различна от тази на редовете на фактурата!
-Наново изчислете фактурата.",0
-error,account.invoice,0,"Taxes defined but not on invoice lines!
-Re-compute the invoice.","Зададени са данъци но не за редове на фактура!
-Преизчислете фактурата.",0
-error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
-Re-compute the invoice.","Данъци са зададени върху редовете на фактурата но не на фактурата!
-Преизчислете фактурата",0
-error,account.invoice,0,The credit account on journal is missing!,Лиспва кредитна сметка за дневника!,0
-error,account.invoice,0,The credit account on journal is the same than the invoice account!,Кредитната сметка на дневника е същата като сметката на фактурата!,0
-error,account.invoice,0,The debit account on journal is missing!,Липсва дебитна сметка за дневник!,0
-error,account.invoice,0,The debit account on journal is the same than the invoice account!,Дебитната сметка на дневника е същата като сметката на фактурата!,0
-error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Няма последователност за фактура върху период/финансова година!,0
-error,account.invoice,0,"You can not create an invoice
-with account from a different invoice company!","Не може да създадете фактура
-със сметка на друга фактурираща фирма!",0
-error,account.invoice,0,"You can not modify an invoice that is opened, paid!",Не може да променяте фактура която е отворена или платена!,0
-error,account.invoice,0,You can not reset to draft an invoice that has move!,Не може да прехвърлите в проект фактура която има движение!,0
-error,account.invoice,0,"You can not use the same account
-as on invoice line!","Не може да ползвате съшата сметка
-като тази на реда от фактурата!",0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Не можете да кредитиратe обезщетение фактура по която не е отворена!,0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,Не можете да кредитиратe обезщетение фактура по която има плащане!,0
-error,account.invoice.line,0,"Line with ""line"" type must have an account!","Ред от вид ""line"" трябва да има сметка!",0
-error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","Ред без ""ред"" трябва да има фактура!",0
-error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!",Не може да добавяте ред към фактура която е отворена/платена/отказана!,0
-error,account.invoice.line,0,"You can not create invoice line
-with account with a different invoice company!","Не може да създавате ред от фактура
-със сметка от различна фактурираща фирма!",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",Не може да променяте ред от фактура която е отворена и/или платена!,0
-error,account.invoice.line,0,"You can not use the same account
-as on the invoice!","Не може да използвате същата сметка
-като тази на фактурата!",0
-error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,Не може да създавате частично плащане за сума по-голяма от сумата за плащане!,0
-error,account.invoice.payment_term,0,Invalid payment term line!,Невалиден ред от условие за плащане!,0
-error,account.invoice.payment_term,0,Payment term missing a remainder line!,В условието за плащане липсва ред от напомняне!,0
-error,account.invoice.payment_term.line.delay,0,The code must be unique!,Кода трябва да е уникален!,0
-error,account.invoice.payment_term.line.type,0,The code must be unique!,Кода трябва да е уникален!,0
-error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!",Не може да добавяте ред към фактура която е отворена/платена/отказана!,0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",Не може да променяте данък от фактура която е отворена и/или платена!,0
-error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,Не може а променяте последователност на фактура ако има вече отворена фактура за финансовата година,0
-error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,За финансова година и една и съща фирма трябва да имате различни последователности за фактура !,0
-field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Последователност за кредитно известие на доставчик,0
-field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Последователност на фактура за доставчик,0
-field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Последователност за кредитно известие на клиент,0
-field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Последователност за фактура на клиент,0
-field,"account.invoice,account",0,Account,Сметка,0
-field,"account.invoice,accounting_date",0,Accounting Date,Дата на осчетоводяване,0
-field,"account.invoice,amount_to_pay",0,Amount to Pay,Сума за плащане,0
-field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Сума за плащане днес,0
-field,"account.invoice,comment",0,Comment,Коментар,0
-field,"account.invoice,company",0,Company,Фирма,0
-field,"account.invoice,currency",0,Currency,Валута,0
-field,"account.invoice,currency_date",0,Currency Date,Текуща дата,0
-field,"account.invoice,currency_digits",0,Currency Digits,Цифри за валута,0
-field,"account.invoice,description",0,Description,Описание,0
-field,"account.invoice,invoice_address",0,Invoice Address,Адрес за фактура,0
-field,"account.invoice,invoice_date",0,Invoice Date,Дата на фактура,0
-field,"account.invoice,invoice_report",0,Invoice Report,Справка за фактура,0
-field,"account.invoice,invoice_report_format",0,Invoice Report Format,Формат на спавка за фактура,0
-field,"account.invoice,journal",0,Journal,Дневник,0
-field,"account.invoice,lines",0,Lines,Редове,0
-field,"account.invoice,lines_to_pay",0,Lines to Pay,Редове за плащане,0
-field,"account.invoice,move",0,Move,Движение,0
-field,"account.invoice,number",0,Number,Номер,0
-field,"account.invoice,party",0,Party,Партньор,0
-field,"account.invoice,party_lang",0,Party Language,Език на партньор,0
-field,"account.invoice,payment_lines",0,Payment Lines,Редове от плащане,0
-field,"account.invoice,payment_term",0,Payment Term,Условие за плащане,0
-field,"account.invoice,rec_name",0,Name,Име,0
-field,"account.invoice,reconciled",0,Reconciled,Съгласуван,0
-field,"account.invoice,reference",0,Reference,Отпратка,0
-field,"account.invoice,state",0,State,Състояние,0
-field,"account.invoice,tax_amount",0,Tax,Данък,0
-field,"account.invoice,taxes",0,Tax Lines,Ред на данъци,0
-field,"account.invoice,total_amount",0,Total,Общо,0
-field,"account.invoice,type",0,Type,Вид,0
-field,"account.invoice,type_name",0,Type,Вид,0
-field,"account.invoice,untaxed_amount",0,Untaxed,Необложен с данък,0
-field,"account.invoice-account.move.line,invoice",0,Invoice,Фактура,0
-field,"account.invoice-account.move.line,line",0,Payment Line,Ред от плащане,0
-field,"account.invoice-account.move.line,rec_name",0,Name,Име,0
-field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,С обежщетение,0
-field,"account.invoice.line,account",0,Account,Сметка,0
-field,"account.invoice.line,amount",0,Amount,Сума,0
-field,"account.invoice.line,company",0,Company,Фирма,0
-field,"account.invoice.line,currency",0,Currency,Валута,0
-field,"account.invoice.line,currency_digits",0,Currency Digits,Цифри за валута,0
-field,"account.invoice.line,description",0,Description,Описание,0
-field,"account.invoice.line,invoice",0,Invoice,Фактура,0
-field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Данъци на фактура,0
-field,"account.invoice.line,invoice_type",0,Invoice Type,Вид фактура,0
-field,"account.invoice.line,note",0,Note,Бележка,0
-field,"account.invoice.line,party",0,Party,Партньор,0
-field,"account.invoice.line,party_lang",0,Party Language,Език на партньор,0
-field,"account.invoice.line,product",0,Product,Продукт,0
-field,"account.invoice.line,quantity",0,Quantity,Количество,0
-field,"account.invoice.line,rec_name",0,Name,Име,0
-field,"account.invoice.line,sequence",0,Sequence,Последователност,0
-field,"account.invoice.line,taxes",0,Taxes,Данъци,0
-field,"account.invoice.line,type",0,Type,Вид,0
-field,"account.invoice.line,unit",0,Unit,Единица,0
-field,"account.invoice.line,unit_digits",0,Unit Digits,Десетични единици,0
-field,"account.invoice.line,unit_price",0,Unit Price,Единична цена,0
-field,"account.invoice.line-account.tax,line",0,Invoice Line,Ред от фактура,0
-field,"account.invoice.line-account.tax,rec_name",0,Name,Име,0
-field,"account.invoice.line-account.tax,tax",0,Tax,Данък,0
-field,"account.invoice.pay_invoice.ask,account",0,Account,Сметка,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Сметка на отписване,0
-field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Платена сума,0
-field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Сума за отписване,0
-field,"account.invoice.pay_invoice.ask,company",0,Company,Фирма,0
-field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Валута при плащане,0
-field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Цифри на валута за плащане,0
-field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Цифри на валута за отписване,0
-field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Валута на отписване,0
-field,"account.invoice.pay_invoice.ask,date",0,Date,Дата,0
-field,"account.invoice.pay_invoice.ask,description",0,Description,Описание,0
-field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Фактура,0
-field,"account.invoice.pay_invoice.ask,journal",0,Journal,Дневник,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Дневник на отписване,0
-field,"account.invoice.pay_invoice.ask,lines",0,Lines,Редове,0
-field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Редове за плащане,0
-field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Редове от плащане,0
-field,"account.invoice.pay_invoice.ask,type",0,Type,Вид,0
-field,"account.invoice.pay_invoice.init,amount",0,Amount,Сума,0
-field,"account.invoice.pay_invoice.init,currency",0,Currency,Валута,0
-field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Цифри за валута,0
-field,"account.invoice.pay_invoice.init,date",0,Date,Дата,0
-field,"account.invoice.pay_invoice.init,description",0,Description,Описание,0
-field,"account.invoice.pay_invoice.init,journal",0,Journal,Дневник,0
-field,"account.invoice.payment_term,active",0,Active,Активен,0
-field,"account.invoice.payment_term,description",0,Description,Описание,0
-field,"account.invoice.payment_term,lines",0,Lines,Редове,0
-field,"account.invoice.payment_term,name",0,Payment Term,Условие за плащане,0
-field,"account.invoice.payment_term,rec_name",0,Name,Име,0
-field,"account.invoice.payment_term.line,amount",0,Amount,Сума,0
-field,"account.invoice.payment_term.line,currency",0,Currency,Валута,0
-field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Цифри за валута,0
-field,"account.invoice.payment_term.line,days",0,Number of Days,Брой дни,0
-field,"account.invoice.payment_term.line,delay",0,Condition,Условие,0
-field,"account.invoice.payment_term.line,payment",0,Payment Term,Условие за плащане,0
-field,"account.invoice.payment_term.line,percentage",0,Percentage,Процент,0
-field,"account.invoice.payment_term.line,rec_name",0,Name,Име,0
-field,"account.invoice.payment_term.line,sequence",0,Sequence,Последователност,0
-field,"account.invoice.payment_term.line,type",0,Type,Вид,0
-field,"account.invoice.payment_term.line.delay,code",0,Code,Код,0
-field,"account.invoice.payment_term.line.delay,name",0,Name,Име,0
-field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Име,0
-field,"account.invoice.payment_term.line.type,code",0,Code,Код,0
-field,"account.invoice.payment_term.line.type,name",0,Name,Име,0
-field,"account.invoice.payment_term.line.type,rec_name",0,Name,Име,0
-field,"account.invoice.tax,account",0,Account,Сметка,0
-field,"account.invoice.tax,amount",0,Amount,Сума,0
-field,"account.invoice.tax,base",0,Base,Основа,0
-field,"account.invoice.tax,base_code",0,Base Code,Основен код,0
-field,"account.invoice.tax,base_sign",0,Base Sign,Основен знак,0
-field,"account.invoice.tax,description",0,Description,Описание,0
-field,"account.invoice.tax,invoice",0,Invoice,Фактура,0
-field,"account.invoice.tax,manual",0,Manual,Ръчно,0
-field,"account.invoice.tax,rec_name",0,Name,Име,0
-field,"account.invoice.tax,sequence",0,Sequence,Последователност,0
-field,"account.invoice.tax,sequence_number",0,Sequence Number,Номер на последователност,0
-field,"account.invoice.tax,tax",0,Tax,Данък,0
-field,"account.invoice.tax,tax_code",0,Tax Code,Код на данък,0
-field,"account.invoice.tax,tax_sign",0,Tax Sign,Знак на данък,0
-field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Последователност за кредитно известие на доставчик,0
-field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Последователност на фактура за доставчик,0
-field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Последователност за кредитно известие на клиент,0
-field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Последователност за фактура на клиент,0
-field,"party.address,invoice",0,Invoice,Фактура,0
-field,"party.party,payment_term",0,Invoice Payment Term,Условие за плащане на фактура,0
-field,"party.party,supplier_payment_term",0,Supplier Payment Term,Условие за плащане на доставчик,0
-help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.",Ако е истина текущара(те) сметка(и) ще бъдат платена(и).,0
-help,"account.invoice.payment_term.line,percentage",0,In %,В %,0
-help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,За подреждане на редовете във възходящ ред,0
-model,"account.invoice,name",0,Invoice,Фактура,0
-model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Фактура - Ред от плащане,0
-model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Начало на кредитна фактура,0
-model,"account.invoice.line,name",0,Invoice Line,Ред от фактура,0
-model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Ред от фактура - Данък,0
-model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Запистване за плащане на фактура,0
-model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Начално плащане на фактура,0
-model,"account.invoice.payment_term,name",0,Payment Term,Условие за плащане,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Ред от условие за плащане,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Ред от забавяне на условие за плащане,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Край на месеца,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Дни (нето),0
-model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Ред от вид условие за плащане,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Фиксиран,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Процент,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Напомняне,0
-model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Предупреждение при отпечатване на справка за фактура,0
-model,"account.invoice.tax,name",0,Invoice Tax,Данък към фактура,0
-model,"ir.action,name",act_invoice_form,All Invoices,Всичко фактури,0
-model,"ir.action,name",act_invoice_form2,Invoices,Фактури,0
-model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Кредитно известие на доставчик,0
-model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Кредитно известие на доставчик,0
-model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Проект на кредитно известие на доставчик,0
-model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,ПРО-ФОРМА на кредитни известия на доставчик,0
-model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Отворени кредитни известия на доставчик,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Фактури на доставчик,0
-model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Фактури на доставчик,0
-model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Шаблон на фактури за доставчик,0
-model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,ПРО-ФОРМА фактури за доставчик,0
-model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Отворени фактури за доставчик,0
-model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Кредитни известия,0
-model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Кредитни известия,0
-model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Проект на кредитно известие,0
-model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,ПРО-ФОРМА на кредитни известия,0
-model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Отворени кредитни известия,0
-model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Фактури,0
-model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Фактури,0
-model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Проект на фактури,0
-model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,ПРО-ФОРМА фактури,0
-model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Отворени фактури,0
-model,"ir.action,name",act_payment_term_form,Payment Terms,Условия за плащане,0
-model,"ir.action,name",act_payment_term_form2,Payment Terms,Условия за плащане,0
-model,"ir.action,name",credit_invoice,Credit,Кредит,0
-model,"ir.action,name",print_invoice_report,Invoice,Фактура,0
-model,"ir.action,name",report_invoice,Invoice,Фактура,0
-model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Плащане на фактура,0
-model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Фактура,0
-model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Всичко фактури,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Кредитно известие на доставчик,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Ново кредитно известие на доставчик,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Проект на кредитно известие на доставчик,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,ПРО-ФОРМА на кредитни известия на доставчик,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Отворени кредитни известия на доставчик,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Фактури на доставчик,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Нова фактура за доставчик,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Проект на фактури за доставчик,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,ПРО-ФОРМА фактури за доставчик,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Отворени фактури за доставчик,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Кредитни известия,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Ново кредитно известие,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Проект на кредитно известие,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,ПРО-ФОРМА на кредитни известия,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Отворени кредитни известия,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Фактури,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Нова фактура,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Проект на фактури,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,ПРО-ФОРМА фактури,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Отворени фактури,0
-model,"ir.ui.menu,name",menu_invoices,Invoices,Фактури,0
-model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Условия за плащане,0
-model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Ново условие за плащане,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Условия за плащане,0
-model,"workflow,name",invoice_workflow,Invoice workflow,Работен процес на фактура,0
-model,"workflow.activity,name",invoice_activity_cancel,Canceled,Отказан,0
-model,"workflow.activity,name",invoice_activity_draft,Draft,Проект,0
-model,"workflow.activity,name",invoice_activity_open,Open,Отваряне,0
-model,"workflow.activity,name",invoice_activity_paid,Paid,Платен,0
-model,"workflow.activity,name",invoice_activity_proforma,Pro forma,ПРО-ФОРМА,0
-odt,account.invoice,0,Amount,Сума,0
-odt,account.invoice,0,Base,Основа,0
-odt,account.invoice,0,Credit Note N°:,Кредитно известие N°:,0
-odt,account.invoice,0,Date,Дата,0
-odt,account.invoice,0,Date:,Дата:,0
-odt,account.invoice,0,Description,Описание,0
-odt,account.invoice,0,Description:,Описание:,0
-odt,account.invoice,0,Draft Credit Note,Проект на кредитно известие,0
-odt,account.invoice,0,Draft Invoice,Проект на фактура,0
-odt,account.invoice,0,Draft Supplier Credit Note,Проект на кредитно известие на доставчик,0
-odt,account.invoice,0,Draft Supplier Invoice,Проект на фактура за доставчик,0
-odt,account.invoice,0,E-Mail:,E-Mail:,0
-odt,account.invoice,0,Invoice N°:,Фактура N°:,0
-odt,account.invoice,0,Payment Term,Условие за плащане,0
-odt,account.invoice,0,Phone:,Телефон:,0
-odt,account.invoice,0,Pro forma Credit Note,ПРО-ФОРМА на кредитно известие,0
-odt,account.invoice,0,Pro forma Invoice,ПРО-ФОРМА фактура,0
-odt,account.invoice,0,Pro forma Supplier Credit Note,ПРО-ФОРМА на кредитно известие на доставчик,0
-odt,account.invoice,0,Pro forma Supplier Invoice,ПРО-ФОРМА фактура за доставчик,0
-odt,account.invoice,0,Quantity,Количество,0
-odt,account.invoice,0,Supplier Credit Note N°:,Кредитно известие на доставчик N°:,0
-odt,account.invoice,0,Supplier Invoice N°:,Фактура за доставчик N°:,0
-odt,account.invoice,0,Tax,Данък,0
-odt,account.invoice,0,Taxes,Данъци,0
-odt,account.invoice,0,Taxes:,Данъци:,0
-odt,account.invoice,0,Total (excl. taxes):,Общо (без данъци):,0
-odt,account.invoice,0,Total:,Общо:,0
-odt,account.invoice,0,Unit Price,Единична цена,0
-odt,account.invoice,0,VAT:,ДДС:,0
-selection,"account.invoice,state",0,Canceled,Отказан,0
-selection,"account.invoice,state",0,Draft,Проект,0
-selection,"account.invoice,state",0,Opened,Отворен,0
-selection,"account.invoice,state",0,Paid,Платен,0
-selection,"account.invoice,state",0,Pro forma,ПРО-ФОРМА,0
-selection,"account.invoice,type",0,Credit Note,Кредитно известие,0
-selection,"account.invoice,type",0,Invoice,Фактура,0
-selection,"account.invoice,type",0,Supplier Credit Note,Кредитно известие на доставчик,0
-selection,"account.invoice,type",0,Supplier Invoice,Фактура за доставчик,0
-selection,"account.invoice.line,invoice_type",0,Access Permissions,Фактура,0
-selection,"account.invoice.line,invoice_type",0,Credit Note,Кредитно известие,0
-selection,"account.invoice.line,invoice_type",0,Invoice,Фактура,0
-selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Кредитно известие на доставчик,0
-selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Фактура за доставчик,0
-selection,"account.invoice.line,type",0,Comment,Коментар,0
-selection,"account.invoice.line,type",0,Line,Ред,0
-selection,"account.invoice.line,type",0,Subtotal,Междинна сума,0
-selection,"account.invoice.line,type",0,Title,Заглавие,0
-selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Частично плащане,0
-selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Анулиран,0
-view,account.invoice,0,Amount Second Currency,Сума в допълнителна валута,0
-view,account.invoice,0,Credit,Кредит,0
-view,account.invoice,0,Debit,Дебит,0
-view,account.invoice,0,Invoice,Фактура,0
-view,account.invoice,0,Invoices,Фактури,0
-view,account.invoice,0,Lines,Редове,0
-view,account.invoice,0,Other Info,Друга информация,0
-view,account.invoice,0,Payment,Плащане,0
-view,account.invoice,0,Payment Lines,Редове от плащане,0
-view,account.invoice,0,Pro For_ma,ПРО ФОРМА,0
-view,account.invoice,0,Taxes,Данъци,0
-view,account.invoice,0,_Cancel,Отказ,0
-view,account.invoice,0,_Draft,Проект,0
-view,account.invoice,0,_Open,Отваряне,0
-view,account.invoice,0,_Pay,Плащане,0
-view,account.invoice,0,_Reset to Draft,Изпращане в проект,0
-view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Сигурни ли сте че искате да кредитирате тази/тези фактура/фактури?,0
-view,account.invoice.credit_invoice.init,0,Credit Invoice,Кредитна фактура,0
-view,account.invoice.line,0,General,Основен,0
-view,account.invoice.line,0,Invoice Line,Ред от фактура,0
-view,account.invoice.line,0,Invoice Lines,Редове от фактура,0
-view,account.invoice.line,0,Notes,Бележки,0
-view,account.invoice.line,0,Products,Продукти,0
-view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Сума в допълнителна валута,0
-view,account.invoice.pay_invoice.ask,0,Credit,Кредит,0
-view,account.invoice.pay_invoice.ask,0,Debit,Дебит,0
-view,account.invoice.pay_invoice.ask,0,Lines to Pay,Редове за плащане,0
-view,account.invoice.pay_invoice.ask,0,Pay Invoice,Плащане на фактура,0
-view,account.invoice.pay_invoice.ask,0,Payment Lines,Редове от плащане,0
-view,account.invoice.pay_invoice.init,0,Pay Invoice,Плащане на фактура,0
-view,account.invoice.payment_term,0,Payment Term,Условие за плащане,0
-view,account.invoice.payment_term,0,Payment Term Line,Ред от условие за плащане,0
-view,account.invoice.payment_term,0,Payment Term Lines,Ред от условие за плащане,0
-view,account.invoice.payment_term,0,Payment Terms,Условия за плащане,0
-view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Внимание!</b>,0
-view,account.invoice.print_invoice_report.warning,0,Print Invoice,Отпечатване на фактура,0
-view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Фактурите ще бъдет изпратени <i>директно</i> на принтера.,0
-view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Избрали сте за печат повече от една фактура,0
-view,account.invoice.tax,0,Invoice Tax,Данък към фактура,0
-view,account.invoice.tax,0,Invoice Taxes,Данъци на фактура,0
-view,account.invoice.tax,0,Tax Code,Код на данък,0
-view,party.party,0,Payment Terms,Условия за плащане,0
-wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Кредит,0
-wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Отказ,0
-wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Отказ,0
-wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Добре,0
-wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,Добре,0
-wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Отказ,0
-wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Отказ,0
-wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Печат,0
diff --git a/de_DE.csv b/de_DE.csv
deleted file mode 100644
index e034bff..0000000
--- a/de_DE.csv
+++ /dev/null
@@ -1,353 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,"Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine Rechnung im laufenden Buchungsjahr fakturiert wurde.",0
-error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Für unterschiedliche Geschäftsjahre müssen jeweils eigene Rechnungsnummernkreise erstellt werden!,0
-error,account.invoice,0,"Base taxes different from invoice lines!
-Re-compute the invoice.",Steuern stimmen nicht mit den Rechnungspositionen überein!,0
-error,account.invoice,0,"Taxes defined but not on invoice lines!
-Re-compute the invoice.","Es sind Steuern definiert, allerdings nicht in den Rechnungspositionen!
-Bitte lassen Sie die Rechnung erneut berechnen.",0
-error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
-Re-compute the invoice.","Steuern sind für die Rechnungspositionen definiert, allerdings nicht für die Rechnung selbst!
-Bitte lassen Sie die Rechnung erneut berechnen.",0
-error,account.invoice,0,The credit account on journal is missing!,Haben-Konto im Journal fehlt!,0
-error,account.invoice,0,The credit account on journal is the same than the invoice account!,Das Habenkonto des Journals ist das selbe wie das Rechnungskonto!,0
-error,account.invoice,0,The debit account on journal is missing!,Soll-Konto im Journal fehlt,0
-error,account.invoice,0,The debit account on journal is the same than the invoice account!,Das Sollkonto des Journals ist das selbe wie das Rechnungskonto!,0
-error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Rechnungsnummernkreis für diese Periode oder dieses Buchungsjahr fehlt!,0
-error,account.invoice,0,"You can not create an invoice
-with account from a different invoice company!",Es können keine Rechnungen mit einem Konto von einer anderen rechnungsstellenden Firma angelegt werden,0
-error,account.invoice,0,"You can not modify an invoice that is opened, paid!",Fakturierte oder bezahlte Rechnungen können nicht geändert werden!,0
-error,account.invoice,0,You can not reset to draft an invoice that has move!,"Eine Rechnung, die Buchungen enthält, kann nicht auf Entwurf zurückgesetzt werden!",0
-error,account.invoice,0,"You can not use the same account
-as on invoice line!",Es kann nicht das selbe Konto wie für die Rechnungszeile verwendet werden!,0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Nur Rechnungen im Status 'Fakturiert' können verrechnet werden!,0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,"Die Verrechnung einer Rechnung ist nicht möglich, wenn bereits Zahlungen für diese gebucht sind!",0
-error,account.invoice.line,0,"Line with ""line"" type must have an account!","Eine Zeile vom Typ ""Position"" muss einem Konto zugeordnet sein!",0
-error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","Eine Zeile, die nicht vom Typ ""Position"" ist, muss einer Rechnung zugeordnet sein!",0
-error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine neue Position hinzugefügt werden!",0
-error,account.invoice.line,0,"You can not create invoice line
-with account with a different invoice company!","Eine Rechnungszeile kann sich nicht
-auf ein Konto eines anderen Unternehmens beziehen!",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",Positionen von fakturierten oder bezahlten Rechnungen können nicht geändert werden!,0
-error,account.invoice.line,0,"You can not use the same account
-as on the invoice!",Es kann nicht das selbe Konto wie für die Rechnung verwendet werden!,0
-error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,Ein Teilbetrag kann nicht größer als der Gesamtbetrag der Rechnung sein!,0
-error,account.invoice.payment_term,0,Invalid payment term line!,Ungültige Position in Zahlungsbedingung!,0
-error,account.invoice.payment_term,0,Payment term missing a remainder line!,In der Zahlungsbedingung fehlt eine Restbetragszeile!,0
-error,account.invoice.payment_term.line.delay,0,The code must be unique!,Code kann nicht mehrfach vergeben werden!,0
-error,account.invoice.payment_term.line.type,0,The code must be unique!,Code kann nicht mehrfach vergeben werden!,0
-error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine neue Position hinzugefügt werden!",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",Steuern von fakturierten oder bezahlten Rechnungen können nicht geändert werden!,0
-error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,"Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine Rechnung in der laufenden Periode fakturiert wurde.",0
-error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Für unterschiedliche Geschäftsjahre eines Unternehmens müssen jeweils eigene Rechnungsnummernkreise erstellt werden!,0
-field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Nummernkreis Gutschriften Lieferanten,0
-field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Nummernkreis Rechnungen Lieferanten,0
-field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Nummernkreis Gutschriften Kunden,0
-field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Nummernkreis Rechnungen Kunden,0
-field,"account.invoice,account",0,Account,Konto,0
-field,"account.invoice,accounting_date",0,Accounting Date,Buchungsdatum,0
-field,"account.invoice,amount_to_pay",0,Amount to Pay,Zahlbarer Betrag,0
-field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Zahlbarer Betrag (heute),0
-field,"account.invoice,comment",0,Comment,Kommentar,0
-field,"account.invoice,company",0,Company,Unternehmen,0
-field,"account.invoice,currency",0,Currency,Währung,0
-field,"account.invoice,currency_date",0,Currency Date,Währungsdatum,0
-field,"account.invoice,currency_digits",0,Currency Digits,Währung (signifikante Stellen),0
-field,"account.invoice,description",0,Description,Beschreibung,0
-field,"account.invoice,invoice_address",0,Invoice Address,Rechnungsadresse,0
-field,"account.invoice,invoice_date",0,Invoice Date,Rechnungsdatum,0
-field,"account.invoice,invoice_report",0,Invoice Report,Rechnungsbericht,0
-field,"account.invoice,invoice_report_format",0,Invoice Report Format,Format Rechnungsbericht,0
-field,"account.invoice,journal",0,Journal,Journal,0
-field,"account.invoice,lines",0,Lines,Positionen,0
-field,"account.invoice,lines_to_pay",0,Lines to Pay,Zahlbare Positionen,0
-field,"account.invoice,move",0,Move,Buchung,0
-field,"account.invoice,number",0,Number,Nummer,0
-field,"account.invoice,party",0,Party,Partei,0
-field,"account.invoice,party_lang",0,Party Language,Sprache Partei,0
-field,"account.invoice,payment_lines",0,Payment Lines,Zahlungspositionen,0
-field,"account.invoice,payment_term",0,Payment Term,Zahlungsbedingung,0
-field,"account.invoice,rec_name",0,Name,Name,0
-field,"account.invoice,reconciled",0,Reconciled,Abgestimmt,0
-field,"account.invoice,reference",0,Reference,Interner Beleg,0
-field,"account.invoice,state",0,State,Status,0
-field,"account.invoice,tax_amount",0,Tax,Steuer,0
-field,"account.invoice,taxes",0,Tax Lines,Steuerpositionen,0
-field,"account.invoice,total_amount",0,Total,Brutto,0
-field,"account.invoice,type",0,Type,Typ,0
-field,"account.invoice,type_name",0,Type,Typ,0
-field,"account.invoice,untaxed_amount",0,Untaxed,Netto,0
-field,"account.invoice-account.move.line,invoice",0,Invoice,Rechnung,0
-field,"account.invoice-account.move.line,line",0,Payment Line,Zahlungsposition,0
-field,"account.invoice-account.move.line,rec_name",0,Name,Name,0
-field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Mit Verrechnung,0
-field,"account.invoice.line,account",0,Account,Konto,0
-field,"account.invoice.line,amount",0,Amount,Betrag,0
-field,"account.invoice.line,company",0,Company,Unternehmen,0
-field,"account.invoice.line,currency",0,Currency,Währung,0
-field,"account.invoice.line,currency_digits",0,Currency Digits,Stellen Währung,0
-field,"account.invoice.line,description",0,Description,Bezeichnung,0
-field,"account.invoice.line,invoice",0,Invoice,Rechnung,0
-field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Steuern Rechnung,0
-field,"account.invoice.line,invoice_type",0,Invoice Type,Rechnungstyp,0
-field,"account.invoice.line,note",0,Note,Notiz,0
-field,"account.invoice.line,party",0,Party,Partei,0
-field,"account.invoice.line,party_lang",0,Party Language,Sprache Partei,0
-field,"account.invoice.line,product",0,Product,Artikel,0
-field,"account.invoice.line,quantity",0,Quantity,Anzahl,0
-field,"account.invoice.line,rec_name",0,Name,Name,0
-field,"account.invoice.line,sequence",0,Sequence,Reihenfolge,0
-field,"account.invoice.line,taxes",0,Taxes,Steuern,0
-field,"account.invoice.line,type",0,Type,Typ,0
-field,"account.invoice.line,unit",0,Unit,Einheit,0
-field,"account.invoice.line,unit_digits",0,Unit Digits,Anzahl Stellen,0
-field,"account.invoice.line,unit_price",0,Unit Price,Einzelpreis,0
-field,"account.invoice.line-account.tax,line",0,Invoice Line,Rechnungsposition,0
-field,"account.invoice.line-account.tax,rec_name",0,Name,Name,0
-field,"account.invoice.line-account.tax,tax",0,Tax,Steuer,0
-field,"account.invoice.pay_invoice.ask,account",0,Account,Konto,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Konto Ausbuchung,0
-field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Betrag,0
-field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Betrag Ausbuchung,0
-field,"account.invoice.pay_invoice.ask,company",0,Company,Unternehmen,0
-field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Währung,0
-field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Stellen Währung,0
-field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Stellen Währung Ausbuchung,0
-field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Währung Ausbuchung,0
-field,"account.invoice.pay_invoice.ask,date",0,Date,Datum,0
-field,"account.invoice.pay_invoice.ask,description",0,Description,Beschreibung,0
-field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Rechnung,0
-field,"account.invoice.pay_invoice.ask,journal",0,Journal,Journal,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Journal Ausbuchung,0
-field,"account.invoice.pay_invoice.ask,lines",0,Lines,Positionen,0
-field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Zahlbare Positionen,0
-field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Zahlungspositionen,0
-field,"account.invoice.pay_invoice.ask,type",0,Type,Typ,0
-field,"account.invoice.pay_invoice.init,amount",0,Amount,Betrag,0
-field,"account.invoice.pay_invoice.init,currency",0,Currency,Währung,0
-field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Stellen Währung,0
-field,"account.invoice.pay_invoice.init,date",0,Date,Datum,0
-field,"account.invoice.pay_invoice.init,description",0,Description,Beschreibung,0
-field,"account.invoice.pay_invoice.init,journal",0,Journal,Journal,0
-field,"account.invoice.payment_term,active",0,Active,Aktiv,0
-field,"account.invoice.payment_term,description",0,Description,Beschreibung,0
-field,"account.invoice.payment_term,lines",0,Lines,Positionen,0
-field,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
-field,"account.invoice.payment_term,rec_name",0,Name,Name,0
-field,"account.invoice.payment_term.line,amount",0,Amount,Betrag,0
-field,"account.invoice.payment_term.line,currency",0,Currency,Währung,0
-field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Währung (signifikante Stellen),0
-field,"account.invoice.payment_term.line,days",0,Number of Days,Anzahl an Tagen,0
-field,"account.invoice.payment_term.line,delay",0,Condition,Bedingung,0
-field,"account.invoice.payment_term.line,payment",0,Payment Term,Zahlungsbedingung,0
-field,"account.invoice.payment_term.line,percentage",0,Percentage,Prozentsatz,0
-field,"account.invoice.payment_term.line,rec_name",0,Name,Name,0
-field,"account.invoice.payment_term.line,sequence",0,Sequence,Reihenfolge,0
-field,"account.invoice.payment_term.line,type",0,Type,Typ,0
-field,"account.invoice.payment_term.line.delay,code",0,Code,Kundennummer,0
-field,"account.invoice.payment_term.line.delay,name",0,Name,Name,0
-field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Name,0
-field,"account.invoice.payment_term.line.type,code",0,Code,Kundennummer,0
-field,"account.invoice.payment_term.line.type,name",0,Name,Name,0
-field,"account.invoice.payment_term.line.type,rec_name",0,Name,Name,0
-field,"account.invoice.tax,account",0,Account,Konto,0
-field,"account.invoice.tax,amount",0,Amount,Betrag,0
-field,"account.invoice.tax,base",0,Base,Netto,0
-field,"account.invoice.tax,base_code",0,Base Code,Code Netto,0
-field,"account.invoice.tax,base_sign",0,Base Sign,Vorzeichen (Netto),0
-field,"account.invoice.tax,description",0,Description,Beschreibung,0
-field,"account.invoice.tax,invoice",0,Invoice,Rechnung,0
-field,"account.invoice.tax,manual",0,Manual,Manuell,0
-field,"account.invoice.tax,rec_name",0,Name,Name,0
-field,"account.invoice.tax,sequence",0,Sequence,Reihenfolge,0
-field,"account.invoice.tax,sequence_number",0,Sequence Number,Name Nummernkreis,0
-field,"account.invoice.tax,tax",0,Tax,Steuer,0
-field,"account.invoice.tax,tax_code",0,Tax Code,Steuerkennziffer,0
-field,"account.invoice.tax,tax_sign",0,Tax Sign,Vorzeichen (Steuer),0
-field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Nummernkreis Gutschriften Lieferanten,0
-field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Nummernkreis Rechnungen Lieferanten,0
-field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Nummernkreis Gutschriften Kunden,0
-field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Nummernkreis Rechnungen Kunden,0
-field,"party.address,invoice",0,Invoice,Rechnungsadresse,0
-field,"party.party,payment_term",0,Invoice Payment Term,Zahlungsbedingung Verkauf,0
-field,"party.party,supplier_payment_term",0,Supplier Payment Term,Zahlungsbedingung Einkauf,0
-help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.",Bei Aktivierung werden die ausgewählte(n ) Rechnung(en) und hierzu neu erstellte(n) Gutschrift(en) auf bezahlt gesetzt und miteinander abgestimmt.,0
-help,"account.invoice.payment_term.line,percentage",0,In %,Eingabe in %,0
-help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Ordnet Positionen in aufsteigender Reihenfolge,0
-model,"account.invoice,name",0,Invoice,Rechnung,0
-model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Rechnung - Zahlungsposition,0
-model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Gutschrift Init,0
-model,"account.invoice.line,name",0,Invoice Line,Rechnungsposition,0
-model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Rechnungsposition - Steuer,0
-model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Zahlung Rechnung Nachfrage,0
-model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Zahlung Rechnung Init,0
-model,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Zahlungsbedingung Zeile,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Zahlungsbedingung Zeile Frist,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Ende Monat,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Tage netto,0
-model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Zahlungsbedingung Zeile Typ,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fix,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Prozentsatz,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Rest,0
-model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Druck Rechnung Warnung,0
-model,"account.invoice.tax,name",0,Invoice Tax,Rechnung Steuer,0
-model,"ir.action,name",act_invoice_form,All Invoices,Alle Rechnungen/Gutschriften,0
-model,"ir.action,name",act_invoice_form2,Invoices,Rechnungen,0
-model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
-model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Gutschriften von Lieferanten,0
-model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Entwürfe Lieferantengutschriften,0
-model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro Forma Lieferantengutschriften,0
-model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Fakturierte Lieferantengutschriften,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
-model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Lieferantenrechnungen,0
-model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Entwürfe Lieferantenrechnungen,0
-model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro Forma Lieferantenrechnungen,0
-model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Fakturierte Lieferantenrechnungen,0
-model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Gutschriften an Kunden,0
-model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Gutschriften,0
-model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Entwürfe Kundengutschriften,0
-model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro Forma Kundengutschriften,0
-model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Fakturierte Kundengutschriften,0
-model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
-model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Kundenrechnungen,0
-model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Entwürfe Kundenrechnungen,0
-model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Pro Forma Kundenrechnungen,0
-model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Fakturierte Kundenrechnungen,0
-model,"ir.action,name",act_payment_term_form,Payment Terms,Zahlungsbedingungen,0
-model,"ir.action,name",act_payment_term_form2,Payment Terms,Zahlungsbedingungen,0
-model,"ir.action,name",credit_invoice,Credit,Gutschrift erstellen,0
-model,"ir.action,name",print_invoice_report,Invoice,Rechnung/Gutschrift,0
-model,"ir.action,name",report_invoice,Invoice,Rechnung,0
-model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Rechnung bezahlen,0
-model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Rechnung,0
-model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Alle Rechnungen/Gutschriften,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Neue Gutschrift von Lieferant,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Entwürfe Lieferantengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro Forma Lieferantengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Fakturierte Lieferantengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Neue Lieferantenrechnung,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Entwürfe Lieferantenrechnungen,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro Forma Lieferantenrechnungen,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Fakturierte Lieferantenrechnungen,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Gutschriften an Kunden,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Neue Gutschrift an Kunden,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Entwürfe Kundengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro Forma Kundengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Fakturierte Kundengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Neue Kundenrechnung,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Entwürfe Kundenrechnungen,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Pro Forma Kundenrechnungen,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Fakturierte Kundenrechnungen,0
-model,"ir.ui.menu,name",menu_invoices,Invoices,Rechnungen,0
-model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Zahlungsbedingungen,0
-model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Neue Zahlungsbedingung,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Zahlungsbedingungen,0
-model,"workflow,name",invoice_workflow,Invoice workflow,Workflow Rechnung,0
-model,"workflow.activity,name",invoice_activity_cancel,Canceled,Annulliert,0
-model,"workflow.activity,name",invoice_activity_draft,Draft,Entwurf,0
-model,"workflow.activity,name",invoice_activity_open,Open,Fakturieren,0
-model,"workflow.activity,name",invoice_activity_paid,Paid,Bezahlt,0
-model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro Forma,0
-odt,account.invoice,0,Amount,Betrag,0
-odt,account.invoice,0,Base,Netto,0
-odt,account.invoice,0,Credit Note N°:,Gutschrift Nr.:,0
-odt,account.invoice,0,Date,Fällig am,0
-odt,account.invoice,0,Date:,Datum:,0
-odt,account.invoice,0,Description,Beschreibung,0
-odt,account.invoice,0,Description:,Beschreibung:,0
-odt,account.invoice,0,Draft Credit Note,Gutschrift (Entwurf),0
-odt,account.invoice,0,Draft Invoice,Rechnung (Entwurf),0
-odt,account.invoice,0,Draft Supplier Credit Note,Gutschrift (Entwurf),0
-odt,account.invoice,0,Draft Supplier Invoice,Rechnung (Entwurf),0
-odt,account.invoice,0,E-Mail:,E-Mail:,0
-odt,account.invoice,0,Invoice N°:,Rechnung Nr.:,0
-odt,account.invoice,0,Payment Term,Zahlungsbedingung,0
-odt,account.invoice,0,Phone:,Telefon:,0
-odt,account.invoice,0,Pro forma Credit Note,Gutschrift Pro Forma,0
-odt,account.invoice,0,Pro forma Invoice,Rechnung Pro Forma,0
-odt,account.invoice,0,Pro forma Supplier Credit Note,Gutschrift Pro Forma,0
-odt,account.invoice,0,Pro forma Supplier Invoice,Rechnung Pro Forma,0
-odt,account.invoice,0,Quantity,Anzahl,0
-odt,account.invoice,0,Supplier Credit Note N°:,Gutschrift Nr.:,0
-odt,account.invoice,0,Supplier Invoice N°:,Rechnung Nr.:,0
-odt,account.invoice,0,Tax,Steuer,0
-odt,account.invoice,0,Taxes,Steuern,0
-odt,account.invoice,0,Taxes:,Steuern:,0
-odt,account.invoice,0,Total (excl. taxes):,Netto:,0
-odt,account.invoice,0,Total:,Rechnungsbetrag,0
-odt,account.invoice,0,Unit Price,Einzelpreis,0
-odt,account.invoice,0,VAT Number:,USt-ID-Nr.:,0
-odt,account.invoice,0,VAT:,USt-ID-Nr:,0
-selection,"account.invoice,state",0,Canceled,Annulliert,0
-selection,"account.invoice,state",0,Draft,Entwurf,0
-selection,"account.invoice,state",0,Opened,Fakturiert,0
-selection,"account.invoice,state",0,Paid,Bezahlt,0
-selection,"account.invoice,state",0,Pro forma,Pro Forma,0
-selection,"account.invoice,type",0,Credit Note,Gutschrift an Kunde,0
-selection,"account.invoice,type",0,Invoice,Kundenrechnung,0
-selection,"account.invoice,type",0,Supplier Credit Note,Gutschrift von Lieferant,0
-selection,"account.invoice,type",0,Supplier Invoice,Lieferantenrechnung,0
-selection,"account.invoice.line,invoice_type",0,Credit Note,Kundengutschrift,0
-selection,"account.invoice.line,invoice_type",0,Invoice,Kundenrechnung,0
-selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Lieferantengutschrift,0
-selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Lieferantenrechnung,0
-selection,"account.invoice.line,type",0,Comment,Kommentar,0
-selection,"account.invoice.line,type",0,Line,Position,0
-selection,"account.invoice.line,type",0,Subtotal,Zwischensumme,0
-selection,"account.invoice.line,type",0,Title,Überschrift,0
-selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Teilzahlung,0
-selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Ausbuchung,0
-view,account.invoice,0,Amount Second Currency,Betrag Zweitwährung,0
-view,account.invoice,0,Credit,Haben,0
-view,account.invoice,0,Debit,Soll,0
-view,account.invoice,0,Invoice,Rechnung,0
-view,account.invoice,0,Invoices,Rechnungen,0
-view,account.invoice,0,Lines,Positionen,0
-view,account.invoice,0,Other Info,Sonstiges,0
-view,account.invoice,0,Payment,Zahlung,0
-view,account.invoice,0,Payment Lines,Zahlungspositionen,0
-view,account.invoice,0,Pro For_ma,_Pro Forma,0
-view,account.invoice,0,Taxes,Steuern,0
-view,account.invoice,0,_Cancel,_Annullieren,0
-view,account.invoice,0,_Draft,_Entwurf,0
-view,account.invoice,0,_Open,_Fakturieren,0
-view,account.invoice,0,_Pay,_Bezahlen,0
-view,account.invoice,0,_Reset to Draft,Auf Entwurf _Zurücksetzen,0
-view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Wollen Sie diese Rechnungen wirklich gutschreiben?,0
-view,account.invoice.credit_invoice.init,0,Credit Invoice,Rechnung gutschreiben,0
-view,account.invoice.line,0,General,Allgemein,0
-view,account.invoice.line,0,Invoice Line,Rechnungsposition,0
-view,account.invoice.line,0,Invoice Lines,Rechnungspositionen,0
-view,account.invoice.line,0,Notes,Notizen,0
-view,account.invoice.line,0,Products,Artikel,0
-view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Betrag Zweitwährung,0
-view,account.invoice.pay_invoice.ask,0,Credit,Haben,0
-view,account.invoice.pay_invoice.ask,0,Debit,Soll,0
-view,account.invoice.pay_invoice.ask,0,Lines to Pay,Zahlbare Positionen,0
-view,account.invoice.pay_invoice.ask,0,Pay Invoice,Rechnung bezahlen,0
-view,account.invoice.pay_invoice.ask,0,Payment Lines,Zahlungspositionen,0
-view,account.invoice.pay_invoice.init,0,Pay Invoice,Rechnung bezahlen,0
-view,account.invoice.payment_term,0,Payment Term,Zahlungsbedingung,0
-view,account.invoice.payment_term,0,Payment Term Line,Zahlungsbedingung Zeile,0
-view,account.invoice.payment_term,0,Payment Term Lines,Zeilen Zahlungsbedingung,0
-view,account.invoice.payment_term,0,Payment Terms,Zahlungsbedingung,0
-view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Warnung!</b>,0
-view,account.invoice.print_invoice_report.warning,0,Print Invoice,Rechnung/Gutschrift drucken,0
-view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Die Rechnungen werden <i>direkt</i> an den Drucker gesendet.,0
-view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Sie haben mehr als eine Rechnung zum Ausdrucken gewählt.,0
-view,account.invoice.tax,0,Invoice Tax,Rechnungssteuer,0
-view,account.invoice.tax,0,Invoice Taxes,Rechnungssteuern,0
-view,account.invoice.tax,0,Tax Code,Steuerkennziffer,0
-view,party.party,0,Payment Terms,Zahlungsbedingungen,0
-wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Gutschrift erstellen,0
-wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Abbrechen,0
-wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Abbrechen,0
-wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,OK,0
-wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,OK,0
-wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Abbrechen,0
-wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Abbrechen,0
-wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Drucken,0
diff --git a/es_CO.csv b/es_CO.csv
deleted file mode 100644
index f8ba9e8..0000000
--- a/es_CO.csv
+++ /dev/null
@@ -1,352 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,No puede cambiar la secuencia de una factura si hay una factura abierta en el año fiscal,0
-error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,¡Debe tener una secuencia diferente de facturación por año fiscal!,0
-error,account.invoice,0,"Base taxes different from invoice lines!
-Re-compute the invoice.",Los Impuestos Base difieren de las líneas de factura!,0
-error,account.invoice,0,"Taxes defined but not on invoice lines!
-Re-compute the invoice.","Impuestos definidos pero no en líneas de factura!
-Recalcule la factura.",0
-error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
-Re-compute the invoice.",Impuestos definidos en factura pero no usados en las líneas!,0
-error,account.invoice,0,The credit account on journal is missing!,Falta la cuenta crédito del diario!,0
-error,account.invoice,0,The credit account on journal is the same than the invoice account!,¡La cuenta crédito en el diario es la misma que la cuenta facturada!,0
-error,account.invoice,0,The debit account on journal is missing!,Falta la cuenta débito del diario!,0
-error,account.invoice,0,The debit account on journal is the same than the invoice account!,¡La cuenta débito en el diario es la misma que la cuenta facturada!,0
-error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,No hay una secuencia de facturaas para el período/año fiscal!,0
-error,account.invoice,0,"You can not create an invoice
-with account from a different invoice company!",No puede crear una factura,0
-error,account.invoice,0,"You can not modify an invoice that is opened, paid!","¡No puede modificar una factura que está abierta, pagada!",0
-error,account.invoice,0,You can not reset to draft an invoice that has move!,¡No puede poner en borrador una factura que ha sido movida!,0
-error,account.invoice,0,"You can not use the same account
-as on invoice line!","¡No puede usar la misma cuenta
-como línea en la factura!",0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,¡No puede acreditar con reembolsos una factura que no está abierta!,0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,¡No puede acreditar una devolución de una factura con pagos!,0
-error,account.invoice.line,0,"Line with ""line"" type must have an account!","¡Una línea con tipo de ""línea"" debe tener una cuenta!",0
-error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","¡Una línea sin tipo de ""línea"" debe tener una factura!",0
-error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede adicionar una línea a una factura que está abierta, pagada o cancelada!",0
-error,account.invoice.line,0,"You can not create invoice line
-with account with a different invoice company!","¡No puede crear una línea de factura
-con cuenta a partir de una factura de una compañía distinta!",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!","¡No puede modificar la línea de una factura que está abierta, pagada!",0
-error,account.invoice.line,0,"You can not use the same account
-as on the invoice!","No puede usar la misma cuenta
-que en la factura!",0
-error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,¡No puede crear un pago parcial con un monto mayor que el valor a pagar!,0
-error,account.invoice.payment_term,0,Invalid payment term line!,Línea de opción de pago inválida!,0
-error,account.invoice.payment_term,0,Payment term missing a remainder line!,Hace falta una línea final al término de pago!,0
-error,account.invoice.payment_term.line.delay,0,The code must be unique!,¡El código debe ser único!,0
-error,account.invoice.payment_term.line.type,0,The code must be unique!,¡El código debe ser único!,0
-error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede adicionar una línea a una factura que está abierta, pagada o cancelada!",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",,0
-error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,No puede cambiar la secuencia de una factura si hay una factura abierta en el período,0
-error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,¡Debe tener secuencias diferentes de facturas por año fiscal en la misma compañía!,0
-field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de la Nota Crédito del Proveedor,0
-field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de Factura de Proveedor,0
-field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de Nota Crédito de Cliente,0
-field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de Facturas de Cliente,0
-field,"account.invoice,account",0,Account,Cuenta,0
-field,"account.invoice,accounting_date",0,Accounting Date,Fecha de contabilización,0
-field,"account.invoice-account.move.line,invoice",0,Invoice,Factura,0
-field,"account.invoice-account.move.line,line",0,Payment Line,Línea de pago,0
-field,"account.invoice-account.move.line,rec_name",0,Name,Nombre,0
-field,"account.invoice,amount_to_pay",0,Amount to Pay,Cantidad a pagar,0
-field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Cantidad a pagar hoy,0
-field,"account.invoice,comment",0,Comment,Comentario,0
-field,"account.invoice,company",0,Company,Compañía,0
-field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Con devolución,0
-field,"account.invoice,currency",0,Currency,Moneda,0
-field,"account.invoice,currency_digits",0,Currency Digits,Dígitos de Moneda,0
-field,"account.invoice,description",0,Description,Descripción,0
-field,"account.invoice,invoice_address",0,Invoice Address,Dirección de Facturación,0
-field,"account.invoice,invoice_date",0,Invoice Date,Fecha de Factura,0
-field,"account.invoice,invoice_report",0,Invoice Report,Reporte de Facturación,0
-field,"account.invoice,invoice_report_format",0,Invoice Report Format,Formato de Reporte de Facturación,0
-field,"account.invoice,journal",0,Journal,Diario,0
-field,"account.invoice.line,account",0,Account,Cuenta,0
-field,"account.invoice.line-account.tax,line",0,Invoice Line,Línea de Factura,0
-field,"account.invoice.line-account.tax,rec_name",0,Name,Nombre,0
-field,"account.invoice.line-account.tax,tax",0,Tax,Impuesto,0
-field,"account.invoice.line,amount",0,Amount,Cantidad,0
-field,"account.invoice.line,company",0,Company,Compañía,0
-field,"account.invoice.line,currency",0,Currency,Moneda,0
-field,"account.invoice.line,currency_digits",0,Currency Digits,Dígitos de Moneda,0
-field,"account.invoice.line,description",0,Description,Descripción,0
-field,"account.invoice.line,invoice",0,Invoice,Factura,0
-field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Impuestos de Facturas,0
-field,"account.invoice.line,invoice_type",0,Invoice Type,Tipo de Factura,0
-field,"account.invoice.line,note",0,Note,Nota,0
-field,"account.invoice.line,party",0,Party,Terceros,0
-field,"account.invoice.line,party_lang",0,Party Language,Idioma del Tercero,0
-field,"account.invoice.line,product",0,Product,Producto,0
-field,"account.invoice.line,quantity",0,Quantity,Cantidad,0
-field,"account.invoice.line,rec_name",0,Name,Nombre,0
-field,"account.invoice,lines",0,Lines,Líneas,0
-field,"account.invoice.line,sequence",0,Sequence,Secuencia,0
-field,"account.invoice,lines_to_pay",0,Lines to Pay,Líneas a Pagar,0
-field,"account.invoice.line,taxes",0,Taxes,Impuestos,0
-field,"account.invoice.line,type",0,Type,Tipo,0
-field,"account.invoice.line,unit",0,Unit,Unidad,0
-field,"account.invoice.line,unit_digits",0,Unit Digits,Dígitos de Unidad,0
-field,"account.invoice.line,unit_price",0,Unit Price,Precio Unitario,0
-field,"account.invoice,move",0,Move,Movimiento,0
-field,"account.invoice,number",0,Number,Número,0
-field,"account.invoice,party",0,Party,Tercero,0
-field,"account.invoice,party_lang",0,Party Language,Idioma del Tercero,0
-field,"account.invoice.pay_invoice.ask,account",0,Account,Cuenta,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Cuenta de Ajustes,0
-field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Valor del Pago,0
-field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Valor del Ajuste,0
-field,"account.invoice.pay_invoice.ask,company",0,Company,Compañía,0
-field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Pago en Moneda,0
-field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Dígitos de Pago de Moneda,0
-field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Ajuste de Dígitos de Moneda,0
-field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Ajuste de Moneda,0
-field,"account.invoice.pay_invoice.ask,date",0,Date,Fecha,0
-field,"account.invoice.pay_invoice.ask,description",0,Description,Descripción,0
-field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Factura,0
-field,"account.invoice.pay_invoice.ask,journal",0,Journal,Diario,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Diario de Ajuste,0
-field,"account.invoice.pay_invoice.ask,lines",0,Lines,Líneas,0
-field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Líneas a Pagar,0
-field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Líneas de Pago,0
-field,"account.invoice.pay_invoice.ask,type",0,Type,Tipo,0
-field,"account.invoice.pay_invoice.init,amount",0,Amount,Cantidad,0
-field,"account.invoice.pay_invoice.init,currency",0,Currency,Moneda,0
-field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Dígitos de Moneda,0
-field,"account.invoice.pay_invoice.init,date",0,Date,Fecha,0
-field,"account.invoice.pay_invoice.init,description",0,Description,Descripción,0
-field,"account.invoice.pay_invoice.init,journal",0,Journal,Diario,0
-field,"account.invoice,payment_lines",0,Payment Lines,Líneas de Pago,0
-field,"account.invoice,payment_term",0,Payment Term,Término de Pago,0
-field,"account.invoice.payment_term,active",0,Active,Activo,0
-field,"account.invoice.payment_term,description",0,Description,Descripción,0
-field,"account.invoice.payment_term.line,amount",0,Amount,Cantidad,0
-field,"account.invoice.payment_term.line,currency",0,Currency,Moneda,0
-field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Dígitos de Moneda,0
-field,"account.invoice.payment_term.line,days",0,Number of Days,Cantidad de días,0
-field,"account.invoice.payment_term.line,delay",0,Condition,Condición,0
-field,"account.invoice.payment_term.line.delay,code",0,Code,Código,0
-field,"account.invoice.payment_term.line.delay,name",0,Name,Nombre,0
-field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Nombre,0
-field,"account.invoice.payment_term.line,payment",0,Payment Term,Término de Pago,0
-field,"account.invoice.payment_term.line,percentage",0,Percentage,Porcentaje,0
-field,"account.invoice.payment_term.line,rec_name",0,Name,Nombre,0
-field,"account.invoice.payment_term,lines",0,Lines,Líneas,0
-field,"account.invoice.payment_term.line,sequence",0,Sequence,Secuencia,0
-field,"account.invoice.payment_term.line,type",0,Type,Tipo,0
-field,"account.invoice.payment_term.line.type,code",0,Code,Código,0
-field,"account.invoice.payment_term.line.type,name",0,Name,Nombre,0
-field,"account.invoice.payment_term.line.type,rec_name",0,Name,Nombre,0
-field,"account.invoice.payment_term,name",0,Payment Term,Término de Pago,0
-field,"account.invoice.payment_term,rec_name",0,Name,Nombre,0
-field,"account.invoice,rec_name",0,Name,Nombre,0
-field,"account.invoice,reconciled",0,Reconciled,Conciliado,0
-field,"account.invoice,reference",0,Reference,Referencia,0
-field,"account.invoice,state",0,State,Estado,0
-field,"account.invoice.tax,account",0,Account,Cuenta,0
-field,"account.invoice,tax_amount",0,Tax,Impuesto,0
-field,"account.invoice.tax,amount",0,Amount,Cantidad,0
-field,"account.invoice.tax,base",0,Base,Base,0
-field,"account.invoice.tax,base_code",0,Base Code,Código Base,0
-field,"account.invoice.tax,base_sign",0,Base Sign,Signo Base,0
-field,"account.invoice.tax,description",0,Description,Descripción,0
-field,"account.invoice,taxes",0,Tax Lines,Líneas de Impuestos,0
-field,"account.invoice.tax,invoice",0,Invoice,Factura,0
-field,"account.invoice.tax,manual",0,Manual,Manual,0
-field,"account.invoice.tax,rec_name",0,Name,Nombre,0
-field,"account.invoice.tax,sequence",0,Sequence,Secuencia,0
-field,"account.invoice.tax,sequence_number",0,Sequence Number,Número de Secuencia,0
-field,"account.invoice.tax,tax",0,Tax,Impuesto,0
-field,"account.invoice.tax,tax_code",0,Tax Code,Código de Impuesto,0
-field,"account.invoice.tax,tax_sign",0,Tax Sign,Signo del Impuesto,0
-field,"account.invoice,total_amount",0,Total,Total,0
-field,"account.invoice,type",0,Type,Tipo,0
-field,"account.invoice,type_name",0,Type,Tipo,0
-field,"account.invoice,untaxed_amount",0,Untaxed,Sin Impuesto,0
-field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de la Nota Crédito del Proveedor,0
-field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de Factura de Proveedor,0
-field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de Nota Crédito de Cliente,0
-field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de Facturas de Cliente,0
-field,"party.address,invoice",0,Invoice,Factura,0
-field,"party.party,payment_term",0,Invoice Payment Term,Término de Pago de la Factura,0
-field,"party.party,supplier_payment_term",0,Supplier Payment Term,Término de Pago a Proveedor,0
-help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Si cierto, la(s) factura(s) actuales se pagarán.",0
-help,"account.invoice.payment_term.line,percentage",0,In %,En %,0
-help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Para ordenar las líneas ascendentemente,0
-model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Factura - Línea de pago,0
-model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Inicio de Factura Crédito,0
-model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Línea de Factura - Impuesto,0
-model,"account.invoice.line,name",0,Invoice Line,Línea de Factura,0
-model,"account.invoice,name",0,Invoice,Factura,0
-model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Solicitud de Pago de Factura,0
-model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Inicio de Pago de Factura,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Mes Final,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Días Netos,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Línea de Pago Tardío,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Línea de Término de Pago,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fijo,0
-model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Tipo Pago de Término,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Porcentaje,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Diferencia,0
-model,"account.invoice.payment_term,name",0,Payment Term,Término de Pago,0
-model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Imprimir Advertencia de Pago de Factura,0
-model,"account.invoice.tax,name",0,Invoice Tax,Impuesto en Factura,0
-model,"ir.action,name",act_invoice_form,All Invoices,Todas las facturas,0
-model,"ir.action,name",credit_invoice,Credit,Crédito,0
-model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Notas Crédito,0
-model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Notas Crédito,0
-model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Notas Crédito en Borrador,0
-model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Factura en Borrador,0
-model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Borrador Nota Crédito del Proveedor,0
-model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Borrador de Factura de Proveedor,0
-model,"ir.action,name",report_invoice,Invoice,Factura,0
-model,"ir.action,name",print_invoice_report,Invoice,Factura,0
-model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Facturas,0
-model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Facturas,0
-model,"ir.action,name",act_invoice_form2,Invoices,Facturas,0
-model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Nota Crédito Abierta,0
-model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Factura Abierta,0
-model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Nota Crédito de Proveedor Abierta,0
-model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Factura de Proveedor Abierta,0
-model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Pagar Factura,0
-model,"ir.action,name",act_payment_term_form,Payment Terms,Formas de Pago,0
-model,"ir.action,name",act_payment_term_form2,Payment Terms,Formas de Pago,1
-model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Nota Crédito Proforma,0
-model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Factura Proforma,0
-model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Nota Crédito de Proveedor Proforma,0
-model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factura del Proveedor Proforma,0
-model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Notas Crédito del Proveedor,0
-model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Notas Crédito del Proveedor,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Facturas de Proveedor,0
-model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Facturas de Proveedor,0
-model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Factura,0
-model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Todas las facturas,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Notas Crédito,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Borrador Nota Crédito,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Borrador Factura,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Borrador Nota Crédito Proveedor,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Borrador Factura Proveedor,0
-model,"ir.ui.menu,name",menu_invoices,Invoices,Facturas,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Facturas,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nueva Nota Crédito,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nueva Factura,0
-model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nueva Nota Crédito Proveedor,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Factura Nuevo Proveedor,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Nota Crédito Abierta,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Factura Abierta,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Nota Crédito Proveedor Abierta,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Factura Proveedor Abierta,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Formas de Pago,0
-model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Formas de Pago,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Nota Crédito Proforma,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Factura Proforma,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Nota Crédito Proveedor Proforma,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factura Proveedor Proforma,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Notas Crédito del Proveedor,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Facturas de Proveedor,0
-model,"workflow.activity,name",invoice_activity_cancel,Canceled,Cancelado,0
-model,"workflow.activity,name",invoice_activity_draft,Draft,Borrador,0
-model,"workflow.activity,name",invoice_activity_open,Open,Abrir,0
-model,"workflow.activity,name",invoice_activity_paid,Paid,Pagado,0
-model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
-model,"workflow,name",invoice_workflow,Invoice workflow,Flujo de Trabajo Factura,0
-odt,account.invoice,0,Amount,Cantidad,0
-odt,account.invoice,0,Base,Base,0
-odt,account.invoice,0,Credit Note N°:,Nota Crédito N°:,0
-odt,account.invoice,0,Date,Fecha,0
-odt,account.invoice,0,Date:,Fecha:,0
-odt,account.invoice,0,Description,Descripción,0
-odt,account.invoice,0,Description:,Descripción:,0
-odt,account.invoice,0,Draft Credit Note,Borrador de Nota Crédito,0
-odt,account.invoice,0,Draft Invoice,Borrador de Factura,0
-odt,account.invoice,0,Draft Supplier Credit Note,Borrador de Nota Crédito del Proveedor,0
-odt,account.invoice,0,Draft Supplier Invoice,Borrador de Factura del Proveedor,0
-odt,account.invoice,0,E-Mail:,Correo electrónico:,0
-odt,account.invoice,0,Invoice N°:,Factura N°:,0
-odt,account.invoice,0,Payment Term,Término de Pago,0
-odt,account.invoice,0,Phone:,Teléfono:,0
-odt,account.invoice,0,Pro forma Credit Note,Nota Crédito Proforma,0
-odt,account.invoice,0,Pro forma Invoice,Factura Proforma,0
-odt,account.invoice,0,Pro forma Supplier Credit Note,Nota Crédito del Proveedor Proforma,0
-odt,account.invoice,0,Pro forma Supplier Invoice,Factura del Proveedor Proforma,0
-odt,account.invoice,0,Quantity,Cantidad,0
-odt,account.invoice,0,Supplier Credit Note N°:,Nota Crédito del Proveedor N°:,0
-odt,account.invoice,0,Supplier Invoice N°:,Factura del Proveedor N°:,0
-odt,account.invoice,0,Tax,Impuesto,0
-odt,account.invoice,0,Taxes,Impuestos,0
-odt,account.invoice,0,Taxes:,Impuestos:,0
-odt,account.invoice,0,Total:,Total:,0
-odt,account.invoice,0,Total (excl. taxes):,Total (sin impuestos):,0
-odt,account.invoice,0,Unit Price,Precio Unitario,0
-odt,account.invoice,0,VAT:,IVA:,0
-selection,"account.invoice.line,invoice_type",0,Credit Note,Nota Crédito,0
-selection,"account.invoice.line,invoice_type",0,Invoice,Factura,0
-selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Nota Crédito del Proveedor,0
-selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Factura de Proveedor,0
-selection,"account.invoice.line,type",0,Comment,Comentario,0
-selection,"account.invoice.line,type",0,Line,Línea,0
-selection,"account.invoice.line,type",0,Subtotal,Subtotal,0
-selection,"account.invoice.line,type",0,Title,Título,0
-selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Pago Parcial,0
-selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Ajuste,0
-selection,"account.invoice,state",0,Canceled,Cancelado,0
-selection,"account.invoice,state",0,Draft,Borrador,0
-selection,"account.invoice,state",0,Opened,Abierto,0
-selection,"account.invoice,state",0,Paid,Pagado,0
-selection,"account.invoice,state",0,Pro forma,Pro forma,0
-selection,"account.invoice,type",0,Credit Note,Nota de Crédito,0
-selection,"account.invoice,type",0,Invoice,Factura,0
-selection,"account.invoice,type",0,Supplier Credit Note,Nota Crédito del Proveedor,0
-selection,"account.invoice,type",0,Supplier Invoice,Factura de Proveedor,0
-view,account.invoice,0,Amount Second Currency,Cantidad en la Moneda Secundaria,0
-view,account.invoice,0,_Cancel,_Cancelar,0
-view,account.invoice,0,Credit,Crédito,0
-view,account.invoice,0,Debit,Débito,0
-view,account.invoice,0,_Draft,_Borrador,0
-view,account.invoice,0,Invoice,Factura,0
-view,account.invoice,0,Invoices,Facturas,0
-view,account.invoice,0,Lines,Líneas,0
-view,account.invoice,0,_Open,_Abrir,0
-view,account.invoice,0,Other Info,Información Adicional,0
-view,account.invoice,0,_Pay,_Pago,0
-view,account.invoice,0,Payment,Pago,0
-view,account.invoice,0,Payment Lines,Líneas de Pago,0
-view,account.invoice,0,Pro For_ma,Pro For_ma,0
-view,account.invoice,0,_Reset to Draft,_Revertir a Borrador,0
-view,account.invoice,0,Taxes,Impuestos,0
-view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Segur@ desea acreditar la(s) factura(s)?,0
-view,account.invoice.credit_invoice.init,0,Credit Invoice,Factura Crédito,0
-view,account.invoice.line,0,General,General,0
-view,account.invoice.line,0,Invoice Line,Línea de Factura,0
-view,account.invoice.line,0,Invoice Lines,Líneas de Factura,0
-view,account.invoice.line,0,Notes,Notas,0
-view,account.invoice.line,0,Products,Productos,0
-view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Cantidad en la Moneda Secundaria,0
-view,account.invoice.pay_invoice.ask,0,Credit,Crédito,0
-view,account.invoice.pay_invoice.ask,0,Debit,Débito,0
-view,account.invoice.pay_invoice.ask,0,Lines to Pay,Líneas a Pagar,0
-view,account.invoice.pay_invoice.ask,0,Pay Invoice,Pagar Factura,0
-view,account.invoice.pay_invoice.ask,0,Payment Lines,Líneas de Pago,0
-view,account.invoice.pay_invoice.init,0,Pay Invoice,Pagar Factura,0
-view,account.invoice.payment_term,0,Payment Term,Término de Pago,0
-view,account.invoice.payment_term,0,Payment Term Line,Línea de Término de Pago,0
-view,account.invoice.payment_term,0,Payment Term Lines,Líneas de Término de Pago,0
-view,account.invoice.payment_term,0,Payment Terms,Formas de Pago,0
-view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Advertencia!</b>,0
-view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimir Factura,0
-view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Las facturas serán enviadas <i>directamente</i> a la impresora.,0
-view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Ha elegido más de una factura para imprimir,0
-view,account.invoice.tax,0,Invoice Tax,Impuesto en Factura,0
-view,account.invoice.tax,0,Invoice Taxes,Impuestos de Facturas,0
-view,account.invoice.tax,0,Tax Code,Código de Impuesto,0
-view,party.party,0,Payment Terms,Formas de Pago,0
-wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Crédito,0
-wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Cancelar,0
-wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Cancelar,0
-wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Aceptar,0
-wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,Aceptar,0
-wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Cancelar,0
-wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Cancelar,0
-wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Imprimir,0
diff --git a/es_ES.csv b/es_ES.csv
deleted file mode 100644
index 56b71ff..0000000
--- a/es_ES.csv
+++ /dev/null
@@ -1,353 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,No puede cambiar la secuencia de una factura si ya hay una abierta en el ejercicio fiscal,0
-error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Debe tener una secuencia diferente de facturación por ejercicio fiscal,0
-error,account.invoice,0,"Base taxes different from invoice lines!
-Re-compute the invoice.","Los impuestos base son distintos de las líneas de la factura.
-Recalcule la factura.",0
-error,account.invoice,0,"Taxes defined but not on invoice lines!
-Re-compute the invoice.","Tiene impuestos definidos pero ninguno en las líneas de la factura
-Recalcule la factura.",0
-error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
-Re-compute the invoice.","Los impuestos están definidos en las lineas de la factura pero no en la factura.
-Recalcule la factura.",0
-error,account.invoice,0,The credit account on journal is missing!,Falta la cuenta crédito del diario,0
-error,account.invoice,0,The credit account on journal is the same than the invoice account!,La cuenta de crédito en el diario es la misma que la cuenta facturada,0
-error,account.invoice,0,The debit account on journal is missing!,Falta la cuenta débito del diario,0
-error,account.invoice,0,The debit account on journal is the same than the invoice account!,La cuenta de débito en el diario es la misma que la cuenta facturada,0
-error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,No hay una secuencia de factura para el período/ejercicio fiscal,0
-error,account.invoice,0,"You can not create an invoice
-with account from a different invoice company!","No puede crear una factura
-con una cuenta de una compañía distinta a la que factura",0
-error,account.invoice,0,"You can not modify an invoice that is opened, paid!",No puede modificar una factura que está abierta o pagada,0
-error,account.invoice,0,You can not reset to draft an invoice that has move!,No puede poner en borrador una factura que tiene asientos,0
-error,account.invoice,0,"You can not use the same account
-as on invoice line!","No puede usar la misma cuenta
-que la línea de la factura",0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,No puede pagar con una devolución una factura que no está abierta,0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,No puede pagar con una devolución una factura que tiene pagos,0
-error,account.invoice.line,0,"Line with ""line"" type must have an account!",Una línea de tipo «línea» debe tener una cuenta,0
-error,account.invoice.line,0,"Line without ""line"" type must have an invoice!",Una línea sin tipo «línea» debe tener una factura,0
-error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede añadir una línea a una factura que está abierta, pagada o cancelada",0
-error,account.invoice.line,0,"You can not create invoice line
-with account with a different invoice company!","No puede crear una línea de factura
-con una cuenta de una empresa distinta a la que factura",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",No puede modificar una línea de una factura que está abierta o pagada,0
-error,account.invoice.line,0,"You can not use the same account
-as on the invoice!","No puede usar la misma cuenta
-que en la factura",0
-error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,No puede crear un pago parcial con una cantidad mayor de la que hay que pagar,0
-error,account.invoice.payment_term,0,Invalid payment term line!,La línea del plazo no es válida,0
-error,account.invoice.payment_term,0,Payment term missing a remainder line!,Al plazo de pago le falta una línea con el remanente,0
-error,account.invoice.payment_term.line.delay,0,The code must be unique!,El código debe ser único,0
-error,account.invoice.payment_term.line.type,0,The code must be unique!,El código debe ser único,0
-error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede añadir una línea a una factura que está abierta, pagada o cancelada",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",No puede modificar los impuestos de una factura que está abierta o pagada,0
-error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,No puede cambiar la secuencia de una factura si hay una factura abierta en el período,0
-error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Debe usar secuencias distintas de factura por ejercicio fiscal en la misma empresa,0
-field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de abono de proveedor,0
-field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de factura de proveedor,0
-field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de abono a cliente,0
-field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de facturas a cliente,0
-field,"account.invoice,account",0,Account,Cuenta,0
-field,"account.invoice,accounting_date",0,Accounting Date,Fecha de contabilización,0
-field,"account.invoice-account.move.line,invoice",0,Invoice,Factura,0
-field,"account.invoice-account.move.line,line",0,Payment Line,Línea de pago,0
-field,"account.invoice-account.move.line,rec_name",0,Name,Nombre,0
-field,"account.invoice,amount_to_pay",0,Amount to Pay,Cantidad a pagar,0
-field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Cantidad a pagar hoy,0
-field,"account.invoice,comment",0,Comment,Comentario,0
-field,"account.invoice,company",0,Company,Empresa,0
-field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Con devolución,0
-field,"account.invoice,currency",0,Currency,Divisa,0
-field,"account.invoice,currency_digits",0,Currency Digits,Decimales de la divisa,0
-field,"account.invoice,description",0,Description,Descripción,0
-field,"account.invoice,invoice_address",0,Invoice Address,Dirección de facturación,0
-field,"account.invoice,invoice_date",0,Invoice Date,Fecha de factura,0
-field,"account.invoice,invoice_report",0,Invoice Report,Informe de facturación,0
-field,"account.invoice,invoice_report_format",0,Invoice Report Format,Formato del informe de facturación,0
-field,"account.invoice,journal",0,Journal,Diario,0
-field,"account.invoice.line,account",0,Account,Cuenta,0
-field,"account.invoice.line-account.tax,line",0,Invoice Line,Línea de factura,0
-field,"account.invoice.line-account.tax,rec_name",0,Name,Nombre,0
-field,"account.invoice.line-account.tax,tax",0,Tax,Impuesto,0
-field,"account.invoice.line,amount",0,Amount,Cantidad,0
-field,"account.invoice.line,company",0,Company,Empresa,0
-field,"account.invoice.line,currency",0,Currency,Divisa,0
-field,"account.invoice.line,currency_digits",0,Currency Digits,Decimales de la divisa,0
-field,"account.invoice.line,description",0,Description,Descripción,0
-field,"account.invoice.line,invoice",0,Invoice,Factura,0
-field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Impuestos de la factura,0
-field,"account.invoice.line,invoice_type",0,Invoice Type,Tipo de factura,0
-field,"account.invoice.line,note",0,Note,Nota,0
-field,"account.invoice.line,party",0,Party,Tercero,0
-field,"account.invoice.line,party_lang",0,Party Language,Idioma del tercero,0
-field,"account.invoice.line,product",0,Product,Producto,0
-field,"account.invoice.line,quantity",0,Quantity,Cantidad,0
-field,"account.invoice.line,rec_name",0,Name,Nombre,0
-field,"account.invoice,lines",0,Lines,Líneas,0
-field,"account.invoice.line,sequence",0,Sequence,Secuencia,0
-field,"account.invoice,lines_to_pay",0,Lines to Pay,Líneas a pagar,0
-field,"account.invoice.line,taxes",0,Taxes,Impuestos,0
-field,"account.invoice.line,type",0,Type,Tipo,0
-field,"account.invoice.line,unit",0,Unit,Unidad,0
-field,"account.invoice.line,unit_digits",0,Unit Digits,Decimales de la unidad,0
-field,"account.invoice.line,unit_price",0,Unit Price,Precio unitario,0
-field,"account.invoice,move",0,Move,Asiento,0
-field,"account.invoice,number",0,Number,Número,0
-field,"account.invoice,party",0,Party,Tercero,0
-field,"account.invoice,party_lang",0,Party Language,Idioma del tercero,0
-field,"account.invoice.pay_invoice.ask,account",0,Account,Cuenta,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Cuenta de pérdidas,0
-field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Cantidad a pagar,0
-field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Valor de la pérdida,0
-field,"account.invoice.pay_invoice.ask,company",0,Company,Empresa,0
-field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Divisa de pago,0
-field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Decimales del pago de divisa,0
-field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Decimales de la pérdida de divisa,0
-field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Pérdida de divisa,0
-field,"account.invoice.pay_invoice.ask,date",0,Date,Fecha,0
-field,"account.invoice.pay_invoice.ask,description",0,Description,Descripción,0
-field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Factura,0
-field,"account.invoice.pay_invoice.ask,journal",0,Journal,Diario,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Diario de pérdidas,0
-field,"account.invoice.pay_invoice.ask,lines",0,Lines,Líneas,0
-field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Líneas a pagar,0
-field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Líneas de pago,0
-field,"account.invoice.pay_invoice.ask,type",0,Type,Tipo,0
-field,"account.invoice.pay_invoice.init,amount",0,Amount,Cantidad,0
-field,"account.invoice.pay_invoice.init,currency",0,Currency,Divisa,0
-field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Decimales de la divisa,0
-field,"account.invoice.pay_invoice.init,date",0,Date,Fecha,0
-field,"account.invoice.pay_invoice.init,description",0,Description,Descripción,0
-field,"account.invoice.pay_invoice.init,journal",0,Journal,Diario,0
-field,"account.invoice,payment_lines",0,Payment Lines,Líneas de pago,0
-field,"account.invoice,payment_term",0,Payment Term,Plazo de pago,0
-field,"account.invoice.payment_term,active",0,Active,Activo,0
-field,"account.invoice.payment_term,description",0,Description,Descripción,0
-field,"account.invoice.payment_term.line,amount",0,Amount,Cantidad,0
-field,"account.invoice.payment_term.line,currency",0,Currency,Divisa,0
-field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Decimales de la divisa,0
-field,"account.invoice.payment_term.line,days",0,Number of Days,Número de días,0
-field,"account.invoice.payment_term.line,delay",0,Condition,Condición,0
-field,"account.invoice.payment_term.line.delay,code",0,Code,Código,0
-field,"account.invoice.payment_term.line.delay,name",0,Name,Nombre,0
-field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Nombre,0
-field,"account.invoice.payment_term.line,payment",0,Payment Term,Plazo de pago,0
-field,"account.invoice.payment_term.line,percentage",0,Percentage,Porcentaje,0
-field,"account.invoice.payment_term.line,rec_name",0,Name,Nombre,0
-field,"account.invoice.payment_term,lines",0,Lines,Líneas,0
-field,"account.invoice.payment_term.line,sequence",0,Sequence,Secuencia,0
-field,"account.invoice.payment_term.line,type",0,Type,Tipo,0
-field,"account.invoice.payment_term.line.type,code",0,Code,Código,0
-field,"account.invoice.payment_term.line.type,name",0,Name,Nombre,0
-field,"account.invoice.payment_term.line.type,rec_name",0,Name,Nombre,0
-field,"account.invoice.payment_term,name",0,Payment Term,Plazo de pago,0
-field,"account.invoice.payment_term,rec_name",0,Name,Nombre,0
-field,"account.invoice,rec_name",0,Name,Nombre,0
-field,"account.invoice,reconciled",0,Reconciled,Conciliado,0
-field,"account.invoice,reference",0,Reference,Referencia,0
-field,"account.invoice,state",0,State,Estado,0
-field,"account.invoice.tax,account",0,Account,Cuenta,0
-field,"account.invoice,tax_amount",0,Tax,Impuesto,0
-field,"account.invoice.tax,amount",0,Amount,Cantidad,0
-field,"account.invoice.tax,base",0,Base,Base,0
-field,"account.invoice.tax,base_code",0,Base Code,Código de la base,0
-field,"account.invoice.tax,base_sign",0,Base Sign,Signo de la base,0
-field,"account.invoice.tax,description",0,Description,Descripción,0
-field,"account.invoice,taxes",0,Tax Lines,Líneas de impuesto,0
-field,"account.invoice.tax,invoice",0,Invoice,Factura,0
-field,"account.invoice.tax,manual",0,Manual,Manual,0
-field,"account.invoice.tax,rec_name",0,Name,Nombre,0
-field,"account.invoice.tax,sequence",0,Sequence,Secuencia,0
-field,"account.invoice.tax,sequence_number",0,Sequence Number,Número de secuencia,0
-field,"account.invoice.tax,tax",0,Tax,Impuesto,0
-field,"account.invoice.tax,tax_code",0,Tax Code,Código de impuesto,0
-field,"account.invoice.tax,tax_sign",0,Tax Sign,Signo del impuesto,0
-field,"account.invoice,total_amount",0,Total,Total,0
-field,"account.invoice,type",0,Type,Tipo,0
-field,"account.invoice,type_name",0,Type,Tipo,0
-field,"account.invoice,untaxed_amount",0,Untaxed,Sin impuesto,0
-field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia del abono de proveedor,0
-field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de factura de proveedor,0
-field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de abono a cliente,0
-field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de factura a cliente,0
-field,"party.address,invoice",0,Invoice,Factura,0
-field,"party.party,payment_term",0,Invoice Payment Term,Plazo de pago de la factura,0
-field,"party.party,supplier_payment_term",0,Supplier Payment Term,Plazo de pago al proveedor,0
-help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Si es cierto, la(s) factura(s) actuales se pagarán.",0
-help,"account.invoice.payment_term.line,percentage",0,In %,En %,0
-help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Empleado para ordenar las líneas ascendentemente,0
-model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Factura - Línea de pago,0
-model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Inicializa la factura de crédito,0
-model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Línea de factura - Impuesto,0
-model,"account.invoice.line,name",0,Invoice Line,Línea de factura,0
-model,"account.invoice,name",0,Invoice,Factura,0
-model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Solicitud de pago de factura,0
-model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Inicializa el pago de factura,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Final de mes,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Días netos,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Linea de retraso del plazo de pago,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Línea del plazo de pago,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fijo,0
-model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Tipo de línea del plazo de pago,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Porcentaje,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Resto,0
-model,"account.invoice.payment_term,name",0,Payment Term,Plazo de pago,0
-model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Imprimir informe de aviso de facturas,0
-model,"account.invoice.tax,name",0,Invoice Tax,Impuesto de factura,0
-model,"ir.action,name",act_invoice_form,All Invoices,Todas las facturas,0
-model,"ir.action,name",credit_invoice,Credit,Haber,0
-model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Abonos,0
-model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Abonos,0
-model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Abonos borrador,0
-model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Facturas borrador,0
-model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Borrador de abonos de proveedor,0
-model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Borrador de facturas de proveedor,0
-model,"ir.action,name",report_invoice,Invoice,Factura,0
-model,"ir.action,name",print_invoice_report,Invoice,Factura,0
-model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Facturas,0
-model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Facturas,0
-model,"ir.action,name",act_invoice_form2,Invoices,Facturas,0
-model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Abonos abiertos,0
-model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Facturas abiertas,0
-model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Abonos de proveedor abiertos,0
-model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Facturas de proveedor abiertas,0
-model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Pagar factura,0
-model,"ir.action,name",act_payment_term_form,Payment Terms,Plazos de pago,0
-model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Abonos pro forma,0
-model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Facturas pro forma,0
-model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Abonos de proveedor pro forma,0
-model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Facturas de proveedor pro forma,0
-model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Abonos de proveedor,0
-model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Abonos de proveedor,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Facturas de proveedor,0
-model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Facturas de proveedor,0
-model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Factura,0
-model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Todas las facturas,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Abonos,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Abono borrador,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Facturas borrador,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Abonos de proveedor borrador,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Facturas de proveedor borrador,0
-model,"ir.ui.menu,name",menu_invoices,Invoices,Facturas,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Facturas,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nuevo abono,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nueva factura,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nuevo abono de proveedor,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Nueva factura de proveedor,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Abonos abiertos,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Facturas abiertas,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Abonos de proveedor abiertos,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Facturas de proveedor abiertas,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Plazos de pago,0
-model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Plazos de pago,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Abonos pro forma,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Facturas pro forma,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Abonos de proveedor pro forma,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Facturas de proveedor pro forma,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Abonos del proveedor,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Facturas de proveedor,0
-model,"workflow.activity,name",invoice_activity_cancel,Canceled,Cancelada,0
-model,"workflow.activity,name",invoice_activity_draft,Draft,Borrador,0
-model,"workflow.activity,name",invoice_activity_open,Open,Abrir,0
-model,"workflow.activity,name",invoice_activity_paid,Paid,Pagada,0
-model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
-model,"workflow,name",invoice_workflow,Invoice workflow,Flujo de trabajo de la factura,0
-odt,account.invoice,0,Amount,Cantidad,0
-odt,account.invoice,0,Base,Base,0
-odt,account.invoice,0,Credit Note N°:,Abono Nº:,0
-odt,account.invoice,0,Date,Fecha,0
-odt,account.invoice,0,Date:,Fecha:,0
-odt,account.invoice,0,Description,Descripción,0
-odt,account.invoice,0,Description:,Descripción:,0
-odt,account.invoice,0,Draft Credit Note,Abono borrador,0
-odt,account.invoice,0,Draft Invoice,Factura borrador,0
-odt,account.invoice,0,Draft Supplier Credit Note,Borrador de abono de proveedor,0
-odt,account.invoice,0,Draft Supplier Invoice,Borrador de factura de proveedor,0
-odt,account.invoice,0,E-Mail:,Correo electrónico:,0
-odt,account.invoice,0,Invoice N°:,Factura Nº:,0
-odt,account.invoice,0,Payment Term,Plazo de pago,0
-odt,account.invoice,0,Phone:,Teléfono:,0
-odt,account.invoice,0,Pro forma Credit Note,Abono pro forma,0
-odt,account.invoice,0,Pro forma Invoice,Factura pro forma,0
-odt,account.invoice,0,Pro forma Supplier Credit Note,Abono de proveedor pro forma,0
-odt,account.invoice,0,Pro forma Supplier Invoice,Factura de proveedor pro forma,0
-odt,account.invoice,0,Quantity,Cantidad,0
-odt,account.invoice,0,Supplier Credit Note N°:,Abono de proveedor Nº:,0
-odt,account.invoice,0,Supplier Invoice N°:,Factura de proveedor Nº:,0
-odt,account.invoice,0,Tax,Impuesto,0
-odt,account.invoice,0,Taxes,Impuestos,0
-odt,account.invoice,0,Taxes:,Impuestos:,0
-odt,account.invoice,0,Total:,Total:,0
-odt,account.invoice,0,Total (excl. taxes):,Total (sin impuestos):,0
-odt,account.invoice,0,Unit Price,Precio,0
-odt,account.invoice,0,VAT:,NIF:,0
-selection,"account.invoice.line,invoice_type",0,Credit Note,Abono,0
-selection,"account.invoice.line,invoice_type",0,Invoice,Factura,0
-selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Abono de proveedor,0
-selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Factura de proveedor,0
-selection,"account.invoice.line,type",0,Comment,Comentario,0
-selection,"account.invoice.line,type",0,Line,Línea,0
-selection,"account.invoice.line,type",0,Subtotal,Subtotal,0
-selection,"account.invoice.line,type",0,Title,Título,0
-selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Pago parcial,0
-selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Pérdida,0
-selection,"account.invoice,state",0,Canceled,Cancelada,0
-selection,"account.invoice,state",0,Draft,Borrador,0
-selection,"account.invoice,state",0,Opened,Abierta,0
-selection,"account.invoice,state",0,Paid,Pagada,0
-selection,"account.invoice,state",0,Pro forma,Pro forma,0
-selection,"account.invoice,type",0,Credit Note,Abono,0
-selection,"account.invoice,type",0,Invoice,Factura,0
-selection,"account.invoice,type",0,Supplier Credit Note,Abono del proveedor,0
-selection,"account.invoice,type",0,Supplier Invoice,Factura de proveedor,0
-view,account.invoice,0,Amount Second Currency,Cantidad en la divisa secundaria,0
-view,account.invoice,0,_Cancel,_Cancelar,0
-view,account.invoice,0,Credit,Haber,0
-view,account.invoice,0,Debit,Debe,0
-view,account.invoice,0,_Draft,_Borrador,0
-view,account.invoice,0,Invoice,Factura,0
-view,account.invoice,0,Invoices,Facturas,0
-view,account.invoice,0,Lines,Líneas,0
-view,account.invoice,0,_Open,_Abrir,0
-view,account.invoice,0,Other Info,Información adicional,0
-view,account.invoice,0,_Pay,_Pagar,0
-view,account.invoice,0,Payment,Pago,0
-view,account.invoice,0,Payment Lines,Líneas de pago,0
-view,account.invoice,0,Pro For_ma,Pro for_ma,0
-view,account.invoice,0,_Reset to Draft,_Restablecer a borrador,0
-view,account.invoice,0,Taxes,Impuestos,0
-view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,¿Está seguro que quiere devolver esta/estas factura(s)?,0
-view,account.invoice.credit_invoice.init,0,Credit Invoice,Factura crédito,0
-view,account.invoice.line,0,General,General,0
-view,account.invoice.line,0,Invoice Line,Línea de factura,0
-view,account.invoice.line,0,Invoice Lines,Líneas de factura,0
-view,account.invoice.line,0,Notes,Notas,0
-view,account.invoice.line,0,Products,Productos,0
-view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Cantidad en la divisa secundaria,0
-view,account.invoice.pay_invoice.ask,0,Credit,Haber,0
-view,account.invoice.pay_invoice.ask,0,Debit,Debe,0
-view,account.invoice.pay_invoice.ask,0,Lines to Pay,Líneas a pagar,0
-view,account.invoice.pay_invoice.ask,0,Pay Invoice,Pagar factura,0
-view,account.invoice.pay_invoice.ask,0,Payment Lines,Líneas de pago,0
-view,account.invoice.pay_invoice.init,0,Pay Invoice,Pagar factura,0
-view,account.invoice.payment_term,0,Payment Term,Plazo de pago,0
-view,account.invoice.payment_term,0,Payment Term Line,Línea del plazo de pago,0
-view,account.invoice.payment_term,0,Payment Term Lines,Líneas del plazo de pago,0
-view,account.invoice.payment_term,0,Payment Terms,Plazos de pago,0
-view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Atención</b>,0
-view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimir factura,0
-view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Las facturas se enviarán <i>directamente</i> a la impresora.,0
-view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Ha elegido más de una factura para imprimir.,0
-view,account.invoice.tax,0,Invoice Tax,Impuesto de la factura,0
-view,account.invoice.tax,0,Invoice Taxes,Impuestos de la factura,0
-view,account.invoice.tax,0,Tax Code,Código de impuesto,0
-view,party.party,0,Payment Terms,Plazos de pago,0
-wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Haber,0
-wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Cancelar,0
-wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Cancelar,0
-wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Aceptar,0
-wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,Aceptar,0
-wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Cancelar,0
-wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Cancelar,0
-wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Imprimir,0
diff --git a/fr_FR.csv b/fr_FR.csv
deleted file mode 100644
index 2099488..0000000
--- a/fr_FR.csv
+++ /dev/null
@@ -1,358 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,Vous ne pouvez pas changer la séquence de facture si il y a déjà une facture ouverte dans l'année fiscale,0
-error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Vous devez utiliser des séquences de facture différentes par année fiscale !,0
-error,account.invoice,0,"Base taxes different from invoice lines!
-Re-compute the invoice.","Le montant de base des taxes sont différents des lignes de facture !
-Re-calculez la facture.",0
-error,account.invoice,0,"Taxes defined but not on invoice lines!
-Re-compute the invoice.","Des taxes sont définies mais pas sur les lignes de facture !
-Re-calculez la facture.",0
-error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
-Re-compute the invoice.","Des taxes sont définies sur les lignes de facture mais pas sur la facture !
-Re-calculez la facture.",0
-error,account.invoice,0,The credit account on journal is missing!,Le compte de crédit sur le journal est manquant !,0
-error,account.invoice,0,The credit account on journal is the same than the invoice account!,Le compte de crébit sur le journal est le même que le compte de la facture !,0
-error,account.invoice,0,The debit account on journal is missing!,Le compte de débit sur le journal est manquant !,0
-error,account.invoice,0,The debit account on journal is the same than the invoice account!,Le compte de débit sur le journal est le même que le compte de la facture !,0
-error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Il n'y a pas de séquence de facture sur la période/année fiscale !,0
-error,account.invoice,0,"You can not create an invoice
-with account from a different invoice company!","Vous ne pouvez pas créer une facture
-avec un compte d'une société de facturation différente !",0
-error,account.invoice,0,"You can not modify an invoice that is opened, paid!",Vous ne pouvez pas modifier une facture qui est ouverte ou payée !,0
-error,account.invoice,0,You can not reset to draft an invoice that has move!,Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !,0
-error,account.invoice,0,"You can not use the same account
-as on invoice line!","Vous ne pouvez pas utiliser le même compte
-que sur la ligne de facture !",0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Vous ne pouvez pas créditer avec un remboursement une facture qui n'est pas ouverte !,0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,Vous ne pouvez pas créditer avec un remboursement une facture avec paiements !,0
-error,account.invoice.line,0,"Line with ""line"" type must have an account!","Ligne de type ""ligne"" doit avoir un compte !",0
-error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","Ligne sans type ""ligne"" doit avoir une facture !",0
-error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée our annulée !",0
-error,account.invoice.line,0,"You can not create invoice line
-with account with a different invoice company!","Vous ne pouvez pas créer de ligne de facture
-avec un compte d'une différente société que celle de la  facture !",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte ou payée !,0
-error,account.invoice.line,0,"You can not use the same account
-as on the invoice!","Vous ne pouvez pas utilier le même compte
-que celui de la factiure !",0
-error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,Vous ne pouvez pas créer un paiement partiel dont le montant est supérieur au montant qu'il reste à payer !,0
-error,account.invoice.payment_term,0,Invalid payment term line!,Ligne de condition de paiement non-valide !,0
-error,account.invoice.payment_term,0,Payment term missing a remainder line!,La condition de paiement manque une ligne de reste !,0
-error,account.invoice.payment_term.line.delay,0,The code must be unique!,Le code doit être unique !,0
-error,account.invoice.payment_term.line.type,0,The code must be unique!,Le code doit être unique !,0
-error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou annulée !",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte ou payée !,0
-error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,Vous ne pouvez pas changer la séquence de facture s'il y a déjà une facture ouverte dans la période,0
-error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Vous devez avoir des séquences de facture différentes par année fiscale et dans la même société !,0
-field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Séquence des notes de crédit fournisseur,0
-field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Séquence de facture fournisseur,0
-field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Séquence des notes de crédit client,0
-field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Séquence de facture client,0
-field,"account.invoice,account",0,Account,Compte,0
-field,"account.invoice,accounting_date",0,Accounting Date,Date comptable,0
-field,"account.invoice,amount_to_pay",0,Amount to Pay,Montant à payer,0
-field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Montant à payer aujourd'hui,0
-field,"account.invoice,comment",0,Comment,Commentaire,0
-field,"account.invoice,company",0,Company,Société,0
-field,"account.invoice,currency",0,Currency,Devise,0
-field,"account.invoice,currency_date",0,Currency Date,Date du taux de change,0
-field,"account.invoice,currency_digits",0,Currency Digits,Décimales de la devise,0
-field,"account.invoice,description",0,Description,Description,0
-field,"account.invoice,invoice_address",0,Invoice Address,Adresse de facturation,0
-field,"account.invoice,invoice_date",0,Invoice Date,Date de facturation,0
-field,"account.invoice,invoice_report",0,Invoice Report,Rapport de facturation,0
-field,"account.invoice,invoice_report_format",0,Invoice Report Format,Format du rapport de facturation,0
-field,"account.invoice,journal",0,Journal,Journal,0
-field,"account.invoice,lines",0,Lines,Lignes,0
-field,"account.invoice,lines_to_pay",0,Lines to Pay,Lignes à payer,0
-field,"account.invoice,move",0,Move,Mouvement,0
-field,"account.invoice,number",0,Number,Numéro,0
-field,"account.invoice,party",0,Party,Tiers,0
-field,"account.invoice,party_lang",0,Party Language,Langue du tiers,0
-field,"account.invoice,payment_lines",0,Payment Lines,Lignes de paiement,0
-field,"account.invoice,payment_term",0,Payment Term,Condition de paiement,0
-field,"account.invoice,rec_name",0,Name,Nom,0
-field,"account.invoice,reconciled",0,Reconciled,Réconcilié,0
-field,"account.invoice,reference",0,Reference,Référence,0
-field,"account.invoice,state",0,State,État,0
-field,"account.invoice,tax_amount",0,Tax,Taxe,0
-field,"account.invoice,taxes",0,Tax Lines,Lignes de taxe,0
-field,"account.invoice,total_amount",0,Total,Total,0
-field,"account.invoice,type",0,Type,Type,0
-field,"account.invoice,type_name",0,Type,Type,0
-field,"account.invoice,untaxed_amount",0,Untaxed,Hors taxe,0
-field,"account.invoice-account.move.line,invoice",0,Invoice,Facture,0
-field,"account.invoice-account.move.line,line",0,Payment Line,Ligne de paiement,0
-field,"account.invoice-account.move.line,rec_name",0,Name,Nom,0
-field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Avec remboursement,0
-field,"account.invoice.line,account",0,Account,Compte,0
-field,"account.invoice.line,amount",0,Amount,Montant,0
-field,"account.invoice.line,company",0,Company,Société,0
-field,"account.invoice.line,currency",0,Currency,Devise,0
-field,"account.invoice.line,currency_digits",0,Currency Digits,Décimales de la devise,0
-field,"account.invoice.line,description",0,Description,Description,0
-field,"account.invoice.line,invoice",0,Invoice,Facture,0
-field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Taxes de le facture,0
-field,"account.invoice.line,invoice_type",0,Invoice Type,Type de facture,0
-field,"account.invoice.line,note",0,Note,Note,0
-field,"account.invoice.line,party",0,Party,Tiers,0
-field,"account.invoice.line,party_lang",0,Party Language,Langue du tiers,0
-field,"account.invoice.line,product",0,Product,Produit,0
-field,"account.invoice.line,quantity",0,Quantity,Quantité,0
-field,"account.invoice.line,rec_name",0,Name,Nom,0
-field,"account.invoice.line,sequence",0,Sequence,Séquence,0
-field,"account.invoice.line,taxes",0,Taxes,Taxes,0
-field,"account.invoice.line,type",0,Type,Type,0
-field,"account.invoice.line,unit",0,Unit,Unité,0
-field,"account.invoice.line,unit_digits",0,Unit Digits,Décimales de l'unité,0
-field,"account.invoice.line,unit_price",0,Unit Price,Prix unitaire,0
-field,"account.invoice.line-account.tax,line",0,Invoice Line,Ligne de facture,0
-field,"account.invoice.line-account.tax,rec_name",0,Name,Nom,0
-field,"account.invoice.line-account.tax,tax",0,Tax,Taxe,0
-field,"account.invoice.pay_invoice.ask,account",0,Account,Compte,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Compte de pertes et profits,0
-field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Montant,0
-field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Montant de pertes et profits,0
-field,"account.invoice.pay_invoice.ask,company",0,Company,Société,0
-field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Devise,0
-field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Décimales de la devise,0
-field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Décimales de la devise de pertes et profits,0
-field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Devise pertes et profits,0
-field,"account.invoice.pay_invoice.ask,date",0,Date,Date,0
-field,"account.invoice.pay_invoice.ask,description",0,Description,Description,0
-field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Facture,0
-field,"account.invoice.pay_invoice.ask,journal",0,Journal,Journal,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Journal,0
-field,"account.invoice.pay_invoice.ask,lines",0,Lines,Lignes,0
-field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Lignes à payer,0
-field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Lignes de paiement,0
-field,"account.invoice.pay_invoice.ask,type",0,Type,Type,0
-field,"account.invoice.pay_invoice.init,amount",0,Amount,Montant,0
-field,"account.invoice.pay_invoice.init,currency",0,Currency,Devise,0
-field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Décimales de la devise,0
-field,"account.invoice.pay_invoice.init,date",0,Date,date,0
-field,"account.invoice.pay_invoice.init,description",0,Description,Description,0
-field,"account.invoice.pay_invoice.init,journal",0,Journal,Journal,0
-field,"account.invoice.payment_term,active",0,Active,Actif,0
-field,"account.invoice.payment_term,description",0,Description,Description,0
-field,"account.invoice.payment_term,lines",0,Lines,Lignes,0
-field,"account.invoice.payment_term,name",0,Payment Term,Condition de paiement,0
-field,"account.invoice.payment_term,rec_name",0,Name,Nom,0
-field,"account.invoice.payment_term.line,amount",0,Amount,Montant,0
-field,"account.invoice.payment_term.line,currency",0,Currency,Devise,0
-field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Décimales de la devise,0
-field,"account.invoice.payment_term.line,days",0,Number of Days,Nombre de jours,0
-field,"account.invoice.payment_term.line,delay",0,Condition,Condition,0
-field,"account.invoice.payment_term.line,payment",0,Payment Term,Condition de paiement,0
-field,"account.invoice.payment_term.line,percentage",0,Percentage,Pourcentage,0
-field,"account.invoice.payment_term.line,rec_name",0,Name,Nom,0
-field,"account.invoice.payment_term.line,sequence",0,Sequence,Séquence,0
-field,"account.invoice.payment_term.line,type",0,Type,Type,0
-field,"account.invoice.payment_term.line.delay,code",0,Code,Code,0
-field,"account.invoice.payment_term.line.delay,name",0,Name,Nom,0
-field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Nom,0
-field,"account.invoice.payment_term.line.type,code",0,Code,Code,0
-field,"account.invoice.payment_term.line.type,name",0,Name,Nom,0
-field,"account.invoice.payment_term.line.type,rec_name",0,Name,Nom,0
-field,"account.invoice.tax,account",0,Account,Compte,0
-field,"account.invoice.tax,amount",0,Amount,Montant,0
-field,"account.invoice.tax,base",0,Base,Base,0
-field,"account.invoice.tax,base_code",0,Base Code,Code de base,0
-field,"account.invoice.tax,base_sign",0,Base Sign,Signe de base,0
-field,"account.invoice.tax,description",0,Description,Description,0
-field,"account.invoice.tax,invoice",0,Invoice,Facture,0
-field,"account.invoice.tax,manual",0,Manual,Manuel,0
-field,"account.invoice.tax,rec_name",0,Name,Nom,0
-field,"account.invoice.tax,sequence",0,Sequence,Séquence,0
-field,"account.invoice.tax,sequence_number",0,Sequence Number,Numéro de séquence,0
-field,"account.invoice.tax,tax",0,Tax,Taxe,0
-field,"account.invoice.tax,tax_code",0,Tax Code,Code de taxe,0
-field,"account.invoice.tax,tax_sign",0,Tax Sign,Signe de taxe,0
-field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Séquence des notes de crédit fournisseur,0
-field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Séquence de facture fournisseur,0
-field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Séquence des notes de crédit client,0
-field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Séquence de facture client,0
-field,"party.address,invoice",0,Invoice,Facture,0
-field,"party.party,payment_term",0,Invoice Payment Term,Conditions de paiement du client,0
-field,"party.party,supplier_payment_term",0,Supplier Payment Term,Conditions de paiement du fournisseur,0
-help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Si vrai, les factures seront payées.",0
-help,"account.invoice.payment_term.line,percentage",0,In %,En %,0
-help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Utilisé pour trier les lignes en ordre croissant,0
-model,"account.invoice,name",0,Invoice,Facture,0
-model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Facture - Ligne de paiement,0
-model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Crediter la facture - Init,0
-model,"account.invoice.line,name",0,Invoice Line,Ligne de Facture,0
-model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Ligne de facture - Taxe,0
-model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Payer la facture - Demande,0
-model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Payer la facture - Init,0
-model,"account.invoice.payment_term,name",0,Payment Term,Conditions de paiement,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Ligne de condition de paiement,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Délai de ligne de condition de paiement,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,fin du mois,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Jours,0
-model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Type de line de condition de paiement,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fixe,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Pourcentage,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Reste,0
-model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Imprimer de la factures - Avertissement,0
-model,"account.invoice.tax,name",0,Invoice Tax,Tax de facture,0
-model,"ir.action,name",act_invoice_form,All Invoices,Toutes les factures,0
-model,"ir.action,name",act_invoice_form2,Invoices,Factures,0
-model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
-model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Notes de crédit fournisseurs,0
-model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Notes de crédit fournisseurs en brouillon,0
-model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Notes de crédit fournisseurs pro forma,0
-model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Notes de crédit fournisseurs ouvertes,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Factures fournisseurs,0
-model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Factures fournisseurs,0
-model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Factures fournisseurs ouvertes,0
-model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factures fournisseurs pro forma,0
-model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Factures fournisseurs ouvertes,0
-model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Notes de crédit,0
-model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Notes de crédit,0
-model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Notes de crédit en brouillon,0
-model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Notes de crédit pro forma,0
-model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Notes de crédit ouvertes,0
-model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Factures,0
-model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Factures,0
-model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Factures en brouillon,0
-model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Factures pro forma,0
-model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Factures ouvertes,0
-model,"ir.action,name",act_payment_term_form,Payment Terms,Conditions de paiement,0
-model,"ir.action,name",act_payment_term_form2,Payment Terms,Conditions de paiement,0
-model,"ir.action,name",credit_invoice,Credit,Crédit,0
-model,"ir.action,name",print_invoice_report,Invoice,Facture,0
-model,"ir.action,name",report_invoice,Invoice,Facture,0
-model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Payer facture,0
-model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Facture,0
-model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Toutes les factures,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nouvelle note de crédit fournisseur,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Notes de crédit fournisseur en brouillon,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Notes de crédit fournisseur pro forma,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Notes de crédit fournisseur ouvertes,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Factures fournisseurs,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Nouvelle facture fournisseur,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Factures fournisseurs en brouillon,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factures fournisseurs pro forma,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Factures fournisseurs ouvertes,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Notes de crédit,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nouvelle note de crédit,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Notes de crédit en brouillon,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Notes de crédit pro forma,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Notes de crédit ouvertes,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Factures,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nouvelle facture,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Factures en brouillon,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Factures pro forma,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Factures ouvertes,0
-model,"ir.ui.menu,name",menu_invoices,Invoices,Factures,0
-model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Conditions de paiement,0
-model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Nouvelle condition de paiement,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Conditions de paiement,0
-model,"workflow,name",invoice_workflow,Invoice workflow,Workflow facture,0
-model,"workflow.activity,name",invoice_activity_cancel,Canceled,Annulé,0
-model,"workflow.activity,name",invoice_activity_draft,Draft,Brouillon,0
-model,"workflow.activity,name",invoice_activity_open,Open,Ouvert,0
-model,"workflow.activity,name",invoice_activity_paid,Paid,Payé,0
-model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
-odt,account.invoice,0,Amount,Montant,0
-odt,account.invoice,0,Base,Base,0
-odt,account.invoice,0,Credit Note N°:,N° de note de crédit :,0
-odt,account.invoice,0,Date,Date,0
-odt,account.invoice,0,Date:,Date :,0
-odt,account.invoice,0,Description,Description,0
-odt,account.invoice,0,Description:,Description :,0
-odt,account.invoice,0,Draft Credit Note,Note de crédit brouillon,0
-odt,account.invoice,0,Draft Invoice,Facture brouillon,0
-odt,account.invoice,0,Draft Supplier Credit Note,Note de crédit fournisseur brouillon,0
-odt,account.invoice,0,Draft Supplier Invoice,Facture fournisseur brouillon,0
-odt,account.invoice,0,E-Mail:,E-Mail:,0
-odt,account.invoice,0,Invoice N°:,N° de facture :,0
-odt,account.invoice,0,Payment Term,Condition de paiement,0
-odt,account.invoice,0,Phone:,Téléphone,0
-odt,account.invoice,0,Pro forma Credit Note,Note de crédit pro forma,0
-odt,account.invoice,0,Pro forma Invoice,Facture pro forma,0
-odt,account.invoice,0,Pro forma Supplier Credit Note,Note de crédit fournisseur pro forma,0
-odt,account.invoice,0,Pro forma Supplier Invoice,Facture fournisseur pro forma,0
-odt,account.invoice,0,Quantity,Quantité,0
-odt,account.invoice,0,Supplier Credit Note N°:,N° de note de crédit fournisseur :,0
-odt,account.invoice,0,Supplier Invoice N°:,N° de facture fournisseur :,0
-odt,account.invoice,0,Tax,Taxe,0
-odt,account.invoice,0,Taxes,Taxes,0
-odt,account.invoice,0,Taxes:,Taxes :,0
-odt,account.invoice,0,Total (excl. taxes):,Total (hors-taxes) :,0
-odt,account.invoice,0,Total:,Total :,0
-odt,account.invoice,0,Unit Price,Prix unitaire,0
-odt,account.invoice,0,VAT Number:,Numéro TVA :,0
-odt,account.invoice,0,VAT:,TVA :,0
-selection,"account.invoice,state",0,Canceled,Annulé,0
-selection,"account.invoice,state",0,Draft,Brouillon,0
-selection,"account.invoice,state",0,Opened,Ouvert,0
-selection,"account.invoice,state",0,Paid,Payée,0
-selection,"account.invoice,state",0,Pro forma,Pro forma,0
-selection,"account.invoice,type",0,Credit Note,Note de crédit,0
-selection,"account.invoice,type",0,Invoice,Facture,0
-selection,"account.invoice,type",0,Supplier Credit Note,Note de crédit fournisseur,0
-selection,"account.invoice,type",0,Supplier Invoice,Facture fournisseur,0
-selection,"account.invoice.line,invoice_type",0,Credit Note,Note de crédit,0
-selection,"account.invoice.line,invoice_type",0,Invoice,Facture,0
-selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Note de crédit fournisseur,0
-selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Facture fournisseur,0
-selection,"account.invoice.line,type",0,Comment,Commentaire,0
-selection,"account.invoice.line,type",0,Line,Ligne,0
-selection,"account.invoice.line,type",0,Subtotal,Sous-total,0
-selection,"account.invoice.line,type",0,Title,Titre,0
-selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Paiement partiel,0
-selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Pertes et profits,0
-view,account.invoice,0,Amount Second Currency,Montant de devise secondaire,0
-view,account.invoice,0,Credit,Crédit,0
-view,account.invoice,0,Debit,Débit,0
-view,account.invoice,0,Invoice,Facture,0
-view,account.invoice,0,Invoices,Factures,0
-view,account.invoice,0,Lines,Lignes,0
-view,account.invoice,0,Other Info,Autre information,0
-view,account.invoice,0,Payment,Paiement,0
-view,account.invoice,0,Payment Lines,Lignes de paiement,0
-view,account.invoice,0,Pro For_ma,Pro For_ma,0
-view,account.invoice,0,Taxes,Taxes,0
-view,account.invoice,0,_Cancel,_Annuler,0
-view,account.invoice,0,_Draft,_Brouillon,0
-view,account.invoice,0,_Open,_Ouvrir,0
-view,account.invoice,0,_Pay,_Payer,0
-view,account.invoice,0,_Reset to Draft,_Remettre en brouillon,0
-view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Etes-vous sûr de vouloir créditer cette/ces factures ?,0
-view,account.invoice.credit_invoice.init,0,Credit Invoice,Facture de crédit,0
-view,account.invoice.line,0,General,Général,0
-view,account.invoice.line,0,Invoice Line,Ligne de facture,0
-view,account.invoice.line,0,Invoice Lines,Lignes de facture,0
-view,account.invoice.line,0,Notes,Notes,0
-view,account.invoice.line,0,Products,Produits,0
-view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Montant en devise secondaire,0
-view,account.invoice.pay_invoice.ask,0,Credit,Crédit,0
-view,account.invoice.pay_invoice.ask,0,Debit,Débit,0
-view,account.invoice.pay_invoice.ask,0,Lines to Pay,Lignes à payer,0
-view,account.invoice.pay_invoice.ask,0,Pay Invoice,Payer la facture,0
-view,account.invoice.pay_invoice.ask,0,Payment Lines,Lignes de paiement,0
-view,account.invoice.pay_invoice.init,0,Pay Invoice,Payer la facture,0
-view,account.invoice.payment_term,0,Payment Term,Conditions de paiement,0
-view,account.invoice.payment_term,0,Payment Term Line,Ligne de condition de paiement,0
-view,account.invoice.payment_term,0,Payment Term Lines,Lignes de condition de paiement,0
-view,account.invoice.payment_term,0,Payment Terms,Conditions de paiement,0
-view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Attention!</b>,0
-view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimer la facture,0
-view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Les factures seront envoyées <i>directement</i> à l'imprimante.,0
-view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Vous avez sélectionné plus d'une facture à imprimer.,0
-view,account.invoice.tax,0,Invoice Tax,Taxes de le facture,0
-view,account.invoice.tax,0,Invoice Taxes,Taxes de le facture,0
-view,account.invoice.tax,0,Tax Code,Code de taxe,0
-view,party.party,0,Payment Terms,Conditions de paiement,0
-view,product.product,0,Taxes,Taxes,0
-wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Créditer,0
-wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Annuler,0
-wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Annuler,0
-wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Ok,0
-wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,Ok,0
-wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Annuler,0
-wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Annuler,0
-wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Imprimer,0
diff --git a/invoice.py b/invoice.py
index 2650967..e09463b 100644
--- a/invoice.py
+++ b/invoice.py
@@ -1,19 +1,21 @@
 #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 __future__ import with_statement
 from decimal import Decimal
 import base64
+import operator
 from trytond.model import ModelWorkflow, ModelView, ModelSQL, fields
 from trytond.report import Report
 from trytond.wizard import Wizard
 from trytond.backend import TableHandler, FIELDS
-from trytond.pyson import In, If, Get, Eval, Not, Equal, Bool, Or, And
+from trytond.pyson import If, Eval, Bool
 from trytond.tools import reduce_ids
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 _STATES = {
-    'readonly': Not(Equal(Eval('state'), 'draft')),
+    'readonly': Eval('state') != 'draft',
 }
+_DEPENDS = ['state']
 
 _TYPE = [
     ('out_invoice', 'Invoice'),
@@ -38,20 +40,24 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     _description = __doc__
     _order_name = 'number'
     company = fields.Many2One('company.company', 'Company', required=True,
-            states=_STATES, select=1, domain=[
-                ('id', If(In('company', Eval('context', {})), '=', '!='),
-                        Get(Eval('context', {}), 'company', 0)),
-            ])
-    type = fields.Selection(_TYPE, 'Type', select=1, on_change=['type'],
-            required=True, states={
-                'readonly': Or(Not(Equal(Eval('state'), 'draft')),
-                    Bool(Get(Eval('context', {}), 'type')),
-                    And(Bool(Eval('lines')), Bool(Eval('type')))),
-            })
+        states=_STATES, select=1, domain=[
+            ('id', If(Eval('context', {}).contains('company'), '=', '!='),
+                Eval('context', {}).get('company', 0)),
+            ],
+        depends=_DEPENDS)
+    type = fields.Selection(_TYPE, 'Type', select=1, on_change=['type',
+            'party', 'company'],
+        required=True, states={
+            'readonly': ((Eval('state') != 'draft')
+                | Eval('context', {}).get('type')
+                | (Eval('lines') & Eval('type'))),
+            }, depends=['state', 'lines'])
     type_name = fields.Function(fields.Char('Type'), 'get_type_name')
     number = fields.Char('Number', size=None, readonly=True, select=1)
-    reference = fields.Char('Reference', size=None, states=_STATES)
-    description = fields.Char('Description', size=None, states=_STATES)
+    reference = fields.Char('Reference', size=None, states=_STATES,
+        depends=_DEPENDS)
+    description = fields.Char('Description', size=None, states=_STATES,
+        depends=_DEPENDS)
     state = fields.Selection([
         ('draft', 'Draft'),
         ('proforma', 'Pro forma'),
@@ -61,53 +67,58 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         ], 'State', readonly=True)
     invoice_date = fields.Date('Invoice Date',
         states={
-                'readonly': In(Eval('state'), ['open', 'paid', 'cancel']),
-                'required': In(Eval('state'), ['open', 'paid']),
-        })
-    accounting_date = fields.Date('Accounting Date', states=_STATES)
+            'readonly': Eval('state').in_(['open', 'paid', 'cancel']),
+            'required': Eval('state').in_(['open', 'paid']),
+            },
+        depends=['state'])
+    accounting_date = fields.Date('Accounting Date', states=_STATES,
+        depends=_DEPENDS)
     party = fields.Many2One('party.party', 'Party', change_default=True,
-        required=True, states=_STATES, on_change=['party', 'payment_term',
-            'type', 'company'])
+        required=True, states=_STATES, depends=_DEPENDS,
+        on_change=['party', 'payment_term', 'type', 'company'])
     party_lang = fields.Function(fields.Char('Party Language',
         on_change_with=['party']), 'get_party_language')
     invoice_address = fields.Many2One('party.address', 'Invoice Address',
-        required=True, states=_STATES, domain=[('party', '=', Eval('party'))])
+        required=True, states=_STATES, depends=['state', 'party'],
+        domain=[('party', '=', Eval('party'))])
     currency = fields.Many2One('currency.currency', 'Currency', required=True,
         states={
-            'readonly': Or(Not(Equal(Eval('state'), 'draft')),
-                And(Bool(Eval('lines')), Bool(Eval('currency')))),
-        })
+            'readonly': ((Eval('state') != 'draft')
+                | (Eval('lines') & Eval('currency'))),
+            }, depends=['state', 'lines'])
     currency_digits = fields.Function(fields.Integer('Currency Digits',
         on_change_with=['currency']), 'get_currency_digits')
     currency_date = fields.Function(fields.Date('Currency Date',
         on_change_with=['invoice_date']), 'get_currency_date',)
     journal = fields.Many2One('account.journal', 'Journal', required=True,
-        states=_STATES, domain=[('centralised', '=', False)])
+        states=_STATES, depends=_DEPENDS, domain=[('centralised', '=', False)])
     move = fields.Many2One('account.move', 'Move', readonly=True)
     account = fields.Many2One('account.account', 'Account', required=True,
-        states=_STATES,
+        states=_STATES, depends=_DEPENDS,
         domain=[
-            ('company', '=', Eval('company')),
+            ('company', '=', Eval('context', {}).get('company', 0)),
             ('kind', '!=', 'view'),
-        ])
+            ])
     payment_term = fields.Many2One('account.invoice.payment_term',
-        'Payment Term', required=True, states=_STATES)
+        'Payment Term', required=True, states=_STATES, depends=_DEPENDS)
     lines = fields.One2Many('account.invoice.line', 'invoice', 'Lines',
         states=_STATES, on_change=[
             'lines', 'taxes', 'currency', 'party', 'type'
-        ], depends=['currency_date'])
+        ], depends=['state', 'currency_date'])
     taxes = fields.One2Many('account.invoice.tax', 'invoice', 'Tax Lines',
-        states=_STATES, on_change=['lines', 'taxes', 'currency', 'party', 'type'])
-    comment = fields.Text('Comment', states=_STATES)
+        states=_STATES, depends=_DEPENDS,
+        on_change=['lines', 'taxes', 'currency', 'party', 'type'])
+    comment = fields.Text('Comment', states=_STATES, depends=_DEPENDS)
     untaxed_amount = fields.Function(fields.Numeric('Untaxed',
-            digits=(16, Eval('currency_digits', 2))), 'get_untaxed_amount',
-            searcher='search_untaxed_amount')
-    tax_amount = fields.Function(fields.Numeric('Tax',
-        digits=(16, Eval('currency_digits', 2))), 'get_tax_amount',
-        searcher='search_tax_amount')
-    total_amount = fields.Function(fields.Numeric('Total',
-        digits=(16, Eval('currency_digits', 2))), 'get_total_amount',
-        searcher='search_total_amount')
+            digits=(16, Eval('currency_digits', 2)),
+            depends=['currency_digits']),
+        'get_untaxed_amount', searcher='search_untaxed_amount')
+    tax_amount = fields.Function(fields.Numeric('Tax', digits=(16,
+                Eval('currency_digits', 2)), depends=['currency_digits']),
+        'get_tax_amount', searcher='search_tax_amount')
+    total_amount = fields.Function(fields.Numeric('Total', digits=(16,
+                Eval('currency_digits', 2)), depends=['currency_digits']),
+        'get_total_amount', searcher='search_total_amount')
     reconciled = fields.Function(fields.Boolean('Reconciled'),
             'get_reconciled')
     lines_to_pay = fields.Function(fields.One2Many('account.move.line', None,
@@ -115,16 +126,18 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     payment_lines = fields.Many2Many('account.invoice-account.move.line',
             'invoice', 'line', readonly=True, string='Payment Lines')
     amount_to_pay_today = fields.Function(fields.Numeric('Amount to Pay Today',
-        digits=(16, Eval('currency_digits', 2))), 'get_amount_to_pay')
+            digits=(16, Eval('currency_digits', 2)),
+            depends=['currency_digits']), 'get_amount_to_pay')
     amount_to_pay = fields.Function(fields.Numeric('Amount to Pay',
-        digits=(16, Eval('currency_digits', 2)),), 'get_amount_to_pay')
-    invoice_report = fields.Binary('Invoice Report', readonly=True)
+            digits=(16, Eval('currency_digits', 2)),
+            depends=['currency_digits']), 'get_amount_to_pay')
+    invoice_report_cache = fields.Binary('Invoice Report', readonly=True)
     invoice_report_format = fields.Char('Invoice Report Format', readonly=True)
 
     def __init__(self):
         super(Invoice, self).__init__()
         self._check_modify_exclude = ['state', 'payment_lines',
-                'invoice_report', 'invoice_report_format']
+                'invoice_report_cache', 'invoice_report_format']
         self._rpc.update({
             'button_draft': True,
         })
@@ -172,6 +185,21 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         # Migration from 1.2 invoice_date is no more required
         table.not_null_action('invoice_date', action='remove')
 
+        # Migration from 2.0 invoice_report renamed into invoice_report_cache
+        # to remove base64 encoding
+
+        if (table.column_exist('invoice_report')
+                and table.column_exist('invoice_report_cache')):
+            cursor.execute('SELECT id, invoice_report '
+                'FROM "' + self._table + '"')
+            for invoice_id, report in cursor.fetchall():
+                if report:
+                    report = base64.decodestring(report)
+                    cursor.execute('UPDATE "' + self._table + '" '
+                        'SET invoice_report_cache = %s '
+                        'WHERE id = %s', (invoice_id, report))
+                table.drop_column('invoice_report')
+
         # Add index on create_date
         table.index_action('create_date', action='add')
 
@@ -182,15 +210,15 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return 'draft'
 
     def default_currency(self):
-        company_obj = self.pool.get('company.company')
-        currency_obj = self.pool.get('currency.currency')
+        company_obj = Pool().get('company.company')
+        currency_obj = Pool().get('currency.currency')
         if Transaction().context.get('company'):
             company = company_obj.browse(Transaction().context['company'])
             return company.currency.id
         return False
 
     def default_currency_digits(self):
-        company_obj = self.pool.get('company.company')
+        company_obj = Pool().get('company.company')
         if Transaction().context.get('company'):
             company = company_obj.browse(Transaction().context['company'])
             return company.currency.digits
@@ -200,14 +228,51 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return Transaction().context.get('company') or False
 
     def default_payment_term(self):
-        payment_term_obj = self.pool.get('account.invoice.payment_term')
+        payment_term_obj = Pool().get('account.invoice.payment_term')
         payment_term_ids = payment_term_obj.search(self.payment_term.domain)
         if len(payment_term_ids) == 1:
             return payment_term_ids[0]
         return False
 
+    def __get_account_payment_term(self, type_, party_id, company_id):
+        '''
+        Return default account and payment term
+        '''
+        pool = Pool()
+        party_obj = pool.get('party.party')
+        company_obj = pool.get('company.company')
+        account_obj = pool.get('account.account')
+        payment_term_obj = pool.get('account.invoice.payment_term')
+
+        result = {
+            'account': False,
+            }
+        if party_id:
+            party = party_obj.browse(party_id)
+            if type_ in ('out_invoice', 'out_credit_note'):
+                result['account'] = party.account_receivable.id
+                if type_ == 'out_invoice' and party.payment_term:
+                    result['payment_term'] = party.payment_term.id
+            elif type_ in ('in_invoice', 'in_credit_note'):
+                result['account'] = party.account_payable.id
+                if type_ == 'in_invoice' and party.supplier_payment_term:
+                    result['payment_term'] = party.supplier_payment_term.id
+        if company_id and type_ in ('out_credit_note', 'in_credit_note'):
+            company = company_obj.browse(company_id)
+            if type_ == 'out_credit_note':
+                result['payment_term'] = company.payment_term.id
+            else:
+                result['payment_term'] = company.supplier_payment_term.id
+        if result['account']:
+            result['account.rec_name'] = account_obj.browse(
+                    result['account']).rec_name
+        if result.get('payment_term'):
+            result['payment_term.rec_name'] = payment_term_obj.browse(
+                    result['payment_term']).rec_name
+        return result
+
     def on_change_type(self, vals):
-        journal_obj = self.pool.get('account.journal')
+        journal_obj = Pool().get('account.journal')
         res = {}
         journal_ids = journal_obj.search([
             ('type', '=', _TYPE2JOURNAL.get(vals.get('type', 'out_invoice'),
@@ -217,51 +282,31 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             journal = journal_obj.browse(journal_ids[0])
             res['journal'] = journal.id
             res['journal.rec_name'] = journal.rec_name
+        res.update(self.__get_account_payment_term(vals.get('type'),
+                vals.get('party'), vals.get('company')))
         return res
 
     def on_change_party(self, vals):
-        party_obj = self.pool.get('party.party')
-        address_obj = self.pool.get('party.address')
-        account_obj = self.pool.get('account.account')
-        payment_term_obj = self.pool.get('account.invoice.payment_term')
-        company_obj = self.pool.get('company.company')
+        pool = Pool()
+        party_obj = pool.get('party.party')
+        address_obj = pool.get('party.address')
         res = {
             'invoice_address': False,
-            'account': False,
         }
+        res.update(self.__get_account_payment_term(vals.get('type'),
+                vals.get('party'), vals.get('company')))
+
         if vals.get('party'):
             party = party_obj.browse(vals['party'])
             res['invoice_address'] = party_obj.address_get(party.id,
                     type='invoice')
-            if vals.get('type') in ('out_invoice', 'out_credit_note'):
-                res['account'] = party.account_receivable.id
-                if vals['type'] == 'out_invoice' and party.payment_term:
-                    res['payment_term'] = party.payment_term.id
-            elif vals.get('type') in ('in_invoice', 'in_credit_note'):
-                res['account'] = party.account_payable.id
-                if vals['type'] == 'in_invoice' and party.supplier_payment_term:
-                    res['payment_term'] = party.supplier_payment_term.id
-
-        if vals.get('company'):
-            company = company_obj.browse(vals['company'])
-            if vals.get('type') == 'out_credit_note':
-                res['payment_term'] = company.payment_term.id
-            elif vals.get('type') == 'in_credit_note':
-                res['payment_term'] = company.supplier_payment_term.id
-
         if res['invoice_address']:
             res['invoice_address.rec_name'] = address_obj.browse(
                     res['invoice_address']).rec_name
-        if res['account']:
-            res['account.rec_name'] = account_obj.browse(
-                    res['account']).rec_name
-        if res.get('payment_term'):
-            res['payment_term.rec_name'] = payment_term_obj.browse(
-                    res['payment_term']).rec_name
         return res
 
     def on_change_with_currency_digits(self, vals):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         if vals.get('currency'):
             currency = currency_obj.browse(vals['currency'])
             return currency.digits
@@ -274,13 +319,13 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return res
 
     def on_change_with_currency_date(self, vals):
-        date_obj = self.pool.get('ir.date')
+        date_obj = Pool().get('ir.date')
         today = date_obj.today()
         date = vals.get('invoice_date') or today
         return date
 
     def get_currency_date(self, ids, name):
-        date_obj = self.pool.get('ir.date')
+        date_obj = Pool().get('ir.date')
         res = {}
         today = date_obj.today()
         for invoice in self.browse(ids):
@@ -288,7 +333,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return res
 
     def on_change_with_party_lang(self, vals):
-        party_obj = self.pool.get('party.party')
+        party_obj = Pool().get('party.party')
         if vals.get('party'):
             party = party_obj.browse(vals['party'])
             if party.lang:
@@ -329,8 +374,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return self._on_change_lines_taxes(vals)
 
     def _on_change_lines_taxes(self, vals):
-        currency_obj = self.pool.get('currency.currency')
-        tax_obj = self.pool.get('account.tax')
+        currency_obj = Pool().get('currency.currency')
+        tax_obj = Pool().get('account.tax')
         res = {
             'untaxed_amount': Decimal('0.0'),
             'tax_amount': Decimal('0.0'),
@@ -418,7 +463,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return res
 
     def get_untaxed_amount(self, ids, name):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         res = {}
         for invoice in self.browse(ids):
             res.setdefault(invoice.id, _ZERO)
@@ -431,7 +476,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return res
 
     def get_tax_amount(self, ids, name):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         cursor = Transaction().cursor
         res = {}
         type_name = FIELDS[self.tax_amount._type].sql_type(self.tax_amount)[0]
@@ -454,7 +499,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return res
 
     def get_total_amount(self, ids, name):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         res = {}
         for invoice in self.browse(ids):
             res[invoice.id] = currency_obj.round(invoice.currency,
@@ -483,13 +528,13 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     if line.account.id == invoice.account.id \
                             and line.maturity_date:
                         lines.append(line)
-            lines.sort(lambda x, y: cmp(x.maturity_date, y.maturity_date))
+            lines.sort(key=operator.attrgetter('maturity_date'))
             res[invoice.id] = [x.id for x in lines]
         return res
 
     def get_amount_to_pay(self, ids, name):
-        currency_obj = self.pool.get('currency.currency')
-        date_obj = self.pool.get('ir.date')
+        currency_obj = Pool().get('currency.currency')
+        date_obj = Pool().get('ir.date')
 
         compute_ids = self.search([
             ('id', 'in', ids),
@@ -536,9 +581,10 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return res
 
     def search_total_amount(self, name, clause):
-        rule_obj = self.pool.get('ir.rule')
-        line_obj = self.pool.get('account.invoice.line')
-        tax_obj = self.pool.get('account.invoice.tax')
+        pool = Pool()
+        rule_obj = pool.get('ir.rule')
+        line_obj = pool.get('account.invoice.line')
+        tax_obj = pool.get('account.invoice.tax')
         type_name = FIELDS[self.total_amount._type].sql_type(
                 self.total_amount)[0]
         cursor = Transaction().cursor
@@ -571,9 +617,10 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
     def search_untaxed_amount(self, name, clause):
-        rule_obj = self.pool.get('ir.rule')
-        line_obj = self.pool.get('account.invoice.line')
-        tax_obj = self.pool.get('account.invoice.tax')
+        pool = Pool()
+        rule_obj = pool.get('ir.rule')
+        line_obj = pool.get('account.invoice.line')
+        tax_obj = pool.get('account.invoice.tax')
         type_name = FIELDS[self.untaxed_amount._type].sql_type(
                 self.untaxed_amount)[0]
         cursor = Transaction().cursor
@@ -592,9 +639,10 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
     def search_tax_amount(self, name, clause):
-        rule_obj = self.pool.get('ir.rule')
-        line_obj = self.pool.get('account.invoice.line')
-        tax_obj = self.pool.get('account.invoice.tax')
+        pool = Pool()
+        rule_obj = pool.get('ir.rule')
+        line_obj = pool.get('account.invoice.line')
+        tax_obj = pool.get('account.invoice.tax')
         type_name = FIELDS[self.tax_amount._type].sql_type(
                 self.tax_amount)[0]
         cursor = Transaction().cursor
@@ -622,7 +670,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return True
 
     def get_tax_context(self, invoice):
-        party_obj = self.pool.get('party.party')
+        party_obj = Pool().get('party.party')
         res = {}
         if isinstance(invoice, dict):
             if invoice.get('party'):
@@ -660,8 +708,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return key, val
 
     def _compute_taxes(self, invoice):
-        tax_obj = self.pool.get('account.tax')
-        currency_obj = self.pool.get('currency.currency')
+        tax_obj = Pool().get('account.tax')
+        currency_obj = Pool().get('currency.currency')
 
         context = self.get_tax_context(invoice)
 
@@ -689,8 +737,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return res
 
     def update_taxes(self, ids, exception=False):
-        tax_obj = self.pool.get('account.invoice.tax')
-        currency_obj = self.pool.get('currency.currency')
+        tax_obj = Pool().get('account.invoice.tax')
+        currency_obj = Pool().get('currency.currency')
         for invoice in self.browse(ids):
             if invoice.state in ('open', 'paid', 'cancel'):
                 continue
@@ -728,7 +776,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         '''
         Return list of move line values for each invoice lines
         '''
-        line_obj = self.pool.get('account.invoice.line')
+        line_obj = Pool().get('account.invoice.line')
         res = []
         for line in invoice.lines:
             val = line_obj.get_move_line(line)
@@ -740,7 +788,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         '''
         Return list of move line values for each invoice taxes
         '''
-        tax_obj = self.pool.get('account.invoice.tax')
+        tax_obj = Pool().get('account.invoice.tax')
         res = []
         for tax in invoice.taxes:
             val = tax_obj.get_move_line(tax)
@@ -752,7 +800,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         '''
         Return move line
         '''
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         res = {}
         if invoice.currency.id != invoice.company.currency.id:
             with Transaction().set_context(date=invoice.currency_date):
@@ -777,11 +825,12 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return res
 
     def create_move(self, invoice_id):
-        tax_obj = self.pool.get('account.invoice.tax')
-        payment_term_obj = self.pool.get('account.invoice.payment_term')
-        currency_obj = self.pool.get('currency.currency')
-        move_obj = self.pool.get('account.move')
-        period_obj = self.pool.get('account.period')
+        pool = Pool()
+        tax_obj = pool.get('account.invoice.tax')
+        payment_term_obj = pool.get('account.invoice.payment_term')
+        currency_obj = pool.get('currency.currency')
+        move_obj = pool.get('account.move')
+        period_obj = pool.get('account.period')
 
         invoice = self.browse(invoice_id)
         if invoice.move:
@@ -823,9 +872,10 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return move_id
 
     def set_number(self, invoice_id):
-        period_obj = self.pool.get('account.period')
-        sequence_obj = self.pool.get('ir.sequence.strict')
-        date_obj = self.pool.get('ir.date')
+        pool = Pool()
+        period_obj = pool.get('account.period')
+        sequence_obj = pool.get('ir.sequence.strict')
+        date_obj = pool.get('ir.date')
 
         invoice = self.browse(invoice_id)
 
@@ -905,9 +955,10 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return res
 
     def copy(self, ids, default=None):
-        line_obj = self.pool.get('account.invoice.line')
-        tax_obj = self.pool.get('account.invoice.tax')
-        date_obj = self.pool.get('ir.date')
+        pool = Pool()
+        line_obj = pool.get('account.invoice.line')
+        tax_obj = pool.get('account.invoice.tax')
+        date_obj = pool.get('ir.date')
 
         int_id = False
         if isinstance(ids, (int, long)):
@@ -920,7 +971,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         default['state'] = 'draft'
         default['number'] = False
         default['move'] = False
-        default['invoice_report'] = False
+        default['invoice_report_cache'] = False
         default['invoice_report_format'] = False
         default['payment_lines'] = False
         default['lines'] = False
@@ -963,7 +1014,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         '''
         Return list of line ids and the remainder to make reconciliation.
         '''
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
 
         if exclude_ids is None:
             exclude_ids = []
@@ -1033,9 +1084,10 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         :param second_currency: the id of the second currency
         :return: the id of the payment line
         '''
-        journal_obj = self.pool.get('account.journal')
-        move_obj = self.pool.get('account.move')
-        period_obj = self.pool.get('account.period')
+        pool = Pool()
+        journal_obj = pool.get('account.journal')
+        move_obj = pool.get('account.move')
+        period_obj = pool.get('account.period')
 
         lines = []
         invoice = self.browse(invoice_id)
@@ -1111,7 +1163,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         '''
         Generate invoice report and store it in invoice_report field.
         '''
-        invoice_report = self.pool.get('account.invoice', type='report')
+        invoice_report = Pool().get('account.invoice', type='report')
         invoice_report.execute([invoice_id], {'id': invoice_id})
         return
 
@@ -1119,8 +1171,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         '''
         Return values to credit invoice.
         '''
-        invoice_line_obj = self.pool.get('account.invoice.line')
-        invoice_tax_obj = self.pool.get('account.invoice.tax')
+        invoice_line_obj = Pool().get('account.invoice.line')
+        invoice_tax_obj = Pool().get('account.invoice.tax')
 
         res = {}
         if invoice.type == 'out_invoice':
@@ -1162,7 +1214,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         :param refund: a boolean to specify the refund
         :return: the list of new invoice id
         '''
-        move_line_obj = self.pool.get('account.move.line')
+        move_line_obj = Pool().get('account.move.line')
 
         new_ids = []
         for invoice in self.browse(ids):
@@ -1180,6 +1232,30 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     move_line_obj.reconcile(line_ids)
         return new_ids
 
+    def wkf_draft(self, invoice):
+        self.write(invoice.id, {'state': 'draft'})
+
+    def wkf_proforma(self, invoice):
+        self.write(invoice.id, {'state': 'proforma'})
+
+    def wkf_open(self, invoice):
+        self.set_number(invoice.id)
+        self.create_move(invoice.id)
+        self.write(invoice.id, {'state': 'open'})
+        self.print_invoice(invoice.id)
+
+    def wkf_paid(self, invoice):
+        self.write(invoice.id, {'state': 'paid'})
+
+    def wkf_cancel(self, invoice):
+        self.write(invoice.id, {'state': 'cancel'})
+
+    def wkf_triggered_moves(self, invoice):
+        return [x.id for x in invoice.lines_to_pay]
+
+    def wkf_open2paid(self, invoice):
+        return invoice.reconciled
+
 Invoice()
 
 
@@ -1202,42 +1278,44 @@ class InvoiceLine(ModelSQL, ModelView):
     _description = __doc__
 
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
-            select=1, states={
-                'required': And(Not(Bool(Eval('invoice_type'))),
-                    Bool(Eval('party')),
-                    Bool(Eval('currency')),
-                    Bool(Eval('company'))),
-                'invisible': Bool(Get(Eval('context', {}), 'standalone')),
-            })
+        select=1, states={
+            'required': (~Eval('invoice_type') & Eval('party')
+                & Eval('currency') & Eval('company')),
+            'invisible': Bool(Eval('context', {}).get('standalone')),
+            },
+        depends=['invoice_type', 'party', 'company', 'currency'])
     invoice_type = fields.Selection(_TYPE, 'Invoice Type', select=1,
-            states={
-                'readonly': Or(Bool(Get(Eval('context', {}), 'type')),
-                    Bool(Eval('type'))),
-                'required': Not(Bool(Eval('invoice'))),
-            })
+        states={
+            'readonly': Eval('context', {}).get('type') | Eval('type'),
+            'required': ~Eval('invoice'),
+            },
+        depends=['invoice', 'type'])
     party = fields.Many2One('party.party', 'Party', select=1,
-            states={
-                'required': Not(Bool(Eval('invoice'))),
-            })
+        states={
+            'required': ~Eval('invoice'),
+            },
+        depends=['invoice'])
     party_lang = fields.Function(fields.Char('Party Language',
         on_change_with=['party']), 'get_party_language')
     currency = fields.Many2One('currency.currency', 'Currency',
-            states={
-                'required': Not(Bool(Eval('invoice'))),
-            })
+        states={
+            'required': ~Eval('invoice'),
+            },
+        depends=['invoice'])
     currency_digits = fields.Function(fields.Integer('Currency Digits',
         on_change_with=['currency']), 'get_currency_digits')
     company = fields.Many2One('company.company', 'Company',
-            states={
-                'required': Not(Bool(Eval('invoice'))),
+        states={
+            'required': ~Eval('invoice'),
             }, domain=[
-                ('id', If(In('company', Eval('context', {})), '=', '!='),
-                    Get(Eval('context', {}), 'company', 0)),
-            ])
+            ('id', If(Eval('context', {}).contains('company'), '=', '!='),
+                Eval('context', {}).get('company', 0)),
+            ],
+        depends=['invoice'])
 
     sequence = fields.Integer('Sequence',
-            states={
-                'invisible': Bool(Get(Eval('context', {}), 'standalone')),
+        states={
+            'invisible': Bool(Eval('context', {}).get('standalone')),
             })
     type = fields.Selection([
         ('line', 'Line'),
@@ -1245,64 +1323,75 @@ class InvoiceLine(ModelSQL, ModelView):
         ('title', 'Title'),
         ('comment', 'Comment'),
         ], 'Type', select=1, required=True, states={
-            'invisible': Bool(Get(Eval('context', {}), 'standalone')),
+            'invisible': Bool(Eval('context', {}).get('standalone')),
         })
     quantity = fields.Float('Quantity',
-            digits=(16, Eval('unit_digits', 2)),
-            states={
-                'invisible': Not(Equal(Eval('type'), 'line')),
-                'required': Equal(Eval('type'), 'line'),
-            })
+        digits=(16, Eval('unit_digits', 2)),
+        states={
+            'invisible': Eval('type') != 'line',
+            'required': Eval('type') == 'line',
+            },
+        depends=['type', 'unit_digits'])
     unit = fields.Many2One('product.uom', 'Unit',
-            states={
-                'required': Bool(Eval('product')),
-                'invisible': Not(Equal(Eval('type'), 'line')),
-            }, domain=[
-                ('category', '=',
-                    (Eval('product'), 'product.default_uom.category')),
+        states={
+            'required': Bool(Eval('product')),
+            'invisible': Eval('type') != 'line',
+            },
+        domain=[
+            ('category', '=',
+                (Eval('product'), 'product.default_uom.category')),
             ],
-            context={
-                'category': (Eval('product'), 'product.default_uom.category'),
-            })
+        context={
+            'category': (Eval('product'), 'product.default_uom.category'),
+            },
+        depends=['product', 'type'])
     unit_digits = fields.Function(fields.Integer('Unit Digits',
         on_change_with=['unit']), 'get_unit_digits')
     product = fields.Many2One('product.product', 'Product',
-            states={
-                'invisible': Not(Equal(Eval('type'), 'line')),
-            }, on_change=['product', 'unit', 'quantity', 'description',
-                '_parent_invoice.type', '_parent_invoice.party',
-                '_parent_invoice.currency', '_parent_invoice.currency_date',
-                'party', 'currency', 'invoice'])
+        states={
+            'invisible': Eval('type') != 'line',
+            },
+        on_change=['product', 'unit', 'quantity', 'description',
+            '_parent_invoice.type', '_parent_invoice.party',
+            '_parent_invoice.currency', '_parent_invoice.currency_date',
+            'party', 'currency', 'invoice'],
+        depends=['type'])
     account = fields.Many2One('account.account', 'Account',
-            domain=[
-                ('kind', '!=', 'view'),
-                ('company', '=', Get(Eval('_parent_invoice', {}), 'company',
-                    Eval('company'))),
-                ('id', '!=', Get(Eval('_parent_invoice', {}), 'account', 0)),
+        domain=[
+            ('kind', '!=', 'view'),
+            ('company', '=', Eval('_parent_invoice', {}).get('company',
+                    Eval('context', {}).get('company', 0))),
+            ('id', '!=', Eval('_parent_invoice', {}).get('account', 0)),
             ],
-            states={
-                'invisible': Not(Equal(Eval('type'), 'line')),
-                'required': Equal(Eval('type'), 'line'),
-            })
+        on_change=['account', 'product'],
+        states={
+            'invisible': Eval('type') != 'line',
+            'required': Eval('type') == 'line',
+            },
+        depends=['type'])
     unit_price = fields.Numeric('Unit Price', digits=(16, 4),
-            states={
-                'invisible': Not(Equal(Eval('type'), 'line')),
-                'required': Equal(Eval('type'), 'line'),
-            })
-    amount = fields.Function(fields.Numeric('Amount',
-        digits=(16, Get(Eval('_parent_invoice', {}), 'currency_digits',
-            Eval('currency_digits', 2))),
         states={
-            'invisible': Not(In(Eval('type'), ['line', 'subtotal'])),
-        }, on_change_with=['type', 'quantity', 'unit_price',
-            '_parent_invoice.currency', 'currency']), 'get_amount')
+            'invisible': Eval('type') != 'line',
+            'required': Eval('type') == 'line',
+            },
+        depends=['type'])
+    amount = fields.Function(fields.Numeric('Amount',
+            digits=(16, Eval('_parent_invoice', {}).get('currency_digits',
+                    Eval('currency_digits', 2))),
+            states={
+                'invisible': ~Eval('type').in_(['line', 'subtotal']),
+                },
+            on_change_with=['type', 'quantity', 'unit_price',
+                '_parent_invoice.currency', 'currency'],
+            depends=['type', 'currency_digits']), 'get_amount')
     description = fields.Text('Description', size=None, required=True)
     note = fields.Text('Note')
     taxes = fields.Many2Many('account.invoice.line-account.tax',
-            'line', 'tax', 'Taxes', domain=[('parent', '=', False)],
-            states={
-                'invisible': Not(Equal(Eval('type'), 'line')),
-            })
+        'line', 'tax', 'Taxes', domain=[('parent', '=', False)],
+        states={
+            'invisible': Eval('type') != 'line',
+            },
+        depends=['type'])
     invoice_taxes = fields.Function(fields.One2Many('account.invoice.tax',
         None, 'Invoice Taxes'), 'get_invoice_taxes')
 
@@ -1346,15 +1435,15 @@ class InvoiceLine(ModelSQL, ModelView):
         return Transaction().context.get('invoice_type', 'out_invoice')
 
     def default_currency(self):
-        company_obj = self.pool.get('company.company')
-        currency_obj = self.pool.get('currency.currency')
+        company_obj = Pool().get('company.company')
+        currency_obj = Pool().get('currency.currency')
         if Transaction().context.get('company'):
             company = company_obj.browse(Transaction().context['company'])
             return company.currency.id
         return False
 
     def default_currency_digits(self):
-        company_obj = self.pool.get('company.company')
+        company_obj = Pool().get('company.company')
         if Transaction().context.get('company'):
             company = company_obj.browse(Transaction().context['company'])
             return company.currency.digits
@@ -1373,7 +1462,7 @@ class InvoiceLine(ModelSQL, ModelView):
         return Decimal('0.0')
 
     def on_change_with_party_lang(self, vals):
-        party_obj = self.pool.get('party.party')
+        party_obj = Pool().get('party.party')
         if vals.get('party'):
             party = party_obj.browse(vals['party'])
             if party.lang:
@@ -1398,7 +1487,7 @@ class InvoiceLine(ModelSQL, ModelView):
         return res
 
     def on_change_with_amount(self, vals):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         if vals.get('type') == 'line':
             currency = vals.get('_parent_invoice.currency') or vals.get('currency')
             if isinstance(currency, (int, long)) and currency:
@@ -1411,7 +1500,7 @@ class InvoiceLine(ModelSQL, ModelView):
         return Decimal('0.0')
 
     def on_change_with_unit_digits(self, vals):
-        uom_obj = self.pool.get('product.uom')
+        uom_obj = Pool().get('product.uom')
         if vals.get('unit'):
             uom = uom_obj.browse(vals['unit'])
             return uom.digits
@@ -1427,7 +1516,7 @@ class InvoiceLine(ModelSQL, ModelView):
         return res
 
     def on_change_with_currency_digits(self, vals):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         if vals.get('currency'):
             currency = currency_obj.browse(vals['currency'])
             return currency.digits
@@ -1440,7 +1529,7 @@ class InvoiceLine(ModelSQL, ModelView):
         return res
 
     def get_amount(self, ids, name):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         res = {}
         for line in self.browse(ids):
             if line.type == 'line':
@@ -1464,8 +1553,8 @@ class InvoiceLine(ModelSQL, ModelView):
         return res
 
     def get_invoice_taxes(self, ids, name):
-        tax_obj = self.pool.get('account.tax')
-        invoice_obj = self.pool.get('account.invoice')
+        tax_obj = Pool().get('account.tax')
+        invoice_obj = Pool().get('account.invoice')
 
         res = {}
         for line in self.browse(ids):
@@ -1504,15 +1593,16 @@ class InvoiceLine(ModelSQL, ModelView):
         return res
 
     def on_change_product(self, vals):
-        product_obj = self.pool.get('product.product')
-        party_obj = self.pool.get('party.party')
-        account_obj = self.pool.get('account.account')
-        uom_obj = self.pool.get('product.uom')
-        company_obj = self.pool.get('company.company')
-        currency_obj = self.pool.get('currency.currency')
-        tax_rule_obj = self.pool.get('account.tax.rule')
-        invoice_obj = self.pool.get('account.invoice')
-        date_obj = self.pool.get('ir.date')
+        pool = Pool()
+        product_obj = pool.get('product.product')
+        party_obj = pool.get('party.party')
+        account_obj = pool.get('account.account')
+        uom_obj = pool.get('product.uom')
+        company_obj = pool.get('company.company')
+        currency_obj = pool.get('currency.currency')
+        tax_rule_obj = pool.get('account.tax.rule')
+        invoice_obj = pool.get('account.invoice')
+        date_obj = pool.get('ir.date')
 
         if not vals.get('product'):
             return {}
@@ -1620,6 +1710,19 @@ class InvoiceLine(ModelSQL, ModelView):
         res['amount'] = self.on_change_with_amount(vals)
         return res
 
+    def on_change_account(self, values):
+        account_obj = Pool().get('account.account')
+        if values.get('product'):
+            return {}
+        taxes = []
+        result = {
+            'taxes': taxes,
+        }
+        if values.get('account'):
+            account = account_obj.browse(values['account'])
+            taxes.extend(tax.id for tax in account.taxes)
+        return result
+
     def check_modify(self, ids):
         '''
         Check if the lines can be modified
@@ -1643,7 +1746,7 @@ class InvoiceLine(ModelSQL, ModelView):
         return super(InvoiceLine, self).write(ids, vals)
 
     def create(self, vals):
-        invoice_obj = self.pool.get('account.invoice')
+        invoice_obj = Pool().get('account.invoice')
         if vals.get('invoice'):
             invoice = invoice_obj.browse(vals['invoice'])
             if invoice.state in ('open', 'paid', 'cancel'):
@@ -1670,9 +1773,10 @@ class InvoiceLine(ModelSQL, ModelView):
         return True
 
     def _compute_taxes(self, line):
-        tax_obj = self.pool.get('account.tax')
-        currency_obj = self.pool.get('currency.currency')
-        invoice_obj = self.pool.get('account.invoice')
+        pool = Pool()
+        tax_obj = pool.get('account.tax')
+        currency_obj = pool.get('currency.currency')
+        invoice_obj = pool.get('account.invoice')
 
         context = invoice_obj.get_tax_context(line.invoice)
         res = []
@@ -1704,7 +1808,7 @@ class InvoiceLine(ModelSQL, ModelView):
         '''
         Return a list of move lines values for invoice line
         '''
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         res = {}
         if line.type != 'line':
             return []
@@ -1790,23 +1894,23 @@ class InvoiceTax(ModelSQL, ModelView):
     sequence_number = fields.Function(fields.Integer('Sequence Number'),
             'get_sequence_number')
     account = fields.Many2One('account.account', 'Account', required=True,
-            domain=[
-                ('kind', '!=', 'view'),
-                ('company', '=', Get(Eval('_parent_invoice', {}), 'company')),
+        domain=[
+            ('kind', '!=', 'view'),
+            ('company', '=', Eval('_parent_invoice', {}).get('company', 0)),
             ])
     base = fields.Numeric('Base',
-            digits=(16, Get(Eval('_parent_invoice', {}), 'currency_digits', 2)))
+        digits=(16, Eval('_parent_invoice', {}).get('currency_digits', 2)))
     amount = fields.Numeric('Amount',
-            digits=(16, Get(Eval('_parent_invoice', {}), 'currency_digits', 2)))
+        digits=(16, Eval('_parent_invoice', {}).get('currency_digits', 2)))
     manual = fields.Boolean('Manual')
     base_code = fields.Many2One('account.tax.code', 'Base Code',
-            domain=[
-                ('company', '=', Get(Eval('_parent_invoice', {}), 'company')),
+        domain=[
+            ('company', '=', Eval('_parent_invoice', {}).get('company', 0)),
             ])
     base_sign = fields.Numeric('Base Sign', digits=(2, 0))
     tax_code = fields.Many2One('account.tax.code', 'Tax Code',
-            domain=[
-                ('company', '=', Get(Eval('_parent_invoice', {}), 'company')),
+        domain=[
+            ('company', '=', Eval('_parent_invoice', {}).get('company', 0)),
             ])
     tax_sign = fields.Numeric('Tax Sign', digits=(2, 0))
     tax = fields.Many2One('account.tax', 'Tax')
@@ -1875,7 +1979,7 @@ class InvoiceTax(ModelSQL, ModelView):
         return super(InvoiceTax, self).write(ids, vals)
 
     def create(self, vals):
-        invoice_obj = self.pool.get('account.invoice')
+        invoice_obj = Pool().get('account.invoice')
         if vals.get('invoice'):
             invoice = invoice_obj.browse(vals['invoice'])
             if invoice.state in ('open', 'paid', 'cancel'):
@@ -1899,7 +2003,7 @@ class InvoiceTax(ModelSQL, ModelView):
         '''
         Return a list of move lines values for invoice tax
         '''
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         res = {}
         if not tax.amount:
             return []
@@ -2039,7 +2143,7 @@ class InvoiceReport(Report):
         self._rpc['execute'] = True
 
     def execute(self, ids, datas):
-        invoice_obj = self.pool.get('account.invoice')
+        invoice_obj = Pool().get('account.invoice')
 
         res = super(InvoiceReport, self).execute(ids, datas)
         if len(ids) > 1 or datas['id'] != ids[0]:
@@ -2051,31 +2155,32 @@ class InvoiceReport(Report):
         return res
 
     def _get_objects(self, ids, model, datas):
-        invoice_obj = self.pool.get('account.invoice')
+        invoice_obj = Pool().get('account.invoice')
 
         with Transaction().set_context(language=False):
             return invoice_obj.browse([ids[0]])
 
     def parse(self, report, objects, datas, localcontext):
-        user_obj = self.pool.get('res.user')
-        invoice_obj = self.pool.get('account.invoice')
+        user_obj = Pool().get('res.user')
+        invoice_obj = Pool().get('account.invoice')
 
         invoice = objects[0]
 
-        if invoice.invoice_report:
+        if invoice.invoice_report_cache:
             return (invoice.invoice_report_format,
-                    base64.decodestring(invoice.invoice_report))
+                invoice.invoice_report_cache)
 
         user = user_obj.browse(Transaction().user)
         localcontext['company'] = user.company
         res = super(InvoiceReport, self).parse(report, objects, datas,
                 localcontext)
-        #If the invoice is open or paid and the report not saved in invoice_report
-        #there was an error somewhere. So we save it now in invoice_report
+        # If the invoice is open or paid and the report not saved in
+        # invoice_report_cache there was an error somewhere. So we save it now
+        # in invoice_report_cache
         if invoice.state in ('open', 'paid'):
             invoice_obj.write(invoice.id, {
                 'invoice_report_format': res[0],
-                'invoice_report': base64.encodestring(res[1]),
+                'invoice_report_cache': res[1],
                 })
         return res
 
@@ -2086,7 +2191,8 @@ class PayInvoiceInit(ModelView):
     'Pay Invoice Init'
     _name = 'account.invoice.pay_invoice.init'
     _description = __doc__
-    amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)))
+    amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)),
+        depends=['currency_digits'])
     currency = fields.Many2One('currency.currency', 'Currency', required=True)
     currency_digits = fields.Integer('Currency Digits', readonly=True,
             on_change_with=['currency'])
@@ -2096,11 +2202,11 @@ class PayInvoiceInit(ModelView):
     date = fields.Date('Date', required=True)
 
     def default_date(self):
-        date_obj = self.pool.get('ir.date')
+        date_obj = Pool().get('ir.date')
         return date_obj.today()
 
     def on_change_with_currency_digits(self, vals):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         if vals.get('currency'):
             currency = currency_obj.browse(vals['currency'])
             return currency.digits
@@ -2118,19 +2224,19 @@ class PayInvoiceAsk(ModelView):
         ('partial', 'Partial Payment'),
         ], 'Type', required=True)
     journal_writeoff = fields.Many2One('account.journal', 'Write-Off Journal',
-            states={
-                'invisible': Not(Equal(Eval('type'), 'writeoff')),
-                'required': Equal(Eval('type'), 'writeoff'),
-            })
+        states={
+            'invisible': Eval('type') != 'writeoff',
+            'required': Eval('type') == 'writeoff',
+            }, depends=['type'])
     account_writeoff = fields.Many2One('account.account', 'Write-Off Account',
-            domain=[
-                ('kind', '!=', 'view'),
-                ('company', '=', Eval('company')),
+        domain=[
+            ('kind', '!=', 'view'),
+            ('company', '=', Eval('context', {}).get('company', 0)),
             ],
-            states={
-                'invisible': Not(Equal(Eval('type'), 'writeoff')),
-                'required': Equal(Eval('type'), 'writeoff'),
-            })
+        states={
+            'invisible': Eval('type') != 'writeoff',
+            'required': Eval('type') == 'writeoff',
+            }, depends=['type'])
     amount = fields.Numeric('Payment Amount',
             digits=(16, Eval('currency_digits', 2)),
             readonly=True, depends=['currency_digits'])
@@ -2138,33 +2244,33 @@ class PayInvoiceAsk(ModelView):
             readonly=True)
     currency_digits = fields.Integer('Payment Currency Digits', readonly=True)
     amount_writeoff = fields.Numeric('Write-Off Amount',
-            digits=(16, Eval('currency_digits_writeoff', 2)), readonly=True,
-            depends=['currency_digits_writeoff'], states={
-                'invisible': Not(Equal(Eval('type'), 'writeoff')),
+        digits=(16, Eval('currency_digits_writeoff', 2)), readonly=True,
+        depends=['currency_digits_writeoff', 'type'], states={
+            'invisible': Eval('type') != 'writeoff',
             })
     currency_writeoff = fields.Many2One('currency.currency',
-            'Write-Off Currency', readonly=True, states={
-                'invisible': Not(Equal(Eval('type'), 'writeoff')),
-            })
+        'Write-Off Currency', readonly=True, states={
+            'invisible': Eval('type') != 'writeoff',
+            }, depends=['type'])
     currency_digits_writeoff = fields.Integer('Write-Off Currency Digits',
             readonly=True)
     lines_to_pay = fields.Many2Many('account.move.line', None, None,
             'Lines to Pay', readonly=True)
     lines = fields.Many2Many('account.move.line', None, None, 'Lines',
-            domain=[
-                ('id', 'in', Eval('lines_to_pay')),
-                ('reconciliation', '=', False),
+        domain=[
+            ('id', 'in', Eval('lines_to_pay')),
+            ('reconciliation', '=', False),
             ],
-            states={
-                'invisible': Not(Equal(Eval('type'), 'writeoff')),
+        states={
+            'invisible': Eval('type') != 'writeoff',
             }, on_change=['lines', 'amount', 'currency', 'currency_writeoff',
-                'invoice'],
-            depends=['lines_to_pay'])
+            'invoice'],
+        depends=['lines_to_pay', 'type'])
     payment_lines = fields.Many2Many('account.move.line', None, None,
-            'Payment Lines', readonly=True,
-            states={
-                'invisible': Not(Equal(Eval('type'), 'writeoff')),
-            })
+        'Payment Lines', readonly=True,
+        states={
+            'invisible': Eval('type') != 'writeoff',
+            }, depends=['type'])
     description = fields.Char('Description', size=None, readonly=True)
     journal = fields.Many2One('account.journal', 'Journal', readonly=True,
             domain=[('type', '=', 'cash')])
@@ -2177,9 +2283,10 @@ class PayInvoiceAsk(ModelView):
         return 'partial'
 
     def on_change_lines(self, vals):
-        currency_obj = self.pool.get('currency.currency')
-        line_obj = self.pool.get('account.move.line')
-        invoice_obj = self.pool.get('account.invoice')
+        pool = Pool()
+        currency_obj = pool.get('currency.currency')
+        line_obj = pool.get('account.move.line')
+        invoice_obj = pool.get('account.invoice')
 
         res = {}
         invoice = invoice_obj.browse(vals['invoice'])
@@ -2248,7 +2355,7 @@ class PayInvoice(Wizard):
             })
 
     def _init(self, data):
-        invoice_obj = self.pool.get('account.invoice')
+        invoice_obj = Pool().get('account.invoice')
         res = {}
         invoice = invoice_obj.browse(data['id'])
         res['currency'] = invoice.currency.id
@@ -2258,8 +2365,8 @@ class PayInvoice(Wizard):
         return res
 
     def _choice(self, data):
-        invoice_obj = self.pool.get('account.invoice')
-        currency_obj = self.pool.get('currency.currency')
+        invoice_obj = Pool().get('account.invoice')
+        currency_obj = Pool().get('currency.currency')
 
         invoice = invoice_obj.browse(data['id'])
 
@@ -2272,9 +2379,10 @@ class PayInvoice(Wizard):
         return 'ask'
 
     def _ask(self, data):
-        invoice_obj = self.pool.get('account.invoice')
-        currency_obj = self.pool.get('currency.currency')
-        line_obj = self.pool.get('account.move.line')
+        pool = Pool()
+        invoice_obj = pool.get('account.invoice')
+        currency_obj = pool.get('currency.currency')
+        line_obj = pool.get('account.move.line')
 
         res = {}
         invoice = invoice_obj.browse(data['id'])
@@ -2324,9 +2432,10 @@ class PayInvoice(Wizard):
         return res
 
     def _action_pay(self, data):
-        invoice_obj = self.pool.get('account.invoice')
-        currency_obj = self.pool.get('currency.currency')
-        move_line_obj = self.pool.get('account.move.line')
+        pool = Pool()
+        invoice_obj = pool.get('account.invoice')
+        currency_obj = pool.get('currency.currency')
+        move_line_obj = pool.get('account.move.line')
 
         invoice = invoice_obj.browse(data['id'])
 
@@ -2419,7 +2528,7 @@ class CreditInvoice(Wizard):
             })
 
     def _init(self, data):
-        invoice_obj = self.pool.get('account.invoice')
+        invoice_obj = Pool().get('account.invoice')
         res = {
             'with_refund': True,
         }
@@ -2430,9 +2539,10 @@ class CreditInvoice(Wizard):
         return res
 
     def _action_credit(self, data):
-        model_data_obj = self.pool.get('ir.model.data')
-        act_window_obj = self.pool.get('ir.action.act_window')
-        invoice_obj = self.pool.get('account.invoice')
+        pool = Pool()
+        model_data_obj = pool.get('ir.model.data')
+        act_window_obj = pool.get('ir.action.act_window')
+        invoice_obj = pool.get('account.invoice')
 
         refund = data['form']['with_refund']
 
diff --git a/invoice.xml b/invoice.xml
index 4786c37..f5fbc0e 100644
--- a/invoice.xml
+++ b/invoice.xml
@@ -46,12 +46,12 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="lines" colspan="6">
                                 <tree string="Lines" sequence="sequence" fill="1">
                                     <field name="type"/>
-                                    <field name="product" select="1"/>
+                                    <field name="product"/>
                                     <field name="account" tree_invisible="1"/>
                                     <field name="description"/>
-                                    <field name="quantity" select="1"/>
-                                    <field name="unit" select="2"/>
-                                    <field name="unit_price" select="2"/>
+                                    <field name="quantity"/>
+                                    <field name="unit"/>
+                                    <field name="unit_price"/>
                                     <field name="taxes"/>
                                     <field name="amount"/>
                                     <field name="sequence" tree_invisible="1"/>
@@ -76,20 +76,22 @@ this repository contains the full copyright notices and license terms. -->
                                         </tree>
                                     </field>
                                 </group>
-                                <group col="2" colspan="1" id="amount_state_buttons">
-                                    <label name="untaxed_amount"/>
-                                    <field name="untaxed_amount"/>
-                                    <label name="tax_amount"/>
-                                    <field name="tax_amount"/>
-                                    <label name="total_amount"/>
-                                    <field name="total_amount"/>
-                                    <group col="4" colspan="2" id="reconciled_state">
+                                <group col="4" colspan="1" id="amount_state_buttons">
+                                    <group col="2" colspan="2" id="reconciled_state">
                                         <label name="reconciled"/>
                                         <field name="reconciled" xexpand="0"/>
                                         <label name="state"/>
                                         <field name="state"/>
                                     </group>
-                                    <group col="5" colspan="2" id="buttons">
+                                    <group col="2" colspan="2" id="amount">
+                                        <label name="untaxed_amount" xalign="1.0" xexpand="1"/>
+                                        <field name="untaxed_amount" xalign="1.0" xexpand="0"/>
+                                        <label name="tax_amount" xalign="1.0" xexpand="1"/>
+                                        <field name="tax_amount" xalign="1.0" xexpand="0"/>
+                                        <label name="total_amount" xalign="1.0" xexpand="1"/>
+                                        <field name="total_amount" xalign="1.0" xexpand="0"/>
+                                    </group>
+                                    <group col="5" colspan="4" id="buttons">
                                         <button name="cancel" string="_Cancel"
                                             states="{'invisible': Not(In(Eval('state'), ['draft', 'proforma'])), 'readonly': Not(In(%(account.group_account)d, Eval('groups', [])))}"
                                             icon="tryton-cancel"/>
@@ -132,7 +134,6 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="amount_to_pay_today"/>
                             <label name="amount_to_pay"/>
                             <field name="amount_to_pay"/>
-                            <separator name="payment_lines" colspan="4"/>
                             <field name="payment_lines" colspan="4">
                                 <tree string="Payment Lines">
                                     <field name="date"/>
@@ -159,20 +160,20 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Invoices">
-                    <field name="type" select="2"/>
-                    <field name="number" select="1"/>
-                    <field name="reference" select="1"/>
-                    <field name="invoice_date" select="2"/>
-                    <field name="party" select="1"/>
-                    <field name="currency" select="2"/>
-                    <field name="untaxed_amount" select="2"/>
-                    <field name="tax_amount" select="2"/>
-                    <field name="total_amount" select="2"/>
-                    <field name="state" select="2"/>
+                    <field name="type"/>
+                    <field name="number"/>
+                    <field name="reference"/>
+                    <field name="invoice_date"/>
+                    <field name="party"/>
+                    <field name="currency"/>
+                    <field name="untaxed_amount"/>
+                    <field name="tax_amount"/>
+                    <field name="total_amount"/>
+                    <field name="state"/>
                     <field name="amount_to_pay_today"/>
-                    <field name="description" select="2"/>
+                    <field name="description"/>
                     <field name="currency_digits" tree_invisible="1"/>
-                    <field name="create_date" tree_invisible="1" select="2"/>
+                    <field name="create_date" tree_invisible="1"/>
                 </tree>
                 ]]>
             </field>
@@ -180,7 +181,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_form">
             <field name="name">All Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
+            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_form_view1">
             <field name="sequence" eval="10"/>
@@ -200,7 +201,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="res_model">account.invoice</field>
             <field name="domain">[('type', '=', 'out_invoice')]</field>
             <field name="context">{'type': 'out_invoice'}</field>
-            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
+            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form_view1">
             <field name="sequence" eval="10"/>
@@ -215,26 +216,6 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_invoices" action="act_invoice_out_invoice_form"
             id="menu_invoice_out_invoice_form" sequence="1"/>
 
-        <record model="ir.action.act_window" id="act_invoice_out_invoice_form2">
-            <field name="name">Invoices</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'out_invoice')]</field>
-            <field name="context">{'type': 'out_invoice'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form2_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_out_invoice_form2"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form2_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_out_invoice_form2"/>
-        </record>
-        <menuitem name="New Invoice" parent="menu_invoice_out_invoice_form"
-            action="act_invoice_out_invoice_form2"
-            id="menu_invoice_out_invoice_form2" sequence="1"/>
-
         <record model="ir.action.act_window" id="act_invoice_out_invoice_form3">
             <field name="name">Draft Invoices</field>
             <field name="res_model">account.invoice</field>
@@ -297,7 +278,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="res_model">account.invoice</field>
             <field name="domain">[('type', '=', 'out_credit_note')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
-            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
+            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form_view1">
             <field name="sequence" eval="10"/>
@@ -312,26 +293,6 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_invoices" action="act_invoice_out_credit_note_form"
             id="menu_invoice_out_credit_note_form" sequence="2"/>
 
-        <record model="ir.action.act_window" id="act_invoice_out_credit_note_form2">
-            <field name="name">Credit Notes</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'out_credit_note')]</field>
-            <field name="context">{'type': 'out_credit_note'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form2_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_out_credit_note_form2"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form2_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_out_credit_note_form2"/>
-        </record>
-        <menuitem name="New Credit Note" parent="menu_invoice_out_credit_note_form"
-            action="act_invoice_out_credit_note_form2"
-            id="menu_invoice_out_credit_note_form2" sequence="1"/>
-
         <record model="ir.action.act_window" id="act_invoice_out_credit_note_form3">
             <field name="name">Draft Credit Notes</field>
             <field name="res_model">account.invoice</field>
@@ -394,7 +355,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="res_model">account.invoice</field>
             <field name="domain">[('type', '=', 'in_invoice')]</field>
             <field name="context">{'type': 'in_invoice'}</field>
-            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
+            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form_view1">
             <field name="sequence" eval="10"/>
@@ -409,26 +370,6 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_invoices" action="act_invoice_in_invoice_form"
             id="menu_invoice_in_invoice_form" sequence="3"/>
 
-        <record model="ir.action.act_window" id="act_invoice_in_invoice_form2">
-            <field name="name">Supplier Invoices</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'in_invoice')]</field>
-            <field name="context">{'type': 'in_invoice'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form2_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_in_invoice_form2"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form2_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_in_invoice_form2"/>
-        </record>
-        <menuitem name="New Supplier Invoice" parent="menu_invoice_in_invoice_form"
-            action="act_invoice_in_invoice_form2"
-            id="menu_invoice_in_invoice_form2" sequence="1"/>
-
         <record model="ir.action.act_window" id="act_invoice_in_invoice_form3">
             <field name="name">Draft Supplier Invoices</field>
             <field name="res_model">account.invoice</field>
@@ -491,7 +432,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="res_model">account.invoice</field>
             <field name="domain">[('type', '=', 'in_credit_note')]</field>
             <field name="context">{'type': 'in_credit_note'}</field>
-            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
+            <field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form_view1">
             <field name="sequence" eval="10"/>
@@ -506,26 +447,6 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_invoices" action="act_invoice_in_credit_note_form"
             id="menu_invoice_in_credit_note_form" sequence="4"/>
 
-        <record model="ir.action.act_window" id="act_invoice_in_credit_note_form2">
-            <field name="name">Supplier Credit Notes</field>
-            <field name="res_model">account.invoice</field>
-            <field name="domain">[('type', '=', 'in_credit_note')]</field>
-            <field name="context">{'type': 'in_credit_note'}</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form2_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="invoice_view_form"/>
-            <field name="act_window" ref="act_invoice_in_credit_note_form2"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form2_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="invoice_view_tree"/>
-            <field name="act_window" ref="act_invoice_in_credit_note_form2"/>
-        </record>
-        <menuitem name="New Supplier Credit Note" parent="menu_invoice_in_credit_note_form"
-            action="act_invoice_in_credit_note_form2"
-            id="menu_invoice_in_credit_note_form2" sequence="1"/>
-
         <record model="ir.action.act_window" id="act_invoice_in_credit_note_form3">
             <field name="name">Draft Supplier Credit Notes</field>
             <field name="res_model">account.invoice</field>
@@ -585,9 +506,9 @@ this repository contains the full copyright notices and license terms. -->
 
         <record model="ir.model.access" id="access_invoice">
             <field name="model" search="[('model', '=', 'account.invoice')]"/>
-            <field name="perm_read" eval="True"/>
+            <field name="perm_read" eval="False"/>
             <field name="perm_write" eval="False"/>
-            <field name="perm_create" eval="True"/>
+            <field name="perm_create" eval="False"/>
             <field name="perm_delete" eval="False"/>
         </record>
         <record model="ir.model.access" id="access_invoice_account">
@@ -608,9 +529,18 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.sequence.type" id="sequence_type_account_invoice">
             <field name="name">Invoice</field>
             <field name="code">account.invoice</field>
-            <field name="groups"
-                eval="[('add', ref('res.group_admin')), ('add', ref('account.group_account_admin'))]"/>
         </record>
+        <record model="ir.sequence.type-res.group"
+            id="sequence_type_account_invoice_group_admin">
+            <field name="sequence_type" ref="sequence_type_account_invoice"/>
+            <field name="group" ref="res.group_admin"/>
+        </record>
+        <record model="ir.sequence.type-res.group"
+            id="sequence_type_account_invoice_group_account_admin">
+            <field name="sequence_type" ref="sequence_type_account_invoice"/>
+            <field name="group" ref="account.group_account_admin"/>
+        </record>
+
         <record model="workflow" id="invoice_workflow">
             <field name="name">Invoice workflow</field>
             <field name="model">account.invoice</field>
@@ -619,34 +549,29 @@ this repository contains the full copyright notices and license terms. -->
         <record model="workflow.activity" id="invoice_activity_draft">
             <field name="name">Draft</field>
             <field name="workflow" ref="invoice_workflow"/>
-            <field name="kind">function</field>
-            <field name="action">write({'state': 'draft'})</field>
+            <field name="method">wkf_draft</field>
             <field name="flow_start" eval="True"/>
         </record>
         <record model="workflow.activity" id="invoice_activity_proforma">
             <field name="name">Pro forma</field>
             <field name="workflow" ref="invoice_workflow"/>
-            <field name="kind">function</field>
-            <field name="action">write({'state': 'proforma'})</field>
+            <field name="method">wkf_proforma</field>
         </record>
         <record model="workflow.activity" id="invoice_activity_open">
             <field name="name">Open</field>
             <field name="workflow" ref="invoice_workflow"/>
-            <field name="kind">function</field>
-            <field name="action">set_number()
create_move()
write({'state': 'open'})
print_invoice()</field>
+            <field name="method">wkf_open</field>
         </record>
         <record model="workflow.activity" id="invoice_activity_paid">
             <field name="name">Paid</field>
             <field name="workflow" ref="invoice_workflow"/>
-            <field name="kind">function</field>
-            <field name="action">write({'state': 'paid'})</field>
+            <field name="method">wkf_paid</field>
             <field name="flow_stop" eval="True"/>
         </record>
         <record model="workflow.activity" id="invoice_activity_cancel">
             <field name="name">Canceled</field>
             <field name="workflow" ref="invoice_workflow"/>
-            <field name="kind">function</field>
-            <field name="action">write({'state': 'cancel'})</field>
+            <field name="method">wkf_cancel</field>
             <field name="flow_stop" eval="True"/>
         </record>
         <record model="workflow.transition" id="invoice_transition_draft_proforma">
@@ -675,8 +600,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="act_from" ref="invoice_activity_open"/>
             <field name="act_to" ref="invoice_activity_paid"/>
             <field name="trigger_model">account.move.line</field>
-            <field name="trigger_expr_id">[x.id for x in lines_to_pay]</field>
-            <field name="condition">reconciled</field>
+            <field name="trigger_ids">wkf_triggered_moves</field>
+            <field name="condition">wkf_open2paid</field>
         </record>
         <record model="workflow.transition" id="invoice_transition_draft_cancel">
             <field name="act_from" ref="invoice_activity_draft"/>
@@ -708,12 +633,12 @@ this repository contains the full copyright notices and license terms. -->
                             <label name="product"/>
                             <field name="product">
                                 <tree string="Products">
-                                    <field name="name" select="1"/>
-                                    <field name="code" select="1"/>
-                                    <field name="list_price_uom" select="2"/>
-                                    <field name="cost_price_uom" select="2"/>
-                                    <field name="default_uom" select="2"/>
-                                    <field name="active" select="2"/>
+                                    <field name="name"/>
+                                    <field name="code"/>
+                                    <field name="list_price_uom"/>
+                                    <field name="cost_price_uom"/>
+                                    <field name="default_uom"/>
+                                    <field name="active"/>
                                 </tree>
                             </field>
                             <label name="account"/>
@@ -730,7 +655,6 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="unit_price"/>
                             <label name="amount"/>
                             <field name="amount"/>
-                            <separator name="taxes" colspan="4"/>
                             <field name="taxes" colspan="4"/>
                         </page>
                         <page string="Notes" id="notes">
@@ -752,14 +676,14 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Invoice Lines">
-                    <field name="invoice" select="1"/>
-                    <field name="type" select="1"/>
-                    <field name="product" select="1"/>
-                    <field name="account" select="2"/>
-                    <field name="description" select="1"/>
-                    <field name="quantity" select="2"/>
-                    <field name="unit" select="2"/>
-                    <field name="unit_price" select="2"/>
+                    <field name="invoice"/>
+                    <field name="type"/>
+                    <field name="product"/>
+                    <field name="account"/>
+                    <field name="description"/>
+                    <field name="quantity"/>
+                    <field name="unit"/>
+                    <field name="unit_price"/>
                     <field name="taxes"/>
                     <field name="amount"/>
                     <field name="unit_digits" tree_invisible="1"/>
@@ -770,9 +694,9 @@ this repository contains the full copyright notices and license terms. -->
         </record>
         <record model="ir.model.access" id="access_invoice_line">
             <field name="model" search="[('model', '=', 'account.invoice.line')]"/>
-            <field name="perm_read" eval="True"/>
+            <field name="perm_read" eval="False"/>
             <field name="perm_write" eval="False"/>
-            <field name="perm_create" eval="True"/>
+            <field name="perm_create" eval="False"/>
             <field name="perm_delete" eval="False"/>
         </record>
         <record model="ir.model.access" id="access_invoice_line_account">
@@ -825,10 +749,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Invoice Taxes">
-                    <field name="invoice" select="1"/>
-                    <field name="description" select="1"/>
-                    <field name="account" select="1"/>
-                    <field name="manual" select="2"/>
+                    <field name="invoice"/>
+                    <field name="description"/>
+                    <field name="account"/>
+                    <field name="manual"/>
                     <field name="base"/>
                     <field name="amount"/>
                     <field name="tax" tree_invisible="1"/>
@@ -840,7 +764,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="model" search="[('model', '=', 'account.invoice.tax')]"/>
             <field name="perm_read" eval="True"/>
             <field name="perm_write" eval="False"/>
-            <field name="perm_create" eval="True"/>
+            <field name="perm_create" eval="False"/>
             <field name="perm_delete" eval="False"/>
         </record>
         <record model="ir.model.access" id="access_invoice_tax_account">
@@ -894,7 +818,6 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="account_writeoff"/>
                     <label name="journal_writeoff"/>
                     <field name="journal_writeoff"/>
-                    <separator name="lines" colspan="4"/>
                     <field name="lines" colspan="4">
                         <tree string="Lines to Pay" fill="1">
                             <field name="maturity_date"/>
@@ -906,7 +829,6 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="second_currency_digits" tree_invisible="1"/>
                         </tree>
                     </field>
-                    <separator name="payment_lines" colspan="4"/>
                     <field name="payment_lines" colspan="4">
                         <tree string="Payment Lines" fill="1">
                             <field name="date"/>
@@ -934,14 +856,14 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <form string="Print Invoice" col="2">
-                    <separator string="<b>Warning!</b>" colspan="2"
-                        align="0.5" id="warning"/>
-                    <image name="tryton-dialog-information"/>
+                    <image name="tryton-dialog-warning" xexpand="0" xfill="0"/>
                     <group col="1" id="labels">
                         <label string="You have selected more than one invoice to print."
-                            align="0.0" id="selected"/>
+                            id="selected"
+                            yalign="0.0" xalign="0.0" xexpand="1"/>
                         <label string="The invoices will be sent <i>directly</i> to the printer."
-                            align="0.0" id="printer"/>
+                            id="printer"
+                            yalign="0.0" xalign="0.0" xexpand="1"/>
                     </group>
                 </form>
                 ]]>
@@ -955,7 +877,7 @@ this repository contains the full copyright notices and license terms. -->
         </record>
         <record model="ir.action.keyword" id="print_invoice_report_keyword">
             <field name="keyword">form_print</field>
-            <field name="model">account.invoice,0</field>
+            <field name="model">account.invoice,-1</field>
             <field name="action" ref="print_invoice_report"/>
         </record>
 
@@ -965,10 +887,12 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <form string="Credit Invoice" col="2">
-                    <image name="tryton-dialog-information"/>
+                    <image name="tryton-dialog-information" xexpand="0"
+                        xfill="0"/>
                     <group col="2" id="credit_refund">
                         <label string="Are you sure to credit those/this invoice(s)?"
-                            align="0.0" id="credit" colspan="2"/>
+                            id="credit" colspan="2"
+                            yalign="0.0" xalign="0.0" xexpand="1"/>
                         <label name="with_refund"/>
                         <field name="with_refund"/>
                     </group>
@@ -984,7 +908,7 @@ this repository contains the full copyright notices and license terms. -->
         </record>
         <record model="ir.action.keyword" id="credit_invoice_keyword">
             <field name="keyword">form_action</field>
-            <field name="model">account.invoice,0</field>
+            <field name="model">account.invoice,-1</field>
             <field name="action" ref="credit_invoice"/>
         </record>
 
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
new file mode 100644
index 0000000..deea1f6
--- /dev/null
+++ b/locale/bg_BG.po
@@ -0,0 +1,1383 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+"Не може а променяте последователност на фактура ако има вече отворена "
+"фактура за финансовата година"
+
+msgctxt "error:account.fiscalyear:0"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr ""
+"За финансова година трябва да имате различни последователности за фактура  "
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr "Не можете да кредитиратe обезщетение фактура по която не е отворена!"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr "Не можете да кредитиратe обезщетение фактура по която има плащане!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line with \"line\" type must have an account!"
+msgstr "Ред от вид \"line\" трябва да има сметка!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr "Ред без \"ред\" трябва да има фактура!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"Не може да добавяте ред към фактура която е отворена/платена/отказана!"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+"Не може да създавате ред от фактура\n"
+"със сметка от различна фактурираща фирма!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr "Не може да променяте ред от фактура която е отворена и/или платена!"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+"Не може да използвате същата сметка\n"
+"като тази на фактурата!"
+
+msgctxt "error:account.invoice.pay_invoice:0"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+"Не може да създавате частично плащане за сума по-голяма от сумата за "
+"плащане!"
+
+msgctxt "error:account.invoice.payment_term.line.delay:0"
+msgid "The code must be unique!"
+msgstr "Кода трябва да е уникален!"
+
+msgctxt "error:account.invoice.payment_term.line.type:0"
+msgid "The code must be unique!"
+msgstr "Кода трябва да е уникален!"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Invalid payment term line!"
+msgstr "Невалиден ред от условие за плащане!"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Payment term missing a remainder line!"
+msgstr "В условието за плащане липсва ред от напомняне!"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"Не може да добавяте ред към фактура която е отворена/платена/отказана!"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr "Не може да променяте данък от фактура която е отворена и/или платена!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Данъчната основа е различна от тази на редовете на фактурата!\n"
+"Наново изчислете фактурата."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Зададени са данъци но не за редове на фактура!\n"
+"Преизчислете фактурата."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+"Данъци са зададени върху редовете на фактурата но не на фактурата!\n"
+"Преизчислете фактурата"
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is missing!"
+msgstr "Лиспва кредитна сметка за дневника!"
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr "Кредитната сметка на дневника е същата като сметката на фактурата!"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is missing!"
+msgstr "Липсва дебитна сметка за дневник!"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr "Дебитната сметка на дневника е същата като сметката на фактурата!"
+
+msgctxt "error:account.invoice:0"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr "Няма последователност за фактура върху период/финансова година!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+"Не може да създадете фактура\n"
+"със сметка на друга фактурираща фирма!"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr "Не може да променяте фактура която е отворена или платена!"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr "Не може да прехвърлите в проект фактура която има движение!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+"Не може да ползвате съшата сметка\n"
+"като тази на реда от фактурата!"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+"Не може а променяте последователност на фактура ако има вече отворена "
+"фактура за финансовата година"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+"За финансова година и една и съща фирма трябва да имате различни "
+"последователности за фактура !"
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Последователност за кредитно известие на доставчик"
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Последователност на фактура за доставчик"
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Последователност за кредитно известие на клиент"
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Последователност за фактура на клиент"
+
+msgctxt "field:account.invoice,account:0"
+msgid "Account"
+msgstr "Сметка"
+
+msgctxt "field:account.invoice,accounting_date:0"
+msgid "Accounting Date"
+msgstr "Дата на осчетоводяване"
+
+msgctxt "field:account.invoice,amount_to_pay:0"
+msgid "Amount to Pay"
+msgstr "Сума за плащане"
+
+msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgid "Amount to Pay Today"
+msgstr "Сума за плащане днес"
+
+msgctxt "field:account.invoice,comment:0"
+msgid "Comment"
+msgstr "Коментар"
+
+msgctxt "field:account.invoice,company:0"
+msgid "Company"
+msgstr "Фирма"
+
+msgctxt "field:account.invoice,currency:0"
+msgid "Currency"
+msgstr "Валута"
+
+msgctxt "field:account.invoice,currency_date:0"
+msgid "Currency Date"
+msgstr "Текуща дата"
+
+msgctxt "field:account.invoice,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Цифри за валута"
+
+msgctxt "field:account.invoice,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice,invoice_address:0"
+msgid "Invoice Address"
+msgstr "Адрес за фактура"
+
+msgctxt "field:account.invoice,invoice_date:0"
+msgid "Invoice Date"
+msgstr "Дата на фактура"
+
+msgctxt "field:account.invoice,invoice_report_cache:0"
+msgid "Invoice Report"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_report_format:0"
+msgid "Invoice Report Format"
+msgstr "Формат на спавка за фактура"
+
+msgctxt "field:account.invoice,journal:0"
+msgid "Journal"
+msgstr "Дневник"
+
+msgctxt "field:account.invoice,lines:0"
+msgid "Lines"
+msgstr "Редове"
+
+msgctxt "field:account.invoice,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Редове за плащане"
+
+msgctxt "field:account.invoice,move:0"
+msgid "Move"
+msgstr "Движение"
+
+msgctxt "field:account.invoice,number:0"
+msgid "Number"
+msgstr "Номер"
+
+msgctxt "field:account.invoice,party:0"
+msgid "Party"
+msgstr "Партньор"
+
+msgctxt "field:account.invoice,party_lang:0"
+msgid "Party Language"
+msgstr "Език на партньор"
+
+msgctxt "field:account.invoice,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Редове от плащане"
+
+msgctxt "field:account.invoice,payment_term:0"
+msgid "Payment Term"
+msgstr "Условие за плащане"
+
+msgctxt "field:account.invoice,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice,reconciled:0"
+msgid "Reconciled"
+msgstr "Съгласуван"
+
+msgctxt "field:account.invoice,reference:0"
+msgid "Reference"
+msgstr "Отпратка"
+
+msgctxt "field:account.invoice,state:0"
+msgid "State"
+msgstr "Състояние"
+
+msgctxt "field:account.invoice,tax_amount:0"
+msgid "Tax"
+msgstr "Данък"
+
+msgctxt "field:account.invoice,taxes:0"
+msgid "Tax Lines"
+msgstr "Ред на данъци"
+
+msgctxt "field:account.invoice,total_amount:0"
+msgid "Total"
+msgstr "Общо"
+
+msgctxt "field:account.invoice,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:account.invoice,type_name:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:account.invoice,untaxed_amount:0"
+msgid "Untaxed"
+msgstr "Необложен с данък"
+
+msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "field:account.invoice-account.move.line,line:0"
+msgid "Payment Line"
+msgstr "Ред от плащане"
+
+msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgid "With Refund"
+msgstr "С обежщетение"
+
+msgctxt "field:account.invoice.line,account:0"
+msgid "Account"
+msgstr "Сметка"
+
+msgctxt "field:account.invoice.line,amount:0"
+msgid "Amount"
+msgstr "Сума"
+
+msgctxt "field:account.invoice.line,company:0"
+msgid "Company"
+msgstr "Фирма"
+
+msgctxt "field:account.invoice.line,currency:0"
+msgid "Currency"
+msgstr "Валута"
+
+msgctxt "field:account.invoice.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Цифри за валута"
+
+msgctxt "field:account.invoice.line,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice.line,invoice:0"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgid "Invoice Taxes"
+msgstr "Данъци на фактура"
+
+msgctxt "field:account.invoice.line,invoice_type:0"
+msgid "Invoice Type"
+msgstr "Вид фактура"
+
+msgctxt "field:account.invoice.line,note:0"
+msgid "Note"
+msgstr "Бележка"
+
+msgctxt "field:account.invoice.line,party:0"
+msgid "Party"
+msgstr "Партньор"
+
+msgctxt "field:account.invoice.line,party_lang:0"
+msgid "Party Language"
+msgstr "Език на партньор"
+
+msgctxt "field:account.invoice.line,product:0"
+msgid "Product"
+msgstr "Продукт"
+
+msgctxt "field:account.invoice.line,quantity:0"
+msgid "Quantity"
+msgstr "Количество"
+
+msgctxt "field:account.invoice.line,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.line,sequence:0"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "field:account.invoice.line,taxes:0"
+msgid "Taxes"
+msgstr "Данъци"
+
+msgctxt "field:account.invoice.line,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:account.invoice.line,unit:0"
+msgid "Unit"
+msgstr "Единица"
+
+msgctxt "field:account.invoice.line,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Десетични единици"
+
+msgctxt "field:account.invoice.line,unit_price:0"
+msgid "Unit Price"
+msgstr "Единична цена"
+
+msgctxt "field:account.invoice.line-account.tax,line:0"
+msgid "Invoice Line"
+msgstr "Ред от фактура"
+
+msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgid "Tax"
+msgstr "Данък"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account:0"
+msgid "Account"
+msgstr "Сметка"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgid "Write-Off Account"
+msgstr "Сметка на отписване"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgid "Payment Amount"
+msgstr "Платена сума"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgid "Write-Off Amount"
+msgstr "Сума за отписване"
+
+msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgid "Company"
+msgstr "Фирма"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgid "Payment Currency"
+msgstr "Валута при плащане"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgid "Payment Currency Digits"
+msgstr "Цифри на валута за плащане"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgid "Write-Off Currency Digits"
+msgstr "Цифри на валута за отписване"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgid "Write-Off Currency"
+msgstr "Валута на отписване"
+
+msgctxt "field:account.invoice.pay_invoice.ask,date:0"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "field:account.invoice.pay_invoice.ask,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
+msgid "Journal"
+msgstr "Дневник"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgid "Write-Off Journal"
+msgstr "Дневник на отписване"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgid "Lines"
+msgstr "Редове"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Редове за плащане"
+
+msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Редове от плащане"
+
+msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgid "Amount"
+msgstr "Сума"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgid "Currency"
+msgstr "Валута"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Цифри за валута"
+
+msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgid "Journal"
+msgstr "Дневник"
+
+msgctxt "field:account.invoice.payment_term,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:account.invoice.payment_term,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice.payment_term,lines:0"
+msgid "Lines"
+msgstr "Редове"
+
+msgctxt "field:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Условие за плащане"
+
+msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgid "Amount"
+msgstr "Сума"
+
+msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgid "Currency"
+msgstr "Валута"
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Цифри за валута"
+
+msgctxt "field:account.invoice.payment_term.line,days:0"
+msgid "Number of Days"
+msgstr "Брой дни"
+
+msgctxt "field:account.invoice.payment_term.line,delay:0"
+msgid "Condition"
+msgstr "Условие"
+
+msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgid "Payment Term"
+msgstr "Условие за плащане"
+
+msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgid "Percentage"
+msgstr "Процент"
+
+msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "field:account.invoice.payment_term.line,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:account.invoice.payment_term.line.delay,code:0"
+msgid "Code"
+msgstr "Код"
+
+msgctxt "field:account.invoice.payment_term.line.delay,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.payment_term.line.type,code:0"
+msgid "Code"
+msgstr "Код"
+
+msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.tax,account:0"
+msgid "Account"
+msgstr "Сметка"
+
+msgctxt "field:account.invoice.tax,amount:0"
+msgid "Amount"
+msgstr "Сума"
+
+msgctxt "field:account.invoice.tax,base:0"
+msgid "Base"
+msgstr "Основа"
+
+msgctxt "field:account.invoice.tax,base_code:0"
+msgid "Base Code"
+msgstr "Основен код"
+
+msgctxt "field:account.invoice.tax,base_sign:0"
+msgid "Base Sign"
+msgstr "Основен знак"
+
+msgctxt "field:account.invoice.tax,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice.tax,invoice:0"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "field:account.invoice.tax,manual:0"
+msgid "Manual"
+msgstr "Ръчно"
+
+msgctxt "field:account.invoice.tax,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:account.invoice.tax,sequence:0"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "field:account.invoice.tax,sequence_number:0"
+msgid "Sequence Number"
+msgstr "Номер на последователност"
+
+msgctxt "field:account.invoice.tax,tax:0"
+msgid "Tax"
+msgstr "Данък"
+
+msgctxt "field:account.invoice.tax,tax_code:0"
+msgid "Tax Code"
+msgstr "Код на данък"
+
+msgctxt "field:account.invoice.tax,tax_sign:0"
+msgid "Tax Sign"
+msgstr "Знак на данък"
+
+msgctxt "field:account.period,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Последователност за кредитно известие на доставчик"
+
+msgctxt "field:account.period,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Последователност на фактура за доставчик"
+
+msgctxt "field:account.period,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Последователност за кредитно известие на клиент"
+
+msgctxt "field:account.period,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Последователност за фактура на клиент"
+
+msgctxt "field:party.address,invoice:0"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "field:party.party,payment_term:0"
+msgid "Invoice Payment Term"
+msgstr "Условие за плащане на фактура"
+
+msgctxt "field:party.party,supplier_payment_term:0"
+msgid "Supplier Payment Term"
+msgstr "Условие за плащане на доставчик"
+
+msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgid "If true, the current invoice(s) will be paid."
+msgstr "Ако е истина текущара(те) сметка(и) ще бъдат платена(и)."
+
+msgctxt "help:account.invoice.payment_term.line,percentage:0"
+msgid "In %"
+msgstr "В %"
+
+msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgid "Use to order lines in ascending order"
+msgstr "За подреждане на редовете във възходящ ред"
+
+msgctxt "model:account.invoice,name:0"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "model:account.invoice-account.move.line,name:0"
+msgid "Invoice - Payment Line"
+msgstr "Фактура - Ред от плащане"
+
+msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgid "Credit Invoice Init"
+msgstr "Начало на кредитна фактура"
+
+msgctxt "model:account.invoice.line,name:0"
+msgid "Invoice Line"
+msgstr "Ред от фактура"
+
+msgctxt "model:account.invoice.line-account.tax,name:0"
+msgid "Invoice Line - Tax"
+msgstr "Ред от фактура - Данък"
+
+msgctxt "model:account.invoice.pay_invoice.ask,name:0"
+msgid "Pay Invoice Ask"
+msgstr "Запистване за плащане на фактура"
+
+msgctxt "model:account.invoice.pay_invoice.init,name:0"
+msgid "Pay Invoice Init"
+msgstr "Начално плащане на фактура"
+
+msgctxt "model:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Условие за плащане"
+
+msgctxt "model:account.invoice.payment_term.line,name:0"
+msgid "Payment Term Line"
+msgstr "Ред от условие за плащане"
+
+msgctxt "model:account.invoice.payment_term.line.delay,name:0"
+msgid "Payment Term Line Delay"
+msgstr "Ред от забавяне на условие за плащане"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
+msgid "End Month"
+msgstr "Край на месеца"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
+msgid "Net Days"
+msgstr "Дни (нето)"
+
+msgctxt "model:account.invoice.payment_term.line.type,name:0"
+msgid "Payment Term Line Type"
+msgstr "Ред от вид условие за плащане"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
+msgid "Fixed"
+msgstr "Фиксиран"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
+msgid "Percentage"
+msgstr "Процент"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
+msgid "Remainder"
+msgstr "Напомняне"
+
+msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgid "Print Invoice Report Warning"
+msgstr "Предупреждение при отпечатване на справка за фактура"
+
+msgctxt "model:account.invoice.tax,name:0"
+msgid "Invoice Tax"
+msgstr "Данък към фактура"
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr "Всичко фактури"
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr "Фактури"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Кредитно известие на доставчик"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Проект на кредитно известие на доставчик"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "ПРО-ФОРМА на кредитни известия на доставчик"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Отворени кредитни известия на доставчик"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Фактури на доставчик"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Шаблон на фактури за доставчик"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "ПРО-ФОРМА фактури за доставчик"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Отворени фактури за доставчик"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Кредитни известия"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Проект на кредитно известие"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "ПРО-ФОРМА на кредитни известия"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Отворени кредитни известия"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Фактури"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Проект на фактури"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "ПРО-ФОРМА фактури"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Отворени фактури"
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr "Условия за плащане"
+
+msgctxt "model:ir.action,name:credit_invoice"
+msgid "Credit"
+msgstr "Кредит"
+
+msgctxt "model:ir.action,name:print_invoice_report"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgid "Pay Invoice"
+msgstr "Плащане на фактура"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr "Всичко фактури"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Кредитно известие на доставчик"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Проект на кредитно известие на доставчик"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "ПРО-ФОРМА на кредитни известия на доставчик"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Отворени кредитни известия на доставчик"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Фактури на доставчик"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Проект на фактури за доставчик"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "ПРО-ФОРМА фактури за доставчик"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Отворени фактури за доставчик"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Кредитни известия"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Проект на кредитно известие"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "ПРО-ФОРМА на кредитни известия"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Отворени кредитни известия"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Фактури"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Проект на фактури"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "ПРО-ФОРМА фактури"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Отворени фактури"
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr "Фактури"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr "Условия за плащане"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr "Условия за плащане"
+
+msgctxt "model:workflow,name:invoice_workflow"
+msgid "Invoice workflow"
+msgstr "Работен процес на фактура"
+
+msgctxt "model:workflow.activity,name:invoice_activity_cancel"
+msgid "Canceled"
+msgstr "Отказан"
+
+msgctxt "model:workflow.activity,name:invoice_activity_draft"
+msgid "Draft"
+msgstr "Проект"
+
+msgctxt "model:workflow.activity,name:invoice_activity_open"
+msgid "Open"
+msgstr "Отваряне"
+
+msgctxt "model:workflow.activity,name:invoice_activity_paid"
+msgid "Paid"
+msgstr "Платен"
+
+msgctxt "model:workflow.activity,name:invoice_activity_proforma"
+msgid "Pro forma"
+msgstr "ПРО-ФОРМА"
+
+msgctxt "odt:account.invoice:0"
+msgid "Amount"
+msgstr "Сума"
+
+msgctxt "odt:account.invoice:0"
+msgid "Base"
+msgstr "Основа"
+
+msgctxt "odt:account.invoice:0"
+msgid "Credit Note N°:"
+msgstr "Кредитно известие N°:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date:"
+msgstr "Дата:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description:"
+msgstr "Описание:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Credit Note"
+msgstr "Проект на кредитно известие"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Invoice"
+msgstr "Проект на фактура"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Credit Note"
+msgstr "Проект на кредитно известие на доставчик"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Invoice"
+msgstr "Проект на фактура за доставчик"
+
+msgctxt "odt:account.invoice:0"
+msgid "E-Mail:"
+msgstr "E-Mail:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Invoice N°:"
+msgstr "Фактура N°:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Payment Term"
+msgstr "Условие за плащане"
+
+msgctxt "odt:account.invoice:0"
+msgid "Phone:"
+msgstr "Телефон:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Credit Note"
+msgstr "ПРО-ФОРМА на кредитно известие"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Invoice"
+msgstr "ПРО-ФОРМА фактура"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Credit Note"
+msgstr "ПРО-ФОРМА на кредитно известие на доставчик"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Invoice"
+msgstr "ПРО-ФОРМА фактура за доставчик"
+
+msgctxt "odt:account.invoice:0"
+msgid "Quantity"
+msgstr "Количество"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Credit Note N°:"
+msgstr "Кредитно известие на доставчик N°:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Invoice N°:"
+msgstr "Фактура за доставчик N°:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Tax"
+msgstr "Данък"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes"
+msgstr "Данъци"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes:"
+msgstr "Данъци:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total (excl. taxes):"
+msgstr "Общо (без данъци):"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total:"
+msgstr "Общо:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Unit Price"
+msgstr "Единична цена"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT Number:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT:"
+msgstr "ДДС:"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Canceled"
+msgstr "Отказан"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Draft"
+msgstr "Проект"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Opened"
+msgstr "Отворен"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Paid"
+msgstr "Платен"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Pro forma"
+msgstr "ПРО-ФОРМА"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Credit Note"
+msgstr "Кредитно известие"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Credit Note"
+msgstr "Кредитно известие на доставчик"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Invoice"
+msgstr "Фактура за доставчик"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Credit Note"
+msgstr "Кредитно известие"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Credit Note"
+msgstr "Кредитно известие на доставчик"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Invoice"
+msgstr "Фактура за доставчик"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Comment"
+msgstr "Коментар"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Line"
+msgstr "Ред"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Subtotal"
+msgstr "Междинна сума"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Title"
+msgstr "Заглавие"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Partial Payment"
+msgstr "Частично плащане"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Write-Off"
+msgstr "Анулиран"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Are you sure to credit those/this invoice(s)?"
+msgstr "Сигурни ли сте че искате да кредитирате тази/тези фактура/фактури?"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Credit Invoice"
+msgstr "Кредитна фактура"
+
+msgctxt "view:account.invoice.line:0"
+msgid "General"
+msgstr "Основен"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Line"
+msgstr "Ред от фактура"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Lines"
+msgstr "Редове от фактура"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Notes"
+msgstr "Бележки"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Products"
+msgstr "Продукти"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Amount Second Currency"
+msgstr "Сума в допълнителна валута"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Credit"
+msgstr "Кредит"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Debit"
+msgstr "Дебит"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Lines to Pay"
+msgstr "Редове за плащане"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Pay Invoice"
+msgstr "Плащане на фактура"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Payment Lines"
+msgstr "Редове от плащане"
+
+msgctxt "view:account.invoice.pay_invoice.init:0"
+msgid "Pay Invoice"
+msgstr "Плащане на фактура"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term"
+msgstr "Условие за плащане"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Line"
+msgstr "Ред от условие за плащане"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Lines"
+msgstr "Ред от условие за плащане"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Terms"
+msgstr "Условия за плащане"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "<b>Warning!</b>"
+msgstr "<b>Внимание!</b>"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "Print Invoice"
+msgstr "Отпечатване на фактура"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr "Фактурите ще бъдет изпратени <i>директно</i> на принтера."
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "You have selected more than one invoice to print."
+msgstr "Избрали сте за печат повече от една фактура"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Tax"
+msgstr "Данък към фактура"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Taxes"
+msgstr "Данъци на фактура"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Tax Code"
+msgstr "Код на данък"
+
+msgctxt "view:account.invoice:0"
+msgid "Amount Second Currency"
+msgstr "Сума в допълнителна валута"
+
+msgctxt "view:account.invoice:0"
+msgid "Credit"
+msgstr "Кредит"
+
+msgctxt "view:account.invoice:0"
+msgid "Debit"
+msgstr "Дебит"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoice"
+msgstr "Фактура"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoices"
+msgstr "Фактури"
+
+msgctxt "view:account.invoice:0"
+msgid "Lines"
+msgstr "Редове"
+
+msgctxt "view:account.invoice:0"
+msgid "Other Info"
+msgstr "Друга информация"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment"
+msgstr "Плащане"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment Lines"
+msgstr "Редове от плащане"
+
+msgctxt "view:account.invoice:0"
+msgid "Pro For_ma"
+msgstr "ПРО ФОРМА"
+
+msgctxt "view:account.invoice:0"
+msgid "Taxes"
+msgstr "Данъци"
+
+msgctxt "view:account.invoice:0"
+msgid "_Cancel"
+msgstr "Отказ"
+
+msgctxt "view:account.invoice:0"
+msgid "_Draft"
+msgstr "Проект"
+
+msgctxt "view:account.invoice:0"
+msgid "_Open"
+msgstr "Отваряне"
+
+msgctxt "view:account.invoice:0"
+msgid "_Pay"
+msgstr "Плащане"
+
+msgctxt "view:account.invoice:0"
+msgid "_Reset to Draft"
+msgstr "Изпращане в проект"
+
+msgctxt "view:party.party:0"
+msgid "Payment Terms"
+msgstr "Условия за плащане"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgid "Credit"
+msgstr "Кредит"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgid "Ok"
+msgstr "Добре"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgid "Ok"
+msgstr "Добре"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgid "Print"
+msgstr "Печат"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
new file mode 100644
index 0000000..9601179
--- /dev/null
+++ b/locale/cs_CZ.po
@@ -0,0 +1,1354 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+
+msgctxt "error:account.fiscalyear:0"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr ""
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr ""
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line with \"line\" type must have an account!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+
+msgctxt "error:account.invoice.pay_invoice:0"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term.line.delay:0"
+msgid "The code must be unique!"
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term.line.type:0"
+msgid "The code must be unique!"
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Invalid payment term line!"
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Payment term missing a remainder line!"
+msgstr ""
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is missing!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is missing!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+
+msgctxt "error:account.period:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+
+msgctxt "error:account.period:0"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr ""
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr ""
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr ""
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr ""
+
+msgctxt "field:account.invoice,account:0"
+msgid "Account"
+msgstr ""
+
+msgctxt "field:account.invoice,accounting_date:0"
+msgid "Accounting Date"
+msgstr ""
+
+msgctxt "field:account.invoice,amount_to_pay:0"
+msgid "Amount to Pay"
+msgstr ""
+
+msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgid "Amount to Pay Today"
+msgstr ""
+
+msgctxt "field:account.invoice,comment:0"
+msgid "Comment"
+msgstr ""
+
+msgctxt "field:account.invoice,company:0"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:account.invoice,currency:0"
+msgid "Currency"
+msgstr ""
+
+msgctxt "field:account.invoice,currency_date:0"
+msgid "Currency Date"
+msgstr ""
+
+msgctxt "field:account.invoice,currency_digits:0"
+msgid "Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_address:0"
+msgid "Invoice Address"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_date:0"
+msgid "Invoice Date"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_report_cache:0"
+msgid "Invoice Report"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_report_format:0"
+msgid "Invoice Report Format"
+msgstr ""
+
+msgctxt "field:account.invoice,journal:0"
+msgid "Journal"
+msgstr ""
+
+msgctxt "field:account.invoice,lines:0"
+msgid "Lines"
+msgstr ""
+
+msgctxt "field:account.invoice,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr ""
+
+msgctxt "field:account.invoice,move:0"
+msgid "Move"
+msgstr ""
+
+msgctxt "field:account.invoice,number:0"
+msgid "Number"
+msgstr ""
+
+msgctxt "field:account.invoice,party:0"
+msgid "Party"
+msgstr ""
+
+msgctxt "field:account.invoice,party_lang:0"
+msgid "Party Language"
+msgstr ""
+
+msgctxt "field:account.invoice,payment_lines:0"
+msgid "Payment Lines"
+msgstr ""
+
+msgctxt "field:account.invoice,payment_term:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "field:account.invoice,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice,reconciled:0"
+msgid "Reconciled"
+msgstr ""
+
+msgctxt "field:account.invoice,reference:0"
+msgid "Reference"
+msgstr ""
+
+msgctxt "field:account.invoice,state:0"
+msgid "State"
+msgstr ""
+
+msgctxt "field:account.invoice,tax_amount:0"
+msgid "Tax"
+msgstr ""
+
+msgctxt "field:account.invoice,taxes:0"
+msgid "Tax Lines"
+msgstr ""
+
+msgctxt "field:account.invoice,total_amount:0"
+msgid "Total"
+msgstr ""
+
+msgctxt "field:account.invoice,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:account.invoice,type_name:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:account.invoice,untaxed_amount:0"
+msgid "Untaxed"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,line:0"
+msgid "Payment Line"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgid "With Refund"
+msgstr ""
+
+msgctxt "field:account.invoice.line,account:0"
+msgid "Account"
+msgstr ""
+
+msgctxt "field:account.invoice.line,amount:0"
+msgid "Amount"
+msgstr ""
+
+msgctxt "field:account.invoice.line,company:0"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:account.invoice.line,currency:0"
+msgid "Currency"
+msgstr ""
+
+msgctxt "field:account.invoice.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.line,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgid "Invoice Taxes"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice_type:0"
+msgid "Invoice Type"
+msgstr ""
+
+msgctxt "field:account.invoice.line,note:0"
+msgid "Note"
+msgstr ""
+
+msgctxt "field:account.invoice.line,party:0"
+msgid "Party"
+msgstr ""
+
+msgctxt "field:account.invoice.line,party_lang:0"
+msgid "Party Language"
+msgstr ""
+
+msgctxt "field:account.invoice.line,product:0"
+msgid "Product"
+msgstr ""
+
+msgctxt "field:account.invoice.line,quantity:0"
+msgid "Quantity"
+msgstr ""
+
+msgctxt "field:account.invoice.line,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.line,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:account.invoice.line,taxes:0"
+msgid "Taxes"
+msgstr ""
+
+msgctxt "field:account.invoice.line,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:account.invoice.line,unit:0"
+msgid "Unit"
+msgstr ""
+
+msgctxt "field:account.invoice.line,unit_digits:0"
+msgid "Unit Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.line,unit_price:0"
+msgid "Unit Price"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,line:0"
+msgid "Invoice Line"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgid "Tax"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,account:0"
+msgid "Account"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgid "Write-Off Account"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgid "Payment Amount"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgid "Write-Off Amount"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgid "Payment Currency"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgid "Payment Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgid "Write-Off Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgid "Write-Off Currency"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,date:0"
+msgid "Date"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
+msgid "Journal"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgid "Write-Off Journal"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgid "Lines"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgid "Payment Lines"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgid "Amount"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgid "Currency"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgid "Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgid "Date"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgid "Journal"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,lines:0"
+msgid "Lines"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgid "Amount"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgid "Currency"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,days:0"
+msgid "Number of Days"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,delay:0"
+msgid "Condition"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgid "Percentage"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line.delay,code:0"
+msgid "Code"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line.delay,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line.type,code:0"
+msgid "Code"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,account:0"
+msgid "Account"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,amount:0"
+msgid "Amount"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,base:0"
+msgid "Base"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,base_code:0"
+msgid "Base Code"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,base_sign:0"
+msgid "Base Sign"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,manual:0"
+msgid "Manual"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,sequence_number:0"
+msgid "Sequence Number"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,tax:0"
+msgid "Tax"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,tax_code:0"
+msgid "Tax Code"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,tax_sign:0"
+msgid "Tax Sign"
+msgstr ""
+
+msgctxt "field:account.period,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr ""
+
+msgctxt "field:account.period,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr ""
+
+msgctxt "field:account.period,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr ""
+
+msgctxt "field:account.period,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr ""
+
+msgctxt "field:party.address,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:party.party,payment_term:0"
+msgid "Invoice Payment Term"
+msgstr ""
+
+msgctxt "field:party.party,supplier_payment_term:0"
+msgid "Supplier Payment Term"
+msgstr ""
+
+msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgid "If true, the current invoice(s) will be paid."
+msgstr ""
+
+msgctxt "help:account.invoice.payment_term.line,percentage:0"
+msgid "In %"
+msgstr ""
+
+msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgid "Use to order lines in ascending order"
+msgstr ""
+
+msgctxt "model:account.invoice,name:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "model:account.invoice-account.move.line,name:0"
+msgid "Invoice - Payment Line"
+msgstr ""
+
+msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgid "Credit Invoice Init"
+msgstr ""
+
+msgctxt "model:account.invoice.line,name:0"
+msgid "Invoice Line"
+msgstr ""
+
+msgctxt "model:account.invoice.line-account.tax,name:0"
+msgid "Invoice Line - Tax"
+msgstr ""
+
+msgctxt "model:account.invoice.pay_invoice.ask,name:0"
+msgid "Pay Invoice Ask"
+msgstr ""
+
+msgctxt "model:account.invoice.pay_invoice.init,name:0"
+msgid "Pay Invoice Init"
+msgstr ""
+
+msgctxt "model:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "model:account.invoice.payment_term.line,name:0"
+msgid "Payment Term Line"
+msgstr ""
+
+msgctxt "model:account.invoice.payment_term.line.delay,name:0"
+msgid "Payment Term Line Delay"
+msgstr ""
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
+msgid "End Month"
+msgstr ""
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
+msgid "Net Days"
+msgstr ""
+
+msgctxt "model:account.invoice.payment_term.line.type,name:0"
+msgid "Payment Term Line Type"
+msgstr ""
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
+msgid "Fixed"
+msgstr ""
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
+msgid "Percentage"
+msgstr ""
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
+msgid "Remainder"
+msgstr ""
+
+msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgid "Print Invoice Report Warning"
+msgstr ""
+
+msgctxt "model:account.invoice.tax,name:0"
+msgid "Invoice Tax"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "model:ir.action,name:credit_invoice"
+msgid "Credit"
+msgstr ""
+
+msgctxt "model:ir.action,name:print_invoice_report"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "model:workflow,name:invoice_workflow"
+msgid "Invoice workflow"
+msgstr ""
+
+msgctxt "model:workflow.activity,name:invoice_activity_cancel"
+msgid "Canceled"
+msgstr ""
+
+msgctxt "model:workflow.activity,name:invoice_activity_draft"
+msgid "Draft"
+msgstr ""
+
+msgctxt "model:workflow.activity,name:invoice_activity_open"
+msgid "Open"
+msgstr ""
+
+msgctxt "model:workflow.activity,name:invoice_activity_paid"
+msgid "Paid"
+msgstr ""
+
+msgctxt "model:workflow.activity,name:invoice_activity_proforma"
+msgid "Pro forma"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Amount"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Base"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Credit Note N°:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Date"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Date:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Description:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Invoice"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Invoice"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "E-Mail:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Invoice N°:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Phone:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Invoice"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Invoice"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Quantity"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Credit Note N°:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Invoice N°:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Tax"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Total (excl. taxes):"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Total:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Unit Price"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT Number:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT:"
+msgstr ""
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Canceled"
+msgstr ""
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Draft"
+msgstr ""
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Opened"
+msgstr ""
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Paid"
+msgstr ""
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Pro forma"
+msgstr ""
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Credit Note"
+msgstr ""
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Credit Note"
+msgstr ""
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Invoice"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Credit Note"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Credit Note"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Invoice"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Comment"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Line"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Subtotal"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Title"
+msgstr ""
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Partial Payment"
+msgstr ""
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Write-Off"
+msgstr ""
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Are you sure to credit those/this invoice(s)?"
+msgstr ""
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Credit Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.line:0"
+msgid "General"
+msgstr ""
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Line"
+msgstr ""
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Lines"
+msgstr ""
+
+msgctxt "view:account.invoice.line:0"
+msgid "Notes"
+msgstr ""
+
+msgctxt "view:account.invoice.line:0"
+msgid "Products"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Amount Second Currency"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Credit"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Debit"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Lines to Pay"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Payment Lines"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.init:0"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Line"
+msgstr ""
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Lines"
+msgstr ""
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "Print Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr ""
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "You have selected more than one invoice to print."
+msgstr ""
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Tax"
+msgstr ""
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Taxes"
+msgstr ""
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Tax Code"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Amount Second Currency"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Credit"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Debit"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Invoices"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Lines"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Other Info"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Payment"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Payment Lines"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Pro For_ma"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Taxes"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Cancel"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Draft"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Open"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Pay"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Reset to Draft"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgid "Credit"
+msgstr ""
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgid "Ok"
+msgstr ""
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgid "Ok"
+msgstr ""
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgid "Print"
+msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
new file mode 100644
index 0000000..604753b
--- /dev/null
+++ b/locale/de_DE.po
@@ -0,0 +1,1394 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+"Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine "
+"Rechnung im laufenden Buchungsjahr fakturiert wurde."
+
+msgctxt "error:account.fiscalyear:0"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr ""
+"Für unterschiedliche Geschäftsjahre müssen jeweils eigene "
+"Rechnungsnummernkreise erstellt werden!"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr "Nur Rechnungen im Status 'Fakturiert' können verrechnet werden!"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr ""
+"Die Verrechnung einer Rechnung ist nicht möglich, wenn bereits Zahlungen für"
+" diese gebucht sind!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line with \"line\" type must have an account!"
+msgstr "Eine Zeile vom Typ \"Position\" muss einem Konto zugeordnet sein!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr ""
+"Eine Zeile, die nicht vom Typ \"Position\" ist, muss einer Rechnung "
+"zugeordnet sein!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine"
+" neue Position hinzugefügt werden!"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+"Eine Rechnungsposition kann sich nicht\n"
+"auf ein Konto eines anderen Unternehmens beziehen!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr ""
+"Positionen von fakturierten oder bezahlten Rechnungen können nicht geändert "
+"werden!"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr "Es kann nicht das selbe Konto wie für die Rechnung verwendet werden!"
+
+msgctxt "error:account.invoice.pay_invoice:0"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+"Ein Teilbetrag kann nicht größer als der Gesamtbetrag der Rechnung sein!"
+
+msgctxt "error:account.invoice.payment_term.line.delay:0"
+msgid "The code must be unique!"
+msgstr "Code kann nicht mehrfach vergeben werden!"
+
+msgctxt "error:account.invoice.payment_term.line.type:0"
+msgid "The code must be unique!"
+msgstr "Code kann nicht mehrfach vergeben werden!"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Invalid payment term line!"
+msgstr "Ungültige Position in Zahlungsbedingung!"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Payment term missing a remainder line!"
+msgstr "In der Zahlungsbedingung fehlt eine Restbetragszeile!"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine"
+" neue Position hinzugefügt werden!"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr ""
+"Steuern von fakturierten oder bezahlten Rechnungen können nicht geändert "
+"werden!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr "Steuern stimmen nicht mit den Rechnungspositionen überein!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Es sind Steuern definiert, allerdings nicht in den Rechnungspositionen!\n"
+"Bitte lassen Sie die Rechnung erneut berechnen."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+"Steuern sind für die Rechnungspositionen definiert, allerdings nicht für die Rechnung selbst!\n"
+"Bitte lassen Sie die Rechnung erneut berechnen."
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is missing!"
+msgstr "Haben-Konto im Journal fehlt!"
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr "Das Habenkonto des Journals ist das selbe wie das Rechnungskonto!"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is missing!"
+msgstr "Soll-Konto im Journal fehlt"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr "Das Sollkonto des Journals ist das selbe wie das Rechnungskonto!"
+
+msgctxt "error:account.invoice:0"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr ""
+"Rechnungsnummernkreis für diese Periode oder dieses Buchungsjahr fehlt!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+"Es können keine Rechnungen mit einem Konto von einer anderen "
+"rechnungsstellenden Firma angelegt werden"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr "Fakturierte oder bezahlte Rechnungen können nicht geändert werden!"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr ""
+"Eine Rechnung, die Buchungen enthält, kann nicht auf Entwurf zurückgesetzt "
+"werden!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+"Es kann nicht das selbe Konto wie für die Rechnungsposition verwendet "
+"werden!"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+"Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine "
+"Rechnung in der laufenden Periode fakturiert wurde."
+
+msgctxt "error:account.period:0"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+"Für unterschiedliche Geschäftsjahre eines Unternehmens müssen jeweils eigene"
+" Rechnungsnummernkreise erstellt werden!"
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Nummernkreis Gutschriften Lieferanten"
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Nummernkreis Rechnungen Lieferanten"
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Nummernkreis Gutschriften Kunden"
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Nummernkreis Rechnungen Kunden"
+
+msgctxt "field:account.invoice,account:0"
+msgid "Account"
+msgstr "Konto"
+
+msgctxt "field:account.invoice,accounting_date:0"
+msgid "Accounting Date"
+msgstr "Buchungsdatum"
+
+msgctxt "field:account.invoice,amount_to_pay:0"
+msgid "Amount to Pay"
+msgstr "Zahlbarer Betrag"
+
+msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgid "Amount to Pay Today"
+msgstr "Zahlbarer Betrag (heute)"
+
+msgctxt "field:account.invoice,comment:0"
+msgid "Comment"
+msgstr "Kommentar"
+
+msgctxt "field:account.invoice,company:0"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:account.invoice,currency:0"
+msgid "Currency"
+msgstr "Währung"
+
+msgctxt "field:account.invoice,currency_date:0"
+msgid "Currency Date"
+msgstr "Währungsdatum"
+
+msgctxt "field:account.invoice,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Währung (signifikante Stellen)"
+
+msgctxt "field:account.invoice,description:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:account.invoice,invoice_address:0"
+msgid "Invoice Address"
+msgstr "Rechnungsadresse"
+
+msgctxt "field:account.invoice,invoice_date:0"
+msgid "Invoice Date"
+msgstr "Rechnungsdatum"
+
+msgctxt "field:account.invoice,invoice_report_cache:0"
+msgid "Invoice Report"
+msgstr "Bericht Rechnung"
+
+msgctxt "field:account.invoice,invoice_report_format:0"
+msgid "Invoice Report Format"
+msgstr "Format Rechnungsbericht"
+
+msgctxt "field:account.invoice,journal:0"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.invoice,lines:0"
+msgid "Lines"
+msgstr "Positionen"
+
+msgctxt "field:account.invoice,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Zahlbare Positionen"
+
+msgctxt "field:account.invoice,move:0"
+msgid "Move"
+msgstr "Buchung"
+
+msgctxt "field:account.invoice,number:0"
+msgid "Number"
+msgstr "Nummer"
+
+msgctxt "field:account.invoice,party:0"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "field:account.invoice,party_lang:0"
+msgid "Party Language"
+msgstr "Sprache Partei"
+
+msgctxt "field:account.invoice,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Zahlungspositionen"
+
+msgctxt "field:account.invoice,payment_term:0"
+msgid "Payment Term"
+msgstr "Zahlungsbedingung"
+
+msgctxt "field:account.invoice,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice,reconciled:0"
+msgid "Reconciled"
+msgstr "Abgestimmt"
+
+msgctxt "field:account.invoice,reference:0"
+msgid "Reference"
+msgstr "Interner Beleg"
+
+msgctxt "field:account.invoice,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:account.invoice,tax_amount:0"
+msgid "Tax"
+msgstr "Steuer"
+
+msgctxt "field:account.invoice,taxes:0"
+msgid "Tax Lines"
+msgstr "Steuerpositionen"
+
+msgctxt "field:account.invoice,total_amount:0"
+msgid "Total"
+msgstr "Brutto"
+
+msgctxt "field:account.invoice,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:account.invoice,type_name:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:account.invoice,untaxed_amount:0"
+msgid "Untaxed"
+msgstr "Netto"
+
+msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgid "Invoice"
+msgstr "Rechnung"
+
+msgctxt "field:account.invoice-account.move.line,line:0"
+msgid "Payment Line"
+msgstr "Zahlungsposition"
+
+msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgid "With Refund"
+msgstr "Mit Verrechnung"
+
+msgctxt "field:account.invoice.line,account:0"
+msgid "Account"
+msgstr "Konto"
+
+msgctxt "field:account.invoice.line,amount:0"
+msgid "Amount"
+msgstr "Betrag"
+
+msgctxt "field:account.invoice.line,company:0"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:account.invoice.line,currency:0"
+msgid "Currency"
+msgstr "Währung"
+
+msgctxt "field:account.invoice.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Stellen Währung"
+
+msgctxt "field:account.invoice.line,description:0"
+msgid "Description"
+msgstr "Bezeichnung"
+
+msgctxt "field:account.invoice.line,invoice:0"
+msgid "Invoice"
+msgstr "Rechnung"
+
+msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgid "Invoice Taxes"
+msgstr "Steuern Rechnung"
+
+msgctxt "field:account.invoice.line,invoice_type:0"
+msgid "Invoice Type"
+msgstr "Rechnungstyp"
+
+msgctxt "field:account.invoice.line,note:0"
+msgid "Note"
+msgstr "Notiz"
+
+msgctxt "field:account.invoice.line,party:0"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "field:account.invoice.line,party_lang:0"
+msgid "Party Language"
+msgstr "Sprache Partei"
+
+msgctxt "field:account.invoice.line,product:0"
+msgid "Product"
+msgstr "Artikel"
+
+msgctxt "field:account.invoice.line,quantity:0"
+msgid "Quantity"
+msgstr "Anzahl"
+
+msgctxt "field:account.invoice.line,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.line,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:account.invoice.line,taxes:0"
+msgid "Taxes"
+msgstr "Steuern"
+
+msgctxt "field:account.invoice.line,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:account.invoice.line,unit:0"
+msgid "Unit"
+msgstr "Einheit"
+
+msgctxt "field:account.invoice.line,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Anzahl Stellen"
+
+msgctxt "field:account.invoice.line,unit_price:0"
+msgid "Unit Price"
+msgstr "Einzelpreis"
+
+msgctxt "field:account.invoice.line-account.tax,line:0"
+msgid "Invoice Line"
+msgstr "Rechnungsposition"
+
+msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgid "Tax"
+msgstr "Steuer"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account:0"
+msgid "Account"
+msgstr "Konto"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgid "Write-Off Account"
+msgstr "Konto Ausbuchung"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgid "Payment Amount"
+msgstr "Betrag"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgid "Write-Off Amount"
+msgstr "Betrag Ausbuchung"
+
+msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgid "Payment Currency"
+msgstr "Währung"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgid "Payment Currency Digits"
+msgstr "Stellen Währung"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgid "Write-Off Currency Digits"
+msgstr "Stellen Währung Ausbuchung"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgid "Write-Off Currency"
+msgstr "Währung Ausbuchung"
+
+msgctxt "field:account.invoice.pay_invoice.ask,date:0"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:account.invoice.pay_invoice.ask,description:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgid "Invoice"
+msgstr "Rechnung"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgid "Write-Off Journal"
+msgstr "Journal Ausbuchung"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgid "Lines"
+msgstr "Positionen"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Zahlbare Positionen"
+
+msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Zahlungspositionen"
+
+msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgid "Amount"
+msgstr "Betrag"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgid "Currency"
+msgstr "Währung"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Stellen Währung"
+
+msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.invoice.payment_term,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:account.invoice.payment_term,description:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:account.invoice.payment_term,lines:0"
+msgid "Lines"
+msgstr "Positionen"
+
+msgctxt "field:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Zahlungsbedingung"
+
+msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgid "Amount"
+msgstr "Betrag"
+
+msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgid "Currency"
+msgstr "Währung"
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Währung (signifikante Stellen)"
+
+msgctxt "field:account.invoice.payment_term.line,days:0"
+msgid "Number of Days"
+msgstr "Anzahl an Tagen"
+
+msgctxt "field:account.invoice.payment_term.line,delay:0"
+msgid "Condition"
+msgstr "Bedingung"
+
+msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgid "Payment Term"
+msgstr "Zahlungsbedingung"
+
+msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgid "Percentage"
+msgstr "Prozentsatz"
+
+msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:account.invoice.payment_term.line,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:account.invoice.payment_term.line.delay,code:0"
+msgid "Code"
+msgstr "Kundennummer"
+
+msgctxt "field:account.invoice.payment_term.line.delay,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.payment_term.line.type,code:0"
+msgid "Code"
+msgstr "Kundennummer"
+
+msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.tax,account:0"
+msgid "Account"
+msgstr "Konto"
+
+msgctxt "field:account.invoice.tax,amount:0"
+msgid "Amount"
+msgstr "Betrag"
+
+msgctxt "field:account.invoice.tax,base:0"
+msgid "Base"
+msgstr "Netto"
+
+msgctxt "field:account.invoice.tax,base_code:0"
+msgid "Base Code"
+msgstr "Code Netto"
+
+msgctxt "field:account.invoice.tax,base_sign:0"
+msgid "Base Sign"
+msgstr "Vorzeichen (Netto)"
+
+msgctxt "field:account.invoice.tax,description:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:account.invoice.tax,invoice:0"
+msgid "Invoice"
+msgstr "Rechnung"
+
+msgctxt "field:account.invoice.tax,manual:0"
+msgid "Manual"
+msgstr "Manuell"
+
+msgctxt "field:account.invoice.tax,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.invoice.tax,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:account.invoice.tax,sequence_number:0"
+msgid "Sequence Number"
+msgstr "Name Nummernkreis"
+
+msgctxt "field:account.invoice.tax,tax:0"
+msgid "Tax"
+msgstr "Steuer"
+
+msgctxt "field:account.invoice.tax,tax_code:0"
+msgid "Tax Code"
+msgstr "Steuerkennziffer"
+
+msgctxt "field:account.invoice.tax,tax_sign:0"
+msgid "Tax Sign"
+msgstr "Vorzeichen (Steuer)"
+
+msgctxt "field:account.period,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Nummernkreis Gutschriften Lieferanten"
+
+msgctxt "field:account.period,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Nummernkreis Rechnungen Lieferanten"
+
+msgctxt "field:account.period,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Nummernkreis Gutschriften Kunden"
+
+msgctxt "field:account.period,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Nummernkreis Rechnungen Kunden"
+
+msgctxt "field:party.address,invoice:0"
+msgid "Invoice"
+msgstr "Rechnungsadresse"
+
+msgctxt "field:party.party,payment_term:0"
+msgid "Invoice Payment Term"
+msgstr "Zahlungsbedingung Verkauf"
+
+msgctxt "field:party.party,supplier_payment_term:0"
+msgid "Supplier Payment Term"
+msgstr "Zahlungsbedingung Einkauf"
+
+msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgid "If true, the current invoice(s) will be paid."
+msgstr ""
+"Bei Aktivierung werden die ausgewählte(n ) Rechnung(en) und hierzu neu "
+"erstellte(n) Gutschrift(en) auf bezahlt gesetzt und miteinander abgestimmt."
+
+msgctxt "help:account.invoice.payment_term.line,percentage:0"
+msgid "In %"
+msgstr "Eingabe in %"
+
+msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgid "Use to order lines in ascending order"
+msgstr "Ordnet Positionen in aufsteigender Reihenfolge"
+
+msgctxt "model:account.invoice,name:0"
+msgid "Invoice"
+msgstr "Rechnung"
+
+msgctxt "model:account.invoice-account.move.line,name:0"
+msgid "Invoice - Payment Line"
+msgstr "Rechnung - Zahlungsposition"
+
+msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgid "Credit Invoice Init"
+msgstr "Gutschrift Init"
+
+msgctxt "model:account.invoice.line,name:0"
+msgid "Invoice Line"
+msgstr "Rechnungsposition"
+
+msgctxt "model:account.invoice.line-account.tax,name:0"
+msgid "Invoice Line - Tax"
+msgstr "Rechnungsposition - Steuer"
+
+msgctxt "model:account.invoice.pay_invoice.ask,name:0"
+msgid "Pay Invoice Ask"
+msgstr "Zahlung Rechnung Nachfrage"
+
+msgctxt "model:account.invoice.pay_invoice.init,name:0"
+msgid "Pay Invoice Init"
+msgstr "Zahlung Rechnung Init"
+
+msgctxt "model:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Zahlungsbedingung"
+
+msgctxt "model:account.invoice.payment_term.line,name:0"
+msgid "Payment Term Line"
+msgstr "Zahlungsbedingung Zeile"
+
+msgctxt "model:account.invoice.payment_term.line.delay,name:0"
+msgid "Payment Term Line Delay"
+msgstr "Zahlungsbedingung Zeile Frist"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
+msgid "End Month"
+msgstr "Ende Monat"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
+msgid "Net Days"
+msgstr "Tage netto"
+
+msgctxt "model:account.invoice.payment_term.line.type,name:0"
+msgid "Payment Term Line Type"
+msgstr "Zahlungsbedingung Zeile Typ"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
+msgid "Fixed"
+msgstr "Fix"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
+msgid "Percentage"
+msgstr "Prozentsatz"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
+msgid "Remainder"
+msgstr "Rest"
+
+msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgid "Print Invoice Report Warning"
+msgstr "Druck Rechnung Warnung"
+
+msgctxt "model:account.invoice.tax,name:0"
+msgid "Invoice Tax"
+msgstr "Rechnung Steuer"
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr "Alle Rechnungen/Gutschriften"
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr "Rechnungen"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Gutschriften von Lieferanten"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Entwürfe Lieferantengutschriften"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Pro Forma Lieferantengutschriften"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Fakturierte Lieferantengutschriften"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Rechnungseingang"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Entwürfe Lieferantenrechnungen"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Pro Forma Lieferantenrechnungen"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Fakturierte Lieferantenrechnungen"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Gutschriften an Kunden"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Entwürfe Kundengutschriften"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Pro Forma Kundengutschriften"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Fakturierte Kundengutschriften"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Rechnungsausgang"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Entwürfe Kundenrechnungen"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Pro Forma Kundenrechnungen"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Fakturierte Kundenrechnungen"
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr "Zahlungsbedingungen"
+
+msgctxt "model:ir.action,name:credit_invoice"
+msgid "Credit"
+msgstr "Gutschrift erstellen"
+
+msgctxt "model:ir.action,name:print_invoice_report"
+msgid "Invoice"
+msgstr "Rechnung/Gutschrift"
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr "Rechnung"
+
+msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgid "Pay Invoice"
+msgstr "Rechnung bezahlen"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Rechnung"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr "Alle Rechnungen/Gutschriften"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Gutschriften von Lieferanten"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Entwürfe Lieferantengutschriften"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Pro Forma Lieferantengutschriften"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Fakturierte Lieferantengutschriften"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Rechnungseingang"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Entwürfe Lieferantenrechnungen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Pro Forma Lieferantenrechnungen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Fakturierte Lieferantenrechnungen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Gutschriften an Kunden"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Entwürfe Kundengutschriften"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Pro Forma Kundengutschriften"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Fakturierte Kundengutschriften"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Rechnungsausgang"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Entwürfe Kundenrechnungen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Pro Forma Kundenrechnungen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Fakturierte Kundenrechnungen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr "Rechnungen"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr "Zahlungsbedingungen"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr "Zahlungsbedingungen"
+
+msgctxt "model:workflow,name:invoice_workflow"
+msgid "Invoice workflow"
+msgstr "Workflow Rechnung"
+
+msgctxt "model:workflow.activity,name:invoice_activity_cancel"
+msgid "Canceled"
+msgstr "Annulliert"
+
+msgctxt "model:workflow.activity,name:invoice_activity_draft"
+msgid "Draft"
+msgstr "Entwurf"
+
+msgctxt "model:workflow.activity,name:invoice_activity_open"
+msgid "Open"
+msgstr "Fakturieren"
+
+msgctxt "model:workflow.activity,name:invoice_activity_paid"
+msgid "Paid"
+msgstr "Bezahlt"
+
+msgctxt "model:workflow.activity,name:invoice_activity_proforma"
+msgid "Pro forma"
+msgstr "Pro Forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Amount"
+msgstr "Betrag"
+
+msgctxt "odt:account.invoice:0"
+msgid "Base"
+msgstr "Netto"
+
+msgctxt "odt:account.invoice:0"
+msgid "Credit Note N°:"
+msgstr "Gutschrift Nr.:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date"
+msgstr "Fällig am"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date:"
+msgstr "Datum:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description:"
+msgstr "Beschreibung:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Credit Note"
+msgstr "Gutschrift (Entwurf)"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Invoice"
+msgstr "Rechnung (Entwurf)"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Credit Note"
+msgstr "Gutschrift (Entwurf)"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Invoice"
+msgstr "Rechnung (Entwurf)"
+
+msgctxt "odt:account.invoice:0"
+msgid "E-Mail:"
+msgstr "E-Mail:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Invoice N°:"
+msgstr "Rechnung Nr.:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Payment Term"
+msgstr "Zahlungsbedingung"
+
+msgctxt "odt:account.invoice:0"
+msgid "Phone:"
+msgstr "Telefon:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Credit Note"
+msgstr "Gutschrift Pro Forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Invoice"
+msgstr "Rechnung Pro Forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Credit Note"
+msgstr "Gutschrift Pro Forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Invoice"
+msgstr "Rechnung Pro Forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Quantity"
+msgstr "Anzahl"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Credit Note N°:"
+msgstr "Gutschrift Nr.:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Invoice N°:"
+msgstr "Rechnung Nr.:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Tax"
+msgstr "Steuer"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes"
+msgstr "Steuern"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes:"
+msgstr "Steuern:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total (excl. taxes):"
+msgstr "Netto:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total:"
+msgstr "Rechnungsbetrag"
+
+msgctxt "odt:account.invoice:0"
+msgid "Unit Price"
+msgstr "Einzelpreis"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT Number:"
+msgstr "USt-ID-Nr.:"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT:"
+msgstr "USt-ID-Nr:"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Canceled"
+msgstr "Annulliert"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Draft"
+msgstr "Entwurf"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Opened"
+msgstr "Fakturiert"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Paid"
+msgstr "Bezahlt"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Pro forma"
+msgstr "Pro Forma"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Credit Note"
+msgstr "Gutschrift an Kunde"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Invoice"
+msgstr "Kundenrechnung"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Credit Note"
+msgstr "Gutschrift von Lieferant"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Invoice"
+msgstr "Lieferantenrechnung"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Credit Note"
+msgstr "Kundengutschrift"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Invoice"
+msgstr "Kundenrechnung"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Credit Note"
+msgstr "Lieferantengutschrift"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Invoice"
+msgstr "Lieferantenrechnung"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Comment"
+msgstr "Kommentar"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Line"
+msgstr "Position"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Subtotal"
+msgstr "Zwischensumme"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Title"
+msgstr "Überschrift"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Partial Payment"
+msgstr "Teilzahlung"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Write-Off"
+msgstr "Ausbuchung"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Are you sure to credit those/this invoice(s)?"
+msgstr "Wollen Sie diese Rechnungen wirklich gutschreiben?"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Credit Invoice"
+msgstr "Rechnung gutschreiben"
+
+msgctxt "view:account.invoice.line:0"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Line"
+msgstr "Rechnungsposition"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Lines"
+msgstr "Rechnungspositionen"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Notes"
+msgstr "Notizen"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Products"
+msgstr "Artikel"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Amount Second Currency"
+msgstr "Betrag Zweitwährung"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Credit"
+msgstr "Haben"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Debit"
+msgstr "Soll"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Lines to Pay"
+msgstr "Zahlbare Positionen"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Pay Invoice"
+msgstr "Rechnung bezahlen"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Payment Lines"
+msgstr "Zahlungspositionen"
+
+msgctxt "view:account.invoice.pay_invoice.init:0"
+msgid "Pay Invoice"
+msgstr "Rechnung bezahlen"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term"
+msgstr "Zahlungsbedingung"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Line"
+msgstr "Zahlungsbedingung Zeile"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Lines"
+msgstr "Zeilen Zahlungsbedingung"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Terms"
+msgstr "Zahlungsbedingung"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "<b>Warning!</b>"
+msgstr "<b>Warnung!</b>"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "Print Invoice"
+msgstr "Rechnung/Gutschrift drucken"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr "Die Rechnungen werden <i>direkt</i> an den Drucker gesendet."
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "You have selected more than one invoice to print."
+msgstr "Sie haben mehr als eine Rechnung zum Ausdrucken gewählt."
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Tax"
+msgstr "Rechnungssteuer"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Taxes"
+msgstr "Rechnungssteuern"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Tax Code"
+msgstr "Steuerkennziffer"
+
+msgctxt "view:account.invoice:0"
+msgid "Amount Second Currency"
+msgstr "Betrag Zweitwährung"
+
+msgctxt "view:account.invoice:0"
+msgid "Credit"
+msgstr "Haben"
+
+msgctxt "view:account.invoice:0"
+msgid "Debit"
+msgstr "Soll"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoice"
+msgstr "Rechnung"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoices"
+msgstr "Rechnungen"
+
+msgctxt "view:account.invoice:0"
+msgid "Lines"
+msgstr "Positionen"
+
+msgctxt "view:account.invoice:0"
+msgid "Other Info"
+msgstr "Sonstiges"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment"
+msgstr "Zahlung"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment Lines"
+msgstr "Zahlungspositionen"
+
+msgctxt "view:account.invoice:0"
+msgid "Pro For_ma"
+msgstr "_Pro Forma"
+
+msgctxt "view:account.invoice:0"
+msgid "Taxes"
+msgstr "Steuern"
+
+msgctxt "view:account.invoice:0"
+msgid "_Cancel"
+msgstr "_Annullieren"
+
+msgctxt "view:account.invoice:0"
+msgid "_Draft"
+msgstr "_Entwurf"
+
+msgctxt "view:account.invoice:0"
+msgid "_Open"
+msgstr "_Fakturieren"
+
+msgctxt "view:account.invoice:0"
+msgid "_Pay"
+msgstr "_Bezahlen"
+
+msgctxt "view:account.invoice:0"
+msgid "_Reset to Draft"
+msgstr "Auf Entwurf _Zurücksetzen"
+
+msgctxt "view:party.party:0"
+msgid "Payment Terms"
+msgstr "Zahlungsbedingungen"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgid "Credit"
+msgstr "Gutschrift erstellen"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgid "Ok"
+msgstr "OK"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgid "Ok"
+msgstr "OK"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgid "Print"
+msgstr "Drucken"
diff --git a/locale/es_CO.po b/locale/es_CO.po
new file mode 100644
index 0000000..53f56b0
--- /dev/null
+++ b/locale/es_CO.po
@@ -0,0 +1,1377 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+"No puede cambiar la secuencia de una factura si hay una factura abierta en "
+"el año fiscal"
+
+msgctxt "error:account.fiscalyear:0"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr "¡Debe tener una secuencia diferente de facturación por año fiscal!"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr "¡No puede acreditar con reembolsos una factura que no está abierta!"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr "¡No puede acreditar una devolución de una factura con pagos!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line with \"line\" type must have an account!"
+msgstr "¡Una línea con tipo de \"línea\" debe tener una cuenta!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr "¡Una línea sin tipo de \"línea\" debe tener una factura!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"No puede adicionar una línea a una factura que está abierta, pagada o "
+"cancelada!"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+"¡No puede crear una línea de factura\n"
+"con cuenta a partir de una factura de una compañía distinta!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr "¡No puede modificar la línea de una factura que está abierta, pagada!"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+"No puede usar la misma cuenta\n"
+"que en la factura!"
+
+msgctxt "error:account.invoice.pay_invoice:0"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+"¡No puede crear un pago parcial con un monto mayor que el valor a pagar!"
+
+msgctxt "error:account.invoice.payment_term.line.delay:0"
+msgid "The code must be unique!"
+msgstr "¡El código debe ser único!"
+
+msgctxt "error:account.invoice.payment_term.line.type:0"
+msgid "The code must be unique!"
+msgstr "¡El código debe ser único!"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Invalid payment term line!"
+msgstr "Línea de opción de pago inválida!"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Payment term missing a remainder line!"
+msgstr "Hace falta una línea final al término de pago!"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"No puede adicionar una línea a una factura que está abierta, pagada o "
+"cancelada!"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr "Los Impuestos Base difieren de las líneas de factura!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Impuestos definidos pero no en líneas de factura!\n"
+"Recalcule la factura."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr "Impuestos definidos en factura pero no usados en las líneas!"
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is missing!"
+msgstr "Falta la cuenta crédito del diario!"
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr "¡La cuenta crédito en el diario es la misma que la cuenta facturada!"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is missing!"
+msgstr "Falta la cuenta débito del diario!"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr "¡La cuenta débito en el diario es la misma que la cuenta facturada!"
+
+msgctxt "error:account.invoice:0"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr "No hay una secuencia de facturaas para el período/año fiscal!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr "No puede crear una factura"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr "¡No puede modificar una factura que está abierta, pagada!"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr "¡No puede poner en borrador una factura que ha sido movida!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+"¡No puede usar la misma cuenta\n"
+"como línea en la factura!"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+"No puede cambiar la secuencia de una factura si hay una factura abierta en "
+"el período"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+"¡Debe tener secuencias diferentes de facturas por año fiscal en la misma "
+"compañía!"
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Secuencia de la Nota Crédito del Proveedor"
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Secuencia de Factura de Proveedor"
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Secuencia de Nota Crédito de Cliente"
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Secuencia de Facturas de Cliente"
+
+msgctxt "field:account.invoice,account:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice,accounting_date:0"
+msgid "Accounting Date"
+msgstr "Fecha de contabilización"
+
+msgctxt "field:account.invoice,amount_to_pay:0"
+msgid "Amount to Pay"
+msgstr "Cantidad a pagar"
+
+msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgid "Amount to Pay Today"
+msgstr "Cantidad a pagar hoy"
+
+msgctxt "field:account.invoice,comment:0"
+msgid "Comment"
+msgstr "Comentario"
+
+msgctxt "field:account.invoice,company:0"
+msgid "Company"
+msgstr "Compañía"
+
+msgctxt "field:account.invoice,currency:0"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.invoice,currency_date:0"
+msgid "Currency Date"
+msgstr ""
+
+msgctxt "field:account.invoice,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Dígitos de Moneda"
+
+msgctxt "field:account.invoice,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice,invoice_address:0"
+msgid "Invoice Address"
+msgstr "Dirección de Facturación"
+
+msgctxt "field:account.invoice,invoice_date:0"
+msgid "Invoice Date"
+msgstr "Fecha de Factura"
+
+msgctxt "field:account.invoice,invoice_report_cache:0"
+msgid "Invoice Report"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_report_format:0"
+msgid "Invoice Report Format"
+msgstr "Formato de Reporte de Facturación"
+
+msgctxt "field:account.invoice,journal:0"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.invoice,lines:0"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.invoice,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Líneas a Pagar"
+
+msgctxt "field:account.invoice,move:0"
+msgid "Move"
+msgstr "Movimiento"
+
+msgctxt "field:account.invoice,number:0"
+msgid "Number"
+msgstr "Número"
+
+msgctxt "field:account.invoice,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:account.invoice,party_lang:0"
+msgid "Party Language"
+msgstr "Idioma del Tercero"
+
+msgctxt "field:account.invoice,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Líneas de Pago"
+
+msgctxt "field:account.invoice,payment_term:0"
+msgid "Payment Term"
+msgstr "Término de Pago"
+
+msgctxt "field:account.invoice,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice,reconciled:0"
+msgid "Reconciled"
+msgstr "Conciliado"
+
+msgctxt "field:account.invoice,reference:0"
+msgid "Reference"
+msgstr "Referencia"
+
+msgctxt "field:account.invoice,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:account.invoice,tax_amount:0"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.invoice,taxes:0"
+msgid "Tax Lines"
+msgstr "Líneas de Impuestos"
+
+msgctxt "field:account.invoice,total_amount:0"
+msgid "Total"
+msgstr "Total"
+
+msgctxt "field:account.invoice,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice,type_name:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice,untaxed_amount:0"
+msgid "Untaxed"
+msgstr "Sin Impuesto"
+
+msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice-account.move.line,line:0"
+msgid "Payment Line"
+msgstr "Línea de pago"
+
+msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgid "With Refund"
+msgstr "Con devolución"
+
+msgctxt "field:account.invoice.line,account:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice.line,amount:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.line,company:0"
+msgid "Company"
+msgstr "Compañía"
+
+msgctxt "field:account.invoice.line,currency:0"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.invoice.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Dígitos de Moneda"
+
+msgctxt "field:account.invoice.line,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.line,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgid "Invoice Taxes"
+msgstr "Impuestos de Facturas"
+
+msgctxt "field:account.invoice.line,invoice_type:0"
+msgid "Invoice Type"
+msgstr "Tipo de Factura"
+
+msgctxt "field:account.invoice.line,note:0"
+msgid "Note"
+msgstr "Nota"
+
+msgctxt "field:account.invoice.line,party:0"
+msgid "Party"
+msgstr "Terceros"
+
+msgctxt "field:account.invoice.line,party_lang:0"
+msgid "Party Language"
+msgstr "Idioma del Tercero"
+
+msgctxt "field:account.invoice.line,product:0"
+msgid "Product"
+msgstr "Producto"
+
+msgctxt "field:account.invoice.line,quantity:0"
+msgid "Quantity"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.line,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.line,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.invoice.line,taxes:0"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "field:account.invoice.line,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice.line,unit:0"
+msgid "Unit"
+msgstr "Unidad"
+
+msgctxt "field:account.invoice.line,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Dígitos de Unidad"
+
+msgctxt "field:account.invoice.line,unit_price:0"
+msgid "Unit Price"
+msgstr "Precio Unitario"
+
+msgctxt "field:account.invoice.line-account.tax,line:0"
+msgid "Invoice Line"
+msgstr "Línea de Factura"
+
+msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgid "Write-Off Account"
+msgstr "Cuenta de Ajustes"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgid "Payment Amount"
+msgstr "Valor del Pago"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgid "Write-Off Amount"
+msgstr "Valor del Ajuste"
+
+msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgid "Company"
+msgstr "Compañía"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgid "Payment Currency"
+msgstr "Pago en Moneda"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgid "Payment Currency Digits"
+msgstr "Dígitos de Pago de Moneda"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgid "Write-Off Currency Digits"
+msgstr "Ajuste de Dígitos de Moneda"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgid "Write-Off Currency"
+msgstr "Ajuste de Moneda"
+
+msgctxt "field:account.invoice.pay_invoice.ask,date:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.invoice.pay_invoice.ask,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgid "Write-Off Journal"
+msgstr "Diario de Ajuste"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Líneas a Pagar"
+
+msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Líneas de Pago"
+
+msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Dígitos de Moneda"
+
+msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.invoice.payment_term,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:account.invoice.payment_term,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.payment_term,lines:0"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Término de Pago"
+
+msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Dígitos de Moneda"
+
+msgctxt "field:account.invoice.payment_term.line,days:0"
+msgid "Number of Days"
+msgstr "Cantidad de días"
+
+msgctxt "field:account.invoice.payment_term.line,delay:0"
+msgid "Condition"
+msgstr "Condición"
+
+msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgid "Payment Term"
+msgstr "Término de Pago"
+
+msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgid "Percentage"
+msgstr "Porcentaje"
+
+msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.invoice.payment_term.line,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice.payment_term.line.delay,code:0"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:account.invoice.payment_term.line.delay,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line.type,code:0"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.tax,account:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice.tax,amount:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.tax,base:0"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "field:account.invoice.tax,base_code:0"
+msgid "Base Code"
+msgstr "Código Base"
+
+msgctxt "field:account.invoice.tax,base_sign:0"
+msgid "Base Sign"
+msgstr "Signo Base"
+
+msgctxt "field:account.invoice.tax,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.tax,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.tax,manual:0"
+msgid "Manual"
+msgstr "Manual"
+
+msgctxt "field:account.invoice.tax,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.tax,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.invoice.tax,sequence_number:0"
+msgid "Sequence Number"
+msgstr "Número de Secuencia"
+
+msgctxt "field:account.invoice.tax,tax:0"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.invoice.tax,tax_code:0"
+msgid "Tax Code"
+msgstr "Código de Impuesto"
+
+msgctxt "field:account.invoice.tax,tax_sign:0"
+msgid "Tax Sign"
+msgstr "Signo del Impuesto"
+
+msgctxt "field:account.period,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Secuencia de la Nota Crédito del Proveedor"
+
+msgctxt "field:account.period,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Secuencia de Factura de Proveedor"
+
+msgctxt "field:account.period,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Secuencia de Nota Crédito de Cliente"
+
+msgctxt "field:account.period,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Secuencia de Facturas de Cliente"
+
+msgctxt "field:party.address,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:party.party,payment_term:0"
+msgid "Invoice Payment Term"
+msgstr "Término de Pago de la Factura"
+
+msgctxt "field:party.party,supplier_payment_term:0"
+msgid "Supplier Payment Term"
+msgstr "Término de Pago a Proveedor"
+
+msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgid "If true, the current invoice(s) will be paid."
+msgstr "Si cierto, la(s) factura(s) actuales se pagarán."
+
+msgctxt "help:account.invoice.payment_term.line,percentage:0"
+msgid "In %"
+msgstr "En %"
+
+msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgid "Use to order lines in ascending order"
+msgstr "Para ordenar las líneas ascendentemente"
+
+msgctxt "model:account.invoice,name:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:account.invoice-account.move.line,name:0"
+msgid "Invoice - Payment Line"
+msgstr "Factura - Línea de pago"
+
+msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgid "Credit Invoice Init"
+msgstr "Inicio de Factura Crédito"
+
+msgctxt "model:account.invoice.line,name:0"
+msgid "Invoice Line"
+msgstr "Línea de Factura"
+
+msgctxt "model:account.invoice.line-account.tax,name:0"
+msgid "Invoice Line - Tax"
+msgstr "Línea de Factura - Impuesto"
+
+msgctxt "model:account.invoice.pay_invoice.ask,name:0"
+msgid "Pay Invoice Ask"
+msgstr "Solicitud de Pago de Factura"
+
+msgctxt "model:account.invoice.pay_invoice.init,name:0"
+msgid "Pay Invoice Init"
+msgstr "Inicio de Pago de Factura"
+
+msgctxt "model:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Término de Pago"
+
+msgctxt "model:account.invoice.payment_term.line,name:0"
+msgid "Payment Term Line"
+msgstr "Línea de Término de Pago"
+
+msgctxt "model:account.invoice.payment_term.line.delay,name:0"
+msgid "Payment Term Line Delay"
+msgstr "Línea de Pago Tardío"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
+msgid "End Month"
+msgstr "Mes Final"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
+msgid "Net Days"
+msgstr "Días Netos"
+
+msgctxt "model:account.invoice.payment_term.line.type,name:0"
+msgid "Payment Term Line Type"
+msgstr "Tipo Pago de Término"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
+msgid "Fixed"
+msgstr "Fijo"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
+msgid "Percentage"
+msgstr "Porcentaje"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
+msgid "Remainder"
+msgstr "Diferencia"
+
+msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgid "Print Invoice Report Warning"
+msgstr "Imprimir Advertencia de Pago de Factura"
+
+msgctxt "model:account.invoice.tax,name:0"
+msgid "Invoice Tax"
+msgstr "Impuesto en Factura"
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr "Todas las facturas"
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Notas Crédito del Proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Borrador Nota Crédito del Proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Nota Crédito de Proveedor Proforma"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Nota Crédito de Proveedor Abierta"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Facturas de Proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Borrador de Factura de Proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Factura del Proveedor Proforma"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Factura de Proveedor Abierta"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Notas Crédito"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Notas Crédito en Borrador"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Nota Crédito Proforma"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Nota Crédito Abierta"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Factura en Borrador"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Factura Proforma"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Factura Abierta"
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr "Formas de Pago"
+
+msgctxt "model:ir.action,name:credit_invoice"
+msgid "Credit"
+msgstr "Crédito"
+
+msgctxt "model:ir.action,name:print_invoice_report"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgid "Pay Invoice"
+msgstr "Pagar Factura"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr "Todas las facturas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Notas Crédito del Proveedor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Borrador Nota Crédito Proveedor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Nota Crédito Proveedor Proforma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Nota Crédito Proveedor Abierta"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Facturas de Proveedor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Borrador Factura Proveedor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Factura Proveedor Proforma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Factura Proveedor Abierta"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Notas Crédito"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Borrador Nota Crédito"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Nota Crédito Proforma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Nota Crédito Abierta"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Borrador Factura"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Factura Proforma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Factura Abierta"
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr "Formas de Pago"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr "Formas de Pago"
+
+msgctxt "model:workflow,name:invoice_workflow"
+msgid "Invoice workflow"
+msgstr "Flujo de Trabajo Factura"
+
+msgctxt "model:workflow.activity,name:invoice_activity_cancel"
+msgid "Canceled"
+msgstr "Cancelado"
+
+msgctxt "model:workflow.activity,name:invoice_activity_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "model:workflow.activity,name:invoice_activity_open"
+msgid "Open"
+msgstr "Abrir"
+
+msgctxt "model:workflow.activity,name:invoice_activity_paid"
+msgid "Paid"
+msgstr "Pagado"
+
+msgctxt "model:workflow.activity,name:invoice_activity_proforma"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "odt:account.invoice:0"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "odt:account.invoice:0"
+msgid "Credit Note N°:"
+msgstr "Nota Crédito N°:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date:"
+msgstr "Fecha:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description:"
+msgstr "Descripción:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Credit Note"
+msgstr "Borrador de Nota Crédito"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Invoice"
+msgstr "Borrador de Factura"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Credit Note"
+msgstr "Borrador de Nota Crédito del Proveedor"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Invoice"
+msgstr "Borrador de Factura del Proveedor"
+
+msgctxt "odt:account.invoice:0"
+msgid "E-Mail:"
+msgstr "Correo electrónico:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Invoice N°:"
+msgstr "Factura N°:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Payment Term"
+msgstr "Término de Pago"
+
+msgctxt "odt:account.invoice:0"
+msgid "Phone:"
+msgstr "Teléfono:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Credit Note"
+msgstr "Nota Crédito Proforma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Invoice"
+msgstr "Factura Proforma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Credit Note"
+msgstr "Nota Crédito del Proveedor Proforma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Invoice"
+msgstr "Factura del Proveedor Proforma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Quantity"
+msgstr "Cantidad"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Credit Note N°:"
+msgstr "Nota Crédito del Proveedor N°:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Invoice N°:"
+msgstr "Factura del Proveedor N°:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes:"
+msgstr "Impuestos:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total (excl. taxes):"
+msgstr "Total (sin impuestos):"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total:"
+msgstr "Total:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Unit Price"
+msgstr "Precio Unitario"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT Number:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT:"
+msgstr "IVA:"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Canceled"
+msgstr "Cancelado"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Opened"
+msgstr "Abierto"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Paid"
+msgstr "Pagado"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Credit Note"
+msgstr "Nota de Crédito"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Credit Note"
+msgstr "Nota Crédito del Proveedor"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Invoice"
+msgstr "Factura de Proveedor"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Credit Note"
+msgstr "Nota Crédito"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Credit Note"
+msgstr "Nota Crédito del Proveedor"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Invoice"
+msgstr "Factura de Proveedor"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Comment"
+msgstr "Comentario"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Line"
+msgstr "Línea"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Subtotal"
+msgstr "Subtotal"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Title"
+msgstr "Título"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Partial Payment"
+msgstr "Pago Parcial"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Write-Off"
+msgstr "Ajuste"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Are you sure to credit those/this invoice(s)?"
+msgstr "Segur@ desea acreditar la(s) factura(s)?"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Credit Invoice"
+msgstr "Factura Crédito"
+
+msgctxt "view:account.invoice.line:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Line"
+msgstr "Línea de Factura"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Lines"
+msgstr "Líneas de Factura"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Notes"
+msgstr "Notas"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Products"
+msgstr "Productos"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Amount Second Currency"
+msgstr "Cantidad en la Moneda Secundaria"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Credit"
+msgstr "Crédito"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Debit"
+msgstr "Débito"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Lines to Pay"
+msgstr "Líneas a Pagar"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Pay Invoice"
+msgstr "Pagar Factura"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Payment Lines"
+msgstr "Líneas de Pago"
+
+msgctxt "view:account.invoice.pay_invoice.init:0"
+msgid "Pay Invoice"
+msgstr "Pagar Factura"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term"
+msgstr "Término de Pago"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Line"
+msgstr "Línea de Término de Pago"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Lines"
+msgstr "Líneas de Término de Pago"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Terms"
+msgstr "Formas de Pago"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "<b>Warning!</b>"
+msgstr "<b>Advertencia!</b>"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "Print Invoice"
+msgstr "Imprimir Factura"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr "Las facturas serán enviadas <i>directamente</i> a la impresora."
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "You have selected more than one invoice to print."
+msgstr "Ha elegido más de una factura para imprimir"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Tax"
+msgstr "Impuesto en Factura"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Taxes"
+msgstr "Impuestos de Facturas"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Tax Code"
+msgstr "Código de Impuesto"
+
+msgctxt "view:account.invoice:0"
+msgid "Amount Second Currency"
+msgstr "Cantidad en la Moneda Secundaria"
+
+msgctxt "view:account.invoice:0"
+msgid "Credit"
+msgstr "Crédito"
+
+msgctxt "view:account.invoice:0"
+msgid "Debit"
+msgstr "Débito"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "view:account.invoice:0"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "view:account.invoice:0"
+msgid "Other Info"
+msgstr "Información Adicional"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment"
+msgstr "Pago"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment Lines"
+msgstr "Líneas de Pago"
+
+msgctxt "view:account.invoice:0"
+msgid "Pro For_ma"
+msgstr "Pro For_ma"
+
+msgctxt "view:account.invoice:0"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "view:account.invoice:0"
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+msgctxt "view:account.invoice:0"
+msgid "_Draft"
+msgstr "_Borrador"
+
+msgctxt "view:account.invoice:0"
+msgid "_Open"
+msgstr "_Abrir"
+
+msgctxt "view:account.invoice:0"
+msgid "_Pay"
+msgstr "_Pago"
+
+msgctxt "view:account.invoice:0"
+msgid "_Reset to Draft"
+msgstr "_Revertir a Borrador"
+
+msgctxt "view:party.party:0"
+msgid "Payment Terms"
+msgstr "Formas de Pago"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgid "Credit"
+msgstr "Crédito"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgid "Print"
+msgstr "Imprimir"
diff --git a/locale/es_ES.po b/locale/es_ES.po
new file mode 100644
index 0000000..5664e8e
--- /dev/null
+++ b/locale/es_ES.po
@@ -0,0 +1,1384 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+"No puede cambiar la secuencia de una factura si ya hay una abierta en el "
+"ejercicio fiscal"
+
+msgctxt "error:account.fiscalyear:0"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr ""
+"Debe tener una secuencia diferente de facturación por ejercicio fiscal"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr "No puede pagar con una devolución una factura que no está abierta"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr "No puede pagar con una devolución una factura que tiene pagos"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line with \"line\" type must have an account!"
+msgstr "Una línea de tipo «línea» debe tener una cuenta"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr "Una línea sin tipo «línea» debe tener una factura"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"No puede añadir una línea a una factura que está abierta, pagada o cancelada"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+"No puede crear una línea de factura\n"
+"con una cuenta de una empresa distinta a la que factura"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr "No puede modificar una línea de una factura que está abierta o pagada"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+"No puede usar la misma cuenta\n"
+"que en la factura"
+
+msgctxt "error:account.invoice.pay_invoice:0"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+"No puede crear un pago parcial con una cantidad mayor de la que hay que "
+"pagar"
+
+msgctxt "error:account.invoice.payment_term.line.delay:0"
+msgid "The code must be unique!"
+msgstr "El código debe ser único"
+
+msgctxt "error:account.invoice.payment_term.line.type:0"
+msgid "The code must be unique!"
+msgstr "El código debe ser único"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Invalid payment term line!"
+msgstr "La línea del plazo no es válida"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Payment term missing a remainder line!"
+msgstr "Al plazo de pago le falta una línea con el remanente"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"No puede añadir una línea a una factura que está abierta, pagada o cancelada"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr ""
+"No puede modificar los impuestos de una factura que está abierta o pagada"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Los impuestos base son distintos de las líneas de la factura.\n"
+"Recalcule la factura."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Tiene impuestos definidos pero ninguno en las líneas de la factura\n"
+"Recalcule la factura."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+"Los impuestos están definidos en las lineas de la factura pero no en la factura.\n"
+"Recalcule la factura."
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is missing!"
+msgstr "Falta la cuenta crédito del diario"
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr "La cuenta de crédito en el diario es la misma que la cuenta facturada"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is missing!"
+msgstr "Falta la cuenta débito del diario"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr "La cuenta de débito en el diario es la misma que la cuenta facturada"
+
+msgctxt "error:account.invoice:0"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr "No hay una secuencia de factura para el período/ejercicio fiscal"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+"No puede crear una factura\n"
+"con una cuenta de una compañía distinta a la que factura"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr "No puede modificar una factura que está abierta o pagada"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr "No puede poner en borrador una factura que tiene asientos"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+"No puede usar la misma cuenta\n"
+"que la línea de la factura"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+"No puede cambiar la secuencia de una factura si hay una factura abierta en "
+"el período"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+"Debe usar secuencias distintas de factura por ejercicio fiscal en la misma "
+"empresa"
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Secuencia de abono de proveedor"
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Secuencia de factura de proveedor"
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Secuencia de abono a cliente"
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Secuencia de facturas a cliente"
+
+msgctxt "field:account.invoice,account:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice,accounting_date:0"
+msgid "Accounting Date"
+msgstr "Fecha de contabilización"
+
+msgctxt "field:account.invoice,amount_to_pay:0"
+msgid "Amount to Pay"
+msgstr "Cantidad a pagar"
+
+msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgid "Amount to Pay Today"
+msgstr "Cantidad a pagar hoy"
+
+msgctxt "field:account.invoice,comment:0"
+msgid "Comment"
+msgstr "Comentario"
+
+msgctxt "field:account.invoice,company:0"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.invoice,currency:0"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice,currency_date:0"
+msgid "Currency Date"
+msgstr ""
+
+msgctxt "field:account.invoice,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Decimales de la divisa"
+
+msgctxt "field:account.invoice,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice,invoice_address:0"
+msgid "Invoice Address"
+msgstr "Dirección de facturación"
+
+msgctxt "field:account.invoice,invoice_date:0"
+msgid "Invoice Date"
+msgstr "Fecha de factura"
+
+msgctxt "field:account.invoice,invoice_report_cache:0"
+msgid "Invoice Report"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_report_format:0"
+msgid "Invoice Report Format"
+msgstr "Formato del informe de facturación"
+
+msgctxt "field:account.invoice,journal:0"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.invoice,lines:0"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.invoice,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Líneas a pagar"
+
+msgctxt "field:account.invoice,move:0"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.invoice,number:0"
+msgid "Number"
+msgstr "Número"
+
+msgctxt "field:account.invoice,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:account.invoice,party_lang:0"
+msgid "Party Language"
+msgstr "Idioma del tercero"
+
+msgctxt "field:account.invoice,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Líneas de pago"
+
+msgctxt "field:account.invoice,payment_term:0"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "field:account.invoice,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice,reconciled:0"
+msgid "Reconciled"
+msgstr "Conciliado"
+
+msgctxt "field:account.invoice,reference:0"
+msgid "Reference"
+msgstr "Referencia"
+
+msgctxt "field:account.invoice,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:account.invoice,tax_amount:0"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.invoice,taxes:0"
+msgid "Tax Lines"
+msgstr "Líneas de impuesto"
+
+msgctxt "field:account.invoice,total_amount:0"
+msgid "Total"
+msgstr "Total"
+
+msgctxt "field:account.invoice,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice,type_name:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice,untaxed_amount:0"
+msgid "Untaxed"
+msgstr "Sin impuesto"
+
+msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice-account.move.line,line:0"
+msgid "Payment Line"
+msgstr "Línea de pago"
+
+msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgid "With Refund"
+msgstr "Con devolución"
+
+msgctxt "field:account.invoice.line,account:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice.line,amount:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.line,company:0"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.invoice.line,currency:0"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Decimales de la divisa"
+
+msgctxt "field:account.invoice.line,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.line,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgid "Invoice Taxes"
+msgstr "Impuestos de la factura"
+
+msgctxt "field:account.invoice.line,invoice_type:0"
+msgid "Invoice Type"
+msgstr "Tipo de factura"
+
+msgctxt "field:account.invoice.line,note:0"
+msgid "Note"
+msgstr "Nota"
+
+msgctxt "field:account.invoice.line,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:account.invoice.line,party_lang:0"
+msgid "Party Language"
+msgstr "Idioma del tercero"
+
+msgctxt "field:account.invoice.line,product:0"
+msgid "Product"
+msgstr "Producto"
+
+msgctxt "field:account.invoice.line,quantity:0"
+msgid "Quantity"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.line,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.line,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.invoice.line,taxes:0"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "field:account.invoice.line,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice.line,unit:0"
+msgid "Unit"
+msgstr "Unidad"
+
+msgctxt "field:account.invoice.line,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Decimales de la unidad"
+
+msgctxt "field:account.invoice.line,unit_price:0"
+msgid "Unit Price"
+msgstr "Precio unitario"
+
+msgctxt "field:account.invoice.line-account.tax,line:0"
+msgid "Invoice Line"
+msgstr "Línea de factura"
+
+msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgid "Write-Off Account"
+msgstr "Cuenta de pérdidas"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgid "Payment Amount"
+msgstr "Cantidad a pagar"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgid "Write-Off Amount"
+msgstr "Valor de la pérdida"
+
+msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgid "Payment Currency"
+msgstr "Divisa de pago"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgid "Payment Currency Digits"
+msgstr "Decimales del pago de divisa"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgid "Write-Off Currency Digits"
+msgstr "Decimales de la pérdida de divisa"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgid "Write-Off Currency"
+msgstr "Pérdida de divisa"
+
+msgctxt "field:account.invoice.pay_invoice.ask,date:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.invoice.pay_invoice.ask,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgid "Write-Off Journal"
+msgstr "Diario de pérdidas"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Líneas a pagar"
+
+msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Líneas de pago"
+
+msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Decimales de la divisa"
+
+msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.invoice.payment_term,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:account.invoice.payment_term,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.payment_term,lines:0"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "field:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgid "Currency"
+msgstr "Divisa"
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Decimales de la divisa"
+
+msgctxt "field:account.invoice.payment_term.line,days:0"
+msgid "Number of Days"
+msgstr "Número de días"
+
+msgctxt "field:account.invoice.payment_term.line,delay:0"
+msgid "Condition"
+msgstr "Condición"
+
+msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgid "Percentage"
+msgstr "Porcentaje"
+
+msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.invoice.payment_term.line,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:account.invoice.payment_term.line.delay,code:0"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:account.invoice.payment_term.line.delay,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line.type,code:0"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.tax,account:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "field:account.invoice.tax,amount:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "field:account.invoice.tax,base:0"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "field:account.invoice.tax,base_code:0"
+msgid "Base Code"
+msgstr "Código de la base"
+
+msgctxt "field:account.invoice.tax,base_sign:0"
+msgid "Base Sign"
+msgstr "Signo de la base"
+
+msgctxt "field:account.invoice.tax,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:account.invoice.tax,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:account.invoice.tax,manual:0"
+msgid "Manual"
+msgstr "Manual"
+
+msgctxt "field:account.invoice.tax,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.invoice.tax,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:account.invoice.tax,sequence_number:0"
+msgid "Sequence Number"
+msgstr "Número de secuencia"
+
+msgctxt "field:account.invoice.tax,tax:0"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "field:account.invoice.tax,tax_code:0"
+msgid "Tax Code"
+msgstr "Código de impuesto"
+
+msgctxt "field:account.invoice.tax,tax_sign:0"
+msgid "Tax Sign"
+msgstr "Signo del impuesto"
+
+msgctxt "field:account.period,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Secuencia del abono de proveedor"
+
+msgctxt "field:account.period,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Secuencia de factura de proveedor"
+
+msgctxt "field:account.period,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Secuencia de abono a cliente"
+
+msgctxt "field:account.period,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Secuencia de factura a cliente"
+
+msgctxt "field:party.address,invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "field:party.party,payment_term:0"
+msgid "Invoice Payment Term"
+msgstr "Plazo de pago de la factura"
+
+msgctxt "field:party.party,supplier_payment_term:0"
+msgid "Supplier Payment Term"
+msgstr "Plazo de pago al proveedor"
+
+msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgid "If true, the current invoice(s) will be paid."
+msgstr "Si es cierto, la(s) factura(s) actuales se pagarán."
+
+msgctxt "help:account.invoice.payment_term.line,percentage:0"
+msgid "In %"
+msgstr "En %"
+
+msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgid "Use to order lines in ascending order"
+msgstr "Empleado para ordenar las líneas ascendentemente"
+
+msgctxt "model:account.invoice,name:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:account.invoice-account.move.line,name:0"
+msgid "Invoice - Payment Line"
+msgstr "Factura - Línea de pago"
+
+msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgid "Credit Invoice Init"
+msgstr "Inicializa la factura de crédito"
+
+msgctxt "model:account.invoice.line,name:0"
+msgid "Invoice Line"
+msgstr "Línea de factura"
+
+msgctxt "model:account.invoice.line-account.tax,name:0"
+msgid "Invoice Line - Tax"
+msgstr "Línea de factura - Impuesto"
+
+msgctxt "model:account.invoice.pay_invoice.ask,name:0"
+msgid "Pay Invoice Ask"
+msgstr "Solicitud de pago de factura"
+
+msgctxt "model:account.invoice.pay_invoice.init,name:0"
+msgid "Pay Invoice Init"
+msgstr "Inicializa el pago de factura"
+
+msgctxt "model:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "model:account.invoice.payment_term.line,name:0"
+msgid "Payment Term Line"
+msgstr "Línea del plazo de pago"
+
+msgctxt "model:account.invoice.payment_term.line.delay,name:0"
+msgid "Payment Term Line Delay"
+msgstr "Linea de retraso del plazo de pago"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
+msgid "End Month"
+msgstr "Final de mes"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
+msgid "Net Days"
+msgstr "Días netos"
+
+msgctxt "model:account.invoice.payment_term.line.type,name:0"
+msgid "Payment Term Line Type"
+msgstr "Tipo de línea del plazo de pago"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
+msgid "Fixed"
+msgstr "Fijo"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
+msgid "Percentage"
+msgstr "Porcentaje"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
+msgid "Remainder"
+msgstr "Resto"
+
+msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgid "Print Invoice Report Warning"
+msgstr "Imprimir informe de aviso de facturas"
+
+msgctxt "model:account.invoice.tax,name:0"
+msgid "Invoice Tax"
+msgstr "Impuesto de factura"
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr "Todas las facturas"
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Abonos de proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Borrador de abonos de proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Abonos de proveedor pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Abonos de proveedor abiertos"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Facturas de proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Borrador de facturas de proveedor"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Facturas de proveedor pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Facturas de proveedor abiertas"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Abonos"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Abonos borrador"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Abonos pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Abonos abiertos"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Facturas borrador"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Facturas pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Facturas abiertas"
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "model:ir.action,name:credit_invoice"
+msgid "Credit"
+msgstr "Haber"
+
+msgctxt "model:ir.action,name:print_invoice_report"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr "Todas las facturas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Abonos del proveedor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Abonos de proveedor borrador"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Abonos de proveedor pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Abonos de proveedor abiertos"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Facturas de proveedor"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Facturas de proveedor borrador"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Facturas de proveedor pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Facturas de proveedor abiertas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Abonos"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Abono borrador"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Abonos pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Abonos abiertos"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Facturas borrador"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Facturas pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Facturas abiertas"
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "model:workflow,name:invoice_workflow"
+msgid "Invoice workflow"
+msgstr "Flujo de trabajo de la factura"
+
+msgctxt "model:workflow.activity,name:invoice_activity_cancel"
+msgid "Canceled"
+msgstr "Cancelada"
+
+msgctxt "model:workflow.activity,name:invoice_activity_draft"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "model:workflow.activity,name:invoice_activity_open"
+msgid "Open"
+msgstr "Abrir"
+
+msgctxt "model:workflow.activity,name:invoice_activity_paid"
+msgid "Paid"
+msgstr "Pagada"
+
+msgctxt "model:workflow.activity,name:invoice_activity_proforma"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Amount"
+msgstr "Cantidad"
+
+msgctxt "odt:account.invoice:0"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "odt:account.invoice:0"
+msgid "Credit Note N°:"
+msgstr "Abono Nº:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date:"
+msgstr "Fecha:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description:"
+msgstr "Descripción:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Credit Note"
+msgstr "Abono borrador"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Invoice"
+msgstr "Factura borrador"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Credit Note"
+msgstr "Borrador de abono de proveedor"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Invoice"
+msgstr "Borrador de factura de proveedor"
+
+msgctxt "odt:account.invoice:0"
+msgid "E-Mail:"
+msgstr "Correo electrónico:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Invoice N°:"
+msgstr "Factura Nº:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "odt:account.invoice:0"
+msgid "Phone:"
+msgstr "Teléfono:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Credit Note"
+msgstr "Abono pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Invoice"
+msgstr "Factura pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Credit Note"
+msgstr "Abono de proveedor pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Invoice"
+msgstr "Factura de proveedor pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Quantity"
+msgstr "Cantidad"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Credit Note N°:"
+msgstr "Abono de proveedor Nº:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Invoice N°:"
+msgstr "Factura de proveedor Nº:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Tax"
+msgstr "Impuesto"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes:"
+msgstr "Impuestos:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total (excl. taxes):"
+msgstr "Total (sin impuestos):"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total:"
+msgstr "Total:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Unit Price"
+msgstr "Precio"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT Number:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT:"
+msgstr "NIF:"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Canceled"
+msgstr "Cancelada"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Opened"
+msgstr "Abierta"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Paid"
+msgstr "Pagada"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Credit Note"
+msgstr "Abono"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Credit Note"
+msgstr "Abono del proveedor"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Invoice"
+msgstr "Factura de proveedor"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Credit Note"
+msgstr "Abono"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Credit Note"
+msgstr "Abono de proveedor"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Invoice"
+msgstr "Factura de proveedor"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Comment"
+msgstr "Comentario"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Line"
+msgstr "Línea"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Subtotal"
+msgstr "Subtotal"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Title"
+msgstr "Título"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Partial Payment"
+msgstr "Pago parcial"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Write-Off"
+msgstr "Pérdida"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Are you sure to credit those/this invoice(s)?"
+msgstr "¿Está seguro que quiere devolver esta/estas factura(s)?"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Credit Invoice"
+msgstr "Factura crédito"
+
+msgctxt "view:account.invoice.line:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Line"
+msgstr "Línea de factura"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Lines"
+msgstr "Líneas de factura"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Notes"
+msgstr "Notas"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Products"
+msgstr "Productos"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Amount Second Currency"
+msgstr "Cantidad en la divisa secundaria"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Credit"
+msgstr "Haber"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Debit"
+msgstr "Debe"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Lines to Pay"
+msgstr "Líneas a pagar"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Payment Lines"
+msgstr "Líneas de pago"
+
+msgctxt "view:account.invoice.pay_invoice.init:0"
+msgid "Pay Invoice"
+msgstr "Pagar factura"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Line"
+msgstr "Línea del plazo de pago"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Lines"
+msgstr "Líneas del plazo de pago"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "<b>Warning!</b>"
+msgstr "<b>Atención</b>"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "Print Invoice"
+msgstr "Imprimir factura"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr "Las facturas se enviarán <i>directamente</i> a la impresora."
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "You have selected more than one invoice to print."
+msgstr "Ha elegido más de una factura para imprimir."
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Tax"
+msgstr "Impuesto de la factura"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Taxes"
+msgstr "Impuestos de la factura"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Tax Code"
+msgstr "Código de impuesto"
+
+msgctxt "view:account.invoice:0"
+msgid "Amount Second Currency"
+msgstr "Cantidad en la divisa secundaria"
+
+msgctxt "view:account.invoice:0"
+msgid "Credit"
+msgstr "Haber"
+
+msgctxt "view:account.invoice:0"
+msgid "Debit"
+msgstr "Debe"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoice"
+msgstr "Factura"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoices"
+msgstr "Facturas"
+
+msgctxt "view:account.invoice:0"
+msgid "Lines"
+msgstr "Líneas"
+
+msgctxt "view:account.invoice:0"
+msgid "Other Info"
+msgstr "Información adicional"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment"
+msgstr "Pago"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment Lines"
+msgstr "Líneas de pago"
+
+msgctxt "view:account.invoice:0"
+msgid "Pro For_ma"
+msgstr "Pro for_ma"
+
+msgctxt "view:account.invoice:0"
+msgid "Taxes"
+msgstr "Impuestos"
+
+msgctxt "view:account.invoice:0"
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+msgctxt "view:account.invoice:0"
+msgid "_Draft"
+msgstr "_Borrador"
+
+msgctxt "view:account.invoice:0"
+msgid "_Open"
+msgstr "_Abrir"
+
+msgctxt "view:account.invoice:0"
+msgid "_Pay"
+msgstr "_Pagar"
+
+msgctxt "view:account.invoice:0"
+msgid "_Reset to Draft"
+msgstr "_Restablecer a borrador"
+
+msgctxt "view:party.party:0"
+msgid "Payment Terms"
+msgstr "Plazos de pago"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgid "Credit"
+msgstr "Haber"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgid "Print"
+msgstr "Imprimir"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
new file mode 100644
index 0000000..eb507e6
--- /dev/null
+++ b/locale/fr_FR.po
@@ -0,0 +1,1400 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+"Vous ne pouvez pas changer la séquence de facture si il y a déjà une facture"
+" ouverte dans l'année fiscale"
+
+msgctxt "error:account.fiscalyear:0"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr ""
+"Vous devez utiliser des séquences de facture différentes par année fiscale !"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr ""
+"Vous ne pouvez pas créditer avec un remboursement une facture qui n'est pas "
+"ouverte !"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr ""
+"Vous ne pouvez pas créditer avec un remboursement une facture avec paiements"
+" !"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line with \"line\" type must have an account!"
+msgstr "Ligne de type \"ligne\" doit avoir un compte !"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr "Ligne sans type \"ligne\" doit avoir une facture !"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée "
+"our annulée !"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+"Vous ne pouvez pas créer de ligne de facture\n"
+"avec un compte d'une différente société que celle de la  facture !"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr ""
+"Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte ou payée "
+"!"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+"Vous ne pouvez pas utilier le même compte\n"
+"que celui de la factiure !"
+
+msgctxt "error:account.invoice.pay_invoice:0"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+"Vous ne pouvez pas créer un paiement partiel dont le montant est supérieur "
+"au montant qu'il reste à payer !"
+
+msgctxt "error:account.invoice.payment_term.line.delay:0"
+msgid "The code must be unique!"
+msgstr "Le code doit être unique !"
+
+msgctxt "error:account.invoice.payment_term.line.type:0"
+msgid "The code must be unique!"
+msgstr "Le code doit être unique !"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Invalid payment term line!"
+msgstr "Ligne de condition de paiement non-valide !"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Payment term missing a remainder line!"
+msgstr "La condition de paiement manque une ligne de reste !"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou"
+" annulée !"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr ""
+"Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte ou payée"
+" !"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Le montant de base des taxes sont différents des lignes de facture !\n"
+"Re-calculez la facture."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Des taxes sont définies mais pas sur les lignes de facture !\n"
+"Re-calculez la facture."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+"Des taxes sont définies sur les lignes de facture mais pas sur la facture !\n"
+"Re-calculez la facture."
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is missing!"
+msgstr "Le compte de crédit sur le journal est manquant !"
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr ""
+"Le compte de crébit sur le journal est le même que le compte de la facture !"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is missing!"
+msgstr "Le compte de débit sur le journal est manquant !"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr ""
+"Le compte de débit sur le journal est le même que le compte de la facture !"
+
+msgctxt "error:account.invoice:0"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr "Il n'y a pas de séquence de facture sur la période/année fiscale !"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+"Vous ne pouvez pas créer une facture\n"
+"avec un compte d'une société de facturation différente !"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr "Vous ne pouvez pas modifier une facture qui est ouverte ou payée !"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr ""
+"Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+"Vous ne pouvez pas utiliser le même compte\n"
+"que sur la ligne de facture !"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+"Vous ne pouvez pas changer la séquence de facture s'il y a déjà une facture "
+"ouverte dans la période"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+"Vous devez avoir des séquences de facture différentes par année fiscale et "
+"dans la même société !"
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Séquence des notes de crédit fournisseur"
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Séquence de facture fournisseur"
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Séquence des notes de crédit client"
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Séquence de facture client"
+
+msgctxt "field:account.invoice,account:0"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "field:account.invoice,accounting_date:0"
+msgid "Accounting Date"
+msgstr "Date comptable"
+
+msgctxt "field:account.invoice,amount_to_pay:0"
+msgid "Amount to Pay"
+msgstr "Montant à payer"
+
+msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgid "Amount to Pay Today"
+msgstr "Montant à payer aujourd'hui"
+
+msgctxt "field:account.invoice,comment:0"
+msgid "Comment"
+msgstr "Commentaire"
+
+msgctxt "field:account.invoice,company:0"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:account.invoice,currency:0"
+msgid "Currency"
+msgstr "Devise"
+
+msgctxt "field:account.invoice,currency_date:0"
+msgid "Currency Date"
+msgstr "Date du taux de change"
+
+msgctxt "field:account.invoice,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Décimales de la devise"
+
+msgctxt "field:account.invoice,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:account.invoice,invoice_address:0"
+msgid "Invoice Address"
+msgstr "Adresse de facturation"
+
+msgctxt "field:account.invoice,invoice_date:0"
+msgid "Invoice Date"
+msgstr "Date de facturation"
+
+msgctxt "field:account.invoice,invoice_report_cache:0"
+msgid "Invoice Report"
+msgstr "Rapport de facture"
+
+msgctxt "field:account.invoice,invoice_report_format:0"
+msgid "Invoice Report Format"
+msgstr "Format du rapport de facturation"
+
+msgctxt "field:account.invoice,journal:0"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.invoice,lines:0"
+msgid "Lines"
+msgstr "Lignes"
+
+msgctxt "field:account.invoice,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Lignes à payer"
+
+msgctxt "field:account.invoice,move:0"
+msgid "Move"
+msgstr "Mouvement"
+
+msgctxt "field:account.invoice,number:0"
+msgid "Number"
+msgstr "Numéro"
+
+msgctxt "field:account.invoice,party:0"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "field:account.invoice,party_lang:0"
+msgid "Party Language"
+msgstr "Langue du tiers"
+
+msgctxt "field:account.invoice,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Lignes de paiement"
+
+msgctxt "field:account.invoice,payment_term:0"
+msgid "Payment Term"
+msgstr "Condition de paiement"
+
+msgctxt "field:account.invoice,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice,reconciled:0"
+msgid "Reconciled"
+msgstr "Réconcilié"
+
+msgctxt "field:account.invoice,reference:0"
+msgid "Reference"
+msgstr "Référence"
+
+msgctxt "field:account.invoice,state:0"
+msgid "State"
+msgstr "État"
+
+msgctxt "field:account.invoice,tax_amount:0"
+msgid "Tax"
+msgstr "Taxe"
+
+msgctxt "field:account.invoice,taxes:0"
+msgid "Tax Lines"
+msgstr "Lignes de taxe"
+
+msgctxt "field:account.invoice,total_amount:0"
+msgid "Total"
+msgstr "Total"
+
+msgctxt "field:account.invoice,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice,type_name:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice,untaxed_amount:0"
+msgid "Untaxed"
+msgstr "Hors taxe"
+
+msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "field:account.invoice-account.move.line,line:0"
+msgid "Payment Line"
+msgstr "Ligne de paiement"
+
+msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgid "With Refund"
+msgstr "Avec remboursement"
+
+msgctxt "field:account.invoice.line,account:0"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "field:account.invoice.line,amount:0"
+msgid "Amount"
+msgstr "Montant"
+
+msgctxt "field:account.invoice.line,company:0"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:account.invoice.line,currency:0"
+msgid "Currency"
+msgstr "Devise"
+
+msgctxt "field:account.invoice.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Décimales de la devise"
+
+msgctxt "field:account.invoice.line,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:account.invoice.line,invoice:0"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgid "Invoice Taxes"
+msgstr "Taxes de le facture"
+
+msgctxt "field:account.invoice.line,invoice_type:0"
+msgid "Invoice Type"
+msgstr "Type de facture"
+
+msgctxt "field:account.invoice.line,note:0"
+msgid "Note"
+msgstr "Note"
+
+msgctxt "field:account.invoice.line,party:0"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "field:account.invoice.line,party_lang:0"
+msgid "Party Language"
+msgstr "Langue du tiers"
+
+msgctxt "field:account.invoice.line,product:0"
+msgid "Product"
+msgstr "Produit"
+
+msgctxt "field:account.invoice.line,quantity:0"
+msgid "Quantity"
+msgstr "Quantité"
+
+msgctxt "field:account.invoice.line,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.line,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:account.invoice.line,taxes:0"
+msgid "Taxes"
+msgstr "Taxes"
+
+msgctxt "field:account.invoice.line,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice.line,unit:0"
+msgid "Unit"
+msgstr "Unité"
+
+msgctxt "field:account.invoice.line,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Décimales de l'unité"
+
+msgctxt "field:account.invoice.line,unit_price:0"
+msgid "Unit Price"
+msgstr "Prix unitaire"
+
+msgctxt "field:account.invoice.line-account.tax,line:0"
+msgid "Invoice Line"
+msgstr "Ligne de facture"
+
+msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgid "Tax"
+msgstr "Taxe"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account:0"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgid "Write-Off Account"
+msgstr "Compte de pertes et profits"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgid "Payment Amount"
+msgstr "Montant"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgid "Write-Off Amount"
+msgstr "Montant de pertes et profits"
+
+msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgid "Payment Currency"
+msgstr "Devise"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgid "Payment Currency Digits"
+msgstr "Décimales de la devise"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgid "Write-Off Currency Digits"
+msgstr "Décimales de la devise de pertes et profits"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgid "Write-Off Currency"
+msgstr "Devise pertes et profits"
+
+msgctxt "field:account.invoice.pay_invoice.ask,date:0"
+msgid "Date"
+msgstr "Date"
+
+msgctxt "field:account.invoice.pay_invoice.ask,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgid "Write-Off Journal"
+msgstr "Journal"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgid "Lines"
+msgstr "Lignes"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Lignes à payer"
+
+msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Lignes de paiement"
+
+msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgid "Amount"
+msgstr "Montant"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgid "Currency"
+msgstr "Devise"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Décimales de la devise"
+
+msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgid "Date"
+msgstr "date"
+
+msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.invoice.payment_term,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:account.invoice.payment_term,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:account.invoice.payment_term,lines:0"
+msgid "Lines"
+msgstr "Lignes"
+
+msgctxt "field:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Condition de paiement"
+
+msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgid "Amount"
+msgstr "Montant"
+
+msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgid "Currency"
+msgstr "Devise"
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Décimales de la devise"
+
+msgctxt "field:account.invoice.payment_term.line,days:0"
+msgid "Number of Days"
+msgstr "Nombre de jours"
+
+msgctxt "field:account.invoice.payment_term.line,delay:0"
+msgid "Condition"
+msgstr "Condition"
+
+msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgid "Payment Term"
+msgstr "Condition de paiement"
+
+msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgid "Percentage"
+msgstr "Pourcentage"
+
+msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:account.invoice.payment_term.line,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice.payment_term.line.delay,code:0"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:account.invoice.payment_term.line.delay,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.payment_term.line.type,code:0"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.tax,account:0"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "field:account.invoice.tax,amount:0"
+msgid "Amount"
+msgstr "Montant"
+
+msgctxt "field:account.invoice.tax,base:0"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "field:account.invoice.tax,base_code:0"
+msgid "Base Code"
+msgstr "Code de base"
+
+msgctxt "field:account.invoice.tax,base_sign:0"
+msgid "Base Sign"
+msgstr "Signe de base"
+
+msgctxt "field:account.invoice.tax,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:account.invoice.tax,invoice:0"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "field:account.invoice.tax,manual:0"
+msgid "Manual"
+msgstr "Manuel"
+
+msgctxt "field:account.invoice.tax,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.invoice.tax,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:account.invoice.tax,sequence_number:0"
+msgid "Sequence Number"
+msgstr "Numéro de séquence"
+
+msgctxt "field:account.invoice.tax,tax:0"
+msgid "Tax"
+msgstr "Taxe"
+
+msgctxt "field:account.invoice.tax,tax_code:0"
+msgid "Tax Code"
+msgstr "Code de taxe"
+
+msgctxt "field:account.invoice.tax,tax_sign:0"
+msgid "Tax Sign"
+msgstr "Signe de taxe"
+
+msgctxt "field:account.period,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Séquence des notes de crédit fournisseur"
+
+msgctxt "field:account.period,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Séquence de facture fournisseur"
+
+msgctxt "field:account.period,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Séquence des notes de crédit client"
+
+msgctxt "field:account.period,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Séquence de facture client"
+
+msgctxt "field:party.address,invoice:0"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "field:party.party,payment_term:0"
+msgid "Invoice Payment Term"
+msgstr "Conditions de paiement du client"
+
+msgctxt "field:party.party,supplier_payment_term:0"
+msgid "Supplier Payment Term"
+msgstr "Conditions de paiement du fournisseur"
+
+msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgid "If true, the current invoice(s) will be paid."
+msgstr "Si vrai, les factures seront payées."
+
+msgctxt "help:account.invoice.payment_term.line,percentage:0"
+msgid "In %"
+msgstr "En %"
+
+msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgid "Use to order lines in ascending order"
+msgstr "Utilisé pour trier les lignes en ordre croissant"
+
+msgctxt "model:account.invoice,name:0"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "model:account.invoice-account.move.line,name:0"
+msgid "Invoice - Payment Line"
+msgstr "Facture - Ligne de paiement"
+
+msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgid "Credit Invoice Init"
+msgstr "Crediter la facture - Init"
+
+msgctxt "model:account.invoice.line,name:0"
+msgid "Invoice Line"
+msgstr "Ligne de Facture"
+
+msgctxt "model:account.invoice.line-account.tax,name:0"
+msgid "Invoice Line - Tax"
+msgstr "Ligne de facture - Taxe"
+
+msgctxt "model:account.invoice.pay_invoice.ask,name:0"
+msgid "Pay Invoice Ask"
+msgstr "Payer la facture - Demande"
+
+msgctxt "model:account.invoice.pay_invoice.init,name:0"
+msgid "Pay Invoice Init"
+msgstr "Payer la facture - Init"
+
+msgctxt "model:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Conditions de paiement"
+
+msgctxt "model:account.invoice.payment_term.line,name:0"
+msgid "Payment Term Line"
+msgstr "Ligne de condition de paiement"
+
+msgctxt "model:account.invoice.payment_term.line.delay,name:0"
+msgid "Payment Term Line Delay"
+msgstr "Délai de ligne de condition de paiement"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
+msgid "End Month"
+msgstr "fin du mois"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
+msgid "Net Days"
+msgstr "Jours"
+
+msgctxt "model:account.invoice.payment_term.line.type,name:0"
+msgid "Payment Term Line Type"
+msgstr "Type de line de condition de paiement"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
+msgid "Fixed"
+msgstr "Fixe"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
+msgid "Percentage"
+msgstr "Pourcentage"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
+msgid "Remainder"
+msgstr "Reste"
+
+msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgid "Print Invoice Report Warning"
+msgstr "Imprimer de la factures - Avertissement"
+
+msgctxt "model:account.invoice.tax,name:0"
+msgid "Invoice Tax"
+msgstr "Tax de facture"
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr "Toutes les factures"
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Notes de crédit fournisseur"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Notes de crédit fournisseurs en brouillon"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Notes de crédit fournisseurs pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Notes de crédit fournisseurs ouvertes"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Factures fournisseurs"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Factures fournisseurs ouvertes"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Factures fournisseurs pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Factures fournisseurs ouvertes"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Notes de crédit"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Notes de crédit en brouillon"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Notes de crédit pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Notes de crédit ouvertes"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Factures en brouillon"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Factures pro forma"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Factures ouvertes"
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr "Conditions de paiement"
+
+msgctxt "model:ir.action,name:credit_invoice"
+msgid "Credit"
+msgstr "Crédit"
+
+msgctxt "model:ir.action,name:print_invoice_report"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgid "Pay Invoice"
+msgstr "Payer facture"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr "Toutes les factures"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Notes de crédit fournisseur"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Notes de crédit fournisseur en brouillon"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Notes de crédit fournisseur pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Notes de crédit fournisseur ouvertes"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Factures fournisseurs"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Factures fournisseurs en brouillon"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Factures fournisseurs pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Factures fournisseurs ouvertes"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Notes de crédit"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Notes de crédit en brouillon"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Notes de crédit pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Notes de crédit ouvertes"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Factures en brouillon"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Factures pro forma"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Factures ouvertes"
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr "Conditions de paiement"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr "Conditions de paiement"
+
+msgctxt "model:workflow,name:invoice_workflow"
+msgid "Invoice workflow"
+msgstr "Workflow facture"
+
+msgctxt "model:workflow.activity,name:invoice_activity_cancel"
+msgid "Canceled"
+msgstr "Annulé"
+
+msgctxt "model:workflow.activity,name:invoice_activity_draft"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt "model:workflow.activity,name:invoice_activity_open"
+msgid "Open"
+msgstr "Ouvert"
+
+msgctxt "model:workflow.activity,name:invoice_activity_paid"
+msgid "Paid"
+msgstr "Payé"
+
+msgctxt "model:workflow.activity,name:invoice_activity_proforma"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Amount"
+msgstr "Montant"
+
+msgctxt "odt:account.invoice:0"
+msgid "Base"
+msgstr "Base"
+
+msgctxt "odt:account.invoice:0"
+msgid "Credit Note N°:"
+msgstr "N° de note de crédit :"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date"
+msgstr "Date"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date:"
+msgstr "Date :"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description:"
+msgstr "Description :"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Credit Note"
+msgstr "Note de crédit brouillon"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Invoice"
+msgstr "Facture brouillon"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Credit Note"
+msgstr "Note de crédit fournisseur brouillon"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Invoice"
+msgstr "Facture fournisseur brouillon"
+
+msgctxt "odt:account.invoice:0"
+msgid "E-Mail:"
+msgstr "E-Mail:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Invoice N°:"
+msgstr "N° de facture :"
+
+msgctxt "odt:account.invoice:0"
+msgid "Payment Term"
+msgstr "Condition de paiement"
+
+msgctxt "odt:account.invoice:0"
+msgid "Phone:"
+msgstr "Téléphone"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Credit Note"
+msgstr "Note de crédit pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Invoice"
+msgstr "Facture pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Credit Note"
+msgstr "Note de crédit fournisseur pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Invoice"
+msgstr "Facture fournisseur pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Quantity"
+msgstr "Quantité"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Credit Note N°:"
+msgstr "N° de note de crédit fournisseur :"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Invoice N°:"
+msgstr "N° de facture fournisseur :"
+
+msgctxt "odt:account.invoice:0"
+msgid "Tax"
+msgstr "Taxe"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes"
+msgstr "Taxes"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes:"
+msgstr "Taxes :"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total (excl. taxes):"
+msgstr "Total (hors-taxes) :"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total:"
+msgstr "Total :"
+
+msgctxt "odt:account.invoice:0"
+msgid "Unit Price"
+msgstr "Prix unitaire"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT Number:"
+msgstr "Numéro TVA :"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT:"
+msgstr "TVA :"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Canceled"
+msgstr "Annulé"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Opened"
+msgstr "Ouvert"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Paid"
+msgstr "Payée"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Credit Note"
+msgstr "Note de crédit"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Credit Note"
+msgstr "Note de crédit fournisseur"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Invoice"
+msgstr "Facture fournisseur"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Credit Note"
+msgstr "Note de crédit"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Credit Note"
+msgstr "Note de crédit fournisseur"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Invoice"
+msgstr "Facture fournisseur"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Comment"
+msgstr "Commentaire"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Line"
+msgstr "Ligne"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Subtotal"
+msgstr "Sous-total"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Title"
+msgstr "Titre"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Partial Payment"
+msgstr "Paiement partiel"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Write-Off"
+msgstr "Pertes et profits"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Are you sure to credit those/this invoice(s)?"
+msgstr "Etes-vous sûr de vouloir créditer cette/ces factures ?"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Credit Invoice"
+msgstr "Facture de crédit"
+
+msgctxt "view:account.invoice.line:0"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Line"
+msgstr "Ligne de facture"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Lines"
+msgstr "Lignes de facture"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Notes"
+msgstr "Notes"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Products"
+msgstr "Produits"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Amount Second Currency"
+msgstr "Montant en devise secondaire"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Credit"
+msgstr "Crédit"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Debit"
+msgstr "Débit"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Lines to Pay"
+msgstr "Lignes à payer"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Pay Invoice"
+msgstr "Payer la facture"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Payment Lines"
+msgstr "Lignes de paiement"
+
+msgctxt "view:account.invoice.pay_invoice.init:0"
+msgid "Pay Invoice"
+msgstr "Payer la facture"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term"
+msgstr "Conditions de paiement"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Line"
+msgstr "Ligne de condition de paiement"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Lines"
+msgstr "Lignes de condition de paiement"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Terms"
+msgstr "Conditions de paiement"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "<b>Warning!</b>"
+msgstr "<b>Attention!</b>"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "Print Invoice"
+msgstr "Imprimer la facture"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr "Les factures seront envoyées <i>directement</i> à l'imprimante."
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "You have selected more than one invoice to print."
+msgstr "Vous avez sélectionné plus d'une facture à imprimer."
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Tax"
+msgstr "Taxes de le facture"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Taxes"
+msgstr "Taxes de le facture"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Tax Code"
+msgstr "Code de taxe"
+
+msgctxt "view:account.invoice:0"
+msgid "Amount Second Currency"
+msgstr "Montant de devise secondaire"
+
+msgctxt "view:account.invoice:0"
+msgid "Credit"
+msgstr "Crédit"
+
+msgctxt "view:account.invoice:0"
+msgid "Debit"
+msgstr "Débit"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoice"
+msgstr "Facture"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoices"
+msgstr "Factures"
+
+msgctxt "view:account.invoice:0"
+msgid "Lines"
+msgstr "Lignes"
+
+msgctxt "view:account.invoice:0"
+msgid "Other Info"
+msgstr "Autre information"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment"
+msgstr "Paiement"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment Lines"
+msgstr "Lignes de paiement"
+
+msgctxt "view:account.invoice:0"
+msgid "Pro For_ma"
+msgstr "Pro For_ma"
+
+msgctxt "view:account.invoice:0"
+msgid "Taxes"
+msgstr "Taxes"
+
+msgctxt "view:account.invoice:0"
+msgid "_Cancel"
+msgstr "_Annuler"
+
+msgctxt "view:account.invoice:0"
+msgid "_Draft"
+msgstr "_Brouillon"
+
+msgctxt "view:account.invoice:0"
+msgid "_Open"
+msgstr "_Ouvrir"
+
+msgctxt "view:account.invoice:0"
+msgid "_Pay"
+msgstr "_Payer"
+
+msgctxt "view:account.invoice:0"
+msgid "_Reset to Draft"
+msgstr "_Remettre en brouillon"
+
+msgctxt "view:party.party:0"
+msgid "Payment Terms"
+msgstr "Conditions de paiement"
+
+msgctxt "view:product.product:0"
+msgid "Taxes"
+msgstr "Taxes"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgid "Credit"
+msgstr "Créditer"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgid "Ok"
+msgstr "Ok"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgid "Ok"
+msgstr "Ok"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgid "Print"
+msgstr "Imprimer"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
new file mode 100644
index 0000000..af21248
--- /dev/null
+++ b/locale/nl_NL.po
@@ -0,0 +1,1388 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+"U kunt de factuurreeks niet meer aanpassen als er in dit boekjaar al een "
+"factuur is geboekt."
+
+msgctxt "error:account.fiscalyear:0"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr "U moet per boekjaar verschillende factuurreeksen hebben!"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr "Alleen een openstaande factuur kunt u crediteren met terugbetaling!"
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr ""
+"Een (gedeeltelijk) betaalde factuur kunt u niet crediteren met "
+"terugbetaling!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line with \"line\" type must have an account!"
+msgstr "Regel met \"regel\" type moet een rekening hebben!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr "Een regel zonder \"regel\" moet een factuur hebben!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde "
+"factuur!"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+"U kunt geen factuurregel aanmaken\n"
+"op een rekening van een ander bedrijf!"
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr "U kunt geen regel aanpassen van een openstraande of betaalde factuur!"
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+"U kunt niet dezelfde rekening \n"
+"gebruiken als op de factuur!"
+
+msgctxt "error:account.invoice.pay_invoice:0"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+"U kunt geen gedeeltelijke betaling boeken die groter is dan het te betalen "
+"bedrag!"
+
+msgctxt "error:account.invoice.payment_term.line.delay:0"
+msgid "The code must be unique!"
+msgstr "De code moet uniek zijn!"
+
+msgctxt "error:account.invoice.payment_term.line.type:0"
+msgid "The code must be unique!"
+msgstr "De code moet uniek zijn!"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Invalid payment term line!"
+msgstr "Ongeldige betalingstermijn!"
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Payment term missing a remainder line!"
+msgstr "De betalingstermijn mist een restantregel!"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+"U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde "
+"factuur!"
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr ""
+"U kunt de belasting niet aanpassen van een openstaande of betaalde factuur!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Standaard belasting wijkt af van factuurregels!\n"
+"Herbereken de factuur."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+"Belasting gedefinieerd maar niet op deze factuurregels!\n"
+"Herbereken de factuur."
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+"Belasting gedefinieerd op factuurregels, maar niet op de factuur!\n"
+"Herbereken de factuur."
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is missing!"
+msgstr "De credit boeking ontbreekt!"
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr ""
+"De credit rekening in het dagboek is dezelfde als de factuur rekening."
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is missing!"
+msgstr "De debit boeking ontbreekt!"
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr "De debit rekening in het dagboek is dezelfde als de factuur rekening."
+
+msgctxt "error:account.invoice:0"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr "Er is geen factuurreeks voor deze periode / dit boekjaar!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+"U kunt geen factuur aanmaken\n"
+"op een rekening van een ander bedrijf!"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr "U kunt een openstaande of betaalde factuur niet wijzigen!"
+
+msgctxt "error:account.invoice:0"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr "Een geboekte factuur kunt u niet terugzetten naar concept!"
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+"U kunt niet dezelfde rekening gebruiken\n"
+"als op de factuurregel!"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+"U kunt niet de factuurreeks aanpassen als er al een factuur in deze periode "
+"is geboekt"
+
+msgctxt "error:account.period:0"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+"U moet per boekjaar verschillende factuurreeksen hebben binnen hetzelfde "
+"bedrijf!"
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Credit inkoopnota reeks"
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Inkoopfactuurreeks"
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Credit verkoopnota reeks"
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Verkoopfactuur reeks"
+
+msgctxt "field:account.invoice,account:0"
+msgid "Account"
+msgstr "Rekening"
+
+msgctxt "field:account.invoice,accounting_date:0"
+msgid "Accounting Date"
+msgstr "Boekingsdatum"
+
+msgctxt "field:account.invoice,amount_to_pay:0"
+msgid "Amount to Pay"
+msgstr "Te betalen bedrag"
+
+msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgid "Amount to Pay Today"
+msgstr "Vandaag te betalen bedrag"
+
+msgctxt "field:account.invoice,comment:0"
+msgid "Comment"
+msgstr "Opmerking"
+
+msgctxt "field:account.invoice,company:0"
+msgid "Company"
+msgstr "Bedrijf"
+
+msgctxt "field:account.invoice,currency:0"
+msgid "Currency"
+msgstr "Valuta"
+
+msgctxt "field:account.invoice,currency_date:0"
+msgid "Currency Date"
+msgstr ""
+
+msgctxt "field:account.invoice,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Valuta decimalen"
+
+msgctxt "field:account.invoice,description:0"
+msgid "Description"
+msgstr "Omschrijving"
+
+msgctxt "field:account.invoice,invoice_address:0"
+msgid "Invoice Address"
+msgstr "Factuuradres"
+
+msgctxt "field:account.invoice,invoice_date:0"
+msgid "Invoice Date"
+msgstr "Factuurdatum"
+
+msgctxt "field:account.invoice,invoice_report_cache:0"
+msgid "Invoice Report"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_report_format:0"
+msgid "Invoice Report Format"
+msgstr "Opmaak factuuroverzicht"
+
+msgctxt "field:account.invoice,journal:0"
+msgid "Journal"
+msgstr "Dagboek"
+
+msgctxt "field:account.invoice,lines:0"
+msgid "Lines"
+msgstr "Regels"
+
+msgctxt "field:account.invoice,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Te betalen boekingen"
+
+msgctxt "field:account.invoice,move:0"
+msgid "Move"
+msgstr "Boeking"
+
+msgctxt "field:account.invoice,number:0"
+msgid "Number"
+msgstr "Nummer"
+
+msgctxt "field:account.invoice,party:0"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "field:account.invoice,party_lang:0"
+msgid "Party Language"
+msgstr "Taal relatie"
+
+msgctxt "field:account.invoice,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Betalingen"
+
+msgctxt "field:account.invoice,payment_term:0"
+msgid "Payment Term"
+msgstr "Betalingstermijn"
+
+msgctxt "field:account.invoice,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice,reconciled:0"
+msgid "Reconciled"
+msgstr "Afgeletterd"
+
+msgctxt "field:account.invoice,reference:0"
+msgid "Reference"
+msgstr "Referentie"
+
+msgctxt "field:account.invoice,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:account.invoice,tax_amount:0"
+msgid "Tax"
+msgstr "Belasting"
+
+msgctxt "field:account.invoice,taxes:0"
+msgid "Tax Lines"
+msgstr "Belastingregels"
+
+msgctxt "field:account.invoice,total_amount:0"
+msgid "Total"
+msgstr "Totaal"
+
+msgctxt "field:account.invoice,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice,type_name:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice,untaxed_amount:0"
+msgid "Untaxed"
+msgstr "Onbelast"
+
+msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "field:account.invoice-account.move.line,line:0"
+msgid "Payment Line"
+msgstr "Betalingen"
+
+msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgid "With Refund"
+msgstr "Met restitutie"
+
+msgctxt "field:account.invoice.line,account:0"
+msgid "Account"
+msgstr "Rekening"
+
+msgctxt "field:account.invoice.line,amount:0"
+msgid "Amount"
+msgstr "Bedrag"
+
+msgctxt "field:account.invoice.line,company:0"
+msgid "Company"
+msgstr "Bedrijf"
+
+msgctxt "field:account.invoice.line,currency:0"
+msgid "Currency"
+msgstr "Valuta"
+
+msgctxt "field:account.invoice.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Valuta decimalen"
+
+msgctxt "field:account.invoice.line,description:0"
+msgid "Description"
+msgstr "Omschrijving"
+
+msgctxt "field:account.invoice.line,invoice:0"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgid "Invoice Taxes"
+msgstr "Belastingen factuur"
+
+msgctxt "field:account.invoice.line,invoice_type:0"
+msgid "Invoice Type"
+msgstr "Factuurtype"
+
+msgctxt "field:account.invoice.line,note:0"
+msgid "Note"
+msgstr "Aantekening"
+
+msgctxt "field:account.invoice.line,party:0"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "field:account.invoice.line,party_lang:0"
+msgid "Party Language"
+msgstr "Taal relatie"
+
+msgctxt "field:account.invoice.line,product:0"
+msgid "Product"
+msgstr "Product"
+
+msgctxt "field:account.invoice.line,quantity:0"
+msgid "Quantity"
+msgstr "Hoeveelheid"
+
+msgctxt "field:account.invoice.line,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.line,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:account.invoice.line,taxes:0"
+msgid "Taxes"
+msgstr "Belastingen"
+
+msgctxt "field:account.invoice.line,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice.line,unit:0"
+msgid "Unit"
+msgstr "Eenheid"
+
+msgctxt "field:account.invoice.line,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Decimalen eenheid"
+
+msgctxt "field:account.invoice.line,unit_price:0"
+msgid "Unit Price"
+msgstr "Eenheidsprijs"
+
+msgctxt "field:account.invoice.line-account.tax,line:0"
+msgid "Invoice Line"
+msgstr "Factuurregel"
+
+msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgid "Tax"
+msgstr "Belasting"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account:0"
+msgid "Account"
+msgstr "Rekening"
+
+msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgid "Write-Off Account"
+msgstr "Rekening afschrijving"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgid "Payment Amount"
+msgstr "Bedrag betaling"
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgid "Write-Off Amount"
+msgstr "Rekening afschrijving"
+
+msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgid "Company"
+msgstr "Bedrijf"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgid "Payment Currency"
+msgstr "Valuta betaling"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgid "Payment Currency Digits"
+msgstr "Decimalen valuta betaling"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgid "Write-Off Currency Digits"
+msgstr "Decimalen valuta afschrijving"
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgid "Write-Off Currency"
+msgstr "Valuta afschrijving"
+
+msgctxt "field:account.invoice.pay_invoice.ask,date:0"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:account.invoice.pay_invoice.ask,description:0"
+msgid "Description"
+msgstr "Omschrijving"
+
+msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
+msgid "Journal"
+msgstr "Dagboek"
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgid "Write-Off Journal"
+msgstr "Dagboek afschrijving"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgid "Lines"
+msgstr "Regels"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr "Te betalen boekingen"
+
+msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgid "Payment Lines"
+msgstr "Betalingen"
+
+msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgid "Amount"
+msgstr "Bedrag"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgid "Currency"
+msgstr "Valuta"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Valuta decimalen"
+
+msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgid "Description"
+msgstr "Omschrijving"
+
+msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgid "Journal"
+msgstr "Dagboek"
+
+msgctxt "field:account.invoice.payment_term,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:account.invoice.payment_term,description:0"
+msgid "Description"
+msgstr "Omschrijving"
+
+msgctxt "field:account.invoice.payment_term,lines:0"
+msgid "Lines"
+msgstr "Regels"
+
+msgctxt "field:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Betalingstermijn"
+
+msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgid "Amount"
+msgstr "Bedrag"
+
+msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgid "Currency"
+msgstr "Valuta"
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr "Valuta decimalen"
+
+msgctxt "field:account.invoice.payment_term.line,days:0"
+msgid "Number of Days"
+msgstr "Aantal dagen"
+
+msgctxt "field:account.invoice.payment_term.line,delay:0"
+msgid "Condition"
+msgstr "Voorwaarde"
+
+msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgid "Payment Term"
+msgstr "Betalingstermijn"
+
+msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgid "Percentage"
+msgstr "Percentage"
+
+msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:account.invoice.payment_term.line,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:account.invoice.payment_term.line.delay,code:0"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:account.invoice.payment_term.line.delay,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.payment_term.line.type,code:0"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.tax,account:0"
+msgid "Account"
+msgstr "Rekening"
+
+msgctxt "field:account.invoice.tax,amount:0"
+msgid "Amount"
+msgstr "Bedrag"
+
+msgctxt "field:account.invoice.tax,base:0"
+msgid "Base"
+msgstr "Basis"
+
+msgctxt "field:account.invoice.tax,base_code:0"
+msgid "Base Code"
+msgstr "Basiscode"
+
+msgctxt "field:account.invoice.tax,base_sign:0"
+msgid "Base Sign"
+msgstr "Basisteken"
+
+msgctxt "field:account.invoice.tax,description:0"
+msgid "Description"
+msgstr "Omschrijving"
+
+msgctxt "field:account.invoice.tax,invoice:0"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "field:account.invoice.tax,manual:0"
+msgid "Manual"
+msgstr "Handmatig"
+
+msgctxt "field:account.invoice.tax,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:account.invoice.tax,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:account.invoice.tax,sequence_number:0"
+msgid "Sequence Number"
+msgstr "Reeksnummer"
+
+msgctxt "field:account.invoice.tax,tax:0"
+msgid "Tax"
+msgstr "Belasting"
+
+msgctxt "field:account.invoice.tax,tax_code:0"
+msgid "Tax Code"
+msgstr "Belastingcode"
+
+msgctxt "field:account.invoice.tax,tax_sign:0"
+msgid "Tax Sign"
+msgstr "Teken belasting"
+
+msgctxt "field:account.period,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr "Credit inkoopnota reeks"
+
+msgctxt "field:account.period,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr "Inkoopfactuurreeks"
+
+msgctxt "field:account.period,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr "Credit verkoopnota reeks"
+
+msgctxt "field:account.period,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr "Verkoopfactuur reeks"
+
+msgctxt "field:party.address,invoice:0"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "field:party.party,payment_term:0"
+msgid "Invoice Payment Term"
+msgstr "Betalingstermijn debiteur"
+
+msgctxt "field:party.party,supplier_payment_term:0"
+msgid "Supplier Payment Term"
+msgstr "Betalingstermijn crediteur"
+
+msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgid "If true, the current invoice(s) will be paid."
+msgstr "Zo ja, dan zullen deze facturen betaald worden."
+
+msgctxt "help:account.invoice.payment_term.line,percentage:0"
+msgid "In %"
+msgstr "In %"
+
+msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgid "Use to order lines in ascending order"
+msgstr "Gebruiken voor oplopend sorteren"
+
+msgctxt "model:account.invoice,name:0"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "model:account.invoice-account.move.line,name:0"
+msgid "Invoice - Payment Line"
+msgstr "Factuurbetalingen"
+
+msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgid "Credit Invoice Init"
+msgstr "Creditnota gaan aanmaken"
+
+msgctxt "model:account.invoice.line,name:0"
+msgid "Invoice Line"
+msgstr "Factuurregel"
+
+msgctxt "model:account.invoice.line-account.tax,name:0"
+msgid "Invoice Line - Tax"
+msgstr "Factuurregel - belasting"
+
+msgctxt "model:account.invoice.pay_invoice.ask,name:0"
+msgid "Pay Invoice Ask"
+msgstr "Betaal factuur vragen"
+
+msgctxt "model:account.invoice.pay_invoice.init,name:0"
+msgid "Pay Invoice Init"
+msgstr "Factuur gaan betalen"
+
+msgctxt "model:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr "Betalingstermijn"
+
+msgctxt "model:account.invoice.payment_term.line,name:0"
+msgid "Payment Term Line"
+msgstr "Betalingstermijn regel"
+
+msgctxt "model:account.invoice.payment_term.line.delay,name:0"
+msgid "Payment Term Line Delay"
+msgstr "Betalingstermijn uitstelregel"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
+msgid "End Month"
+msgstr "Einde van de maand"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
+msgid "Net Days"
+msgstr "Dagen netto"
+
+msgctxt "model:account.invoice.payment_term.line.type,name:0"
+msgid "Payment Term Line Type"
+msgstr "Betalingstermijn regeltype"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
+msgid "Fixed"
+msgstr "Vast"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
+msgid "Percentage"
+msgstr "Percentage"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
+msgid "Remainder"
+msgstr "Restant"
+
+msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgid "Print Invoice Report Warning"
+msgstr "Afdrukken waarschuwwing factuuroverzicht"
+
+msgctxt "model:account.invoice.tax,name:0"
+msgid "Invoice Tax"
+msgstr "Belasting factuur"
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr "Alle facturen"
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr "Verkoopfacturen"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Credit inkoopnota's"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Concept credit inkoopnota's"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Pro forma credit inkoopnota's"
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Openstaande credit inkoopnota's"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Inkoopfacturen"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Concept inkoopfacturen"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Pro forma inkoopfacturen"
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Openstaande inkoopfacturen"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Credit verkoopnota's"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Concept credit verkoopnota's"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Pro forma credit verkoopnota's"
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Openstaande credit inkoopnota's"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Verkoopfacturen"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Concept verkoopfacturen"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Pro forma verkoopfacturen"
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Openstaande verkoopfacturen"
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr "Betalingstermijnen"
+
+msgctxt "model:ir.action,name:credit_invoice"
+msgid "Credit"
+msgstr "Credit"
+
+msgctxt "model:ir.action,name:print_invoice_report"
+msgid "Invoice"
+msgstr "Factuur"
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgid "Pay Invoice"
+msgstr "Betaal factuur"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr "Alle facturen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr "Credit inkoopnota's"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr "Concept credit inkoopnota's"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr "Pro forma credit inkoopnota's"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr "Openstaande credit inkoopnota's"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr "Inkoopfacturen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr "Concept inkoopfacturen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr "Pro forma inkoopfacturen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr "Openstaande inkoopfacturen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr "Credit verkoopnota's"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr "Concept credit verkoopnota's"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr "Pro forma credit verkoopnota's"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr "Openstaande credit inkoopnota's"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr "Verkoopfacturen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr "Concept verkoopfacturen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr "Pro forma verkoopfacturen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr "Openstaande verkoopfacturen"
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr "Facturen"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr "Betalingstermijnen"
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr "Betalingstermijnen"
+
+msgctxt "model:workflow,name:invoice_workflow"
+msgid "Invoice workflow"
+msgstr "Procedure facturatie"
+
+msgctxt "model:workflow.activity,name:invoice_activity_cancel"
+msgid "Canceled"
+msgstr "Geannuleerd"
+
+msgctxt "model:workflow.activity,name:invoice_activity_draft"
+msgid "Draft"
+msgstr "Concept"
+
+msgctxt "model:workflow.activity,name:invoice_activity_open"
+msgid "Open"
+msgstr "Open"
+
+msgctxt "model:workflow.activity,name:invoice_activity_paid"
+msgid "Paid"
+msgstr "Betaald"
+
+msgctxt "model:workflow.activity,name:invoice_activity_proforma"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "odt:account.invoice:0"
+msgid "Amount"
+msgstr "Bedrag"
+
+msgctxt "odt:account.invoice:0"
+msgid "Base"
+msgstr "Basisbedrag"
+
+msgctxt "odt:account.invoice:0"
+msgid "Credit Note N°:"
+msgstr "Creditnotanummer:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date"
+msgstr "Vervaldatum"
+
+msgctxt "odt:account.invoice:0"
+msgid "Date:"
+msgstr "Datum:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description"
+msgstr "Specificatie"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description:"
+msgstr "Betreft:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Credit Note"
+msgstr "Concept creditnota"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Invoice"
+msgstr "Concept verkoopfactuur"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Credit Note"
+msgstr "Concept credit inkoopnota"
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Invoice"
+msgstr "Concept inkoopfactuur"
+
+msgctxt "odt:account.invoice:0"
+msgid "E-Mail:"
+msgstr "E-mail:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Invoice N°:"
+msgstr "Factuur:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Payment Term"
+msgstr "Betalingstermijn"
+
+msgctxt "odt:account.invoice:0"
+msgid "Phone:"
+msgstr "Telefoon:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Credit Note"
+msgstr "Pro forma creditnota"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Invoice"
+msgstr "Pro forma verkoopfactuur"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Credit Note"
+msgstr "Pro forma credit inkoopnota"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Invoice"
+msgstr "Pro forma factuur"
+
+msgctxt "odt:account.invoice:0"
+msgid "Quantity"
+msgstr "Hoeveelheid"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Credit Note N°:"
+msgstr "Credit inkoopnotanummer:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Invoice N°:"
+msgstr "Inkoopfactuurnummer:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Tax"
+msgstr "Belasting"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes"
+msgstr "Belastingen"
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes:"
+msgstr "Belastingen:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total (excl. taxes):"
+msgstr "Totaal (excl. belasting):"
+
+msgctxt "odt:account.invoice:0"
+msgid "Total:"
+msgstr "Totaal:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Unit Price"
+msgstr "Eenheids- prijs"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT Number:"
+msgstr "BTW-nummer:"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT:"
+msgstr "BTW:"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Canceled"
+msgstr "Geannuleerd"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Draft"
+msgstr "Concept"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Opened"
+msgstr "Geopend"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Paid"
+msgstr "Betaald"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Pro forma"
+msgstr "Pro forma"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Credit Note"
+msgstr "Credit verkoopnota"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Credit Note"
+msgstr "Credit inkoopnota"
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Invoice"
+msgstr "Inkoopfactuur"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Credit Note"
+msgstr "Credit verkoopnota"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Credit Note"
+msgstr "Credit inkoopnota"
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Invoice"
+msgstr "Inkoopfactuur"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Comment"
+msgstr "Opmerking"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Line"
+msgstr "Regel"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Subtotal"
+msgstr "Subtotaal"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Title"
+msgstr "Titel"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Partial Payment"
+msgstr "Deelbetaling"
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Write-Off"
+msgstr "Afschrijven"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Are you sure to credit those/this invoice(s)?"
+msgstr "Wilt u deze factuur/facturen echt crediteren?"
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Credit Invoice"
+msgstr "Credit verkoopfactuur"
+
+msgctxt "view:account.invoice.line:0"
+msgid "General"
+msgstr "Algemeen"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Line"
+msgstr "Factuurregel"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Lines"
+msgstr "Factuurregels"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Notes"
+msgstr "Aantekeningen"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Products"
+msgstr "Producten"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Amount Second Currency"
+msgstr "Bedrag alternatieve valuta"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Credit"
+msgstr "Credit"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Debit"
+msgstr "Debit"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Lines to Pay"
+msgstr "Te betalen boekingen"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Pay Invoice"
+msgstr "Betaal factuur"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Payment Lines"
+msgstr "Betalingen"
+
+msgctxt "view:account.invoice.pay_invoice.init:0"
+msgid "Pay Invoice"
+msgstr "Betaal factuur"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term"
+msgstr "Betalingstermijn"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Line"
+msgstr "Betalingstermijn regel"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Lines"
+msgstr "Betalingstermijn regels"
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Terms"
+msgstr "Betalingstermijnen"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "<b>Warning!</b>"
+msgstr "<b>Waarschuwing!</b>"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "Print Invoice"
+msgstr "Factuur afdrukken"
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr "De factuur wordt <i>direct</i> afgedrukt."
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "You have selected more than one invoice to print."
+msgstr "U heeft meer dan één factuur geselecteerd om af te drukken."
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Tax"
+msgstr "Belasting factuur"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Taxes"
+msgstr "Belastingen factuur"
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Tax Code"
+msgstr "Belastingcode"
+
+msgctxt "view:account.invoice:0"
+msgid "Amount Second Currency"
+msgstr "Bedrag alternatieve valuta"
+
+msgctxt "view:account.invoice:0"
+msgid "Credit"
+msgstr "Credit"
+
+msgctxt "view:account.invoice:0"
+msgid "Debit"
+msgstr "Debit"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoice"
+msgstr "Verkoopfactuur"
+
+msgctxt "view:account.invoice:0"
+msgid "Invoices"
+msgstr "Verkoopfacturen"
+
+msgctxt "view:account.invoice:0"
+msgid "Lines"
+msgstr "Regels"
+
+msgctxt "view:account.invoice:0"
+msgid "Other Info"
+msgstr "Aanvullende informatie"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment"
+msgstr "Betaling"
+
+msgctxt "view:account.invoice:0"
+msgid "Payment Lines"
+msgstr "Betalingen"
+
+msgctxt "view:account.invoice:0"
+msgid "Pro For_ma"
+msgstr "Pro For_ma"
+
+msgctxt "view:account.invoice:0"
+msgid "Taxes"
+msgstr "Belastingen"
+
+msgctxt "view:account.invoice:0"
+msgid "_Cancel"
+msgstr "_Annuleren"
+
+msgctxt "view:account.invoice:0"
+msgid "_Draft"
+msgstr "_Concept"
+
+msgctxt "view:account.invoice:0"
+msgid "_Open"
+msgstr "_Open"
+
+msgctxt "view:account.invoice:0"
+msgid "_Pay"
+msgstr "_Betalen"
+
+msgctxt "view:account.invoice:0"
+msgid "_Reset to Draft"
+msgstr "_Terug naar concept"
+
+msgctxt "view:party.party:0"
+msgid "Payment Terms"
+msgstr "Betalingstermijnen"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgid "Credit"
+msgstr "Credit"
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgid "Ok"
+msgstr "Oké"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgid "Ok"
+msgstr "Oké"
+
+msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgid "Print"
+msgstr "Afdrukken"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
new file mode 100644
index 0000000..262bee2
--- /dev/null
+++ b/locale/ru_RU.po
@@ -0,0 +1,1431 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:account.fiscalyear:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the fiscalyear"
+msgstr ""
+
+msgctxt "error:account.fiscalyear:0"
+msgid "You must have different invoice sequences per fiscal year!"
+msgstr ""
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice that is not opened!"
+msgstr ""
+
+msgctxt "error:account.invoice.credit_invoice:0"
+msgid "You can not credit with refund an invoice with payments!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line with \"line\" type must have an account!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid "Line without \"line\" type must have an invoice!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not create invoice line\n"
+"with account with a different invoice company!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid "You can not modify line from an invoice that is opened, paid!"
+msgstr ""
+
+msgctxt "error:account.invoice.line:0"
+msgid ""
+"You can not use the same account\n"
+"as on the invoice!"
+msgstr ""
+
+msgctxt "error:account.invoice.pay_invoice:0"
+msgid ""
+"You can not create a partial payment with an amount greater then the amount "
+"to pay!"
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term.line.delay:0"
+msgid "The code must be unique!"
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term.line.type:0"
+msgid "The code must be unique!"
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Invalid payment term line!"
+msgstr ""
+
+msgctxt "error:account.invoice.payment_term:0"
+msgid "Payment term missing a remainder line!"
+msgstr ""
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not add a line to an invoice that is open, paid or canceled!"
+msgstr ""
+
+msgctxt "error:account.invoice.tax:0"
+msgid "You can not modify tax from an invoice that is opened, paid!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Base taxes different from invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined but not on invoice lines!\n"
+"Re-compute the invoice."
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"Taxes defined on invoice lines but not on invoice!\n"
+"Re-compute the invoice."
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is missing!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "The credit account on journal is the same than the invoice account!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is missing!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "The debit account on journal is the same than the invoice account!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "There is no invoice sequence on the period/fiscal year!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not create an invoice\n"
+"with account from a different invoice company!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "You can not modify an invoice that is opened, paid!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid "You can not reset to draft an invoice that has move!"
+msgstr ""
+
+msgctxt "error:account.invoice:0"
+msgid ""
+"You can not use the same account\n"
+"as on invoice line!"
+msgstr ""
+
+msgctxt "error:account.period:0"
+msgid ""
+"You can not change the invoice sequence if there is already an invoice "
+"opened in the period"
+msgstr ""
+
+msgctxt "error:account.period:0"
+msgid ""
+"You must have different invoice sequences per fiscal year and in the same "
+"company!"
+msgstr ""
+
+msgctxt "field:account.fiscalyear,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr ""
+
+msgctxt "field:account.fiscalyear,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr ""
+
+msgctxt "field:account.fiscalyear,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr ""
+
+msgctxt "field:account.fiscalyear,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr ""
+
+msgctxt "field:account.invoice,account:0"
+msgid "Account"
+msgstr ""
+
+msgctxt "field:account.invoice,accounting_date:0"
+msgid "Accounting Date"
+msgstr ""
+
+msgctxt "field:account.invoice,amount_to_pay:0"
+msgid "Amount to Pay"
+msgstr ""
+
+msgctxt "field:account.invoice,amount_to_pay_today:0"
+msgid "Amount to Pay Today"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,comment:0"
+msgid "Comment"
+msgstr "Комментарии"
+
+#, fuzzy
+msgctxt "field:account.invoice,company:0"
+msgid "Company"
+msgstr "Учет.орг."
+
+#, fuzzy
+msgctxt "field:account.invoice,currency:0"
+msgid "Currency"
+msgstr "Валюты"
+
+msgctxt "field:account.invoice,currency_date:0"
+msgid "Currency Date"
+msgstr ""
+
+msgctxt "field:account.invoice,currency_digits:0"
+msgid "Currency Digits"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice,invoice_address:0"
+msgid "Invoice Address"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_date:0"
+msgid "Invoice Date"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_report_cache:0"
+msgid "Invoice Report"
+msgstr ""
+
+msgctxt "field:account.invoice,invoice_report_format:0"
+msgid "Invoice Report Format"
+msgstr ""
+
+msgctxt "field:account.invoice,journal:0"
+msgid "Journal"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,lines:0"
+msgid "Lines"
+msgstr "Строки"
+
+msgctxt "field:account.invoice,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,move:0"
+msgid "Move"
+msgstr "Перемещение"
+
+msgctxt "field:account.invoice,number:0"
+msgid "Number"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,party:0"
+msgid "Party"
+msgstr "Организации"
+
+msgctxt "field:account.invoice,party_lang:0"
+msgid "Party Language"
+msgstr ""
+
+msgctxt "field:account.invoice,payment_lines:0"
+msgid "Payment Lines"
+msgstr ""
+
+msgctxt "field:account.invoice,payment_term:0"
+msgid "Payment Term"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:account.invoice,reconciled:0"
+msgid "Reconciled"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,reference:0"
+msgid "Reference"
+msgstr "Ссылка"
+
+#, fuzzy
+msgctxt "field:account.invoice,state:0"
+msgid "State"
+msgstr "Статус"
+
+msgctxt "field:account.invoice,tax_amount:0"
+msgid "Tax"
+msgstr ""
+
+msgctxt "field:account.invoice,taxes:0"
+msgid "Tax Lines"
+msgstr ""
+
+msgctxt "field:account.invoice,total_amount:0"
+msgid "Total"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice,type:0"
+msgid "Type"
+msgstr "Тип"
+
+#, fuzzy
+msgctxt "field:account.invoice,type_name:0"
+msgid "Type"
+msgstr "Тип"
+
+msgctxt "field:account.invoice,untaxed_amount:0"
+msgid "Untaxed"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:account.invoice-account.move.line,line:0"
+msgid "Payment Line"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice-account.move.line,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:account.invoice.credit_invoice.init,with_refund:0"
+msgid "With Refund"
+msgstr ""
+
+msgctxt "field:account.invoice.line,account:0"
+msgid "Account"
+msgstr ""
+
+msgctxt "field:account.invoice.line,amount:0"
+msgid "Amount"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line,company:0"
+msgid "Company"
+msgstr "Учет.орг."
+
+#, fuzzy
+msgctxt "field:account.invoice.line,currency:0"
+msgid "Currency"
+msgstr "Валюты"
+
+msgctxt "field:account.invoice.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice.line,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice_taxes:0"
+msgid "Invoice Taxes"
+msgstr ""
+
+msgctxt "field:account.invoice.line,invoice_type:0"
+msgid "Invoice Type"
+msgstr ""
+
+msgctxt "field:account.invoice.line,note:0"
+msgid "Note"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line,party:0"
+msgid "Party"
+msgstr "Организации"
+
+msgctxt "field:account.invoice.line,party_lang:0"
+msgid "Party Language"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line,product:0"
+msgid "Product"
+msgstr "Товарно материальные ценности (ТМЦ)"
+
+#, fuzzy
+msgctxt "field:account.invoice.line,quantity:0"
+msgid "Quantity"
+msgstr "Кол-во"
+
+#, fuzzy
+msgctxt "field:account.invoice.line,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:account.invoice.line,sequence:0"
+msgid "Sequence"
+msgstr "Последовательность"
+
+msgctxt "field:account.invoice.line,taxes:0"
+msgid "Taxes"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line,type:0"
+msgid "Type"
+msgstr "Тип"
+
+#, fuzzy
+msgctxt "field:account.invoice.line,unit:0"
+msgid "Unit"
+msgstr "Штука"
+
+#, fuzzy
+msgctxt "field:account.invoice.line,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Группа цифр"
+
+#, fuzzy
+msgctxt "field:account.invoice.line,unit_price:0"
+msgid "Unit Price"
+msgstr "Цена за единицу"
+
+msgctxt "field:account.invoice.line-account.tax,line:0"
+msgid "Invoice Line"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.line-account.tax,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:account.invoice.line-account.tax,tax:0"
+msgid "Tax"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,account:0"
+msgid "Account"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,account_writeoff:0"
+msgid "Write-Off Account"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount:0"
+msgid "Payment Amount"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,amount_writeoff:0"
+msgid "Write-Off Amount"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay_invoice.ask,company:0"
+msgid "Company"
+msgstr "Учет.орг."
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency:0"
+msgid "Payment Currency"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits:0"
+msgid "Payment Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_digits_writeoff:0"
+msgid "Write-Off Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,currency_writeoff:0"
+msgid "Write-Off Currency"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay_invoice.ask,date:0"
+msgid "Date"
+msgstr "Дата"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay_invoice.ask,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice.pay_invoice.ask,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal:0"
+msgid "Journal"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,journal_writeoff:0"
+msgid "Write-Off Journal"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay_invoice.ask,lines:0"
+msgid "Lines"
+msgstr "Строки"
+
+msgctxt "field:account.invoice.pay_invoice.ask,lines_to_pay:0"
+msgid "Lines to Pay"
+msgstr ""
+
+msgctxt "field:account.invoice.pay_invoice.ask,payment_lines:0"
+msgid "Payment Lines"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay_invoice.ask,type:0"
+msgid "Type"
+msgstr "Тип"
+
+msgctxt "field:account.invoice.pay_invoice.init,amount:0"
+msgid "Amount"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay_invoice.init,currency:0"
+msgid "Currency"
+msgstr "Валюты"
+
+msgctxt "field:account.invoice.pay_invoice.init,currency_digits:0"
+msgid "Currency Digits"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.pay_invoice.init,date:0"
+msgid "Date"
+msgstr "Дата"
+
+#, fuzzy
+msgctxt "field:account.invoice.pay_invoice.init,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice.pay_invoice.init,journal:0"
+msgid "Journal"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term,active:0"
+msgid "Active"
+msgstr "Действительный"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term,description:0"
+msgid "Description"
+msgstr "Описание"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term,lines:0"
+msgid "Lines"
+msgstr "Строки"
+
+msgctxt "field:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:account.invoice.payment_term.line,amount:0"
+msgid "Amount"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,currency:0"
+msgid "Currency"
+msgstr "Валюты"
+
+msgctxt "field:account.invoice.payment_term.line,currency_digits:0"
+msgid "Currency Digits"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,days:0"
+msgid "Number of Days"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,delay:0"
+msgid "Condition"
+msgstr "Состояние"
+
+msgctxt "field:account.invoice.payment_term.line,payment:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "field:account.invoice.payment_term.line,percentage:0"
+msgid "Percentage"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,sequence:0"
+msgid "Sequence"
+msgstr "Последовательность"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line,type:0"
+msgid "Type"
+msgstr "Тип"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line.delay,code:0"
+msgid "Code"
+msgstr "Код страны"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line.delay,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line.delay,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line.type,code:0"
+msgid "Code"
+msgstr "Код страны"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line.type,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:account.invoice.payment_term.line.type,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:account.invoice.tax,account:0"
+msgid "Account"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,amount:0"
+msgid "Amount"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,base:0"
+msgid "Base"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,base_code:0"
+msgid "Base Code"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,base_sign:0"
+msgid "Base Sign"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.tax,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:account.invoice.tax,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,manual:0"
+msgid "Manual"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.invoice.tax,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:account.invoice.tax,sequence:0"
+msgid "Sequence"
+msgstr "Последовательность"
+
+msgctxt "field:account.invoice.tax,sequence_number:0"
+msgid "Sequence Number"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,tax:0"
+msgid "Tax"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,tax_code:0"
+msgid "Tax Code"
+msgstr ""
+
+msgctxt "field:account.invoice.tax,tax_sign:0"
+msgid "Tax Sign"
+msgstr ""
+
+msgctxt "field:account.period,in_credit_note_sequence:0"
+msgid "Supplier Credit Note Sequence"
+msgstr ""
+
+msgctxt "field:account.period,in_invoice_sequence:0"
+msgid "Supplier Invoice Sequence"
+msgstr ""
+
+msgctxt "field:account.period,out_credit_note_sequence:0"
+msgid "Customer Credit Note Sequence"
+msgstr ""
+
+msgctxt "field:account.period,out_invoice_sequence:0"
+msgid "Customer Invoice Sequence"
+msgstr ""
+
+msgctxt "field:party.address,invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "field:party.party,payment_term:0"
+msgid "Invoice Payment Term"
+msgstr ""
+
+msgctxt "field:party.party,supplier_payment_term:0"
+msgid "Supplier Payment Term"
+msgstr ""
+
+msgctxt "help:account.invoice.credit_invoice.init,with_refund:0"
+msgid "If true, the current invoice(s) will be paid."
+msgstr ""
+
+msgctxt "help:account.invoice.payment_term.line,percentage:0"
+msgid "In %"
+msgstr ""
+
+msgctxt "help:account.invoice.payment_term.line,sequence:0"
+msgid "Use to order lines in ascending order"
+msgstr ""
+
+msgctxt "model:account.invoice,name:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "model:account.invoice-account.move.line,name:0"
+msgid "Invoice - Payment Line"
+msgstr ""
+
+msgctxt "model:account.invoice.credit_invoice.init,name:0"
+msgid "Credit Invoice Init"
+msgstr ""
+
+msgctxt "model:account.invoice.line,name:0"
+msgid "Invoice Line"
+msgstr ""
+
+msgctxt "model:account.invoice.line-account.tax,name:0"
+msgid "Invoice Line - Tax"
+msgstr ""
+
+msgctxt "model:account.invoice.pay_invoice.ask,name:0"
+msgid "Pay Invoice Ask"
+msgstr ""
+
+msgctxt "model:account.invoice.pay_invoice.init,name:0"
+msgid "Pay Invoice Init"
+msgstr ""
+
+msgctxt "model:account.invoice.payment_term,name:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "model:account.invoice.payment_term.line,name:0"
+msgid "Payment Term Line"
+msgstr ""
+
+msgctxt "model:account.invoice.payment_term.line.delay,name:0"
+msgid "Payment Term Line Delay"
+msgstr ""
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_end_month"
+msgid "End Month"
+msgstr ""
+
+msgctxt ""
+"model:account.invoice.payment_term.line.delay,name:payment_term_line_delay_net_days"
+msgid "Net Days"
+msgstr ""
+
+msgctxt "model:account.invoice.payment_term.line.type,name:0"
+msgid "Payment Term Line Type"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_fixed"
+msgid "Fixed"
+msgstr "Фиксированная"
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_percent"
+msgid "Percentage"
+msgstr ""
+
+msgctxt ""
+"model:account.invoice.payment_term.line.type,name:payment_term_line_type_remainder"
+msgid "Remainder"
+msgstr ""
+
+msgctxt "model:account.invoice.print_invoice_report.warning,name:0"
+msgid "Print Invoice Report Warning"
+msgstr ""
+
+msgctxt "model:account.invoice.tax,name:0"
+msgid "Invoice Tax"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_form"
+msgid "All Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_form2"
+msgid "Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_payment_term_form"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "model:ir.action,name:credit_invoice"
+msgid "Credit"
+msgstr ""
+
+msgctxt "model:ir.action,name:print_invoice_report"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "model:ir.action,name:report_invoice"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "model:ir.action,name:wizard_pay_invoice"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "model:ir.sequence.type,name:sequence_type_account_invoice"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_form"
+msgid "All Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form"
+msgid "Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form3"
+msgid "Draft Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form4"
+msgid "Pro Forma Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_credit_note_form5"
+msgid "Opened Supplier Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form"
+msgid "Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form3"
+msgid "Draft Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form4"
+msgid "Pro Forma Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_in_invoice_form5"
+msgid "Opened Supplier Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form"
+msgid "Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form3"
+msgid "Draft Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form4"
+msgid "Pro Forma Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_credit_note_form5"
+msgid "Opened Credit Notes"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form"
+msgid "Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form3"
+msgid "Draft Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form4"
+msgid "Pro Forma Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoice_out_invoice_form5"
+msgid "Opened Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_invoices"
+msgid "Invoices"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_payment_term_form"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_payment_terms_configuration"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "model:workflow,name:invoice_workflow"
+msgid "Invoice workflow"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:workflow.activity,name:invoice_activity_cancel"
+msgid "Canceled"
+msgstr "Отменено"
+
+#, fuzzy
+msgctxt "model:workflow.activity,name:invoice_activity_draft"
+msgid "Draft"
+msgstr "Черновик"
+
+#, fuzzy
+msgctxt "model:workflow.activity,name:invoice_activity_open"
+msgid "Open"
+msgstr "Открыть"
+
+msgctxt "model:workflow.activity,name:invoice_activity_paid"
+msgid "Paid"
+msgstr ""
+
+msgctxt "model:workflow.activity,name:invoice_activity_proforma"
+msgid "Pro forma"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Amount"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Base"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Credit Note N°:"
+msgstr ""
+
+#, fuzzy
+msgctxt "odt:account.invoice:0"
+msgid "Date"
+msgstr "Дата"
+
+#, fuzzy
+msgctxt "odt:account.invoice:0"
+msgid "Date:"
+msgstr "Дата:"
+
+#, fuzzy
+msgctxt "odt:account.invoice:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "odt:account.invoice:0"
+msgid "Description:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Invoice"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Draft Supplier Invoice"
+msgstr ""
+
+#, fuzzy
+msgctxt "odt:account.invoice:0"
+msgid "E-Mail:"
+msgstr "E-Mail:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Invoice N°:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Payment Term"
+msgstr ""
+
+#, fuzzy
+msgctxt "odt:account.invoice:0"
+msgid "Phone:"
+msgstr "Телефон:"
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Invoice"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Credit Note"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Pro forma Supplier Invoice"
+msgstr ""
+
+#, fuzzy
+msgctxt "odt:account.invoice:0"
+msgid "Quantity"
+msgstr "Кол-во"
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Credit Note N°:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Supplier Invoice N°:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Tax"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Taxes:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Total (excl. taxes):"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "Total:"
+msgstr ""
+
+#, fuzzy
+msgctxt "odt:account.invoice:0"
+msgid "Unit Price"
+msgstr "Цена за единицу"
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT Number:"
+msgstr ""
+
+msgctxt "odt:account.invoice:0"
+msgid "VAT:"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice,state:0"
+msgid "Canceled"
+msgstr "Отменено"
+
+#, fuzzy
+msgctxt "selection:account.invoice,state:0"
+msgid "Draft"
+msgstr "Черновик"
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Opened"
+msgstr ""
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Paid"
+msgstr ""
+
+msgctxt "selection:account.invoice,state:0"
+msgid "Pro forma"
+msgstr ""
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Credit Note"
+msgstr ""
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Credit Note"
+msgstr ""
+
+msgctxt "selection:account.invoice,type:0"
+msgid "Supplier Invoice"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Credit Note"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Credit Note"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,invoice_type:0"
+msgid "Supplier Invoice"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Comment"
+msgstr "Комментарии"
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Line"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Subtotal"
+msgstr ""
+
+msgctxt "selection:account.invoice.line,type:0"
+msgid "Title"
+msgstr ""
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Partial Payment"
+msgstr ""
+
+msgctxt "selection:account.invoice.pay_invoice.ask,type:0"
+msgid "Write-Off"
+msgstr ""
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Are you sure to credit those/this invoice(s)?"
+msgstr ""
+
+msgctxt "view:account.invoice.credit_invoice.init:0"
+msgid "Credit Invoice"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:account.invoice.line:0"
+msgid "General"
+msgstr "Основной"
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Line"
+msgstr ""
+
+msgctxt "view:account.invoice.line:0"
+msgid "Invoice Lines"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:account.invoice.line:0"
+msgid "Notes"
+msgstr "Комментарии"
+
+#, fuzzy
+msgctxt "view:account.invoice.line:0"
+msgid "Products"
+msgstr "ТМЦ"
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Amount Second Currency"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Credit"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Debit"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Lines to Pay"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.ask:0"
+msgid "Payment Lines"
+msgstr ""
+
+msgctxt "view:account.invoice.pay_invoice.init:0"
+msgid "Pay Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Line"
+msgstr ""
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Term Lines"
+msgstr ""
+
+msgctxt "view:account.invoice.payment_term:0"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "Print Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "The invoices will be sent <i>directly</i> to the printer."
+msgstr ""
+
+msgctxt "view:account.invoice.print_invoice_report.warning:0"
+msgid "You have selected more than one invoice to print."
+msgstr ""
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Tax"
+msgstr ""
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Invoice Taxes"
+msgstr ""
+
+msgctxt "view:account.invoice.tax:0"
+msgid "Tax Code"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Amount Second Currency"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Credit"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Debit"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Invoice"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Invoices"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:account.invoice:0"
+msgid "Lines"
+msgstr "Строки"
+
+msgctxt "view:account.invoice:0"
+msgid "Other Info"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Payment"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Payment Lines"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Pro For_ma"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "Taxes"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Cancel"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Draft"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Open"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Pay"
+msgstr ""
+
+msgctxt "view:account.invoice:0"
+msgid "_Reset to Draft"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "Payment Terms"
+msgstr ""
+
+msgctxt "wizard_button:account.invoice.credit_invoice,init,credit:0"
+msgid "Credit"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.credit_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay_invoice,ask,pay:0"
+msgid "Ok"
+msgstr "Ок"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay_invoice,init,choice:0"
+msgid "Ok"
+msgstr "Ок"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.pay_invoice,init,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+#, fuzzy
+msgctxt "wizard_button:account.invoice.print_invoice_report,warning,print:0"
+msgid "Print"
+msgstr "Печать"
diff --git a/nl_NL.csv b/nl_NL.csv
deleted file mode 100644
index 85e232c..0000000
--- a/nl_NL.csv
+++ /dev/null
@@ -1,356 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,U kunt de factuurreeks niet meer aanpassen als er in dit boekjaar al een factuur is geboekt.,0
-error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,U moet per boekjaar verschillende factuurreeksen hebben!,0
-error,account.invoice,0,"Base taxes different from invoice lines!
-Re-compute the invoice.","Standaard belasting wijkt af van factuurregels!
-Herbereken de factuur.",0
-error,account.invoice,0,"Taxes defined but not on invoice lines!
-Re-compute the invoice.","Belasting gedefinieerd maar niet op deze factuurregels!
-Herbereken de factuur.",0
-error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
-Re-compute the invoice.","Belasting gedefinieerd op factuurregels, maar niet op de factuur!
-Herbereken de factuur.",0
-error,account.invoice,0,The credit account on journal is missing!,De credit boeking ontbreekt!,0
-error,account.invoice,0,The credit account on journal is the same than the invoice account!,De credit rekening in het dagboek is dezelfde als de factuur rekening.,0
-error,account.invoice,0,The debit account on journal is missing!,De debit boeking ontbreekt!,0
-error,account.invoice,0,The debit account on journal is the same than the invoice account!,De debit rekening in het dagboek is dezelfde als de factuur rekening.,0
-error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Er is geen factuurreeks voor deze periode / dit boekjaar!,0
-error,account.invoice,0,"You can not create an invoice
-with account from a different invoice company!","U kunt geen factuur aanmaken
-op een rekening van een ander bedrijf!",0
-error,account.invoice,0,"You can not modify an invoice that is opened, paid!",U kunt een openstaande of betaalde factuur niet wijzigen!,0
-error,account.invoice,0,You can not reset to draft an invoice that has move!,Een geboekte factuur kunt u niet terugzetten naar concept!,0
-error,account.invoice,0,"You can not use the same account
-as on invoice line!","U kunt niet dezelfde rekening gebruiken
-als op de factuurregel!",0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Alleen een openstaande factuur kunt u crediteren met terugbetaling!,0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,Een (gedeeltelijk) betaalde factuur kunt u niet crediteren met terugbetaling!,0
-error,account.invoice.line,0,"Line with ""line"" type must have an account!","Regel met ""regel"" type moet een rekening hebben!",0
-error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","Een regel zonder ""regel"" moet een factuur hebben!",0
-error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde factuur!",0
-error,account.invoice.line,0,"You can not create invoice line
-with account with a different invoice company!","U kunt geen factuurregel aanmaken
-op een rekening van een ander bedrijf!",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",U kunt geen regel aanpassen van een openstraande of betaalde factuur!,0
-error,account.invoice.line,0,"You can not use the same account
-as on the invoice!","U kunt niet dezelfde rekening 
-gebruiken als op de factuur!",0
-error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,U kunt geen gedeeltelijke betaling boeken die groter is dan het te betalen bedrag!,0
-error,account.invoice.payment_term,0,Invalid payment term line!,Ongeldige betalingstermijn!,0
-error,account.invoice.payment_term,0,Payment term missing a remainder line!,De betalingstermijn mist een restantregel!,0
-error,account.invoice.payment_term.line.delay,0,The code must be unique!,De code moet uniek zijn!,0
-error,account.invoice.payment_term.line.type,0,The code must be unique!,De code moet uniek zijn!,0
-error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde factuur!",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",U kunt de belasting niet aanpassen van een openstaande of betaalde factuur!,0
-error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,U kunt niet de factuurreeks aanpassen als er al een factuur in deze periode is geboekt,0
-error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,U moet per boekjaar verschillende factuurreeksen hebben binnen hetzelfde bedrijf!,0
-field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Credit inkoopnota reeks,0
-field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Inkoopfactuurreeks,0
-field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Credit verkoopnota reeks,0
-field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Verkoopfactuur reeks,0
-field,"account.invoice,account",0,Account,Rekening,0
-field,"account.invoice,accounting_date",0,Accounting Date,Boekingsdatum,0
-field,"account.invoice,amount_to_pay",0,Amount to Pay,Te betalen bedrag,0
-field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Vandaag te betalen bedrag,0
-field,"account.invoice,comment",0,Comment,Opmerking,0
-field,"account.invoice,company",0,Company,Bedrijf,0
-field,"account.invoice,currency",0,Currency,Valuta,0
-field,"account.invoice,currency_digits",0,Currency Digits,Valuta decimalen,0
-field,"account.invoice,description",0,Description,Omschrijving,0
-field,"account.invoice,invoice_address",0,Invoice Address,Factuuradres,0
-field,"account.invoice,invoice_date",0,Invoice Date,Factuurdatum,0
-field,"account.invoice,invoice_report",0,Invoice Report,Factuuroverzicht,0
-field,"account.invoice,invoice_report_format",0,Invoice Report Format,Opmaak factuuroverzicht,0
-field,"account.invoice,journal",0,Journal,Dagboek,0
-field,"account.invoice,lines",0,Lines,Regels,0
-field,"account.invoice,lines_to_pay",0,Lines to Pay,Te betalen boekingen,0
-field,"account.invoice,move",0,Move,Boeking,0
-field,"account.invoice,number",0,Number,Nummer,0
-field,"account.invoice,party",0,Party,Relatie,0
-field,"account.invoice,party_lang",0,Party Language,Taal relatie,0
-field,"account.invoice,payment_lines",0,Payment Lines,Betalingen,0
-field,"account.invoice,payment_term",0,Payment Term,Betalingstermijn,0
-field,"account.invoice,rec_name",0,Name,Naam,0
-field,"account.invoice,reconciled",0,Reconciled,Afgeletterd,0
-field,"account.invoice,reference",0,Reference,Referentie,0
-field,"account.invoice,state",0,State,Status,0
-field,"account.invoice,tax_amount",0,Tax,Belasting,0
-field,"account.invoice,taxes",0,Tax Lines,Belastingregels,0
-field,"account.invoice,total_amount",0,Total,Totaal,0
-field,"account.invoice,type",0,Type,Type,0
-field,"account.invoice,type_name",0,Type,Type,0
-field,"account.invoice,untaxed_amount",0,Untaxed,Onbelast,0
-field,"account.invoice-account.move.line,invoice",0,Invoice,Verkoopfactuur,0
-field,"account.invoice-account.move.line,line",0,Payment Line,Betalingen,0
-field,"account.invoice-account.move.line,rec_name",0,Name,Naam,0
-field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Met restitutie,0
-field,"account.invoice.line,account",0,Account,Rekening,0
-field,"account.invoice.line,amount",0,Amount,Bedrag,0
-field,"account.invoice.line,company",0,Company,Bedrijf,0
-field,"account.invoice.line,currency",0,Currency,Valuta,0
-field,"account.invoice.line,currency_digits",0,Currency Digits,Valuta decimalen,0
-field,"account.invoice.line,description",0,Description,Omschrijving,0
-field,"account.invoice.line,invoice",0,Invoice,Verkoopfactuur,0
-field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Belastingen factuur,0
-field,"account.invoice.line,invoice_type",0,Invoice Type,Factuurtype,0
-field,"account.invoice.line,note",0,Note,Aantekening,0
-field,"account.invoice.line,party",0,Party,Relatie,0
-field,"account.invoice.line,party_lang",0,Party Language,Taal relatie,0
-field,"account.invoice.line,product",0,Product,Product,0
-field,"account.invoice.line,quantity",0,Quantity,Hoeveelheid,0
-field,"account.invoice.line,rec_name",0,Name,Naam,0
-field,"account.invoice.line,sequence",0,Sequence,Reeks,0
-field,"account.invoice.line,taxes",0,Taxes,Belastingen,0
-field,"account.invoice.line,type",0,Type,Type,0
-field,"account.invoice.line,unit",0,Unit,Eenheid,0
-field,"account.invoice.line,unit_digits",0,Unit Digits,Decimalen eenheid,0
-field,"account.invoice.line,unit_price",0,Unit Price,Eenheidsprijs,0
-field,"account.invoice.line-account.tax,line",0,Invoice Line,Factuurregel,0
-field,"account.invoice.line-account.tax,rec_name",0,Name,Naam,0
-field,"account.invoice.line-account.tax,tax",0,Tax,Belasting,0
-field,"account.invoice.pay_invoice.ask,account",0,Account,Rekening,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Rekening afschrijving,0
-field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Bedrag betaling,0
-field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Rekening afschrijving,0
-field,"account.invoice.pay_invoice.ask,company",0,Company,Bedrijf,0
-field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Valuta betaling,0
-field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Decimalen valuta betaling,0
-field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Decimalen valuta afschrijving,0
-field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Valuta afschrijving,0
-field,"account.invoice.pay_invoice.ask,date",0,Date,Datum,0
-field,"account.invoice.pay_invoice.ask,description",0,Description,Omschrijving,0
-field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Verkoopfactuur,0
-field,"account.invoice.pay_invoice.ask,journal",0,Journal,Dagboek,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Dagboek afschrijving,0
-field,"account.invoice.pay_invoice.ask,lines",0,Lines,Regels,0
-field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Te betalen boekingen,0
-field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Betalingen,0
-field,"account.invoice.pay_invoice.ask,type",0,Type,Type,0
-field,"account.invoice.pay_invoice.init,amount",0,Amount,Bedrag,0
-field,"account.invoice.pay_invoice.init,currency",0,Currency,Valuta,0
-field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Valuta decimalen,0
-field,"account.invoice.pay_invoice.init,date",0,Date,Datum,0
-field,"account.invoice.pay_invoice.init,description",0,Description,Omschrijving,0
-field,"account.invoice.pay_invoice.init,journal",0,Journal,Dagboek,0
-field,"account.invoice.payment_term,active",0,Active,Actief,0
-field,"account.invoice.payment_term,description",0,Description,Omschrijving,0
-field,"account.invoice.payment_term,lines",0,Lines,Regels,0
-field,"account.invoice.payment_term,name",0,Payment Term,Betalingstermijn,0
-field,"account.invoice.payment_term,rec_name",0,Name,Naam,0
-field,"account.invoice.payment_term.line,amount",0,Amount,Bedrag,0
-field,"account.invoice.payment_term.line,currency",0,Currency,Valuta,0
-field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Valuta decimalen,0
-field,"account.invoice.payment_term.line,days",0,Number of Days,Aantal dagen,0
-field,"account.invoice.payment_term.line,delay",0,Condition,Voorwaarde,0
-field,"account.invoice.payment_term.line,payment",0,Payment Term,Betalingstermijn,0
-field,"account.invoice.payment_term.line,percentage",0,Percentage,Percentage,0
-field,"account.invoice.payment_term.line,rec_name",0,Name,Naam,0
-field,"account.invoice.payment_term.line,sequence",0,Sequence,Reeks,0
-field,"account.invoice.payment_term.line,type",0,Type,Type,0
-field,"account.invoice.payment_term.line.delay,code",0,Code,Code,0
-field,"account.invoice.payment_term.line.delay,name",0,Name,Naam,0
-field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Naam,0
-field,"account.invoice.payment_term.line.type,code",0,Code,Code,0
-field,"account.invoice.payment_term.line.type,name",0,Name,Naam,0
-field,"account.invoice.payment_term.line.type,rec_name",0,Name,Naam,0
-field,"account.invoice.tax,account",0,Account,Rekening,0
-field,"account.invoice.tax,amount",0,Amount,Bedrag,0
-field,"account.invoice.tax,base",0,Base,Basis,0
-field,"account.invoice.tax,base_code",0,Base Code,Basiscode,0
-field,"account.invoice.tax,base_sign",0,Base Sign,Basisteken,0
-field,"account.invoice.tax,description",0,Description,Omschrijving,0
-field,"account.invoice.tax,invoice",0,Invoice,Verkoopfactuur,0
-field,"account.invoice.tax,manual",0,Manual,Handmatig,0
-field,"account.invoice.tax,rec_name",0,Name,Naam,0
-field,"account.invoice.tax,sequence",0,Sequence,Reeks,0
-field,"account.invoice.tax,sequence_number",0,Sequence Number,Reeksnummer,0
-field,"account.invoice.tax,tax",0,Tax,Belasting,0
-field,"account.invoice.tax,tax_code",0,Tax Code,Belastingcode,0
-field,"account.invoice.tax,tax_sign",0,Tax Sign,Teken belasting,0
-field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Credit inkoopnota reeks,0
-field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Inkoopfactuurreeks,0
-field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Credit verkoopnota reeks,0
-field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Verkoopfactuur reeks,0
-field,"party.address,invoice",0,Invoice,Verkoopfactuur,0
-field,"party.party,payment_term",0,Invoice Payment Term,Betalingstermijn debiteur,0
-field,"party.party,supplier_payment_term",0,Supplier Payment Term,Betalingstermijn crediteur,0
-help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Zo ja, dan zullen deze facturen betaald worden.",0
-help,"account.invoice.payment_term.line,percentage",0,In %,In %,0
-help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Gebruiken voor oplopend sorteren,0
-model,"account.invoice,name",0,Invoice,Verkoopfactuur,0
-model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Factuurbetalingen,0
-model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Creditnota gaan aanmaken,0
-model,"account.invoice.line,name",0,Invoice Line,Factuurregel,0
-model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Factuurregel - belasting,0
-model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Betaal factuur vragen,0
-model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Factuur gaan betalen,0
-model,"account.invoice.payment_term,name",0,Payment Term,Betalingstermijn,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Betalingstermijn regel,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Betalingstermijn uitstelregel,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Einde van de maand,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Dagen netto,0
-model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Betalingstermijn regeltype,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Vast,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Percentage,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Restant,0
-model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Afdrukken waarschuwwing factuuroverzicht,0
-model,"account.invoice.tax,name",0,Invoice Tax,Belasting factuur,0
-model,"ir.action,name",act_invoice_form,All Invoices,Alle facturen,0
-model,"ir.action,name",act_invoice_form2,Invoices,Verkoopfacturen,0
-model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Credit inkoopnota's,0
-model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Credit inkoopnota's,0
-model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Concept credit inkoopnota's,0
-model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro forma credit inkoopnota's,0
-model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Openstaande credit inkoopnota's,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Inkoopfacturen,0
-model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Inkoopfacturen,0
-model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Concept inkoopfacturen,0
-model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro forma inkoopfacturen,0
-model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Openstaande inkoopfacturen,0
-model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Credit verkoopnota's,0
-model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Credit verkoopnota's,0
-model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Concept credit verkoopnota's,0
-model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro forma credit verkoopnota's,0
-model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Openstaande credit inkoopnota's,0
-model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Verkoopfacturen,0
-model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Verkoopfacturen,0
-model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Concept verkoopfacturen,0
-model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Pro forma verkoopfacturen,0
-model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Openstaande verkoopfacturen,0
-model,"ir.action,name",act_payment_term_form,Payment Terms,Betalingstermijnen,0
-model,"ir.action,name",act_payment_term_form2,Payment Terms,Betalingstermijnen,0
-model,"ir.action,name",credit_invoice,Credit,Credit,0
-model,"ir.action,name",print_invoice_report,Invoice,Factuur,0
-model,"ir.action,name",report_invoice,Invoice,Verkoopfactuur,0
-model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Betaal factuur,0
-model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Verkoopfactuur,0
-model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Alle facturen,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Credit inkoopnota's,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nieuwe credit inkoopnota,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Concept credit inkoopnota's,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro forma credit inkoopnota's,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Openstaande credit inkoopnota's,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Inkoopfacturen,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Nieuwe inkoopfactuur,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Concept inkoopfacturen,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro forma inkoopfacturen,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Openstaande inkoopfacturen,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Credit verkoopnota's,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nieuwe credit verkoopnota,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Concept credit verkoopnota's,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro forma credit verkoopnota's,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Openstaande credit inkoopnota's,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Verkoopfacturen,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nieuwe verkoopfactuur,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Concept verkoopfacturen,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Pro forma verkoopfacturen,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Openstaande verkoopfacturen,0
-model,"ir.ui.menu,name",menu_invoices,Invoices,Facturen,0
-model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Betalingstermijnen,0
-model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Nieuwe betalingstermijn,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Betalingstermijnen,0
-model,"workflow,name",invoice_workflow,Invoice workflow,Procedure facturatie,0
-model,"workflow.activity,name",invoice_activity_cancel,Canceled,Geannuleerd,0
-model,"workflow.activity,name",invoice_activity_draft,Draft,Concept,0
-model,"workflow.activity,name",invoice_activity_open,Open,Open,0
-model,"workflow.activity,name",invoice_activity_paid,Paid,Betaald,0
-model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
-odt,account.invoice,0,Amount,Bedrag,0
-odt,account.invoice,0,Base,Basisbedrag,0
-odt,account.invoice,0,Credit Note N°:,Creditnotanummer:,0
-odt,account.invoice,0,Date,Vervaldatum,0
-odt,account.invoice,0,Date:,Datum:,0
-odt,account.invoice,0,Description,Specificatie,0
-odt,account.invoice,0,Description:,Betreft:,0
-odt,account.invoice,0,Draft Credit Note,Concept creditnota,0
-odt,account.invoice,0,Draft Invoice,Concept verkoopfactuur,0
-odt,account.invoice,0,Draft Supplier Credit Note,Concept credit inkoopnota,0
-odt,account.invoice,0,Draft Supplier Invoice,Concept inkoopfactuur,0
-odt,account.invoice,0,E-Mail:,E-mail:,0
-odt,account.invoice,0,Invoice N°:,Factuur:,0
-odt,account.invoice,0,Payment Term,Betalingstermijn,0
-odt,account.invoice,0,Phone:,Telefoon:,0
-odt,account.invoice,0,Pro forma Credit Note,Pro forma creditnota,0
-odt,account.invoice,0,Pro forma Invoice,Pro forma verkoopfactuur,0
-odt,account.invoice,0,Pro forma Supplier Credit Note,Pro forma credit inkoopnota,0
-odt,account.invoice,0,Pro forma Supplier Invoice,Pro forma factuur,0
-odt,account.invoice,0,Quantity,Hoeveelheid,0
-odt,account.invoice,0,Supplier Credit Note N°:,Credit inkoopnotanummer:,0
-odt,account.invoice,0,Supplier Invoice N°:,Inkoopfactuurnummer:,0
-odt,account.invoice,0,Tax,Belasting,0
-odt,account.invoice,0,Taxes,Belastingen,0
-odt,account.invoice,0,Taxes:,Belastingen:,0
-odt,account.invoice,0,Total (excl. taxes):,Totaal (excl. belasting):,0
-odt,account.invoice,0,Total:,Totaal:,0
-odt,account.invoice,0,Unit Price,Eenheids- prijs,0
-odt,account.invoice,0,VAT Number:,BTW-nummer:,0
-odt,account.invoice,0,VAT:,BTW:,0
-selection,"account.invoice,state",0,Canceled,Geannuleerd,0
-selection,"account.invoice,state",0,Draft,Concept,0
-selection,"account.invoice,state",0,Opened,Geopend,0
-selection,"account.invoice,state",0,Paid,Betaald,0
-selection,"account.invoice,state",0,Pro forma,Pro forma,0
-selection,"account.invoice,type",0,Credit Note,Credit verkoopnota,0
-selection,"account.invoice,type",0,Invoice,Verkoopfactuur,0
-selection,"account.invoice,type",0,Supplier Credit Note,Credit inkoopnota,0
-selection,"account.invoice,type",0,Supplier Invoice,Inkoopfactuur,0
-selection,"account.invoice.line,invoice_type",0,Credit Note,Credit verkoopnota,0
-selection,"account.invoice.line,invoice_type",0,Invoice,Verkoopfactuur,0
-selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Credit inkoopnota,0
-selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Inkoopfactuur,0
-selection,"account.invoice.line,type",0,Comment,Opmerking,0
-selection,"account.invoice.line,type",0,Line,Regel,0
-selection,"account.invoice.line,type",0,Subtotal,Subtotaal,0
-selection,"account.invoice.line,type",0,Title,Titel,0
-selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Deelbetaling,0
-selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Afschrijven,0
-view,account.invoice,0,Amount Second Currency,Bedrag alternatieve valuta,0
-view,account.invoice,0,Credit,Credit,0
-view,account.invoice,0,Debit,Debit,0
-view,account.invoice,0,Invoice,Verkoopfactuur,0
-view,account.invoice,0,Invoices,Verkoopfacturen,0
-view,account.invoice,0,Lines,Regels,0
-view,account.invoice,0,Other Info,Aanvullende informatie,0
-view,account.invoice,0,Payment,Betaling,0
-view,account.invoice,0,Payment Lines,Betalingen,0
-view,account.invoice,0,Pro For_ma,Pro For_ma,0
-view,account.invoice,0,Taxes,Belastingen,0
-view,account.invoice,0,_Cancel,_Annuleren,0
-view,account.invoice,0,_Draft,_Concept,0
-view,account.invoice,0,_Open,_Open,0
-view,account.invoice,0,_Pay,_Betalen,0
-view,account.invoice,0,_Reset to Draft,_Terug naar concept,0
-view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Wilt u deze factuur/facturen echt crediteren?,0
-view,account.invoice.credit_invoice.init,0,Credit Invoice,Credit verkoopfactuur,0
-view,account.invoice.line,0,General,Algemeen,0
-view,account.invoice.line,0,Invoice Line,Factuurregel,0
-view,account.invoice.line,0,Invoice Lines,Factuurregels,0
-view,account.invoice.line,0,Notes,Aantekeningen,0
-view,account.invoice.line,0,Products,Producten,0
-view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Bedrag alternatieve valuta,0
-view,account.invoice.pay_invoice.ask,0,Credit,Credit,0
-view,account.invoice.pay_invoice.ask,0,Debit,Debit,0
-view,account.invoice.pay_invoice.ask,0,Lines to Pay,Te betalen boekingen,0
-view,account.invoice.pay_invoice.ask,0,Pay Invoice,Betaal factuur,0
-view,account.invoice.pay_invoice.ask,0,Payment Lines,Betalingen,0
-view,account.invoice.pay_invoice.init,0,Pay Invoice,Betaal factuur,0
-view,account.invoice.payment_term,0,Payment Term,Betalingstermijn,0
-view,account.invoice.payment_term,0,Payment Term Line,Betalingstermijn regel,0
-view,account.invoice.payment_term,0,Payment Term Lines,Betalingstermijn regels,0
-view,account.invoice.payment_term,0,Payment Terms,Betalingstermijnen,0
-view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Waarschuwing!</b>,0
-view,account.invoice.print_invoice_report.warning,0,Print Invoice,Factuur afdrukken,0
-view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,De factuur wordt <i>direct</i> afgedrukt.,0
-view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,U heeft meer dan één factuur geselecteerd om af te drukken.,0
-view,account.invoice.tax,0,Invoice Tax,Belasting factuur,0
-view,account.invoice.tax,0,Invoice Taxes,Belastingen factuur,0
-view,account.invoice.tax,0,Tax Code,Belastingcode,0
-view,party.party,0,Payment Terms,Betalingstermijnen,0
-wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Credit,0
-wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Annuleren,0
-wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Annuleren,0
-wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Oké,0
-wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,Oké,0
-wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Annuleren,0
-wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Annuleren,0
-wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Afdrukken,0
diff --git a/party.xml b/party.xml
index bee9947..e606dc7 100644
--- a/party.xml
+++ b/party.xml
@@ -11,7 +11,7 @@ this repository contains the full copyright notices and license terms. -->
                 <data>
                     <xpath
                         expr="/tree/field[@name="active"]" position="after">
-                        <field name="invoice" select="2"/>
+                        <field name="invoice"/>
                     </xpath>
                 </data>
                 ]]>
@@ -62,9 +62,14 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.keyword"
                 id="act_open_invoice_keyword1">
             <field name="keyword">form_relate</field>
-            <field name="model">party.party,0</field>
+            <field name="model">party.party,-1</field>
             <field name="action" ref="act_invoice_form2"/>
         </record>
+        <record model="ir.action-res.group"
+            id="act_invoice_form2-group_sale">
+            <field name="action" ref="act_invoice_form2"/>
+            <field name="group" ref="account.group_account"/>
+        </record>
 
     </data>
 </tryton>
diff --git a/payment_term.py b/payment_term.py
index 371fe22..fb3d51b 100644
--- a/payment_term.py
+++ b/payment_term.py
@@ -6,8 +6,9 @@ import time
 from dateutil.relativedelta import relativedelta
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.backend import TableHandler
-from trytond.pyson import Not, Equal, Eval
+from trytond.pyson import Eval
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class PaymentTerm(ModelSQL, ModelView):
@@ -37,11 +38,12 @@ class PaymentTerm(ModelSQL, ModelView):
         '''
         #TODO implement business_days
         # http://pypi.python.org/pypi/BusinessHours/
-        type_obj = self.pool.get('account.invoice.payment_term.line.type')
-        delay_obj = self.pool.get(
+        pool = Pool()
+        type_obj = pool.get('account.invoice.payment_term.line.type')
+        delay_obj = pool.get(
                 'account.invoice.payment_term.line.delay')
-        currency_obj = self.pool.get('currency.currency')
-        date_obj = self.pool.get('ir.date')
+        currency_obj = pool.get('currency.currency')
+        date_obj = pool.get('ir.date')
 
         res = []
         if date is None:
@@ -79,7 +81,7 @@ class PaymentTermLineType(ModelSQL, ModelView):
         self._order.insert(0, ('name', 'ASC'))
 
     def get_value(self, line, amount, currency):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         if line.type == 'fixed':
             return currency_obj.compute(line.currency, line.amount, currency)
         elif line.type == 'percent':
@@ -128,20 +130,20 @@ class PaymentTermLine(ModelSQL, ModelView):
     type = fields.Selection('get_type', 'Type', required=True,
             on_change=['type'])
     percentage = fields.Numeric('Percentage', digits=(16, 8),
-            states={
-                'invisible': Not(Equal(Eval('type'), 'percent')),
-                'required': Equal(Eval('type'), 'percent'),
-            }, help='In %')
+        states={
+            'invisible': Eval('type') != 'percent',
+            'required': Eval('type') == 'percent',
+            }, depends=['type'], help='In %')
     amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)),
-            states={
-                'invisible': Not(Equal(Eval('type'), 'fixed')),
-                'required': Equal(Eval('type'), 'fixed'),
-            })
+        states={
+            'invisible': Eval('type') != 'fixed',
+            'required': Eval('type') == 'fixed',
+            }, depends=['type', 'currency_digits'])
     currency = fields.Many2One('currency.currency', 'Currency',
-            states={
-                'invisible': Not(Equal(Eval('type'), 'fixed')),
-                'required': Equal(Eval('type'), 'fixed'),
-            })
+        states={
+            'invisible': Eval('type') != 'fixed',
+            'required': Eval('type') == 'fixed',
+            }, depends=['type'])
     currency_digits = fields.Function(fields.Integer('Currency Digits',
         on_change_with=['currency']), 'get_currency_digits')
     days = fields.Integer('Number of Days')
@@ -169,13 +171,13 @@ class PaymentTermLine(ModelSQL, ModelView):
         return 'net_days'
 
     def get_type(self):
-        type_obj = self.pool.get('account.invoice.payment_term.line.type')
+        type_obj = Pool().get('account.invoice.payment_term.line.type')
         type_ids = type_obj.search([])
         types = type_obj.browse(type_ids)
         return [(x.code, x.name) for x in types]
 
     def get_delay(self):
-        delay_obj = self.pool.get('account.invoice.payment_term.line.delay')
+        delay_obj = Pool().get('account.invoice.payment_term.line.delay')
         delay_ids = delay_obj.search([])
         delays = delay_obj.browse(delay_ids)
         return [(x.code, x.name) for x in delays]
@@ -192,7 +194,7 @@ class PaymentTermLine(ModelSQL, ModelView):
         return res
 
     def on_change_with_currency_digits(self, vals):
-        currency_obj = self.pool.get('currency.currency')
+        currency_obj = Pool().get('currency.currency')
         if vals.get('currency'):
             currency = currency_obj.browse(vals['currency'])
             return currency.digits
diff --git a/payment_term.xml b/payment_term.xml
index 6819a64..309ed26 100644
--- a/payment_term.xml
+++ b/payment_term.xml
@@ -13,38 +13,44 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="name"/>
                     <label name="active"/>
                     <field name="active" xexpand="0" width="100"/>
-                    <field name="description" colspan="4"/>
-                    <field name="lines" colspan="4">
-                        <tree string="Payment Term Line" sequence="sequence">
-                            <field name="type"/>
-                            <field name="percentage"/>
-                            <field name="amount"/>
-                            <field name="currency"/>
-                            <field name="days"/>
-                            <field name="delay"/>
-                            <field name="sequence" tree_invisible="1"/>
-                            <field name="currency_digits" tree_invisible="1"/>
-                        </tree>
-                        <form string="Payment Term Lines">
-                            <label name="type"/>
-                            <field name="type"/>
-                            <group col="1" id="label_amount_percent">
-                                <label name="percentage" fill="1" xexpand="1" expand="1"/>
-                                <label name="amount" fill="1" xexpand="1" expand="1"/>
-                            </group>
-                            <group col="3" id="amount_percent">
-                                <field name="percentage" colspan="3"/>
-                                <field name="amount"/>
-                                <label name="currency"/>
-                                <field name="currency"/>
-                            </group>
-                            <label name="days"/>
-                            <field name="days"/>
-                            <label name="delay"/>
-                            <field name="delay"/>
-                            <field name="currency_digits" invisible="1"/>
-                        </form>
-                    </field>
+                    <notebook colspan="4">
+                        <page name="lines">
+                            <field name="lines" colspan="4">
+                                <tree string="Payment Term Line" sequence="sequence">
+                                    <field name="type"/>
+                                    <field name="percentage"/>
+                                    <field name="amount"/>
+                                    <field name="currency"/>
+                                    <field name="days"/>
+                                    <field name="delay"/>
+                                    <field name="sequence" tree_invisible="1"/>
+                                    <field name="currency_digits" tree_invisible="1"/>
+                                </tree>
+                                <form string="Payment Term Lines">
+                                    <label name="type"/>
+                                    <field name="type"/>
+                                    <group col="1" id="label_amount_percent">
+                                        <label name="percentage" yfill="1" xexpand="1" yexpand="1"/>
+                                        <label name="amount" yfill="1" xexpand="1" yexpand="1"/>
+                                    </group>
+                                    <group col="3" id="amount_percent">
+                                        <field name="percentage" colspan="3"/>
+                                        <field name="amount"/>
+                                        <label name="currency"/>
+                                        <field name="currency"/>
+                                    </group>
+                                    <label name="days"/>
+                                    <field name="days"/>
+                                    <label name="delay"/>
+                                    <field name="delay"/>
+                                    <field name="currency_digits" invisible="1"/>
+                                </form>
+                            </field>
+                        </page>
+                        <page name="description">
+                            <field name="description" colspan="4"/>
+                        </page>
+                    </notebook>
                 </form>
                 ]]>
             </field>
@@ -55,8 +61,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Payment Terms">
-                    <field name="name" select="1"/>
-                    <field name="active" select="1"/>
+                    <field name="name"/>
+                    <field name="active"/>
                 </tree>
                 ]]>
             </field>
@@ -78,24 +84,6 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_payment_terms_configuration"
             action="act_payment_term_form" id="menu_payment_term_form"/>
 
-        <record model="ir.action.act_window" id="act_payment_term_form2">
-            <field name="name">Payment Terms</field>
-            <field name="res_model">account.invoice.payment_term</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_payment_term_form2_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="payment_term_view_form"/>
-            <field name="act_window" ref="act_payment_term_form2"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_payment_term_form2_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="payment_term_view_tree"/>
-            <field name="act_window" ref="act_payment_term_form2"/>
-        </record>
-        <menuitem name="New Payment Term" parent="menu_payment_term_form"
-            action="act_payment_term_form2" id="menu_payment_term_form_new"
-            sequence="10"/>
-
         <record model="ir.model.access" id="access_payment_term">
             <field name="model" search="[('model', '=', 'account.invoice.payment_term')]"/>
             <field name="perm_read" eval="True"/>
diff --git a/setup.py b/setup.py
index 1129c66..439b5d0 100644
--- a/setup.py
+++ b/setup.py
@@ -40,18 +40,20 @@ setup(name='trytond_account_invoice',
     classifiers=[
         'Development Status :: 5 - Production/Stable',
         'Environment :: Plugins',
+        'Framework :: Tryton',
         'Intended Audience :: Developers',
         'Intended Audience :: Financial and Insurance Industry',
         'Intended Audience :: Legal Industry',
         'License :: OSI Approved :: GNU General Public License (GPL)',
         'Natural Language :: Bulgarian',
+        'Natural Language :: Czech',
         'Natural Language :: Dutch',
         'Natural Language :: English',
         'Natural Language :: French',
         'Natural Language :: German',
+        'Natural Language :: Russian',
         'Natural Language :: Spanish',
         'Operating System :: OS Independent',
-        'Programming Language :: Python :: 2.5',
         'Programming Language :: Python :: 2.6',
         'Programming Language :: Python :: 2.7',
         'Topic :: Office/Business',
diff --git a/tests/test_account_invoice.py b/tests/test_account_invoice.py
index 2eca349..8bce50f 100644
--- a/tests/test_account_invoice.py
+++ b/tests/test_account_invoice.py
@@ -10,7 +10,7 @@ if os.path.isdir(DIR):
 
 import unittest
 import trytond.tests.test_tryton
-from trytond.tests.test_tryton import test_view
+from trytond.tests.test_tryton import test_view, test_depends
 
 
 class AccountInvoiceTestCase(unittest.TestCase):
@@ -27,6 +27,12 @@ class AccountInvoiceTestCase(unittest.TestCase):
         '''
         test_view('account_invoice')
 
+    def test0006depends(self):
+        '''
+        Test depends.
+        '''
+        test_depends()
+
 def suite():
     suite = trytond.tests.test_tryton.suite()
     suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 6777ebc..0fcd845 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 2.0.0
+Version: 2.2.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,23 +15,25 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.0/
+Download-URL: http://downloads.tryton.org/2.2/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Plugins
+Classifier: Framework :: Tryton
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
 Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Czech
 Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
 Classifier: Natural Language :: French
 Classifier: Natural Language :: German
+Classifier: Natural Language :: Russian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.5
 Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Topic :: Office/Business
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index c451b44..2c3ad87 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -6,14 +6,8 @@ MANIFEST.in
 README
 TODO
 account.xml
-bg_BG.csv
-de_DE.csv
-es_CO.csv
-es_ES.csv
-fr_FR.csv
 invoice.odt
 invoice.xml
-nl_NL.csv
 party.xml
 payment_term.xml
 setup.py
@@ -25,6 +19,14 @@ setup.py
 ./payment_term.py
 ./tests/__init__.py
 ./tests/test_account_invoice.py
+locale/bg_BG.po
+locale/cs_CZ.po
+locale/de_DE.po
+locale/es_CO.po
+locale/es_ES.po
+locale/fr_FR.po
+locale/nl_NL.po
+locale/ru_RU.po
 trytond_account_invoice.egg-info/PKG-INFO
 trytond_account_invoice.egg-info/SOURCES.txt
 trytond_account_invoice.egg-info/dependency_links.txt
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index 12e3930..4c4981e 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -1,8 +1,8 @@
 python-dateutil
-trytond_account >= 2.0, < 2.1
-trytond_company >= 2.0, < 2.1
-trytond_party >= 2.0, < 2.1
-trytond_product >= 2.0, < 2.1
-trytond_currency >= 2.0, < 2.1
-trytond_account_product >= 2.0, < 2.1
-trytond >= 2.0, < 2.1
\ No newline at end of file
+trytond_account >= 2.2, < 2.3
+trytond_company >= 2.2, < 2.3
+trytond_party >= 2.2, < 2.3
+trytond_product >= 2.2, < 2.3
+trytond_currency >= 2.2, < 2.3
+trytond_account_product >= 2.2, < 2.3
+trytond >= 2.2, < 2.3
\ No newline at end of file
commit fadc3a020344359b4893aa3c281c1528cc13ecad
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri Jul 22 12:26:54 2011 +0200

    Removing deprecated XB-Python-Version for dh_python2.

diff --git a/debian/control b/debian/control
index 3aa73b3..91c3c14 100644
--- a/debian/control
+++ b/debian/control
@@ -19,7 +19,6 @@ Depends:
  tryton-modules-company (>= 2.0), tryton-modules-currency (>= 2.0),
  tryton-modules-party (>= 2.0), tryton-modules-product (>= 2.0),
  python-dateutil, python-pkg-resources
-XB-Python-Version: ${python:Versions}
 Description: Tryton Application Platform (Financial and Accounting Module)
  Tryton is a high-level general purpose application platform written in Python
  and using PostgreSQL as database engine. It is the core base of a complete
commit dae34a6bae7542d8c6f3a8ae9fc1645f54b285bf
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu Jul 14 01:11:14 2011 +0200

    Releasing debian version 2.0.0-2.

diff --git a/debian/changelog b/debian/changelog
index c609083..c0ed0a7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,16 @@
+tryton-modules-account-invoice (2.0.0-2) unstable; urgency=low
+
+  [ Daniel Baumann ]
+  * Removing for new source package version obsoleted README.source file.
+  * Adding options for source package.
+  * Compacting copyright file.
+  * Not wrapping uploaders field, it does not exceed 80 chars.
+
+  [ Mathias Behrle ]
+  * Moving from deprecated python-support to dh_python2.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Thu, 14 Jul 2011 01:11:07 +0200
+
 tryton-modules-account-invoice (2.0.0-1) unstable; urgency=low
 
   * Updating to standards version 3.9.2.
commit d8858f96683ecec57cc86e6f3da6b4d9c34fa639
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Jul 13 19:56:57 2011 +0200

    Moving from deprecated python-support to dh_python2.

diff --git a/debian/control b/debian/control
index 364e1ad..3aa73b3 100644
--- a/debian/control
+++ b/debian/control
@@ -4,11 +4,12 @@ Priority: optional
 Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
 Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
 Dm-Upload-Allowed: yes
-Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
+Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
 Standards-Version: 3.9.2
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
+X-Python-Version: >= 2.5
 
 Package: tryton-modules-account-invoice
 Architecture: all
diff --git a/debian/pycompat b/debian/pycompat
deleted file mode 100644
index 0cfbf08..0000000
--- a/debian/pycompat
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/debian/pydist-overrides b/debian/pydist-overrides
new file mode 100644
index 0000000..7ce2c04
--- /dev/null
+++ b/debian/pydist-overrides
@@ -0,0 +1 @@
+python_dateutil python-dateutil
diff --git a/debian/pyversions b/debian/pyversions
deleted file mode 100644
index b3dc41e..0000000
--- a/debian/pyversions
+++ /dev/null
@@ -1 +0,0 @@
-2.5-
diff --git a/debian/rules b/debian/rules
index 000210b..e32b791 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,4 +1,9 @@
 #!/usr/bin/make -f
 
 %:
-	dh ${@}
+	dh ${@} --with python2
+
+override_dh_auto_clean:
+	dh_auto_clean
+
+	rm -rf *.egg-info
commit 07964da3c225fa52c5be8d020171865ad43731a6
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Jul 10 16:01:11 2011 +0200

    Not wrapping uploaders field, it does not exceed 80 chars.

diff --git a/debian/control b/debian/control
index 2fa5ce1..364e1ad 100644
--- a/debian/control
+++ b/debian/control
@@ -2,9 +2,7 @@ Source: tryton-modules-account-invoice
 Section: python
 Priority: optional
 Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
-Uploaders:
- Daniel Baumann <daniel at debian.org>,
- Mathias Behrle <mathiasb at m9s.biz>
+Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
 Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
 Standards-Version: 3.9.2
commit 4b43ca5d853f2fe5366e747bf7a96cf6cf168ae1
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Jul 10 15:54:39 2011 +0200

    Compacting copyright file.

diff --git a/debian/copyright b/debian/copyright
index fc13eeb..b2d5d1a 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,8 +1,3 @@
-Upstream-Contact: Tryton project <tryton at googlegroups.com>
-Upstream-Homepage: http://downloads.tryton.org/
-Maintainer-Contact: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
-Maintainer-Homepage: http://tryton.debian-maintainers.org/
-
 Files: *
 Copyright:
  (C) 2004-2008 Tiny SPRL
@@ -10,25 +5,12 @@ Copyright:
  (C) 2008-2011 Bertrand Chenal
  (C) 2008-2011 B2CK SPRL
 License: GPL-3+
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- .
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- .
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- .
- On Debian systems, the complete text of the GNU General Public License
- can be found in /usr/share/common-licenses/GPL-3 file.
 
 Files: debian/*
 Copyright: (C) 2009-2011 Daniel Baumann <daniel at debian.org>
 License: GPL-3+
+
+License: GPL-3+
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
@@ -42,5 +24,5 @@ License: GPL-3+
  You should have received a copy of the GNU General Public License
  along with this program. If not, see <http://www.gnu.org/licenses/>.
  .
- On Debian systems, the complete text of the GNU General Public License
+ The complete text of the GNU General Public License
  can be found in /usr/share/common-licenses/GPL-3 file.
commit 1b4f60361a3e62db7a1e6d6604f735a3fa152dfa
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Jul 10 15:38:54 2011 +0200

    Adding options for source package.

diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 0000000..d053b65
--- /dev/null
+++ b/debian/source/options
@@ -0,0 +1,2 @@
+compression = gzip
+compression-level = 9
commit 2943e2f5687f82179e3bf3444588b392d64495cc
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Jul 10 15:38:02 2011 +0200

    Removing for new source package version obsoleted README.source file.

diff --git a/debian/README.source b/debian/README.source
deleted file mode 100644
index 18b6b24..0000000
--- a/debian/README.source
+++ /dev/null
@@ -1,37 +0,0 @@
-Package Repositories
---------------------
-
-Backports for the current stable debian distribution as well as snapshots of
-unreleased versions may be available in repositories listed on the maintainers
-homepage. The current URL of the maintainer homepage can be seen in
-debian/copyright.
-
-
-Source Access
--------------
-
-You can obtain the sources of this package with:
-
-  $ apt-get source ${PACKAGE}
-
-whereas '${PACKAGE}' has to be replaced with the actual name of the package.
-
-This package is maintained with the Git version control system. The current git
-source tree can be obtained with:
-
-  $ git clone ${GIT_URI}
-
-whereas '${GIT_URI}' has to be replaced with the actual URI for the Git
-repository. The current Git URI can be seen in debian/control in the extracted
-package sources.
-
-More information about Git can be found in the git-core package.
-
-This package may use the Quilt patch system to manage all modifications to the
-upstream source. Changes, if any, are stored in the source package as diffs in
-debian/diff and are applied during the build. Current modifications can be
-applied to the source tree with:
-
-  $ QUILT_PATCHES=debian/patches quilt push -a
-
-More information about Quilt can be found in the quilt package.
commit e17d84a0c6edc1667ffa3da002b5cbcbed076fb4
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue May 24 21:39:59 2011 +0200

    Releasing debian version 2.0.0-1.

diff --git a/debian/changelog b/debian/changelog
index 3e307fa..c609083 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+tryton-modules-account-invoice (2.0.0-1) unstable; urgency=low
+
+  * Updating to standards version 3.9.2.
+  * Merging upstream version 2.0.0.
+  * Updating Copyright.
+  * Updating versioned tryton depends to 2.0.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 24 May 2011 21:30:55 +0200
+
 tryton-modules-account-invoice (1.8.0-2) unstable; urgency=low
 
   * Changing my email address.
commit d642d8d33fdfdaf1a604f57810ae142a30ab35f6
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue May 24 21:21:33 2011 +0200

    Updating versioned tryton depends to 2.0.

diff --git a/debian/control b/debian/control
index cbf6bf9..2fa5ce1 100644
--- a/debian/control
+++ b/debian/control
@@ -15,10 +15,10 @@ Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invo
 Package: tryton-modules-account-invoice
 Architecture: all
 Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.8),
- tryton-modules-account (>= 1.8), tryton-modules-account-product (>= 1.8),
- tryton-modules-company (>= 1.8), tryton-modules-currency (>= 1.8),
- tryton-modules-party (>= 1.8), tryton-modules-product (>= 1.8),
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.0),
+ tryton-modules-account (>= 2.0), tryton-modules-account-product (>= 2.0),
+ tryton-modules-company (>= 2.0), tryton-modules-currency (>= 2.0),
+ tryton-modules-party (>= 2.0), tryton-modules-product (>= 2.0),
  python-dateutil, python-pkg-resources
 XB-Python-Version: ${python:Versions}
 Description: Tryton Application Platform (Financial and Accounting Module)
commit a69aed02631f554000855c00a5546081fe9ee45c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue May 24 20:40:03 2011 +0200

    Updating Copyright.

diff --git a/debian/copyright b/debian/copyright
index bf68e1b..fc13eeb 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -6,9 +6,9 @@ Maintainer-Homepage: http://tryton.debian-maintainers.org/
 Files: *
 Copyright:
  (C) 2004-2008 Tiny SPRL
- (C) 2008-2010 Cedric Krier
- (C) 2008-2010 Bertrand Chenal
- (C) 2008-2010 B2CK SPRL
+ (C) 2008-2011 Cedric Krier
+ (C) 2008-2011 Bertrand Chenal
+ (C) 2008-2011 B2CK SPRL
 License: GPL-3+
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
commit 5e35154731347cad58db0becaecb3e4daac1d7fb
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue May 24 19:12:37 2011 +0200

    Merging upstream version 2.0.0.

diff --git a/CHANGELOG b/CHANGELOG
index b713a73..9c7c50a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+Version 2.0.0 - 2011-04-27
+* Bug fixes (see mercurial logs for details)
+* Add field currency_date to set the date for the rate calculation
+* Change get_move_line on Invoice Line and Tax to return a list of values
+  instead of values
+
 Version 1.8.0 - 2010-11-01
 * Bug fixes (see mercurial logs for details)
 
diff --git a/COPYRIGHT b/COPYRIGHT
index 94a43fb..a9feb41 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,7 +1,7 @@
+Copyright (C) 2008-2011 Cédric Krier.
+Copyright (C) 2008-2011 Bertrand Chenal.
+Copyright (C) 2008-2011 B2CK SPRL.
 Copyright (C) 2004-2008 Tiny SPRL.
-Copyright (C) 2008-2010 Cédric Krier.
-Copyright (C) 2008-2010 Bertrand Chenal.
-Copyright (C) 2008-2010 B2CK SPRL.
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/PKG-INFO b/PKG-INFO
index a94dae7..2656498 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.8.0
+Version: 2.0.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.8/
+Download-URL: http://downloads.tryton.org/2.0/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
@@ -24,11 +24,15 @@ Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
 Classifier: Natural Language :: French
 Classifier: Natural Language :: German
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
 Classifier: Topic :: Office/Business
 Classifier: Topic :: Office/Business :: Financial :: Accounting
diff --git a/__tryton__.py b/__tryton__.py
index 913e43a..675598d 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -2,11 +2,13 @@
 #this repository contains the full copyright notices and license terms.
 {
     'name': 'Account Invoice',
+    'name_bg_BG': 'Фактуриране',
     'name_de_DE': 'Fakturierung',
     'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
-    'version': '1.8.0',
+    'name_nl_NL': 'Facturatie',
+    'version': '2.0.0',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
@@ -20,6 +22,16 @@ With the possibilities:
     - to define invoice sequences on fiscal year or period.
     - to credit any invoice.
 ''',
+    'description_bg_BG': '''Финансов и счетоводен модул с:
+    - Условия за плащане
+    - Фактура / Кредитно известие
+    - Фактура за доставчик / Кредитно известие за доставчик
+
+Има следните възможности:
+    - проследяване на плащания на фактури
+    - задаване на последователности на фактура за финансова година или период
+    - кредитиране на всяка фактура
+''',
     'description_de_DE': '''Modul für Buchhaltung und Fakturierung mit:
     - Definition von Zahlungsbedingungen
     - Erstellung von Rechnungen und Gutschriften für Kunden
@@ -59,6 +71,18 @@ Avec la possibilité:
     - de suivre le paiment des factures
     - de définir les numérotations de facture par période ou par année fiscale
     - de créditer n'importe quelle facture
+    
+''',
+    'description_nl_NL': '''Module voor facturering met:
+    - Betalingstermijnen
+    - Verkoopfacturen / Credit verkoopnota's
+    - Inkoopfacturen / Credit inkoopnota's
+
+Met de mogelijkheid tot:
+    - het volgen van betalingen.
+    - het definiëren van factuurreeksen per boekjaar.
+    - het crediteren van een factuur.
+    
 ''',
     'depends': [
         'ir',
@@ -78,9 +102,11 @@ Avec la possibilité:
         'account.xml',
     ],
     'translation': [
+        'bg_BG.csv',
         'de_DE.csv',
         'es_CO.csv',
         'es_ES.csv',
         'fr_FR.csv',
+        'nl_NL.csv',
     ]
 }
diff --git a/bg_BG.csv b/bg_BG.csv
new file mode 100644
index 0000000..a29fda4
--- /dev/null
+++ b/bg_BG.csv
@@ -0,0 +1,357 @@
+type,name,res_id,src,value,fuzzy
+error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,Не може а променяте последователност на фактура ако има вече отворена фактура за финансовата година,0
+error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,За финансова година трябва да имате различни последователности за фактура  ,0
+error,account.invoice,0,"Base taxes different from invoice lines!
+Re-compute the invoice.","Данъчната основа е различна от тази на редовете на фактурата!
+Наново изчислете фактурата.",0
+error,account.invoice,0,"Taxes defined but not on invoice lines!
+Re-compute the invoice.","Зададени са данъци но не за редове на фактура!
+Преизчислете фактурата.",0
+error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
+Re-compute the invoice.","Данъци са зададени върху редовете на фактурата но не на фактурата!
+Преизчислете фактурата",0
+error,account.invoice,0,The credit account on journal is missing!,Лиспва кредитна сметка за дневника!,0
+error,account.invoice,0,The credit account on journal is the same than the invoice account!,Кредитната сметка на дневника е същата като сметката на фактурата!,0
+error,account.invoice,0,The debit account on journal is missing!,Липсва дебитна сметка за дневник!,0
+error,account.invoice,0,The debit account on journal is the same than the invoice account!,Дебитната сметка на дневника е същата като сметката на фактурата!,0
+error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Няма последователност за фактура върху период/финансова година!,0
+error,account.invoice,0,"You can not create an invoice
+with account from a different invoice company!","Не може да създадете фактура
+със сметка на друга фактурираща фирма!",0
+error,account.invoice,0,"You can not modify an invoice that is opened, paid!",Не може да променяте фактура която е отворена или платена!,0
+error,account.invoice,0,You can not reset to draft an invoice that has move!,Не може да прехвърлите в проект фактура която има движение!,0
+error,account.invoice,0,"You can not use the same account
+as on invoice line!","Не може да ползвате съшата сметка
+като тази на реда от фактурата!",0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Не можете да кредитиратe обезщетение фактура по която не е отворена!,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,Не можете да кредитиратe обезщетение фактура по която има плащане!,0
+error,account.invoice.line,0,"Line with ""line"" type must have an account!","Ред от вид ""line"" трябва да има сметка!",0
+error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","Ред без ""ред"" трябва да има фактура!",0
+error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!",Не може да добавяте ред към фактура която е отворена/платена/отказана!,0
+error,account.invoice.line,0,"You can not create invoice line
+with account with a different invoice company!","Не може да създавате ред от фактура
+със сметка от различна фактурираща фирма!",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",Не може да променяте ред от фактура която е отворена и/или платена!,0
+error,account.invoice.line,0,"You can not use the same account
+as on the invoice!","Не може да използвате същата сметка
+като тази на фактурата!",0
+error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,Не може да създавате частично плащане за сума по-голяма от сумата за плащане!,0
+error,account.invoice.payment_term,0,Invalid payment term line!,Невалиден ред от условие за плащане!,0
+error,account.invoice.payment_term,0,Payment term missing a remainder line!,В условието за плащане липсва ред от напомняне!,0
+error,account.invoice.payment_term.line.delay,0,The code must be unique!,Кода трябва да е уникален!,0
+error,account.invoice.payment_term.line.type,0,The code must be unique!,Кода трябва да е уникален!,0
+error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!",Не може да добавяте ред към фактура която е отворена/платена/отказана!,0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",Не може да променяте данък от фактура която е отворена и/или платена!,0
+error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,Не може а променяте последователност на фактура ако има вече отворена фактура за финансовата година,0
+error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,За финансова година и една и съща фирма трябва да имате различни последователности за фактура !,0
+field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Последователност за кредитно известие на доставчик,0
+field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Последователност на фактура за доставчик,0
+field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Последователност за кредитно известие на клиент,0
+field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Последователност за фактура на клиент,0
+field,"account.invoice,account",0,Account,Сметка,0
+field,"account.invoice,accounting_date",0,Accounting Date,Дата на осчетоводяване,0
+field,"account.invoice,amount_to_pay",0,Amount to Pay,Сума за плащане,0
+field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Сума за плащане днес,0
+field,"account.invoice,comment",0,Comment,Коментар,0
+field,"account.invoice,company",0,Company,Фирма,0
+field,"account.invoice,currency",0,Currency,Валута,0
+field,"account.invoice,currency_date",0,Currency Date,Текуща дата,0
+field,"account.invoice,currency_digits",0,Currency Digits,Цифри за валута,0
+field,"account.invoice,description",0,Description,Описание,0
+field,"account.invoice,invoice_address",0,Invoice Address,Адрес за фактура,0
+field,"account.invoice,invoice_date",0,Invoice Date,Дата на фактура,0
+field,"account.invoice,invoice_report",0,Invoice Report,Справка за фактура,0
+field,"account.invoice,invoice_report_format",0,Invoice Report Format,Формат на спавка за фактура,0
+field,"account.invoice,journal",0,Journal,Дневник,0
+field,"account.invoice,lines",0,Lines,Редове,0
+field,"account.invoice,lines_to_pay",0,Lines to Pay,Редове за плащане,0
+field,"account.invoice,move",0,Move,Движение,0
+field,"account.invoice,number",0,Number,Номер,0
+field,"account.invoice,party",0,Party,Партньор,0
+field,"account.invoice,party_lang",0,Party Language,Език на партньор,0
+field,"account.invoice,payment_lines",0,Payment Lines,Редове от плащане,0
+field,"account.invoice,payment_term",0,Payment Term,Условие за плащане,0
+field,"account.invoice,rec_name",0,Name,Име,0
+field,"account.invoice,reconciled",0,Reconciled,Съгласуван,0
+field,"account.invoice,reference",0,Reference,Отпратка,0
+field,"account.invoice,state",0,State,Състояние,0
+field,"account.invoice,tax_amount",0,Tax,Данък,0
+field,"account.invoice,taxes",0,Tax Lines,Ред на данъци,0
+field,"account.invoice,total_amount",0,Total,Общо,0
+field,"account.invoice,type",0,Type,Вид,0
+field,"account.invoice,type_name",0,Type,Вид,0
+field,"account.invoice,untaxed_amount",0,Untaxed,Необложен с данък,0
+field,"account.invoice-account.move.line,invoice",0,Invoice,Фактура,0
+field,"account.invoice-account.move.line,line",0,Payment Line,Ред от плащане,0
+field,"account.invoice-account.move.line,rec_name",0,Name,Име,0
+field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,С обежщетение,0
+field,"account.invoice.line,account",0,Account,Сметка,0
+field,"account.invoice.line,amount",0,Amount,Сума,0
+field,"account.invoice.line,company",0,Company,Фирма,0
+field,"account.invoice.line,currency",0,Currency,Валута,0
+field,"account.invoice.line,currency_digits",0,Currency Digits,Цифри за валута,0
+field,"account.invoice.line,description",0,Description,Описание,0
+field,"account.invoice.line,invoice",0,Invoice,Фактура,0
+field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Данъци на фактура,0
+field,"account.invoice.line,invoice_type",0,Invoice Type,Вид фактура,0
+field,"account.invoice.line,note",0,Note,Бележка,0
+field,"account.invoice.line,party",0,Party,Партньор,0
+field,"account.invoice.line,party_lang",0,Party Language,Език на партньор,0
+field,"account.invoice.line,product",0,Product,Продукт,0
+field,"account.invoice.line,quantity",0,Quantity,Количество,0
+field,"account.invoice.line,rec_name",0,Name,Име,0
+field,"account.invoice.line,sequence",0,Sequence,Последователност,0
+field,"account.invoice.line,taxes",0,Taxes,Данъци,0
+field,"account.invoice.line,type",0,Type,Вид,0
+field,"account.invoice.line,unit",0,Unit,Единица,0
+field,"account.invoice.line,unit_digits",0,Unit Digits,Десетични единици,0
+field,"account.invoice.line,unit_price",0,Unit Price,Единична цена,0
+field,"account.invoice.line-account.tax,line",0,Invoice Line,Ред от фактура,0
+field,"account.invoice.line-account.tax,rec_name",0,Name,Име,0
+field,"account.invoice.line-account.tax,tax",0,Tax,Данък,0
+field,"account.invoice.pay_invoice.ask,account",0,Account,Сметка,0
+field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Сметка на отписване,0
+field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Платена сума,0
+field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Сума за отписване,0
+field,"account.invoice.pay_invoice.ask,company",0,Company,Фирма,0
+field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Валута при плащане,0
+field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Цифри на валута за плащане,0
+field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Цифри на валута за отписване,0
+field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Валута на отписване,0
+field,"account.invoice.pay_invoice.ask,date",0,Date,Дата,0
+field,"account.invoice.pay_invoice.ask,description",0,Description,Описание,0
+field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Фактура,0
+field,"account.invoice.pay_invoice.ask,journal",0,Journal,Дневник,0
+field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Дневник на отписване,0
+field,"account.invoice.pay_invoice.ask,lines",0,Lines,Редове,0
+field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Редове за плащане,0
+field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Редове от плащане,0
+field,"account.invoice.pay_invoice.ask,type",0,Type,Вид,0
+field,"account.invoice.pay_invoice.init,amount",0,Amount,Сума,0
+field,"account.invoice.pay_invoice.init,currency",0,Currency,Валута,0
+field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Цифри за валута,0
+field,"account.invoice.pay_invoice.init,date",0,Date,Дата,0
+field,"account.invoice.pay_invoice.init,description",0,Description,Описание,0
+field,"account.invoice.pay_invoice.init,journal",0,Journal,Дневник,0
+field,"account.invoice.payment_term,active",0,Active,Активен,0
+field,"account.invoice.payment_term,description",0,Description,Описание,0
+field,"account.invoice.payment_term,lines",0,Lines,Редове,0
+field,"account.invoice.payment_term,name",0,Payment Term,Условие за плащане,0
+field,"account.invoice.payment_term,rec_name",0,Name,Име,0
+field,"account.invoice.payment_term.line,amount",0,Amount,Сума,0
+field,"account.invoice.payment_term.line,currency",0,Currency,Валута,0
+field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Цифри за валута,0
+field,"account.invoice.payment_term.line,days",0,Number of Days,Брой дни,0
+field,"account.invoice.payment_term.line,delay",0,Condition,Условие,0
+field,"account.invoice.payment_term.line,payment",0,Payment Term,Условие за плащане,0
+field,"account.invoice.payment_term.line,percentage",0,Percentage,Процент,0
+field,"account.invoice.payment_term.line,rec_name",0,Name,Име,0
+field,"account.invoice.payment_term.line,sequence",0,Sequence,Последователност,0
+field,"account.invoice.payment_term.line,type",0,Type,Вид,0
+field,"account.invoice.payment_term.line.delay,code",0,Code,Код,0
+field,"account.invoice.payment_term.line.delay,name",0,Name,Име,0
+field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Име,0
+field,"account.invoice.payment_term.line.type,code",0,Code,Код,0
+field,"account.invoice.payment_term.line.type,name",0,Name,Име,0
+field,"account.invoice.payment_term.line.type,rec_name",0,Name,Име,0
+field,"account.invoice.tax,account",0,Account,Сметка,0
+field,"account.invoice.tax,amount",0,Amount,Сума,0
+field,"account.invoice.tax,base",0,Base,Основа,0
+field,"account.invoice.tax,base_code",0,Base Code,Основен код,0
+field,"account.invoice.tax,base_sign",0,Base Sign,Основен знак,0
+field,"account.invoice.tax,description",0,Description,Описание,0
+field,"account.invoice.tax,invoice",0,Invoice,Фактура,0
+field,"account.invoice.tax,manual",0,Manual,Ръчно,0
+field,"account.invoice.tax,rec_name",0,Name,Име,0
+field,"account.invoice.tax,sequence",0,Sequence,Последователност,0
+field,"account.invoice.tax,sequence_number",0,Sequence Number,Номер на последователност,0
+field,"account.invoice.tax,tax",0,Tax,Данък,0
+field,"account.invoice.tax,tax_code",0,Tax Code,Код на данък,0
+field,"account.invoice.tax,tax_sign",0,Tax Sign,Знак на данък,0
+field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Последователност за кредитно известие на доставчик,0
+field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Последователност на фактура за доставчик,0
+field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Последователност за кредитно известие на клиент,0
+field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Последователност за фактура на клиент,0
+field,"party.address,invoice",0,Invoice,Фактура,0
+field,"party.party,payment_term",0,Invoice Payment Term,Условие за плащане на фактура,0
+field,"party.party,supplier_payment_term",0,Supplier Payment Term,Условие за плащане на доставчик,0
+help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.",Ако е истина текущара(те) сметка(и) ще бъдат платена(и).,0
+help,"account.invoice.payment_term.line,percentage",0,In %,В %,0
+help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,За подреждане на редовете във възходящ ред,0
+model,"account.invoice,name",0,Invoice,Фактура,0
+model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Фактура - Ред от плащане,0
+model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Начало на кредитна фактура,0
+model,"account.invoice.line,name",0,Invoice Line,Ред от фактура,0
+model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Ред от фактура - Данък,0
+model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Запистване за плащане на фактура,0
+model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Начално плащане на фактура,0
+model,"account.invoice.payment_term,name",0,Payment Term,Условие за плащане,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Ред от условие за плащане,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Ред от забавяне на условие за плащане,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Край на месеца,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Дни (нето),0
+model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Ред от вид условие за плащане,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Фиксиран,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Процент,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Напомняне,0
+model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Предупреждение при отпечатване на справка за фактура,0
+model,"account.invoice.tax,name",0,Invoice Tax,Данък към фактура,0
+model,"ir.action,name",act_invoice_form,All Invoices,Всичко фактури,0
+model,"ir.action,name",act_invoice_form2,Invoices,Фактури,0
+model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Кредитно известие на доставчик,0
+model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Кредитно известие на доставчик,0
+model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Проект на кредитно известие на доставчик,0
+model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,ПРО-ФОРМА на кредитни известия на доставчик,0
+model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Отворени кредитни известия на доставчик,0
+model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Фактури на доставчик,0
+model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Фактури на доставчик,0
+model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Шаблон на фактури за доставчик,0
+model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,ПРО-ФОРМА фактури за доставчик,0
+model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Отворени фактури за доставчик,0
+model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Кредитни известия,0
+model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Кредитни известия,0
+model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Проект на кредитно известие,0
+model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,ПРО-ФОРМА на кредитни известия,0
+model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Отворени кредитни известия,0
+model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Фактури,0
+model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Фактури,0
+model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Проект на фактури,0
+model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,ПРО-ФОРМА фактури,0
+model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Отворени фактури,0
+model,"ir.action,name",act_payment_term_form,Payment Terms,Условия за плащане,0
+model,"ir.action,name",act_payment_term_form2,Payment Terms,Условия за плащане,0
+model,"ir.action,name",credit_invoice,Credit,Кредит,0
+model,"ir.action,name",print_invoice_report,Invoice,Фактура,0
+model,"ir.action,name",report_invoice,Invoice,Фактура,0
+model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Плащане на фактура,0
+model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Фактура,0
+model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Всичко фактури,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Кредитно известие на доставчик,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Ново кредитно известие на доставчик,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Проект на кредитно известие на доставчик,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,ПРО-ФОРМА на кредитни известия на доставчик,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Отворени кредитни известия на доставчик,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Фактури на доставчик,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Нова фактура за доставчик,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Проект на фактури за доставчик,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,ПРО-ФОРМА фактури за доставчик,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Отворени фактури за доставчик,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Кредитни известия,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Ново кредитно известие,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Проект на кредитно известие,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,ПРО-ФОРМА на кредитни известия,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Отворени кредитни известия,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Фактури,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Нова фактура,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Проект на фактури,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,ПРО-ФОРМА фактури,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Отворени фактури,0
+model,"ir.ui.menu,name",menu_invoices,Invoices,Фактури,0
+model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Условия за плащане,0
+model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Ново условие за плащане,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Условия за плащане,0
+model,"workflow,name",invoice_workflow,Invoice workflow,Работен процес на фактура,0
+model,"workflow.activity,name",invoice_activity_cancel,Canceled,Отказан,0
+model,"workflow.activity,name",invoice_activity_draft,Draft,Проект,0
+model,"workflow.activity,name",invoice_activity_open,Open,Отваряне,0
+model,"workflow.activity,name",invoice_activity_paid,Paid,Платен,0
+model,"workflow.activity,name",invoice_activity_proforma,Pro forma,ПРО-ФОРМА,0
+odt,account.invoice,0,Amount,Сума,0
+odt,account.invoice,0,Base,Основа,0
+odt,account.invoice,0,Credit Note N°:,Кредитно известие N°:,0
+odt,account.invoice,0,Date,Дата,0
+odt,account.invoice,0,Date:,Дата:,0
+odt,account.invoice,0,Description,Описание,0
+odt,account.invoice,0,Description:,Описание:,0
+odt,account.invoice,0,Draft Credit Note,Проект на кредитно известие,0
+odt,account.invoice,0,Draft Invoice,Проект на фактура,0
+odt,account.invoice,0,Draft Supplier Credit Note,Проект на кредитно известие на доставчик,0
+odt,account.invoice,0,Draft Supplier Invoice,Проект на фактура за доставчик,0
+odt,account.invoice,0,E-Mail:,E-Mail:,0
+odt,account.invoice,0,Invoice N°:,Фактура N°:,0
+odt,account.invoice,0,Payment Term,Условие за плащане,0
+odt,account.invoice,0,Phone:,Телефон:,0
+odt,account.invoice,0,Pro forma Credit Note,ПРО-ФОРМА на кредитно известие,0
+odt,account.invoice,0,Pro forma Invoice,ПРО-ФОРМА фактура,0
+odt,account.invoice,0,Pro forma Supplier Credit Note,ПРО-ФОРМА на кредитно известие на доставчик,0
+odt,account.invoice,0,Pro forma Supplier Invoice,ПРО-ФОРМА фактура за доставчик,0
+odt,account.invoice,0,Quantity,Количество,0
+odt,account.invoice,0,Supplier Credit Note N°:,Кредитно известие на доставчик N°:,0
+odt,account.invoice,0,Supplier Invoice N°:,Фактура за доставчик N°:,0
+odt,account.invoice,0,Tax,Данък,0
+odt,account.invoice,0,Taxes,Данъци,0
+odt,account.invoice,0,Taxes:,Данъци:,0
+odt,account.invoice,0,Total (excl. taxes):,Общо (без данъци):,0
+odt,account.invoice,0,Total:,Общо:,0
+odt,account.invoice,0,Unit Price,Единична цена,0
+odt,account.invoice,0,VAT:,ДДС:,0
+selection,"account.invoice,state",0,Canceled,Отказан,0
+selection,"account.invoice,state",0,Draft,Проект,0
+selection,"account.invoice,state",0,Opened,Отворен,0
+selection,"account.invoice,state",0,Paid,Платен,0
+selection,"account.invoice,state",0,Pro forma,ПРО-ФОРМА,0
+selection,"account.invoice,type",0,Credit Note,Кредитно известие,0
+selection,"account.invoice,type",0,Invoice,Фактура,0
+selection,"account.invoice,type",0,Supplier Credit Note,Кредитно известие на доставчик,0
+selection,"account.invoice,type",0,Supplier Invoice,Фактура за доставчик,0
+selection,"account.invoice.line,invoice_type",0,Access Permissions,Фактура,0
+selection,"account.invoice.line,invoice_type",0,Credit Note,Кредитно известие,0
+selection,"account.invoice.line,invoice_type",0,Invoice,Фактура,0
+selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Кредитно известие на доставчик,0
+selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Фактура за доставчик,0
+selection,"account.invoice.line,type",0,Comment,Коментар,0
+selection,"account.invoice.line,type",0,Line,Ред,0
+selection,"account.invoice.line,type",0,Subtotal,Междинна сума,0
+selection,"account.invoice.line,type",0,Title,Заглавие,0
+selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Частично плащане,0
+selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Анулиран,0
+view,account.invoice,0,Amount Second Currency,Сума в допълнителна валута,0
+view,account.invoice,0,Credit,Кредит,0
+view,account.invoice,0,Debit,Дебит,0
+view,account.invoice,0,Invoice,Фактура,0
+view,account.invoice,0,Invoices,Фактури,0
+view,account.invoice,0,Lines,Редове,0
+view,account.invoice,0,Other Info,Друга информация,0
+view,account.invoice,0,Payment,Плащане,0
+view,account.invoice,0,Payment Lines,Редове от плащане,0
+view,account.invoice,0,Pro For_ma,ПРО ФОРМА,0
+view,account.invoice,0,Taxes,Данъци,0
+view,account.invoice,0,_Cancel,Отказ,0
+view,account.invoice,0,_Draft,Проект,0
+view,account.invoice,0,_Open,Отваряне,0
+view,account.invoice,0,_Pay,Плащане,0
+view,account.invoice,0,_Reset to Draft,Изпращане в проект,0
+view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Сигурни ли сте че искате да кредитирате тази/тези фактура/фактури?,0
+view,account.invoice.credit_invoice.init,0,Credit Invoice,Кредитна фактура,0
+view,account.invoice.line,0,General,Основен,0
+view,account.invoice.line,0,Invoice Line,Ред от фактура,0
+view,account.invoice.line,0,Invoice Lines,Редове от фактура,0
+view,account.invoice.line,0,Notes,Бележки,0
+view,account.invoice.line,0,Products,Продукти,0
+view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Сума в допълнителна валута,0
+view,account.invoice.pay_invoice.ask,0,Credit,Кредит,0
+view,account.invoice.pay_invoice.ask,0,Debit,Дебит,0
+view,account.invoice.pay_invoice.ask,0,Lines to Pay,Редове за плащане,0
+view,account.invoice.pay_invoice.ask,0,Pay Invoice,Плащане на фактура,0
+view,account.invoice.pay_invoice.ask,0,Payment Lines,Редове от плащане,0
+view,account.invoice.pay_invoice.init,0,Pay Invoice,Плащане на фактура,0
+view,account.invoice.payment_term,0,Payment Term,Условие за плащане,0
+view,account.invoice.payment_term,0,Payment Term Line,Ред от условие за плащане,0
+view,account.invoice.payment_term,0,Payment Term Lines,Ред от условие за плащане,0
+view,account.invoice.payment_term,0,Payment Terms,Условия за плащане,0
+view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Внимание!</b>,0
+view,account.invoice.print_invoice_report.warning,0,Print Invoice,Отпечатване на фактура,0
+view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Фактурите ще бъдет изпратени <i>директно</i> на принтера.,0
+view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Избрали сте за печат повече от една фактура,0
+view,account.invoice.tax,0,Invoice Tax,Данък към фактура,0
+view,account.invoice.tax,0,Invoice Taxes,Данъци на фактура,0
+view,account.invoice.tax,0,Tax Code,Код на данък,0
+view,party.party,0,Payment Terms,Условия за плащане,0
+wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Кредит,0
+wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Отказ,0
+wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Отказ,0
+wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Добре,0
+wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,Добре,0
+wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Отказ,0
+wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Отказ,0
+wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Печат,0
diff --git a/de_DE.csv b/de_DE.csv
index 33ab6cd..e034bff 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -20,7 +20,7 @@ error,account.invoice,0,"You can not modify an invoice that is opened, paid!",Fa
 error,account.invoice,0,You can not reset to draft an invoice that has move!,"Eine Rechnung, die Buchungen enthält, kann nicht auf Entwurf zurückgesetzt werden!",0
 error,account.invoice,0,"You can not use the same account
 as on invoice line!",Es kann nicht das selbe Konto wie für die Rechnungszeile verwendet werden!,0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Die Verrechnung von nicht fakturierten Rechnungen ist nicht möglich!,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Nur Rechnungen im Status 'Fakturiert' können verrechnet werden!,0
 error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,"Die Verrechnung einer Rechnung ist nicht möglich, wenn bereits Zahlungen für diese gebucht sind!",0
 error,account.invoice.line,0,"Line with ""line"" type must have an account!","Eine Zeile vom Typ ""Position"" muss einem Konto zugeordnet sein!",0
 error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","Eine Zeile, die nicht vom Typ ""Position"" ist, muss einer Rechnung zugeordnet sein!",0
@@ -51,6 +51,7 @@ field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Zahlbarer Betr
 field,"account.invoice,comment",0,Comment,Kommentar,0
 field,"account.invoice,company",0,Company,Unternehmen,0
 field,"account.invoice,currency",0,Currency,Währung,0
+field,"account.invoice,currency_date",0,Currency Date,Währungsdatum,0
 field,"account.invoice,currency_digits",0,Currency Digits,Währung (signifikante Stellen),0
 field,"account.invoice,description",0,Description,Beschreibung,0
 field,"account.invoice,invoice_address",0,Invoice Address,Rechnungsadresse,0
@@ -79,7 +80,7 @@ field,"account.invoice,untaxed_amount",0,Untaxed,Netto,0
 field,"account.invoice-account.move.line,invoice",0,Invoice,Rechnung,0
 field,"account.invoice-account.move.line,line",0,Payment Line,Zahlungsposition,0
 field,"account.invoice-account.move.line,rec_name",0,Name,Name,0
-field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Verrechnung,0
+field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Mit Verrechnung,0
 field,"account.invoice.line,account",0,Account,Konto,0
 field,"account.invoice.line,amount",0,Amount,Betrag,0
 field,"account.invoice.line,company",0,Company,Unternehmen,0
@@ -170,7 +171,7 @@ field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Nummernk
 field,"party.address,invoice",0,Invoice,Rechnungsadresse,0
 field,"party.party,payment_term",0,Invoice Payment Term,Zahlungsbedingung Verkauf,0
 field,"party.party,supplier_payment_term",0,Supplier Payment Term,Zahlungsbedingung Einkauf,0
-help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.",Bei Aktivierung werden die aktuelle(n ) Rechnung(en) und Gutschrift(en) bezahlt und abgestimmt.,0
+help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.",Bei Aktivierung werden die ausgewählte(n ) Rechnung(en) und hierzu neu erstellte(n) Gutschrift(en) auf bezahlt gesetzt und miteinander abgestimmt.,0
 help,"account.invoice.payment_term.line,percentage",0,In %,Eingabe in %,0
 help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Ordnet Positionen in aufsteigender Reihenfolge,0
 model,"account.invoice,name",0,Invoice,Rechnung,0
@@ -191,7 +192,7 @@ model,"account.invoice.payment_term.line.type,name",payment_term_line_type_perce
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Rest,0
 model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Druck Rechnung Warnung,0
 model,"account.invoice.tax,name",0,Invoice Tax,Rechnung Steuer,0
-model,"ir.action,name",act_invoice_form,All Invoices,Alle Rechnungen,0
+model,"ir.action,name",act_invoice_form,All Invoices,Alle Rechnungen/Gutschriften,0
 model,"ir.action,name",act_invoice_form2,Invoices,Rechnungen,0
 model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
 model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Gutschriften von Lieferanten,0
@@ -216,11 +217,11 @@ model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Fakturierte
 model,"ir.action,name",act_payment_term_form,Payment Terms,Zahlungsbedingungen,0
 model,"ir.action,name",act_payment_term_form2,Payment Terms,Zahlungsbedingungen,0
 model,"ir.action,name",credit_invoice,Credit,Gutschrift erstellen,0
-model,"ir.action,name",print_invoice_report,Invoice,Rechnung / Gutschrift drucken,0
+model,"ir.action,name",print_invoice_report,Invoice,Rechnung/Gutschrift,0
 model,"ir.action,name",report_invoice,Invoice,Rechnung,0
 model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Rechnung bezahlen,0
 model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Rechnung,0
-model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Alle Rechnungen,0
+model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Alle Rechnungen/Gutschriften,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Neue Gutschrift von Lieferant,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Entwürfe Lieferantengutschriften,0
@@ -277,7 +278,7 @@ odt,account.invoice,0,Tax,Steuer,0
 odt,account.invoice,0,Taxes,Steuern,0
 odt,account.invoice,0,Taxes:,Steuern:,0
 odt,account.invoice,0,Total (excl. taxes):,Netto:,0
-odt,account.invoice,0,Total:,Gesamt:,0
+odt,account.invoice,0,Total:,Rechnungsbetrag,0
 odt,account.invoice,0,Unit Price,Einzelpreis,0
 odt,account.invoice,0,VAT Number:,USt-ID-Nr.:,0
 odt,account.invoice,0,VAT:,USt-ID-Nr:,0
@@ -335,7 +336,7 @@ view,account.invoice.payment_term,0,Payment Term Line,Zahlungsbedingung Zeile,0
 view,account.invoice.payment_term,0,Payment Term Lines,Zeilen Zahlungsbedingung,0
 view,account.invoice.payment_term,0,Payment Terms,Zahlungsbedingung,0
 view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Warnung!</b>,0
-view,account.invoice.print_invoice_report.warning,0,Print Invoice,Rechnung / Gutschrift drucken,0
+view,account.invoice.print_invoice_report.warning,0,Print Invoice,Rechnung/Gutschrift drucken,0
 view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Die Rechnungen werden <i>direkt</i> an den Drucker gesendet.,0
 view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Sie haben mehr als eine Rechnung zum Ausdrucken gewählt.,0
 view,account.invoice.tax,0,Invoice Tax,Rechnungssteuer,0
diff --git a/fr_FR.csv b/fr_FR.csv
index ca0c5a6..2099488 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -55,6 +55,7 @@ field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Montant à pay
 field,"account.invoice,comment",0,Comment,Commentaire,0
 field,"account.invoice,company",0,Company,Société,0
 field,"account.invoice,currency",0,Currency,Devise,0
+field,"account.invoice,currency_date",0,Currency Date,Date du taux de change,0
 field,"account.invoice,currency_digits",0,Currency Digits,Décimales de la devise,0
 field,"account.invoice,description",0,Description,Description,0
 field,"account.invoice,invoice_address",0,Invoice Address,Adresse de facturation,0
diff --git a/invoice.py b/invoice.py
index dc621eb..2650967 100644
--- a/invoice.py
+++ b/invoice.py
@@ -79,6 +79,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         })
     currency_digits = fields.Function(fields.Integer('Currency Digits',
         on_change_with=['currency']), 'get_currency_digits')
+    currency_date = fields.Function(fields.Date('Currency Date',
+        on_change_with=['invoice_date']), 'get_currency_date',)
     journal = fields.Many2One('account.journal', 'Journal', required=True,
         states=_STATES, domain=[('centralised', '=', False)])
     move = fields.Many2One('account.move', 'Move', readonly=True)
@@ -91,7 +93,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     payment_term = fields.Many2One('account.invoice.payment_term',
         'Payment Term', required=True, states=_STATES)
     lines = fields.One2Many('account.invoice.line', 'invoice', 'Lines',
-        states=_STATES, on_change=['lines', 'taxes', 'currency', 'party', 'type'])
+        states=_STATES, on_change=[
+            'lines', 'taxes', 'currency', 'party', 'type'
+        ], depends=['currency_date'])
     taxes = fields.One2Many('account.invoice.tax', 'invoice', 'Tax Lines',
         states=_STATES, on_change=['lines', 'taxes', 'currency', 'party', 'type'])
     comment = fields.Text('Comment', states=_STATES)
@@ -119,6 +123,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
 
     def __init__(self):
         super(Invoice, self).__init__()
+        self._check_modify_exclude = ['state', 'payment_lines',
+                'invoice_report', 'invoice_report_format']
         self._rpc.update({
             'button_draft': True,
         })
@@ -267,6 +273,20 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             res[invoice.id] = invoice.currency.digits
         return res
 
+    def on_change_with_currency_date(self, vals):
+        date_obj = self.pool.get('ir.date')
+        today = date_obj.today()
+        date = vals.get('invoice_date') or today
+        return date
+
+    def get_currency_date(self, ids, name):
+        date_obj = self.pool.get('ir.date')
+        res = {}
+        today = date_obj.today()
+        for invoice in self.browse(ids):
+            res[invoice.id] = invoice.invoice_date or today
+        return res
+
     def on_change_with_party_lang(self, vals):
         party_obj = self.pool.get('party.party')
         if vals.get('party'):
@@ -507,8 +527,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 amount = - amount
                 amount_currency = - amount_currency
             if amount != _ZERO:
-                amount_currency += currency_obj.compute(
-                        invoice.company.currency, amount, invoice.currency)
+                with Transaction().set_context(date=invoice.currency_date):
+                    amount_currency += currency_obj.compute(
+                    invoice.company.currency.id, amount, invoice.currency.id)
             if amount_currency < _ZERO:
                 amount_currency = _ZERO
             res[invoice.id] = amount_currency
@@ -712,7 +733,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         for line in invoice.lines:
             val = line_obj.get_move_line(line)
             if val:
-                res.append(val)
+                res.extend(val)
         return res
 
     def _get_move_line_invoice_tax(self, invoice):
@@ -723,7 +744,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         res = []
         for tax in invoice.taxes:
             val = tax_obj.get_move_line(tax)
-            res.append(val)
+            if val:
+                res.extend(val)
         return res
 
     def _get_move_line(self, invoice, date, amount):
@@ -733,8 +755,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         currency_obj = self.pool.get('currency.currency')
         res = {}
         if invoice.currency.id != invoice.company.currency.id:
-            res['amount_second_currency'] = currency_obj.compute(
-                    invoice.company.currency, amount, invoice.currency)
+            with Transaction().set_context(date=invoice.currency_date):
+                res['amount_second_currency'] = currency_obj.compute(
+                    invoice.company.currency.id, amount, invoice.currency.id)
             res['amount_second_currency'] = abs(res['amount_second_currency'])
             res['second_currency'] = invoice.currency.id
         else:
@@ -868,8 +891,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         if isinstance(ids, (int, long)):
             ids = [ids]
         keys = vals.keys()
-        for key in ('state', 'payment_lines',
-                'invoice_report', 'invoice_report_format'):
+        for key in self._check_modify_exclude:
             if key in keys:
                 keys.remove(key)
         if len(keys):
@@ -1090,11 +1112,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         Generate invoice report and store it in invoice_report field.
         '''
         invoice_report = self.pool.get('account.invoice', type='report')
-        val = invoice_report.execute([invoice_id], {'id': invoice_id})
-        self.write(invoice_id, {
-            'invoice_report_format': val[0],
-            'invoice_report': val[1],
-            })
+        invoice_report.execute([invoice_id], {'id': invoice_id})
         return
 
     def _credit(self, invoice):
@@ -1253,7 +1271,8 @@ class InvoiceLine(ModelSQL, ModelView):
                 'invisible': Not(Equal(Eval('type'), 'line')),
             }, on_change=['product', 'unit', 'quantity', 'description',
                 '_parent_invoice.type', '_parent_invoice.party',
-                '_parent_invoice.currency', 'party', 'currency'])
+                '_parent_invoice.currency', '_parent_invoice.currency_date',
+                'party', 'currency', 'invoice'])
     account = fields.Many2One('account.account', 'Account',
             domain=[
                 ('kind', '!=', 'view'),
@@ -1492,6 +1511,8 @@ class InvoiceLine(ModelSQL, ModelView):
         company_obj = self.pool.get('company.company')
         currency_obj = self.pool.get('currency.currency')
         tax_rule_obj = self.pool.get('account.tax.rule')
+        invoice_obj = self.pool.get('account.invoice')
+        date_obj = self.pool.get('ir.date')
 
         if not vals.get('product'):
             return {}
@@ -1511,6 +1532,13 @@ class InvoiceLine(ModelSQL, ModelView):
         if Transaction().context.get('company'):
             company = company_obj.browse(Transaction().context['company'])
         currency = None
+        currency_date = date_obj.today()
+        if '_parent_invoice.currency_date' in vals:
+            if vals['_parent_invoice.currency_date']:
+                currency_date = vals['_parent_invoice.currency_date']
+        elif vals.get('invoice'):
+            invoice = invoice_obj.browse(vals['invoice'])
+            currency_date = invoice.currency_date
         if vals.get('_parent_invoice.currency') or vals.get('currency'):
             #TODO check if today date is correct
             currency = currency_obj.browse(
@@ -1520,8 +1548,10 @@ class InvoiceLine(ModelSQL, ModelView):
         if (vals.get('_parent_invoice.type') or vals.get('invoice_type')) \
                 in ('in_invoice', 'in_credit_note'):
             if company and currency:
-                res['unit_price'] = currency_obj.compute(company.currency,
-                        product.cost_price, currency, round=False)
+                with Transaction().set_context(date=currency_date):
+                    res['unit_price'] = currency_obj.compute(
+                            company.currency.id, product.cost_price,
+                            currency.id, round=False)
             else:
                 res['unit_price'] = product.cost_price
             try:
@@ -1546,8 +1576,10 @@ class InvoiceLine(ModelSQL, ModelView):
                     res['taxes'].extend(tax_ids)
         else:
             if company and currency:
-                res['unit_price'] = currency_obj.compute(company.currency,
-                        product.list_price, currency, round=False)
+                with Transaction().set_context(date=currency_date):
+                    res['unit_price'] = currency_obj.compute(
+                            company.currency.id, product.list_price,
+                            currency.id, round=False)
             else:
                 res['unit_price'] = product.list_price
             try:
@@ -1657,8 +1689,10 @@ class InvoiceLine(ModelSQL, ModelView):
                 base_code_id = tax['tax'].credit_note_base_code.id
                 amount = tax['base'] * tax['tax'].credit_note_base_sign
             if base_code_id:
-                amount = currency_obj.compute(line.invoice.currency, amount,
-                        line.invoice.company.currency)
+                with Transaction().set_context(
+                        date=line.invoice.currency_date):
+                    amount = currency_obj.compute(line.invoice.currency.id,
+                            amount, line.invoice.company.currency.id)
                 res.append({
                     'code': base_code_id,
                     'amount': amount,
@@ -1668,16 +1702,17 @@ class InvoiceLine(ModelSQL, ModelView):
 
     def get_move_line(self, line):
         '''
-        Return move line value for invoice line
+        Return a list of move lines values for invoice line
         '''
         currency_obj = self.pool.get('currency.currency')
         res = {}
         if line.type != 'line':
-            return res
+            return []
         res['name'] = line.description
         if line.invoice.currency.id != line.invoice.company.currency.id:
-            amount = currency_obj.compute(line.invoice.currency, line.amount,
-                    line.invoice.company.currency)
+            with Transaction().set_context(date=line.invoice.currency_date):
+                amount = currency_obj.compute(line.invoice.currency.id,
+                        line.amount, line.invoice.company.currency.id)
             res['amount_second_currency'] = line.amount
             res['second_currency'] = line.invoice.currency.id
         else:
@@ -1706,7 +1741,7 @@ class InvoiceLine(ModelSQL, ModelView):
         for tax in computed_taxes:
             res.setdefault('tax_lines', [])
             res['tax_lines'].append(('create', tax))
-        return res
+        return [res]
 
     def _credit(self, line):
         '''
@@ -1862,14 +1897,17 @@ class InvoiceTax(ModelSQL, ModelView):
 
     def get_move_line(self, tax):
         '''
-        Return move line value for invoice tax
+        Return a list of move lines values for invoice tax
         '''
         currency_obj = self.pool.get('currency.currency')
         res = {}
+        if not tax.amount:
+            return []
         res['name'] = tax.description
         if tax.invoice.currency.id != tax.invoice.company.currency.id:
-            amount = currency_obj.compute(tax.invoice.currency, tax.amount,
-                    tax.invoice.company.currency)
+            with Transaction().set_context(date=tax.invoice.currency_date):
+                amount = currency_obj.compute(tax.invoice.currency.id,
+                        tax.amount, tax.invoice.company.currency.id)
             res['amount_second_currency'] = tax.amount
             res['second_currency'] = tax.invoice.currency.id
         else:
@@ -1900,7 +1938,7 @@ class InvoiceTax(ModelSQL, ModelView):
                 'amount': amount * tax.tax_sign,
                 'tax': tax.tax and tax.tax.id or False
             })]
-        return res
+        return [res]
 
     def _credit(self, tax):
         '''
@@ -1996,6 +2034,10 @@ PrintInvoiceReport()
 class InvoiceReport(Report):
     _name = 'account.invoice'
 
+    def __init__(self):
+        super(InvoiceReport, self).__init__()
+        self._rpc['execute'] = True
+
     def execute(self, ids, datas):
         invoice_obj = self.pool.get('account.invoice')
 
@@ -2141,8 +2183,9 @@ class PayInvoiceAsk(ModelView):
 
         res = {}
         invoice = invoice_obj.browse(vals['invoice'])
-        amount = currency_obj.compute(vals['currency'], vals['amount'],
-                vals['currency_writeoff'])
+        with Transaction().set_context(date=invoice.currency_date):
+            amount = currency_obj.compute(vals['currency'], vals['amount'],
+                    vals['currency_writeoff'])
 
         res['amount_writeoff'] = Decimal('0.0')
         for line in line_obj.browse(vals['lines']):
@@ -2222,7 +2265,7 @@ class PayInvoice(Wizard):
 
         with Transaction().set_context(date=data['form']['date']):
             amount = currency_obj.compute(data['form']['currency'],
-                    data['form']['amount'], invoice.company.currency)
+                    data['form']['amount'], invoice.company.currency.id)
         res = invoice_obj.get_reconcile_lines_for_amount(invoice, amount)
         if res[1] == Decimal('0.0') and amount <= invoice.amount_to_pay:
             return 'pay'
@@ -2246,8 +2289,9 @@ class PayInvoice(Wizard):
         res['date'] = data['form']['date']
         res['company'] = invoice.company.id
 
-        amount = currency_obj.compute(data['form']['currency'],
-                data['form']['amount'], invoice.company.currency)
+        with Transaction().set_context(date=data['form']['date']):
+            amount = currency_obj.compute(data['form']['currency'],
+                data['form']['amount'], invoice.company.currency.id)
 
         if currency_obj.is_zero(invoice.company.currency, amount):
             res['lines'] = [x.id for x in invoice.lines_to_pay]
@@ -2288,7 +2332,7 @@ class PayInvoice(Wizard):
 
         with Transaction().set_context(date=data['form']['date']):
             amount = currency_obj.compute(data['form']['currency'],
-                    data['form']['amount'], invoice.company.currency)
+                    data['form']['amount'], invoice.company.currency.id)
 
         reconcile_lines = invoice_obj.get_reconcile_lines_for_amount(invoice,
                 amount)
diff --git a/invoice.xml b/invoice.xml
index 4d96349..4786c37 100644
--- a/invoice.xml
+++ b/invoice.xml
@@ -180,7 +180,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_form">
             <field name="name">All Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_form_view1">
@@ -199,7 +198,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_invoice_form">
             <field name="name">Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_invoice')]</field>
             <field name="context">{'type': 'out_invoice'}</field>
             <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
@@ -220,7 +218,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_invoice_form2">
             <field name="name">Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_invoice')]</field>
             <field name="context">{'type': 'out_invoice'}</field>
         </record>
@@ -241,7 +238,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_invoice_form3">
             <field name="name">Draft Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_invoice'), ('state', '=', 'draft')]</field>
             <field name="context">{'type': 'out_invoice'}</field>
         </record>
@@ -261,7 +257,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_invoice_form4">
             <field name="name">Pro Forma Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_invoice'), ('state', '=', 'proforma')]</field>
             <field name="context">{'type': 'out_invoice'}</field>
         </record>
@@ -281,7 +276,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_invoice_form5">
             <field name="name">Opened Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_invoice'), ('state', '=', 'open')]</field>
             <field name="context">{'type': 'out_invoice'}</field>
         </record>
@@ -301,7 +295,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_credit_note_form">
             <field name="name">Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_credit_note')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
             <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
@@ -322,7 +315,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_credit_note_form2">
             <field name="name">Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_credit_note')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
         </record>
@@ -343,7 +335,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_credit_note_form3">
             <field name="name">Draft Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_credit_note'), ('state', '=', 'draft')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
         </record>
@@ -363,7 +354,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_credit_note_form4">
             <field name="name">Pro Forma Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_credit_note'), ('state', '=', 'proforma')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
         </record>
@@ -383,7 +373,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_out_credit_note_form5">
             <field name="name">Opened Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_credit_note'), ('state', '=', 'open')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
         </record>
@@ -403,7 +392,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_invoice_form">
             <field name="name">Supplier Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_invoice')]</field>
             <field name="context">{'type': 'in_invoice'}</field>
             <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
@@ -424,7 +412,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_invoice_form2">
             <field name="name">Supplier Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_invoice')]</field>
             <field name="context">{'type': 'in_invoice'}</field>
         </record>
@@ -445,7 +432,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_invoice_form3">
             <field name="name">Draft Supplier Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_invoice'), ('state', '=', 'draft')]</field>
             <field name="context">{'type': 'in_invoice'}</field>
         </record>
@@ -465,7 +451,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_invoice_form4">
             <field name="name">Pro Forma Supplier Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_invoice'), ('state', '=', 'proforma')]</field>
             <field name="context">{'type': 'in_invoice'}</field>
         </record>
@@ -485,7 +470,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_invoice_form5">
             <field name="name">Opened Supplier Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_invoice'), ('state', '=', 'open')]</field>
             <field name="context">{'type': 'in_invoice'}</field>
         </record>
@@ -505,7 +489,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_credit_note_form">
             <field name="name">Supplier Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_credit_note')]</field>
             <field name="context">{'type': 'in_credit_note'}</field>
             <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
@@ -526,7 +509,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_credit_note_form2">
             <field name="name">Supplier Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_credit_note')]</field>
             <field name="context">{'type': 'in_credit_note'}</field>
         </record>
@@ -547,7 +529,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_credit_note_form3">
             <field name="name">Draft Supplier Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_credit_note'), ('state', '=', 'draft')]</field>
             <field name="context">{'type': 'in_credit_note'}</field>
         </record>
@@ -567,7 +548,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_credit_note_form4">
             <field name="name">Pro Forma Supplier Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_credit_note'), ('state', '=', 'proforma')]</field>
             <field name="context">{'type': 'in_credit_note'}</field>
         </record>
@@ -587,7 +567,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_in_credit_note_form5">
             <field name="name">Opened Supplier Credit Notes</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_credit_note'), ('state', '=', 'open')]</field>
             <field name="context">{'type': 'in_credit_note'}</field>
         </record>
diff --git a/nl_NL.csv b/nl_NL.csv
new file mode 100644
index 0000000..85e232c
--- /dev/null
+++ b/nl_NL.csv
@@ -0,0 +1,356 @@
+type,name,res_id,src,value,fuzzy
+error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,U kunt de factuurreeks niet meer aanpassen als er in dit boekjaar al een factuur is geboekt.,0
+error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,U moet per boekjaar verschillende factuurreeksen hebben!,0
+error,account.invoice,0,"Base taxes different from invoice lines!
+Re-compute the invoice.","Standaard belasting wijkt af van factuurregels!
+Herbereken de factuur.",0
+error,account.invoice,0,"Taxes defined but not on invoice lines!
+Re-compute the invoice.","Belasting gedefinieerd maar niet op deze factuurregels!
+Herbereken de factuur.",0
+error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
+Re-compute the invoice.","Belasting gedefinieerd op factuurregels, maar niet op de factuur!
+Herbereken de factuur.",0
+error,account.invoice,0,The credit account on journal is missing!,De credit boeking ontbreekt!,0
+error,account.invoice,0,The credit account on journal is the same than the invoice account!,De credit rekening in het dagboek is dezelfde als de factuur rekening.,0
+error,account.invoice,0,The debit account on journal is missing!,De debit boeking ontbreekt!,0
+error,account.invoice,0,The debit account on journal is the same than the invoice account!,De debit rekening in het dagboek is dezelfde als de factuur rekening.,0
+error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Er is geen factuurreeks voor deze periode / dit boekjaar!,0
+error,account.invoice,0,"You can not create an invoice
+with account from a different invoice company!","U kunt geen factuur aanmaken
+op een rekening van een ander bedrijf!",0
+error,account.invoice,0,"You can not modify an invoice that is opened, paid!",U kunt een openstaande of betaalde factuur niet wijzigen!,0
+error,account.invoice,0,You can not reset to draft an invoice that has move!,Een geboekte factuur kunt u niet terugzetten naar concept!,0
+error,account.invoice,0,"You can not use the same account
+as on invoice line!","U kunt niet dezelfde rekening gebruiken
+als op de factuurregel!",0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Alleen een openstaande factuur kunt u crediteren met terugbetaling!,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,Een (gedeeltelijk) betaalde factuur kunt u niet crediteren met terugbetaling!,0
+error,account.invoice.line,0,"Line with ""line"" type must have an account!","Regel met ""regel"" type moet een rekening hebben!",0
+error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","Een regel zonder ""regel"" moet een factuur hebben!",0
+error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde factuur!",0
+error,account.invoice.line,0,"You can not create invoice line
+with account with a different invoice company!","U kunt geen factuurregel aanmaken
+op een rekening van een ander bedrijf!",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",U kunt geen regel aanpassen van een openstraande of betaalde factuur!,0
+error,account.invoice.line,0,"You can not use the same account
+as on the invoice!","U kunt niet dezelfde rekening 
+gebruiken als op de factuur!",0
+error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,U kunt geen gedeeltelijke betaling boeken die groter is dan het te betalen bedrag!,0
+error,account.invoice.payment_term,0,Invalid payment term line!,Ongeldige betalingstermijn!,0
+error,account.invoice.payment_term,0,Payment term missing a remainder line!,De betalingstermijn mist een restantregel!,0
+error,account.invoice.payment_term.line.delay,0,The code must be unique!,De code moet uniek zijn!,0
+error,account.invoice.payment_term.line.type,0,The code must be unique!,De code moet uniek zijn!,0
+error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","U kunt geen regels toevoegen aan een openstaande, betaalde of geannuleerde factuur!",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",U kunt de belasting niet aanpassen van een openstaande of betaalde factuur!,0
+error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,U kunt niet de factuurreeks aanpassen als er al een factuur in deze periode is geboekt,0
+error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,U moet per boekjaar verschillende factuurreeksen hebben binnen hetzelfde bedrijf!,0
+field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Credit inkoopnota reeks,0
+field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Inkoopfactuurreeks,0
+field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Credit verkoopnota reeks,0
+field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Verkoopfactuur reeks,0
+field,"account.invoice,account",0,Account,Rekening,0
+field,"account.invoice,accounting_date",0,Accounting Date,Boekingsdatum,0
+field,"account.invoice,amount_to_pay",0,Amount to Pay,Te betalen bedrag,0
+field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Vandaag te betalen bedrag,0
+field,"account.invoice,comment",0,Comment,Opmerking,0
+field,"account.invoice,company",0,Company,Bedrijf,0
+field,"account.invoice,currency",0,Currency,Valuta,0
+field,"account.invoice,currency_digits",0,Currency Digits,Valuta decimalen,0
+field,"account.invoice,description",0,Description,Omschrijving,0
+field,"account.invoice,invoice_address",0,Invoice Address,Factuuradres,0
+field,"account.invoice,invoice_date",0,Invoice Date,Factuurdatum,0
+field,"account.invoice,invoice_report",0,Invoice Report,Factuuroverzicht,0
+field,"account.invoice,invoice_report_format",0,Invoice Report Format,Opmaak factuuroverzicht,0
+field,"account.invoice,journal",0,Journal,Dagboek,0
+field,"account.invoice,lines",0,Lines,Regels,0
+field,"account.invoice,lines_to_pay",0,Lines to Pay,Te betalen boekingen,0
+field,"account.invoice,move",0,Move,Boeking,0
+field,"account.invoice,number",0,Number,Nummer,0
+field,"account.invoice,party",0,Party,Relatie,0
+field,"account.invoice,party_lang",0,Party Language,Taal relatie,0
+field,"account.invoice,payment_lines",0,Payment Lines,Betalingen,0
+field,"account.invoice,payment_term",0,Payment Term,Betalingstermijn,0
+field,"account.invoice,rec_name",0,Name,Naam,0
+field,"account.invoice,reconciled",0,Reconciled,Afgeletterd,0
+field,"account.invoice,reference",0,Reference,Referentie,0
+field,"account.invoice,state",0,State,Status,0
+field,"account.invoice,tax_amount",0,Tax,Belasting,0
+field,"account.invoice,taxes",0,Tax Lines,Belastingregels,0
+field,"account.invoice,total_amount",0,Total,Totaal,0
+field,"account.invoice,type",0,Type,Type,0
+field,"account.invoice,type_name",0,Type,Type,0
+field,"account.invoice,untaxed_amount",0,Untaxed,Onbelast,0
+field,"account.invoice-account.move.line,invoice",0,Invoice,Verkoopfactuur,0
+field,"account.invoice-account.move.line,line",0,Payment Line,Betalingen,0
+field,"account.invoice-account.move.line,rec_name",0,Name,Naam,0
+field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Met restitutie,0
+field,"account.invoice.line,account",0,Account,Rekening,0
+field,"account.invoice.line,amount",0,Amount,Bedrag,0
+field,"account.invoice.line,company",0,Company,Bedrijf,0
+field,"account.invoice.line,currency",0,Currency,Valuta,0
+field,"account.invoice.line,currency_digits",0,Currency Digits,Valuta decimalen,0
+field,"account.invoice.line,description",0,Description,Omschrijving,0
+field,"account.invoice.line,invoice",0,Invoice,Verkoopfactuur,0
+field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Belastingen factuur,0
+field,"account.invoice.line,invoice_type",0,Invoice Type,Factuurtype,0
+field,"account.invoice.line,note",0,Note,Aantekening,0
+field,"account.invoice.line,party",0,Party,Relatie,0
+field,"account.invoice.line,party_lang",0,Party Language,Taal relatie,0
+field,"account.invoice.line,product",0,Product,Product,0
+field,"account.invoice.line,quantity",0,Quantity,Hoeveelheid,0
+field,"account.invoice.line,rec_name",0,Name,Naam,0
+field,"account.invoice.line,sequence",0,Sequence,Reeks,0
+field,"account.invoice.line,taxes",0,Taxes,Belastingen,0
+field,"account.invoice.line,type",0,Type,Type,0
+field,"account.invoice.line,unit",0,Unit,Eenheid,0
+field,"account.invoice.line,unit_digits",0,Unit Digits,Decimalen eenheid,0
+field,"account.invoice.line,unit_price",0,Unit Price,Eenheidsprijs,0
+field,"account.invoice.line-account.tax,line",0,Invoice Line,Factuurregel,0
+field,"account.invoice.line-account.tax,rec_name",0,Name,Naam,0
+field,"account.invoice.line-account.tax,tax",0,Tax,Belasting,0
+field,"account.invoice.pay_invoice.ask,account",0,Account,Rekening,0
+field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Rekening afschrijving,0
+field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Bedrag betaling,0
+field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Rekening afschrijving,0
+field,"account.invoice.pay_invoice.ask,company",0,Company,Bedrijf,0
+field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Valuta betaling,0
+field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Decimalen valuta betaling,0
+field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Decimalen valuta afschrijving,0
+field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Valuta afschrijving,0
+field,"account.invoice.pay_invoice.ask,date",0,Date,Datum,0
+field,"account.invoice.pay_invoice.ask,description",0,Description,Omschrijving,0
+field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Verkoopfactuur,0
+field,"account.invoice.pay_invoice.ask,journal",0,Journal,Dagboek,0
+field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Dagboek afschrijving,0
+field,"account.invoice.pay_invoice.ask,lines",0,Lines,Regels,0
+field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Te betalen boekingen,0
+field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Betalingen,0
+field,"account.invoice.pay_invoice.ask,type",0,Type,Type,0
+field,"account.invoice.pay_invoice.init,amount",0,Amount,Bedrag,0
+field,"account.invoice.pay_invoice.init,currency",0,Currency,Valuta,0
+field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Valuta decimalen,0
+field,"account.invoice.pay_invoice.init,date",0,Date,Datum,0
+field,"account.invoice.pay_invoice.init,description",0,Description,Omschrijving,0
+field,"account.invoice.pay_invoice.init,journal",0,Journal,Dagboek,0
+field,"account.invoice.payment_term,active",0,Active,Actief,0
+field,"account.invoice.payment_term,description",0,Description,Omschrijving,0
+field,"account.invoice.payment_term,lines",0,Lines,Regels,0
+field,"account.invoice.payment_term,name",0,Payment Term,Betalingstermijn,0
+field,"account.invoice.payment_term,rec_name",0,Name,Naam,0
+field,"account.invoice.payment_term.line,amount",0,Amount,Bedrag,0
+field,"account.invoice.payment_term.line,currency",0,Currency,Valuta,0
+field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Valuta decimalen,0
+field,"account.invoice.payment_term.line,days",0,Number of Days,Aantal dagen,0
+field,"account.invoice.payment_term.line,delay",0,Condition,Voorwaarde,0
+field,"account.invoice.payment_term.line,payment",0,Payment Term,Betalingstermijn,0
+field,"account.invoice.payment_term.line,percentage",0,Percentage,Percentage,0
+field,"account.invoice.payment_term.line,rec_name",0,Name,Naam,0
+field,"account.invoice.payment_term.line,sequence",0,Sequence,Reeks,0
+field,"account.invoice.payment_term.line,type",0,Type,Type,0
+field,"account.invoice.payment_term.line.delay,code",0,Code,Code,0
+field,"account.invoice.payment_term.line.delay,name",0,Name,Naam,0
+field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Naam,0
+field,"account.invoice.payment_term.line.type,code",0,Code,Code,0
+field,"account.invoice.payment_term.line.type,name",0,Name,Naam,0
+field,"account.invoice.payment_term.line.type,rec_name",0,Name,Naam,0
+field,"account.invoice.tax,account",0,Account,Rekening,0
+field,"account.invoice.tax,amount",0,Amount,Bedrag,0
+field,"account.invoice.tax,base",0,Base,Basis,0
+field,"account.invoice.tax,base_code",0,Base Code,Basiscode,0
+field,"account.invoice.tax,base_sign",0,Base Sign,Basisteken,0
+field,"account.invoice.tax,description",0,Description,Omschrijving,0
+field,"account.invoice.tax,invoice",0,Invoice,Verkoopfactuur,0
+field,"account.invoice.tax,manual",0,Manual,Handmatig,0
+field,"account.invoice.tax,rec_name",0,Name,Naam,0
+field,"account.invoice.tax,sequence",0,Sequence,Reeks,0
+field,"account.invoice.tax,sequence_number",0,Sequence Number,Reeksnummer,0
+field,"account.invoice.tax,tax",0,Tax,Belasting,0
+field,"account.invoice.tax,tax_code",0,Tax Code,Belastingcode,0
+field,"account.invoice.tax,tax_sign",0,Tax Sign,Teken belasting,0
+field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Credit inkoopnota reeks,0
+field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Inkoopfactuurreeks,0
+field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Credit verkoopnota reeks,0
+field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Verkoopfactuur reeks,0
+field,"party.address,invoice",0,Invoice,Verkoopfactuur,0
+field,"party.party,payment_term",0,Invoice Payment Term,Betalingstermijn debiteur,0
+field,"party.party,supplier_payment_term",0,Supplier Payment Term,Betalingstermijn crediteur,0
+help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Zo ja, dan zullen deze facturen betaald worden.",0
+help,"account.invoice.payment_term.line,percentage",0,In %,In %,0
+help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Gebruiken voor oplopend sorteren,0
+model,"account.invoice,name",0,Invoice,Verkoopfactuur,0
+model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Factuurbetalingen,0
+model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Creditnota gaan aanmaken,0
+model,"account.invoice.line,name",0,Invoice Line,Factuurregel,0
+model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Factuurregel - belasting,0
+model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Betaal factuur vragen,0
+model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Factuur gaan betalen,0
+model,"account.invoice.payment_term,name",0,Payment Term,Betalingstermijn,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Betalingstermijn regel,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Betalingstermijn uitstelregel,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Einde van de maand,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Dagen netto,0
+model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Betalingstermijn regeltype,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Vast,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Percentage,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Restant,0
+model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Afdrukken waarschuwwing factuuroverzicht,0
+model,"account.invoice.tax,name",0,Invoice Tax,Belasting factuur,0
+model,"ir.action,name",act_invoice_form,All Invoices,Alle facturen,0
+model,"ir.action,name",act_invoice_form2,Invoices,Verkoopfacturen,0
+model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Credit inkoopnota's,0
+model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Credit inkoopnota's,0
+model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Concept credit inkoopnota's,0
+model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro forma credit inkoopnota's,0
+model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Openstaande credit inkoopnota's,0
+model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Inkoopfacturen,0
+model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Inkoopfacturen,0
+model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Concept inkoopfacturen,0
+model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro forma inkoopfacturen,0
+model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Openstaande inkoopfacturen,0
+model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Credit verkoopnota's,0
+model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Credit verkoopnota's,0
+model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Concept credit verkoopnota's,0
+model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro forma credit verkoopnota's,0
+model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Openstaande credit inkoopnota's,0
+model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Verkoopfacturen,0
+model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Verkoopfacturen,0
+model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Concept verkoopfacturen,0
+model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Pro forma verkoopfacturen,0
+model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Openstaande verkoopfacturen,0
+model,"ir.action,name",act_payment_term_form,Payment Terms,Betalingstermijnen,0
+model,"ir.action,name",act_payment_term_form2,Payment Terms,Betalingstermijnen,0
+model,"ir.action,name",credit_invoice,Credit,Credit,0
+model,"ir.action,name",print_invoice_report,Invoice,Factuur,0
+model,"ir.action,name",report_invoice,Invoice,Verkoopfactuur,0
+model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Betaal factuur,0
+model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Verkoopfactuur,0
+model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Alle facturen,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Credit inkoopnota's,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nieuwe credit inkoopnota,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Concept credit inkoopnota's,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro forma credit inkoopnota's,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Openstaande credit inkoopnota's,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Inkoopfacturen,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Nieuwe inkoopfactuur,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Concept inkoopfacturen,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro forma inkoopfacturen,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Openstaande inkoopfacturen,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Credit verkoopnota's,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nieuwe credit verkoopnota,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Concept credit verkoopnota's,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro forma credit verkoopnota's,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Openstaande credit inkoopnota's,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Verkoopfacturen,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nieuwe verkoopfactuur,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Concept verkoopfacturen,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Pro forma verkoopfacturen,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Openstaande verkoopfacturen,0
+model,"ir.ui.menu,name",menu_invoices,Invoices,Facturen,0
+model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Betalingstermijnen,0
+model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Nieuwe betalingstermijn,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Betalingstermijnen,0
+model,"workflow,name",invoice_workflow,Invoice workflow,Procedure facturatie,0
+model,"workflow.activity,name",invoice_activity_cancel,Canceled,Geannuleerd,0
+model,"workflow.activity,name",invoice_activity_draft,Draft,Concept,0
+model,"workflow.activity,name",invoice_activity_open,Open,Open,0
+model,"workflow.activity,name",invoice_activity_paid,Paid,Betaald,0
+model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
+odt,account.invoice,0,Amount,Bedrag,0
+odt,account.invoice,0,Base,Basisbedrag,0
+odt,account.invoice,0,Credit Note N°:,Creditnotanummer:,0
+odt,account.invoice,0,Date,Vervaldatum,0
+odt,account.invoice,0,Date:,Datum:,0
+odt,account.invoice,0,Description,Specificatie,0
+odt,account.invoice,0,Description:,Betreft:,0
+odt,account.invoice,0,Draft Credit Note,Concept creditnota,0
+odt,account.invoice,0,Draft Invoice,Concept verkoopfactuur,0
+odt,account.invoice,0,Draft Supplier Credit Note,Concept credit inkoopnota,0
+odt,account.invoice,0,Draft Supplier Invoice,Concept inkoopfactuur,0
+odt,account.invoice,0,E-Mail:,E-mail:,0
+odt,account.invoice,0,Invoice N°:,Factuur:,0
+odt,account.invoice,0,Payment Term,Betalingstermijn,0
+odt,account.invoice,0,Phone:,Telefoon:,0
+odt,account.invoice,0,Pro forma Credit Note,Pro forma creditnota,0
+odt,account.invoice,0,Pro forma Invoice,Pro forma verkoopfactuur,0
+odt,account.invoice,0,Pro forma Supplier Credit Note,Pro forma credit inkoopnota,0
+odt,account.invoice,0,Pro forma Supplier Invoice,Pro forma factuur,0
+odt,account.invoice,0,Quantity,Hoeveelheid,0
+odt,account.invoice,0,Supplier Credit Note N°:,Credit inkoopnotanummer:,0
+odt,account.invoice,0,Supplier Invoice N°:,Inkoopfactuurnummer:,0
+odt,account.invoice,0,Tax,Belasting,0
+odt,account.invoice,0,Taxes,Belastingen,0
+odt,account.invoice,0,Taxes:,Belastingen:,0
+odt,account.invoice,0,Total (excl. taxes):,Totaal (excl. belasting):,0
+odt,account.invoice,0,Total:,Totaal:,0
+odt,account.invoice,0,Unit Price,Eenheids- prijs,0
+odt,account.invoice,0,VAT Number:,BTW-nummer:,0
+odt,account.invoice,0,VAT:,BTW:,0
+selection,"account.invoice,state",0,Canceled,Geannuleerd,0
+selection,"account.invoice,state",0,Draft,Concept,0
+selection,"account.invoice,state",0,Opened,Geopend,0
+selection,"account.invoice,state",0,Paid,Betaald,0
+selection,"account.invoice,state",0,Pro forma,Pro forma,0
+selection,"account.invoice,type",0,Credit Note,Credit verkoopnota,0
+selection,"account.invoice,type",0,Invoice,Verkoopfactuur,0
+selection,"account.invoice,type",0,Supplier Credit Note,Credit inkoopnota,0
+selection,"account.invoice,type",0,Supplier Invoice,Inkoopfactuur,0
+selection,"account.invoice.line,invoice_type",0,Credit Note,Credit verkoopnota,0
+selection,"account.invoice.line,invoice_type",0,Invoice,Verkoopfactuur,0
+selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Credit inkoopnota,0
+selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Inkoopfactuur,0
+selection,"account.invoice.line,type",0,Comment,Opmerking,0
+selection,"account.invoice.line,type",0,Line,Regel,0
+selection,"account.invoice.line,type",0,Subtotal,Subtotaal,0
+selection,"account.invoice.line,type",0,Title,Titel,0
+selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Deelbetaling,0
+selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Afschrijven,0
+view,account.invoice,0,Amount Second Currency,Bedrag alternatieve valuta,0
+view,account.invoice,0,Credit,Credit,0
+view,account.invoice,0,Debit,Debit,0
+view,account.invoice,0,Invoice,Verkoopfactuur,0
+view,account.invoice,0,Invoices,Verkoopfacturen,0
+view,account.invoice,0,Lines,Regels,0
+view,account.invoice,0,Other Info,Aanvullende informatie,0
+view,account.invoice,0,Payment,Betaling,0
+view,account.invoice,0,Payment Lines,Betalingen,0
+view,account.invoice,0,Pro For_ma,Pro For_ma,0
+view,account.invoice,0,Taxes,Belastingen,0
+view,account.invoice,0,_Cancel,_Annuleren,0
+view,account.invoice,0,_Draft,_Concept,0
+view,account.invoice,0,_Open,_Open,0
+view,account.invoice,0,_Pay,_Betalen,0
+view,account.invoice,0,_Reset to Draft,_Terug naar concept,0
+view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Wilt u deze factuur/facturen echt crediteren?,0
+view,account.invoice.credit_invoice.init,0,Credit Invoice,Credit verkoopfactuur,0
+view,account.invoice.line,0,General,Algemeen,0
+view,account.invoice.line,0,Invoice Line,Factuurregel,0
+view,account.invoice.line,0,Invoice Lines,Factuurregels,0
+view,account.invoice.line,0,Notes,Aantekeningen,0
+view,account.invoice.line,0,Products,Producten,0
+view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Bedrag alternatieve valuta,0
+view,account.invoice.pay_invoice.ask,0,Credit,Credit,0
+view,account.invoice.pay_invoice.ask,0,Debit,Debit,0
+view,account.invoice.pay_invoice.ask,0,Lines to Pay,Te betalen boekingen,0
+view,account.invoice.pay_invoice.ask,0,Pay Invoice,Betaal factuur,0
+view,account.invoice.pay_invoice.ask,0,Payment Lines,Betalingen,0
+view,account.invoice.pay_invoice.init,0,Pay Invoice,Betaal factuur,0
+view,account.invoice.payment_term,0,Payment Term,Betalingstermijn,0
+view,account.invoice.payment_term,0,Payment Term Line,Betalingstermijn regel,0
+view,account.invoice.payment_term,0,Payment Term Lines,Betalingstermijn regels,0
+view,account.invoice.payment_term,0,Payment Terms,Betalingstermijnen,0
+view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Waarschuwing!</b>,0
+view,account.invoice.print_invoice_report.warning,0,Print Invoice,Factuur afdrukken,0
+view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,De factuur wordt <i>direct</i> afgedrukt.,0
+view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,U heeft meer dan één factuur geselecteerd om af te drukken.,0
+view,account.invoice.tax,0,Invoice Tax,Belasting factuur,0
+view,account.invoice.tax,0,Invoice Taxes,Belastingen factuur,0
+view,account.invoice.tax,0,Tax Code,Belastingcode,0
+view,party.party,0,Payment Terms,Betalingstermijnen,0
+wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Credit,0
+wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Annuleren,0
+wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Annuleren,0
+wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Oké,0
+wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,Oké,0
+wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Annuleren,0
+wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Annuleren,0
+wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Afdrukken,0
diff --git a/party.xml b/party.xml
index 51ba039..bee9947 100644
--- a/party.xml
+++ b/party.xml
@@ -57,7 +57,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_invoice_form2">
             <field name="name">Invoices</field>
             <field name="res_model">account.invoice</field>
-            <field name="view_type">form</field>
             <field name="domain">[("party", "=", Eval('active_id'))]</field>
         </record>
         <record model="ir.action.keyword"
diff --git a/payment_term.xml b/payment_term.xml
index 24d7434..6819a64 100644
--- a/payment_term.xml
+++ b/payment_term.xml
@@ -64,7 +64,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_payment_term_form">
             <field name="name">Payment Terms</field>
             <field name="res_model">account.invoice.payment_term</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view" id="act_payment_term_form_view1">
             <field name="sequence" eval="10"/>
@@ -82,7 +81,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_payment_term_form2">
             <field name="name">Payment Terms</field>
             <field name="res_model">account.invoice.payment_term</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view" id="act_payment_term_form2_view1">
             <field name="sequence" eval="10"/>
diff --git a/setup.py b/setup.py
index 0c8a456..1129c66 100644
--- a/setup.py
+++ b/setup.py
@@ -44,12 +44,16 @@ setup(name='trytond_account_invoice',
         'Intended Audience :: Financial and Insurance Industry',
         'Intended Audience :: Legal Industry',
         'License :: OSI Approved :: GNU General Public License (GPL)',
+        'Natural Language :: Bulgarian',
+        'Natural Language :: Dutch',
         'Natural Language :: English',
         'Natural Language :: French',
         'Natural Language :: German',
         'Natural Language :: Spanish',
         'Operating System :: OS Independent',
-        'Programming Language :: Python',
+        'Programming Language :: Python :: 2.5',
+        'Programming Language :: Python :: 2.6',
+        'Programming Language :: Python :: 2.7',
         'Topic :: Office/Business',
         'Topic :: Office/Business :: Financial :: Accounting',
     ],
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 6b8ea09..6777ebc 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.8.0
+Version: 2.0.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.8/
+Download-URL: http://downloads.tryton.org/2.0/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
@@ -24,11 +24,15 @@ Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
 Classifier: Natural Language :: French
 Classifier: Natural Language :: German
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
 Classifier: Topic :: Office/Business
 Classifier: Topic :: Office/Business :: Financial :: Accounting
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index 1e802a8..c451b44 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -6,12 +6,14 @@ MANIFEST.in
 README
 TODO
 account.xml
+bg_BG.csv
 de_DE.csv
 es_CO.csv
 es_ES.csv
 fr_FR.csv
 invoice.odt
 invoice.xml
+nl_NL.csv
 party.xml
 payment_term.xml
 setup.py
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index a1da11c..12e3930 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -1,8 +1,8 @@
 python-dateutil
-trytond_account >= 1.8, < 1.9
-trytond_company >= 1.8, < 1.9
-trytond_party >= 1.8, < 1.9
-trytond_product >= 1.8, < 1.9
-trytond_currency >= 1.8, < 1.9
-trytond_account_product >= 1.8, < 1.9
-trytond >= 1.8, < 1.9
\ No newline at end of file
+trytond_account >= 2.0, < 2.1
+trytond_company >= 2.0, < 2.1
+trytond_party >= 2.0, < 2.1
+trytond_product >= 2.0, < 2.1
+trytond_currency >= 2.0, < 2.1
+trytond_account_product >= 2.0, < 2.1
+trytond >= 2.0, < 2.1
\ No newline at end of file
commit a23dba242f6c35667ee8159064d9f2bfeb877228
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Apr 26 21:08:52 2011 +0200

    Updating to standards version 3.9.2.

diff --git a/debian/control b/debian/control
index 9c1ce7d..cbf6bf9 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
  Mathias Behrle <mathiasb at m9s.biz>
 Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
-Standards-Version: 3.9.1
+Standards-Version: 3.9.2
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
commit 96a95d45595b6c08c69456d98af7299521059e12
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Feb 15 13:04:47 2011 +0100

    Releasing debian version 1.8.0-2.

diff --git a/debian/changelog b/debian/changelog
index 5690a68..3e307fa 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-account-invoice (1.8.0-2) unstable; urgency=low
+
+  * Changing my email address.
+  * Setting minimal Python version to 2.5.
+  * Updating Copyright.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 15 Feb 2011 13:04:18 +0100
+
 tryton-modules-account-invoice (1.8.0-1) experimental; urgency=low
 
   * Updating standards version to 3.9.0.
commit c586ebe831e199e62479b8358768b3b62b080ea1
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Feb 15 12:38:40 2011 +0100

    Updating Copyright.

diff --git a/debian/copyright b/debian/copyright
index 6146982..bf68e1b 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -27,7 +27,7 @@ License: GPL-3+
  can be found in /usr/share/common-licenses/GPL-3 file.
 
 Files: debian/*
-Copyright: (C) 2009-2010 Daniel Baumann <daniel at debian.org>
+Copyright: (C) 2009-2011 Daniel Baumann <daniel at debian.org>
 License: GPL-3+
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
commit 8bb452a84b1b088056672f6eb4d44821a10d0c9d
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Jan 15 17:27:15 2011 +0100

    Setting minimal Python version to 2.5.

diff --git a/debian/pyversions b/debian/pyversions
index 8b253bc..b3dc41e 100644
--- a/debian/pyversions
+++ b/debian/pyversions
@@ -1 +1 @@
-2.4-
+2.5-
commit 590e41baf152e1d71a21fab5d00f75703b68b322
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Nov 20 11:48:51 2010 +0100

    Changing my email address.

diff --git a/debian/control b/debian/control
index 6c745c8..9c1ce7d 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: optional
 Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
 Uploaders:
  Daniel Baumann <daniel at debian.org>,
- Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
+ Mathias Behrle <mathiasb at m9s.biz>
 Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
 Standards-Version: 3.9.1
commit ab399a23e91ae373e53447bc1b534086f09ef92c
Author: Daniel Baumann <daniel at debian.org>
Date:   Fri Nov 12 12:52:07 2010 +0100

    Releasing debian version 1.8.0-1.

diff --git a/debian/changelog b/debian/changelog
index 81b4837..5690a68 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+tryton-modules-account-invoice (1.8.0-1) experimental; urgency=low
+
+  * Updating standards version to 3.9.0.
+  * Updating to debhelper version 8.
+  * Updating to standards version 3.9.1.
+  * Switching to source format 3.0 (quilt).
+  * Merging upstream version 1.8.0.
+  * Updating versioned tryton depends to 1.8.
+
+ -- Daniel Baumann <daniel at debian.org>  Fri, 12 Nov 2010 12:51:59 +0100
+
 tryton-modules-account-invoice (1.6.0-1) unstable; urgency=low
 
   [ Daniel Baumann ]
commit ff84b0a6efd27f40de6e385be5628f89e5187c6c
Author: Daniel Baumann <daniel at debian.org>
Date:   Thu Nov 4 20:05:00 2010 +0100

    Updating versioned tryton depends to 1.8.

diff --git a/debian/control b/debian/control
index c27dbec..6c745c8 100644
--- a/debian/control
+++ b/debian/control
@@ -15,10 +15,10 @@ Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invo
 Package: tryton-modules-account-invoice
 Architecture: all
 Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.6),
- tryton-modules-account (>= 1.6), tryton-modules-account-product (>= 1.6),
- tryton-modules-company (>= 1.6), tryton-modules-currency (>= 1.6),
- tryton-modules-party (>= 1.6), tryton-modules-product (>= 1.6),
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.8),
+ tryton-modules-account (>= 1.8), tryton-modules-account-product (>= 1.8),
+ tryton-modules-company (>= 1.8), tryton-modules-currency (>= 1.8),
+ tryton-modules-party (>= 1.8), tryton-modules-product (>= 1.8),
  python-dateutil, python-pkg-resources
 XB-Python-Version: ${python:Versions}
 Description: Tryton Application Platform (Financial and Accounting Module)
commit c54cf292459914a400e85e25637113980c908afc
Author: Daniel Baumann <daniel at debian.org>
Date:   Thu Nov 4 20:04:42 2010 +0100

    Merging upstream version 1.8.0.

diff --git a/CHANGELOG b/CHANGELOG
index 21c26eb..b713a73 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.8.0 - 2010-11-01
+* Bug fixes (see mercurial logs for details)
+
 Version 1.6.0 - 2010-05-13
 * Bug fixes (see mercurial logs for details)
 * Add default search value on invoice
diff --git a/INSTALL b/INSTALL
index 59ecffa..45fe3da 100644
--- a/INSTALL
+++ b/INSTALL
@@ -4,7 +4,7 @@ Installing trytond_account_invoice
 Prerequisites
 -------------
 
- * Python 2.4 or later (http://www.python.org/)
+ * Python 2.5 or later (http://www.python.org/)
  * python-dateutil (http://labix.org/python-dateutil)
  * trytond (http://www.tryton.org/)
  * trytond_account (http://www.tryton.org/)
diff --git a/PKG-INFO b/PKG-INFO
index 0cf3f07..a94dae7 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.6.0
+Version: 1.8.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.6/
+Download-URL: http://downloads.tryton.org/1.8/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index d083c99..913e43a 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
     'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
-    'version': '1.6.0',
+    'version': '1.8.0',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/account.py b/account.py
index 345d763..b5e1bbd 100644
--- a/account.py
+++ b/account.py
@@ -72,18 +72,18 @@ class FiscalYear(ModelSQL, ModelView):
                     'invoice sequences per fiscal year!',
             })
 
-    def check_invoice_sequences(self, cursor, user, ids):
-        for fiscalyear in self.browse(cursor, user, ids):
+    def check_invoice_sequences(self, ids):
+        for fiscalyear in self.browse(ids):
             for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
                     'out_credit_note_sequence', 'in_credit_note_sequence'):
-                if self.search(cursor, user, [
+                if self.search([
                     (sequence, '=', fiscalyear[sequence].id),
                     ('id', '!=', fiscalyear.id),
                     ]):
                     return False
         return True
 
-    def write(self, cursor, user, ids, vals, context=None):
+    def write(self, ids, vals):
         invoice_obj = self.pool.get('account.invoice')
 
         if isinstance(ids, (int, long)):
@@ -92,21 +92,18 @@ class FiscalYear(ModelSQL, ModelView):
         for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
                 'out_credit_note_sequence', 'in_credit_note_sequence'):
             if vals.get(sequence):
-                for fiscalyear in self.browse(cursor, user, ids,
-                        context=context):
+                for fiscalyear in self.browse(ids):
                     if fiscalyear[sequence] and \
                             fiscalyear[sequence].id != \
                             vals[sequence]:
-                        if invoice_obj.search(cursor, user, [
+                        if invoice_obj.search([
                             ('invoice_date', '>=', fiscalyear.start_date),
                             ('invoice_date', '<=', fiscalyear.end_date),
                             ('number', '!=', False),
                             ('type', '=', sequence[:-9]),
-                            ], context=context):
-                            self.raise_user_error(cursor,
-                                    'change_invoice_sequence', context=context)
-        return super(FiscalYear, self).write(cursor, user, ids, vals,
-                context=context)
+                            ]):
+                            self.raise_user_error('change_invoice_sequence')
+        return super(FiscalYear, self).write(ids, vals)
 
 FiscalYear()
 
@@ -160,11 +157,11 @@ class Period(ModelSQL, ModelView):
                     'in the same company!',
             })
 
-    def check_invoice_sequences(self, cursor, user, ids):
-        for period in self.browse(cursor, user, ids):
+    def check_invoice_sequences(self, ids):
+        for period in self.browse(ids):
             for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
                     'out_credit_note_sequence', 'in_credit_note_sequence'):
-                if self.search(cursor, user, [
+                if self.search([
                     (sequence, '=', period[sequence].id),
                     ('fiscalyear', '!=', period.fiscalyear.id),
                     ]):
@@ -175,19 +172,18 @@ class Period(ModelSQL, ModelView):
                     return False
         return True
 
-    def create(self, cursor, user, vals, context=None):
+    def create(self, vals):
         fiscalyear_obj = self.pool.get('account.fiscalyear')
         vals = vals.copy()
         if vals.get('fiscalyear'):
-            fiscalyear = fiscalyear_obj.browse(cursor, user, vals['fiscalyear'],
-                    context=context)
+            fiscalyear = fiscalyear_obj.browse(vals['fiscalyear'])
             for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
                     'out_credit_note_sequence', 'in_credit_note_sequence'):
                 if not vals.get(sequence):
                     vals[sequence] = fiscalyear[sequence].id
-        return super(Period, self).create(cursor, user, vals, context=context)
+        return super(Period, self).create(vals)
 
-    def write(self, cursor, user, ids, vals, context=None):
+    def write(self, ids, vals):
         invoice_obj = self.pool.get('account.invoice')
 
         if isinstance(ids, (int, long)):
@@ -196,19 +192,17 @@ class Period(ModelSQL, ModelView):
         for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
                 'out_credit_note_sequence', 'in_credit_note_sequence'):
             if vals.get(sequence):
-                for period in self.browse(cursor, user, ids, context=context):
+                for period in self.browse(ids):
                     if period[sequence] and \
                             period[sequence].id != \
                             vals[sequence]:
-                        if invoice_obj.search(cursor, user, [
+                        if invoice_obj.search([
                             ('invoice_date', '>=', period.start_date),
                             ('invoice_date', '<=', period.end_date),
                             ('number', '!=', False),
                             ('type', '=', sequence[:-9]),
-                            ], context=context):
-                            self.raise_user_error(cursor,
-                                    'change_invoice_sequence', context=context)
-        return super(Period, self).write(cursor, user, ids, vals,
-                context=context)
+                            ]):
+                            self.raise_user_error('change_invoice_sequence')
+        return super(Period, self).write(ids, vals)
 
 Period()
diff --git a/de_DE.csv b/de_DE.csv
index 0bd1bb6..33ab6cd 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -46,14 +46,10 @@ field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Seque
 field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Nummernkreis Rechnungen Kunden,0
 field,"account.invoice,account",0,Account,Konto,0
 field,"account.invoice,accounting_date",0,Accounting Date,Buchungsdatum,0
-field,"account.invoice-account.move.line,invoice",0,Invoice,Rechnung,0
-field,"account.invoice-account.move.line,line",0,Payment Line,Zahlungsposition,0
-field,"account.invoice-account.move.line,rec_name",0,Name,Name,0
 field,"account.invoice,amount_to_pay",0,Amount to Pay,Zahlbarer Betrag,0
 field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Zahlbarer Betrag (heute),0
 field,"account.invoice,comment",0,Comment,Kommentar,0
 field,"account.invoice,company",0,Company,Unternehmen,0
-field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Verrechnung,0
 field,"account.invoice,currency",0,Currency,Währung,0
 field,"account.invoice,currency_digits",0,Currency Digits,Währung (signifikante Stellen),0
 field,"account.invoice,description",0,Description,Beschreibung,0
@@ -62,10 +58,29 @@ field,"account.invoice,invoice_date",0,Invoice Date,Rechnungsdatum,0
 field,"account.invoice,invoice_report",0,Invoice Report,Rechnungsbericht,0
 field,"account.invoice,invoice_report_format",0,Invoice Report Format,Format Rechnungsbericht,0
 field,"account.invoice,journal",0,Journal,Journal,0
+field,"account.invoice,lines",0,Lines,Positionen,0
+field,"account.invoice,lines_to_pay",0,Lines to Pay,Zahlbare Positionen,0
+field,"account.invoice,move",0,Move,Buchung,0
+field,"account.invoice,number",0,Number,Nummer,0
+field,"account.invoice,party",0,Party,Partei,0
+field,"account.invoice,party_lang",0,Party Language,Sprache Partei,0
+field,"account.invoice,payment_lines",0,Payment Lines,Zahlungspositionen,0
+field,"account.invoice,payment_term",0,Payment Term,Zahlungsbedingung,0
+field,"account.invoice,rec_name",0,Name,Name,0
+field,"account.invoice,reconciled",0,Reconciled,Abgestimmt,0
+field,"account.invoice,reference",0,Reference,Interner Beleg,0
+field,"account.invoice,state",0,State,Status,0
+field,"account.invoice,tax_amount",0,Tax,Steuer,0
+field,"account.invoice,taxes",0,Tax Lines,Steuerpositionen,0
+field,"account.invoice,total_amount",0,Total,Brutto,0
+field,"account.invoice,type",0,Type,Typ,0
+field,"account.invoice,type_name",0,Type,Typ,0
+field,"account.invoice,untaxed_amount",0,Untaxed,Netto,0
+field,"account.invoice-account.move.line,invoice",0,Invoice,Rechnung,0
+field,"account.invoice-account.move.line,line",0,Payment Line,Zahlungsposition,0
+field,"account.invoice-account.move.line,rec_name",0,Name,Name,0
+field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Verrechnung,0
 field,"account.invoice.line,account",0,Account,Konto,0
-field,"account.invoice.line-account.tax,line",0,Invoice Line,Rechnungsposition,0
-field,"account.invoice.line-account.tax,rec_name",0,Name,Name,0
-field,"account.invoice.line-account.tax,tax",0,Tax,Steuer,0
 field,"account.invoice.line,amount",0,Amount,Betrag,0
 field,"account.invoice.line,company",0,Company,Unternehmen,0
 field,"account.invoice.line,currency",0,Currency,Währung,0
@@ -80,18 +95,15 @@ field,"account.invoice.line,party_lang",0,Party Language,Sprache Partei,0
 field,"account.invoice.line,product",0,Product,Artikel,0
 field,"account.invoice.line,quantity",0,Quantity,Anzahl,0
 field,"account.invoice.line,rec_name",0,Name,Name,0
-field,"account.invoice,lines",0,Lines,Positionen,0
 field,"account.invoice.line,sequence",0,Sequence,Reihenfolge,0
-field,"account.invoice,lines_to_pay",0,Lines to Pay,Zahlbare Positionen,0
 field,"account.invoice.line,taxes",0,Taxes,Steuern,0
 field,"account.invoice.line,type",0,Type,Typ,0
 field,"account.invoice.line,unit",0,Unit,Einheit,0
 field,"account.invoice.line,unit_digits",0,Unit Digits,Anzahl Stellen,0
 field,"account.invoice.line,unit_price",0,Unit Price,Einzelpreis,0
-field,"account.invoice,move",0,Move,Buchung,0
-field,"account.invoice,number",0,Number,Nummer,0
-field,"account.invoice,party",0,Party,Partei,0
-field,"account.invoice,party_lang",0,Party Language,Sprache Partei,0
+field,"account.invoice.line-account.tax,line",0,Invoice Line,Rechnungsposition,0
+field,"account.invoice.line-account.tax,rec_name",0,Name,Name,0
+field,"account.invoice.line-account.tax,tax",0,Tax,Steuer,0
 field,"account.invoice.pay_invoice.ask,account",0,Account,Konto,0
 field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Konto Ausbuchung,0
 field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Betrag,0
@@ -116,41 +128,33 @@ field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Stell
 field,"account.invoice.pay_invoice.init,date",0,Date,Datum,0
 field,"account.invoice.pay_invoice.init,description",0,Description,Beschreibung,0
 field,"account.invoice.pay_invoice.init,journal",0,Journal,Journal,0
-field,"account.invoice,payment_lines",0,Payment Lines,Zahlungspositionen,0
-field,"account.invoice,payment_term",0,Payment Term,Zahlungsbedingung,0
 field,"account.invoice.payment_term,active",0,Active,Aktiv,0
 field,"account.invoice.payment_term,description",0,Description,Beschreibung,0
+field,"account.invoice.payment_term,lines",0,Lines,Positionen,0
+field,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
+field,"account.invoice.payment_term,rec_name",0,Name,Name,0
 field,"account.invoice.payment_term.line,amount",0,Amount,Betrag,0
 field,"account.invoice.payment_term.line,currency",0,Currency,Währung,0
 field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Währung (signifikante Stellen),0
 field,"account.invoice.payment_term.line,days",0,Number of Days,Anzahl an Tagen,0
 field,"account.invoice.payment_term.line,delay",0,Condition,Bedingung,0
-field,"account.invoice.payment_term.line.delay,code",0,Code,Kundennummer,0
-field,"account.invoice.payment_term.line.delay,name",0,Name,Name,0
-field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Name,0
 field,"account.invoice.payment_term.line,payment",0,Payment Term,Zahlungsbedingung,0
 field,"account.invoice.payment_term.line,percentage",0,Percentage,Prozentsatz,0
 field,"account.invoice.payment_term.line,rec_name",0,Name,Name,0
-field,"account.invoice.payment_term,lines",0,Lines,Positionen,0
 field,"account.invoice.payment_term.line,sequence",0,Sequence,Reihenfolge,0
 field,"account.invoice.payment_term.line,type",0,Type,Typ,0
+field,"account.invoice.payment_term.line.delay,code",0,Code,Kundennummer,0
+field,"account.invoice.payment_term.line.delay,name",0,Name,Name,0
+field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Name,0
 field,"account.invoice.payment_term.line.type,code",0,Code,Kundennummer,0
 field,"account.invoice.payment_term.line.type,name",0,Name,Name,0
 field,"account.invoice.payment_term.line.type,rec_name",0,Name,Name,0
-field,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
-field,"account.invoice.payment_term,rec_name",0,Name,Name,0
-field,"account.invoice,rec_name",0,Name,Name,0
-field,"account.invoice,reconciled",0,Reconciled,Abgestimmt,0
-field,"account.invoice,reference",0,Reference,Interner Beleg,0
-field,"account.invoice,state",0,State,Status,0
 field,"account.invoice.tax,account",0,Account,Konto,0
-field,"account.invoice,tax_amount",0,Tax,Steuer,0
 field,"account.invoice.tax,amount",0,Amount,Betrag,0
 field,"account.invoice.tax,base",0,Base,Netto,0
 field,"account.invoice.tax,base_code",0,Base Code,Code Netto,0
 field,"account.invoice.tax,base_sign",0,Base Sign,Vorzeichen (Netto),0
 field,"account.invoice.tax,description",0,Description,Beschreibung,0
-field,"account.invoice,taxes",0,Tax Lines,Steuerpositionen,0
 field,"account.invoice.tax,invoice",0,Invoice,Rechnung,0
 field,"account.invoice.tax,manual",0,Manual,Manuell,0
 field,"account.invoice.tax,rec_name",0,Name,Name,0
@@ -159,10 +163,6 @@ field,"account.invoice.tax,sequence_number",0,Sequence Number,Name Nummernkreis,
 field,"account.invoice.tax,tax",0,Tax,Steuer,0
 field,"account.invoice.tax,tax_code",0,Tax Code,Steuerkennziffer,0
 field,"account.invoice.tax,tax_sign",0,Tax Sign,Vorzeichen (Steuer),0
-field,"account.invoice,total_amount",0,Total,Brutto,0
-field,"account.invoice,type",0,Type,Typ,0
-field,"account.invoice,type_name",0,Type,Typ,0
-field,"account.invoice,untaxed_amount",0,Untaxed,Netto,0
 field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Nummernkreis Gutschriften Lieferanten,0
 field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Nummernkreis Rechnungen Lieferanten,0
 field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Nummernkreis Gutschriften Kunden,0
@@ -173,84 +173,84 @@ field,"party.party,supplier_payment_term",0,Supplier Payment Term,Zahlungsbeding
 help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.",Bei Aktivierung werden die aktuelle(n ) Rechnung(en) und Gutschrift(en) bezahlt und abgestimmt.,0
 help,"account.invoice.payment_term.line,percentage",0,In %,Eingabe in %,0
 help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Ordnet Positionen in aufsteigender Reihenfolge,0
+model,"account.invoice,name",0,Invoice,Rechnung,0
 model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Rechnung - Zahlungsposition,0
 model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Gutschrift Init,0
-model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Rechnungsposition - Steuer,0
 model,"account.invoice.line,name",0,Invoice Line,Rechnungsposition,0
-model,"account.invoice,name",0,Invoice,Rechnung,0
+model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Rechnungsposition - Steuer,0
 model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Zahlung Rechnung Nachfrage,0
 model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Zahlung Rechnung Init,0
+model,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Zahlungsbedingung Zeile,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Zahlungsbedingung Zeile Frist,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Ende Monat,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Tage netto,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Zahlungsbedingung Zeile Frist,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Zahlungsbedingung Zeile,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fix,0
 model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Zahlungsbedingung Zeile Typ,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fix,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Prozentsatz,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Rest,0
-model,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
 model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Druck Rechnung Warnung,0
 model,"account.invoice.tax,name",0,Invoice Tax,Rechnung Steuer,0
 model,"ir.action,name",act_invoice_form,All Invoices,Alle Rechnungen,0
-model,"ir.action,name",credit_invoice,Credit,Gutschrift erstellen,0
+model,"ir.action,name",act_invoice_form2,Invoices,Rechnungen,0
+model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
+model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Gutschriften von Lieferanten,0
+model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Entwürfe Lieferantengutschriften,0
+model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro Forma Lieferantengutschriften,0
+model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Fakturierte Lieferantengutschriften,0
+model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
+model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Lieferantenrechnungen,0
+model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Entwürfe Lieferantenrechnungen,0
+model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro Forma Lieferantenrechnungen,0
+model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Fakturierte Lieferantenrechnungen,0
 model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Gutschriften an Kunden,0
 model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Gutschriften,0
 model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Entwürfe Kundengutschriften,0
-model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Entwürfe Kundenrechnungen,0
-model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Entwürfe Lieferantengutschriften,0
-model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Entwürfe Lieferantenrechnungen,0
-model,"ir.action,name",report_invoice,Invoice,Rechnung,0
-model,"ir.action,name",print_invoice_report,Invoice,Rechnung / Gutschrift drucken,0
+model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro Forma Kundengutschriften,0
+model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Fakturierte Kundengutschriften,0
 model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
 model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Kundenrechnungen,0
-model,"ir.action,name",act_invoice_form2,Invoices,Rechnungen,0
-model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Fakturierte Kundengutschriften,0
+model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Entwürfe Kundenrechnungen,0
+model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Pro Forma Kundenrechnungen,0
 model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Fakturierte Kundenrechnungen,0
-model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Fakturierte Lieferantengutschriften,0
-model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Fakturierte Lieferantenrechnungen,0
-model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Rechnung bezahlen,0
 model,"ir.action,name",act_payment_term_form,Payment Terms,Zahlungsbedingungen,0
 model,"ir.action,name",act_payment_term_form2,Payment Terms,Zahlungsbedingungen,0
-model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro Forma Kundengutschriften,0
-model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Pro Forma Kundenrechnungen,0
-model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro Forma Lieferantengutschriften,0
-model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro Forma Lieferantenrechnungen,0
-model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
-model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Gutschriften von Lieferanten,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
-model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Lieferantenrechnungen,0
+model,"ir.action,name",credit_invoice,Credit,Gutschrift erstellen,0
+model,"ir.action,name",print_invoice_report,Invoice,Rechnung / Gutschrift drucken,0
+model,"ir.action,name",report_invoice,Invoice,Rechnung,0
+model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Rechnung bezahlen,0
 model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Rechnung,0
 model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Alle Rechnungen,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Gutschriften an Kunden,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Entwürfe Kundengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Entwürfe Kundenrechnungen,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Neue Gutschrift von Lieferant,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Entwürfe Lieferantengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro Forma Lieferantengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Fakturierte Lieferantengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Neue Lieferantenrechnung,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Entwürfe Lieferantenrechnungen,0
-model,"ir.ui.menu,name",menu_invoices,Invoices,Rechnungen,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro Forma Lieferantenrechnungen,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Fakturierte Lieferantenrechnungen,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Gutschriften an Kunden,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Neue Gutschrift an Kunden,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Neue Kundenrechnung,0
-model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Neue Zahlungsbedingung,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Neue Gutschrift von Lieferant,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Neue Lieferantenrechnung,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Entwürfe Kundengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro Forma Kundengutschriften,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Fakturierte Kundengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Neue Kundenrechnung,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Entwürfe Kundenrechnungen,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Pro Forma Kundenrechnungen,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Fakturierte Kundenrechnungen,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Fakturierte Lieferantengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Fakturierte Lieferantenrechnungen,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Zahlungsbedingungen,0
+model,"ir.ui.menu,name",menu_invoices,Invoices,Rechnungen,0
 model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Zahlungsbedingungen,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro Forma Kundengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Pro Forma Kundenrechnungen,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro Forma Lieferantengutschriften,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro Forma Lieferantenrechnungen,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
+model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Neue Zahlungsbedingung,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Zahlungsbedingungen,0
+model,"workflow,name",invoice_workflow,Invoice workflow,Workflow Rechnung,0
 model,"workflow.activity,name",invoice_activity_cancel,Canceled,Annulliert,0
 model,"workflow.activity,name",invoice_activity_draft,Draft,Entwurf,0
 model,"workflow.activity,name",invoice_activity_open,Open,Fakturieren,0
 model,"workflow.activity,name",invoice_activity_paid,Paid,Bezahlt,0
 model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro Forma,0
-model,"workflow,name",invoice_workflow,Invoice workflow,Workflow Rechnung,0
 odt,account.invoice,0,Amount,Betrag,0
 odt,account.invoice,0,Base,Netto,0
 odt,account.invoice,0,Credit Note N°:,Gutschrift Nr.:,0
@@ -276,10 +276,20 @@ odt,account.invoice,0,Supplier Invoice N°:,Rechnung Nr.:,0
 odt,account.invoice,0,Tax,Steuer,0
 odt,account.invoice,0,Taxes,Steuern,0
 odt,account.invoice,0,Taxes:,Steuern:,0
-odt,account.invoice,0,Total:,Gesamt:,0
 odt,account.invoice,0,Total (excl. taxes):,Netto:,0
+odt,account.invoice,0,Total:,Gesamt:,0
 odt,account.invoice,0,Unit Price,Einzelpreis,0
+odt,account.invoice,0,VAT Number:,USt-ID-Nr.:,0
 odt,account.invoice,0,VAT:,USt-ID-Nr:,0
+selection,"account.invoice,state",0,Canceled,Annulliert,0
+selection,"account.invoice,state",0,Draft,Entwurf,0
+selection,"account.invoice,state",0,Opened,Fakturiert,0
+selection,"account.invoice,state",0,Paid,Bezahlt,0
+selection,"account.invoice,state",0,Pro forma,Pro Forma,0
+selection,"account.invoice,type",0,Credit Note,Gutschrift an Kunde,0
+selection,"account.invoice,type",0,Invoice,Kundenrechnung,0
+selection,"account.invoice,type",0,Supplier Credit Note,Gutschrift von Lieferant,0
+selection,"account.invoice,type",0,Supplier Invoice,Lieferantenrechnung,0
 selection,"account.invoice.line,invoice_type",0,Credit Note,Kundengutschrift,0
 selection,"account.invoice.line,invoice_type",0,Invoice,Kundenrechnung,0
 selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Lieferantengutschrift,0
@@ -290,31 +300,22 @@ selection,"account.invoice.line,type",0,Subtotal,Zwischensumme,0
 selection,"account.invoice.line,type",0,Title,Überschrift,0
 selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Teilzahlung,0
 selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Ausbuchung,0
-selection,"account.invoice,state",0,Canceled,Annulliert,0
-selection,"account.invoice,state",0,Draft,Entwurf,0
-selection,"account.invoice,state",0,Opened,Fakturiert,0
-selection,"account.invoice,state",0,Paid,Bezahlt,0
-selection,"account.invoice,state",0,Pro forma,Pro Forma,0
-selection,"account.invoice,type",0,Credit Note,Gutschrift an Kunde,0
-selection,"account.invoice,type",0,Invoice,Kundenrechnung,0
-selection,"account.invoice,type",0,Supplier Credit Note,Gutschrift von Lieferant,0
-selection,"account.invoice,type",0,Supplier Invoice,Lieferantenrechnung,0
 view,account.invoice,0,Amount Second Currency,Betrag Zweitwährung,0
-view,account.invoice,0,_Cancel,_Annullieren,0
 view,account.invoice,0,Credit,Haben,0
 view,account.invoice,0,Debit,Soll,0
-view,account.invoice,0,_Draft,_Entwurf,0
 view,account.invoice,0,Invoice,Rechnung,0
 view,account.invoice,0,Invoices,Rechnungen,0
 view,account.invoice,0,Lines,Positionen,0
-view,account.invoice,0,_Open,_Fakturieren,0
 view,account.invoice,0,Other Info,Sonstiges,0
-view,account.invoice,0,_Pay,_Bezahlen,0
 view,account.invoice,0,Payment,Zahlung,0
 view,account.invoice,0,Payment Lines,Zahlungspositionen,0
 view,account.invoice,0,Pro For_ma,_Pro Forma,0
-view,account.invoice,0,_Reset to Draft,Auf Entwurf _Zurücksetzen,0
 view,account.invoice,0,Taxes,Steuern,0
+view,account.invoice,0,_Cancel,_Annullieren,0
+view,account.invoice,0,_Draft,_Entwurf,0
+view,account.invoice,0,_Open,_Fakturieren,0
+view,account.invoice,0,_Pay,_Bezahlen,0
+view,account.invoice,0,_Reset to Draft,Auf Entwurf _Zurücksetzen,0
 view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Wollen Sie diese Rechnungen wirklich gutschreiben?,0
 view,account.invoice.credit_invoice.init,0,Credit Invoice,Rechnung gutschreiben,0
 view,account.invoice.line,0,General,Allgemein,0
diff --git a/fr_FR.csv b/fr_FR.csv
index 6eadc0f..ca0c5a6 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -50,14 +50,10 @@ field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Seque
 field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Séquence de facture client,0
 field,"account.invoice,account",0,Account,Compte,0
 field,"account.invoice,accounting_date",0,Accounting Date,Date comptable,0
-field,"account.invoice-account.move.line,invoice",0,Invoice,Facture,0
-field,"account.invoice-account.move.line,line",0,Payment Line,Ligne de paiement,0
-field,"account.invoice-account.move.line,rec_name",0,Name,Nom,0
 field,"account.invoice,amount_to_pay",0,Amount to Pay,Montant à payer,0
 field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Montant à payer aujourd'hui,0
 field,"account.invoice,comment",0,Comment,Commentaire,0
 field,"account.invoice,company",0,Company,Société,0
-field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Avec remboursement,0
 field,"account.invoice,currency",0,Currency,Devise,0
 field,"account.invoice,currency_digits",0,Currency Digits,Décimales de la devise,0
 field,"account.invoice,description",0,Description,Description,0
@@ -66,10 +62,29 @@ field,"account.invoice,invoice_date",0,Invoice Date,Date de facturation,0
 field,"account.invoice,invoice_report",0,Invoice Report,Rapport de facturation,0
 field,"account.invoice,invoice_report_format",0,Invoice Report Format,Format du rapport de facturation,0
 field,"account.invoice,journal",0,Journal,Journal,0
+field,"account.invoice,lines",0,Lines,Lignes,0
+field,"account.invoice,lines_to_pay",0,Lines to Pay,Lignes à payer,0
+field,"account.invoice,move",0,Move,Mouvement,0
+field,"account.invoice,number",0,Number,Numéro,0
+field,"account.invoice,party",0,Party,Tiers,0
+field,"account.invoice,party_lang",0,Party Language,Langue du tiers,0
+field,"account.invoice,payment_lines",0,Payment Lines,Lignes de paiement,0
+field,"account.invoice,payment_term",0,Payment Term,Condition de paiement,0
+field,"account.invoice,rec_name",0,Name,Nom,0
+field,"account.invoice,reconciled",0,Reconciled,Réconcilié,0
+field,"account.invoice,reference",0,Reference,Référence,0
+field,"account.invoice,state",0,State,État,0
+field,"account.invoice,tax_amount",0,Tax,Taxe,0
+field,"account.invoice,taxes",0,Tax Lines,Lignes de taxe,0
+field,"account.invoice,total_amount",0,Total,Total,0
+field,"account.invoice,type",0,Type,Type,0
+field,"account.invoice,type_name",0,Type,Type,0
+field,"account.invoice,untaxed_amount",0,Untaxed,Hors taxe,0
+field,"account.invoice-account.move.line,invoice",0,Invoice,Facture,0
+field,"account.invoice-account.move.line,line",0,Payment Line,Ligne de paiement,0
+field,"account.invoice-account.move.line,rec_name",0,Name,Nom,0
+field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Avec remboursement,0
 field,"account.invoice.line,account",0,Account,Compte,0
-field,"account.invoice.line-account.tax,line",0,Invoice Line,Ligne de facture,0
-field,"account.invoice.line-account.tax,rec_name",0,Name,Nom,0
-field,"account.invoice.line-account.tax,tax",0,Tax,Taxe,0
 field,"account.invoice.line,amount",0,Amount,Montant,0
 field,"account.invoice.line,company",0,Company,Société,0
 field,"account.invoice.line,currency",0,Currency,Devise,0
@@ -84,18 +99,15 @@ field,"account.invoice.line,party_lang",0,Party Language,Langue du tiers,0
 field,"account.invoice.line,product",0,Product,Produit,0
 field,"account.invoice.line,quantity",0,Quantity,Quantité,0
 field,"account.invoice.line,rec_name",0,Name,Nom,0
-field,"account.invoice,lines",0,Lines,Lignes,0
 field,"account.invoice.line,sequence",0,Sequence,Séquence,0
-field,"account.invoice,lines_to_pay",0,Lines to Pay,Lignes à payer,0
 field,"account.invoice.line,taxes",0,Taxes,Taxes,0
 field,"account.invoice.line,type",0,Type,Type,0
 field,"account.invoice.line,unit",0,Unit,Unité,0
 field,"account.invoice.line,unit_digits",0,Unit Digits,Décimales de l'unité,0
 field,"account.invoice.line,unit_price",0,Unit Price,Prix unitaire,0
-field,"account.invoice,move",0,Move,Mouvement,0
-field,"account.invoice,number",0,Number,Numéro,0
-field,"account.invoice,party",0,Party,Tiers,0
-field,"account.invoice,party_lang",0,Party Language,Langue du tiers,0
+field,"account.invoice.line-account.tax,line",0,Invoice Line,Ligne de facture,0
+field,"account.invoice.line-account.tax,rec_name",0,Name,Nom,0
+field,"account.invoice.line-account.tax,tax",0,Tax,Taxe,0
 field,"account.invoice.pay_invoice.ask,account",0,Account,Compte,0
 field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Compte de pertes et profits,0
 field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Montant,0
@@ -120,41 +132,33 @@ field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Déci
 field,"account.invoice.pay_invoice.init,date",0,Date,date,0
 field,"account.invoice.pay_invoice.init,description",0,Description,Description,0
 field,"account.invoice.pay_invoice.init,journal",0,Journal,Journal,0
-field,"account.invoice,payment_lines",0,Payment Lines,Lignes de paiement,0
-field,"account.invoice,payment_term",0,Payment Term,Condition de paiement,0
 field,"account.invoice.payment_term,active",0,Active,Actif,0
 field,"account.invoice.payment_term,description",0,Description,Description,0
+field,"account.invoice.payment_term,lines",0,Lines,Lignes,0
+field,"account.invoice.payment_term,name",0,Payment Term,Condition de paiement,0
+field,"account.invoice.payment_term,rec_name",0,Name,Nom,0
 field,"account.invoice.payment_term.line,amount",0,Amount,Montant,0
 field,"account.invoice.payment_term.line,currency",0,Currency,Devise,0
 field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Décimales de la devise,0
 field,"account.invoice.payment_term.line,days",0,Number of Days,Nombre de jours,0
 field,"account.invoice.payment_term.line,delay",0,Condition,Condition,0
-field,"account.invoice.payment_term.line.delay,code",0,Code,Code,0
-field,"account.invoice.payment_term.line.delay,name",0,Name,Nom,0
-field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Nom,0
 field,"account.invoice.payment_term.line,payment",0,Payment Term,Condition de paiement,0
 field,"account.invoice.payment_term.line,percentage",0,Percentage,Pourcentage,0
 field,"account.invoice.payment_term.line,rec_name",0,Name,Nom,0
-field,"account.invoice.payment_term,lines",0,Lines,Lignes,0
 field,"account.invoice.payment_term.line,sequence",0,Sequence,Séquence,0
 field,"account.invoice.payment_term.line,type",0,Type,Type,0
+field,"account.invoice.payment_term.line.delay,code",0,Code,Code,0
+field,"account.invoice.payment_term.line.delay,name",0,Name,Nom,0
+field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Nom,0
 field,"account.invoice.payment_term.line.type,code",0,Code,Code,0
 field,"account.invoice.payment_term.line.type,name",0,Name,Nom,0
 field,"account.invoice.payment_term.line.type,rec_name",0,Name,Nom,0
-field,"account.invoice.payment_term,name",0,Payment Term,Condition de paiement,0
-field,"account.invoice.payment_term,rec_name",0,Name,Nom,0
-field,"account.invoice,rec_name",0,Name,Nom,0
-field,"account.invoice,reconciled",0,Reconciled,Réconcilié,0
-field,"account.invoice,reference",0,Reference,Référence,0
-field,"account.invoice,state",0,State,État,0
 field,"account.invoice.tax,account",0,Account,Compte,0
-field,"account.invoice,tax_amount",0,Tax,Taxe,0
 field,"account.invoice.tax,amount",0,Amount,Montant,0
 field,"account.invoice.tax,base",0,Base,Base,0
 field,"account.invoice.tax,base_code",0,Base Code,Code de base,0
 field,"account.invoice.tax,base_sign",0,Base Sign,Signe de base,0
 field,"account.invoice.tax,description",0,Description,Description,0
-field,"account.invoice,taxes",0,Tax Lines,Lignes de taxe,0
 field,"account.invoice.tax,invoice",0,Invoice,Facture,0
 field,"account.invoice.tax,manual",0,Manual,Manuel,0
 field,"account.invoice.tax,rec_name",0,Name,Nom,0
@@ -163,10 +167,6 @@ field,"account.invoice.tax,sequence_number",0,Sequence Number,Numéro de séquen
 field,"account.invoice.tax,tax",0,Tax,Taxe,0
 field,"account.invoice.tax,tax_code",0,Tax Code,Code de taxe,0
 field,"account.invoice.tax,tax_sign",0,Tax Sign,Signe de taxe,0
-field,"account.invoice,total_amount",0,Total,Total,0
-field,"account.invoice,type",0,Type,Type,0
-field,"account.invoice,type_name",0,Type,Type,0
-field,"account.invoice,untaxed_amount",0,Untaxed,Hors taxe,0
 field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Séquence des notes de crédit fournisseur,0
 field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Séquence de facture fournisseur,0
 field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Séquence des notes de crédit client,0
@@ -177,84 +177,84 @@ field,"party.party,supplier_payment_term",0,Supplier Payment Term,Conditions de
 help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Si vrai, les factures seront payées.",0
 help,"account.invoice.payment_term.line,percentage",0,In %,En %,0
 help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Utilisé pour trier les lignes en ordre croissant,0
+model,"account.invoice,name",0,Invoice,Facture,0
 model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Facture - Ligne de paiement,0
 model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Crediter la facture - Init,0
-model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Ligne de facture - Taxe,0
 model,"account.invoice.line,name",0,Invoice Line,Ligne de Facture,0
-model,"account.invoice,name",0,Invoice,Facture,0
+model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Ligne de facture - Taxe,0
 model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Payer la facture - Demande,0
 model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Payer la facture - Init,0
+model,"account.invoice.payment_term,name",0,Payment Term,Conditions de paiement,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Ligne de condition de paiement,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Délai de ligne de condition de paiement,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,fin du mois,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Jours,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Délai de ligne de condition de paiement,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Ligne de condition de paiement,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fixe,0
 model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Type de line de condition de paiement,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fixe,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Pourcentage,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Reste,0
-model,"account.invoice.payment_term,name",0,Payment Term,Conditions de paiement,0
 model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Imprimer de la factures - Avertissement,0
 model,"account.invoice.tax,name",0,Invoice Tax,Tax de facture,0
 model,"ir.action,name",act_invoice_form,All Invoices,Toutes les factures,0
-model,"ir.action,name",credit_invoice,Credit,Crédit,0
+model,"ir.action,name",act_invoice_form2,Invoices,Factures,0
+model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
+model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Notes de crédit fournisseurs,0
+model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Notes de crédit fournisseurs en brouillon,0
+model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Notes de crédit fournisseurs pro forma,0
+model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Notes de crédit fournisseurs ouvertes,0
+model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Factures fournisseurs,0
+model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Factures fournisseurs,0
+model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Factures fournisseurs ouvertes,0
+model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factures fournisseurs pro forma,0
+model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Factures fournisseurs ouvertes,0
 model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Notes de crédit,0
 model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Notes de crédit,0
 model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Notes de crédit en brouillon,0
-model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Factures en brouillon,0
-model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Notes de crédit fournisseurs en brouillon,0
-model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Factures fournisseurs ouvertes,0
-model,"ir.action,name",report_invoice,Invoice,Facture,0
-model,"ir.action,name",print_invoice_report,Invoice,Facture,0
+model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Notes de crédit pro forma,0
+model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Notes de crédit ouvertes,0
 model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Factures,0
 model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Factures,0
-model,"ir.action,name",act_invoice_form2,Invoices,Factures,0
-model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Notes de crédit ouvertes,0
+model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Factures en brouillon,0
+model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Factures pro forma,0
 model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Factures ouvertes,0
-model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Notes de crédit fournisseurs ouvertes,0
-model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Factures fournisseurs ouvertes,0
-model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Payer facture,0
 model,"ir.action,name",act_payment_term_form,Payment Terms,Conditions de paiement,0
 model,"ir.action,name",act_payment_term_form2,Payment Terms,Conditions de paiement,0
-model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Notes de crédit pro forma,0
-model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Factures pro forma,0
-model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Notes de crédit fournisseurs pro forma,0
-model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factures fournisseurs pro forma,0
-model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
-model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Notes de crédit fournisseurs,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Factures fournisseurs,0
-model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Factures fournisseurs,0
+model,"ir.action,name",credit_invoice,Credit,Crédit,0
+model,"ir.action,name",print_invoice_report,Invoice,Facture,0
+model,"ir.action,name",report_invoice,Invoice,Facture,0
+model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Payer facture,0
 model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Facture,0
 model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Toutes les factures,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Notes de crédit,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Notes de crédit en brouillon,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Factures en brouillon,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nouvelle note de crédit fournisseur,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Notes de crédit fournisseur en brouillon,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Notes de crédit fournisseur pro forma,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Notes de crédit fournisseur ouvertes,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Factures fournisseurs,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Nouvelle facture fournisseur,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Factures fournisseurs en brouillon,0
-model,"ir.ui.menu,name",menu_invoices,Invoices,Factures,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Factures,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factures fournisseurs pro forma,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Factures fournisseurs ouvertes,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Notes de crédit,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nouvelle note de crédit,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nouvelle facture,0
-model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Nouvelle condition de paiement,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nouvelle note de crédit fournisseur,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Nouvelle facture fournisseur,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Notes de crédit en brouillon,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Notes de crédit pro forma,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Notes de crédit ouvertes,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Factures,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nouvelle facture,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Factures en brouillon,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Factures pro forma,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Factures ouvertes,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Notes de crédit fournisseur ouvertes,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Factures fournisseurs ouvertes,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Conditions de paiement,0
+model,"ir.ui.menu,name",menu_invoices,Invoices,Factures,0
 model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Conditions de paiement,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Notes de crédit pro forma,0
-model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Factures pro forma,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Notes de crédit fournisseur pro forma,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factures fournisseurs pro forma,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Factures fournisseurs,0
+model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Nouvelle condition de paiement,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Conditions de paiement,0
+model,"workflow,name",invoice_workflow,Invoice workflow,Workflow facture,0
 model,"workflow.activity,name",invoice_activity_cancel,Canceled,Annulé,0
 model,"workflow.activity,name",invoice_activity_draft,Draft,Brouillon,0
 model,"workflow.activity,name",invoice_activity_open,Open,Ouvert,0
 model,"workflow.activity,name",invoice_activity_paid,Paid,Payé,0
 model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
-model,"workflow,name",invoice_workflow,Invoice workflow,Workflow facture,0
 odt,account.invoice,0,Amount,Montant,0
 odt,account.invoice,0,Base,Base,0
 odt,account.invoice,0,Credit Note N°:,N° de note de crédit :,0
@@ -280,10 +280,20 @@ odt,account.invoice,0,Supplier Invoice N°:,N° de facture fournisseur :,0
 odt,account.invoice,0,Tax,Taxe,0
 odt,account.invoice,0,Taxes,Taxes,0
 odt,account.invoice,0,Taxes:,Taxes :,0
-odt,account.invoice,0,Total:,Total :,0
 odt,account.invoice,0,Total (excl. taxes):,Total (hors-taxes) :,0
+odt,account.invoice,0,Total:,Total :,0
 odt,account.invoice,0,Unit Price,Prix unitaire,0
+odt,account.invoice,0,VAT Number:,Numéro TVA :,0
 odt,account.invoice,0,VAT:,TVA :,0
+selection,"account.invoice,state",0,Canceled,Annulé,0
+selection,"account.invoice,state",0,Draft,Brouillon,0
+selection,"account.invoice,state",0,Opened,Ouvert,0
+selection,"account.invoice,state",0,Paid,Payée,0
+selection,"account.invoice,state",0,Pro forma,Pro forma,0
+selection,"account.invoice,type",0,Credit Note,Note de crédit,0
+selection,"account.invoice,type",0,Invoice,Facture,0
+selection,"account.invoice,type",0,Supplier Credit Note,Note de crédit fournisseur,0
+selection,"account.invoice,type",0,Supplier Invoice,Facture fournisseur,0
 selection,"account.invoice.line,invoice_type",0,Credit Note,Note de crédit,0
 selection,"account.invoice.line,invoice_type",0,Invoice,Facture,0
 selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Note de crédit fournisseur,0
@@ -294,31 +304,22 @@ selection,"account.invoice.line,type",0,Subtotal,Sous-total,0
 selection,"account.invoice.line,type",0,Title,Titre,0
 selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Paiement partiel,0
 selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Pertes et profits,0
-selection,"account.invoice,state",0,Canceled,Annulé,0
-selection,"account.invoice,state",0,Draft,Brouillon,0
-selection,"account.invoice,state",0,Opened,Ouvert,0
-selection,"account.invoice,state",0,Paid,Payée,0
-selection,"account.invoice,state",0,Pro forma,Pro forma,0
-selection,"account.invoice,type",0,Credit Note,Note de crédit,0
-selection,"account.invoice,type",0,Invoice,Facture,0
-selection,"account.invoice,type",0,Supplier Credit Note,Note de crédit fournisseur,0
-selection,"account.invoice,type",0,Supplier Invoice,Facture fournisseur,0
 view,account.invoice,0,Amount Second Currency,Montant de devise secondaire,0
-view,account.invoice,0,_Cancel,_Annuler,0
 view,account.invoice,0,Credit,Crédit,0
 view,account.invoice,0,Debit,Débit,0
-view,account.invoice,0,_Draft,_Brouillon,0
 view,account.invoice,0,Invoice,Facture,0
 view,account.invoice,0,Invoices,Factures,0
 view,account.invoice,0,Lines,Lignes,0
-view,account.invoice,0,_Open,_Ouvrir,0
 view,account.invoice,0,Other Info,Autre information,0
-view,account.invoice,0,_Pay,_Payer,0
 view,account.invoice,0,Payment,Paiement,0
 view,account.invoice,0,Payment Lines,Lignes de paiement,0
 view,account.invoice,0,Pro For_ma,Pro For_ma,0
-view,account.invoice,0,_Reset to Draft,_Remettre en brouillon,0
 view,account.invoice,0,Taxes,Taxes,0
+view,account.invoice,0,_Cancel,_Annuler,0
+view,account.invoice,0,_Draft,_Brouillon,0
+view,account.invoice,0,_Open,_Ouvrir,0
+view,account.invoice,0,_Pay,_Payer,0
+view,account.invoice,0,_Reset to Draft,_Remettre en brouillon,0
 view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Etes-vous sûr de vouloir créditer cette/ces factures ?,0
 view,account.invoice.credit_invoice.init,0,Credit Invoice,Facture de crédit,0
 view,account.invoice.line,0,General,Général,0
diff --git a/invoice.py b/invoice.py
index b4f8bc4..dc621eb 100644
--- a/invoice.py
+++ b/invoice.py
@@ -1,14 +1,15 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-"Invoice"
+from __future__ import with_statement
+from decimal import Decimal
+import base64
 from trytond.model import ModelWorkflow, ModelView, ModelSQL, fields
 from trytond.report import Report
 from trytond.wizard import Wizard
 from trytond.backend import TableHandler, FIELDS
 from trytond.pyson import In, If, Get, Eval, Not, Equal, Bool, Or, And
 from trytond.tools import reduce_ids
-from decimal import Decimal
-import base64
+from trytond.transaction import Transaction
 
 _STATES = {
     'readonly': Not(Equal(Eval('state'), 'draft')),
@@ -157,8 +158,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     'as on invoice line!',
             })
 
-    def init(self, cursor, module_name):
-        super(Invoice, self).init(cursor, module_name)
+    def init(self, module_name):
+        super(Invoice, self).init(module_name)
+        cursor = Transaction().cursor
         table = TableHandler(cursor, self, module_name)
 
         # Migration from 1.2 invoice_date is no more required
@@ -167,65 +169,51 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         # Add index on create_date
         table.index_action('create_date', action='add')
 
-    def default_type(self, cursor, user, context=None):
-        if context is None:
-            context = {}
-        return context.get('type', 'out_invoice')
+    def default_type(self):
+        return Transaction().context.get('type', 'out_invoice')
 
-    def default_state(self, cursor, user, context=None):
+    def default_state(self):
         return 'draft'
 
-    def default_currency(self, cursor, user, context=None):
+    def default_currency(self):
         company_obj = self.pool.get('company.company')
         currency_obj = self.pool.get('currency.currency')
-        if context is None:
-            context = {}
-        if context.get('company'):
-            company = company_obj.browse(cursor, user, context['company'],
-                    context=context)
+        if Transaction().context.get('company'):
+            company = company_obj.browse(Transaction().context['company'])
             return company.currency.id
         return False
 
-    def default_currency_digits(self, cursor, user, context=None):
+    def default_currency_digits(self):
         company_obj = self.pool.get('company.company')
-        if context is None:
-            context = {}
-        if context.get('company'):
-            company = company_obj.browse(cursor, user, context['company'],
-                    context=context)
+        if Transaction().context.get('company'):
+            company = company_obj.browse(Transaction().context['company'])
             return company.currency.digits
         return 2
 
-    def default_company(self, cursor, user, context=None):
-        if context is None:
-            context = {}
-        if context.get('company'):
-            return context['company']
-        return False
+    def default_company(self):
+        return Transaction().context.get('company') or False
 
-    def default_payment_term(self, cursor, user, context=None):
+    def default_payment_term(self):
         payment_term_obj = self.pool.get('account.invoice.payment_term')
-        payment_term_ids = payment_term_obj.search(cursor, user,
-                self.payment_term.domain, context=context)
+        payment_term_ids = payment_term_obj.search(self.payment_term.domain)
         if len(payment_term_ids) == 1:
             return payment_term_ids[0]
         return False
 
-    def on_change_type(self, cursor, user, vals, context=None):
+    def on_change_type(self, vals):
         journal_obj = self.pool.get('account.journal')
         res = {}
-        journal_ids = journal_obj.search(cursor, user, [
+        journal_ids = journal_obj.search([
             ('type', '=', _TYPE2JOURNAL.get(vals.get('type', 'out_invoice'),
                 'revenue')),
-            ], limit=1, context=context)
+            ], limit=1)
         if journal_ids:
-            journal = journal_obj.browse(cursor, user, journal_ids[0],
-                    context=context)
+            journal = journal_obj.browse(journal_ids[0])
             res['journal'] = journal.id
             res['journal.rec_name'] = journal.rec_name
         return res
 
-    def on_change_party(self, cursor, user, vals, context=None):
+    def on_change_party(self, vals):
         party_obj = self.pool.get('party.party')
         address_obj = self.pool.get('party.address')
         account_obj = self.pool.get('account.account')
@@ -236,10 +224,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             'account': False,
         }
         if vals.get('party'):
-            party = party_obj.browse(cursor, user, vals['party'],
-                    context=context)
-            res['invoice_address'] = party_obj.address_get(cursor, user,
-                    party.id, type='invoice', context=context)
+            party = party_obj.browse(vals['party'])
+            res['invoice_address'] = party_obj.address_get(party.id,
+                    type='invoice')
             if vals.get('type') in ('out_invoice', 'out_credit_note'):
                 res['account'] = party.account_receivable.id
                 if vals['type'] == 'out_invoice' and party.payment_term:
@@ -250,89 +237,80 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     res['payment_term'] = party.supplier_payment_term.id
 
         if vals.get('company'):
-            company = company_obj.browse(cursor, user, vals['company'],
-                    context=context)
+            company = company_obj.browse(vals['company'])
             if vals.get('type') == 'out_credit_note':
                 res['payment_term'] = company.payment_term.id
             elif vals.get('type') == 'in_credit_note':
                 res['payment_term'] = company.supplier_payment_term.id
 
         if res['invoice_address']:
-            res['invoice_address.rec_name'] = address_obj.browse(cursor, user,
-                    res['invoice_address'], context=context).rec_name
+            res['invoice_address.rec_name'] = address_obj.browse(
+                    res['invoice_address']).rec_name
         if res['account']:
-            res['account.rec_name'] = account_obj.browse(cursor, user,
-                    res['account'], context=context).rec_name
+            res['account.rec_name'] = account_obj.browse(
+                    res['account']).rec_name
         if res.get('payment_term'):
-            res['payment_term.rec_name'] = payment_term_obj.browse(cursor, user,
-                    res['payment_term'], context=context).rec_name
+            res['payment_term.rec_name'] = payment_term_obj.browse(
+                    res['payment_term']).rec_name
         return res
 
-    def on_change_with_currency_digits(self, cursor, user, vals,
-            context=None):
+    def on_change_with_currency_digits(self, vals):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('currency'):
-            currency = currency_obj.browse(cursor, user, vals['currency'],
-                    context=context)
+            currency = currency_obj.browse(vals['currency'])
             return currency.digits
         return 2
 
-    def get_currency_digits(self, cursor, user, ids, name, context=None):
+    def get_currency_digits(self, ids, name):
         res = {}
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             res[invoice.id] = invoice.currency.digits
         return res
 
-    def on_change_with_party_lang(self, cursor, user, vals, context=None):
+    def on_change_with_party_lang(self, vals):
         party_obj = self.pool.get('party.party')
         if vals.get('party'):
-            party = party_obj.browse(cursor, user, vals['party'],
-                    context=context)
+            party = party_obj.browse(vals['party'])
             if party.lang:
                 return party.lang.code
         return 'en_US'
 
-    def get_party_language(self, cursor, user, ids, name, context=None):
+    def get_party_language(self, ids, name):
         '''
         Return the language code of the party of each invoice
 
-        :param cursor: the database cursor
-        :param user: the user id
         :param ids: the ids of the invoices
         :param name: the field name
-        :param context: the context
         :return: a dictionary with invoice id as key and
             language code as value
         '''
         res = {}
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             if invoice.party.lang:
                 res[invoice.id] = invoice.party.lang.code
             else:
                 res[invoice.id] = 'en_US'
         return res
 
-    def get_type_name(self, cursor, user, ids, name, context=None):
+    def get_type_name(self, ids, name):
         res = {}
         type2name = {}
-        for type, name in self.fields_get(cursor, user, fields_names=['type'],
-                context=context)['type']['selection']:
+        for type, name in self.fields_get(fields_names=['type']
+                )['type']['selection']:
             type2name[type] = name
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             res[invoice.id] = type2name[invoice.type]
         return res
 
-    def on_change_lines(self, cursor, user, vals, context=None):
-        return self._on_change_lines_taxes(cursor, user, vals, context=context)
+    def on_change_lines(self, vals):
+        return self._on_change_lines_taxes(vals)
 
-    def on_change_taxes(self, cursor, user, vals, context=None):
-        return self._on_change_lines_taxes(cursor, user, vals, context=context)
+    def on_change_taxes(self, vals):
+        return self._on_change_lines_taxes(vals)
 
-    def _on_change_lines_taxes(self, cursor, user, vals, context=None):
+    def _on_change_lines_taxes(self, vals):
         currency_obj = self.pool.get('currency.currency')
         tax_obj = self.pool.get('account.tax')
-        if context is None:
-            context = {}
         res = {
             'untaxed_amount': Decimal('0.0'),
             'tax_amount': Decimal('0.0'),
@@ -341,23 +319,21 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         }
         currency = None
         if vals.get('currency'):
-            currency = currency_obj.browse(cursor, user, vals['currency'],
-                    context=context)
+            currency = currency_obj.browse(vals['currency'])
         computed_taxes = {}
         if vals.get('lines'):
-            ctx = context.copy()
-            ctx.update(self.get_tax_context(cursor, user, vals,
-                context=context))
+            context = self.get_tax_context(vals)
             for line in vals['lines']:
                 if line.get('type', 'line') != 'line':
                     continue
                 res['untaxed_amount'] += line.get('amount', Decimal('0.0'))
-
-                for tax in tax_obj.compute(cursor, user, line.get('taxes', []),
-                        line.get('unit_price', Decimal('0.0')),
-                        line.get('quantity', 0.0), context=context):
-                    key, val = self._compute_tax(cursor, user, tax,
-                            vals.get('type', 'out_invoice'), context=context)
+                with Transaction().set_context(**context):
+                    taxes = tax_obj.compute(line.get('taxes', []),
+                            line.get('unit_price', Decimal('0.0')),
+                            line.get('quantity', 0.0))
+                for tax in taxes:
+                    key, val = self._compute_tax(tax,
+                            vals.get('type', 'out_invoice'))
                     if not key in computed_taxes:
                         computed_taxes[key] = val
                     else:
@@ -366,8 +342,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         if currency:
             for key in computed_taxes:
                 for field in ('base', 'amount'):
-                    computed_taxes[key][field] = currency_obj.round(cursor,
-                            user, currency, computed_taxes[key][field])
+                    computed_taxes[key][field] = currency_obj.round(currency,
+                            computed_taxes[key][field])
         tax_keys = []
         for tax in vals.get('taxes', []):
             if tax.get('manual', False):
@@ -382,7 +358,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 continue
             tax_keys.append(key)
             if currency:
-                if not currency_obj.is_zero(cursor, user, currency,
+                if not currency_obj.is_zero(currency,
                         computed_taxes[key]['base'] - \
                                 tax.get('base', Decimal('0.0'))):
                     res['tax_amount'] += computed_taxes[key]['amount']
@@ -412,31 +388,31 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 res['taxes'].setdefault('add', [])
                 res['taxes']['add'].append(computed_taxes[key])
         if currency:
-            res['untaxed_amount'] = currency_obj.round(cursor, user, currency,
+            res['untaxed_amount'] = currency_obj.round(currency,
                     res['untaxed_amount'])
-            res['tax_amount'] = currency_obj.round(cursor, user, currency,
-                    res['tax_amount'])
+            res['tax_amount'] = currency_obj.round(currency, res['tax_amount'])
         res['total_amount'] = res['untaxed_amount'] + res['tax_amount']
         if currency:
-            res['total_amount'] = currency_obj.round(cursor, user, currency,
+            res['total_amount'] = currency_obj.round(currency,
                     res['total_amount'])
         return res
 
-    def get_untaxed_amount(self, cursor, user, ids, name, context=None):
+    def get_untaxed_amount(self, ids, name):
         currency_obj = self.pool.get('currency.currency')
         res = {}
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             res.setdefault(invoice.id, _ZERO)
             for line in invoice.lines:
                 if line.type != 'line':
                     continue
                 res[invoice.id] += line.amount
-            res[invoice.id] = currency_obj.round(cursor, user, invoice.currency,
+            res[invoice.id] = currency_obj.round(invoice.currency,
                     res[invoice.id])
         return res
 
-    def get_tax_amount(self, cursor, user, ids, name, context=None):
+    def get_tax_amount(self, ids, name):
         currency_obj = self.pool.get('currency.currency')
+        cursor = Transaction().cursor
         res = {}
         type_name = FIELDS[self.tax_amount._type].sql_type(self.tax_amount)[0]
         red_sql, red_ids = reduce_ids('invoice', ids)
@@ -451,23 +427,23 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 sum = Decimal(str(sum))
             res[invoice_id] = sum
 
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             res.setdefault(invoice.id, Decimal('0.0'))
-            res[invoice.id] = currency_obj.round(cursor, user, invoice.currency,
+            res[invoice.id] = currency_obj.round(invoice.currency,
                     res[invoice.id])
         return res
 
-    def get_total_amount(self, cursor, user, ids, name, context=None):
+    def get_total_amount(self, ids, name):
         currency_obj = self.pool.get('currency.currency')
         res = {}
-        for invoice in self.browse(cursor, user, ids, context=context):
-            res[invoice.id] = currency_obj.round(cursor, user, invoice.currency,
+        for invoice in self.browse(ids):
+            res[invoice.id] = currency_obj.round(invoice.currency,
                     invoice.untaxed_amount + invoice.tax_amount)
         return res
 
-    def get_reconciled(self, cursor, user, ids, name, context=None):
+    def get_reconciled(self, ids, name):
         res = {}
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             res[invoice.id] = True
             if not invoice.lines_to_pay:
                 res[invoice.id] = False
@@ -478,9 +454,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     break
         return res
 
-    def get_lines_to_pay(self, cursor, user, ids, name, context=None):
+    def get_lines_to_pay(self, ids, name):
         res = {}
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             lines = []
             if invoice.move:
                 for line in invoice.move.lines:
@@ -491,25 +467,24 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             res[invoice.id] = [x.id for x in lines]
         return res
 
-    def get_amount_to_pay(self, cursor, user, ids, name, context=None):
+    def get_amount_to_pay(self, ids, name):
         currency_obj = self.pool.get('currency.currency')
         date_obj = self.pool.get('ir.date')
 
-        compute_ids = self.search(cursor, user, [
+        compute_ids = self.search([
             ('id', 'in', ids),
             ('state', '=', 'open'),
-            ], context=context)
+            ])
 
         res = dict((x, _ZERO) for x in ids)
-        for invoice in self.browse(cursor, user, compute_ids, context=context):
+        for invoice in self.browse(compute_ids):
             amount = _ZERO
             amount_currency = _ZERO
             for line in invoice.lines_to_pay:
                 if line.reconciliation:
                     continue
                 if name == 'amount_to_pay_today' \
-                        and line.maturity_date > date_obj.today(cursor, user,
-                                context=context):
+                        and line.maturity_date > date_obj.today():
                     continue
                 if line.second_currency.id == invoice.currency.id:
                     if line.debit - line.credit > _ZERO:
@@ -532,21 +507,22 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 amount = - amount
                 amount_currency = - amount_currency
             if amount != _ZERO:
-                amount_currency += currency_obj.compute(cursor, user,
-                        invoice.company.currency, amount, invoice.currency,
-                        context=context)
+                amount_currency += currency_obj.compute(
+                        invoice.company.currency, amount, invoice.currency)
             if amount_currency < _ZERO:
                 amount_currency = _ZERO
             res[invoice.id] = amount_currency
         return res
 
-    def search_total_amount(self, cursor, user, name, clause, context=None):
+    def search_total_amount(self, name, clause):
         rule_obj = self.pool.get('ir.rule')
         line_obj = self.pool.get('account.invoice.line')
         tax_obj = self.pool.get('account.invoice.tax')
+        type_name = FIELDS[self.total_amount._type].sql_type(
+                self.total_amount)[0]
+        cursor = Transaction().cursor
 
-        invoice_query, invoice_val = rule_obj.domain_get(
-            cursor, user, 'account.invoice', context=context)
+        invoice_query, invoice_val = rule_obj.domain_get('account.invoice')
 
         cursor.execute('SELECT invoice FROM ('
                     'SELECT invoice, '
@@ -568,17 +544,20 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     'GROUP BY invoice  '
                 ') AS u '
                 'GROUP BY u.invoice '
-                'HAVING (SUM(u.total_amount) ' + clause[1] + ' %s)',
-                invoice_val + invoice_val + [clause[2]])
+                'HAVING (CAST(SUM(u.total_amount) AS ' + type_name + ') '
+                    + clause[1] + ' %s)',
+                invoice_val + invoice_val + [str(clause[2])])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
-    def search_untaxed_amount(self, cursor, user, name, clause, context=None):
+    def search_untaxed_amount(self, name, clause):
         rule_obj = self.pool.get('ir.rule')
         line_obj = self.pool.get('account.invoice.line')
         tax_obj = self.pool.get('account.invoice.tax')
+        type_name = FIELDS[self.untaxed_amount._type].sql_type(
+                self.untaxed_amount)[0]
+        cursor = Transaction().cursor
 
-        invoice_query, invoice_val = rule_obj.domain_get(
-            cursor, user, 'account.invoice', context=context)
+        invoice_query, invoice_val = rule_obj.domain_get('account.invoice')
 
         cursor.execute('SELECT invoice FROM "' + line_obj._table + '" '
                 'JOIN "' + self._table + '" ON '
@@ -586,18 +565,20 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                         '"' + line_obj._table + '".invoice) '
                 'WHERE ' + invoice_query + ' '
                 'GROUP BY invoice '
-                'HAVING (COALESCE(SUM(quantity * unit_price), 0) ' + \
-                        clause[1] + ' %s)',
-                invoice_val + [clause[2]])
+                'HAVING (CAST(COALESCE(SUM(quantity * unit_price), 0) '
+                    'AS ' + type_name + ') ' + clause[1] + ' %s)',
+                invoice_val + [str(clause[2])])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
-    def search_tax_amount(self, cursor, user, name, clause, context=None):
+    def search_tax_amount(self, name, clause):
         rule_obj = self.pool.get('ir.rule')
         line_obj = self.pool.get('account.invoice.line')
         tax_obj = self.pool.get('account.invoice.tax')
+        type_name = FIELDS[self.tax_amount._type].sql_type(
+                self.tax_amount)[0]
+        cursor = Transaction().cursor
 
-        invoice_query, invoice_val = rule_obj.domain_get(
-            cursor, user, 'account.invoice', context=context)
+        invoice_query, invoice_val = rule_obj.domain_get('account.invoice')
 
         cursor.execute('SELECT invoice FROM "' + tax_obj._table + '" '
                 'JOIN "' + self._table + '" ON '
@@ -605,28 +586,26 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                         '"' + tax_obj._table + '".invoice) '
                 'WHERE ' + invoice_query + ' '
                 'GROUP BY invoice '
-                'HAVING (COALESCE(SUM(amount), 0) ' + clause[1] + ' %s)',
-                invoice_val + [clause[2]])
+                'HAVING (CAST(COALESCE(SUM(amount), 0) '
+                    'AS ' + type_name + ') ' + clause[1] + ' %s)',
+                invoice_val + [str(clause[2])])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
-    def button_draft(self, cursor, user, ids, context=None):
-        invoices = self.browse(cursor, user, ids, context=context)
+    def button_draft(self, ids):
+        invoices = self.browse(ids)
         for invoice in invoices:
             if invoice.move:
-                self.raise_user_error(cursor, 'reset_draft',
-                        context=context)
-        self.workflow_trigger_create(cursor, user,
-                [x.id for x in invoices], context=context)
-        self.write(cursor, user, ids, {'state': 'draft'})
+                self.raise_user_error('reset_draft')
+        self.workflow_trigger_create([x.id for x in invoices])
+        self.write(ids, {'state': 'draft'})
         return True
 
-    def get_tax_context(self, cursor, user, invoice, context=None):
+    def get_tax_context(self, invoice):
         party_obj = self.pool.get('party.party')
         res = {}
         if isinstance(invoice, dict):
             if invoice.get('party'):
-                party = party_obj.browse(cursor, user, invoice['party'],
-                        context=context)
+                party = party_obj.browse(invoice['party'])
                 if party.lang:
                     res['language'] = party.lang.code
         else:
@@ -634,7 +613,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 res['language'] = invoice.party.lang.code
         return res
 
-    def _compute_tax(self, cursor, user, tax, invoice_type, context=None):
+    def _compute_tax(self, tax, invoice_type):
         val = {}
         val['manual'] = False
         val['description'] = tax['tax'].description
@@ -659,15 +638,11 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 val['account'], val['tax'])
         return key, val
 
-    def _compute_taxes(self, cursor, user, invoice, context=None):
+    def _compute_taxes(self, invoice):
         tax_obj = self.pool.get('account.tax')
         currency_obj = self.pool.get('currency.currency')
-        if context is None:
-            context = {}
 
-        ctx = context.copy()
-        ctx.update(self.get_tax_context(cursor, user, invoice,
-            context=context))
+        context = self.get_tax_context(invoice)
 
         res = {}
         for line in invoice.lines:
@@ -675,10 +650,11 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             if line.type != 'line':
                 continue
             tax_ids = [x.id for x in line.taxes]
-            for tax in tax_obj.compute(cursor, user, tax_ids, line.unit_price,
-                    line.quantity, context=ctx):
-                key, val = self._compute_tax(cursor, user, tax, invoice.type,
-                        context=context)
+            with Transaction().set_context(**context):
+                taxes = tax_obj.compute(tax_ids, line.unit_price,
+                        line.quantity)
+            for tax in taxes:
+                key, val = self._compute_tax(tax, invoice.type)
                 val['invoice'] = invoice.id
                 if not key in res:
                     res[key] = val
@@ -687,21 +663,20 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     res[key]['amount'] += val['amount']
         for key in res:
             for field in ('base', 'amount'):
-                res[key][field] = currency_obj.round(cursor,
-                        user, invoice.currency, res[key][field])
+                res[key][field] = currency_obj.round(invoice.currency,
+                        res[key][field])
         return res
 
-    def update_taxes(self, cursor, user, ids, context=None, exception=False):
+    def update_taxes(self, ids, exception=False):
         tax_obj = self.pool.get('account.invoice.tax')
         currency_obj = self.pool.get('currency.currency')
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             if invoice.state in ('open', 'paid', 'cancel'):
                 continue
-            computed_taxes = self._compute_taxes(cursor, user, invoice,
-                    context=context)
+            computed_taxes = self._compute_taxes(invoice)
             if not invoice.taxes:
                 for tax in computed_taxes.values():
-                    tax_obj.create(cursor, user, tax, context=context)
+                    tax_obj.create(tax)
             else:
                 tax_keys = []
                 for tax in invoice.taxes:
@@ -712,64 +687,54 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                             tax.account.id, tax.tax.id)
                     if (not key in computed_taxes) or (key in tax_keys):
                         if exception:
-                            self.raise_user_error(cursor, 'missing_tax_line',
-                                    context=context)
-                        tax_obj.delete(cursor, user, tax.id,
-                                context=context)
+                            self.raise_user_error('missing_tax_line')
+                        tax_obj.delete(tax.id)
                         continue
                     tax_keys.append(key)
-                    if not currency_obj.is_zero(cursor, user,
-                            invoice.currency,
+                    if not currency_obj.is_zero(invoice.currency,
                             computed_taxes[key]['base'] - tax.base):
                         if exception:
-                            self.raise_user_error(cursor, 'diff_tax_line',
-                                    context=context)
-                        tax_obj.write(cursor, user, tax.id,
-                                computed_taxes[key], context=context)
+                            self.raise_user_error('diff_tax_line')
+                        tax_obj.write(tax.id, computed_taxes[key])
                 for key in computed_taxes:
                     if not key in tax_keys:
                         if exception:
-                            self.raise_user_error(cursor, 'missing_tax_line',
-                                    context=context)
-                        tax_obj.create(cursor, user, computed_taxes[key],
-                                context=context)
+                            self.raise_user_error('missing_tax_line')
+                        tax_obj.create(computed_taxes[key])
         return True
 
-    def _get_move_line_invoice_line(self, cursor, user, invoice, context=None):
+    def _get_move_line_invoice_line(self, invoice):
         '''
         Return list of move line values for each invoice lines
         '''
         line_obj = self.pool.get('account.invoice.line')
         res = []
         for line in invoice.lines:
-            val = line_obj.get_move_line(cursor, user, line,
-                    context=context)
+            val = line_obj.get_move_line(line)
             if val:
                 res.append(val)
         return res
 
-    def _get_move_line_invoice_tax(self, cursor, user, invoice, context=None):
+    def _get_move_line_invoice_tax(self, invoice):
         '''
         Return list of move line values for each invoice taxes
         '''
         tax_obj = self.pool.get('account.invoice.tax')
         res = []
         for tax in invoice.taxes:
-            val = tax_obj.get_move_line(cursor, user, tax,
-                    context=context)
+            val = tax_obj.get_move_line(tax)
             res.append(val)
         return res
 
-    def _get_move_line(self, cursor, user, invoice, date, amount, context=None):
+    def _get_move_line(self, invoice, date, amount):
         '''
         Return move line
         '''
         currency_obj = self.pool.get('currency.currency')
         res = {}
         if invoice.currency.id != invoice.company.currency.id:
-            res['amount_second_currency'] = currency_obj.compute(cursor, user,
-                    invoice.company.currency, amount,
-                    invoice.currency, context=context)
+            res['amount_second_currency'] = currency_obj.compute(
+                    invoice.company.currency, amount, invoice.currency)
             res['amount_second_currency'] = abs(res['amount_second_currency'])
             res['second_currency'] = invoice.currency.id
         else:
@@ -788,22 +753,19 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         res['party'] = invoice.party.id
         return res
 
-    def create_move(self, cursor, user, invoice_id, context=None):
+    def create_move(self, invoice_id):
         tax_obj = self.pool.get('account.invoice.tax')
         payment_term_obj = self.pool.get('account.invoice.payment_term')
         currency_obj = self.pool.get('currency.currency')
         move_obj = self.pool.get('account.move')
         period_obj = self.pool.get('account.period')
 
-        invoice = self.browse(cursor, user, invoice_id, context=context)
+        invoice = self.browse(invoice_id)
         if invoice.move:
             return True
-        self.update_taxes(cursor, user, [invoice.id], context=context,
-                exception=True)
-        move_lines = self._get_move_line_invoice_line(cursor, user, invoice,
-                context=context)
-        move_lines += self._get_move_line_invoice_tax(cursor, user, invoice,
-                context=context)
+        self.update_taxes([invoice.id], exception=True)
+        move_lines = self._get_move_line_invoice_line(invoice)
+        move_lines += self._get_move_line_invoice_tax(invoice)
 
         total = Decimal('0.0')
         total_currency = Decimal('0.0')
@@ -811,44 +773,38 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             total += line['debit'] - line['credit']
             total_currency += line['amount_second_currency']
 
-        term_lines = payment_term_obj.compute(cursor, user, total,
-                invoice.company.currency, invoice.payment_term,
-                invoice.invoice_date, context=context)
+        term_lines = payment_term_obj.compute(total, invoice.company.currency,
+                invoice.payment_term, invoice.invoice_date)
         remainder_total_currency = total_currency
         for date, amount in term_lines:
-            val = self._get_move_line(cursor, user, invoice, date, amount,
-                    context=None)
+            val = self._get_move_line(invoice, date, amount)
             remainder_total_currency -= val['amount_second_currency']
             move_lines.append(val)
-        if not currency_obj.is_zero(cursor, user, invoice.currency,
+        if not currency_obj.is_zero(invoice.currency,
                 remainder_total_currency):
             move_lines[-1]['amount_second_currency'] += remainder_total_currency
 
         accounting_date = invoice.accounting_date or invoice.invoice_date
-        period_id = period_obj.find(cursor, user, invoice.company.id,
-                date=accounting_date, context=context)
+        period_id = period_obj.find(invoice.company.id, date=accounting_date)
 
-        move_id = move_obj.create(cursor, user, {
+        move_id = move_obj.create({
             'journal': invoice.journal.id,
             'period': period_id,
             'date': accounting_date,
             'lines': [('create', x) for x in move_lines],
-            }, context=context)
-        self.write(cursor, user, invoice.id, {
+            })
+        self.write(invoice.id, {
             'move': move_id,
-            }, context=context)
-        move_obj.post(cursor, user, move_id, context=context)
+            })
+        move_obj.post(move_id)
         return move_id
 
-    def set_number(self, cursor, user, invoice_id, context=None):
+    def set_number(self, invoice_id):
         period_obj = self.pool.get('account.period')
         sequence_obj = self.pool.get('ir.sequence.strict')
         date_obj = self.pool.get('ir.date')
 
-        if context is None:
-            context = {}
-
-        invoice = self.browse(cursor, user, invoice_id, context=context)
+        invoice = self.browse(invoice_id)
 
         if invoice.number:
             return True
@@ -857,63 +813,58 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         if invoice.type in ('in_invoice', 'in_credit_note'):
             test_state = False
 
-        period_id = period_obj.find(cursor, user, invoice.company.id,
-                date=invoice.invoice_date, test_state=test_state,
-                context=context)
-        period = period_obj.browse(cursor, user, period_id, context=context)
+        period_id = period_obj.find(invoice.company.id,
+                date=invoice.invoice_date, test_state=test_state)
+        period = period_obj.browse(period_id)
         sequence_id = period[invoice.type + '_sequence'].id
         if not sequence_id:
-            self.raise_user_error(cursor, 'no_invoice_sequence',
-                    context=context)
-        ctx = context.copy()
-        ctx['date'] = invoice.invoice_date or date_obj.today(cursor, user,
-                context=context)
-        number = sequence_obj.get_id(cursor, user, sequence_id, context=ctx)
-        vals = {'number': number}
-        if not invoice.invoice_date:
-            vals['invoice_date'] = ctx['date']
-        self.write(cursor, user, invoice.id, vals, context=context)
+            self.raise_user_error('no_invoice_sequence')
+        with Transaction().set_context(
+                date=invoice.invoice_date or date_obj.today()):
+            number = sequence_obj.get_id(sequence_id)
+            vals = {'number': number}
+            if not invoice.invoice_date:
+                vals['invoice_date'] = Transaction().context['date']
+        self.write(invoice.id, vals)
         return True
 
-    def check_modify(self, cursor, user, ids, context=None):
+    def check_modify(self, ids):
         '''
         Check if the invoices can be modified
         '''
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             if invoice.state in ('open', 'paid'):
-                self.raise_user_error(cursor, 'modify_invoice',
-                        context=context)
+                self.raise_user_error('modify_invoice')
         return
 
-    def get_rec_name(self, cursor, user, ids, name, context=None):
+    def get_rec_name(self, ids, name):
         if not ids:
             return {}
         res = {}
-        for invoice in self.browse(cursor, user, ids, context=context):
+        for invoice in self.browse(ids):
             res[invoice.id] = invoice.number or unicode(invoice.id) + \
                     (invoice.reference and (' ' + invoice.reference) or '') + \
                     ' ' + invoice.party.rec_name
         return res
 
-    def search_rec_name(self, cursor, user, name, clause, context=None):
-        ids = self.search(cursor, user, ['OR',
+    def search_rec_name(self, name, clause):
+        ids = self.search(['OR',
             ('number',) + clause[1:],
             ('reference',) + clause[1:],
-            ], order=[], context=context)
+            ], order=[])
         if ids:
             return [('id', 'in', ids)]
         return [('party',) + clause[1:]]
 
-    def delete(self, cursor, user, ids, context=None):
+    def delete(self, ids):
         if not ids:
             return True
         if isinstance(ids, (int, long)):
             ids = [ids]
-        self.check_modify(cursor, user, ids, context=context)
-        return super(Invoice, self).delete(cursor, user, ids,
-                context=context)
+        self.check_modify(ids)
+        return super(Invoice, self).delete(ids)
 
-    def write(self, cursor, user, ids, vals, context=None):
+    def write(self, ids, vals):
         if isinstance(ids, (int, long)):
             ids = [ids]
         keys = vals.keys()
@@ -922,18 +873,16 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             if key in keys:
                 keys.remove(key)
         if len(keys):
-            self.check_modify(cursor, user, ids, context=context)
-        update_tax_ids = [x.id for x in self.browse(cursor, user, ids,
-            context=context) if x.state == 'draft']
-        res = super(Invoice, self).write(cursor, user, ids, vals,
-                context=context)
+            self.check_modify(ids)
+        update_tax_ids = [x.id for x in self.browse(ids) if x.state == 'draft']
+        res = super(Invoice, self).write(ids, vals)
         if update_tax_ids:
-            self.update_taxes(cursor, user, update_tax_ids, context=context)
+            self.update_taxes(update_tax_ids)
         if 'state' in vals and vals['state'] in ('paid', 'cancel'):
-            self.workflow_trigger_trigger(cursor, user, ids, context=context)
+            self.workflow_trigger_trigger(ids)
         return res
 
-    def copy(self, cursor, user, ids, default=None, context=None):
+    def copy(self, ids, default=None):
         line_obj = self.pool.get('account.invoice.line')
         tax_obj = self.pool.get('account.invoice.tax')
         date_obj = self.pool.get('ir.date')
@@ -959,37 +908,36 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         default['lines_to_pay'] = False
 
         new_ids = []
-        for invoice in self.browse(cursor, user, ids, context=context):
-            new_id = super(Invoice, self).copy(cursor, user, invoice.id,
-                    default=default, context=context)
-            line_obj.copy(cursor, user, [x.id for x in invoice.lines], default={
+        for invoice in self.browse(ids):
+            new_id = super(Invoice, self).copy(invoice.id, default=default)
+            line_obj.copy([x.id for x in invoice.lines], default={
                 'invoice': new_id,
-                }, context=context)
-            tax_obj.copy(cursor, user, [x.id for x in invoice.taxes], default={
+                })
+            tax_obj.copy([x.id for x in invoice.taxes], default={
                 'invoice': new_id,
-                }, context=context)
+                })
             new_ids.append(new_id)
 
         if int_id:
             return new_ids[0]
         return new_ids
 
-    def check_account(self, cursor, user, ids):
-        for invoice in self.browse(cursor, user, ids):
+    def check_account(self, ids):
+        for invoice in self.browse(ids):
             if invoice.account.company.id != invoice.company.id:
                 return False
         return True
 
-    def check_account2(self, cursor, user, ids):
-        for invoice in self.browse(cursor, user, ids):
+    def check_account2(self, ids):
+        for invoice in self.browse(ids):
             for line in invoice.lines:
                 if line.type == 'line' \
                         and line.account.id == invoice.account.id:
                     return False
         return True
 
-    def get_reconcile_lines_for_amount(self, cursor, user, invoice, amount,
-            exclude_ids=None, context=None):
+    def get_reconcile_lines_for_amount(self, invoice, amount,
+            exclude_ids=None):
         '''
         Return list of line ids and the remainder to make reconciliation.
         '''
@@ -1021,16 +969,14 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 continue
 
             test_amount = amount + (line.debit - line.credit)
-            if currency_obj.is_zero(cursor, user, invoice.currency,
-                    test_amount):
+            if currency_obj.is_zero(invoice.currency, test_amount):
                 return ([line.id], Decimal('0.0'))
             if abs(test_amount) < abs(remainder):
                 lines = [line.id]
                 remainder = test_amount
 
             test_amount = (amount + payment_amount) + (line.debit - line.credit)
-            if currency_obj.is_zero(cursor, user, invoice.currency,
-                    test_amount):
+            if currency_obj.is_zero(invoice.currency, test_amount):
                 return ([line.id] + payment_lines, Decimal('0.0'))
             if abs(test_amount) < abs(remainder):
                 lines = [line.id] + payment_lines
@@ -1038,9 +984,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
 
             exclude_ids2 = exclude_ids[:]
             exclude_ids2.append(line.id)
-            res = self.get_reconcile_lines_for_amount(cursor, user, invoice,
+            res = self.get_reconcile_lines_for_amount(invoice,
                     (amount + (line.debit - line.credit)),
-                    exclude_ids=exclude_ids2, context=context)
+                    exclude_ids=exclude_ids2)
             if res[1] == Decimal('0.0'):
                 res[0].append(line.id)
                 return res
@@ -1051,13 +997,11 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
 
         return (lines, remainder)
 
-    def pay_invoice(self, cursor, user, invoice_id, amount, journal_id, date,
-            description, amount_second_currency=False, second_currency=False,
-            context=None):
+    def pay_invoice(self, invoice_id, amount, journal_id, date, description,
+            amount_second_currency=False, second_currency=False):
         '''
         Add a payment to an invoice
 
-        :param cursor: the database cursor
         :param invoice_id: the invoice id
         :param amount: the amount to pay
         :param journal_id: the journal id for the move
@@ -1065,7 +1009,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         :param description: the description of the move
         :param amount_second_currency: the amount in the second currenry if one
         :param second_currency: the id of the second currency
-        :param context: the context
         :return: the id of the payment line
         '''
         journal_obj = self.pool.get('account.journal')
@@ -1073,8 +1016,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         period_obj = self.pool.get('account.period')
 
         lines = []
-        invoice = self.browse(cursor, user, invoice_id, context=context)
-        journal = journal_obj.browse(cursor, user, journal_id, context=context)
+        invoice = self.browse(invoice_id)
+        journal = journal_obj.browse(journal_id)
 
         if invoice.type in ('out_invoice', 'in_credit_note'):
             lines.append({
@@ -1096,11 +1039,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 'second_currency': second_currency,
             })
             if invoice.account.id == journal.debit_account.id:
-                self.raise_user_error(cursor, 'same_debit_account',
-                        context=context)
+                self.raise_user_error('same_debit_account')
             if not journal.debit_account:
-                self.raise_user_error(cursor, 'missing_debit_account',
-                        context=context)
+                self.raise_user_error('missing_debit_account')
         else:
             lines.append({
                 'name': description,
@@ -1121,46 +1062,42 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 'second_currency': second_currency,
             })
             if invoice.account.id == journal.debit_account.id:
-                self.raise_user_error(cursor, 'same_credit_account',
-                        context=context)
+                self.raise_user_error('same_credit_account')
             if not journal.credit_account:
-                self.raise_user_error(cursor, 'missing_credit_account',
-                        context=context)
+                self.raise_user_error('missing_credit_account')
 
-        period_id = period_obj.find(cursor, user, invoice.company.id,
-                date=date, context=context)
+        period_id = period_obj.find(invoice.company.id, date=date)
 
-        move_id = move_obj.create(cursor, user, {
+        move_id = move_obj.create({
             'journal': journal.id,
             'period': period_id,
             'date': date,
             'lines': [('create', x) for x in lines],
-            }, context=context)
+            })
 
-        move = move_obj.browse(cursor, user, move_id, context=context)
+        move = move_obj.browse(move_id)
 
         for line in move.lines:
             if line.account.id == invoice.account.id:
-                self.write(cursor, user, invoice.id, {
+                self.write(invoice.id, {
                     'payment_lines': [('add', line.id)],
-                    }, context=context)
+                    })
                 return line.id
         raise Exception('Missing account')
 
-    def print_invoice(self, cursor, user, invoice_id, context=None):
+    def print_invoice(self, invoice_id):
         '''
         Generate invoice report and store it in invoice_report field.
         '''
         invoice_report = self.pool.get('account.invoice', type='report')
-        val = invoice_report.execute(cursor, user, [invoice_id],
-                {'id': invoice_id}, context=context)
-        self.write(cursor, user, invoice_id, {
+        val = invoice_report.execute([invoice_id], {'id': invoice_id})
+        self.write(invoice_id, {
             'invoice_report_format': val[0],
             'invoice_report': val[1],
-            }, context=context)
+            })
         return
 
-    def _credit(self, cursor, user, invoice, context=None):
+    def _credit(self, invoice):
         '''
         Return values to credit invoice.
         '''
@@ -1188,48 +1125,41 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
 
         res['lines'] = []
         for line in invoice.lines:
-            value = invoice_line_obj._credit(cursor, user, line,
-                    context=context)
+            value = invoice_line_obj._credit(line)
             res['lines'].append(('create', value))
 
         res['taxes'] = []
         for tax in invoice.taxes:
             if not tax.manual:
                 continue
-            value = invoice_tax_obj._credit(cursor, user, tax,
-                    context=context)
-            res[taxes].append(('create', value))
+            value = invoice_tax_obj._credit(tax)
+            res['taxes'].append(('create', value))
         return res
 
-    def credit(self, cursor, user, ids, refund=False, context=None):
+    def credit(self, ids, refund=False):
         '''
         Credit invoices and return ids of new invoices.
 
-        :param cursor: the database cursor
-        :param user: the user id
         :param ids: a list of invoice id
         :param refund: a boolean to specify the refund
-        :param context: the context
         :return: the list of new invoice id
         '''
         move_line_obj = self.pool.get('account.move.line')
 
         new_ids = []
-        for invoice in self.browse(cursor, user, ids, context=context):
-            vals = self._credit(cursor, user, invoice, context=context)
-            new_id = self.create(cursor, user, vals, context=context)
+        for invoice in self.browse(ids):
+            vals = self._credit(invoice)
+            new_id = self.create(vals)
             new_ids.append(new_id)
             if refund:
-                self.workflow_trigger_validate(cursor, user, new_id, 'open',
-                        context=context)
-                new_invoice = self.browse(cursor, user, new_id, context=context)
+                self.workflow_trigger_validate(new_id, 'open')
+                new_invoice = self.browse(new_id)
                 if new_invoice.state == 'open':
                     line_ids = [x.id for x in invoice.lines_to_pay
                             if not x.reconciliation] + \
                                     [x.id for x in new_invoice.lines_to_pay
                                             if not x.reconciliation]
-                    move_line_obj.reconcile(cursor, user, line_ids,
-                            context=context)
+                    move_line_obj.reconcile(line_ids)
         return new_ids
 
 Invoice()
@@ -1385,143 +1315,125 @@ class InvoiceLine(ModelSQL, ModelView):
                     'as on the invoice!',
             })
 
-    def init(self, cursor, module_name):
-        super(InvoiceLine, self).init(cursor, module_name)
+    def init(self, module_name):
+        super(InvoiceLine, self).init(module_name)
+        cursor = Transaction().cursor
         table = TableHandler(cursor, self, module_name)
 
         # Migration from 1.0 invoice is no more required
         table.not_null_action('invoice', action='remove')
 
-    def default_invoice_type(self, cursor, user, context=None):
-        if context is None:
-            context = {}
-        return context.get('invoice_type', 'out_invoice')
+    def default_invoice_type(self):
+        return Transaction().context.get('invoice_type', 'out_invoice')
 
-    def default_currency(self, cursor, user, context=None):
+    def default_currency(self):
         company_obj = self.pool.get('company.company')
         currency_obj = self.pool.get('currency.currency')
-        if context is None:
-            context = {}
-        if context.get('company'):
-            company = company_obj.browse(cursor, user, context['company'],
-                    context=context)
+        if Transaction().context.get('company'):
+            company = company_obj.browse(Transaction().context['company'])
             return company.currency.id
         return False
 
-    def default_currency_digits(self, cursor, user, context=None):
+    def default_currency_digits(self):
         company_obj = self.pool.get('company.company')
-        if context is None:
-            context = {}
-        if context.get('company'):
-            company = company_obj.browse(cursor, user, context['company'],
-                    context=context)
+        if Transaction().context.get('company'):
+            company = company_obj.browse(Transaction().context['company'])
             return company.currency.digits
         return 2
 
-    def default_company(self, cursor, user, context=None):
-        if context is None:
-            context = {}
-        if context.get('company'):
-            return context['company']
-        return False
+    def default_company(self):
+        return Transaction().context.get('company') or False
 
-    def default_type(self, cursor, user, context=None):
+    def default_type(self):
         return 'line'
 
-    def default_quantity(self, cursor, user, context=None):
+    def default_quantity(self):
         return 0.0
 
-    def default_unit_price(self, cursor, user, context=None):
+    def default_unit_price(self):
         return Decimal('0.0')
 
-    def on_change_with_party_lang(self, cursor, user, vals, context=None):
+    def on_change_with_party_lang(self, vals):
         party_obj = self.pool.get('party.party')
         if vals.get('party'):
-            party = party_obj.browse(cursor, user, vals['party'],
-                    context=context)
+            party = party_obj.browse(vals['party'])
             if party.lang:
                 return party.lang.code
         return 'en_US'
 
-    def get_party_language(self, cursor, user, ids, name, context=None):
+    def get_party_language(self, ids, name):
         '''
         Return the language code of the party of each line
 
-        :param cursor: the database cursor
-        :param user: the user id
         :param ids: the ids of the account.invoice.line
         :param name: the field name
-        :param context: the context
         :return: a dictionary with account.invoice.line id as key and
             language code as value
         '''
         res = {}
-        for line in self.browse(cursor, user, ids, context=context):
+        for line in self.browse(ids):
             if line.party and line.party.lang:
                 res[line.id] = line.party.lang.code
             else:
                 res[line.id] = 'en_US'
         return res
 
-    def on_change_with_amount(self, cursor, user, vals, context=None):
+    def on_change_with_amount(self, vals):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('type') == 'line':
             currency = vals.get('_parent_invoice.currency') or vals.get('currency')
             if isinstance(currency, (int, long)) and currency:
-                currency = currency_obj.browse(cursor, user, currency,
-                        context=context)
+                currency = currency_obj.browse(currency)
             amount = Decimal(str(vals.get('quantity') or '0.0')) * \
                     (vals.get('unit_price') or Decimal('0.0'))
             if currency:
-                return currency_obj.round(cursor, user, currency, amount)
+                return currency_obj.round(currency, amount)
             return amount
         return Decimal('0.0')
 
-    def on_change_with_unit_digits(self, cursor, user, vals, context=None):
+    def on_change_with_unit_digits(self, vals):
         uom_obj = self.pool.get('product.uom')
         if vals.get('unit'):
-            uom = uom_obj.browse(cursor, user, vals['unit'],
-                    context=context)
+            uom = uom_obj.browse(vals['unit'])
             return uom.digits
         return 2
 
-    def get_unit_digits(self, cursor, user, ids, name, context=None):
+    def get_unit_digits(self, ids, name):
         res = {}
-        for line in self.browse(cursor, user, ids, context=context):
+        for line in self.browse(ids):
             if line.unit:
                 res[line.id] = line.unit.digits
             else:
                 res[line.id] = 2
         return res
 
-    def on_change_with_currency_digits(self, cursor, user, vals, context=None):
+    def on_change_with_currency_digits(self, vals):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('currency'):
-            currency = currency_obj.browse(cursor, user, vals['currency'],
-                    context=context)
+            currency = currency_obj.browse(vals['currency'])
             return currency.digits
         return 2
 
-    def get_currency_digits(self, cursor, user, ids, name, context=None):
+    def get_currency_digits(self, ids, name):
         res = {}
-        for line in self.browse(cursor, user, ids, context=context):
+        for line in self.browse(ids):
             res[line.id] = line.currency and line.currency.digits or 2
         return res
 
-    def get_amount(self, cursor, user, ids, name, context=None):
+    def get_amount(self, ids, name):
         currency_obj = self.pool.get('currency.currency')
         res = {}
-        for line in self.browse(cursor, user, ids, context=context):
+        for line in self.browse(ids):
             if line.type == 'line':
                 currency = line.invoice and line.invoice.currency \
                         or line.currency
-                res[line.id] = currency_obj.round(cursor, user, currency,
+                res[line.id] = currency_obj.round(currency,
                         Decimal(str(line.quantity)) * line.unit_price)
             elif line.type == 'subtotal':
                 res[line.id] = _ZERO
                 for line2 in line.invoice.lines:
                     if line2.type == 'line':
-                        res[line.id] += currency_obj.round(cursor, user,
+                        res[line.id] += currency_obj.round(
                                 line2.invoice.currency,
                                 Decimal(str(line2.quantity)) * line2.unit_price)
                     elif line2.type == 'subtotal':
@@ -1532,27 +1444,23 @@ class InvoiceLine(ModelSQL, ModelView):
                 res[line.id] = _ZERO
         return res
 
-    def get_invoice_taxes(self, cursor, user, ids, name, context=None):
+    def get_invoice_taxes(self, ids, name):
         tax_obj = self.pool.get('account.tax')
         invoice_obj = self.pool.get('account.invoice')
 
-        if context is None:
-            context = {}
-
         res = {}
-        for line in self.browse(cursor, user, ids, context=context):
+        for line in self.browse(ids):
             if not line.invoice:
                 res[line.id] = False
                 continue
-            ctx = context.copy()
-            ctx.update(invoice_obj.get_tax_context(cursor, user, line.invoice,
-                context=context))
+            context = invoice_obj.get_tax_context(line.invoice)
             tax_ids = [x.id for x in line.taxes]
             taxes_keys = []
-            for tax in tax_obj.compute(cursor, user, tax_ids, line.unit_price,
-                    line.quantity, context=ctx):
-                key, _ = invoice_obj._compute_tax(cursor, user, tax,
-                        line.invoice.type, context=context)
+            with Transaction().set_context(**context):
+                taxes = tax_obj.compute(tax_ids, line.unit_price,
+                        line.quantity)
+            for tax in taxes:
+                key, _ = invoice_obj._compute_tax(tax, line.invoice.type)
                 taxes_keys.append(key)
             res[line.id] = []
             for tax in line.invoice.taxes:
@@ -1565,21 +1473,18 @@ class InvoiceLine(ModelSQL, ModelView):
                     res[line.id].append(tax.id)
         return res
 
-    def _get_tax_rule_pattern(self, cursor, user, party, vals, context=None):
+    def _get_tax_rule_pattern(self, party, vals):
         '''
         Get tax rule pattern
 
-        :param cursor: the database cursor
-        :param user: the user id
         :param party: the BrowseRecord of the party
         :param vals: a dictionary with value from on_change
-        :param context: the context
         :return: a dictionary to use as pattern for tax rule
         '''
         res = {}
         return res
 
-    def on_change_product(self, cursor, user, vals, context=None):
+    def on_change_product(self, vals):
         product_obj = self.pool.get('product.product')
         party_obj = self.pool.get('party.party')
         account_obj = self.pool.get('account.account')
@@ -1588,100 +1493,87 @@ class InvoiceLine(ModelSQL, ModelView):
         currency_obj = self.pool.get('currency.currency')
         tax_rule_obj = self.pool.get('account.tax.rule')
 
-        if context is None:
-            context = {}
         if not vals.get('product'):
             return {}
         res = {}
 
-        ctx = context.copy()
+        context = {}
         party = None
         if vals.get('_parent_invoice.party') or vals.get('party'):
-            party = party_obj.browse(cursor, user, vals.get('_parent_invoice.party')
-                    or vals.get('party'),
-                    context=context)
+            party = party_obj.browse(vals.get('_parent_invoice.party')
+                    or vals.get('party'))
             if party.lang:
-                ctx['language'] = party.lang.code
+                context['language'] = party.lang.code
 
-        product = product_obj.browse(cursor, user, vals['product'],
-                context=context)
+        product = product_obj.browse(vals['product'])
 
         company = None
-        if context.get('company'):
-            company = company_obj.browse(cursor, user, context['company'],
-                    context=context)
+        if Transaction().context.get('company'):
+            company = company_obj.browse(Transaction().context['company'])
         currency = None
         if vals.get('_parent_invoice.currency') or vals.get('currency'):
             #TODO check if today date is correct
-            currency = currency_obj.browse(cursor, user,
-                    vals.get('_parent_invoice.currency') or vals.get('currency'),
-                    context=context)
+            currency = currency_obj.browse(
+                    vals.get('_parent_invoice.currency') or
+                    vals.get('currency'))
 
         if (vals.get('_parent_invoice.type') or vals.get('invoice_type')) \
                 in ('in_invoice', 'in_credit_note'):
             if company and currency:
-                res['unit_price'] = currency_obj.compute(cursor, user,
-                        company.currency, product.cost_price, currency,
-                        round=False, context=context)
+                res['unit_price'] = currency_obj.compute(company.currency,
+                        product.cost_price, currency, round=False)
             else:
                 res['unit_price'] = product.cost_price
             try:
                 res['account'] = product.account_expense_used.id
                 res['account.rec_name'] = product.account_expense_used.rec_name
-            except:
+            except Exception:
                 pass
             res['taxes'] = []
-            pattern = self._get_tax_rule_pattern(cursor, user, party, vals,
-                    context=context)
+            pattern = self._get_tax_rule_pattern(party, vals)
             for tax in product.supplier_taxes_used:
                 if party and party.supplier_tax_rule:
-                    tax_ids = tax_rule_obj.apply(cursor, user,
-                            party.supplier_tax_rule, tax, pattern,
-                            context=context)
+                    tax_ids = tax_rule_obj.apply(party.supplier_tax_rule, tax,
+                            pattern)
                     if tax_ids:
                         res['taxes'].extend(tax_ids)
                     continue
                 res['taxes'].append(tax.id)
             if party and party.supplier_tax_rule:
-                tax_ids = tax_rule_obj.apply(cursor, user,
-                        party.supplier_tax_rule, False, pattern,
-                        context=context)
+                tax_ids = tax_rule_obj.apply(party.supplier_tax_rule, False,
+                        pattern)
                 if tax_ids:
                     res['taxes'].extend(tax_ids)
         else:
             if company and currency:
-                res['unit_price'] = currency_obj.compute(cursor, user,
-                        company.currency, product.list_price, currency,
-                        round=False, context=context)
+                res['unit_price'] = currency_obj.compute(company.currency,
+                        product.list_price, currency, round=False)
             else:
                 res['unit_price'] = product.list_price
             try:
                 res['account'] = product.account_revenue_used.id
                 res['account.rec_name'] = product.account_revenue_used.rec_name
-            except:
+            except Exception:
                 pass
             res['taxes'] = []
-            pattern = self._get_tax_rule_pattern(cursor, user, party, vals,
-                    context=context)
+            pattern = self._get_tax_rule_pattern(party, vals)
             for tax in product.customer_taxes_used:
                 if party and party.customer_tax_rule:
-                    tax_ids = tax_rule_obj.apply(cursor, user,
-                            party.customer_tax_rule, tax, pattern,
-                            context=context)
+                    tax_ids = tax_rule_obj.apply(party.customer_tax_rule, tax,
+                            pattern)
                     if tax_ids:
                         res['taxes'].extend(tax_ids)
                     continue
                 res['taxes'].append(tax.id)
             if party and party.customer_tax_rule:
-                tax_ids = tax_rule_obj.apply(cursor, user,
-                        party.customer_tax_rule, False, pattern,
-                        context=context)
+                tax_ids = tax_rule_obj.apply(party.customer_tax_rule, False,
+                        pattern)
                 if tax_ids:
                     res['taxes'].extend(tax_ids)
 
         if not vals.get('description'):
-            res['description'] = product_obj.browse(cursor, user, product.id,
-                    context=ctx).rec_name
+            with Transaction().set_context(**context):
+                res['description'] = product_obj.browse(product.id).rec_name
 
         category = product.default_uom.category
         if not vals.get('unit') \
@@ -1693,46 +1585,41 @@ class InvoiceLine(ModelSQL, ModelView):
         vals = vals.copy()
         vals['unit_price'] = res['unit_price']
         vals['type'] = 'line'
-        res['amount'] = self.on_change_with_amount(cursor, user, vals,
-                context=context)
+        res['amount'] = self.on_change_with_amount(vals)
         return res
 
-    def check_modify(self, cursor, user, ids, context=None):
+    def check_modify(self, ids):
         '''
         Check if the lines can be modified
         '''
-        for line in self.browse(cursor, user, ids, context=context):
+        for line in self.browse(ids):
             if line.invoice and \
                     line.invoice.state in ('open', 'paid'):
-                self.raise_user_error(cursor, 'modify', context=context)
+                self.raise_user_error('modify')
         return
 
-    def delete(self, cursor, user, ids, context=None):
+    def delete(self, ids):
         if isinstance(ids, (int, long)):
             ids = [ids]
-        self.check_modify(cursor, user, ids, context=context)
-        return super(InvoiceLine, self).delete(cursor, user, ids,
-                context=context)
+        self.check_modify(ids)
+        return super(InvoiceLine, self).delete(ids)
 
-    def write(self, cursor, user, ids, vals, context=None):
+    def write(self, ids, vals):
         if isinstance(ids, (int, long)):
             ids = [ids]
-        self.check_modify(cursor, user, ids, context=context)
-        return super(InvoiceLine, self).write(cursor, user, ids, vals,
-                context=context)
+        self.check_modify(ids)
+        return super(InvoiceLine, self).write(ids, vals)
 
-    def create(self, cursor, user, vals, context=None):
+    def create(self, vals):
         invoice_obj = self.pool.get('account.invoice')
         if vals.get('invoice'):
-            invoice = invoice_obj.browse(cursor, user, vals['invoice'],
-                    context=context)
+            invoice = invoice_obj.browse(vals['invoice'])
             if invoice.state in ('open', 'paid', 'cancel'):
-                self.raise_user_error(cursor, 'create', context=context)
-        return super(InvoiceLine, self).create(cursor, user, vals,
-                context=context)
+                self.raise_user_error('create')
+        return super(InvoiceLine, self).create(vals)
 
-    def check_account(self, cursor, user, ids):
-        for line in self.browse(cursor, user, ids):
+    def check_account(self, ids):
+        for line in self.browse(ids):
             if line.type == 'line':
                 if line.invoice:
                     if line.account.company.id != line.invoice.company.id:
@@ -1742,30 +1629,27 @@ class InvoiceLine(ModelSQL, ModelView):
                         return False
         return True
 
-    def check_account2(self, cursor, user, ids):
-        for line in self.browse(cursor, user, ids):
+    def check_account2(self, ids):
+        for line in self.browse(ids):
             if line.type == 'line':
                 if line.invoice \
                         and line.account.id == line.invoice.account.id:
                     return False
         return True
 
-    def _compute_taxes(self, cursor, user, line, context=None):
+    def _compute_taxes(self, line):
         tax_obj = self.pool.get('account.tax')
         currency_obj = self.pool.get('currency.currency')
         invoice_obj = self.pool.get('account.invoice')
-        if context is None:
-            context = {}
 
-        ctx = context.copy()
-        ctx.update(invoice_obj.get_tax_context(cursor, user, line.invoice,
-            context=context))
+        context = invoice_obj.get_tax_context(line.invoice)
         res = []
         if line.type != 'line':
             return res
         tax_ids = [x.id for x in line.taxes]
-        for tax in tax_obj.compute(cursor, user, tax_ids, line.unit_price,
-                line.quantity, context=ctx):
+        with Transaction().set_context(**context):
+            taxes = tax_obj.compute(tax_ids, line.unit_price, line.quantity)
+        for tax in taxes:
             if line.invoice.type in ('out_invoice', 'in_invoice'):
                 base_code_id = tax['tax'].invoice_base_code.id
                 amount = tax['base'] * tax['tax'].invoice_base_sign
@@ -1773,9 +1657,8 @@ class InvoiceLine(ModelSQL, ModelView):
                 base_code_id = tax['tax'].credit_note_base_code.id
                 amount = tax['base'] * tax['tax'].credit_note_base_sign
             if base_code_id:
-                amount = currency_obj.compute(cursor, user,
-                        line.invoice.currency, amount,
-                        line.invoice.company.currency, context=context)
+                amount = currency_obj.compute(line.invoice.currency, amount,
+                        line.invoice.company.currency)
                 res.append({
                     'code': base_code_id,
                     'amount': amount,
@@ -1783,7 +1666,7 @@ class InvoiceLine(ModelSQL, ModelView):
                 })
         return res
 
-    def get_move_line(self, cursor, user, line, context=None):
+    def get_move_line(self, line):
         '''
         Return move line value for invoice line
         '''
@@ -1793,9 +1676,8 @@ class InvoiceLine(ModelSQL, ModelView):
             return res
         res['name'] = line.description
         if line.invoice.currency.id != line.invoice.company.currency.id:
-            amount = currency_obj.compute(cursor, user,
-                    line.invoice.currency, line.amount,
-                    line.invoice.company.currency, context=context)
+            amount = currency_obj.compute(line.invoice.currency, line.amount,
+                    line.invoice.company.currency)
             res['amount_second_currency'] = line.amount
             res['second_currency'] = line.invoice.currency.id
         else:
@@ -1820,14 +1702,13 @@ class InvoiceLine(ModelSQL, ModelView):
                 res['credit'] = Decimal('0.0')
         res['account'] = line.account.id
         res['party'] = line.invoice.party.id
-        computed_taxes = self._compute_taxes(cursor, user, line,
-                context=context)
+        computed_taxes = self._compute_taxes(line)
         for tax in computed_taxes:
             res.setdefault('tax_lines', [])
             res['tax_lines'].append(('create', tax))
         return res
 
-    def _credit(self, cursor, user, line, context=None):
+    def _credit(self, line):
         '''
         Return values to credit line.
         '''
@@ -1910,34 +1791,33 @@ class InvoiceTax(ModelSQL, ModelView):
                     'that is open, paid or canceled!',
             })
 
-    def default_base(self, cursor, user, context=None):
+    def default_base(self):
         return Decimal('0.0')
 
-    def default_amount(self, cursor, user, context=None):
+    def default_amount(self):
         return Decimal('0.0')
 
-    def default_manual(self, cursor, user, context=None):
+    def default_manual(self):
         return True
 
-    def default_base_sign(self, cursor, user, context=None):
+    def default_base_sign(self):
         return Decimal('1')
 
-    def default_tax_sign(self, cursor, user, context=None):
+    def default_tax_sign(self):
         return Decimal('1')
 
-    def check_modify(self, cursor, user, ids, context=None):
+    def check_modify(self, ids):
         '''
         Check if the taxes can be modified
         '''
-        for tax in self.browse(cursor, user, ids, context=context):
+        for tax in self.browse(ids):
             if tax.invoice.state in ('open', 'paid'):
-                self.raise_user_error(cursor, 'modify',
-                        context=context)
+                self.raise_user_error('modify')
         return
 
-    def get_sequence_number(self, cursor, user, ids, name, context=None):
+    def get_sequence_number(self, ids, name):
         res = {}
-        for tax in self.browse(cursor, user, ids, context=context):
+        for tax in self.browse(ids):
             res[tax.id] = 0
             i = 1
             for tax2 in tax.invoice.taxes:
@@ -1947,32 +1827,28 @@ class InvoiceTax(ModelSQL, ModelView):
                 i += 1
         return res
 
-    def delete(self, cursor, user, ids, context=None):
+    def delete(self, ids):
         if isinstance(ids, (int, long)):
             ids = [ids]
-        self.check_modify(cursor, user, ids, context=context)
-        return super(InvoiceTax, self).delete(cursor, user, ids,
-                context=context)
+        self.check_modify(ids)
+        return super(InvoiceTax, self).delete(ids)
 
-    def write(self, cursor, user, ids, vals, context=None):
+    def write(self, ids, vals):
         if isinstance(ids, (int, long)):
             ids = [ids]
-        self.check_modify(cursor, user, ids, context=context)
-        return super(InvoiceTax, self).write(cursor, user, ids, vals,
-                context=context)
+        self.check_modify(ids)
+        return super(InvoiceTax, self).write(ids, vals)
 
-    def create(self, cursor, user, vals, context=None):
+    def create(self, vals):
         invoice_obj = self.pool.get('account.invoice')
         if vals.get('invoice'):
-            invoice = invoice_obj.browse(cursor, user, vals['invoice'],
-                    context=context)
+            invoice = invoice_obj.browse(vals['invoice'])
             if invoice.state in ('open', 'paid', 'cancel'):
-                self.raise_user_error(cursor, 'create', context=context)
-        return super(InvoiceTax, self).create(cursor, user, vals,
-                context=context)
+                self.raise_user_error('create')
+        return super(InvoiceTax, self).create(vals)
 
-    def check_company(self, cursor, user, ids):
-        for tax in self.browse(cursor, user, ids):
+    def check_company(self, ids):
+        for tax in self.browse(ids):
             company = tax.invoice.company
             if tax.account.company.id != company.id:
                 return False
@@ -1984,7 +1860,7 @@ class InvoiceTax(ModelSQL, ModelView):
                     return False
         return True
 
-    def get_move_line(self, cursor, user, tax, context=None):
+    def get_move_line(self, tax):
         '''
         Return move line value for invoice tax
         '''
@@ -1992,9 +1868,8 @@ class InvoiceTax(ModelSQL, ModelView):
         res = {}
         res['name'] = tax.description
         if tax.invoice.currency.id != tax.invoice.company.currency.id:
-            amount = currency_obj.compute(cursor, user,
-                    tax.invoice.currency, tax.amount,
-                    tax.invoice.company.currency, context=context)
+            amount = currency_obj.compute(tax.invoice.currency, tax.amount,
+                    tax.invoice.company.currency)
             res['amount_second_currency'] = tax.amount
             res['second_currency'] = tax.invoice.currency.id
         else:
@@ -2027,7 +1902,7 @@ class InvoiceTax(ModelSQL, ModelView):
             })]
         return res
 
-    def _credit(self, cursor, user, tax, context=None):
+    def _credit(self, tax):
         '''
         Return values to credit tax.
         '''
@@ -2090,12 +1965,12 @@ class PrintInvoiceReport(Wizard):
         }
     }
 
-    def _choice(self, cursor, user, data, context=None):
+    def _choice(self, data):
         if len(data['ids']) > 1:
             return 'warning'
         return 'print'
 
-    def _print_init(self, cursor, user, data, context=None):
+    def _print_init(self, data):
         res = {}
         if 'ids' in data['form']:
             res['ids'] = data['form']['ids']
@@ -2103,14 +1978,14 @@ class PrintInvoiceReport(Wizard):
             res['ids'] = data['ids']
         return res
 
-    def _next_id(self, cursor, user, data, context=None):
+    def _next_id(self, data):
         res = {}
         if data['form']['ids']:
             data['form']['ids'].pop(0)
         res['ids'] = data['form']['ids']
         return res
 
-    def _print_next(self, cursor, user, data, context=None):
+    def _print_next(self, data):
         if not data['form']['ids']:
             return 'end'
         return 'print'
@@ -2121,33 +1996,25 @@ PrintInvoiceReport()
 class InvoiceReport(Report):
     _name = 'account.invoice'
 
-    def execute(self, cursor, user, ids, datas, context=None):
+    def execute(self, ids, datas):
         invoice_obj = self.pool.get('account.invoice')
 
-        if context is None:
-            context = {}
-        res = super(InvoiceReport, self).execute(cursor, user, ids, datas,
-                context=context)
+        res = super(InvoiceReport, self).execute(ids, datas)
         if len(ids) > 1 or datas['id'] != ids[0]:
             res = (res[0], res[1], True, res[3])
         else:
-            invoice = invoice_obj.browse(cursor, user, ids[0], context=context)
+            invoice = invoice_obj.browse(ids[0])
             if invoice.number:
                 res = (res[0], res[1], res[2], res[3] + ' - ' + invoice.number)
         return res
 
-    def _get_objects(self, cursor, user_id, ids, model, datas, context):
+    def _get_objects(self, ids, model, datas):
         invoice_obj = self.pool.get('account.invoice')
 
-        if context is None:
-            context = {}
-
-        context = context.copy()
-        if 'language' in context:
-            del context['language']
-        return invoice_obj.browse(cursor, user_id, [ids[0]], context=context)
+        with Transaction().set_context(language=False):
+            return invoice_obj.browse([ids[0]])
 
-    def parse(self, cursor, user_id, report, objects, datas, context):
+    def parse(self, report, objects, datas, localcontext):
         user_obj = self.pool.get('res.user')
         invoice_obj = self.pool.get('account.invoice')
 
@@ -2157,20 +2024,17 @@ class InvoiceReport(Report):
             return (invoice.invoice_report_format,
                     base64.decodestring(invoice.invoice_report))
 
-        user = user_obj.browse(cursor, user_id, user_id, context)
-        if context is None:
-            context = {}
-        context = context.copy()
-        context['company'] = user.company
-        res = super(InvoiceReport, self).parse(cursor, user_id, report, objects,
-                datas, context)
+        user = user_obj.browse(Transaction().user)
+        localcontext['company'] = user.company
+        res = super(InvoiceReport, self).parse(report, objects, datas,
+                localcontext)
         #If the invoice is open or paid and the report not saved in invoice_report
         #there was an error somewhere. So we save it now in invoice_report
         if invoice.state in ('open', 'paid'):
-            invoice_obj.write(cursor, user_id, invoice.id, {
+            invoice_obj.write(invoice.id, {
                 'invoice_report_format': res[0],
                 'invoice_report': base64.encodestring(res[1]),
-                }, context=context)
+                })
         return res
 
 InvoiceReport()
@@ -2189,15 +2053,14 @@ class PayInvoiceInit(ModelView):
             domain=[('type', '=', 'cash')])
     date = fields.Date('Date', required=True)
 
-    def default_date(self, cursor, user, context=None):
+    def default_date(self):
         date_obj = self.pool.get('ir.date')
-        return date_obj.today(cursor, user, context=context)
+        return date_obj.today()
 
-    def on_change_with_currency_digits(self, cursor, user, vals, context=None):
+    def on_change_with_currency_digits(self, vals):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('currency'):
-            currency = currency_obj.browse(cursor, user, vals['currency'],
-                    context=context)
+            currency = currency_obj.browse(vals['currency'])
             return currency.digits
         return 2
 
@@ -2268,23 +2131,21 @@ class PayInvoiceAsk(ModelView):
     account = fields.Many2One('account.account', 'Account', readonly=True)
     invoice = fields.Many2One('account.invoice', 'Invoice', readonly=True)
 
-    def default_type(self, cursor, user, context=None):
+    def default_type(self):
         return 'partial'
 
-    def on_change_lines(self, cursor, user, vals, context=None):
+    def on_change_lines(self, vals):
         currency_obj = self.pool.get('currency.currency')
         line_obj = self.pool.get('account.move.line')
         invoice_obj = self.pool.get('account.invoice')
 
         res = {}
-        invoice = invoice_obj.browse(cursor, user, vals['invoice'],
-                context=context)
-        amount = currency_obj.compute(cursor, user, vals['currency'],
-                vals['amount'], vals['currency_writeoff'], context=context)
+        invoice = invoice_obj.browse(vals['invoice'])
+        amount = currency_obj.compute(vals['currency'], vals['amount'],
+                vals['currency_writeoff'])
 
         res['amount_writeoff'] = Decimal('0.0')
-        for line in line_obj.browse(cursor, user, vals['lines'],
-                context=context):
+        for line in line_obj.browse(vals['lines']):
             res['amount_writeoff'] += line.debit - line.credit
         if invoice.type in ('in_invoice', 'out_credit_note'):
             res['amount_writeoff'] = - res['amount_writeoff'] - amount
@@ -2343,40 +2204,37 @@ class PayInvoice(Wizard):
                     'payment with an amount greater then the amount to pay!',
             })
 
-    def _init(self, cursor, user, data, context=None):
+    def _init(self, data):
         invoice_obj = self.pool.get('account.invoice')
         res = {}
-        invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
+        invoice = invoice_obj.browse(data['id'])
         res['currency'] = invoice.currency.id
         res['currency_digits'] = invoice.currency.digits
         res['amount'] = invoice.amount_to_pay_today or invoice.amount_to_pay
         res['description'] = invoice.number
         return res
 
-    def _choice(self, cursor, user, data, context=None):
+    def _choice(self, data):
         invoice_obj = self.pool.get('account.invoice')
         currency_obj = self.pool.get('currency.currency')
 
-        invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
+        invoice = invoice_obj.browse(data['id'])
 
-        ctx = context.copy()
-        ctx['date'] = data['form']['date']
-        amount = currency_obj.compute(cursor, user, data['form']['currency'],
-                data['form']['amount'], invoice.company.currency,
-                context=ctx)
-        res = invoice_obj.get_reconcile_lines_for_amount(cursor, user, invoice,
-                amount)
+        with Transaction().set_context(date=data['form']['date']):
+            amount = currency_obj.compute(data['form']['currency'],
+                    data['form']['amount'], invoice.company.currency)
+        res = invoice_obj.get_reconcile_lines_for_amount(invoice, amount)
         if res[1] == Decimal('0.0') and amount <= invoice.amount_to_pay:
             return 'pay'
         return 'ask'
 
-    def _ask(self, cursor, user, data, context=None):
+    def _ask(self, data):
         invoice_obj = self.pool.get('account.invoice')
         currency_obj = self.pool.get('currency.currency')
         line_obj = self.pool.get('account.move.line')
 
         res = {}
-        invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
+        invoice = invoice_obj.browse(data['id'])
         res['lines_to_pay'] = [x.id for x in invoice.lines_to_pay
                 if not x.reconciliation]
 
@@ -2388,22 +2246,20 @@ class PayInvoice(Wizard):
         res['date'] = data['form']['date']
         res['company'] = invoice.company.id
 
-        amount = currency_obj.compute(cursor, user, data['form']['currency'],
-                data['form']['amount'], invoice.company.currency,
-                context=context)
+        amount = currency_obj.compute(data['form']['currency'],
+                data['form']['amount'], invoice.company.currency)
 
-        if currency_obj.is_zero(cursor, user, invoice.company.currency,
-                amount):
+        if currency_obj.is_zero(invoice.company.currency, amount):
             res['lines'] = [x.id for x in invoice.lines_to_pay]
         else:
-            res['lines'] = invoice_obj.get_reconcile_lines_for_amount(cursor,
-                    user, invoice, amount)[0]
+            res['lines'] = invoice_obj.get_reconcile_lines_for_amount(invoice,
+                    amount)[0]
         for line_id in res['lines'][:]:
             if line_id not in res['lines_to_pay']:
                 res['lines'].remove(line_id)
 
         res['amount_writeoff'] = Decimal('0.0')
-        for line in line_obj.browse(cursor, user, res['lines'], context=context):
+        for line in line_obj.browse(res['lines']):
             res['amount_writeoff'] += line.debit - line.credit
         for line in invoice.payment_lines:
             res['amount_writeoff'] += line.debit - line.credit
@@ -2419,26 +2275,23 @@ class PayInvoice(Wizard):
                 if not x.reconciliation]
 
         if amount > invoice.amount_to_pay \
-                or currency_obj.is_zero(cursor, user, invoice.company.currency,
-                        amount):
+                or currency_obj.is_zero(invoice.company.currency, amount):
             res['type'] = 'writeoff'
         return res
 
-    def _action_pay(self, cursor, user, data, context=None):
+    def _action_pay(self, data):
         invoice_obj = self.pool.get('account.invoice')
         currency_obj = self.pool.get('currency.currency')
         move_line_obj = self.pool.get('account.move.line')
 
-        invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
+        invoice = invoice_obj.browse(data['id'])
 
-        ctx = context.copy()
-        ctx['date'] = data['form']['date']
-        amount = currency_obj.compute(cursor, user, data['form']['currency'],
-                data['form']['amount'], invoice.company.currency,
-                context=ctx)
+        with Transaction().set_context(date=data['form']['date']):
+            amount = currency_obj.compute(data['form']['currency'],
+                    data['form']['amount'], invoice.company.currency)
 
-        reconcile_lines = invoice_obj.get_reconcile_lines_for_amount(cursor,
-                user, invoice, amount)
+        reconcile_lines = invoice_obj.get_reconcile_lines_for_amount(invoice,
+                amount)
 
         amount_second_currency = False
         second_currency = False
@@ -2448,36 +2301,31 @@ class PayInvoice(Wizard):
 
         if amount > invoice.amount_to_pay and \
                 data['form'].get('type') != 'writeoff':
-            self.raise_user_error(cursor, 'amount_greater_amount_to_pay',
-                    context=context)
+            self.raise_user_error('amount_greater_amount_to_pay')
 
         line_id = False
-        if not currency_obj.is_zero(cursor, user, invoice.company.currency,
-                amount):
-            line_id = invoice_obj.pay_invoice(cursor, user, data['id'], amount,
+        if not currency_obj.is_zero(invoice.company.currency, amount):
+            line_id = invoice_obj.pay_invoice(data['id'], amount,
                     data['form']['journal'], data['form']['date'],
                     data['form']['description'], amount_second_currency,
-                    second_currency, context=context)
+                    second_currency)
 
         if reconcile_lines[1] != Decimal('0.0'):
             if data['form'].get('type') == 'writeoff':
                 line_ids = data['form']['lines'][0][1] + \
                         [x.id for x in invoice.payment_lines
                                 if not x.reconciliation]
-                if line_id:
-                    line_ids += [line_id]
                 if line_ids:
-                    move_line_obj.reconcile(cursor, user, line_ids,
+                    move_line_obj.reconcile(line_ids,
                             journal_id=data['form']['journal_writeoff'],
                             date=data['form']['date'],
-                            account_id=data['form']['account_writeoff'],
-                            context=context)
+                            account_id=data['form']['account_writeoff'])
         else:
             line_ids = reconcile_lines[0]
             if line_id:
                 line_ids += [line_id]
             if line_ids:
-                move_line_obj.reconcile(cursor, user, line_ids, context=context)
+                move_line_obj.reconcile(line_ids)
         return {}
 
 PayInvoice()
@@ -2526,19 +2374,18 @@ class CreditInvoice(Wizard):
                     'an invoice with payments!',
             })
 
-    def _init(self, cursor, user, data, context=None):
+    def _init(self, data):
         invoice_obj = self.pool.get('account.invoice')
         res = {
             'with_refund': True,
         }
-        for invoice in invoice_obj.browse(cursor, user, data['ids'],
-                context=context):
+        for invoice in invoice_obj.browse(data['ids']):
             if invoice.state != 'open' or invoice.payment_lines:
                 res['with_refund'] = False
                 break
         return res
 
-    def _action_credit(self, cursor, user, data, context=None):
+    def _action_credit(self, data):
         model_data_obj = self.pool.get('ir.model.data')
         act_window_obj = self.pool.get('ir.action.act_window')
         invoice_obj = self.pool.get('account.invoice')
@@ -2546,21 +2393,17 @@ class CreditInvoice(Wizard):
         refund = data['form']['with_refund']
 
         if refund:
-            for invoice in invoice_obj.browse(cursor, user, data['ids'],
-                    context=context):
+            for invoice in invoice_obj.browse(data['ids']):
                 if invoice.state != 'open':
-                    self.raise_user_error(cursor, 'refund_non_open',
-                            context=context)
+                    self.raise_user_error('refund_non_open')
                 if invoice.payment_lines:
-                    self.raise_user_error(cursor, 'refund_with_payement',
-                            context=context)
+                    self.raise_user_error('refund_with_payement')
 
-        invoice_ids = invoice_obj.credit(cursor, user, data['ids'],
-                refund=refund, context=context)
+        invoice_ids = invoice_obj.credit(data['ids'], refund=refund)
 
-        act_window_id = model_data_obj.get_id(cursor, user, 'account_invoice',
-                'act_invoice_form', context=context)
-        res = act_window_obj.read(cursor, user, act_window_id, context=context)
+        act_window_id = model_data_obj.get_id('account_invoice',
+                'act_invoice_form')
+        res = act_window_obj.read(act_window_id)
         res['res_id'] = invoice_ids
         if len(invoice_ids) == 1:
             res['views'].reverse()
diff --git a/payment_term.py b/payment_term.py
index a4d3150..371fe22 100644
--- a/payment_term.py
+++ b/payment_term.py
@@ -1,12 +1,13 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from trytond.model import ModelView, ModelSQL, fields
-from trytond.backend import TableHandler
-from trytond.pyson import Not, Equal, Eval
 from decimal import Decimal
 import datetime
 import time
 from dateutil.relativedelta import relativedelta
+from trytond.model import ModelView, ModelSQL, fields
+from trytond.backend import TableHandler
+from trytond.pyson import Not, Equal, Eval
+from trytond.transaction import Transaction
 
 
 class PaymentTerm(ModelSQL, ModelView):
@@ -27,11 +28,10 @@ class PaymentTerm(ModelSQL, ModelView):
             'missing_remainder': 'Payment term missing a remainder line!',
             })
 
-    def default_active(self, cursor, user, context=None):
+    def default_active(self):
         return True
 
-    def compute(self, cursor, user, amount, currency, payment_term, date=None,
-            context=None):
+    def compute(self, amount, currency, payment_term, date=None):
         '''
         Return list with (date, amount) for each payment term lines
         '''
@@ -45,23 +45,20 @@ class PaymentTerm(ModelSQL, ModelView):
 
         res = []
         if date is None:
-            date = date_obj.today(cursor, user, context=context)
+            date = date_obj.today()
         remainder = amount
         for line in payment_term.lines:
-            value = type_obj.get_value(cursor, user, line, remainder, currency,
-                    context)
-            value_date = delay_obj.get_date(cursor, user, line, date, context)
+            value = type_obj.get_value(line, remainder, currency)
+            value_date = delay_obj.get_date(line, date)
             if not value or not value_date:
                 if (not remainder) and line.amount:
-                    self.raise_user_error(cursor, 'invalid_line',
-                            context=context)
+                    self.raise_user_error('invalid_line')
                 else:
                     continue
             res.append((value_date, value))
             remainder -= value
-        if not currency_obj.is_zero(cursor, user, currency, remainder):
-            self.raise_user_error(cursor, 'missing_remainder',
-                    context=context)
+        if not currency_obj.is_zero(currency, remainder):
+            self.raise_user_error('missing_remainder')
         return res
 
 PaymentTerm()
@@ -81,16 +78,15 @@ class PaymentTermLineType(ModelSQL, ModelView):
         ]
         self._order.insert(0, ('name', 'ASC'))
 
-    def get_value(self, cursor, user, line, amount, currency, context=None):
+    def get_value(self, line, amount, currency):
         currency_obj = self.pool.get('currency.currency')
         if line.type == 'fixed':
-            return currency_obj.compute(cursor, user, line.currency,
-                    line.amount, currency, context=context)
+            return currency_obj.compute(line.currency, line.amount, currency)
         elif line.type == 'percent':
-            return currency_obj.round(cursor, user, currency,
+            return currency_obj.round(currency,
                     amount * line.percentage / Decimal('100'))
         elif line.type == 'remainder':
-            return currency_obj.round(cursor, user, currency, amount)
+            return currency_obj.round(currency, amount)
         return None
 
 PaymentTermLineType()
@@ -110,7 +106,7 @@ class PaymentTermLineDelay(ModelSQL, ModelView):
         ]
         self._order.insert(0, ('name', 'ASC'))
 
-    def get_date(self, cursor, user, line, date, context=None):
+    def get_date(self, line, date):
         value = None
         if line.delay in ('net_days', 'end_month'):
             value = date + relativedelta(days=line.days)
@@ -155,8 +151,9 @@ class PaymentTermLine(ModelSQL, ModelView):
         super(PaymentTermLine, self).__init__()
         self._order.insert(0, ('sequence', 'ASC'))
 
-    def init(self, cursor, module_name):
-        super(PaymentTermLine, self).init(cursor, module_name)
+    def init(self, module_name):
+        super(PaymentTermLine, self).init(module_name)
+        cursor = Transaction().cursor
         table = TableHandler(cursor, self, module_name)
 
         # Migration from 1.0 percent change into percentage
@@ -165,26 +162,25 @@ class PaymentTermLine(ModelSQL, ModelView):
                     'SET percentage = percent * 100')
             table.drop_column('percent', exception=True)
 
-    def default_type(self, cursor, user, context=None):
+    def default_type(self):
         return 'remainder'
 
-    def default_delay(self, cursor, user, context=None):
+    def default_delay(self):
         return 'net_days'
 
-    def get_type(self, cursor, user, context=None):
+    def get_type(self):
         type_obj = self.pool.get('account.invoice.payment_term.line.type')
-        type_ids = type_obj.search(cursor, user, [], context=context)
-        types = type_obj.browse(cursor, user, type_ids, context=context)
+        type_ids = type_obj.search([])
+        types = type_obj.browse(type_ids)
         return [(x.code, x.name) for x in types]
 
-    def get_delay(self, cursor, user, context=None):
+    def get_delay(self):
         delay_obj = self.pool.get('account.invoice.payment_term.line.delay')
-        delay_ids = delay_obj.search(cursor, user, [], context=context)
-        delays = delay_obj.browse(cursor, user, delay_ids,
-                context=context)
+        delay_ids = delay_obj.search([])
+        delays = delay_obj.browse(delay_ids)
         return [(x.code, x.name) for x in delays]
 
-    def on_change_type(self, cursor, user, vals, context=None):
+    def on_change_type(self, vals):
         if not 'type' in vals:
             return {}
         res = {}
@@ -195,17 +191,16 @@ class PaymentTermLine(ModelSQL, ModelView):
             res['percentage'] =  Decimal('0.0')
         return res
 
-    def on_change_with_currency_digits(self, cursor, user, vals, context=None):
+    def on_change_with_currency_digits(self, vals):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('currency'):
-            currency = currency_obj.browse(cursor, user, vals['currency'],
-                    context=context)
+            currency = currency_obj.browse(vals['currency'])
             return currency.digits
         return 2
 
-    def get_currency_digits(self, cursor, user, ids, name, context=None):
+    def get_currency_digits(self, ids, name):
         res = {}
-        for line in self.browse(cursor, user, ids, context=context):
+        for line in self.browse(ids):
             if line.currency:
                 res[line.id] = line.currency.digits
             else:
diff --git a/tests/test_account_invoice.py b/tests/test_account_invoice.py
index 0aee346..2eca349 100644
--- a/tests/test_account_invoice.py
+++ b/tests/test_account_invoice.py
@@ -25,7 +25,7 @@ class AccountInvoiceTestCase(unittest.TestCase):
         '''
         Test views.
         '''
-        self.assertRaises(Exception, test_view('account_invoice'))
+        test_view('account_invoice')
 
 def suite():
     suite = trytond.tests.test_tryton.suite()
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index a98a5c4..6b8ea09 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.6.0
+Version: 1.8.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.6/
+Download-URL: http://downloads.tryton.org/1.8/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index f330a53..a1da11c 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -1,8 +1,8 @@
 python-dateutil
-trytond_account >= 1.6, < 1.7
-trytond_company >= 1.6, < 1.7
-trytond_party >= 1.6, < 1.7
-trytond_product >= 1.6, < 1.7
-trytond_currency >= 1.6, < 1.7
-trytond_account_product >= 1.6, < 1.7
-trytond >= 1.6, < 1.7
\ No newline at end of file
+trytond_account >= 1.8, < 1.9
+trytond_company >= 1.8, < 1.9
+trytond_party >= 1.8, < 1.9
+trytond_product >= 1.8, < 1.9
+trytond_currency >= 1.8, < 1.9
+trytond_account_product >= 1.8, < 1.9
+trytond >= 1.8, < 1.9
\ No newline at end of file
commit 6c99960fcb311e6911f5c7cf25f667601da477da
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Nov 2 14:26:10 2010 +0100

    Switching to source format 3.0 (quilt).

diff --git a/debian/source/format b/debian/source/format
index d3827e7..163aaf8 100644
--- a/debian/source/format
+++ b/debian/source/format
@@ -1 +1 @@
-1.0
+3.0 (quilt)
commit c18b489be3cffdbe86fd73d6258490c79e13053e
Author: Daniel Baumann <daniel at debian.org>
Date:   Thu Sep 30 01:05:32 2010 +0200

    Updating to standards version 3.9.1.

diff --git a/debian/control b/debian/control
index d3aded8..c27dbec 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
  Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
 Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
-Standards-Version: 3.9.0
+Standards-Version: 3.9.1
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
commit 6ecd3c2d6dcd442e4239c3927b7e21f8d2ada27d
Author: Daniel Baumann <daniel at debian.org>
Date:   Thu Sep 30 01:04:04 2010 +0200

    Updating to debhelper version 8.

diff --git a/debian/compat b/debian/compat
index 7f8f011..45a4fb7 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-7
+8
diff --git a/debian/control b/debian/control
index 7641b24..d3aded8 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Uploaders:
  Daniel Baumann <daniel at debian.org>,
  Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
 Dm-Upload-Allowed: yes
-Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
+Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
 Standards-Version: 3.9.0
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
commit 4db5918b673b08549403b8e30038996c3a79191c
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Jun 28 20:35:29 2010 +0200

    Updating standards version to 3.9.0.

diff --git a/debian/control b/debian/control
index 04b6afc..7641b24 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
  Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
 Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
-Standards-Version: 3.8.4
+Standards-Version: 3.9.0
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
commit 26e7e1c23bb078d1b945eb9912aadab37ac4eb79
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date:   Thu May 13 11:45:16 2010 +0200

    Releasing debian version 1.6.0-1.

diff --git a/debian/changelog b/debian/changelog
index 29283b2..81b4837 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+tryton-modules-account-invoice (1.6.0-1) unstable; urgency=low
+
+  [ Daniel Baumann ]
+  * Adding Dm-Upload-Allowed in control in preparation for Mathias.
+
+  [ Mathias Behrle ]
+  * Merging upstream version 1.6.0.
+  * Updating copyright.
+  * Updating depends.
+
+ -- Mathias Behrle <mathiasb at mbsolutions.selfip.biz>  Thu, 13 May 2010 11:44:42 +0200
+
 tryton-modules-account-invoice (1.4.2-1) unstable; urgency=low
 
   * Updating year in copyright file.
commit 38a6c9986d4619b8d1c928623e5a89c6eeb2610a
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date:   Thu May 13 11:44:09 2010 +0200

    Updating depends.

diff --git a/debian/control b/debian/control
index 3720503..04b6afc 100644
--- a/debian/control
+++ b/debian/control
@@ -15,11 +15,11 @@ Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invo
 Package: tryton-modules-account-invoice
 Architecture: all
 Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.4),
- tryton-modules-account (>= 1.4), tryton-modules-account-product (>= 1.4),
- tryton-modules-company (>= 1.4), tryton-modules-currency (>= 1.4),
- tryton-modules-party (>= 1.4), tryton-modules-product (>= 1.4),
- python-egenix-mxbeebase, python-pkg-resources
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.6),
+ tryton-modules-account (>= 1.6), tryton-modules-account-product (>= 1.6),
+ tryton-modules-company (>= 1.6), tryton-modules-currency (>= 1.6),
+ tryton-modules-party (>= 1.6), tryton-modules-product (>= 1.6),
+ python-dateutil, python-pkg-resources
 XB-Python-Version: ${python:Versions}
 Description: Tryton Application Platform (Financial and Accounting Module)
  Tryton is a high-level general purpose application platform written in Python
commit bc0230bccde236914bcab8718bd20f20f09dafa6
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date:   Thu May 13 11:43:44 2010 +0200

    Updating copyright.

diff --git a/debian/copyright b/debian/copyright
index 9a3e6c5..6146982 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -6,9 +6,9 @@ Maintainer-Homepage: http://tryton.debian-maintainers.org/
 Files: *
 Copyright:
  (C) 2004-2008 Tiny SPRL
- (C) 2008-2009 Cedric Krier
- (C) 2008-2009 Bertrand Chenal
- (C) 2008-2009 B2CK SPRL
+ (C) 2008-2010 Cedric Krier
+ (C) 2008-2010 Bertrand Chenal
+ (C) 2008-2010 B2CK SPRL
 License: GPL-3+
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
commit fe6034508eebeb4e5be20da00728a36c26ee8b4e
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date:   Thu May 13 11:28:38 2010 +0200

    Merging upstream version 1.6.0.

diff --git a/CHANGELOG b/CHANGELOG
index f4fd11f..21c26eb 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,8 +1,7 @@
-Version 1.4.2 - 2010-02-16
-* Some bug fixes (see mercurial logs for details)
-
-Version 1.4.1 - 2009-11-23
-* Some bug fixes (see mercurial logs for details)
+Version 1.6.0 - 2010-05-13
+* Bug fixes (see mercurial logs for details)
+* Add default search value on invoice
+* Remove egenix-mx-base and replace it by python-dateutil
 
 Version 1.4.0 - 2009-10-19
 * Bug fixes (see mercurial logs for details)
diff --git a/INSTALL b/INSTALL
index c321e9a..59ecffa 100644
--- a/INSTALL
+++ b/INSTALL
@@ -5,7 +5,7 @@ Prerequisites
 -------------
 
  * Python 2.4 or later (http://www.python.org/)
- * egenix-mx-base (http://www.egenix.com/products/python/)
+ * python-dateutil (http://labix.org/python-dateutil)
  * trytond (http://www.tryton.org/)
  * trytond_account (http://www.tryton.org/)
  * trytond_company (http://www.tryton.org/)
diff --git a/MANIFEST.in b/MANIFEST.in
index c61b52d..5343ad8 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -7,4 +7,3 @@ include LICENSE
 include *.xml
 include *.odt
 include *.csv
-include tests/*
diff --git a/PKG-INFO b/PKG-INFO
index c6c3ff8..0cf3f07 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.4.2
+Version: 1.6.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.4/
+Download-URL: http://downloads.tryton.org/1.6/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index b0efdef..d083c99 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
     'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
-    'version': '1.4.2',
+    'version': '1.6.0',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/account.py b/account.py
index 9f0c3f1..345d763 100644
--- a/account.py
+++ b/account.py
@@ -1,30 +1,63 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 from trytond.model import ModelView, ModelSQL, fields
+from trytond.pyson import Eval, Not, Equal
 
 
 class FiscalYear(ModelSQL, ModelView):
     _name = 'account.fiscalyear'
     out_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Invoice Sequence', required=True,
-            domain=[('code', '=', 'account.invoice'),
-                ['OR', "('company', '=', company)", ('company', '=', False)]],
-                    context="{'code': 'account.invoice', 'company': company}")
+            domain=[
+                ('code', '=', 'account.invoice'),
+                ['OR',
+                    ('company', '=', Eval('company')),
+                    ('company', '=', False),
+                ],
+            ],
+            context={
+                'code': 'account.invoice',
+                'company': Eval('company'),
+            })
     in_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Invoice Sequence', required=True,
-            domain=[('code', '=', 'account.invoice'),
-                ['OR', "('company', '=', company)", ('company', '=', False)]],
-                    context="{'code': 'account.invoice', 'company': company}")
+            domain=[
+                ('code', '=', 'account.invoice'),
+                ['OR',
+                    ('company', '=', Eval('company')),
+                    ('company', '=', False),
+                ],
+            ],
+            context={
+                'code': 'account.invoice',
+                'company': Eval('company'),
+            })
     out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Credit Note Sequence', required=True,
-            domain=[('code', '=', 'account.invoice'),
-                ['OR', "('company', '=', company)", ('company', '=', False)]],
-                    context="{'code': 'account.invoice', 'company': company}")
+            domain=[
+                ('code', '=', 'account.invoice'),
+                ['OR',
+                    ('company', '=', Eval('company')),
+                    ('company', '=', False),
+                ],
+            ],
+            context={
+                'code': 'account.invoice',
+                'company': Eval('company'),
+            })
     in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Credit Note Sequence', required=True,
-            domain=[('code', '=', 'account.invoice'),
-                ['OR', "('company', '=', company)", ('company', '=', False)]],
-                    context="{'code': 'account.invoice', 'company': company}")
+            domain=[
+                ('code', '=', 'account.invoice'),
+                ['OR',
+                    ('company', '=', Eval('company')),
+                    ('company', '=', False),
+                ],
+            ],
+            context={
+                'code': 'account.invoice',
+                'company': Eval('company'),
+            })
 
     def __init__(self):
         super(FiscalYear, self).__init__()
@@ -52,6 +85,10 @@ class FiscalYear(ModelSQL, ModelView):
 
     def write(self, cursor, user, ids, vals, context=None):
         invoice_obj = self.pool.get('account.invoice')
+
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+
         for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
                 'out_credit_note_sequence', 'in_credit_note_sequence'):
             if vals.get(sequence):
@@ -81,32 +118,32 @@ class Period(ModelSQL, ModelView):
             domain=[('code', '=', 'account.invoice')],
             context={'code': 'account.invoice'},
             states={
-                'required': "type == 'standard'",
-                'invisible': "type != 'standard'",
+                'required': Equal(Eval('type'), 'standard'),
+                'invisible': Not(Equal(Eval('type'), 'standard')),
             })
     in_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Invoice Sequence',
             domain=[('code', '=', 'account.invoice')],
             context={'code': 'account.invoice'},
             states={
-                'required': "type == 'standard'",
-                'invisible': "type != 'standard'",
+                'required': Equal(Eval('type'), 'standard'),
+                'invisible': Not(Equal(Eval('type'), 'standard')),
             })
     out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Credit Note Sequence',
             domain=[('code', '=', 'account.invoice')],
             context={'code': 'account.invoice'},
             states={
-                'required': "type == 'standard'",
-                'invisible': "type != 'standard'",
+                'required': Equal(Eval('type'), 'standard'),
+                'invisible': Not(Equal(Eval('type'), 'standard')),
             })
     in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Credit Note Sequence',
             domain=[('code', '=', 'account.invoice')],
             context={'code': 'account.invoice'},
             states={
-                'required': "type == 'standard'",
-                'invisible': "type != 'standard'",
+                'required': Equal(Eval('type'), 'standard'),
+                'invisible': Not(Equal(Eval('type'), 'standard')),
             })
 
     def __init__(self):
diff --git a/de_DE.csv b/de_DE.csv
index 41aa447..0bd1bb6 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -1,6 +1,6 @@
 type,name,res_id,src,value,fuzzy
-error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,"Sie können die Rechnungsnummern-Sequenz nicht ändern, wenn bereits eine Rechnung im laufenden Buchungsjahr eröffnet wurde.",0
-error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Für unterschiedliche Geschäftsjahre müssen jeweils eigene Rechnungssequenzen erstellt werden!,0
+error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,"Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine Rechnung im laufenden Buchungsjahr fakturiert wurde.",0
+error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Für unterschiedliche Geschäftsjahre müssen jeweils eigene Rechnungsnummernkreise erstellt werden!,0
 error,account.invoice,0,"Base taxes different from invoice lines!
 Re-compute the invoice.",Steuern stimmen nicht mit den Rechnungspositionen überein!,0
 error,account.invoice,0,"Taxes defined but not on invoice lines!
@@ -8,18 +8,18 @@ Re-compute the invoice.","Es sind Steuern definiert, allerdings nicht in den Rec
 Bitte lassen Sie die Rechnung erneut berechnen.",0
 error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
 Re-compute the invoice.","Steuern sind für die Rechnungspositionen definiert, allerdings nicht für die Rechnung selbst!
-",0
+Bitte lassen Sie die Rechnung erneut berechnen.",0
 error,account.invoice,0,The credit account on journal is missing!,Haben-Konto im Journal fehlt!,0
 error,account.invoice,0,The credit account on journal is the same than the invoice account!,Das Habenkonto des Journals ist das selbe wie das Rechnungskonto!,0
 error,account.invoice,0,The debit account on journal is missing!,Soll-Konto im Journal fehlt,0
 error,account.invoice,0,The debit account on journal is the same than the invoice account!,Das Sollkonto des Journals ist das selbe wie das Rechnungskonto!,0
-error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Rechnungsnummern-Sequenz für diese Periode oder dieses Buchungsjahr fehlt!,0
+error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Rechnungsnummernkreis für diese Periode oder dieses Buchungsjahr fehlt!,0
 error,account.invoice,0,"You can not create an invoice
 with account from a different invoice company!",Es können keine Rechnungen mit einem Konto von einer anderen rechnungsstellenden Firma angelegt werden,0
 error,account.invoice,0,"You can not modify an invoice that is opened, paid!",Fakturierte oder bezahlte Rechnungen können nicht geändert werden!,0
 error,account.invoice,0,You can not reset to draft an invoice that has move!,"Eine Rechnung, die Buchungen enthält, kann nicht auf Entwurf zurückgesetzt werden!",0
 error,account.invoice,0,"You can not use the same account
-as on invoice line!",Es kann nicht das selbe Konto verwendet werden!,0
+as on invoice line!",Es kann nicht das selbe Konto wie für die Rechnungszeile verwendet werden!,0
 error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Die Verrechnung von nicht fakturierten Rechnungen ist nicht möglich!,0
 error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,"Die Verrechnung einer Rechnung ist nicht möglich, wenn bereits Zahlungen für diese gebucht sind!",0
 error,account.invoice.line,0,"Line with ""line"" type must have an account!","Eine Zeile vom Typ ""Position"" muss einem Konto zugeordnet sein!",0
@@ -30,7 +30,7 @@ with account with a different invoice company!","Eine Rechnungszeile kann sich n
 auf ein Konto eines anderen Unternehmens beziehen!",0
 error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",Positionen von fakturierten oder bezahlten Rechnungen können nicht geändert werden!,0
 error,account.invoice.line,0,"You can not use the same account
-as on the invoice!",Es kann nicht das selbe Konto verwendet werden!,0
+as on the invoice!",Es kann nicht das selbe Konto wie für die Rechnung verwendet werden!,0
 error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,Ein Teilbetrag kann nicht größer als der Gesamtbetrag der Rechnung sein!,0
 error,account.invoice.payment_term,0,Invalid payment term line!,Ungültige Position in Zahlungsbedingung!,0
 error,account.invoice.payment_term,0,Payment term missing a remainder line!,In der Zahlungsbedingung fehlt eine Restbetragszeile!,0
@@ -38,12 +38,12 @@ error,account.invoice.payment_term.line.delay,0,The code must be unique!,Code ka
 error,account.invoice.payment_term.line.type,0,The code must be unique!,Code kann nicht mehrfach vergeben werden!,0
 error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine neue Position hinzugefügt werden!",0
 error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",Steuern von fakturierten oder bezahlten Rechnungen können nicht geändert werden!,0
-error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,"Sie können die Rechnungsnummern-Sequenz nicht ändern, wenn bereits eine Rechnung in der laufenden Periode eröffnet wurde.",0
-error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Verschiedene Geschäftsjahre eines Unternehmens erfordern unterschiedliche Rechnungssequenzen!,0
-field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Sequenz Gutschriften Lieferanten,0
-field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Sequenz Rechnungen Lieferanten,0
-field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Sequenz Gutschriften Kunden,0
-field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Sequenz Rechnungen Kunden,0
+error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,"Sie können den Rechnungsnummernkreis nicht ändern, wenn bereits eine Rechnung in der laufenden Periode fakturiert wurde.",0
+error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Für unterschiedliche Geschäftsjahre eines Unternehmens müssen jeweils eigene Rechnungsnummernkreise erstellt werden!,0
+field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Nummernkreis Gutschriften Lieferanten,0
+field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Nummernkreis Rechnungen Lieferanten,0
+field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Nummernkreis Gutschriften Kunden,0
+field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Nummernkreis Rechnungen Kunden,0
 field,"account.invoice,account",0,Account,Konto,0
 field,"account.invoice,accounting_date",0,Accounting Date,Buchungsdatum,0
 field,"account.invoice-account.move.line,invoice",0,Invoice,Rechnung,0
@@ -81,7 +81,7 @@ field,"account.invoice.line,product",0,Product,Artikel,0
 field,"account.invoice.line,quantity",0,Quantity,Anzahl,0
 field,"account.invoice.line,rec_name",0,Name,Name,0
 field,"account.invoice,lines",0,Lines,Positionen,0
-field,"account.invoice.line,sequence",0,Sequence,Sequenz,0
+field,"account.invoice.line,sequence",0,Sequence,Reihenfolge,0
 field,"account.invoice,lines_to_pay",0,Lines to Pay,Zahlbare Positionen,0
 field,"account.invoice.line,taxes",0,Taxes,Steuern,0
 field,"account.invoice.line,type",0,Type,Typ,0
@@ -132,7 +132,7 @@ field,"account.invoice.payment_term.line,payment",0,Payment Term,Zahlungsbedingu
 field,"account.invoice.payment_term.line,percentage",0,Percentage,Prozentsatz,0
 field,"account.invoice.payment_term.line,rec_name",0,Name,Name,0
 field,"account.invoice.payment_term,lines",0,Lines,Positionen,0
-field,"account.invoice.payment_term.line,sequence",0,Sequence,Sequenz,0
+field,"account.invoice.payment_term.line,sequence",0,Sequence,Reihenfolge,0
 field,"account.invoice.payment_term.line,type",0,Type,Typ,0
 field,"account.invoice.payment_term.line.type,code",0,Code,Kundennummer,0
 field,"account.invoice.payment_term.line.type,name",0,Name,Name,0
@@ -141,7 +141,7 @@ field,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
 field,"account.invoice.payment_term,rec_name",0,Name,Name,0
 field,"account.invoice,rec_name",0,Name,Name,0
 field,"account.invoice,reconciled",0,Reconciled,Abgestimmt,0
-field,"account.invoice,reference",0,Reference,Referenz,0
+field,"account.invoice,reference",0,Reference,Interner Beleg,0
 field,"account.invoice,state",0,State,Status,0
 field,"account.invoice.tax,account",0,Account,Konto,0
 field,"account.invoice,tax_amount",0,Tax,Steuer,0
@@ -154,8 +154,8 @@ field,"account.invoice,taxes",0,Tax Lines,Steuerpositionen,0
 field,"account.invoice.tax,invoice",0,Invoice,Rechnung,0
 field,"account.invoice.tax,manual",0,Manual,Manuell,0
 field,"account.invoice.tax,rec_name",0,Name,Name,0
-field,"account.invoice.tax,sequence",0,Sequence,Sequenz,0
-field,"account.invoice.tax,sequence_number",0,Sequence Number,Nummer Sequenz,0
+field,"account.invoice.tax,sequence",0,Sequence,Reihenfolge,0
+field,"account.invoice.tax,sequence_number",0,Sequence Number,Name Nummernkreis,0
 field,"account.invoice.tax,tax",0,Tax,Steuer,0
 field,"account.invoice.tax,tax_code",0,Tax Code,Steuerkennziffer,0
 field,"account.invoice.tax,tax_sign",0,Tax Sign,Vorzeichen (Steuer),0
@@ -163,10 +163,10 @@ field,"account.invoice,total_amount",0,Total,Brutto,0
 field,"account.invoice,type",0,Type,Typ,0
 field,"account.invoice,type_name",0,Type,Typ,0
 field,"account.invoice,untaxed_amount",0,Untaxed,Netto,0
-field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Sequenz Gutschriften Lieferanten,0
-field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Sequenz Rechnungen Lieferanten,0
-field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Sequenz Gutschriften Kunden,0
-field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Sequenz Rechnungen Kunden,0
+field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Nummernkreis Gutschriften Lieferanten,0
+field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Nummernkreis Rechnungen Lieferanten,0
+field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Nummernkreis Gutschriften Kunden,0
+field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Nummernkreis Rechnungen Kunden,0
 field,"party.address,invoice",0,Invoice,Rechnungsadresse,0
 field,"party.party,payment_term",0,Invoice Payment Term,Zahlungsbedingung Verkauf,0
 field,"party.party,supplier_payment_term",0,Supplier Payment Term,Zahlungsbedingung Einkauf,0
@@ -210,6 +210,7 @@ model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit N
 model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Fakturierte Lieferantenrechnungen,0
 model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Rechnung bezahlen,0
 model,"ir.action,name",act_payment_term_form,Payment Terms,Zahlungsbedingungen,0
+model,"ir.action,name",act_payment_term_form2,Payment Terms,Zahlungsbedingungen,0
 model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro Forma Kundengutschriften,0
 model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Pro Forma Kundenrechnungen,0
 model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro Forma Lieferantengutschriften,0
@@ -229,6 +230,7 @@ model,"ir.ui.menu,name",menu_invoices,Invoices,Rechnungen,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Neue Gutschrift an Kunden,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Neue Kundenrechnung,0
+model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Neue Zahlungsbedingung,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Neue Gutschrift von Lieferant,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Neue Lieferantenrechnung,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Fakturierte Kundengutschriften,0
@@ -279,7 +281,7 @@ odt,account.invoice,0,Total (excl. taxes):,Netto:,0
 odt,account.invoice,0,Unit Price,Einzelpreis,0
 odt,account.invoice,0,VAT:,USt-ID-Nr:,0
 selection,"account.invoice.line,invoice_type",0,Credit Note,Kundengutschrift,0
-selection,"account.invoice.line,invoice_type",0,Invoice,Lieferantenrechnung,0
+selection,"account.invoice.line,invoice_type",0,Invoice,Kundenrechnung,0
 selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Lieferantengutschrift,0
 selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Lieferantenrechnung,0
 selection,"account.invoice.line,type",0,Comment,Kommentar,0
@@ -334,7 +336,7 @@ view,account.invoice.payment_term,0,Payment Terms,Zahlungsbedingung,0
 view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Warnung!</b>,0
 view,account.invoice.print_invoice_report.warning,0,Print Invoice,Rechnung / Gutschrift drucken,0
 view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Die Rechnungen werden <i>direkt</i> an den Drucker gesendet.,0
-view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Sie haben mehr als eine Rechnung zum ausdrucken gewählt.,0
+view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Sie haben mehr als eine Rechnung zum Ausdrucken gewählt.,0
 view,account.invoice.tax,0,Invoice Tax,Rechnungssteuer,0
 view,account.invoice.tax,0,Invoice Taxes,Rechnungssteuern,0
 view,account.invoice.tax,0,Tax Code,Steuerkennziffer,0
diff --git a/es_CO.csv b/es_CO.csv
index 694898b..f8ba9e8 100644
--- a/es_CO.csv
+++ b/es_CO.csv
@@ -210,7 +210,8 @@ model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Factura Abi
 model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Nota Crédito de Proveedor Abierta,0
 model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Factura de Proveedor Abierta,0
 model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Pagar Factura,0
-model,"ir.action,name",act_payment_term_form,Payment Terms,Términos de Pago,0
+model,"ir.action,name",act_payment_term_form,Payment Terms,Formas de Pago,0
+model,"ir.action,name",act_payment_term_form2,Payment Terms,Formas de Pago,1
 model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Nota Crédito Proforma,0
 model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Factura Proforma,0
 model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Nota Crédito de Proveedor Proforma,0
@@ -230,14 +231,15 @@ model,"ir.ui.menu,name",menu_invoices,Invoices,Facturas,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Facturas,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nueva Nota Crédito,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nueva Factura,0
+model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nueva Nota Crédito Proveedor,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Factura Nuevo Proveedor,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Nota Crédito Abierta,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Factura Abierta,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Nota Crédito Proveedor Abierta,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Factura Proveedor Abierta,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Términos de Pago,0
-model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Términos de Pago,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Formas de Pago,0
+model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Formas de Pago,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Nota Crédito Proforma,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Factura Proforma,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Nota Crédito Proveedor Proforma,0
@@ -331,7 +333,7 @@ view,account.invoice.pay_invoice.init,0,Pay Invoice,Pagar Factura,0
 view,account.invoice.payment_term,0,Payment Term,Término de Pago,0
 view,account.invoice.payment_term,0,Payment Term Line,Línea de Término de Pago,0
 view,account.invoice.payment_term,0,Payment Term Lines,Líneas de Término de Pago,0
-view,account.invoice.payment_term,0,Payment Terms,Términos de Pago,0
+view,account.invoice.payment_term,0,Payment Terms,Formas de Pago,0
 view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Advertencia!</b>,0
 view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimir Factura,0
 view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Las facturas serán enviadas <i>directamente</i> a la impresora.,0
@@ -339,7 +341,7 @@ view,account.invoice.print_invoice_report.warning,0,You have selected more than
 view,account.invoice.tax,0,Invoice Tax,Impuesto en Factura,0
 view,account.invoice.tax,0,Invoice Taxes,Impuestos de Facturas,0
 view,account.invoice.tax,0,Tax Code,Código de Impuesto,0
-view,party.party,0,Payment Terms,Términos de Pago,0
+view,party.party,0,Payment Terms,Formas de Pago,0
 wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Crédito,0
 wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Cancelar,0
 wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Cancelar,0
diff --git a/fr_FR.csv b/fr_FR.csv
index 90e7a9b..6eadc0f 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -214,6 +214,7 @@ model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit N
 model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Factures fournisseurs ouvertes,0
 model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Payer facture,0
 model,"ir.action,name",act_payment_term_form,Payment Terms,Conditions de paiement,0
+model,"ir.action,name",act_payment_term_form2,Payment Terms,Conditions de paiement,0
 model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Notes de crédit pro forma,0
 model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Factures pro forma,0
 model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Notes de crédit fournisseurs pro forma,0
@@ -233,6 +234,7 @@ model,"ir.ui.menu,name",menu_invoices,Invoices,Factures,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Factures,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nouvelle note de crédit,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nouvelle facture,0
+model,"ir.ui.menu,name",menu_payment_term_form_new,New Payment Term,Nouvelle condition de paiement,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nouvelle note de crédit fournisseur,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Nouvelle facture fournisseur,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Notes de crédit ouvertes,0
diff --git a/invoice.py b/invoice.py
index 7f43388..b4f8bc4 100644
--- a/invoice.py
+++ b/invoice.py
@@ -5,11 +5,13 @@ from trytond.model import ModelWorkflow, ModelView, ModelSQL, fields
 from trytond.report import Report
 from trytond.wizard import Wizard
 from trytond.backend import TableHandler, FIELDS
+from trytond.pyson import In, If, Get, Eval, Not, Equal, Bool, Or, And
+from trytond.tools import reduce_ids
 from decimal import Decimal
 import base64
 
 _STATES = {
-    'readonly': "state != 'draft'",
+    'readonly': Not(Equal(Eval('state'), 'draft')),
 }
 
 _TYPE = [
@@ -26,6 +28,8 @@ _TYPE2JOURNAL = {
     'in_credit_note': 'expense',
 }
 
+_ZERO = Decimal('0.0')
+
 
 class Invoice(ModelWorkflow, ModelSQL, ModelView):
     'Invoice'
@@ -33,17 +37,19 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     _description = __doc__
     _order_name = 'number'
     company = fields.Many2One('company.company', 'Company', required=True,
-            states=_STATES, domain=[
-                "('id', 'company' in context and '=' or '!=', " \
-                        "context.get('company', 0))"])
+            states=_STATES, select=1, domain=[
+                ('id', If(In('company', Eval('context', {})), '=', '!='),
+                        Get(Eval('context', {}), 'company', 0)),
+            ])
     type = fields.Selection(_TYPE, 'Type', select=1, on_change=['type'],
             required=True, states={
-                'readonly': "state != 'draft' or context.get('type', False)" \
-                        " or (bool(lines) and bool(type))",
+                'readonly': Or(Not(Equal(Eval('state'), 'draft')),
+                    Bool(Get(Eval('context', {}), 'type')),
+                    And(Bool(Eval('lines')), Bool(Eval('type')))),
             })
-    type_name = fields.Function('get_type_name', type='char', string='Type')
+    type_name = fields.Function(fields.Char('Type'), 'get_type_name')
     number = fields.Char('Number', size=None, readonly=True, select=1)
-    reference = fields.Char('Reference', size=None)
+    reference = fields.Char('Reference', size=None, states=_STATES)
     description = fields.Char('Description', size=None, states=_STATES)
     state = fields.Selection([
         ('draft', 'Draft'),
@@ -54,57 +60,59 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         ], 'State', readonly=True)
     invoice_date = fields.Date('Invoice Date',
         states={
-                'readonly': "state in ('open', 'paid', 'cancel')",
-                'required': "state in ('open', 'paid')",
+                'readonly': In(Eval('state'), ['open', 'paid', 'cancel']),
+                'required': In(Eval('state'), ['open', 'paid']),
         })
     accounting_date = fields.Date('Accounting Date', states=_STATES)
     party = fields.Many2One('party.party', 'Party', change_default=True,
         required=True, states=_STATES, on_change=['party', 'payment_term',
             'type', 'company'])
-    party_lang = fields.Function('get_party_language', type='char',
-            string='Party Language', on_change_with=['party'])
+    party_lang = fields.Function(fields.Char('Party Language',
+        on_change_with=['party']), 'get_party_language')
     invoice_address = fields.Many2One('party.address', 'Invoice Address',
-        required=True, states=_STATES, domain=["('party', '=', party)"])
+        required=True, states=_STATES, domain=[('party', '=', Eval('party'))])
     currency = fields.Many2One('currency.currency', 'Currency', required=True,
         states={
-            'readonly': "state != 'draft' or (bool(lines) and bool(currency))",
+            'readonly': Or(Not(Equal(Eval('state'), 'draft')),
+                And(Bool(Eval('lines')), Bool(Eval('currency')))),
         })
-    currency_digits = fields.Function('get_currency_digits', type='integer',
-            string='Currency Digits', on_change_with=['currency'])
+    currency_digits = fields.Function(fields.Integer('Currency Digits',
+        on_change_with=['currency']), 'get_currency_digits')
     journal = fields.Many2One('account.journal', 'Journal', required=True,
         states=_STATES, domain=[('centralised', '=', False)])
     move = fields.Many2One('account.move', 'Move', readonly=True)
     account = fields.Many2One('account.account', 'Account', required=True,
         states=_STATES,
-        domain=["('company', '=', company)", ('kind', '!=', 'view')])
+        domain=[
+            ('company', '=', Eval('company')),
+            ('kind', '!=', 'view'),
+        ])
     payment_term = fields.Many2One('account.invoice.payment_term',
         'Payment Term', required=True, states=_STATES)
     lines = fields.One2Many('account.invoice.line', 'invoice', 'Lines',
         states=_STATES, on_change=['lines', 'taxes', 'currency', 'party', 'type'])
     taxes = fields.One2Many('account.invoice.tax', 'invoice', 'Tax Lines',
         states=_STATES, on_change=['lines', 'taxes', 'currency', 'party', 'type'])
-    comment = fields.Text('Comment')
-    untaxed_amount = fields.Function('get_untaxed_amount', type='numeric',
-            digits="(16, currency_digits)", string='Untaxed',
-            fnct_search='search_untaxed_amount')
-    tax_amount = fields.Function('get_tax_amount', type='numeric',
-            digits="(16, currency_digits)", string='Tax',
-            fnct_search='search_tax_amount')
-    total_amount = fields.Function('get_total_amount', type='numeric',
-            digits="(16, currency_digits)", string='Total',
-            fnct_search='search_total_amount')
-    reconciled = fields.Function('get_reconciled', type='boolean',
-            string='Reconciled')
-    lines_to_pay = fields.Function('get_lines_to_pay', type='one2many',
-            relation='account.move.line', string='Lines to Pay')
+    comment = fields.Text('Comment', states=_STATES)
+    untaxed_amount = fields.Function(fields.Numeric('Untaxed',
+            digits=(16, Eval('currency_digits', 2))), 'get_untaxed_amount',
+            searcher='search_untaxed_amount')
+    tax_amount = fields.Function(fields.Numeric('Tax',
+        digits=(16, Eval('currency_digits', 2))), 'get_tax_amount',
+        searcher='search_tax_amount')
+    total_amount = fields.Function(fields.Numeric('Total',
+        digits=(16, Eval('currency_digits', 2))), 'get_total_amount',
+        searcher='search_total_amount')
+    reconciled = fields.Function(fields.Boolean('Reconciled'),
+            'get_reconciled')
+    lines_to_pay = fields.Function(fields.One2Many('account.move.line', None,
+        'Lines to Pay'), 'get_lines_to_pay')
     payment_lines = fields.Many2Many('account.invoice-account.move.line',
             'invoice', 'line', readonly=True, string='Payment Lines')
-    amount_to_pay_today = fields.Function('get_amount_to_pay',
-            type='numeric', digits="(16, currency_digits)",
-            string='Amount to Pay Today')
-    amount_to_pay = fields.Function('get_amount_to_pay',
-            type='numeric', digits="(16, currency_digits)",
-            string='Amount to Pay')
+    amount_to_pay_today = fields.Function(fields.Numeric('Amount to Pay Today',
+        digits=(16, Eval('currency_digits', 2))), 'get_amount_to_pay')
+    amount_to_pay = fields.Function(fields.Numeric('Amount to Pay',
+        digits=(16, Eval('currency_digits', 2)),), 'get_amount_to_pay')
     invoice_report = fields.Binary('Invoice Report', readonly=True)
     invoice_report_format = fields.Char('Invoice Report Format', readonly=True)
 
@@ -156,6 +164,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         # Migration from 1.2 invoice_date is no more required
         table.not_null_action('invoice_date', action='remove')
 
+        # Add index on create_date
+        table.index_action('create_date', action='add')
+
     def default_type(self, cursor, user, context=None):
         if context is None:
             context = {}
@@ -186,7 +197,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         return 2
 
     def default_company(self, cursor, user, context=None):
-        company_obj = self.pool.get('company.company')
         if context is None:
             context = {}
         if context.get('company'):
@@ -201,7 +211,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             return payment_term_ids[0]
         return False
 
-    def on_change_type(self, cursor, user, ids, vals, context=None):
+    def on_change_type(self, cursor, user, vals, context=None):
         journal_obj = self.pool.get('account.journal')
         res = {}
         journal_ids = journal_obj.search(cursor, user, [
@@ -215,7 +225,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             res['journal.rec_name'] = journal.rec_name
         return res
 
-    def on_change_party(self, cursor, user, ids, vals, context=None):
+    def on_change_party(self, cursor, user, vals, context=None):
         party_obj = self.pool.get('party.party')
         address_obj = self.pool.get('party.address')
         account_obj = self.pool.get('account.account')
@@ -258,7 +268,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     res['payment_term'], context=context).rec_name
         return res
 
-    def on_change_with_currency_digits(self, cursor, user, ids, vals,
+    def on_change_with_currency_digits(self, cursor, user, vals,
             context=None):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('currency'):
@@ -267,13 +277,13 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             return currency.digits
         return 2
 
-    def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
+    def get_currency_digits(self, cursor, user, ids, name, context=None):
         res = {}
         for invoice in self.browse(cursor, user, ids, context=context):
             res[invoice.id] = invoice.currency.digits
         return res
 
-    def on_change_with_party_lang(self, cursor, user, ids, vals, context=None):
+    def on_change_with_party_lang(self, cursor, user, vals, context=None):
         party_obj = self.pool.get('party.party')
         if vals.get('party'):
             party = party_obj.browse(cursor, user, vals['party'],
@@ -282,13 +292,14 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 return party.lang.code
         return 'en_US'
 
-    def get_party_language(self, cursor, user, ids, name, arg, context=None):
+    def get_party_language(self, cursor, user, ids, name, context=None):
         '''
         Return the language code of the party of each invoice
 
         :param cursor: the database cursor
         :param user: the user id
         :param ids: the ids of the invoices
+        :param name: the field name
         :param context: the context
         :return: a dictionary with invoice id as key and
             language code as value
@@ -301,7 +312,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 res[invoice.id] = 'en_US'
         return res
 
-    def get_type_name(self, cursor, user, ids, name, arg, context=None):
+    def get_type_name(self, cursor, user, ids, name, context=None):
         res = {}
         type2name = {}
         for type, name in self.fields_get(cursor, user, fields_names=['type'],
@@ -311,13 +322,13 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             res[invoice.id] = type2name[invoice.type]
         return res
 
-    def on_change_lines(self, cursor, user, ids, vals, context=None):
-        return self._on_change_lines_taxes(cursor, user, ids, vals, context=context)
+    def on_change_lines(self, cursor, user, vals, context=None):
+        return self._on_change_lines_taxes(cursor, user, vals, context=context)
 
-    def on_change_taxes(self, cursor, user, ids, vals, context=None):
-        return self._on_change_lines_taxes(cursor, user, ids, vals, context=context)
+    def on_change_taxes(self, cursor, user, vals, context=None):
+        return self._on_change_lines_taxes(cursor, user, vals, context=context)
 
-    def _on_change_lines_taxes(self, cursor, user, ids, vals, context=None):
+    def _on_change_lines_taxes(self, cursor, user, vals, context=None):
         currency_obj = self.pool.get('currency.currency')
         tax_obj = self.pool.get('account.tax')
         if context is None:
@@ -411,11 +422,11 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     res['total_amount'])
         return res
 
-    def get_untaxed_amount(self, cursor, user, ids, name, arg, context=None):
+    def get_untaxed_amount(self, cursor, user, ids, name, context=None):
         currency_obj = self.pool.get('currency.currency')
         res = {}
         for invoice in self.browse(cursor, user, ids, context=context):
-            res.setdefault(invoice.id, Decimal('0.0'))
+            res.setdefault(invoice.id, _ZERO)
             for line in invoice.lines:
                 if line.type != 'line':
                     continue
@@ -424,15 +435,16 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     res[invoice.id])
         return res
 
-    def get_tax_amount(self, cursor, user, ids, name, arg, context=None):
+    def get_tax_amount(self, cursor, user, ids, name, context=None):
         currency_obj = self.pool.get('currency.currency')
         res = {}
         type_name = FIELDS[self.tax_amount._type].sql_type(self.tax_amount)[0]
+        red_sql, red_ids = reduce_ids('invoice', ids)
         cursor.execute('SELECT invoice, ' \
                     'CAST(COALESCE(SUM(amount), 0) AS ' + type_name + ') ' \
                 'FROM account_invoice_tax ' \
-                'WHERE invoice IN (' + ','.join(('%s',) * len(ids)) + ') ' \
-                'GROUP BY invoice', ids)
+                'WHERE ' + red_sql + ' ' \
+                'GROUP BY invoice', red_ids)
         for invoice_id, sum in cursor.fetchall():
             # SQLite uses float for SUM
             if not isinstance(sum, Decimal):
@@ -445,7 +457,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     res[invoice.id])
         return res
 
-    def get_total_amount(self, cursor, user, ids, name, arg, context=None):
+    def get_total_amount(self, cursor, user, ids, name, context=None):
         currency_obj = self.pool.get('currency.currency')
         res = {}
         for invoice in self.browse(cursor, user, ids, context=context):
@@ -453,7 +465,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     invoice.untaxed_amount + invoice.tax_amount)
         return res
 
-    def get_reconciled(self, cursor, user, ids, name, arg, context=None):
+    def get_reconciled(self, cursor, user, ids, name, context=None):
         res = {}
         for invoice in self.browse(cursor, user, ids, context=context):
             res[invoice.id] = True
@@ -466,7 +478,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     break
         return res
 
-    def get_lines_to_pay(self, cursor, user, ids, name, args, context=None):
+    def get_lines_to_pay(self, cursor, user, ids, name, context=None):
         res = {}
         for invoice in self.browse(cursor, user, ids, context=context):
             lines = []
@@ -479,15 +491,19 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             res[invoice.id] = [x.id for x in lines]
         return res
 
-    def get_amount_to_pay(self, cursor, user, ids, name, arg,
-            context=None):
+    def get_amount_to_pay(self, cursor, user, ids, name, context=None):
         currency_obj = self.pool.get('currency.currency')
         date_obj = self.pool.get('ir.date')
 
-        res = {}
-        for invoice in self.browse(cursor, user, ids, context=context):
-            amount = Decimal('0.0')
-            amount_currency = Decimal('0.0')
+        compute_ids = self.search(cursor, user, [
+            ('id', 'in', ids),
+            ('state', '=', 'open'),
+            ], context=context)
+
+        res = dict((x, _ZERO) for x in ids)
+        for invoice in self.browse(cursor, user, compute_ids, context=context):
+            amount = _ZERO
+            amount_currency = _ZERO
             for line in invoice.lines_to_pay:
                 if line.reconciliation:
                     continue
@@ -496,7 +512,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                                 context=context):
                     continue
                 if line.second_currency.id == invoice.currency.id:
-                    if line.debit - line.credit > Decimal('0.0'):
+                    if line.debit - line.credit > _ZERO:
                         amount_currency += abs(line.amount_second_currency)
                     else:
                         amount_currency -= abs(line.amount_second_currency)
@@ -506,7 +522,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 if line.reconciliation:
                     continue
                 if line.second_currency.id == invoice.currency.id:
-                    if line.debit - line.credit > Decimal('0.0'):
+                    if line.debit - line.credit > _ZERO:
                         amount_currency += abs(line.amount_second_currency)
                     else:
                         amount_currency -= abs(line.amount_second_currency)
@@ -515,105 +531,82 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             if invoice.type in ('in_invoice', 'out_credit_note'):
                 amount = - amount
                 amount_currency = - amount_currency
-            if amount != Decimal('0.0'):
+            if amount != _ZERO:
                 amount_currency += currency_obj.compute(cursor, user,
                         invoice.company.currency, amount, invoice.currency,
                         context=context)
-            if amount_currency < Decimal('0.0'):
-                amount_currency = Decimal('0.0')
+            if amount_currency < _ZERO:
+                amount_currency = _ZERO
             res[invoice.id] = amount_currency
         return res
 
-    def search_total_amount(self, cursor, user, name, args, context=None):
+    def search_total_amount(self, cursor, user, name, clause, context=None):
         rule_obj = self.pool.get('ir.rule')
         line_obj = self.pool.get('account.invoice.line')
         tax_obj = self.pool.get('account.invoice.tax')
 
-        if not len(args):
-            return []
-
-        if context is None:
-            context = {}
-
         invoice_query, invoice_val = rule_obj.domain_get(
             cursor, user, 'account.invoice', context=context)
 
-        cursor.execute(
-            'SELECT invoice '\
-            'FROM ( '\
-               'SELECT invoice, COALESCE(SUM(quantity * unit_price), 0) as total_amount '\
-               'FROM "' + line_obj._table + '" '\
-                 'JOIN "' + self._table + '" on '\
-                     '("' + self._table + '".id = "' + line_obj._table + '".invoice) '\
-               'WHERE ' + invoice_query + ' '\
-               'GROUP BY invoice  '\
-             'UNION '\
-               'SELECT invoice, COALESCE(SUM(amount), 0) as total_amount '\
-               'FROM "' + tax_obj._table + '" '\
-                 'JOIN "' + self._table + '" on '\
-                     '("' + self._table + '".id = "' + tax_obj._table + '".invoice) '\
-               'WHERE ' + invoice_query + ' '\
-               'GROUP BY invoice  '\
-              ') as u '\
-             'GROUP BY u.invoice '\
-             'HAVING ' + \
-                'AND '.join(('(SUM(u.total_amount) ' + arg[1] + ' %s) ' \
-                                for arg in args)),
-            invoice_val + invoice_val + [arg[2] for arg in args])
+        cursor.execute('SELECT invoice FROM ('
+                    'SELECT invoice, '
+                        'COALESCE(SUM(quantity * unit_price), 0) '
+                            'AS total_amount '
+                    'FROM "' + line_obj._table + '" '
+                    'JOIN "' + self._table + '" ON '
+                        '("' + self._table + '".id = '
+                            '"' + line_obj._table + '".invoice) '
+                    'WHERE ' + invoice_query + ' '
+                    'GROUP BY invoice '
+                'UNION '
+                    'SELECT invoice, COALESCE(SUM(amount), 0) AS total_amount '
+                    'FROM "' + tax_obj._table + '" '
+                    'JOIN "' + self._table + '" ON '
+                        '("' + self._table + '".id = '
+                            '"' + tax_obj._table + '".invoice) '
+                    'WHERE ' + invoice_query + ' '
+                    'GROUP BY invoice  '
+                ') AS u '
+                'GROUP BY u.invoice '
+                'HAVING (SUM(u.total_amount) ' + clause[1] + ' %s)',
+                invoice_val + invoice_val + [clause[2]])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
-    def search_untaxed_amount(self, cursor, user, name, args, context=None):
+    def search_untaxed_amount(self, cursor, user, name, clause, context=None):
         rule_obj = self.pool.get('ir.rule')
         line_obj = self.pool.get('account.invoice.line')
         tax_obj = self.pool.get('account.invoice.tax')
 
-        if not len(args):
-            return []
-
-        if context is None:
-            context = {}
-
         invoice_query, invoice_val = rule_obj.domain_get(
             cursor, user, 'account.invoice', context=context)
 
-        cursor.execute(
-            'SELECT invoice '\
-            'FROM "' + line_obj._table + '" '\
-               'JOIN "' + self._table + '" on '\
-                   '("' + self._table + '".id = "' + line_obj._table + '".invoice) '\
-            'WHERE ' + invoice_query + ' '\
-            'GROUP BY invoice  '\
-            'HAVING ' + \
-              'AND '.join(('(COALESCE(SUM(quantity * unit_price), 0) ' + \
-                                arg[1] + ' %s) ' for arg in args)),
-            invoice_val + [arg[2] for arg in args])
+        cursor.execute('SELECT invoice FROM "' + line_obj._table + '" '
+                'JOIN "' + self._table + '" ON '
+                    '("' + self._table + '".id = '
+                        '"' + line_obj._table + '".invoice) '
+                'WHERE ' + invoice_query + ' '
+                'GROUP BY invoice '
+                'HAVING (COALESCE(SUM(quantity * unit_price), 0) ' + \
+                        clause[1] + ' %s)',
+                invoice_val + [clause[2]])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
-    def search_tax_amount(self, cursor, user, name, args, context=None):
+    def search_tax_amount(self, cursor, user, name, clause, context=None):
         rule_obj = self.pool.get('ir.rule')
         line_obj = self.pool.get('account.invoice.line')
         tax_obj = self.pool.get('account.invoice.tax')
 
-        if not len(args):
-            return []
-
-        if context is None:
-            context = {}
-
         invoice_query, invoice_val = rule_obj.domain_get(
             cursor, user, 'account.invoice', context=context)
 
-        cursor.execute(
-            'SELECT invoice '\
-            'FROM "' + tax_obj._table + '" '\
-             'JOIN "' + self._table + '" on '\
-                   '("' + self._table + '".id = "' + tax_obj._table + '".invoice) '\
-            'WHERE ' + invoice_query + ' '\
-            'GROUP BY invoice  '\
-            'HAVING ' + \
-              'AND '.join(('(COALESCE(SUM(amount), 0) ' + arg[1] + ' %s) ' \
-                                for arg in args)),
-            invoice_val + [arg[2] for arg in args])
+        cursor.execute('SELECT invoice FROM "' + tax_obj._table + '" '
+                'JOIN "' + self._table + '" ON '
+                    '("' + self._table + '".id = '
+                        '"' + tax_obj._table + '".invoice) '
+                'WHERE ' + invoice_query + ' '
+                'GROUP BY invoice '
+                'HAVING (COALESCE(SUM(amount), 0) ' + clause[1] + ' %s)',
+                invoice_val + [clause[2]])
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
     def button_draft(self, cursor, user, ids, context=None):
@@ -892,7 +885,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                         context=context)
         return
 
-    def get_rec_name(self, cursor, user, ids, name, arg, context=None):
+    def get_rec_name(self, cursor, user, ids, name, context=None):
         if not ids:
             return {}
         res = {}
@@ -902,20 +895,14 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     ' ' + invoice.party.rec_name
         return res
 
-    def search_rec_name(self, cursor, user, name, args, context=None):
-        args2 = []
-        i = 0
-        while i < len(args):
-            ids = self.search(cursor, user, ['OR',
-                ('number', args[i][1], args[i][2]),
-                ('reference', args[i][1], args[i][2]),
-                ], limit=1, context=context)
-            if ids:
-                args2.append(('number', args[i][1], args[i][2]))
-            else:
-                args2.append(('party', args[i][1], args[i][2]))
-            i += 1
-        return args2
+    def search_rec_name(self, cursor, user, name, clause, context=None):
+        ids = self.search(cursor, user, ['OR',
+            ('number',) + clause[1:],
+            ('reference',) + clause[1:],
+            ], order=[], context=context)
+        if ids:
+            return [('id', 'in', ids)]
+        return [('party',) + clause[1:]]
 
     def delete(self, cursor, user, ids, context=None):
         if not ids:
@@ -967,8 +954,8 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         default['payment_lines'] = False
         default['lines'] = False
         default['taxes'] = False
-        default['invoice_date'] = False
-        default['accounting_date'] = False
+        default.setdefault('invoice_date', False)
+        default.setdefault('accounting_date', False)
         default['lines_to_pay'] = False
 
         new_ids = []
@@ -1268,97 +1255,107 @@ class InvoiceLine(ModelSQL, ModelView):
 
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
             select=1, states={
-            'required': "not bool(globals().get('invoice_type')) " \
-                    "and bool(globals().get('party')) " \
-                    "and bool(globals().get('currency')) " \
-                    "and bool(globals().get('company'))",
-            'invisible': "context.get('standalone', False)",
-        })
-    invoice_type = fields.Selection(_TYPE, 'Invoice Type', select=1, states={
-        'readonly': "context.get('type', False) or bool(type)",
-        'required': "not bool(invoice)",
-        })
-    party = fields.Many2One('party.party', 'Party', select=1, states={
-        'required': "not bool(invoice)",
-        })
-    party_lang = fields.Function('get_party_language', type='char',
-            string='Party Language', on_change_with=['party'])
-    currency = fields.Many2One('currency.currency', 'Currency', states={
-        'required': "not bool(invoice)",
-        })
-    currency_digits = fields.Function('get_currency_digits', type='integer',
-            string='Currency Digits', on_change_with=['currency'])
-    company = fields.Many2One('company.company', 'Company', states={
-        'required': "not bool(invoice)",
-        }, domain=["('id', 'company' in context and '=' or '!=', " \
-                "context.get('company', 0))"])
-
-    sequence = fields.Integer('Sequence', states={
-            'invisible': "context.get('standalone', False)",
-        })
+                'required': And(Not(Bool(Eval('invoice_type'))),
+                    Bool(Eval('party')),
+                    Bool(Eval('currency')),
+                    Bool(Eval('company'))),
+                'invisible': Bool(Get(Eval('context', {}), 'standalone')),
+            })
+    invoice_type = fields.Selection(_TYPE, 'Invoice Type', select=1,
+            states={
+                'readonly': Or(Bool(Get(Eval('context', {}), 'type')),
+                    Bool(Eval('type'))),
+                'required': Not(Bool(Eval('invoice'))),
+            })
+    party = fields.Many2One('party.party', 'Party', select=1,
+            states={
+                'required': Not(Bool(Eval('invoice'))),
+            })
+    party_lang = fields.Function(fields.Char('Party Language',
+        on_change_with=['party']), 'get_party_language')
+    currency = fields.Many2One('currency.currency', 'Currency',
+            states={
+                'required': Not(Bool(Eval('invoice'))),
+            })
+    currency_digits = fields.Function(fields.Integer('Currency Digits',
+        on_change_with=['currency']), 'get_currency_digits')
+    company = fields.Many2One('company.company', 'Company',
+            states={
+                'required': Not(Bool(Eval('invoice'))),
+            }, domain=[
+                ('id', If(In('company', Eval('context', {})), '=', '!='),
+                    Get(Eval('context', {}), 'company', 0)),
+            ])
+
+    sequence = fields.Integer('Sequence',
+            states={
+                'invisible': Bool(Get(Eval('context', {}), 'standalone')),
+            })
     type = fields.Selection([
         ('line', 'Line'),
         ('subtotal', 'Subtotal'),
         ('title', 'Title'),
         ('comment', 'Comment'),
         ], 'Type', select=1, required=True, states={
-            'invisible': "context.get('standalone', False)",
+            'invisible': Bool(Get(Eval('context', {}), 'standalone')),
         })
     quantity = fields.Float('Quantity',
-            digits="(16, unit_digits)",
+            digits=(16, Eval('unit_digits', 2)),
             states={
-                'invisible': "type != 'line'",
-                'required': "type == 'line'",
+                'invisible': Not(Equal(Eval('type'), 'line')),
+                'required': Equal(Eval('type'), 'line'),
             })
     unit = fields.Many2One('product.uom', 'Unit',
             states={
-                'required': "product",
-                'invisible': "type != 'line'",
-            }, domain=["('category', '=', " \
-                    "(product, 'product.default_uom.category'))"],
-            context="{'category': (product, 'product.default_uom.category')}")
-    unit_digits = fields.Function('get_unit_digits', type='integer',
-            string='Unit Digits', on_change_with=['unit'])
+                'required': Bool(Eval('product')),
+                'invisible': Not(Equal(Eval('type'), 'line')),
+            }, domain=[
+                ('category', '=',
+                    (Eval('product'), 'product.default_uom.category')),
+            ],
+            context={
+                'category': (Eval('product'), 'product.default_uom.category'),
+            })
+    unit_digits = fields.Function(fields.Integer('Unit Digits',
+        on_change_with=['unit']), 'get_unit_digits')
     product = fields.Many2One('product.product', 'Product',
             states={
-                'invisible': "type != 'line'",
+                'invisible': Not(Equal(Eval('type'), 'line')),
             }, on_change=['product', 'unit', 'quantity', 'description',
                 '_parent_invoice.type', '_parent_invoice.party',
                 '_parent_invoice.currency', 'party', 'currency'])
     account = fields.Many2One('account.account', 'Account',
-            domain=[('kind', '!=', 'view'),
-                "('company', '=', " \
-                        "globals().get('_parent_invoice') and " \
-                        "globals().get('_parent_invoice').company or " \
-                        "globals()['company'])",
-                "('id', '!=', globals().get('_parent_invoice') and " \
-                        "globals().get('_parent_invoice').account or 0)"],
+            domain=[
+                ('kind', '!=', 'view'),
+                ('company', '=', Get(Eval('_parent_invoice', {}), 'company',
+                    Eval('company'))),
+                ('id', '!=', Get(Eval('_parent_invoice', {}), 'account', 0)),
+            ],
             states={
-                'invisible': "type != 'line'",
-                'required': "type == 'line'",
+                'invisible': Not(Equal(Eval('type'), 'line')),
+                'required': Equal(Eval('type'), 'line'),
             })
     unit_price = fields.Numeric('Unit Price', digits=(16, 4),
             states={
-                'invisible': "type != 'line'",
-                'required': "type == 'line'",
+                'invisible': Not(Equal(Eval('type'), 'line')),
+                'required': Equal(Eval('type'), 'line'),
             })
-    amount = fields.Function('get_amount', type='numeric', string='Amount',
-            digits="(16, globals().get('_parent_invoice') and " \
-                        "globals().get('_parent_invoice').currency_digits or " \
-                        "globals()['currency_digits'])",
-            states={
-                'invisible': "type not in ('line', 'subtotal')",
-            }, on_change_with=['type', 'quantity', 'unit_price',
-                '_parent_invoice.currency', 'currency'])
+    amount = fields.Function(fields.Numeric('Amount',
+        digits=(16, Get(Eval('_parent_invoice', {}), 'currency_digits',
+            Eval('currency_digits', 2))),
+        states={
+            'invisible': Not(In(Eval('type'), ['line', 'subtotal'])),
+        }, on_change_with=['type', 'quantity', 'unit_price',
+            '_parent_invoice.currency', 'currency']), 'get_amount')
     description = fields.Text('Description', size=None, required=True)
     note = fields.Text('Note')
     taxes = fields.Many2Many('account.invoice.line-account.tax',
             'line', 'tax', 'Taxes', domain=[('parent', '=', False)],
             states={
-                'invisible': "type != 'line'",
+                'invisible': Not(Equal(Eval('type'), 'line')),
             })
-    invoice_taxes = fields.Function('get_invoice_taxes', type='many2many',
-            relation='account.invoice.tax', string='Invoice Taxes')
+    invoice_taxes = fields.Function(fields.One2Many('account.invoice.tax',
+        None, 'Invoice Taxes'), 'get_invoice_taxes')
 
     def __init__(self):
         super(InvoiceLine, self).__init__()
@@ -1422,7 +1419,6 @@ class InvoiceLine(ModelSQL, ModelView):
         return 2
 
     def default_company(self, cursor, user, context=None):
-        company_obj = self.pool.get('company.company')
         if context is None:
             context = {}
         if context.get('company'):
@@ -1438,7 +1434,7 @@ class InvoiceLine(ModelSQL, ModelView):
     def default_unit_price(self, cursor, user, context=None):
         return Decimal('0.0')
 
-    def on_change_with_party_lang(self, cursor, user, ids, vals, context=None):
+    def on_change_with_party_lang(self, cursor, user, vals, context=None):
         party_obj = self.pool.get('party.party')
         if vals.get('party'):
             party = party_obj.browse(cursor, user, vals['party'],
@@ -1447,13 +1443,14 @@ class InvoiceLine(ModelSQL, ModelView):
                 return party.lang.code
         return 'en_US'
 
-    def get_party_language(self, cursor, user, ids, name, arg, context=None):
+    def get_party_language(self, cursor, user, ids, name, context=None):
         '''
         Return the language code of the party of each line
 
         :param cursor: the database cursor
         :param user: the user id
         :param ids: the ids of the account.invoice.line
+        :param name: the field name
         :param context: the context
         :return: a dictionary with account.invoice.line id as key and
             language code as value
@@ -1466,7 +1463,7 @@ class InvoiceLine(ModelSQL, ModelView):
                 res[line.id] = 'en_US'
         return res
 
-    def on_change_with_amount(self, cursor, user, ids, vals, context=None):
+    def on_change_with_amount(self, cursor, user, vals, context=None):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('type') == 'line':
             currency = vals.get('_parent_invoice.currency') or vals.get('currency')
@@ -1480,8 +1477,7 @@ class InvoiceLine(ModelSQL, ModelView):
             return amount
         return Decimal('0.0')
 
-    def on_change_with_unit_digits(self, cursor, user, ids, vals,
-            context=None):
+    def on_change_with_unit_digits(self, cursor, user, vals, context=None):
         uom_obj = self.pool.get('product.uom')
         if vals.get('unit'):
             uom = uom_obj.browse(cursor, user, vals['unit'],
@@ -1489,7 +1485,7 @@ class InvoiceLine(ModelSQL, ModelView):
             return uom.digits
         return 2
 
-    def get_unit_digits(self, cursor, user, ids, name, arg, context=None):
+    def get_unit_digits(self, cursor, user, ids, name, context=None):
         res = {}
         for line in self.browse(cursor, user, ids, context=context):
             if line.unit:
@@ -1498,8 +1494,7 @@ class InvoiceLine(ModelSQL, ModelView):
                 res[line.id] = 2
         return res
 
-    def on_change_with_currency_digits(self, cursor, user, ids, vals,
-            context=None):
+    def on_change_with_currency_digits(self, cursor, user, vals, context=None):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('currency'):
             currency = currency_obj.browse(cursor, user, vals['currency'],
@@ -1507,13 +1502,13 @@ class InvoiceLine(ModelSQL, ModelView):
             return currency.digits
         return 2
 
-    def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
+    def get_currency_digits(self, cursor, user, ids, name, context=None):
         res = {}
         for line in self.browse(cursor, user, ids, context=context):
             res[line.id] = line.currency and line.currency.digits or 2
         return res
 
-    def get_amount(self, cursor, user, ids, name, arg, context=None):
+    def get_amount(self, cursor, user, ids, name, context=None):
         currency_obj = self.pool.get('currency.currency')
         res = {}
         for line in self.browse(cursor, user, ids, context=context):
@@ -1523,7 +1518,7 @@ class InvoiceLine(ModelSQL, ModelView):
                 res[line.id] = currency_obj.round(cursor, user, currency,
                         Decimal(str(line.quantity)) * line.unit_price)
             elif line.type == 'subtotal':
-                res[line.id] = Decimal('0.0')
+                res[line.id] = _ZERO
                 for line2 in line.invoice.lines:
                     if line2.type == 'line':
                         res[line.id] += currency_obj.round(cursor, user,
@@ -1532,12 +1527,12 @@ class InvoiceLine(ModelSQL, ModelView):
                     elif line2.type == 'subtotal':
                         if line.id == line2.id:
                             break
-                        res[line.id] = Decimal('0.0')
+                        res[line.id] = _ZERO
             else:
-                res[line.id] = Decimal('0.0')
+                res[line.id] = _ZERO
         return res
 
-    def get_invoice_taxes(self, cursor, user, ids, name, arg, context=None):
+    def get_invoice_taxes(self, cursor, user, ids, name, context=None):
         tax_obj = self.pool.get('account.tax')
         invoice_obj = self.pool.get('account.invoice')
 
@@ -1584,7 +1579,7 @@ class InvoiceLine(ModelSQL, ModelView):
         res = {}
         return res
 
-    def on_change_product(self, cursor, user, ids, vals, context=None):
+    def on_change_product(self, cursor, user, vals, context=None):
         product_obj = self.pool.get('product.product')
         party_obj = self.pool.get('party.party')
         account_obj = self.pool.get('account.account')
@@ -1698,8 +1693,8 @@ class InvoiceLine(ModelSQL, ModelView):
         vals = vals.copy()
         vals['unit_price'] = res['unit_price']
         vals['type'] = 'line'
-        res['amount'] = self.on_change_with_amount(cursor, user, ids,
-                vals, context=context)
+        res['amount'] = self.on_change_with_amount(cursor, user, vals,
+                context=context)
         return res
 
     def check_modify(self, cursor, user, ids, context=None):
@@ -1784,6 +1779,7 @@ class InvoiceLine(ModelSQL, ModelView):
                 res.append({
                     'code': base_code_id,
                     'amount': amount,
+                    'tax': tax['tax'].id
                 })
         return res
 
@@ -1875,19 +1871,27 @@ class InvoiceTax(ModelSQL, ModelView):
             select=1)
     description = fields.Char('Description', size=None, required=True)
     sequence = fields.Integer('Sequence')
-    sequence_number = fields.Function('get_sequence_number', type='integer',
-            string='Sequence Number')
+    sequence_number = fields.Function(fields.Integer('Sequence Number'),
+            'get_sequence_number')
     account = fields.Many2One('account.account', 'Account', required=True,
-            domain=[('kind', '!=', 'view'),
-                "('company', '=', _parent_invoice.company)"])
-    base = fields.Numeric('Base', digits="(16, _parent_invoice.currency_digits)")
-    amount = fields.Numeric('Amount', digits="(16, _parent_invoice.currency_digits)")
+            domain=[
+                ('kind', '!=', 'view'),
+                ('company', '=', Get(Eval('_parent_invoice', {}), 'company')),
+            ])
+    base = fields.Numeric('Base',
+            digits=(16, Get(Eval('_parent_invoice', {}), 'currency_digits', 2)))
+    amount = fields.Numeric('Amount',
+            digits=(16, Get(Eval('_parent_invoice', {}), 'currency_digits', 2)))
     manual = fields.Boolean('Manual')
     base_code = fields.Many2One('account.tax.code', 'Base Code',
-            domain=["('company', '=', _parent_invoice.company)"])
+            domain=[
+                ('company', '=', Get(Eval('_parent_invoice', {}), 'company')),
+            ])
     base_sign = fields.Numeric('Base Sign', digits=(2, 0))
     tax_code = fields.Many2One('account.tax.code', 'Tax Code',
-            domain=["('company', '=', _parent_invoice.company)"])
+            domain=[
+                ('company', '=', Get(Eval('_parent_invoice', {}), 'company')),
+            ])
     tax_sign = fields.Numeric('Tax Sign', digits=(2, 0))
     tax = fields.Many2One('account.tax', 'Tax')
 
@@ -1931,7 +1935,7 @@ class InvoiceTax(ModelSQL, ModelView):
                         context=context)
         return
 
-    def get_sequence_number(self, cursor, user, ids, name, arg, context=None):
+    def get_sequence_number(self, cursor, user, ids, name, context=None):
         res = {}
         for tax in self.browse(cursor, user, ids, context=context):
             res[tax.id] = 0
@@ -2019,6 +2023,7 @@ class InvoiceTax(ModelSQL, ModelView):
             res['tax_lines'] = [('create', {
                 'code': tax.tax_code.id,
                 'amount': amount * tax.tax_sign,
+                'tax': tax.tax and tax.tax.id or False
             })]
         return res
 
@@ -2175,7 +2180,7 @@ class PayInvoiceInit(ModelView):
     'Pay Invoice Init'
     _name = 'account.invoice.pay_invoice.init'
     _description = __doc__
-    amount = fields.Numeric('Amount', digits="(16, currency_digits)")
+    amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)))
     currency = fields.Many2One('currency.currency', 'Currency', required=True)
     currency_digits = fields.Integer('Currency Digits', readonly=True,
             on_change_with=['currency'])
@@ -2188,8 +2193,7 @@ class PayInvoiceInit(ModelView):
         date_obj = self.pool.get('ir.date')
         return date_obj.today(cursor, user, context=context)
 
-    def on_change_with_currency_digits(self, cursor, user, ids, vals,
-            context=None):
+    def on_change_with_currency_digits(self, cursor, user, vals, context=None):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('currency'):
             currency = currency_obj.browse(cursor, user, vals['currency'],
@@ -2210,45 +2214,51 @@ class PayInvoiceAsk(ModelView):
         ], 'Type', required=True)
     journal_writeoff = fields.Many2One('account.journal', 'Write-Off Journal',
             states={
-                'invisible': "type != 'writeoff'",
-                'required': "type == 'writeoff'",
+                'invisible': Not(Equal(Eval('type'), 'writeoff')),
+                'required': Equal(Eval('type'), 'writeoff'),
             })
     account_writeoff = fields.Many2One('account.account', 'Write-Off Account',
-            domain=[('kind', '!=', 'view'), "('company', '=', company)"],
+            domain=[
+                ('kind', '!=', 'view'),
+                ('company', '=', Eval('company')),
+            ],
             states={
-                'invisible': "type != 'writeoff'",
-                'required': "type == 'writeoff'",
+                'invisible': Not(Equal(Eval('type'), 'writeoff')),
+                'required': Equal(Eval('type'), 'writeoff'),
             })
-    amount = fields.Numeric('Payment Amount', digits="(16, currency_digits)",
+    amount = fields.Numeric('Payment Amount',
+            digits=(16, Eval('currency_digits', 2)),
             readonly=True, depends=['currency_digits'])
     currency = fields.Many2One('currency.currency', 'Payment Currency',
             readonly=True)
     currency_digits = fields.Integer('Payment Currency Digits', readonly=True)
     amount_writeoff = fields.Numeric('Write-Off Amount',
-            digits="(16, currency_digits_writeoff)", readonly=True,
+            digits=(16, Eval('currency_digits_writeoff', 2)), readonly=True,
             depends=['currency_digits_writeoff'], states={
-                'invisible': "type != 'writeoff'",
+                'invisible': Not(Equal(Eval('type'), 'writeoff')),
             })
     currency_writeoff = fields.Many2One('currency.currency',
             'Write-Off Currency', readonly=True, states={
-                'invisible': "type != 'writeoff'",
+                'invisible': Not(Equal(Eval('type'), 'writeoff')),
             })
     currency_digits_writeoff = fields.Integer('Write-Off Currency Digits',
             readonly=True)
     lines_to_pay = fields.Many2Many('account.move.line', None, None,
             'Lines to Pay', readonly=True)
     lines = fields.Many2Many('account.move.line', None, None, 'Lines',
-            domain=["('id', 'in', lines_to_pay)",
-                ('reconciliation', '=', False)],
+            domain=[
+                ('id', 'in', Eval('lines_to_pay')),
+                ('reconciliation', '=', False),
+            ],
             states={
-                'invisible': "type != 'writeoff'",
+                'invisible': Not(Equal(Eval('type'), 'writeoff')),
             }, on_change=['lines', 'amount', 'currency', 'currency_writeoff',
                 'invoice'],
             depends=['lines_to_pay'])
     payment_lines = fields.Many2Many('account.move.line', None, None,
             'Payment Lines', readonly=True,
             states={
-                'invisible': "type != 'writeoff'",
+                'invisible': Not(Equal(Eval('type'), 'writeoff')),
             })
     description = fields.Char('Description', size=None, readonly=True)
     journal = fields.Many2One('account.journal', 'Journal', readonly=True,
@@ -2261,7 +2271,7 @@ class PayInvoiceAsk(ModelView):
     def default_type(self, cursor, user, context=None):
         return 'partial'
 
-    def on_change_lines(self, cursor, user, ids, vals, context=None):
+    def on_change_lines(self, cursor, user, vals, context=None):
         currency_obj = self.pool.get('currency.currency')
         line_obj = self.pool.get('account.move.line')
         invoice_obj = self.pool.get('account.invoice')
@@ -2548,76 +2558,12 @@ class CreditInvoice(Wizard):
         invoice_ids = invoice_obj.credit(cursor, user, data['ids'],
                 refund=refund, context=context)
 
-        model_data_ids = model_data_obj.search(cursor, user, [
-            ('fs_id', '=', 'act_invoice_form'),
-            ('module', '=', 'account_invoice'),
-            ('inherit', '=', False),
-            ], limit=1, context=context)
-        model_data = model_data_obj.browse(cursor, user, model_data_ids[0],
-                context=context)
-        res = act_window_obj.read(cursor, user, model_data.db_id, context=context)
+        act_window_id = model_data_obj.get_id(cursor, user, 'account_invoice',
+                'act_invoice_form', context=context)
+        res = act_window_obj.read(cursor, user, act_window_id, context=context)
         res['res_id'] = invoice_ids
         if len(invoice_ids) == 1:
             res['views'].reverse()
         return res
 
 CreditInvoice()
-
-
-#Fix typo in domain for issue1280
-class ActionActWindow(ModelSQL, ModelView):
-    _name = 'ir.action.act_window'
-
-    def read(self, cursor, user, ids, fields_names=None, context=None):
-        model_data_obj = self.pool.get('ir.model.data')
-
-        model_data_ids = model_data_obj.search(cursor, user, [
-            ('fs_id', 'in', ['act_invoice_out_credit_note_form3',
-                'act_invoice_out_credit_note_form4',
-                'act_invoice_out_credit_note_form5']),
-            ('module', '=', 'account_invoice'),
-            ('inherit', '=', False),
-            ], context=context)
-        action_ids = [x.db_id for x in model_data_obj.browse(cursor, user,
-            model_data_ids, context=context)]
-
-        res = super(ActionActWindow, self).read(cursor, user, ids,
-                fields_names=fields_names, context=context)
-
-        int_id = False
-        if isinstance(ids, (int, long)):
-            int_id = True
-            ids = [ids]
-            res = [res]
-
-        if not fields_names or 'domain' in fields_names:
-            for model_data_id in action_ids:
-                if model_data_id in ids:
-                    for record in res:
-                        if 'domain' not in record:
-                            continue
-                        if record['id'] in action_ids:
-                            if record['domain'] == \
-                                    "[('type', '=', 'out_credit_note'), " \
-                                    "('domain', '=', 'draft')]":
-                                record['domain'] = \
-                                        "[('type', '=', 'out_credit_note'), " \
-                                        "('state', '=', 'draft')]"
-                            elif record['domain'] == \
-                                    "[('type', '=', 'out_credit_note'), " \
-                                    "('domain', '=', 'proforma')]":
-                                record['domain'] = \
-                                        "[('type', '=', 'out_credit_note'), " \
-                                        "('state', '=', 'proforma')]"
-                            elif record['domain'] == \
-                                    "[('type', '=', 'out_credit_note'), " \
-                                    "('domain', '=', 'open')]":
-                                record['domain'] = \
-                                        "[('type', '=', 'out_credit_note'), " \
-                                        "('state', '=', 'open')]"
-                    break
-        if int_id:
-            return res[0]
-        return res
-
-ActionActWindow()
diff --git a/invoice.xml b/invoice.xml
index 193ecb9..4d96349 100644
--- a/invoice.xml
+++ b/invoice.xml
@@ -91,24 +91,24 @@ this repository contains the full copyright notices and license terms. -->
                                     </group>
                                     <group col="5" colspan="2" id="buttons">
                                         <button name="cancel" string="_Cancel"
-                                            states="{'invisible': '''state not in ('draft', 'proforma')''', 'readonly': '''%(account.group_account)d not in groups'''}"
+                                            states="{'invisible': Not(In(Eval('state'), ['draft', 'proforma'])), 'readonly': Not(In(%(account.group_account)d, Eval('groups', [])))}"
                                             icon="tryton-cancel"/>
                                         <button name="button_draft" string="_Reset to Draft"
                                             type="object"
-                                            states="{'invisible': '''state != 'cancel' '''}"
+                                            states="{'invisible': Not(Equal(Eval('state'), 'cancel'))}"
                                             icon="tryton-clear"/>
                                         <button name="draft" string="_Draft"
-                                            states="{'invisible': '''state != 'proforma' '''}"
+                                            states="{'invisible': Not(Equal(Eval('state'), 'proforma'))}"
                                             icon="tryton-go-previous"/>
                                         <button name="proforma" string="Pro For_ma"
-                                            states="{'invisible': '''state != 'draft' '''}"
+                                            states="{'invisible': Not(Equal(Eval('state'), 'draft'))}"
                                             icon="tryton-go-next"/>
                                         <button name="open" string="_Open"
-                                            states="{'invisible': '''state not in ('draft', 'proforma')''', 'readonly': '''%(account.group_account)d not in groups'''}"
+                                            states="{'invisible': Not(In(Eval('state'), ['draft', 'proforma'])), 'readonly': Not(In(%(account.group_account)d, Eval('groups', [])))}"
                                             icon="tryton-ok"/>
                                         <button name="%(wizard_pay_invoice)d" string="_Pay"
                                             type="action"
-                                            states="{'invisible': '''state != 'open' ''', 'readonly': '''%(account.group_account)d not in groups'''}"
+                                            states="{'invisible': Not(Equal(Eval('state'), 'open')), 'readonly': Not(In(%(account.group_account)d, Eval('groups', [])))}"
                                             icon="tryton-go-next"/>
                                     </group>
                                 </group>
@@ -123,10 +123,9 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="accounting_date"/>
                             <label name="move"/>
                             <field name="move"/>
-                            <label name="invoice_report"/>
-                            <field name="invoice_report"/>
                             <separator name="comment" colspan="4"/>
-                            <field name="comment" colspan="4" spell="party_lang"/>
+                            <field name="comment" colspan="4"
+                                spell="Eval('party_lang')"/>
                         </page>
                         <page string="Payment" id="payment">
                             <label name="amount_to_pay_today"/>
@@ -173,6 +172,7 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="amount_to_pay_today"/>
                     <field name="description" select="2"/>
                     <field name="currency_digits" tree_invisible="1"/>
+                    <field name="create_date" tree_invisible="1" select="2"/>
                 </tree>
                 ]]>
             </field>
@@ -181,6 +181,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">All Invoices</field>
             <field name="res_model">account.invoice</field>
             <field name="view_type">form</field>
+            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_form_view1">
             <field name="sequence" eval="10"/>
@@ -201,6 +202,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_invoice')]</field>
             <field name="context">{'type': 'out_invoice'}</field>
+            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form_view1">
             <field name="sequence" eval="10"/>
@@ -302,6 +304,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'out_credit_note')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
+            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form_view1">
             <field name="sequence" eval="10"/>
@@ -341,7 +344,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Draft Credit Notes</field>
             <field name="res_model">account.invoice</field>
             <field name="view_type">form</field>
-            <field name="domain">[('type', '=', 'out_credit_note'), ('domain', '=', 'draft')]</field>
+            <field name="domain">[('type', '=', 'out_credit_note'), ('state', '=', 'draft')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form3_view1">
@@ -361,7 +364,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Pro Forma Credit Notes</field>
             <field name="res_model">account.invoice</field>
             <field name="view_type">form</field>
-            <field name="domain">[('type', '=', 'out_credit_note'), ('domain', '=', 'proforma')]</field>
+            <field name="domain">[('type', '=', 'out_credit_note'), ('state', '=', 'proforma')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form4_view1">
@@ -381,7 +384,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Opened Credit Notes</field>
             <field name="res_model">account.invoice</field>
             <field name="view_type">form</field>
-            <field name="domain">[('type', '=', 'out_credit_note'), ('domain', '=', 'open')]</field>
+            <field name="domain">[('type', '=', 'out_credit_note'), ('state', '=', 'open')]</field>
             <field name="context">{'type': 'out_credit_note'}</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form5_view1">
@@ -403,6 +406,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_invoice')]</field>
             <field name="context">{'type': 'in_invoice'}</field>
+            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form_view1">
             <field name="sequence" eval="10"/>
@@ -504,6 +508,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view_type">form</field>
             <field name="domain">[('type', '=', 'in_credit_note')]</field>
             <field name="context">{'type': 'in_credit_note'}</field>
+            <field name="search_value">{'create_date': ['between', Date(delta_years=-1)]}</field>
         </record>
         <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form_view1">
             <field name="sequence" eval="10"/>
@@ -624,6 +629,8 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.sequence.type" id="sequence_type_account_invoice">
             <field name="name">Invoice</field>
             <field name="code">account.invoice</field>
+            <field name="groups"
+                eval="[('add', ref('res.group_admin')), ('add', ref('account.group_account_admin'))]"/>
         </record>
         <record model="workflow" id="invoice_workflow">
             <field name="name">Invoice workflow</field>
@@ -735,7 +742,7 @@ this repository contains the full copyright notices and license terms. -->
                             <newline/>
                             <label name="description"/>
                             <field name="description" colspan="3"
-                                spell="globals().get('_parent_invoice') and _parent_invoice.party_lang or party_lang"/>
+                                spell="If(Bool(Eval('_parent_invoice')), Get(Eval('_parent_invoice', {}), 'party_lang'), Eval('party_lang'))"/>
                             <label name="quantity"/>
                             <field name="quantity"/>
                             <label name="unit"/>
@@ -750,7 +757,7 @@ this repository contains the full copyright notices and license terms. -->
                         <page string="Notes" id="notes">
                             <separator name="note" colspan="4"/>
                             <field name="note" colspan="4"
-                                spell="globals().get('_parent_invoice') and _parent_invoice.party_lang or party_lang"/>
+                                spell="If(Bool(Eval('_parent_invoice')), Get(Eval('_parent_invoice', {}), 'party_lang'), Eval('party_lang'))"/>
                         </page>
                     </notebook>
                     <field name="unit_digits" invisible="1" colspan="4"/>
diff --git a/party.py b/party.py
index fba7dfc..f92cdc1 100644
--- a/party.py
+++ b/party.py
@@ -12,11 +12,9 @@ Address()
 
 class Party(ModelSQL, ModelView):
     _name = 'party.party'
-    payment_term = fields.Property(type='many2one',
-            relation='account.invoice.payment_term',
-            string='Invoice Payment Term')
-    supplier_payment_term = fields.Property(type='many2one',
-            relation='account.invoice.payment_term',
-            string='Supplier Payment Term')
+    payment_term = fields.Property(fields.Many2One(
+        'account.invoice.payment_term', string='Invoice Payment Term'))
+    supplier_payment_term = fields.Property(fields.Many2One(
+        'account.invoice.payment_term', string='Supplier Payment Term'))
 
 Party()
diff --git a/party.xml b/party.xml
index 4d89ade..51ba039 100644
--- a/party.xml
+++ b/party.xml
@@ -58,7 +58,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Invoices</field>
             <field name="res_model">account.invoice</field>
             <field name="view_type">form</field>
-            <field name="domain">[("party", "=", active_id)]</field>
+            <field name="domain">[("party", "=", Eval('active_id'))]</field>
         </record>
         <record model="ir.action.keyword"
                 id="act_open_invoice_keyword1">
diff --git a/payment_term.py b/payment_term.py
index 8640332..a4d3150 100644
--- a/payment_term.py
+++ b/payment_term.py
@@ -2,9 +2,11 @@
 #this repository contains the full copyright notices and license terms.
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.backend import TableHandler
+from trytond.pyson import Not, Equal, Eval
 from decimal import Decimal
 import datetime
-import mx.DateTime
+import time
+from dateutil.relativedelta import relativedelta
 
 
 class PaymentTerm(ModelSQL, ModelView):
@@ -110,16 +112,11 @@ class PaymentTermLineDelay(ModelSQL, ModelView):
 
     def get_date(self, cursor, user, line, date, context=None):
         value = None
-        if line.delay == 'net_days':
-            value = mx.DateTime.strptime(str(date), '%Y-%m-%d') + \
-                    mx.DateTime.RelativeDateTime(days=line.days)
-        elif line.delay == 'end_month':
-            value = mx.DateTime.strptime(str(date), '%Y-%m-%d') + \
-                    mx.DateTime.RelativeDateTime(days=line.days) + \
-                    mx.DateTime.RelativeDateTime(day=-1)
-        if value:
-            return datetime.date(value.year, value.month, value.day)
-        return None
+        if line.delay in ('net_days', 'end_month'):
+            value = date + relativedelta(days=line.days)
+            if line.delay == 'end_month':
+                value += relativedelta(day=31)
+        return value
 
 PaymentTermLineDelay()
 
@@ -136,21 +133,21 @@ class PaymentTermLine(ModelSQL, ModelView):
             on_change=['type'])
     percentage = fields.Numeric('Percentage', digits=(16, 8),
             states={
-                'invisible': "type != 'percent'",
-                'required': "type == 'percent'",
+                'invisible': Not(Equal(Eval('type'), 'percent')),
+                'required': Equal(Eval('type'), 'percent'),
             }, help='In %')
-    amount = fields.Numeric('Amount', digits="(16, currency_digits)",
+    amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)),
             states={
-                'invisible': "type != 'fixed'",
-                'required': "type == 'fixed'",
+                'invisible': Not(Equal(Eval('type'), 'fixed')),
+                'required': Equal(Eval('type'), 'fixed'),
             })
     currency = fields.Many2One('currency.currency', 'Currency',
             states={
-                'invisible': "type != 'fixed'",
-                'required': "type == 'fixed'",
+                'invisible': Not(Equal(Eval('type'), 'fixed')),
+                'required': Equal(Eval('type'), 'fixed'),
             })
-    currency_digits = fields.Function('get_currency_digits', type='integer',
-            string='Currency Digits', on_change_with=['currency'])
+    currency_digits = fields.Function(fields.Integer('Currency Digits',
+        on_change_with=['currency']), 'get_currency_digits')
     days = fields.Integer('Number of Days')
     delay = fields.Selection('get_delay', 'Condition', required=True)
 
@@ -187,7 +184,7 @@ class PaymentTermLine(ModelSQL, ModelView):
                 context=context)
         return [(x.code, x.name) for x in delays]
 
-    def on_change_type(self, cursor, user, ids, vals, context=None):
+    def on_change_type(self, cursor, user, vals, context=None):
         if not 'type' in vals:
             return {}
         res = {}
@@ -198,8 +195,7 @@ class PaymentTermLine(ModelSQL, ModelView):
             res['percentage'] =  Decimal('0.0')
         return res
 
-    def on_change_with_currency_digits(self, cursor, user, ids, vals,
-            context=None):
+    def on_change_with_currency_digits(self, cursor, user, vals, context=None):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('currency'):
             currency = currency_obj.browse(cursor, user, vals['currency'],
@@ -207,7 +203,7 @@ class PaymentTermLine(ModelSQL, ModelView):
             return currency.digits
         return 2
 
-    def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
+    def get_currency_digits(self, cursor, user, ids, name, context=None):
         res = {}
         for line in self.browse(cursor, user, ids, context=context):
             if line.currency:
diff --git a/payment_term.xml b/payment_term.xml
index 449b414..24d7434 100644
--- a/payment_term.xml
+++ b/payment_term.xml
@@ -76,6 +76,28 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="payment_term_view_form"/>
             <field name="act_window" ref="act_payment_term_form"/>
         </record>
+        <menuitem parent="menu_payment_terms_configuration"
+            action="act_payment_term_form" id="menu_payment_term_form"/>
+
+        <record model="ir.action.act_window" id="act_payment_term_form2">
+            <field name="name">Payment Terms</field>
+            <field name="res_model">account.invoice.payment_term</field>
+            <field name="view_type">form</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_payment_term_form2_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="payment_term_view_form"/>
+            <field name="act_window" ref="act_payment_term_form2"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_payment_term_form2_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="payment_term_view_tree"/>
+            <field name="act_window" ref="act_payment_term_form2"/>
+        </record>
+        <menuitem name="New Payment Term" parent="menu_payment_term_form"
+            action="act_payment_term_form2" id="menu_payment_term_form_new"
+            sequence="10"/>
+
         <record model="ir.model.access" id="access_payment_term">
             <field name="model" search="[('model', '=', 'account.invoice.payment_term')]"/>
             <field name="perm_read" eval="True"/>
@@ -108,9 +130,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="perm_delete" eval="True"/>
         </record>
 
-        <menuitem parent="menu_payment_terms_configuration"
-            action="act_payment_term_form" id="menu_payment_term_form"/>
-
         <record model="account.invoice.payment_term.line.type"
             id="payment_term_line_type_fixed">
             <field name="name">Fixed</field>
diff --git a/setup.py b/setup.py
index 25f9d6b..0c8a456 100644
--- a/setup.py
+++ b/setup.py
@@ -2,19 +2,22 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 
-from setuptools import setup, find_packages
+from setuptools import setup
 import re
 
-info = eval(file('__tryton__.py').read())
+info = eval(open('__tryton__.py').read())
+major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
+major_version = int(major_version)
+minor_version = int(minor_version)
 
-requires = ['egenix-mx-base']
+requires = ['python-dateutil']
 for dep in info.get('depends', []):
     if not re.match(r'(ir|res|workflow|webdav)(\W|$)', dep):
-        requires.append('trytond_' + dep)
-
-major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
-requires.append('trytond >= %s.%s' % (major_version, minor_version))
-requires.append('trytond < %s.%s' % (major_version, int(minor_version) + 1))
+        requires.append('trytond_%s >= %s.%s, < %s.%s' %
+                (dep, major_version, minor_version, major_version,
+                    minor_version + 1))
+requires.append('trytond >= %s.%s, < %s.%s' %
+        (major_version, minor_version, major_version, minor_version + 1))
 
 setup(name='trytond_account_invoice',
     version=info.get('version', '0.0.1'),
@@ -27,6 +30,7 @@ setup(name='trytond_account_invoice',
     package_dir={'trytond.modules.account_invoice': '.'},
     packages=[
         'trytond.modules.account_invoice',
+        'trytond.modules.account_invoice.tests',
     ],
     package_data={
         'trytond.modules.account_invoice': info.get('xml', []) \
@@ -56,4 +60,6 @@ setup(name='trytond_account_invoice',
     [trytond.modules]
     account_invoice = trytond.modules.account_invoice
     """,
+    test_suite='tests',
+    test_loader='trytond.test_loader:Loader',
 )
diff --git a/tests/__init__.py b/tests/__init__.py
index 0fb6501..9b51bcb 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,4 +1,4 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 
-from test_account_invoice import *
+from test_account_invoice import suite
diff --git a/tests/test_account_invoice.py b/tests/test_account_invoice.py
index b2fa5be..0aee346 100644
--- a/tests/test_account_invoice.py
+++ b/tests/test_account_invoice.py
@@ -10,7 +10,7 @@ if os.path.isdir(DIR):
 
 import unittest
 import trytond.tests.test_tryton
-from trytond.tests.test_tryton import RPCProxy, CONTEXT, SOCK, test_view
+from trytond.tests.test_tryton import test_view
 
 
 class AccountInvoiceTestCase(unittest.TestCase):
@@ -28,11 +28,10 @@ class AccountInvoiceTestCase(unittest.TestCase):
         self.assertRaises(Exception, test_view('account_invoice'))
 
 def suite():
-    return unittest.TestLoader().loadTestsFromTestCase(AccountInvoiceTestCase)
+    suite = trytond.tests.test_tryton.suite()
+    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
+        AccountInvoiceTestCase))
+    return suite
 
 if __name__ == '__main__':
-    suiteTrytond = trytond.tests.test_tryton.suite()
-    suiteAccountInvoice = suite()
-    alltests = unittest.TestSuite([suiteTrytond, suiteAccountInvoice])
-    unittest.TextTestRunner(verbosity=2).run(alltests)
-    SOCK.disconnect()
+    unittest.TextTestRunner(verbosity=2).run(suite())
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 9262931..a98a5c4 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.4.2
+Version: 1.6.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.4/
+Download-URL: http://downloads.tryton.org/1.6/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index 07dfdcb..1e802a8 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -21,8 +21,8 @@ setup.py
 ./invoice.py
 ./party.py
 ./payment_term.py
-tests/__init__.py
-tests/test_account_invoice.py
+./tests/__init__.py
+./tests/test_account_invoice.py
 trytond_account_invoice.egg-info/PKG-INFO
 trytond_account_invoice.egg-info/SOURCES.txt
 trytond_account_invoice.egg-info/dependency_links.txt
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index 52d447a..f330a53 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -1,9 +1,8 @@
-egenix-mx-base
-trytond_account
-trytond_company
-trytond_party
-trytond_product
-trytond_currency
-trytond_account_product
-trytond >= 1.4
-trytond < 1.5
\ No newline at end of file
+python-dateutil
+trytond_account >= 1.6, < 1.7
+trytond_company >= 1.6, < 1.7
+trytond_party >= 1.6, < 1.7
+trytond_product >= 1.6, < 1.7
+trytond_currency >= 1.6, < 1.7
+trytond_account_product >= 1.6, < 1.7
+trytond >= 1.6, < 1.7
\ No newline at end of file
commit c6ff6ff6a126ada414e52ca219fe05ffc1c334e5
Author: Daniel Baumann <daniel at debian.org>
Date:   Fri Apr 9 14:31:32 2010 +0200

    Adding Dm-Upload-Allowed in control in preparation for Mathias.

diff --git a/debian/control b/debian/control
index af76e8c..3720503 100644
--- a/debian/control
+++ b/debian/control
@@ -5,6 +5,7 @@ Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
 Uploaders:
  Daniel Baumann <daniel at debian.org>,
  Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
+Dm-Upload-Allowed: yes
 Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
 Standards-Version: 3.8.4
 Homepage: http://www.tryton.org/
commit 9b02e83119bab9dbf5be31f85549a2b5f6516bce
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Feb 20 09:55:33 2010 +0100

    Releasing debian version 1.4.2-1.

diff --git a/debian/changelog b/debian/changelog
index a566e48..29283b2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+tryton-modules-account-invoice (1.4.2-1) unstable; urgency=low
+
+  * Updating year in copyright file.
+  * Removing unneeded python-all-dev from build-depends.
+  * Updating to standards 3.8.4.
+  * Merging upstream version 1.4.2.
+
+ -- Daniel Baumann <daniel at debian.org>  Sat, 20 Feb 2010 09:55:26 +0100
+
 tryton-modules-account-invoice (1.4.1-1) unstable; urgency=low
 
   * Making depends versioned for tryton 1.4.
commit 8f517dd68d36dc873ce863f310a27113d5cd8b77
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Feb 20 09:54:47 2010 +0100

    Merging upstream version 1.4.2.

diff --git a/CHANGELOG b/CHANGELOG
index 88f6605..f4fd11f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.4.2 - 2010-02-16
+* Some bug fixes (see mercurial logs for details)
+
 Version 1.4.1 - 2009-11-23
 * Some bug fixes (see mercurial logs for details)
 
diff --git a/COPYRIGHT b/COPYRIGHT
index da277a9..94a43fb 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,7 +1,7 @@
 Copyright (C) 2004-2008 Tiny SPRL.
-Copyright (C) 2008-2009 Cédric Krier.
-Copyright (C) 2008-2009 Bertrand Chenal.
-Copyright (C) 2008-2009 B2CK SPRL.
+Copyright (C) 2008-2010 Cédric Krier.
+Copyright (C) 2008-2010 Bertrand Chenal.
+Copyright (C) 2008-2010 B2CK SPRL.
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/PKG-INFO b/PKG-INFO
index be56aa4..c6c3ff8 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.4.1
+Version: 1.4.2
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
diff --git a/__tryton__.py b/__tryton__.py
index 9e29314..b0efdef 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
     'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
-    'version': '1.4.1',
+    'version': '1.4.2',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/invoice.odt b/invoice.odt
index 04e46ca..b3643ed 100644
Binary files a/invoice.odt and b/invoice.odt differ
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 162a4ee..9262931 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.4.1
+Version: 1.4.2
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
commit ecbd3aae0336b756ee60c2e70ca0b29ed1ac13c3
Author: Daniel Baumann <daniel at debian.org>
Date:   Thu Jan 28 07:53:20 2010 +0100

    Updating to standards 3.8.4.

diff --git a/debian/control b/debian/control
index 0242d0b..af76e8c 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Uploaders:
  Daniel Baumann <daniel at debian.org>,
  Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
 Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
-Standards-Version: 3.8.3
+Standards-Version: 3.8.4
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
commit 3fd46701de6c70dd99510cb718cb22592d1f2acb
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Jan 25 10:12:27 2010 +0100

    Removing unneeded python-all-dev from build-depends.

diff --git a/debian/control b/debian/control
index 5439ebb..0242d0b 100644
--- a/debian/control
+++ b/debian/control
@@ -5,8 +5,7 @@ Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
 Uploaders:
  Daniel Baumann <daniel at debian.org>,
  Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
-Build-Depends:
- debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
+Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
 Standards-Version: 3.8.3
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
commit 953dd7e9b1da6742a14c4152fa2127b3dc8823b0
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Jan 2 11:34:57 2010 +0100

    Updating year in copyright file.

diff --git a/debian/copyright b/debian/copyright
index b18de59..9a3e6c5 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -27,7 +27,7 @@ License: GPL-3+
  can be found in /usr/share/common-licenses/GPL-3 file.
 
 Files: debian/*
-Copyright: (C) 2009 Daniel Baumann <daniel at debian.org>
+Copyright: (C) 2009-2010 Daniel Baumann <daniel at debian.org>
 License: GPL-3+
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
commit 51ecadaca6acd1c41c3612e0aff7fc19f2d7bad1
Author: Daniel Baumann <daniel at debian.org>
Date:   Wed Nov 25 12:54:00 2009 +0100

    Releasing debian version 1.4.1-1.

diff --git a/debian/changelog b/debian/changelog
index 9989932..a566e48 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+tryton-modules-account-invoice (1.4.1-1) unstable; urgency=low
+
+  * Making depends versioned for tryton 1.4.
+  * Merging upstream version 1.4.1.
+  * Updating README.source.
+  * Adding explicit debian source version 1.0 until switch to 3.0.
+
+ -- Daniel Baumann <daniel at debian.org>  Wed, 25 Nov 2009 12:53:53 +0100
+
 tryton-modules-account-invoice (1.4.0-1) unstable; urgency=low
 
   * Merging upstream version 1.4.0.
commit 1475c3fdb8bed74e968628dafd0089d77d612638
Author: Daniel Baumann <daniel at debian.org>
Date:   Wed Nov 25 12:53:40 2009 +0100

    Adding explicit debian source version 1.0 until switch to 3.0.

diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..d3827e7
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+1.0
commit 852ce1d990f30720e4af002ba417058768d3c468
Author: Daniel Baumann <daniel at debian.org>
Date:   Wed Nov 25 12:53:31 2009 +0100

    Updating README.source.

diff --git a/debian/README.source b/debian/README.source
index dcc7ba3..18b6b24 100644
--- a/debian/README.source
+++ b/debian/README.source
@@ -32,6 +32,6 @@ upstream source. Changes, if any, are stored in the source package as diffs in
 debian/diff and are applied during the build. Current modifications can be
 applied to the source tree with:
 
-  $ quilt push -a
+  $ QUILT_PATCHES=debian/patches quilt push -a
 
 More information about Quilt can be found in the quilt package.
commit bf4025f1b48f9cfb952f736d836e33f974d072f6
Author: Daniel Baumann <daniel at debian.org>
Date:   Wed Nov 25 12:53:20 2009 +0100

    Merging upstream version 1.4.1.

diff --git a/CHANGELOG b/CHANGELOG
index 824221c..88f6605 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.4.1 - 2009-11-23
+* Some bug fixes (see mercurial logs for details)
+
 Version 1.4.0 - 2009-10-19
 * Bug fixes (see mercurial logs for details)
 * Set invoice date when invoice is opened
diff --git a/PKG-INFO b/PKG-INFO
index 3c48647..be56aa4 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.4.0
+Version: 1.4.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
diff --git a/__tryton__.py b/__tryton__.py
index 31c9295..9e29314 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
     'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
     'name_fr_FR': 'Facturation',
-    'version': '1.4.0',
+    'version': '1.4.1',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/invoice.py b/invoice.py
index 79a882f..7f43388 100644
--- a/invoice.py
+++ b/invoice.py
@@ -33,7 +33,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     _description = __doc__
     _order_name = 'number'
     company = fields.Many2One('company.company', 'Company', required=True,
-            states=_STATES, domain=["('id', '=', context.get('company', 0))"])
+            states=_STATES, domain=[
+                "('id', 'company' in context and '=' or '!=', " \
+                        "context.get('company', 0))"])
     type = fields.Selection(_TYPE, 'Type', select=1, on_change=['type'],
             required=True, states={
                 'readonly': "state != 'draft' or context.get('type', False)" \
@@ -1288,7 +1290,8 @@ class InvoiceLine(ModelSQL, ModelView):
             string='Currency Digits', on_change_with=['currency'])
     company = fields.Many2One('company.company', 'Company', states={
         'required': "not bool(invoice)",
-        }, domain=["('id', '=', context.get('company', 0))"])
+        }, domain=["('id', 'company' in context and '=' or '!=', " \
+                "context.get('company', 0))"])
 
     sequence = fields.Integer('Sequence', states={
             'invisible': "context.get('standalone', False)",
@@ -2559,3 +2562,62 @@ class CreditInvoice(Wizard):
         return res
 
 CreditInvoice()
+
+
+#Fix typo in domain for issue1280
+class ActionActWindow(ModelSQL, ModelView):
+    _name = 'ir.action.act_window'
+
+    def read(self, cursor, user, ids, fields_names=None, context=None):
+        model_data_obj = self.pool.get('ir.model.data')
+
+        model_data_ids = model_data_obj.search(cursor, user, [
+            ('fs_id', 'in', ['act_invoice_out_credit_note_form3',
+                'act_invoice_out_credit_note_form4',
+                'act_invoice_out_credit_note_form5']),
+            ('module', '=', 'account_invoice'),
+            ('inherit', '=', False),
+            ], context=context)
+        action_ids = [x.db_id for x in model_data_obj.browse(cursor, user,
+            model_data_ids, context=context)]
+
+        res = super(ActionActWindow, self).read(cursor, user, ids,
+                fields_names=fields_names, context=context)
+
+        int_id = False
+        if isinstance(ids, (int, long)):
+            int_id = True
+            ids = [ids]
+            res = [res]
+
+        if not fields_names or 'domain' in fields_names:
+            for model_data_id in action_ids:
+                if model_data_id in ids:
+                    for record in res:
+                        if 'domain' not in record:
+                            continue
+                        if record['id'] in action_ids:
+                            if record['domain'] == \
+                                    "[('type', '=', 'out_credit_note'), " \
+                                    "('domain', '=', 'draft')]":
+                                record['domain'] = \
+                                        "[('type', '=', 'out_credit_note'), " \
+                                        "('state', '=', 'draft')]"
+                            elif record['domain'] == \
+                                    "[('type', '=', 'out_credit_note'), " \
+                                    "('domain', '=', 'proforma')]":
+                                record['domain'] = \
+                                        "[('type', '=', 'out_credit_note'), " \
+                                        "('state', '=', 'proforma')]"
+                            elif record['domain'] == \
+                                    "[('type', '=', 'out_credit_note'), " \
+                                    "('domain', '=', 'open')]":
+                                record['domain'] = \
+                                        "[('type', '=', 'out_credit_note'), " \
+                                        "('state', '=', 'open')]"
+                    break
+        if int_id:
+            return res[0]
+        return res
+
+ActionActWindow()
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index b82adec..162a4ee 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.4.0
+Version: 1.4.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
commit 21affc96928bcc7442166f3d920e51a412ce7b5e
Author: Daniel Baumann <daniel at debian.org>
Date:   Wed Nov 4 12:22:19 2009 +0100

    Making depends versioned for tryton 1.4.

diff --git a/debian/control b/debian/control
index aefd6c1..5439ebb 100644
--- a/debian/control
+++ b/debian/control
@@ -15,9 +15,10 @@ Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invo
 Package: tryton-modules-account-invoice
 Architecture: all
 Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-account,
- tryton-modules-account-product, tryton-modules-company,
- tryton-modules-currency, tryton-modules-party, tryton-modules-product,
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.4),
+ tryton-modules-account (>= 1.4), tryton-modules-account-product (>= 1.4),
+ tryton-modules-company (>= 1.4), tryton-modules-currency (>= 1.4),
+ tryton-modules-party (>= 1.4), tryton-modules-product (>= 1.4),
  python-egenix-mxbeebase, python-pkg-resources
 XB-Python-Version: ${python:Versions}
 Description: Tryton Application Platform (Financial and Accounting Module)
commit a9f7a8ddf4a5f278408a10759722c87c6dd4cb7c
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Oct 19 22:05:26 2009 +0200

    Releasing debian version 1.4.0-1.

diff --git a/debian/changelog b/debian/changelog
index b5e2246..9989932 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-account-invoice (1.4.0-1) unstable; urgency=low
+
+  * Merging upstream version 1.4.0.
+
+ -- Daniel Baumann <daniel at debian.org>  Mon, 19 Oct 2009 22:03:54 +0200
+
 tryton-modules-account-invoice (1.2.2-1) unstable; urgency=low
 
   * Updating to standards version 3.8.3.
commit 8be00137249c07580374157c17969c9e9efbbdc1
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Oct 19 21:28:15 2009 +0200

    Merging upstream version 1.4.0.

diff --git a/CHANGELOG b/CHANGELOG
index 2e64f03..824221c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,8 +1,7 @@
-Version 1.2.2 - 2009-08-31
-* Some bug fixes (see mercurial logs for details)
-
-Version 1.2.1 - 2009-07-07
-* Some bug fixes (see mercurial logs for details)
+Version 1.4.0 - 2009-10-19
+* Bug fixes (see mercurial logs for details)
+* Set invoice date when invoice is opened
+* Add invoice number to report name
 
 Version 1.2.0 - 2009-04-20
 * Bug fixes (see mercurial logs for details)
diff --git a/MANIFEST.in b/MANIFEST.in
index 5343ad8..c61b52d 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -7,3 +7,4 @@ include LICENSE
 include *.xml
 include *.odt
 include *.csv
+include tests/*
diff --git a/PKG-INFO b/PKG-INFO
index 4f15c8e..3c48647 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.2.2
+Version: 1.4.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.2/
+Download-URL: http://downloads.tryton.org/1.4/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index 4d61ba1..31c9295 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -3,10 +3,10 @@
 {
     'name': 'Account Invoice',
     'name_de_DE': 'Fakturierung',
-    'name_fr_FR': 'Facturation',
     'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
-    'version': '1.2.2',
+    'name_fr_FR': 'Facturation',
+    'version': '1.4.0',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
@@ -30,16 +30,6 @@ Ermöglicht:
     - die Definition von Rechnungssequenzen für das Geschäftsjahr bzw. die Buchungszeiträume
     - die Erstellung von Gutschriften zu jeglicher Rechnung
 ''',
-    'description_fr_FR': '''Module financier et comptable avec:
-    - Condition de paiement
-    - Facture / Note de crédit
-    - Facture fournisseur / Note de crédit fournisseur
-
-Avec la possibilité:
-    - de suivre le paiment des factures
-    - de définir les numérotations de facture par période ou par année fiscale
-    - de créditer n'importe quelle facture
-''',
     'description_es_CO': '''Módulo Financiero y de Contabilidad con:
     - Términos de Pago
     - Notas de Facturación / Crédito
@@ -50,15 +40,25 @@ Con las posibilidades de:
     - definir secuencias de facturas en año o período fiscal.
     - acreditar una factura.
 ''',
-    'description_es_ES': '''Módulo Financiero y de Contabilidad con:
-    - Términos de Pago
-    - Notas de Facturación / Crédito
-    - Factura de Proveedores / Nota de Crédito de Proveedores
+    'description_es_ES': '''Módulo financiero y de contabilidad con:
+    - Plazos de Pago
+    - Factura / Abono
+    - Factura de proveedor / Abono de proveedor
 
 Con las posibilidades de:
-    - hacer seguimiento al pago de facturas.
-    - definir secuencias de facturas en año o período fiscal.
-    - acreditar una factura.
+    - hacer seguimientos del pago de facturas.
+    - definir secuencias de facturas por ejercicio fiscal o período.
+    - pagar cualquier factura.
+''',
+    'description_fr_FR': '''Module financier et comptable avec:
+    - Condition de paiement
+    - Facture / Note de crédit
+    - Facture fournisseur / Note de crédit fournisseur
+
+Avec la possibilité:
+    - de suivre le paiment des factures
+    - de définir les numérotations de facture par période ou par année fiscale
+    - de créditer n'importe quelle facture
 ''',
     'depends': [
         'ir',
@@ -78,9 +78,9 @@ Con las posibilidades de:
         'account.xml',
     ],
     'translation': [
-        'fr_FR.csv',
         'de_DE.csv',
         'es_CO.csv',
         'es_ES.csv',
+        'fr_FR.csv',
     ]
 }
diff --git a/account.py b/account.py
index bebea80..9f0c3f1 100644
--- a/account.py
+++ b/account.py
@@ -7,27 +7,23 @@ class FiscalYear(ModelSQL, ModelView):
     _name = 'account.fiscalyear'
     out_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Invoice Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')," \
-                    "['OR', ('company', '=', company)," \
-                    "('company', '=', False)]]",
+            domain=[('code', '=', 'account.invoice'),
+                ['OR', "('company', '=', company)", ('company', '=', False)]],
                     context="{'code': 'account.invoice', 'company': company}")
     in_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Invoice Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')," \
-                    "['OR', ('company', '=', company)," \
-                    "('company', '=', False)]]",
+            domain=[('code', '=', 'account.invoice'),
+                ['OR', "('company', '=', company)", ('company', '=', False)]],
                     context="{'code': 'account.invoice', 'company': company}")
     out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Credit Note Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')," \
-                    "['OR', ('company', '=', company)," \
-                    "('company', '=', False)]]",
+            domain=[('code', '=', 'account.invoice'),
+                ['OR', "('company', '=', company)", ('company', '=', False)]],
                     context="{'code': 'account.invoice', 'company': company}")
     in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Credit Note Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')," \
-                    "['OR', ('company', '=', company)," \
-                    "('company', '=', False)]]",
+            domain=[('code', '=', 'account.invoice'),
+                ['OR', "('company', '=', company)", ('company', '=', False)]],
                     context="{'code': 'account.invoice', 'company': company}")
 
     def __init__(self):
@@ -82,32 +78,32 @@ class Period(ModelSQL, ModelView):
     _name = 'account.period'
     out_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Invoice Sequence',
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice'}",
+            domain=[('code', '=', 'account.invoice')],
+            context={'code': 'account.invoice'},
             states={
                 'required': "type == 'standard'",
                 'invisible': "type != 'standard'",
             })
     in_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Invoice Sequence',
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice'}",
+            domain=[('code', '=', 'account.invoice')],
+            context={'code': 'account.invoice'},
             states={
                 'required': "type == 'standard'",
                 'invisible': "type != 'standard'",
             })
     out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Credit Note Sequence',
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice'}",
+            domain=[('code', '=', 'account.invoice')],
+            context={'code': 'account.invoice'},
             states={
                 'required': "type == 'standard'",
                 'invisible': "type != 'standard'",
             })
     in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Credit Note Sequence',
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice'}",
+            domain=[('code', '=', 'account.invoice')],
+            context={'code': 'account.invoice'},
             states={
                 'required': "type == 'standard'",
                 'invisible': "type != 'standard'",
@@ -168,8 +164,8 @@ class Period(ModelSQL, ModelView):
                             period[sequence].id != \
                             vals[sequence]:
                         if invoice_obj.search(cursor, user, [
-                            ('date', '>=', period.start_date),
-                            ('date', '<=', period.end_date),
+                            ('invoice_date', '>=', period.start_date),
+                            ('invoice_date', '<=', period.end_date),
                             ('number', '!=', False),
                             ('type', '=', sequence[:-9]),
                             ], context=context):
diff --git a/de_DE.csv b/de_DE.csv
index dc58aed..41aa447 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -16,7 +16,7 @@ error,account.invoice,0,The debit account on journal is the same than the invoic
 error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Rechnungsnummern-Sequenz für diese Periode oder dieses Buchungsjahr fehlt!,0
 error,account.invoice,0,"You can not create an invoice
 with account from a different invoice company!",Es können keine Rechnungen mit einem Konto von einer anderen rechnungsstellenden Firma angelegt werden,0
-error,account.invoice,0,"You can not modify an invoice that is open, paid or canceled!","Fakturierte, Bezahlte oder Annulierte Rechnungen können nicht geändert werden!",0
+error,account.invoice,0,"You can not modify an invoice that is opened, paid!",Fakturierte oder bezahlte Rechnungen können nicht geändert werden!,0
 error,account.invoice,0,You can not reset to draft an invoice that has move!,"Eine Rechnung, die Buchungen enthält, kann nicht auf Entwurf zurückgesetzt werden!",0
 error,account.invoice,0,"You can not use the same account
 as on invoice line!",Es kann nicht das selbe Konto verwendet werden!,0
@@ -28,7 +28,7 @@ error,account.invoice.line,0,"You can not add a line to an invoice that is open,
 error,account.invoice.line,0,"You can not create invoice line
 with account with a different invoice company!","Eine Rechnungszeile kann sich nicht
 auf ein Konto eines anderen Unternehmens beziehen!",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","In einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert können Positionen nicht bearbeitet werden!",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",Positionen von fakturierten oder bezahlten Rechnungen können nicht geändert werden!,0
 error,account.invoice.line,0,"You can not use the same account
 as on the invoice!",Es kann nicht das selbe Konto verwendet werden!,0
 error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,Ein Teilbetrag kann nicht größer als der Gesamtbetrag der Rechnung sein!,0
@@ -37,7 +37,7 @@ error,account.invoice.payment_term,0,Payment term missing a remainder line!,In d
 error,account.invoice.payment_term.line.delay,0,The code must be unique!,Code kann nicht mehrfach vergeben werden!,0
 error,account.invoice.payment_term.line.type,0,The code must be unique!,Code kann nicht mehrfach vergeben werden!,0
 error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine neue Position hinzugefügt werden!",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","In Rechnungen mit dem Status Fakturiert, Bezahlt oder Annulliert können Steuern nicht bearbeitet werden!",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",Steuern von fakturierten oder bezahlten Rechnungen können nicht geändert werden!,0
 error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,"Sie können die Rechnungsnummern-Sequenz nicht ändern, wenn bereits eine Rechnung in der laufenden Periode eröffnet wurde.",0
 error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Verschiedene Geschäftsjahre eines Unternehmens erfordern unterschiedliche Rechnungssequenzen!,0
 field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Sequenz Gutschriften Lieferanten,0
@@ -76,6 +76,7 @@ field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Steuern Rechnung,0
 field,"account.invoice.line,invoice_type",0,Invoice Type,Rechnungstyp,0
 field,"account.invoice.line,note",0,Note,Notiz,0
 field,"account.invoice.line,party",0,Party,Partei,0
+field,"account.invoice.line,party_lang",0,Party Language,Sprache Partei,0
 field,"account.invoice.line,product",0,Product,Artikel,0
 field,"account.invoice.line,quantity",0,Quantity,Anzahl,0
 field,"account.invoice.line,rec_name",0,Name,Name,0
@@ -181,10 +182,10 @@ model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Zahlung Rechnung
 model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Zahlung Rechnung Init,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Ende Monat,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Tage netto,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Zahlungsbedingung Position Frist,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Zahlungsbedingung,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Zahlungsbedingung Zeile Frist,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Zahlungsbedingung Zeile,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fix,0
-model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Zahlungsbedingung Position Typ,0
+model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Zahlungsbedingung Zeile Typ,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Prozentsatz,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Rest,0
 model,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
@@ -327,8 +328,8 @@ view,account.invoice.pay_invoice.ask,0,Pay Invoice,Rechnung bezahlen,0
 view,account.invoice.pay_invoice.ask,0,Payment Lines,Zahlungspositionen,0
 view,account.invoice.pay_invoice.init,0,Pay Invoice,Rechnung bezahlen,0
 view,account.invoice.payment_term,0,Payment Term,Zahlungsbedingung,0
-view,account.invoice.payment_term,0,Payment Term Line,Zahlungsbedingung,0
-view,account.invoice.payment_term,0,Payment Term Lines,Positionen Zahlungsbedingung,0
+view,account.invoice.payment_term,0,Payment Term Line,Zahlungsbedingung Zeile,0
+view,account.invoice.payment_term,0,Payment Term Lines,Zeilen Zahlungsbedingung,0
 view,account.invoice.payment_term,0,Payment Terms,Zahlungsbedingung,0
 view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Warnung!</b>,0
 view,account.invoice.print_invoice_report.warning,0,Print Invoice,Rechnung / Gutschrift drucken,0
diff --git a/es_CO.csv b/es_CO.csv
index d6ba724..694898b 100644
--- a/es_CO.csv
+++ b/es_CO.csv
@@ -15,12 +15,12 @@ error,account.invoice,0,The debit account on journal is the same than the invoic
 error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,No hay una secuencia de facturaas para el período/año fiscal!,0
 error,account.invoice,0,"You can not create an invoice
 with account from a different invoice company!",No puede crear una factura,0
-error,account.invoice,0,"You can not modify an invoice that is open, paid or canceled!","¡No puede modificar una factura abierta, pagada o cancelada!",0
+error,account.invoice,0,"You can not modify an invoice that is opened, paid!","¡No puede modificar una factura que está abierta, pagada!",0
 error,account.invoice,0,You can not reset to draft an invoice that has move!,¡No puede poner en borrador una factura que ha sido movida!,0
 error,account.invoice,0,"You can not use the same account
 as on invoice line!","¡No puede usar la misma cuenta
 como línea en la factura!",0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not openned!,¡No puede acreditar una devolución de una factura que no está abierta!,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,¡No puede acreditar con reembolsos una factura que no está abierta!,0
 error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,¡No puede acreditar una devolución de una factura con pagos!,0
 error,account.invoice.line,0,"Line with ""line"" type must have an account!","¡Una línea con tipo de ""línea"" debe tener una cuenta!",0
 error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","¡Una línea sin tipo de ""línea"" debe tener una factura!",0
@@ -28,7 +28,7 @@ error,account.invoice.line,0,"You can not add a line to an invoice that is open,
 error,account.invoice.line,0,"You can not create invoice line
 with account with a different invoice company!","¡No puede crear una línea de factura
 con cuenta a partir de una factura de una compañía distinta!",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","No puede modificar la línea de una factura que esté abierta, pagada o cancelada!",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!","¡No puede modificar la línea de una factura que está abierta, pagada!",0
 error,account.invoice.line,0,"You can not use the same account
 as on the invoice!","No puede usar la misma cuenta
 que en la factura!",0
@@ -38,7 +38,7 @@ error,account.invoice.payment_term,0,Payment term missing a remainder line!,Hace
 error,account.invoice.payment_term.line.delay,0,The code must be unique!,¡El código debe ser único!,0
 error,account.invoice.payment_term.line.type,0,The code must be unique!,¡El código debe ser único!,0
 error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede adicionar una línea a una factura que está abierta, pagada o cancelada!",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","No puede modificar impuestos de una factura abierta, pagada o cancelada!",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",,0
 error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,No puede cambiar la secuencia de una factura si hay una factura abierta en el período,0
 error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,¡Debe tener secuencias diferentes de facturas por año fiscal en la misma compañía!,0
 field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de la Nota Crédito del Proveedor,0
@@ -77,6 +77,7 @@ field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Impuestos de Facturas
 field,"account.invoice.line,invoice_type",0,Invoice Type,Tipo de Factura,0
 field,"account.invoice.line,note",0,Note,Nota,0
 field,"account.invoice.line,party",0,Party,Terceros,0
+field,"account.invoice.line,party_lang",0,Party Language,Idioma del Tercero,0
 field,"account.invoice.line,product",0,Product,Producto,0
 field,"account.invoice.line,quantity",0,Quantity,Cantidad,0
 field,"account.invoice.line,rec_name",0,Name,Nombre,0
diff --git a/es_ES.csv b/es_ES.csv
index eb8c2db..56b71ff 100644
--- a/es_ES.csv
+++ b/es_ES.csv
@@ -1,8 +1,8 @@
 type,name,res_id,src,value,fuzzy
-error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,No puede cambiar la secuencia de una factura si hay una factura abierta en el año fiscal,0
-error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Debe tener una secuencia diferente de facturación por año fiscal,0
+error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,No puede cambiar la secuencia de una factura si ya hay una abierta en el ejercicio fiscal,0
+error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Debe tener una secuencia diferente de facturación por ejercicio fiscal,0
 error,account.invoice,0,"Base taxes different from invoice lines!
-Re-compute the invoice.","Los Impuestos base son distintos de las líneas de la factura.
+Re-compute the invoice.","Los impuestos base son distintos de las líneas de la factura.
 Recalcule la factura.",0
 error,account.invoice,0,"Taxes defined but not on invoice lines!
 Re-compute the invoice.","Tiene impuestos definidos pero ninguno en las líneas de la factura
@@ -14,36 +14,36 @@ error,account.invoice,0,The credit account on journal is missing!,Falta la cuent
 error,account.invoice,0,The credit account on journal is the same than the invoice account!,La cuenta de crédito en el diario es la misma que la cuenta facturada,0
 error,account.invoice,0,The debit account on journal is missing!,Falta la cuenta débito del diario,0
 error,account.invoice,0,The debit account on journal is the same than the invoice account!,La cuenta de débito en el diario es la misma que la cuenta facturada,0
-error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,No hay una secuencia de factura para el período/año fiscal,0
+error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,No hay una secuencia de factura para el período/ejercicio fiscal,0
 error,account.invoice,0,"You can not create an invoice
 with account from a different invoice company!","No puede crear una factura
 con una cuenta de una compañía distinta a la que factura",0
-error,account.invoice,0,"You can not modify an invoice that is open, paid or canceled!","No puede modificar una factura abierta, pagada o cancelada",0
+error,account.invoice,0,"You can not modify an invoice that is opened, paid!",No puede modificar una factura que está abierta o pagada,0
 error,account.invoice,0,You can not reset to draft an invoice that has move!,No puede poner en borrador una factura que tiene asientos,0
 error,account.invoice,0,"You can not use the same account
 as on invoice line!","No puede usar la misma cuenta
 que la línea de la factura",0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,,0
-error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,No puede acreditar una devolución de una factura con pagos,0
-error,account.invoice.line,0,"Line with ""line"" type must have an account!",Una línea con tipo «línea» debe tener una cuenta,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,No puede pagar con una devolución una factura que no está abierta,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,No puede pagar con una devolución una factura que tiene pagos,0
+error,account.invoice.line,0,"Line with ""line"" type must have an account!",Una línea de tipo «línea» debe tener una cuenta,0
 error,account.invoice.line,0,"Line without ""line"" type must have an invoice!",Una línea sin tipo «línea» debe tener una factura,0
 error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede añadir una línea a una factura que está abierta, pagada o cancelada",0
 error,account.invoice.line,0,"You can not create invoice line
 with account with a different invoice company!","No puede crear una línea de factura
 con una cuenta de una empresa distinta a la que factura",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","No puede modificar la línea de una factura que esté abierta, pagada o cancelada",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",No puede modificar una línea de una factura que está abierta o pagada,0
 error,account.invoice.line,0,"You can not use the same account
 as on the invoice!","No puede usar la misma cuenta
 que en la factura",0
 error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,No puede crear un pago parcial con una cantidad mayor de la que hay que pagar,0
-error,account.invoice.payment_term,0,Invalid payment term line!,La línea de término de pago no es válida,0
-error,account.invoice.payment_term,0,Payment term missing a remainder line!,Al término de pago le una línea final,0
+error,account.invoice.payment_term,0,Invalid payment term line!,La línea del plazo no es válida,0
+error,account.invoice.payment_term,0,Payment term missing a remainder line!,Al plazo de pago le falta una línea con el remanente,0
 error,account.invoice.payment_term.line.delay,0,The code must be unique!,El código debe ser único,0
 error,account.invoice.payment_term.line.type,0,The code must be unique!,El código debe ser único,0
 error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede añadir una línea a una factura que está abierta, pagada o cancelada",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","No puede modificar impuestos de una factura abierta, pagada o cancelada",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",No puede modificar los impuestos de una factura que está abierta o pagada,0
 error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,No puede cambiar la secuencia de una factura si hay una factura abierta en el período,0
-error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Debe tener secuencias diferentes de facturas por año fiscal en la misma empresa,0
+error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Debe usar secuencias distintas de factura por ejercicio fiscal en la misma empresa,0
 field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de abono de proveedor,0
 field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de factura de proveedor,0
 field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de abono a cliente,0
@@ -59,7 +59,7 @@ field,"account.invoice,comment",0,Comment,Comentario,0
 field,"account.invoice,company",0,Company,Empresa,0
 field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Con devolución,0
 field,"account.invoice,currency",0,Currency,Divisa,0
-field,"account.invoice,currency_digits",0,Currency Digits,Dígitos de la divisa,0
+field,"account.invoice,currency_digits",0,Currency Digits,Decimales de la divisa,0
 field,"account.invoice,description",0,Description,Descripción,0
 field,"account.invoice,invoice_address",0,Invoice Address,Dirección de facturación,0
 field,"account.invoice,invoice_date",0,Invoice Date,Fecha de factura,0
@@ -73,13 +73,14 @@ field,"account.invoice.line-account.tax,tax",0,Tax,Impuesto,0
 field,"account.invoice.line,amount",0,Amount,Cantidad,0
 field,"account.invoice.line,company",0,Company,Empresa,0
 field,"account.invoice.line,currency",0,Currency,Divisa,0
-field,"account.invoice.line,currency_digits",0,Currency Digits,Dígitos de la divisa,0
+field,"account.invoice.line,currency_digits",0,Currency Digits,Decimales de la divisa,0
 field,"account.invoice.line,description",0,Description,Descripción,0
 field,"account.invoice.line,invoice",0,Invoice,Factura,0
 field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Impuestos de la factura,0
 field,"account.invoice.line,invoice_type",0,Invoice Type,Tipo de factura,0
 field,"account.invoice.line,note",0,Note,Nota,0
-field,"account.invoice.line,party",0,Party,Terceros,0
+field,"account.invoice.line,party",0,Party,Tercero,0
+field,"account.invoice.line,party_lang",0,Party Language,Idioma del tercero,0
 field,"account.invoice.line,product",0,Product,Producto,0
 field,"account.invoice.line,quantity",0,Quantity,Cantidad,0
 field,"account.invoice.line,rec_name",0,Name,Nombre,0
@@ -89,7 +90,7 @@ field,"account.invoice,lines_to_pay",0,Lines to Pay,Líneas a pagar,0
 field,"account.invoice.line,taxes",0,Taxes,Impuestos,0
 field,"account.invoice.line,type",0,Type,Tipo,0
 field,"account.invoice.line,unit",0,Unit,Unidad,0
-field,"account.invoice.line,unit_digits",0,Unit Digits,Dígitos de unidad,0
+field,"account.invoice.line,unit_digits",0,Unit Digits,Decimales de la unidad,0
 field,"account.invoice.line,unit_price",0,Unit Price,Precio unitario,0
 field,"account.invoice,move",0,Move,Asiento,0
 field,"account.invoice,number",0,Number,Número,0
@@ -97,13 +98,13 @@ field,"account.invoice,party",0,Party,Tercero,0
 field,"account.invoice,party_lang",0,Party Language,Idioma del tercero,0
 field,"account.invoice.pay_invoice.ask,account",0,Account,Cuenta,0
 field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Cuenta de pérdidas,0
-field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Cantidad del pago,0
+field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Cantidad a pagar,0
 field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Valor de la pérdida,0
 field,"account.invoice.pay_invoice.ask,company",0,Company,Empresa,0
 field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Divisa de pago,0
 field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Decimales del pago de divisa,0
-field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Pérdida por decimales de divisa,0
-field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Divisa de la pérdida,0
+field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Decimales de la pérdida de divisa,0
+field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Pérdida de divisa,0
 field,"account.invoice.pay_invoice.ask,date",0,Date,Fecha,0
 field,"account.invoice.pay_invoice.ask,description",0,Description,Descripción,0
 field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Factura,0
@@ -120,18 +121,18 @@ field,"account.invoice.pay_invoice.init,date",0,Date,Fecha,0
 field,"account.invoice.pay_invoice.init,description",0,Description,Descripción,0
 field,"account.invoice.pay_invoice.init,journal",0,Journal,Diario,0
 field,"account.invoice,payment_lines",0,Payment Lines,Líneas de pago,0
-field,"account.invoice,payment_term",0,Payment Term,Término de pago,0
+field,"account.invoice,payment_term",0,Payment Term,Plazo de pago,0
 field,"account.invoice.payment_term,active",0,Active,Activo,0
 field,"account.invoice.payment_term,description",0,Description,Descripción,0
 field,"account.invoice.payment_term.line,amount",0,Amount,Cantidad,0
 field,"account.invoice.payment_term.line,currency",0,Currency,Divisa,0
-field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Dígitos de la divisa,0
-field,"account.invoice.payment_term.line,days",0,Number of Days,Cantidad de días,0
+field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Decimales de la divisa,0
+field,"account.invoice.payment_term.line,days",0,Number of Days,Número de días,0
 field,"account.invoice.payment_term.line,delay",0,Condition,Condición,0
 field,"account.invoice.payment_term.line.delay,code",0,Code,Código,0
 field,"account.invoice.payment_term.line.delay,name",0,Name,Nombre,0
 field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Nombre,0
-field,"account.invoice.payment_term.line,payment",0,Payment Term,Término de pago,0
+field,"account.invoice.payment_term.line,payment",0,Payment Term,Plazo de pago,0
 field,"account.invoice.payment_term.line,percentage",0,Percentage,Porcentaje,0
 field,"account.invoice.payment_term.line,rec_name",0,Name,Nombre,0
 field,"account.invoice.payment_term,lines",0,Lines,Líneas,0
@@ -140,7 +141,7 @@ field,"account.invoice.payment_term.line,type",0,Type,Tipo,0
 field,"account.invoice.payment_term.line.type,code",0,Code,Código,0
 field,"account.invoice.payment_term.line.type,name",0,Name,Nombre,0
 field,"account.invoice.payment_term.line.type,rec_name",0,Name,Nombre,0
-field,"account.invoice.payment_term,name",0,Payment Term,Término de pago,0
+field,"account.invoice.payment_term,name",0,Payment Term,Plazo de pago,0
 field,"account.invoice.payment_term,rec_name",0,Name,Nombre,0
 field,"account.invoice,rec_name",0,Name,Nombre,0
 field,"account.invoice,reconciled",0,Reconciled,Conciliado,0
@@ -150,10 +151,10 @@ field,"account.invoice.tax,account",0,Account,Cuenta,0
 field,"account.invoice,tax_amount",0,Tax,Impuesto,0
 field,"account.invoice.tax,amount",0,Amount,Cantidad,0
 field,"account.invoice.tax,base",0,Base,Base,0
-field,"account.invoice.tax,base_code",0,Base Code,Código base,0
+field,"account.invoice.tax,base_code",0,Base Code,Código de la base,0
 field,"account.invoice.tax,base_sign",0,Base Sign,Signo de la base,0
 field,"account.invoice.tax,description",0,Description,Descripción,0
-field,"account.invoice,taxes",0,Tax Lines,Líneas de impuestos,0
+field,"account.invoice,taxes",0,Tax Lines,Líneas de impuesto,0
 field,"account.invoice.tax,invoice",0,Invoice,Factura,0
 field,"account.invoice.tax,manual",0,Manual,Manual,0
 field,"account.invoice.tax,rec_name",0,Name,Nombre,0
@@ -171,29 +172,29 @@ field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia
 field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de abono a cliente,0
 field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de factura a cliente,0
 field,"party.address,invoice",0,Invoice,Factura,0
-field,"party.party,payment_term",0,Invoice Payment Term,Término de pago de la factura,0
-field,"party.party,supplier_payment_term",0,Supplier Payment Term,Término de pago al proveedor,0
+field,"party.party,payment_term",0,Invoice Payment Term,Plazo de pago de la factura,0
+field,"party.party,supplier_payment_term",0,Supplier Payment Term,Plazo de pago al proveedor,0
 help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Si es cierto, la(s) factura(s) actuales se pagarán.",0
 help,"account.invoice.payment_term.line,percentage",0,In %,En %,0
 help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Empleado para ordenar las líneas ascendentemente,0
 model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Factura - Línea de pago,0
-model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Inicio de factura de crédito,0
+model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Inicializa la factura de crédito,0
 model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Línea de factura - Impuesto,0
 model,"account.invoice.line,name",0,Invoice Line,Línea de factura,0
 model,"account.invoice,name",0,Invoice,Factura,0
 model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Solicitud de pago de factura,0
-model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Inicio de pago de factura,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Mes final,0
+model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Inicializa el pago de factura,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Final de mes,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Días netos,0
-model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Línea de término de pago retrasado,0
-model,"account.invoice.payment_term.line,name",0,Payment Term Line,Línea de término de pago,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Linea de retraso del plazo de pago,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Línea del plazo de pago,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fijo,0
-model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Línea de tipo de término de pago,0
+model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Tipo de línea del plazo de pago,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Porcentaje,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Resto,0
-model,"account.invoice.payment_term,name",0,Payment Term,Término de pago,0
+model,"account.invoice.payment_term,name",0,Payment Term,Plazo de pago,0
 model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Imprimir informe de aviso de facturas,0
-model,"account.invoice.tax,name",0,Invoice Tax,Impuesto en factura,0
+model,"account.invoice.tax,name",0,Invoice Tax,Impuesto de factura,0
 model,"ir.action,name",act_invoice_form,All Invoices,Todas las facturas,0
 model,"ir.action,name",credit_invoice,Credit,Haber,0
 model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Abonos,0
@@ -212,7 +213,7 @@ model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Facturas ab
 model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Abonos de proveedor abiertos,0
 model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Facturas de proveedor abiertas,0
 model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Pagar factura,0
-model,"ir.action,name",act_payment_term_form,Payment Terms,Términos de pago,0
+model,"ir.action,name",act_payment_term_form,Payment Terms,Plazos de pago,0
 model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Abonos pro forma,0
 model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Facturas pro forma,0
 model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Abonos de proveedor pro forma,0
@@ -238,18 +239,18 @@ model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,A
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Facturas abiertas,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Abonos de proveedor abiertos,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Facturas de proveedor abiertas,0
-model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Términos de pago,0
-model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Términos de pago,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Plazos de pago,0
+model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Plazos de pago,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Abonos pro forma,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Facturas pro forma,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Abonos de proveedor pro forma,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Facturas de proveedor pro forma,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Abonos del proveedor,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Facturas de proveedor,0
-model,"workflow.activity,name",invoice_activity_cancel,Canceled,Cancelado,0
+model,"workflow.activity,name",invoice_activity_cancel,Canceled,Cancelada,0
 model,"workflow.activity,name",invoice_activity_draft,Draft,Borrador,0
-model,"workflow.activity,name",invoice_activity_open,Open,Abierto,0
-model,"workflow.activity,name",invoice_activity_paid,Paid,Pagado,0
+model,"workflow.activity,name",invoice_activity_open,Open,Abrir,0
+model,"workflow.activity,name",invoice_activity_paid,Paid,Pagada,0
 model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
 model,"workflow,name",invoice_workflow,Invoice workflow,Flujo de trabajo de la factura,0
 odt,account.invoice,0,Amount,Cantidad,0
@@ -265,7 +266,7 @@ odt,account.invoice,0,Draft Supplier Credit Note,Borrador de abono de proveedor,
 odt,account.invoice,0,Draft Supplier Invoice,Borrador de factura de proveedor,0
 odt,account.invoice,0,E-Mail:,Correo electrónico:,0
 odt,account.invoice,0,Invoice N°:,Factura Nº:,0
-odt,account.invoice,0,Payment Term,Término de pago,0
+odt,account.invoice,0,Payment Term,Plazo de pago,0
 odt,account.invoice,0,Phone:,Teléfono:,0
 odt,account.invoice,0,Pro forma Credit Note,Abono pro forma,0
 odt,account.invoice,0,Pro forma Invoice,Factura pro forma,0
@@ -279,8 +280,8 @@ odt,account.invoice,0,Taxes,Impuestos,0
 odt,account.invoice,0,Taxes:,Impuestos:,0
 odt,account.invoice,0,Total:,Total:,0
 odt,account.invoice,0,Total (excl. taxes):,Total (sin impuestos):,0
-odt,account.invoice,0,Unit Price,Precio unitario,0
-odt,account.invoice,0,VAT:,IVA:,0
+odt,account.invoice,0,Unit Price,Precio,0
+odt,account.invoice,0,VAT:,NIF:,0
 selection,"account.invoice.line,invoice_type",0,Credit Note,Abono,0
 selection,"account.invoice.line,invoice_type",0,Invoice,Factura,0
 selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Abono de proveedor,0
@@ -293,7 +294,7 @@ selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Pago parcial,
 selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Pérdida,0
 selection,"account.invoice,state",0,Canceled,Cancelada,0
 selection,"account.invoice,state",0,Draft,Borrador,0
-selection,"account.invoice,state",0,Opened,Abierto,0
+selection,"account.invoice,state",0,Opened,Abierta,0
 selection,"account.invoice,state",0,Paid,Pagada,0
 selection,"account.invoice,state",0,Pro forma,Pro forma,0
 selection,"account.invoice,type",0,Credit Note,Abono,0
@@ -316,7 +317,7 @@ view,account.invoice,0,Payment Lines,Líneas de pago,0
 view,account.invoice,0,Pro For_ma,Pro for_ma,0
 view,account.invoice,0,_Reset to Draft,_Restablecer a borrador,0
 view,account.invoice,0,Taxes,Impuestos,0
-view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,¿Está seguro que quiere acreditar esas/esta factura(s)?,0
+view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,¿Está seguro que quiere devolver esta/estas factura(s)?,0
 view,account.invoice.credit_invoice.init,0,Credit Invoice,Factura crédito,0
 view,account.invoice.line,0,General,General,0
 view,account.invoice.line,0,Invoice Line,Línea de factura,0
@@ -330,18 +331,18 @@ view,account.invoice.pay_invoice.ask,0,Lines to Pay,Líneas a pagar,0
 view,account.invoice.pay_invoice.ask,0,Pay Invoice,Pagar factura,0
 view,account.invoice.pay_invoice.ask,0,Payment Lines,Líneas de pago,0
 view,account.invoice.pay_invoice.init,0,Pay Invoice,Pagar factura,0
-view,account.invoice.payment_term,0,Payment Term,Término de pago,0
-view,account.invoice.payment_term,0,Payment Term Line,Línea de término de pago,0
-view,account.invoice.payment_term,0,Payment Term Lines,Líneas de término de pago,0
-view,account.invoice.payment_term,0,Payment Terms,Términos de pago,0
+view,account.invoice.payment_term,0,Payment Term,Plazo de pago,0
+view,account.invoice.payment_term,0,Payment Term Line,Línea del plazo de pago,0
+view,account.invoice.payment_term,0,Payment Term Lines,Líneas del plazo de pago,0
+view,account.invoice.payment_term,0,Payment Terms,Plazos de pago,0
 view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Atención</b>,0
 view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimir factura,0
 view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Las facturas se enviarán <i>directamente</i> a la impresora.,0
 view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Ha elegido más de una factura para imprimir.,0
-view,account.invoice.tax,0,Invoice Tax,Impuesto de factura,0
-view,account.invoice.tax,0,Invoice Taxes,Impuestos de factura,0
+view,account.invoice.tax,0,Invoice Tax,Impuesto de la factura,0
+view,account.invoice.tax,0,Invoice Taxes,Impuestos de la factura,0
 view,account.invoice.tax,0,Tax Code,Código de impuesto,0
-view,party.party,0,Payment Terms,Términos de pago,0
+view,party.party,0,Payment Terms,Plazos de pago,0
 wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Haber,0
 wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Cancelar,0
 wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Cancelar,0
diff --git a/fr_FR.csv b/fr_FR.csv
index 708712f..90e7a9b 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -18,7 +18,7 @@ error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,
 error,account.invoice,0,"You can not create an invoice
 with account from a different invoice company!","Vous ne pouvez pas créer une facture
 avec un compte d'une société de facturation différente !",0
-error,account.invoice,0,"You can not modify an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier une facture qui est ouverte, payée ou annulée !",0
+error,account.invoice,0,"You can not modify an invoice that is opened, paid!",Vous ne pouvez pas modifier une facture qui est ouverte ou payée !,0
 error,account.invoice,0,You can not reset to draft an invoice that has move!,Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !,0
 error,account.invoice,0,"You can not use the same account
 as on invoice line!","Vous ne pouvez pas utiliser le même compte
@@ -31,7 +31,7 @@ error,account.invoice.line,0,"You can not add a line to an invoice that is open,
 error,account.invoice.line,0,"You can not create invoice line
 with account with a different invoice company!","Vous ne pouvez pas créer de ligne de facture
 avec un compte d'une différente société que celle de la  facture !",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte, payée our annulée !",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is opened, paid!",Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte ou payée !,0
 error,account.invoice.line,0,"You can not use the same account
 as on the invoice!","Vous ne pouvez pas utilier le même compte
 que celui de la factiure !",0
@@ -41,7 +41,7 @@ error,account.invoice.payment_term,0,Payment term missing a remainder line!,La c
 error,account.invoice.payment_term.line.delay,0,The code must be unique!,Le code doit être unique !,0
 error,account.invoice.payment_term.line.type,0,The code must be unique!,Le code doit être unique !,0
 error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou annulée !",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte, payée ou annulée !",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is opened, paid!",Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte ou payée !,0
 error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,Vous ne pouvez pas changer la séquence de facture s'il y a déjà une facture ouverte dans la période,0
 error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Vous devez avoir des séquences de facture différentes par année fiscale et dans la même société !,0
 field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Séquence des notes de crédit fournisseur,0
@@ -80,6 +80,7 @@ field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Taxes de le facture,0
 field,"account.invoice.line,invoice_type",0,Invoice Type,Type de facture,0
 field,"account.invoice.line,note",0,Note,Note,0
 field,"account.invoice.line,party",0,Party,Tiers,0
+field,"account.invoice.line,party_lang",0,Party Language,Langue du tiers,0
 field,"account.invoice.line,product",0,Product,Produit,0
 field,"account.invoice.line,quantity",0,Quantity,Quantité,0
 field,"account.invoice.line,rec_name",0,Name,Nom,0
diff --git a/invoice.odt b/invoice.odt
index f49be6f..04e46ca 100644
Binary files a/invoice.odt and b/invoice.odt differ
diff --git a/invoice.py b/invoice.py
index 06f97c3..79a882f 100644
--- a/invoice.py
+++ b/invoice.py
@@ -4,7 +4,7 @@
 from trytond.model import ModelWorkflow, ModelView, ModelSQL, fields
 from trytond.report import Report
 from trytond.wizard import Wizard
-from trytond.backend import TableHandler
+from trytond.backend import TableHandler, FIELDS
 from decimal import Decimal
 import base64
 
@@ -33,7 +33,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     _description = __doc__
     _order_name = 'number'
     company = fields.Many2One('company.company', 'Company', required=True,
-            states=_STATES, domain="[('id', '=', context.get('company', 0))]")
+            states=_STATES, domain=["('id', '=', context.get('company', 0))"])
     type = fields.Selection(_TYPE, 'Type', select=1, on_change=['type'],
             required=True, states={
                 'readonly': "state != 'draft' or context.get('type', False)" \
@@ -50,8 +50,11 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         ('paid', 'Paid'),
         ('cancel', 'Canceled'),
         ], 'State', readonly=True)
-    invoice_date = fields.Date('Invoice Date', required=True,
-        states=_STATES)
+    invoice_date = fields.Date('Invoice Date',
+        states={
+                'readonly': "state in ('open', 'paid', 'cancel')",
+                'required': "state in ('open', 'paid')",
+        })
     accounting_date = fields.Date('Accounting Date', states=_STATES)
     party = fields.Many2One('party.party', 'Party', change_default=True,
         required=True, states=_STATES, on_change=['party', 'payment_term',
@@ -59,7 +62,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     party_lang = fields.Function('get_party_language', type='char',
             string='Party Language', on_change_with=['party'])
     invoice_address = fields.Many2One('party.address', 'Invoice Address',
-        required=True, states=_STATES, domain="[('party', '=', party)]")
+        required=True, states=_STATES, domain=["('party', '=', party)"])
     currency = fields.Many2One('currency.currency', 'Currency', required=True,
         states={
             'readonly': "state != 'draft' or (bool(lines) and bool(currency))",
@@ -71,7 +74,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     move = fields.Many2One('account.move', 'Move', readonly=True)
     account = fields.Many2One('account.account', 'Account', required=True,
         states=_STATES,
-        domain="[('company', '=', company), ('kind', '!=', 'view')]")
+        domain=["('company', '=', company)", ('kind', '!=', 'view')])
     payment_term = fields.Many2One('account.invoice.payment_term',
         'Payment Term', required=True, states=_STATES)
     lines = fields.One2Many('account.invoice.line', 'invoice', 'Lines',
@@ -129,7 +132,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             'no_invoice_sequence': 'There is no invoice sequence ' \
                     'on the period/fiscal year!',
             'modify_invoice': 'You can not modify an invoice that is ' \
-                    'open, paid or canceled!',
+                    'opened, paid!',
             'same_debit_account': 'The debit account on journal is ' \
                     'the same than the invoice account!',
             'missing_debit_account': 'The debit account on journal is ' \
@@ -144,6 +147,13 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     'as on invoice line!',
             })
 
+    def init(self, cursor, module_name):
+        super(Invoice, self).init(cursor, module_name)
+        table = TableHandler(cursor, self, module_name)
+
+        # Migration from 1.2 invoice_date is no more required
+        table.not_null_action('invoice_date', action='remove')
+
     def default_type(self, cursor, user, context=None):
         if context is None:
             context = {}
@@ -152,10 +162,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     def default_state(self, cursor, user, context=None):
         return 'draft'
 
-    def default_invoice_date(self, cursor, user, context=None):
-        date_obj = self.pool.get('ir.date')
-        return date_obj.today(cursor, user, context=context)
-
     def default_currency(self, cursor, user, context=None):
         company_obj = self.pool.get('company.company')
         currency_obj = self.pool.get('currency.currency')
@@ -419,12 +425,16 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     def get_tax_amount(self, cursor, user, ids, name, arg, context=None):
         currency_obj = self.pool.get('currency.currency')
         res = {}
+        type_name = FIELDS[self.tax_amount._type].sql_type(self.tax_amount)[0]
         cursor.execute('SELECT invoice, ' \
-                    'COALESCE(SUM(amount), 0)::DECIMAL ' \
+                    'CAST(COALESCE(SUM(amount), 0) AS ' + type_name + ') ' \
                 'FROM account_invoice_tax ' \
-                'WHERE invoice IN (' + ','.join(['%s' for x in ids]) + ') ' \
+                'WHERE invoice IN (' + ','.join(('%s',) * len(ids)) + ') ' \
                 'GROUP BY invoice', ids)
         for invoice_id, sum in cursor.fetchall():
+            # SQLite uses float for SUM
+            if not isinstance(sum, Decimal):
+                sum = Decimal(str(sum))
             res[invoice_id] = sum
 
         for invoice in self.browse(cursor, user, ids, context=context):
@@ -548,9 +558,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 'AND '.join(('(SUM(u.total_amount) ' + arg[1] + ' %s) ' \
                                 for arg in args)),
             invoice_val + invoice_val + [arg[2] for arg in args])
-
-        if not cursor.rowcount:
-            return [('id', '=', 0)]
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
     def search_untaxed_amount(self, cursor, user, name, args, context=None):
@@ -578,9 +585,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
               'AND '.join(('(COALESCE(SUM(quantity * unit_price), 0) ' + \
                                 arg[1] + ' %s) ' for arg in args)),
             invoice_val + [arg[2] for arg in args])
-
-        if not cursor.rowcount:
-            return [('id', '=', 0)]
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
     def search_tax_amount(self, cursor, user, name, args, context=None):
@@ -608,9 +612,6 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
               'AND '.join(('(COALESCE(SUM(amount), 0) ' + arg[1] + ' %s) ' \
                                 for arg in args)),
             invoice_val + [arg[2] for arg in args])
-
-        if not cursor.rowcount:
-            return [('id', '=', 0)]
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
     def button_draft(self, cursor, user, ids, context=None):
@@ -847,6 +848,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
     def set_number(self, cursor, user, invoice_id, context=None):
         period_obj = self.pool.get('account.period')
         sequence_obj = self.pool.get('ir.sequence.strict')
+        date_obj = self.pool.get('ir.date')
 
         if context is None:
             context = {}
@@ -869,11 +871,13 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
             self.raise_user_error(cursor, 'no_invoice_sequence',
                     context=context)
         ctx = context.copy()
-        ctx['date'] = invoice.invoice_date
+        ctx['date'] = invoice.invoice_date or date_obj.today(cursor, user,
+                context=context)
         number = sequence_obj.get_id(cursor, user, sequence_id, context=ctx)
-        self.write(cursor, user, invoice_id, {
-            'number': number,
-            }, context=context)
+        vals = {'number': number}
+        if not invoice.invoice_date:
+            vals['invoice_date'] = ctx['date']
+        self.write(cursor, user, invoice.id, vals, context=context)
         return True
 
     def check_modify(self, cursor, user, ids, context=None):
@@ -961,7 +965,7 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
         default['payment_lines'] = False
         default['lines'] = False
         default['taxes'] = False
-        default['invoice_date'] = date_obj.today(cursor, user, context=context)
+        default['invoice_date'] = False
         default['accounting_date'] = False
         default['lines_to_pay'] = False
 
@@ -1275,6 +1279,8 @@ class InvoiceLine(ModelSQL, ModelView):
     party = fields.Many2One('party.party', 'Party', select=1, states={
         'required': "not bool(invoice)",
         })
+    party_lang = fields.Function('get_party_language', type='char',
+            string='Party Language', on_change_with=['party'])
     currency = fields.Many2One('currency.currency', 'Currency', states={
         'required': "not bool(invoice)",
         })
@@ -1282,7 +1288,7 @@ class InvoiceLine(ModelSQL, ModelView):
             string='Currency Digits', on_change_with=['currency'])
     company = fields.Many2One('company.company', 'Company', states={
         'required': "not bool(invoice)",
-        }, domain="[('id', '=', context.get('company', 0))]")
+        }, domain=["('id', '=', context.get('company', 0))"])
 
     sequence = fields.Integer('Sequence', states={
             'invisible': "context.get('standalone', False)",
@@ -1305,8 +1311,8 @@ class InvoiceLine(ModelSQL, ModelView):
             states={
                 'required': "product",
                 'invisible': "type != 'line'",
-            }, domain="[('category', '=', " \
-                    "(product, 'product.default_uom.category'))]",
+            }, domain=["('category', '=', " \
+                    "(product, 'product.default_uom.category'))"],
             context="{'category': (product, 'product.default_uom.category')}")
     unit_digits = fields.Function('get_unit_digits', type='integer',
             string='Unit Digits', on_change_with=['unit'])
@@ -1317,13 +1323,13 @@ class InvoiceLine(ModelSQL, ModelView):
                 '_parent_invoice.type', '_parent_invoice.party',
                 '_parent_invoice.currency', 'party', 'currency'])
     account = fields.Many2One('account.account', 'Account',
-            domain="[('kind', '!=', 'view'), " \
-                    "('company', '=', " \
+            domain=[('kind', '!=', 'view'),
+                "('company', '=', " \
                         "globals().get('_parent_invoice') and " \
                         "globals().get('_parent_invoice').company or " \
-                        "globals()['company']), " \
-                    "('id', '!=', globals().get('_parent_invoice') and " \
-                        "globals().get('_parent_invoice').account or 0)]",
+                        "globals()['company'])",
+                "('id', '!=', globals().get('_parent_invoice') and " \
+                        "globals().get('_parent_invoice').account or 0)"],
             states={
                 'invisible': "type != 'line'",
                 'required': "type == 'line'",
@@ -1370,7 +1376,7 @@ class InvoiceLine(ModelSQL, ModelView):
         self._order.insert(0, ('sequence', 'ASC'))
         self._error_messages.update({
             'modify': 'You can not modify line from an invoice ' \
-                    'that is open, paid or canceled!',
+                    'that is opened, paid!',
             'create': 'You can not add a line to an invoice ' \
                     'that is open, paid or canceled!',
             'account_different_company': 'You can not create invoice line\n' \
@@ -1429,11 +1435,39 @@ class InvoiceLine(ModelSQL, ModelView):
     def default_unit_price(self, cursor, user, context=None):
         return Decimal('0.0')
 
+    def on_change_with_party_lang(self, cursor, user, ids, vals, context=None):
+        party_obj = self.pool.get('party.party')
+        if vals.get('party'):
+            party = party_obj.browse(cursor, user, vals['party'],
+                    context=context)
+            if party.lang:
+                return party.lang.code
+        return 'en_US'
+
+    def get_party_language(self, cursor, user, ids, name, arg, context=None):
+        '''
+        Return the language code of the party of each line
+
+        :param cursor: the database cursor
+        :param user: the user id
+        :param ids: the ids of the account.invoice.line
+        :param context: the context
+        :return: a dictionary with account.invoice.line id as key and
+            language code as value
+        '''
+        res = {}
+        for line in self.browse(cursor, user, ids, context=context):
+            if line.party and line.party.lang:
+                res[line.id] = line.party.lang.code
+            else:
+                res[line.id] = 'en_US'
+        return res
+
     def on_change_with_amount(self, cursor, user, ids, vals, context=None):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('type') == 'line':
-            currency = vals.get('_parent_invoice.currency', vals.get('currency'))
-            if isinstance(currency, (int, long)):
+            currency = vals.get('_parent_invoice.currency') or vals.get('currency')
+            if isinstance(currency, (int, long)) and currency:
                 currency = currency_obj.browse(cursor, user, currency,
                         context=context)
             amount = Decimal(str(vals.get('quantity') or '0.0')) * \
@@ -1509,6 +1543,9 @@ class InvoiceLine(ModelSQL, ModelView):
 
         res = {}
         for line in self.browse(cursor, user, ids, context=context):
+            if not line.invoice:
+                res[line.id] = False
+                continue
             ctx = context.copy()
             ctx.update(invoice_obj.get_tax_context(cursor, user, line.invoice,
                 context=context))
@@ -1561,9 +1598,9 @@ class InvoiceLine(ModelSQL, ModelView):
 
         ctx = context.copy()
         party = None
-        if vals.get('_parent_invoice.party', vals.get('party')):
-            party = party_obj.browse(cursor, user, vals.get('_parent_invoice.party',
-                    vals.get('party')),
+        if vals.get('_parent_invoice.party') or vals.get('party'):
+            party = party_obj.browse(cursor, user, vals.get('_parent_invoice.party')
+                    or vals.get('party'),
                     context=context)
             if party.lang:
                 ctx['language'] = party.lang.code
@@ -1576,13 +1613,13 @@ class InvoiceLine(ModelSQL, ModelView):
             company = company_obj.browse(cursor, user, context['company'],
                     context=context)
         currency = None
-        if vals.get('_parent_invoice.currency', vals.get('currency')):
+        if vals.get('_parent_invoice.currency') or vals.get('currency'):
             #TODO check if today date is correct
             currency = currency_obj.browse(cursor, user,
-                    vals.get('_parent_invoice.currency', vals.get('currency')),
+                    vals.get('_parent_invoice.currency') or vals.get('currency'),
                     context=context)
 
-        if vals.get('_parent_invoice.type', vals.get('invoice_type')) \
+        if (vals.get('_parent_invoice.type') or vals.get('invoice_type')) \
                 in ('in_invoice', 'in_credit_note'):
             if company and currency:
                 res['unit_price'] = currency_obj.compute(cursor, user,
@@ -1838,16 +1875,16 @@ class InvoiceTax(ModelSQL, ModelView):
     sequence_number = fields.Function('get_sequence_number', type='integer',
             string='Sequence Number')
     account = fields.Many2One('account.account', 'Account', required=True,
-            domain="[('kind', '!=', 'view'), " \
-                "('company', '=', _parent_invoice.company)]")
+            domain=[('kind', '!=', 'view'),
+                "('company', '=', _parent_invoice.company)"])
     base = fields.Numeric('Base', digits="(16, _parent_invoice.currency_digits)")
     amount = fields.Numeric('Amount', digits="(16, _parent_invoice.currency_digits)")
     manual = fields.Boolean('Manual')
     base_code = fields.Many2One('account.tax.code', 'Base Code',
-            domain="[('company', '=', _parent_invoice.company)]")
+            domain=["('company', '=', _parent_invoice.company)"])
     base_sign = fields.Numeric('Base Sign', digits=(2, 0))
     tax_code = fields.Many2One('account.tax.code', 'Tax Code',
-            domain="[('company', '=', _parent_invoice.company)]")
+            domain=["('company', '=', _parent_invoice.company)"])
     tax_sign = fields.Numeric('Tax Sign', digits=(2, 0))
     tax = fields.Many2One('account.tax', 'Tax')
 
@@ -1861,7 +1898,7 @@ class InvoiceTax(ModelSQL, ModelView):
         self._order.insert(0, ('sequence', 'ASC'))
         self._error_messages.update({
             'modify': 'You can not modify tax from an invoice ' \
-                    'that is open, paid or canceled!',
+                    'that is opened, paid!',
             'create': 'You can not add a line to an invoice ' \
                     'that is open, paid or canceled!',
             })
@@ -1886,7 +1923,7 @@ class InvoiceTax(ModelSQL, ModelView):
         Check if the taxes can be modified
         '''
         for tax in self.browse(cursor, user, ids, context=context):
-            if tax.invoice.state in ('open', 'paid', 'cancel'):
+            if tax.invoice.state in ('open', 'paid'):
                 self.raise_user_error(cursor, 'modify',
                         context=context)
         return
@@ -2077,12 +2114,18 @@ class InvoiceReport(Report):
     _name = 'account.invoice'
 
     def execute(self, cursor, user, ids, datas, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+
         if context is None:
             context = {}
         res = super(InvoiceReport, self).execute(cursor, user, ids, datas,
                 context=context)
         if len(ids) > 1 or datas['id'] != ids[0]:
-            res = (res[0], res[1], True)
+            res = (res[0], res[1], True, res[3])
+        else:
+            invoice = invoice_obj.browse(cursor, user, ids[0], context=context)
+            if invoice.number:
+                res = (res[0], res[1], res[2], res[3] + ' - ' + invoice.number)
         return res
 
     def _get_objects(self, cursor, user_id, ids, model, datas, context):
@@ -2168,7 +2211,7 @@ class PayInvoiceAsk(ModelView):
                 'required': "type == 'writeoff'",
             })
     account_writeoff = fields.Many2One('account.account', 'Write-Off Account',
-            domain="[('kind', '!=', 'view'), ('company', '=', company)]",
+            domain=[('kind', '!=', 'view'), "('company', '=', company)"],
             states={
                 'invisible': "type != 'writeoff'",
                 'required': "type == 'writeoff'",
@@ -2192,8 +2235,8 @@ class PayInvoiceAsk(ModelView):
     lines_to_pay = fields.Many2Many('account.move.line', None, None,
             'Lines to Pay', readonly=True)
     lines = fields.Many2Many('account.move.line', None, None, 'Lines',
-            domain="[('id', 'in', lines_to_pay), " \
-                    "('reconciliation', '=', False)]",
+            domain=["('id', 'in', lines_to_pay)",
+                ('reconciliation', '=', False)],
             states={
                 'invisible': "type != 'writeoff'",
             }, on_change=['lines', 'amount', 'currency', 'currency_writeoff',
@@ -2307,7 +2350,7 @@ class PayInvoice(Wizard):
         ctx['date'] = data['form']['date']
         amount = currency_obj.compute(cursor, user, data['form']['currency'],
                 data['form']['amount'], invoice.company.currency,
-                context=context)
+                context=ctx)
         res = invoice_obj.get_reconcile_lines_for_amount(cursor, user, invoice,
                 amount)
         if res[1] == Decimal('0.0') and amount <= invoice.amount_to_pay:
@@ -2379,7 +2422,7 @@ class PayInvoice(Wizard):
         ctx['date'] = data['form']['date']
         amount = currency_obj.compute(cursor, user, data['form']['currency'],
                 data['form']['amount'], invoice.company.currency,
-                context=context)
+                context=ctx)
 
         reconcile_lines = invoice_obj.get_reconcile_lines_for_amount(cursor,
                 user, invoice, amount)
diff --git a/invoice.xml b/invoice.xml
index 3df7d21..193ecb9 100644
--- a/invoice.xml
+++ b/invoice.xml
@@ -91,7 +91,7 @@ this repository contains the full copyright notices and license terms. -->
                                     </group>
                                     <group col="5" colspan="2" id="buttons">
                                         <button name="cancel" string="_Cancel"
-                                            states="{'invisible': '''state not in ('draft', 'proforma') ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
+                                            states="{'invisible': '''state not in ('draft', 'proforma')''', 'readonly': '''%(account.group_account)d not in groups'''}"
                                             icon="tryton-cancel"/>
                                         <button name="button_draft" string="_Reset to Draft"
                                             type="object"
@@ -104,11 +104,11 @@ this repository contains the full copyright notices and license terms. -->
                                             states="{'invisible': '''state != 'draft' '''}"
                                             icon="tryton-go-next"/>
                                         <button name="open" string="_Open"
-                                            states="{'invisible': '''state not in ('draft', 'proforma') ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
+                                            states="{'invisible': '''state not in ('draft', 'proforma')''', 'readonly': '''%(account.group_account)d not in groups'''}"
                                             icon="tryton-ok"/>
                                         <button name="%(wizard_pay_invoice)d" string="_Pay"
                                             type="action"
-                                            states="{'invisible': '''state != 'open' ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
+                                            states="{'invisible': '''state != 'open' ''', 'readonly': '''%(account.group_account)d not in groups'''}"
                                             icon="tryton-go-next"/>
                                     </group>
                                 </group>
@@ -627,7 +627,7 @@ this repository contains the full copyright notices and license terms. -->
         </record>
         <record model="workflow" id="invoice_workflow">
             <field name="name">Invoice workflow</field>
-            <field name="osv">account.invoice</field>
+            <field name="model">account.invoice</field>
             <field name="on_create" eval="True"/>
         </record>
         <record model="workflow.activity" id="invoice_activity_draft">
@@ -735,7 +735,7 @@ this repository contains the full copyright notices and license terms. -->
                             <newline/>
                             <label name="description"/>
                             <field name="description" colspan="3"
-                                spell="_parent_invoice.party_lang"/>
+                                spell="globals().get('_parent_invoice') and _parent_invoice.party_lang or party_lang"/>
                             <label name="quantity"/>
                             <field name="quantity"/>
                             <label name="unit"/>
@@ -750,11 +750,12 @@ this repository contains the full copyright notices and license terms. -->
                         <page string="Notes" id="notes">
                             <separator name="note" colspan="4"/>
                             <field name="note" colspan="4"
-                                spell="_parent_invoice.party_lang"/>
+                                spell="globals().get('_parent_invoice') and _parent_invoice.party_lang or party_lang"/>
                         </page>
                     </notebook>
                     <field name="unit_digits" invisible="1" colspan="4"/>
                     <field name="currency_digits" invisible="1" colspan="4"/>
+                    <field name="party_lang" invisible="1" colspan="4"/>
                 </form>
                 ]]>
             </field>
diff --git a/setup.py b/setup.py
index 0c8de7e..25f9d6b 100644
--- a/setup.py
+++ b/setup.py
@@ -9,17 +9,12 @@ info = eval(file('__tryton__.py').read())
 
 requires = ['egenix-mx-base']
 for dep in info.get('depends', []):
-    match = re.compile(
-            '(ir|res|workflow|webdav)((\s|$|<|>|<=|>=|==|!=).*?$)').match(dep)
-    if match:
-        continue
-    else:
-        dep = 'trytond_' + dep
-    requires.append(dep)
+    if not re.match(r'(ir|res|workflow|webdav)(\W|$)', dep):
+        requires.append('trytond_' + dep)
 
 major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
 requires.append('trytond >= %s.%s' % (major_version, minor_version))
-requires.append('trytond < %s.%s' % (major_version, str(int(minor_version) + 1)))
+requires.append('trytond < %s.%s' % (major_version, int(minor_version) + 1))
 
 setup(name='trytond_account_invoice',
     version=info.get('version', '0.0.1'),
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..0fb6501
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,4 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+
+from test_account_invoice import *
diff --git a/tests/test_account_invoice.py b/tests/test_account_invoice.py
new file mode 100644
index 0000000..b2fa5be
--- /dev/null
+++ b/tests/test_account_invoice.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+
+import sys, os
+DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
+    '..', '..', '..', '..', '..', 'trytond')))
+if os.path.isdir(DIR):
+    sys.path.insert(0, os.path.dirname(DIR))
+
+import unittest
+import trytond.tests.test_tryton
+from trytond.tests.test_tryton import RPCProxy, CONTEXT, SOCK, test_view
+
+
+class AccountInvoiceTestCase(unittest.TestCase):
+    '''
+    Test AccountInvoice module.
+    '''
+
+    def setUp(self):
+        trytond.tests.test_tryton.install_module('account_invoice')
+
+    def test0005views(self):
+        '''
+        Test views.
+        '''
+        self.assertRaises(Exception, test_view('account_invoice'))
+
+def suite():
+    return unittest.TestLoader().loadTestsFromTestCase(AccountInvoiceTestCase)
+
+if __name__ == '__main__':
+    suiteTrytond = trytond.tests.test_tryton.suite()
+    suiteAccountInvoice = suite()
+    alltests = unittest.TestSuite([suiteTrytond, suiteAccountInvoice])
+    unittest.TextTestRunner(verbosity=2).run(alltests)
+    SOCK.disconnect()
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 435701c..b82adec 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.2.2
+Version: 1.4.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.2/
+Download-URL: http://downloads.tryton.org/1.4/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index ecd4482..07dfdcb 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -21,6 +21,8 @@ setup.py
 ./invoice.py
 ./party.py
 ./payment_term.py
+tests/__init__.py
+tests/test_account_invoice.py
 trytond_account_invoice.egg-info/PKG-INFO
 trytond_account_invoice.egg-info/SOURCES.txt
 trytond_account_invoice.egg-info/dependency_links.txt
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index 3ba4229..52d447a 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -5,5 +5,5 @@ trytond_party
 trytond_product
 trytond_currency
 trytond_account_product
-trytond >= 1.2
-trytond < 1.3
\ No newline at end of file
+trytond >= 1.4
+trytond < 1.5
\ No newline at end of file
commit dd55a5a333813f899f0bd4caed9a8badb3de04d6
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Sep 5 09:38:06 2009 +0200

    Releasing debian version 1.2.2-1.

diff --git a/debian/changelog b/debian/changelog
index 2572ef0..b5e2246 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+tryton-modules-account-invoice (1.2.2-1) unstable; urgency=low
+
+  * Updating to standards version 3.8.3.
+  * Adding maintainer homepage field to control.
+  * Adding README.source.
+  * Merging upstream version 1.2.2.
+  * Moving maintainer homepage field to copyright.
+  * Updating README.source.
+  * Using ascii only characters in copyright.
+
+ -- Daniel Baumann <daniel at debian.org>  Sat, 05 Sep 2009 09:37:57 +0200
+
 tryton-modules-account-invoice (1.2.1-1) unstable; urgency=low
 
   * Merging upstream version 1.2.1.
commit 78a45bc24ba49060631ac41a68bf87a229653ccb
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Sep 5 09:34:33 2009 +0200

    Using ascii only characters in copyright.

diff --git a/debian/copyright b/debian/copyright
index 0308b4e..b18de59 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -6,7 +6,7 @@ Maintainer-Homepage: http://tryton.debian-maintainers.org/
 Files: *
 Copyright:
  (C) 2004-2008 Tiny SPRL
- (C) 2008-2009 Cédric Krier
+ (C) 2008-2009 Cedric Krier
  (C) 2008-2009 Bertrand Chenal
  (C) 2008-2009 B2CK SPRL
 License: GPL-3+
commit 2f5a882dee3163addf0d0f90bb7a3392c490255d
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Sep 5 09:31:18 2009 +0200

    Updating README.source.

diff --git a/debian/README.source b/debian/README.source
index 259f923..dcc7ba3 100644
--- a/debian/README.source
+++ b/debian/README.source
@@ -4,7 +4,7 @@ Package Repositories
 Backports for the current stable debian distribution as well as snapshots of
 unreleased versions may be available in repositories listed on the maintainers
 homepage. The current URL of the maintainer homepage can be seen in
-debian/control.
+debian/copyright.
 
 
 Source Access
commit d71a39e6935216ec299ee1aee2303a1503409133
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Sep 5 09:26:41 2009 +0200

    Moving maintainer homepage field to copyright.

diff --git a/debian/control b/debian/control
index 08bb37c..aefd6c1 100644
--- a/debian/control
+++ b/debian/control
@@ -11,7 +11,6 @@ Standards-Version: 3.8.3
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
-XSBC-Maintainer-Homepage: http://tryton.debian-maintainers.org/
 
 Package: tryton-modules-account-invoice
 Architecture: all
diff --git a/debian/copyright b/debian/copyright
index fceabb1..0308b4e 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,5 +1,7 @@
-Author: Tryton Project <http://www.tryton.org/>
-Download: http://www.tryton.org/downloads.html
+Upstream-Contact: Tryton project <tryton at googlegroups.com>
+Upstream-Homepage: http://downloads.tryton.org/
+Maintainer-Contact: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
+Maintainer-Homepage: http://tryton.debian-maintainers.org/
 
 Files: *
 Copyright:
commit 2fbef9d23e336e1bed8f9a745a6c3a633095956e
Author: Daniel Baumann <daniel at debian.org>
Date:   Thu Sep 3 08:05:47 2009 +0200

    Merging upstream version 1.2.2.

diff --git a/CHANGELOG b/CHANGELOG
index 0f9bc23..2e64f03 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.2.2 - 2009-08-31
+* Some bug fixes (see mercurial logs for details)
+
 Version 1.2.1 - 2009-07-07
 * Some bug fixes (see mercurial logs for details)
 
diff --git a/INSTALL b/INSTALL
index 61f6b9c..c321e9a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -6,7 +6,7 @@ Prerequisites
 
  * Python 2.4 or later (http://www.python.org/)
  * egenix-mx-base (http://www.egenix.com/products/python/)
- * trytond 1.1.x (http://www.tryton.org/)
+ * trytond (http://www.tryton.org/)
  * trytond_account (http://www.tryton.org/)
  * trytond_company (http://www.tryton.org/)
  * trytond_party (http://www.tryton.org/)
diff --git a/PKG-INFO b/PKG-INFO
index 4aed3db..4f15c8e 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.2.1
+Version: 1.2.2
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
diff --git a/__tryton__.py b/__tryton__.py
index 598377d..4d61ba1 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
     'name_fr_FR': 'Facturation',
     'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
-    'version': '1.2.1',
+    'version': '1.2.2',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/invoice.py b/invoice.py
index c1dc25a..06f97c3 100644
--- a/invoice.py
+++ b/invoice.py
@@ -485,9 +485,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     continue
                 if line.second_currency.id == invoice.currency.id:
                     if line.debit - line.credit > Decimal('0.0'):
-                        amount_currency += line.amount_second_currency
+                        amount_currency += abs(line.amount_second_currency)
                     else:
-                        amount_currency -= line.amount_second_currency
+                        amount_currency -= abs(line.amount_second_currency)
                 else:
                     amount += line.debit - line.credit
             for line in invoice.payment_lines:
@@ -495,9 +495,9 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     continue
                 if line.second_currency.id == invoice.currency.id:
                     if line.debit - line.credit > Decimal('0.0'):
-                        amount_currency += line.amount_second_currency
+                        amount_currency += abs(line.amount_second_currency)
                     else:
-                        amount_currency -= line.amount_second_currency
+                        amount_currency -= abs(line.amount_second_currency)
                 else:
                     amount += line.debit - line.credit
             if invoice.type in ('in_invoice', 'out_credit_note'):
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 258b2a5..435701c 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.2.1
+Version: 1.2.2
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
commit 65a6dfb8767025704b4e8c1d72b48552986f7bdf
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Aug 25 08:18:18 2009 +0200

    Adding README.source.

diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..259f923
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,37 @@
+Package Repositories
+--------------------
+
+Backports for the current stable debian distribution as well as snapshots of
+unreleased versions may be available in repositories listed on the maintainers
+homepage. The current URL of the maintainer homepage can be seen in
+debian/control.
+
+
+Source Access
+-------------
+
+You can obtain the sources of this package with:
+
+  $ apt-get source ${PACKAGE}
+
+whereas '${PACKAGE}' has to be replaced with the actual name of the package.
+
+This package is maintained with the Git version control system. The current git
+source tree can be obtained with:
+
+  $ git clone ${GIT_URI}
+
+whereas '${GIT_URI}' has to be replaced with the actual URI for the Git
+repository. The current Git URI can be seen in debian/control in the extracted
+package sources.
+
+More information about Git can be found in the git-core package.
+
+This package may use the Quilt patch system to manage all modifications to the
+upstream source. Changes, if any, are stored in the source package as diffs in
+debian/diff and are applied during the build. Current modifications can be
+applied to the source tree with:
+
+  $ quilt push -a
+
+More information about Quilt can be found in the quilt package.
commit 5d96c01beb979aef0aefcfaeaef291a9d13d5afe
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Aug 24 17:49:51 2009 +0200

    Adding maintainer homepage field to control.

diff --git a/debian/control b/debian/control
index aefd6c1..08bb37c 100644
--- a/debian/control
+++ b/debian/control
@@ -11,6 +11,7 @@ Standards-Version: 3.8.3
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
+XSBC-Maintainer-Homepage: http://tryton.debian-maintainers.org/
 
 Package: tryton-modules-account-invoice
 Architecture: all
commit 317f9d715527b2670d085f156ed81133a46352f9
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Aug 16 10:12:50 2009 +0200

    Updating to standards version 3.8.3.

diff --git a/debian/control b/debian/control
index 88db8ef..aefd6c1 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
  Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
 Build-Depends:
  debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
-Standards-Version: 3.8.2
+Standards-Version: 3.8.3
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
commit 144e827179879b9888e2ec842de7fa12779b2275
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Aug 11 18:02:00 2009 +0200

    Releasing debian version 1.2.1-1.

diff --git a/debian/changelog b/debian/changelog
index 09c1615..2572ef0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-account-invoice (1.2.1-1) unstable; urgency=low
+
+  * Merging upstream version 1.2.1.
+
+ -- Daniel Baumann <daniel at debian.org>  Tue, 11 Aug 2009 18:01:50 +0200
+
 tryton-modules-account-invoice (1.2.0-3) unstable; urgency=low
 
   * Updating maintainer field.
commit eca7dc2d1f713f7f7ff47fbb2753bdeacf766c0e
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Aug 11 18:01:01 2009 +0200

    Merging upstream version 1.2.1.

diff --git a/CHANGELOG b/CHANGELOG
index 26f0840..0f9bc23 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.2.1 - 2009-07-07
+* Some bug fixes (see mercurial logs for details)
+
 Version 1.2.0 - 2009-04-20
 * Bug fixes (see mercurial logs for details)
 * Add accounting date on invoice
diff --git a/PKG-INFO b/PKG-INFO
index abdcce7..4aed3db 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.2.0
+Version: 1.2.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
diff --git a/__tryton__.py b/__tryton__.py
index 0f839cb..598377d 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
     'name_fr_FR': 'Facturation',
     'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
-    'version': '1.2.0',
+    'version': '1.2.1',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/invoice.py b/invoice.py
index 7a16a86..c1dc25a 100644
--- a/invoice.py
+++ b/invoice.py
@@ -344,6 +344,11 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                     else:
                         computed_taxes[key]['base'] += val['base']
                         computed_taxes[key]['amount'] += val['amount']
+        if currency:
+            for key in computed_taxes:
+                for field in ('base', 'amount'):
+                    computed_taxes[key][field] = currency_obj.round(cursor,
+                            user, currency, computed_taxes[key][field])
         tax_keys = []
         for tax in vals.get('taxes', []):
             if tax.get('manual', False):
@@ -684,6 +689,10 @@ class Invoice(ModelWorkflow, ModelSQL, ModelView):
                 else:
                     res[key]['base'] += val['base']
                     res[key]['amount'] += val['amount']
+        for key in res:
+            for field in ('base', 'amount'):
+                res[key][field] = currency_obj.round(cursor,
+                        user, invoice.currency, res[key][field])
         return res
 
     def update_taxes(self, cursor, user, ids, context=None, exception=False):
@@ -1659,7 +1668,7 @@ class InvoiceLine(ModelSQL, ModelView):
         '''
         for line in self.browse(cursor, user, ids, context=context):
             if line.invoice and \
-                    line.invoice.state in ('open', 'paid', 'cancel'):
+                    line.invoice.state in ('open', 'paid'):
                 self.raise_user_error(cursor, 'modify', context=context)
         return
 
@@ -1831,21 +1840,12 @@ class InvoiceTax(ModelSQL, ModelView):
     account = fields.Many2One('account.account', 'Account', required=True,
             domain="[('kind', '!=', 'view'), " \
                 "('company', '=', _parent_invoice.company)]")
-    base = fields.Numeric('Base', digits="(16, _parent_invoice.currency_digits)",
-            states={
-                'invisible': "manual",
-            })
+    base = fields.Numeric('Base', digits="(16, _parent_invoice.currency_digits)")
     amount = fields.Numeric('Amount', digits="(16, _parent_invoice.currency_digits)")
     manual = fields.Boolean('Manual')
     base_code = fields.Many2One('account.tax.code', 'Base Code',
-            domain="[('company', '=', _parent_invoice.company)]",
-            states={
-                'invisible': "manual",
-            })
-    base_sign = fields.Numeric('Base Sign', digits=(2, 0),
-            states={
-                'invisible': "manual",
-            })
+            domain="[('company', '=', _parent_invoice.company)]")
+    base_sign = fields.Numeric('Base Sign', digits=(2, 0))
     tax_code = fields.Many2One('account.tax.code', 'Tax Code',
             domain="[('company', '=', _parent_invoice.company)]")
     tax_sign = fields.Numeric('Tax Sign', digits=(2, 0))
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index e7f7828..258b2a5 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.2.0
+Version: 1.2.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
commit 3c23512b5f9e96663d0130d0aa67368c9bab9580
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Aug 10 19:49:12 2009 +0200

    Releasing debian version 1.2.0-3.

diff --git a/debian/changelog b/debian/changelog
index b002602..09c1615 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-account-invoice (1.2.0-3) unstable; urgency=low
+
+  * Updating maintainer field.
+  * Updating vcs fields.
+  * Wrapping lines in control.
+
+ -- Daniel Baumann <daniel at debian.org>  Mon, 10 Aug 2009 19:49:08 +0200
+
 tryton-modules-account-invoice (1.2.0-2) unstable; urgency=low
 
   * Minimizing rules file.
commit 71633a95375f47c6259340c60feffe34fdfc0be9
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Aug 10 19:49:05 2009 +0200

    Wrapping lines in control.

diff --git a/debian/control b/debian/control
index c2de289..88db8ef 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,9 @@ Source: tryton-modules-account-invoice
 Section: python
 Priority: optional
 Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
-Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
+Uploaders:
+ Daniel Baumann <daniel at debian.org>,
+ Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
 Build-Depends:
  debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
 Standards-Version: 3.8.2
commit 8e6e07214738bb9073a93f265dee295805d01643
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Aug 8 23:26:50 2009 +0200

    Updating vcs fields.

diff --git a/debian/control b/debian/control
index 4d62396..c2de289 100644
--- a/debian/control
+++ b/debian/control
@@ -7,8 +7,8 @@ Build-Depends:
  debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
 Standards-Version: 3.8.2
 Homepage: http://www.tryton.org/
-Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-account-invoice.git
-Vcs-Git: git://git.debian.net/git/debian/tryton-modules-account-invoice.git
+Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-account-invoice.git
+Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-account-invoice.git
 
 Package: tryton-modules-account-invoice
 Architecture: all
commit d0da6241d24564f7c638a190bd6624345688ccbb
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Aug 8 23:19:30 2009 +0200

    Updating maintainer field.

diff --git a/debian/control b/debian/control
index 3012b4f..4d62396 100644
--- a/debian/control
+++ b/debian/control
@@ -1,8 +1,8 @@
 Source: tryton-modules-account-invoice
 Section: python
 Priority: optional
-Maintainer: Daniel Baumann <daniel at debian.org>
-Uploaders: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
+Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
+Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
 Build-Depends:
  debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
 Standards-Version: 3.8.2
commit 9991c289ca1066f414889f00715d34e5c1880aac
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Jul 26 19:56:15 2009 +0200

    Releasing debian version 1.2.0-2.

diff --git a/debian/changelog b/debian/changelog
index 0a27a72..b002602 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-account-invoice (1.2.0-2) unstable; urgency=low
+
+  * Minimizing rules file.
+  * Updating standards version to 3.8.2.
+
+ -- Daniel Baumann <daniel at debian.org>  Sun, 26 Jul 2009 19:56:12 +0200
+
 tryton-modules-account-invoice (1.2.0-1) unstable; urgency=low
 
   [ Daniel Baumann ]
commit f3221fd59c191b729a784b100f386fc566076d20
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Jul 26 19:55:57 2009 +0200

    Updating standards version to 3.8.2.

diff --git a/debian/control b/debian/control
index 2ac1e38..3012b4f 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Maintainer: Daniel Baumann <daniel at debian.org>
 Uploaders: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
 Build-Depends:
  debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
-Standards-Version: 3.8.1
+Standards-Version: 3.8.2
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian.net/git/debian/tryton-modules-account-invoice.git
commit 81e2cfc8d59599c05a5a29d283ef9ec857c79d8a
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Jul 26 19:54:47 2009 +0200

    Minimizing rules file.

diff --git a/debian/rules b/debian/rules
index 9de6bfa..000210b 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,41 +1,4 @@
 #!/usr/bin/make -f
 
-clean:
-	dh_testdir
-	dh_testroot
-	rm -f build-stamp
-
-	python setup.py clean
-	rm -rf dist build trytond_account_invoice.egg-info
-
-	dh_clean
-
-build:
-
-install:
-	dh_testdir
-	dh_testroot
-	dh_prep
-
-	python setup.py install --single-version-externally-managed --root=$(CURDIR)/debian/tryton-modules-account-invoice --install-lib /usr/share/python-support/tryton-modules-account-invoice
-
-	find debian/tryton-modules-account-invoice -type f -name "*.pyc" | xargs rm -f
-
-binary: binary-indep
-
-binary-arch:
-
-binary-indep: install
-	dh_testdir
-	dh_testroot
-	dh_installchangelogs CHANGELOG
-	dh_installdocs
-	dh_pysupport
-	dh_compress
-	dh_fixperms
-	dh_installdeb
-	dh_gencontrol
-	dh_md5sums
-	dh_builddeb
-
-.PHONY: clean build install binary binary-arch binary-indep
+%:
+	dh ${@}
commit 34493a9d121851730a83f0b001e7587630e42145
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Apr 21 20:19:16 2009 +0200

    Releasing debian version 1.2.0-1.

diff --git a/debian/changelog b/debian/changelog
index 9484648..0a27a72 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,19 @@
+tryton-modules-account-invoice (1.2.0-1) unstable; urgency=low
+
+  [ Daniel Baumann ]
+  * Merging upstream version 1.2.0.
+  * Tidy rules file.
+  * Updating copyright file for new upstream release.
+  * Including TODO file in docs.
+
+  [ Mathias Behrle ]
+  * Updating application description.
+
+  [ Daniel Baumann ]
+  * Correcting wrapping of control file.
+
+ -- Daniel Baumann <daniel at debian.org>  Tue, 21 Apr 2009 20:19:00 +0200
+
 tryton-modules-account-invoice (1.0.3-2) unstable; urgency=low
 
   * Adding Mathias to uploaders.
commit 60544d483db89c801d641f8c2dbc9a1be22e2b8c
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Apr 21 20:18:54 2009 +0200

    Correcting wrapping of control file.

diff --git a/debian/control b/debian/control
index 6270b49..2ac1e38 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,8 @@ Section: python
 Priority: optional
 Maintainer: Daniel Baumann <daniel at debian.org>
 Uploaders: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
-Build-Depends: debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
+Build-Depends:
+ debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
 Standards-Version: 3.8.1
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-account-invoice.git
@@ -11,11 +12,16 @@ Vcs-Git: git://git.debian.net/git/debian/tryton-modules-account-invoice.git
 
 Package: tryton-modules-account-invoice
 Architecture: all
-Depends: ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-account, tryton-modules-account-product, tryton-modules-company, tryton-modules-currency, tryton-modules-party, tryton-modules-product, python-egenix-mxbeebase, python-pkg-resources
+Depends:
+ ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-account,
+ tryton-modules-account-product, tryton-modules-company,
+ tryton-modules-currency, tryton-modules-party, tryton-modules-product,
+ python-egenix-mxbeebase, python-pkg-resources
 XB-Python-Version: ${python:Versions}
 Description: Tryton Application Platform (Financial and Accounting Module)
  Tryton is a high-level general purpose application platform written in Python
- and using PostgreSQL as database engine. It is the core base of a complete business solution.
+ and using PostgreSQL as database engine. It is the core base of a complete
+ business solution.
  .
  This package contains the financial and accounting module with:
  .
commit 70f372738af6191d8f172ec4aa549fd5f5215667
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date:   Tue Apr 21 17:03:40 2009 +0200

    Updating application description.

diff --git a/debian/control b/debian/control
index a9a71f5..6270b49 100644
--- a/debian/control
+++ b/debian/control
@@ -15,7 +15,7 @@ Depends: ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-accou
 XB-Python-Version: ${python:Versions}
 Description: Tryton Application Platform (Financial and Accounting Module)
  Tryton is a high-level general purpose application platform written in Python
- and using PostgreSQL as database engine. It is the core base of an ERP.
+ and using PostgreSQL as database engine. It is the core base of a complete business solution.
  .
  This package contains the financial and accounting module with:
  .
commit 035a0c69284b2c0df8f68c8257eb89fb5729c996
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Apr 21 11:53:25 2009 +0200

    Including TODO file in docs.

diff --git a/debian/tryton-modules-account-invoice.docs b/debian/tryton-modules-account-invoice.docs
new file mode 100644
index 0000000..1333ed7
--- /dev/null
+++ b/debian/tryton-modules-account-invoice.docs
@@ -0,0 +1 @@
+TODO
commit 826512bbc716527608abb8654d5ef8c0eef95d6b
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Apr 21 11:38:00 2009 +0200

    Updating copyright file for new upstream release.

diff --git a/debian/copyright b/debian/copyright
index 0088eff..fceabb1 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -4,9 +4,9 @@ Download: http://www.tryton.org/downloads.html
 Files: *
 Copyright:
  (C) 2004-2008 Tiny SPRL
- (C) 2008 Cedric Krier
- (C) 2008 Bertrand Chenal
- (C) 2008 B2CK SPRL
+ (C) 2008-2009 Cédric Krier
+ (C) 2008-2009 Bertrand Chenal
+ (C) 2008-2009 B2CK SPRL
 License: GPL-3+
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
commit 9d54eff3f6e3dd3a5aa8b30e0631b72f2ab1e9ff
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Apr 21 11:35:42 2009 +0200

    Tidy rules file.

diff --git a/debian/rules b/debian/rules
index 73ee354..9de6bfa 100755
--- a/debian/rules
+++ b/debian/rules
@@ -16,7 +16,6 @@ install:
 	dh_testdir
 	dh_testroot
 	dh_prep
-	dh_installdirs
 
 	python setup.py install --single-version-externally-managed --root=$(CURDIR)/debian/tryton-modules-account-invoice --install-lib /usr/share/python-support/tryton-modules-account-invoice
 
commit 8b236abc11c9579b3b670fa1cb343393cacbaeaf
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Apr 21 11:13:44 2009 +0200

    Merging upstream version 1.2.0.

diff --git a/CHANGELOG b/CHANGELOG
index ba45f76..26f0840 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,11 +1,9 @@
-Version 1.0.3 - 2009-03-02
-* Some bug fixes (see mercurial logs for details)
+Version 1.2.0 - 2009-04-20
+* Bug fixes (see mercurial logs for details)
+* Add accounting date on invoice
 * Use amount_to_pay if amount_to_pay_today is zero in pay invoice wizard
-
-Version 1.0.2 - 2009-01-06
-* Some bug fixes (see mercurial logs for details)
-
-Version 1.0.1 - 2008-12-01
+* Use reference to taxes for invoice line in invoice report
+* Add mechanism for invoice line standalone
 * Allow egg installation
 
 Version 1.0.0 - 2008-11-17
diff --git a/INSTALL b/INSTALL
index 099d4fb..61f6b9c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -6,7 +6,7 @@ Prerequisites
 
  * Python 2.4 or later (http://www.python.org/)
  * egenix-mx-base (http://www.egenix.com/products/python/)
- * trytond 0.0.x (http://www.tryton.org/)
+ * trytond 1.1.x (http://www.tryton.org/)
  * trytond_account (http://www.tryton.org/)
  * trytond_company (http://www.tryton.org/)
  * trytond_party (http://www.tryton.org/)
@@ -17,7 +17,7 @@ Prerequisites
 Installation
 ------------
 
-Once you've downloaded and unpacked a trytond_account_invoice source release, enter the
+Once you've downloaded and unpacked the trytond_account_invoice source release, enter the
 directory where the archive was unpacked, and run:
 
     python setup.py install
diff --git a/PKG-INFO b/PKG-INFO
index 0427933..abdcce7 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.0.3
+Version: 1.2.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.0/
+Download-URL: http://downloads.tryton.org/1.2/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..66ce446
--- /dev/null
+++ b/TODO
@@ -0,0 +1,2 @@
+- Add a reference field on the invoice to provide links to other
+  models (e.g. sale, purchase)
\ No newline at end of file
diff --git a/__init__.py b/__init__.py
index d415f1d..87e60c6 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,4 +1,7 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 
+from payment_term import *
 from invoice import *
+from party import *
+from account import *
diff --git a/__tryton__.py b/__tryton__.py
index f9e9a79..0f839cb 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -2,10 +2,11 @@
 #this repository contains the full copyright notices and license terms.
 {
     'name': 'Account Invoice',
-    'name_de_DE': 'Buchhaltung Rechnungsstellung',
+    'name_de_DE': 'Fakturierung',
     'name_fr_FR': 'Facturation',
+    'name_es_CO': 'Facturación',
     'name_es_ES': 'Facturación',
-    'version': '1.0.3',
+    'version': '1.2.0',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
@@ -19,7 +20,7 @@ With the possibilities:
     - to define invoice sequences on fiscal year or period.
     - to credit any invoice.
 ''',
-    'description_de_DE': '''Modul für Buchhaltung und Rechnungsstellung mit:
+    'description_de_DE': '''Modul für Buchhaltung und Fakturierung mit:
     - Definition von Zahlungsbedingungen
     - Erstellung von Rechnungen und Gutschriften für Kunden
     - Erstellung von Rechnungen und Gutschriften für Lieferanten
@@ -39,6 +40,16 @@ Avec la possibilité:
     - de définir les numérotations de facture par période ou par année fiscale
     - de créditer n'importe quelle facture
 ''',
+    'description_es_CO': '''Módulo Financiero y de Contabilidad con:
+    - Términos de Pago
+    - Notas de Facturación / Crédito
+    - Factura de Proveedores / Nota de Crédito de Proveedores
+
+Con las posibilidades de:
+    - hacer seguimiento al pago de facturas.
+    - definir secuencias de facturas en año o período fiscal.
+    - acreditar una factura.
+''',
     'description_es_ES': '''Módulo Financiero y de Contabilidad con:
     - Términos de Pago
     - Notas de Facturación / Crédito
@@ -62,10 +73,14 @@ Con las posibilidades de:
     ],
     'xml': [
         'invoice.xml',
+        'payment_term.xml',
+        'party.xml',
+        'account.xml',
     ],
     'translation': [
         'fr_FR.csv',
         'de_DE.csv',
+        'es_CO.csv',
         'es_ES.csv',
     ]
 }
diff --git a/account.py b/account.py
new file mode 100644
index 0000000..bebea80
--- /dev/null
+++ b/account.py
@@ -0,0 +1,181 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from trytond.model import ModelView, ModelSQL, fields
+
+
+class FiscalYear(ModelSQL, ModelView):
+    _name = 'account.fiscalyear'
+    out_invoice_sequence = fields.Many2One('ir.sequence.strict',
+            'Customer Invoice Sequence', required=True,
+            domain="[('code', '=', 'account.invoice')," \
+                    "['OR', ('company', '=', company)," \
+                    "('company', '=', False)]]",
+                    context="{'code': 'account.invoice', 'company': company}")
+    in_invoice_sequence = fields.Many2One('ir.sequence.strict',
+            'Supplier Invoice Sequence', required=True,
+            domain="[('code', '=', 'account.invoice')," \
+                    "['OR', ('company', '=', company)," \
+                    "('company', '=', False)]]",
+                    context="{'code': 'account.invoice', 'company': company}")
+    out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
+            'Customer Credit Note Sequence', required=True,
+            domain="[('code', '=', 'account.invoice')," \
+                    "['OR', ('company', '=', company)," \
+                    "('company', '=', False)]]",
+                    context="{'code': 'account.invoice', 'company': company}")
+    in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
+            'Supplier Credit Note Sequence', required=True,
+            domain="[('code', '=', 'account.invoice')," \
+                    "['OR', ('company', '=', company)," \
+                    "('company', '=', False)]]",
+                    context="{'code': 'account.invoice', 'company': company}")
+
+    def __init__(self):
+        super(FiscalYear, self).__init__()
+        self._constraints += [
+            ('check_invoice_sequences', 'different_invoice_sequence'),
+        ]
+        self._error_messages.update({
+            'change_invoice_sequence': 'You can not change ' \
+                    'the invoice sequence if there is already ' \
+                    'an invoice opened in the fiscalyear',
+            'different_invoice_sequence': 'You must have different ' \
+                    'invoice sequences per fiscal year!',
+            })
+
+    def check_invoice_sequences(self, cursor, user, ids):
+        for fiscalyear in self.browse(cursor, user, ids):
+            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                    'out_credit_note_sequence', 'in_credit_note_sequence'):
+                if self.search(cursor, user, [
+                    (sequence, '=', fiscalyear[sequence].id),
+                    ('id', '!=', fiscalyear.id),
+                    ]):
+                    return False
+        return True
+
+    def write(self, cursor, user, ids, vals, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+        for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                'out_credit_note_sequence', 'in_credit_note_sequence'):
+            if vals.get(sequence):
+                for fiscalyear in self.browse(cursor, user, ids,
+                        context=context):
+                    if fiscalyear[sequence] and \
+                            fiscalyear[sequence].id != \
+                            vals[sequence]:
+                        if invoice_obj.search(cursor, user, [
+                            ('invoice_date', '>=', fiscalyear.start_date),
+                            ('invoice_date', '<=', fiscalyear.end_date),
+                            ('number', '!=', False),
+                            ('type', '=', sequence[:-9]),
+                            ], context=context):
+                            self.raise_user_error(cursor,
+                                    'change_invoice_sequence', context=context)
+        return super(FiscalYear, self).write(cursor, user, ids, vals,
+                context=context)
+
+FiscalYear()
+
+
+class Period(ModelSQL, ModelView):
+    _name = 'account.period'
+    out_invoice_sequence = fields.Many2One('ir.sequence.strict',
+            'Customer Invoice Sequence',
+            domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice'}",
+            states={
+                'required': "type == 'standard'",
+                'invisible': "type != 'standard'",
+            })
+    in_invoice_sequence = fields.Many2One('ir.sequence.strict',
+            'Supplier Invoice Sequence',
+            domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice'}",
+            states={
+                'required': "type == 'standard'",
+                'invisible': "type != 'standard'",
+            })
+    out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
+            'Customer Credit Note Sequence',
+            domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice'}",
+            states={
+                'required': "type == 'standard'",
+                'invisible': "type != 'standard'",
+            })
+    in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
+            'Supplier Credit Note Sequence',
+            domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice'}",
+            states={
+                'required': "type == 'standard'",
+                'invisible': "type != 'standard'",
+            })
+
+    def __init__(self):
+        super(Period, self).__init__()
+        self._constraints += [
+            ('check_invoice_sequences', 'check_invoice_sequences'),
+        ]
+        self._error_messages.update({
+            'change_invoice_sequence': 'You can not change ' \
+                    'the invoice sequence if there is already ' \
+                    'an invoice opened in the period',
+            'check_invoice_sequences': 'You must have different ' \
+                    'invoice sequences per fiscal year and ' \
+                    'in the same company!',
+            })
+
+    def check_invoice_sequences(self, cursor, user, ids):
+        for period in self.browse(cursor, user, ids):
+            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                    'out_credit_note_sequence', 'in_credit_note_sequence'):
+                if self.search(cursor, user, [
+                    (sequence, '=', period[sequence].id),
+                    ('fiscalyear', '!=', period.fiscalyear.id),
+                    ]):
+                    return False
+                if period[sequence].company \
+                        and period[sequence].company.id != \
+                        period.fiscalyear.company.id:
+                    return False
+        return True
+
+    def create(self, cursor, user, vals, context=None):
+        fiscalyear_obj = self.pool.get('account.fiscalyear')
+        vals = vals.copy()
+        if vals.get('fiscalyear'):
+            fiscalyear = fiscalyear_obj.browse(cursor, user, vals['fiscalyear'],
+                    context=context)
+            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                    'out_credit_note_sequence', 'in_credit_note_sequence'):
+                if not vals.get(sequence):
+                    vals[sequence] = fiscalyear[sequence].id
+        return super(Period, self).create(cursor, user, vals, context=context)
+
+    def write(self, cursor, user, ids, vals, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+
+        for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                'out_credit_note_sequence', 'in_credit_note_sequence'):
+            if vals.get(sequence):
+                for period in self.browse(cursor, user, ids, context=context):
+                    if period[sequence] and \
+                            period[sequence].id != \
+                            vals[sequence]:
+                        if invoice_obj.search(cursor, user, [
+                            ('date', '>=', period.start_date),
+                            ('date', '<=', period.end_date),
+                            ('number', '!=', False),
+                            ('type', '=', sequence[:-9]),
+                            ], context=context):
+                            self.raise_user_error(cursor,
+                                    'change_invoice_sequence', context=context)
+        return super(Period, self).write(cursor, user, ids, vals,
+                context=context)
+
+Period()
diff --git a/account.xml b/account.xml
new file mode 100644
index 0000000..275c1b2
--- /dev/null
+++ b/account.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tryton>
+    <data>
+        <record model="ir.ui.view" id="fiscalyear_view_form">
+            <field name="model">account.fiscalyear</field>
+            <field name="inherit" ref="account.fiscalyear_view_form"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/form/notebook/page[@id="sequences"]/field[@name="post_move_sequence"]"
+                        position="after">
+                        <newline/>
+                        <label name="out_invoice_sequence"/>
+                        <field name="out_invoice_sequence"/>
+                        <label name="in_invoice_sequence"/>
+                        <field name="in_invoice_sequence"/>
+                        <label name="out_credit_note_sequence"/>
+                        <field name="out_credit_note_sequence"/>
+                        <label name="in_credit_note_sequence"/>
+                        <field name="in_credit_note_sequence"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="period_view_form">
+            <field name="model">account.period</field>
+            <field name="inherit" ref="account.period_view_form"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/form/field[@name="post_move_sequence"]"
+                        position="after">
+                        <newline/>
+                        <label name="out_invoice_sequence"/>
+                        <field name="out_invoice_sequence"/>
+                        <label name="in_invoice_sequence"/>
+                        <field name="in_invoice_sequence"/>
+                        <label name="out_credit_note_sequence"/>
+                        <field name="out_credit_note_sequence"/>
+                        <label name="in_credit_note_sequence"/>
+                        <field name="in_credit_note_sequence"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+    </data>
+</tryton>
diff --git a/de_DE.csv b/de_DE.csv
index c2d9b6f..dc58aed 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -1,49 +1,59 @@
 type,name,res_id,src,value,fuzzy
 error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,"Sie können die Rechnungsnummern-Sequenz nicht ändern, wenn bereits eine Rechnung im laufenden Buchungsjahr eröffnet wurde.",0
-error,account.fiscalyear,0,You must have different invoice sequence per fiscal year!,Verschiedene Geschäftsjahre erfordern unterschiedliche Rechnungssequenzen!,0
+error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Für unterschiedliche Geschäftsjahre müssen jeweils eigene Rechnungssequenzen erstellt werden!,0
 error,account.invoice,0,"Base taxes different from invoice lines!
 Re-compute the invoice.",Steuern stimmen nicht mit den Rechnungspositionen überein!,0
-error,account.invoice,0,Credit account on journal is the same than the invoice account!,Haben-Konto im Journal und Rechnungskonto sind identisch!,0
-error,account.invoice,0,Debit account on journal is the same than the invoice account!,Soll-Konto im Journal und Rechnungskonto sind identisch!,0
-error,account.invoice,0,"Taxes defined but not in invoice lines!
-Re-compute the invoice.","Steuern sind definiert, allerdings nicht in den Rechnungspositionen!
-",0
+error,account.invoice,0,"Taxes defined but not on invoice lines!
+Re-compute the invoice.","Es sind Steuern definiert, allerdings nicht in den Rechnungspositionen!
+Bitte lassen Sie die Rechnung erneut berechnen.",0
 error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
 Re-compute the invoice.","Steuern sind für die Rechnungspositionen definiert, allerdings nicht für die Rechnung selbst!
 ",0
 error,account.invoice,0,The credit account on journal is missing!,Haben-Konto im Journal fehlt!,0
+error,account.invoice,0,The credit account on journal is the same than the invoice account!,Das Habenkonto des Journals ist das selbe wie das Rechnungskonto!,0
 error,account.invoice,0,The debit account on journal is missing!,Soll-Konto im Journal fehlt,0
+error,account.invoice,0,The debit account on journal is the same than the invoice account!,Das Sollkonto des Journals ist das selbe wie das Rechnungskonto!,0
 error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Rechnungsnummern-Sequenz für diese Periode oder dieses Buchungsjahr fehlt!,0
 error,account.invoice,0,"You can not create an invoice
 with account from a different invoice company!",Es können keine Rechnungen mit einem Konto von einer anderen rechnungsstellenden Firma angelegt werden,0
-error,account.invoice,0,"You can not modify invoice that is open, paid or canceled!","Rechnungen die offen, bezahlt oder abgebrochen wurden können nicht verändert werden!",0
-error,account.invoice,0,You can not reset to draft an invoice that have move!,"Rechnungen die bereits gebucht sind, können nicht auf Vorlage zurückgesetzt werden!",0
+error,account.invoice,0,"You can not modify an invoice that is open, paid or canceled!","Fakturierte, Bezahlte oder Annulierte Rechnungen können nicht geändert werden!",0
+error,account.invoice,0,You can not reset to draft an invoice that has move!,"Eine Rechnung, die Buchungen enthält, kann nicht auf Entwurf zurückgesetzt werden!",0
 error,account.invoice,0,"You can not use the same account
-than on invoice line account!",Es darf nicht das selbe Konto benutzt werden wie in den Rechnungspositionen,0
-error,account.invoice.line,0,Line type must have an account!,Typ der Position muss einem Konto zugeordnet werden!,0
-error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status: Offen, Bezahlt oder Abgebrochen kann keine neue Position hinzugefügt werden",0
+as on invoice line!",Es kann nicht das selbe Konto verwendet werden!,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Die Verrechnung von nicht fakturierten Rechnungen ist nicht möglich!,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,"Die Verrechnung einer Rechnung ist nicht möglich, wenn bereits Zahlungen für diese gebucht sind!",0
+error,account.invoice.line,0,"Line with ""line"" type must have an account!","Eine Zeile vom Typ ""Position"" muss einem Konto zugeordnet sein!",0
+error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","Eine Zeile, die nicht vom Typ ""Position"" ist, muss einer Rechnung zugeordnet sein!",0
+error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine neue Position hinzugefügt werden!",0
 error,account.invoice.line,0,"You can not create invoice line
-with account from a different invoice company!",Rechnungszeile kann nicht erstellt werden: das Konto ist einer anderen rechnungsstellenden Firma zugeordnet,0
-error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","In einer Rechnung mit dem Status: Offen, Bezahlt oder Abgebrochen kann können Positionen nicht bearbeitet werden",0
+with account with a different invoice company!","Eine Rechnungszeile kann sich nicht
+auf ein Konto eines anderen Unternehmens beziehen!",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","In einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert können Positionen nicht bearbeitet werden!",0
 error,account.invoice.line,0,"You can not use the same account
-than the invoice account!",Es darf nicht das selbe Konto benutzt werden wie das Rechnungskonto!,0
+as on the invoice!",Es kann nicht das selbe Konto verwendet werden!,0
+error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,Ein Teilbetrag kann nicht größer als der Gesamtbetrag der Rechnung sein!,0
 error,account.invoice.payment_term,0,Invalid payment term line!,Ungültige Position in Zahlungsbedingung!,0
 error,account.invoice.payment_term,0,Payment term missing a remainder line!,In der Zahlungsbedingung fehlt eine Restbetragszeile!,0
-error,account.invoice.payment_term.line.delay,0,Code must be unique!,Der Code kann nicht mehrfach vergeben werden!,0
-error,account.invoice.payment_term.line.type,0,Code must be unique!,Der Code kann nicht mehrfach vergeben werden!,0
-error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status: Offen, Bezahlt oder Abgebrochen kann keine neue Position hinzugefügt werden",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","In einer Rechnung mit dem Status: Offen, Bezahlt oder Abgebrochen kann können Steuern nicht bearbeitet werden",0
+error,account.invoice.payment_term.line.delay,0,The code must be unique!,Code kann nicht mehrfach vergeben werden!,0
+error,account.invoice.payment_term.line.type,0,The code must be unique!,Code kann nicht mehrfach vergeben werden!,0
+error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status Fakturiert, Bezahlt oder Annulliert kann keine neue Position hinzugefügt werden!",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","In Rechnungen mit dem Status Fakturiert, Bezahlt oder Annulliert können Steuern nicht bearbeitet werden!",0
 error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,"Sie können die Rechnungsnummern-Sequenz nicht ändern, wenn bereits eine Rechnung in der laufenden Periode eröffnet wurde.",0
+error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Verschiedene Geschäftsjahre eines Unternehmens erfordern unterschiedliche Rechnungssequenzen!,0
 field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Sequenz Gutschriften Lieferanten,0
 field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Sequenz Rechnungen Lieferanten,0
 field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Sequenz Gutschriften Kunden,0
 field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Sequenz Rechnungen Kunden,0
 field,"account.invoice,account",0,Account,Konto,0
+field,"account.invoice,accounting_date",0,Accounting Date,Buchungsdatum,0
+field,"account.invoice-account.move.line,invoice",0,Invoice,Rechnung,0
+field,"account.invoice-account.move.line,line",0,Payment Line,Zahlungsposition,0
+field,"account.invoice-account.move.line,rec_name",0,Name,Name,0
 field,"account.invoice,amount_to_pay",0,Amount to Pay,Zahlbarer Betrag,0
 field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Zahlbarer Betrag (heute),0
 field,"account.invoice,comment",0,Comment,Kommentar,0
 field,"account.invoice,company",0,Company,Unternehmen,0
-field,"account.invoice,contact_address",0,Contact Address,Kontaktadresse,0
+field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Verrechnung,0
 field,"account.invoice,currency",0,Currency,Währung,0
 field,"account.invoice,currency_digits",0,Currency Digits,Währung (signifikante Stellen),0
 field,"account.invoice,description",0,Description,Beschreibung,0
@@ -53,11 +63,22 @@ field,"account.invoice,invoice_report",0,Invoice Report,Rechnungsbericht,0
 field,"account.invoice,invoice_report_format",0,Invoice Report Format,Format Rechnungsbericht,0
 field,"account.invoice,journal",0,Journal,Journal,0
 field,"account.invoice.line,account",0,Account,Konto,0
+field,"account.invoice.line-account.tax,line",0,Invoice Line,Rechnungsposition,0
+field,"account.invoice.line-account.tax,rec_name",0,Name,Name,0
+field,"account.invoice.line-account.tax,tax",0,Tax,Steuer,0
 field,"account.invoice.line,amount",0,Amount,Betrag,0
+field,"account.invoice.line,company",0,Company,Unternehmen,0
+field,"account.invoice.line,currency",0,Currency,Währung,0
+field,"account.invoice.line,currency_digits",0,Currency Digits,Stellen Währung,0
 field,"account.invoice.line,description",0,Description,Bezeichnung,0
 field,"account.invoice.line,invoice",0,Invoice,Rechnung,0
+field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Steuern Rechnung,0
+field,"account.invoice.line,invoice_type",0,Invoice Type,Rechnungstyp,0
+field,"account.invoice.line,note",0,Note,Notiz,0
+field,"account.invoice.line,party",0,Party,Partei,0
 field,"account.invoice.line,product",0,Product,Artikel,0
-field,"account.invoice.line,quantity",0,Quantity,Menge,0
+field,"account.invoice.line,quantity",0,Quantity,Anzahl,0
+field,"account.invoice.line,rec_name",0,Name,Name,0
 field,"account.invoice,lines",0,Lines,Positionen,0
 field,"account.invoice.line,sequence",0,Sequence,Sequenz,0
 field,"account.invoice,lines_to_pay",0,Lines to Pay,Zahlbare Positionen,0
@@ -69,18 +90,24 @@ field,"account.invoice.line,unit_price",0,Unit Price,Einzelpreis,0
 field,"account.invoice,move",0,Move,Buchung,0
 field,"account.invoice,number",0,Number,Nummer,0
 field,"account.invoice,party",0,Party,Partei,0
+field,"account.invoice,party_lang",0,Party Language,Sprache Partei,0
 field,"account.invoice.pay_invoice.ask,account",0,Account,Konto,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Account,Konto,0
-field,"account.invoice.pay_invoice.ask,amount",0,Amount,Betrag,0
+field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Konto Ausbuchung,0
+field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Betrag,0
+field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Betrag Ausbuchung,0
 field,"account.invoice.pay_invoice.ask,company",0,Company,Unternehmen,0
-field,"account.invoice.pay_invoice.ask,currency",0,Currency,Währung,0
-field,"account.invoice.pay_invoice.ask,currency_digits",0,Currency Digits,Stellen Währung,0
+field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Währung,0
+field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Stellen Währung,0
+field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Stellen Währung Ausbuchung,0
+field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Währung Ausbuchung,0
 field,"account.invoice.pay_invoice.ask,date",0,Date,Datum,0
 field,"account.invoice.pay_invoice.ask,description",0,Description,Beschreibung,0
+field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Rechnung,0
 field,"account.invoice.pay_invoice.ask,journal",0,Journal,Journal,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Journal,Journal,0
+field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Journal Ausbuchung,0
 field,"account.invoice.pay_invoice.ask,lines",0,Lines,Positionen,0
 field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Zahlbare Positionen,0
+field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Zahlungspositionen,0
 field,"account.invoice.pay_invoice.ask,type",0,Type,Typ,0
 field,"account.invoice.pay_invoice.init,amount",0,Amount,Betrag,0
 field,"account.invoice.pay_invoice.init,currency",0,Currency,Währung,0
@@ -99,14 +126,19 @@ field,"account.invoice.payment_term.line,days",0,Number of Days,Anzahl an Tagen,
 field,"account.invoice.payment_term.line,delay",0,Condition,Bedingung,0
 field,"account.invoice.payment_term.line.delay,code",0,Code,Kundennummer,0
 field,"account.invoice.payment_term.line.delay,name",0,Name,Name,0
+field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Name,0
 field,"account.invoice.payment_term.line,payment",0,Payment Term,Zahlungsbedingung,0
-field,"account.invoice.payment_term.line,percent",0,Percent,Prozent,0
+field,"account.invoice.payment_term.line,percentage",0,Percentage,Prozentsatz,0
+field,"account.invoice.payment_term.line,rec_name",0,Name,Name,0
 field,"account.invoice.payment_term,lines",0,Lines,Positionen,0
 field,"account.invoice.payment_term.line,sequence",0,Sequence,Sequenz,0
 field,"account.invoice.payment_term.line,type",0,Type,Typ,0
 field,"account.invoice.payment_term.line.type,code",0,Code,Kundennummer,0
 field,"account.invoice.payment_term.line.type,name",0,Name,Name,0
+field,"account.invoice.payment_term.line.type,rec_name",0,Name,Name,0
 field,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
+field,"account.invoice.payment_term,rec_name",0,Name,Name,0
+field,"account.invoice,rec_name",0,Name,Name,0
 field,"account.invoice,reconciled",0,Reconciled,Abgestimmt,0
 field,"account.invoice,reference",0,Reference,Referenz,0
 field,"account.invoice,state",0,State,Status,0
@@ -120,7 +152,10 @@ field,"account.invoice.tax,description",0,Description,Beschreibung,0
 field,"account.invoice,taxes",0,Tax Lines,Steuerpositionen,0
 field,"account.invoice.tax,invoice",0,Invoice,Rechnung,0
 field,"account.invoice.tax,manual",0,Manual,Manuell,0
+field,"account.invoice.tax,rec_name",0,Name,Name,0
 field,"account.invoice.tax,sequence",0,Sequence,Sequenz,0
+field,"account.invoice.tax,sequence_number",0,Sequence Number,Nummer Sequenz,0
+field,"account.invoice.tax,tax",0,Tax,Steuer,0
 field,"account.invoice.tax,tax_code",0,Tax Code,Steuerkennziffer,0
 field,"account.invoice.tax,tax_sign",0,Tax Sign,Vorzeichen (Steuer),0
 field,"account.invoice,total_amount",0,Total,Brutto,0
@@ -134,78 +169,142 @@ field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Sequenz
 field,"party.address,invoice",0,Invoice,Rechnungsadresse,0
 field,"party.party,payment_term",0,Invoice Payment Term,Zahlungsbedingung Verkauf,0
 field,"party.party,supplier_payment_term",0,Supplier Payment Term,Zahlungsbedingung Einkauf,0
+help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.",Bei Aktivierung werden die aktuelle(n ) Rechnung(en) und Gutschrift(en) bezahlt und abgestimmt.,0
+help,"account.invoice.payment_term.line,percentage",0,In %,Eingabe in %,0
 help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Ordnet Positionen in aufsteigender Reihenfolge,0
+model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Rechnung - Zahlungsposition,0
+model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Gutschrift Init,0
+model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Rechnungsposition - Steuer,0
+model,"account.invoice.line,name",0,Invoice Line,Rechnungsposition,0
+model,"account.invoice,name",0,Invoice,Rechnung,0
+model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Zahlung Rechnung Nachfrage,0
+model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Zahlung Rechnung Init,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Ende Monat,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Netto Tage,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Tage netto,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Zahlungsbedingung Position Frist,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Zahlungsbedingung,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fix,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percent,Prozent,0
+model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Zahlungsbedingung Position Typ,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Prozentsatz,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Rest,0
+model,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
+model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Druck Rechnung Warnung,0
+model,"account.invoice.tax,name",0,Invoice Tax,Rechnung Steuer,0
 model,"ir.action,name",act_invoice_form,All Invoices,Alle Rechnungen,0
 model,"ir.action,name",credit_invoice,Credit,Gutschrift erstellen,0
 model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Gutschriften an Kunden,0
-model,"ir.action,name",report_invoice,Invoice,Rechnung drucken,0
-model,"ir.action,name",print_invoice_report,Invoice,Rechnung drucken,0
+model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Gutschriften,0
+model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Entwürfe Kundengutschriften,0
+model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Entwürfe Kundenrechnungen,0
+model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Entwürfe Lieferantengutschriften,0
+model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Entwürfe Lieferantenrechnungen,0
+model,"ir.action,name",report_invoice,Invoice,Rechnung,0
+model,"ir.action,name",print_invoice_report,Invoice,Rechnung / Gutschrift drucken,0
 model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
+model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Kundenrechnungen,0
+model,"ir.action,name",act_invoice_form2,Invoices,Rechnungen,0
+model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Fakturierte Kundengutschriften,0
+model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Fakturierte Kundenrechnungen,0
+model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Fakturierte Lieferantengutschriften,0
+model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Fakturierte Lieferantenrechnungen,0
 model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Rechnung bezahlen,0
 model,"ir.action,name",act_payment_term_form,Payment Terms,Zahlungsbedingungen,0
+model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro Forma Kundengutschriften,0
+model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Pro Forma Kundenrechnungen,0
+model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro Forma Lieferantengutschriften,0
+model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro Forma Lieferantenrechnungen,0
 model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
+model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Gutschriften von Lieferanten,0
 model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
+model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Lieferantenrechnungen,0
 model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Rechnung,0
 model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Alle Rechnungen,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Gutschriften an Kunden,0
-model,"ir.ui.menu,name",menu_invoices_configuration,Invoices,Rechnungen,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Entwürfe Kundengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Entwürfe Kundenrechnungen,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Entwürfe Lieferantengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Entwürfe Lieferantenrechnungen,0
 model,"ir.ui.menu,name",menu_invoices,Invoices,Rechnungen,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Neue Gutschrift an Kunden,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Neue Kundenrechnung,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Neue Gutschrift von Lieferant,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Neue Lieferantenrechnung,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Fakturierte Kundengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Fakturierte Kundenrechnungen,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Fakturierte Lieferantengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Fakturierte Lieferantenrechnungen,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Zahlungsbedingungen,0
 model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Zahlungsbedingungen,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Pro Forma Kundengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Pro Forma Kundenrechnungen,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Pro Forma Lieferantengutschriften,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Pro Forma Lieferantenrechnungen,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
-model,"workflow.activity,name",invoice_activity_cancel,Cancel,Abbrechen,0
+model,"workflow.activity,name",invoice_activity_cancel,Canceled,Annulliert,0
 model,"workflow.activity,name",invoice_activity_draft,Draft,Entwurf,0
-model,"workflow.activity,name",invoice_activity_open,Open,Öffnen,0
+model,"workflow.activity,name",invoice_activity_open,Open,Fakturieren,0
 model,"workflow.activity,name",invoice_activity_paid,Paid,Bezahlt,0
 model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro Forma,0
 model,"workflow,name",invoice_workflow,Invoice workflow,Workflow Rechnung,0
 odt,account.invoice,0,Amount,Betrag,0
 odt,account.invoice,0,Base,Netto,0
-odt,account.invoice,0,Date,Datum,0
+odt,account.invoice,0,Credit Note N°:,Gutschrift Nr.:,0
+odt,account.invoice,0,Date,Fällig am,0
 odt,account.invoice,0,Date:,Datum:,0
 odt,account.invoice,0,Description,Beschreibung,0
 odt,account.invoice,0,Description:,Beschreibung:,0
+odt,account.invoice,0,Draft Credit Note,Gutschrift (Entwurf),0
+odt,account.invoice,0,Draft Invoice,Rechnung (Entwurf),0
+odt,account.invoice,0,Draft Supplier Credit Note,Gutschrift (Entwurf),0
+odt,account.invoice,0,Draft Supplier Invoice,Rechnung (Entwurf),0
 odt,account.invoice,0,E-Mail:,E-Mail:,0
+odt,account.invoice,0,Invoice N°:,Rechnung Nr.:,0
 odt,account.invoice,0,Payment Term,Zahlungsbedingung,0
 odt,account.invoice,0,Phone:,Telefon:,0
-odt,account.invoice,0,Quantity,Menge,0
+odt,account.invoice,0,Pro forma Credit Note,Gutschrift Pro Forma,0
+odt,account.invoice,0,Pro forma Invoice,Rechnung Pro Forma,0
+odt,account.invoice,0,Pro forma Supplier Credit Note,Gutschrift Pro Forma,0
+odt,account.invoice,0,Pro forma Supplier Invoice,Rechnung Pro Forma,0
+odt,account.invoice,0,Quantity,Anzahl,0
+odt,account.invoice,0,Supplier Credit Note N°:,Gutschrift Nr.:,0
+odt,account.invoice,0,Supplier Invoice N°:,Rechnung Nr.:,0
 odt,account.invoice,0,Tax,Steuer,0
 odt,account.invoice,0,Taxes,Steuern,0
 odt,account.invoice,0,Taxes:,Steuern:,0
 odt,account.invoice,0,Total:,Gesamt:,0
 odt,account.invoice,0,Total (excl. taxes):,Netto:,0
 odt,account.invoice,0,Unit Price,Einzelpreis,0
-odt,account.invoice,0,VAT:,UST-ID:,0
+odt,account.invoice,0,VAT:,USt-ID-Nr:,0
+selection,"account.invoice.line,invoice_type",0,Credit Note,Kundengutschrift,0
+selection,"account.invoice.line,invoice_type",0,Invoice,Lieferantenrechnung,0
+selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Lieferantengutschrift,0
+selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Lieferantenrechnung,0
 selection,"account.invoice.line,type",0,Comment,Kommentar,0
 selection,"account.invoice.line,type",0,Line,Position,0
 selection,"account.invoice.line,type",0,Subtotal,Zwischensumme,0
 selection,"account.invoice.line,type",0,Title,Überschrift,0
 selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Teilzahlung,0
 selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Ausbuchung,0
-selection,"account.invoice,state",0,Canceled,Abgebrochen,0
+selection,"account.invoice,state",0,Canceled,Annulliert,0
 selection,"account.invoice,state",0,Draft,Entwurf,0
-selection,"account.invoice,state",0,Open,Offen,0
+selection,"account.invoice,state",0,Opened,Fakturiert,0
 selection,"account.invoice,state",0,Paid,Bezahlt,0
 selection,"account.invoice,state",0,Pro forma,Pro Forma,0
-selection,"account.invoice,type",0,Credit Note,Gutschrift,0
+selection,"account.invoice,type",0,Credit Note,Gutschrift an Kunde,0
 selection,"account.invoice,type",0,Invoice,Kundenrechnung,0
 selection,"account.invoice,type",0,Supplier Credit Note,Gutschrift von Lieferant,0
 selection,"account.invoice,type",0,Supplier Invoice,Lieferantenrechnung,0
 view,account.invoice,0,Amount Second Currency,Betrag Zweitwährung,0
-view,account.invoice,0,_Cancel,_Abbrechen,0
+view,account.invoice,0,_Cancel,_Annullieren,0
 view,account.invoice,0,Credit,Haben,0
 view,account.invoice,0,Debit,Soll,0
 view,account.invoice,0,_Draft,_Entwurf,0
 view,account.invoice,0,Invoice,Rechnung,0
 view,account.invoice,0,Invoices,Rechnungen,0
 view,account.invoice,0,Lines,Positionen,0
-view,account.invoice,0,_Open,_Öffnen,0
+view,account.invoice,0,_Open,_Fakturieren,0
 view,account.invoice,0,Other Info,Sonstiges,0
 view,account.invoice,0,_Pay,_Bezahlen,0
 view,account.invoice,0,Payment,Zahlung,0
@@ -215,20 +314,24 @@ view,account.invoice,0,_Reset to Draft,Auf Entwurf _Zurücksetzen,0
 view,account.invoice,0,Taxes,Steuern,0
 view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Wollen Sie diese Rechnungen wirklich gutschreiben?,0
 view,account.invoice.credit_invoice.init,0,Credit Invoice,Rechnung gutschreiben,0
-view,account.invoice.line,0,Invoice Line,Rechnungszeile,0
+view,account.invoice.line,0,General,Allgemein,0
+view,account.invoice.line,0,Invoice Line,Rechnungsposition,0
 view,account.invoice.line,0,Invoice Lines,Rechnungspositionen,0
+view,account.invoice.line,0,Notes,Notizen,0
+view,account.invoice.line,0,Products,Artikel,0
 view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Betrag Zweitwährung,0
 view,account.invoice.pay_invoice.ask,0,Credit,Haben,0
 view,account.invoice.pay_invoice.ask,0,Debit,Soll,0
 view,account.invoice.pay_invoice.ask,0,Lines to Pay,Zahlbare Positionen,0
 view,account.invoice.pay_invoice.ask,0,Pay Invoice,Rechnung bezahlen,0
+view,account.invoice.pay_invoice.ask,0,Payment Lines,Zahlungspositionen,0
 view,account.invoice.pay_invoice.init,0,Pay Invoice,Rechnung bezahlen,0
 view,account.invoice.payment_term,0,Payment Term,Zahlungsbedingung,0
 view,account.invoice.payment_term,0,Payment Term Line,Zahlungsbedingung,0
 view,account.invoice.payment_term,0,Payment Term Lines,Positionen Zahlungsbedingung,0
 view,account.invoice.payment_term,0,Payment Terms,Zahlungsbedingung,0
 view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Warnung!</b>,0
-view,account.invoice.print_invoice_report.warning,0,Print Invoice,Rechnung drucken,0
+view,account.invoice.print_invoice_report.warning,0,Print Invoice,Rechnung / Gutschrift drucken,0
 view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Die Rechnungen werden <i>direkt</i> an den Drucker gesendet.,0
 view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Sie haben mehr als eine Rechnung zum ausdrucken gewählt.,0
 view,account.invoice.tax,0,Invoice Tax,Rechnungssteuer,0
diff --git a/es_ES.csv b/es_CO.csv
similarity index 56%
copy from es_ES.csv
copy to es_CO.csv
index 4b93c82..d6ba724 100644
--- a/es_ES.csv
+++ b/es_CO.csv
@@ -1,47 +1,60 @@
 type,name,res_id,src,value,fuzzy
 error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,No puede cambiar la secuencia de una factura si hay una factura abierta en el año fiscal,0
-error,account.fiscalyear,0,You must have different invoice sequence per fiscal year!,Debe tener secuencias de facturas distintas para cada año fiscal!,0
+error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,¡Debe tener una secuencia diferente de facturación por año fiscal!,0
 error,account.invoice,0,"Base taxes different from invoice lines!
 Re-compute the invoice.",Los Impuestos Base difieren de las líneas de factura!,0
-error,account.invoice,0,Credit account on journal is the same than the invoice account!,La cuenta crédito del diario es la misma que la cuenta de la factura!,0
-error,account.invoice,0,Debit account on journal is the same than the invoice account!,La cuenta débito del diario es la misma que la cuenta de factura!,0
-error,account.invoice,0,"Taxes defined but not in invoice lines!
-Re-compute the invoice.",Impuestos definidos pero no usados!,0
+error,account.invoice,0,"Taxes defined but not on invoice lines!
+Re-compute the invoice.","Impuestos definidos pero no en líneas de factura!
+Recalcule la factura.",0
 error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
 Re-compute the invoice.",Impuestos definidos en factura pero no usados en las líneas!,0
 error,account.invoice,0,The credit account on journal is missing!,Falta la cuenta crédito del diario!,0
+error,account.invoice,0,The credit account on journal is the same than the invoice account!,¡La cuenta crédito en el diario es la misma que la cuenta facturada!,0
 error,account.invoice,0,The debit account on journal is missing!,Falta la cuenta débito del diario!,0
+error,account.invoice,0,The debit account on journal is the same than the invoice account!,¡La cuenta débito en el diario es la misma que la cuenta facturada!,0
 error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,No hay una secuencia de facturaas para el período/año fiscal!,0
 error,account.invoice,0,"You can not create an invoice
 with account from a different invoice company!",No puede crear una factura,0
-error,account.invoice,0,"You can not modify invoice that is open, paid or canceled!","No puede modificar una factura que esté abierta, pagada o cancelada!",0
-error,account.invoice,0,You can not reset to draft an invoice that have move!,No puede volver a borradro una factura que tiene un movimiento!,0
+error,account.invoice,0,"You can not modify an invoice that is open, paid or canceled!","¡No puede modificar una factura abierta, pagada o cancelada!",0
+error,account.invoice,0,You can not reset to draft an invoice that has move!,¡No puede poner en borrador una factura que ha sido movida!,0
 error,account.invoice,0,"You can not use the same account
-than on invoice line account!",No puede usar la misma cuenta,0
-error,account.invoice.line,0,Line type must have an account!,El tipo de línea debe tener una cuenta!,0
+as on invoice line!","¡No puede usar la misma cuenta
+como línea en la factura!",0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not openned!,¡No puede acreditar una devolución de una factura que no está abierta!,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,¡No puede acreditar una devolución de una factura con pagos!,0
+error,account.invoice.line,0,"Line with ""line"" type must have an account!","¡Una línea con tipo de ""línea"" debe tener una cuenta!",0
+error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","¡Una línea sin tipo de ""línea"" debe tener una factura!",0
 error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede adicionar una línea a una factura que está abierta, pagada o cancelada!",0
 error,account.invoice.line,0,"You can not create invoice line
-with account from a different invoice company!",No puede crear una línea de factura,0
+with account with a different invoice company!","¡No puede crear una línea de factura
+con cuenta a partir de una factura de una compañía distinta!",0
 error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","No puede modificar la línea de una factura que esté abierta, pagada o cancelada!",0
 error,account.invoice.line,0,"You can not use the same account
-than the invoice account!",No puede usar la misma cuenta,0
+as on the invoice!","No puede usar la misma cuenta
+que en la factura!",0
+error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,¡No puede crear un pago parcial con un monto mayor que el valor a pagar!,0
 error,account.invoice.payment_term,0,Invalid payment term line!,Línea de opción de pago inválida!,0
 error,account.invoice.payment_term,0,Payment term missing a remainder line!,Hace falta una línea final al término de pago!,0
-error,account.invoice.payment_term.line.delay,0,Code must be unique!,El código debe ser único!,0
-error,account.invoice.payment_term.line.type,0,Code must be unique!,El código debe ser único!,0
+error,account.invoice.payment_term.line.delay,0,The code must be unique!,¡El código debe ser único!,0
+error,account.invoice.payment_term.line.type,0,The code must be unique!,¡El código debe ser único!,0
 error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede adicionar una línea a una factura que está abierta, pagada o cancelada!",0
 error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","No puede modificar impuestos de una factura abierta, pagada o cancelada!",0
 error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,No puede cambiar la secuencia de una factura si hay una factura abierta en el período,0
+error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,¡Debe tener secuencias diferentes de facturas por año fiscal en la misma compañía!,0
 field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de la Nota Crédito del Proveedor,0
 field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de Factura de Proveedor,0
 field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de Nota Crédito de Cliente,0
 field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de Facturas de Cliente,0
 field,"account.invoice,account",0,Account,Cuenta,0
+field,"account.invoice,accounting_date",0,Accounting Date,Fecha de contabilización,0
+field,"account.invoice-account.move.line,invoice",0,Invoice,Factura,0
+field,"account.invoice-account.move.line,line",0,Payment Line,Línea de pago,0
+field,"account.invoice-account.move.line,rec_name",0,Name,Nombre,0
 field,"account.invoice,amount_to_pay",0,Amount to Pay,Cantidad a pagar,0
 field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Cantidad a pagar hoy,0
 field,"account.invoice,comment",0,Comment,Comentario,0
 field,"account.invoice,company",0,Company,Compañía,0
-field,"account.invoice,contact_address",0,Contact Address,Dirección de Contacto,0
+field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Con devolución,0
 field,"account.invoice,currency",0,Currency,Moneda,0
 field,"account.invoice,currency_digits",0,Currency Digits,Dígitos de Moneda,0
 field,"account.invoice,description",0,Description,Descripción,0
@@ -51,11 +64,22 @@ field,"account.invoice,invoice_report",0,Invoice Report,Reporte de Facturación,
 field,"account.invoice,invoice_report_format",0,Invoice Report Format,Formato de Reporte de Facturación,0
 field,"account.invoice,journal",0,Journal,Diario,0
 field,"account.invoice.line,account",0,Account,Cuenta,0
+field,"account.invoice.line-account.tax,line",0,Invoice Line,Línea de Factura,0
+field,"account.invoice.line-account.tax,rec_name",0,Name,Nombre,0
+field,"account.invoice.line-account.tax,tax",0,Tax,Impuesto,0
 field,"account.invoice.line,amount",0,Amount,Cantidad,0
+field,"account.invoice.line,company",0,Company,Compañía,0
+field,"account.invoice.line,currency",0,Currency,Moneda,0
+field,"account.invoice.line,currency_digits",0,Currency Digits,Dígitos de Moneda,0
 field,"account.invoice.line,description",0,Description,Descripción,0
 field,"account.invoice.line,invoice",0,Invoice,Factura,0
+field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Impuestos de Facturas,0
+field,"account.invoice.line,invoice_type",0,Invoice Type,Tipo de Factura,0
+field,"account.invoice.line,note",0,Note,Nota,0
+field,"account.invoice.line,party",0,Party,Terceros,0
 field,"account.invoice.line,product",0,Product,Producto,0
 field,"account.invoice.line,quantity",0,Quantity,Cantidad,0
+field,"account.invoice.line,rec_name",0,Name,Nombre,0
 field,"account.invoice,lines",0,Lines,Líneas,0
 field,"account.invoice.line,sequence",0,Sequence,Secuencia,0
 field,"account.invoice,lines_to_pay",0,Lines to Pay,Líneas a Pagar,0
@@ -67,20 +91,28 @@ field,"account.invoice.line,unit_price",0,Unit Price,Precio Unitario,0
 field,"account.invoice,move",0,Move,Movimiento,0
 field,"account.invoice,number",0,Number,Número,0
 field,"account.invoice,party",0,Party,Tercero,0
+field,"account.invoice,party_lang",0,Party Language,Idioma del Tercero,0
 field,"account.invoice.pay_invoice.ask,account",0,Account,Cuenta,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Account,Cuenta,0
-field,"account.invoice.pay_invoice.ask,amount",0,Amount,Cantidad,0
+field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Cuenta de Ajustes,0
+field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Valor del Pago,0
+field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Valor del Ajuste,0
 field,"account.invoice.pay_invoice.ask,company",0,Company,Compañía,0
-field,"account.invoice.pay_invoice.ask,currency",0,Currency,Moneda,0
+field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Pago en Moneda,0
+field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Dígitos de Pago de Moneda,0
+field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Ajuste de Dígitos de Moneda,0
+field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Ajuste de Moneda,0
 field,"account.invoice.pay_invoice.ask,date",0,Date,Fecha,0
 field,"account.invoice.pay_invoice.ask,description",0,Description,Descripción,0
+field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Factura,0
 field,"account.invoice.pay_invoice.ask,journal",0,Journal,Diario,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Journal,Diario,0
+field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Diario de Ajuste,0
 field,"account.invoice.pay_invoice.ask,lines",0,Lines,Líneas,0
 field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Líneas a Pagar,0
+field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Líneas de Pago,0
 field,"account.invoice.pay_invoice.ask,type",0,Type,Tipo,0
 field,"account.invoice.pay_invoice.init,amount",0,Amount,Cantidad,0
 field,"account.invoice.pay_invoice.init,currency",0,Currency,Moneda,0
+field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Dígitos de Moneda,0
 field,"account.invoice.pay_invoice.init,date",0,Date,Fecha,0
 field,"account.invoice.pay_invoice.init,description",0,Description,Descripción,0
 field,"account.invoice.pay_invoice.init,journal",0,Journal,Diario,0
@@ -95,14 +127,19 @@ field,"account.invoice.payment_term.line,days",0,Number of Days,Cantidad de día
 field,"account.invoice.payment_term.line,delay",0,Condition,Condición,0
 field,"account.invoice.payment_term.line.delay,code",0,Code,Código,0
 field,"account.invoice.payment_term.line.delay,name",0,Name,Nombre,0
+field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Nombre,0
 field,"account.invoice.payment_term.line,payment",0,Payment Term,Término de Pago,0
-field,"account.invoice.payment_term.line,percent",0,Percent,Por ciento,0
+field,"account.invoice.payment_term.line,percentage",0,Percentage,Porcentaje,0
+field,"account.invoice.payment_term.line,rec_name",0,Name,Nombre,0
 field,"account.invoice.payment_term,lines",0,Lines,Líneas,0
 field,"account.invoice.payment_term.line,sequence",0,Sequence,Secuencia,0
 field,"account.invoice.payment_term.line,type",0,Type,Tipo,0
 field,"account.invoice.payment_term.line.type,code",0,Code,Código,0
 field,"account.invoice.payment_term.line.type,name",0,Name,Nombre,0
+field,"account.invoice.payment_term.line.type,rec_name",0,Name,Nombre,0
 field,"account.invoice.payment_term,name",0,Payment Term,Término de Pago,0
+field,"account.invoice.payment_term,rec_name",0,Name,Nombre,0
+field,"account.invoice,rec_name",0,Name,Nombre,0
 field,"account.invoice,reconciled",0,Reconciled,Conciliado,0
 field,"account.invoice,reference",0,Reference,Referencia,0
 field,"account.invoice,state",0,State,Estado,0
@@ -116,7 +153,10 @@ field,"account.invoice.tax,description",0,Description,Descripción,0
 field,"account.invoice,taxes",0,Tax Lines,Líneas de Impuestos,0
 field,"account.invoice.tax,invoice",0,Invoice,Factura,0
 field,"account.invoice.tax,manual",0,Manual,Manual,0
+field,"account.invoice.tax,rec_name",0,Name,Nombre,0
 field,"account.invoice.tax,sequence",0,Sequence,Secuencia,0
+field,"account.invoice.tax,sequence_number",0,Sequence Number,Número de Secuencia,0
+field,"account.invoice.tax,tax",0,Tax,Impuesto,0
 field,"account.invoice.tax,tax_code",0,Tax Code,Código de Impuesto,0
 field,"account.invoice.tax,tax_sign",0,Tax Sign,Signo del Impuesto,0
 field,"account.invoice,total_amount",0,Total,Total,0
@@ -130,56 +170,127 @@ field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Secuenci
 field,"party.address,invoice",0,Invoice,Factura,0
 field,"party.party,payment_term",0,Invoice Payment Term,Término de Pago de la Factura,0
 field,"party.party,supplier_payment_term",0,Supplier Payment Term,Término de Pago a Proveedor,0
+help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Si cierto, la(s) factura(s) actuales se pagarán.",0
+help,"account.invoice.payment_term.line,percentage",0,In %,En %,0
 help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Para ordenar las líneas ascendentemente,0
+model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Factura - Línea de pago,0
+model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Inicio de Factura Crédito,0
+model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Línea de Factura - Impuesto,0
+model,"account.invoice.line,name",0,Invoice Line,Línea de Factura,0
+model,"account.invoice,name",0,Invoice,Factura,0
+model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Solicitud de Pago de Factura,0
+model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Inicio de Pago de Factura,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Mes Final,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Días Netos,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Línea de Pago Tardío,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Línea de Término de Pago,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fijo,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percent,Por ciento,0
+model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Tipo Pago de Término,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Porcentaje,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Diferencia,0
+model,"account.invoice.payment_term,name",0,Payment Term,Término de Pago,0
+model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Imprimir Advertencia de Pago de Factura,0
+model,"account.invoice.tax,name",0,Invoice Tax,Impuesto en Factura,0
 model,"ir.action,name",act_invoice_form,All Invoices,Todas las facturas,0
 model,"ir.action,name",credit_invoice,Credit,Crédito,0
 model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Notas Crédito,0
+model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Notas Crédito,0
+model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Notas Crédito en Borrador,0
+model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Factura en Borrador,0
+model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Borrador Nota Crédito del Proveedor,0
+model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Borrador de Factura de Proveedor,0
 model,"ir.action,name",report_invoice,Invoice,Factura,0
 model,"ir.action,name",print_invoice_report,Invoice,Factura,0
 model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Facturas,0
+model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Facturas,0
+model,"ir.action,name",act_invoice_form2,Invoices,Facturas,0
+model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Nota Crédito Abierta,0
+model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Factura Abierta,0
+model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Nota Crédito de Proveedor Abierta,0
+model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Factura de Proveedor Abierta,0
 model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Pagar Factura,0
 model,"ir.action,name",act_payment_term_form,Payment Terms,Términos de Pago,0
+model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Nota Crédito Proforma,0
+model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Factura Proforma,0
+model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Nota Crédito de Proveedor Proforma,0
+model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factura del Proveedor Proforma,0
 model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Notas Crédito del Proveedor,0
+model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Notas Crédito del Proveedor,0
 model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Facturas de Proveedor,0
+model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Facturas de Proveedor,0
+model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Factura,0
 model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Todas las facturas,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Notas Crédito,0
-model,"ir.ui.menu,name",menu_invoices_configuration,Invoices,Facturas,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Borrador Nota Crédito,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Borrador Factura,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Borrador Nota Crédito Proveedor,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Borrador Factura Proveedor,0
 model,"ir.ui.menu,name",menu_invoices,Invoices,Facturas,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Facturas,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nueva Nota Crédito,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nueva Factura,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nueva Nota Crédito Proveedor,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Factura Nuevo Proveedor,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Nota Crédito Abierta,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Factura Abierta,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Nota Crédito Proveedor Abierta,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Factura Proveedor Abierta,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Términos de Pago,0
 model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Términos de Pago,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Nota Crédito Proforma,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Factura Proforma,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Nota Crédito Proveedor Proforma,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factura Proveedor Proforma,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Notas Crédito del Proveedor,0
 model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Facturas de Proveedor,0
+model,"workflow.activity,name",invoice_activity_cancel,Canceled,Cancelado,0
+model,"workflow.activity,name",invoice_activity_draft,Draft,Borrador,0
+model,"workflow.activity,name",invoice_activity_open,Open,Abrir,0
+model,"workflow.activity,name",invoice_activity_paid,Paid,Pagado,0
+model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
+model,"workflow,name",invoice_workflow,Invoice workflow,Flujo de Trabajo Factura,0
 odt,account.invoice,0,Amount,Cantidad,0
 odt,account.invoice,0,Base,Base,0
+odt,account.invoice,0,Credit Note N°:,Nota Crédito N°:,0
 odt,account.invoice,0,Date,Fecha,0
 odt,account.invoice,0,Date:,Fecha:,0
 odt,account.invoice,0,Description,Descripción,0
 odt,account.invoice,0,Description:,Descripción:,0
+odt,account.invoice,0,Draft Credit Note,Borrador de Nota Crédito,0
+odt,account.invoice,0,Draft Invoice,Borrador de Factura,0
+odt,account.invoice,0,Draft Supplier Credit Note,Borrador de Nota Crédito del Proveedor,0
+odt,account.invoice,0,Draft Supplier Invoice,Borrador de Factura del Proveedor,0
 odt,account.invoice,0,E-Mail:,Correo electrónico:,0
+odt,account.invoice,0,Invoice N°:,Factura N°:,0
 odt,account.invoice,0,Payment Term,Término de Pago,0
 odt,account.invoice,0,Phone:,Teléfono:,0
+odt,account.invoice,0,Pro forma Credit Note,Nota Crédito Proforma,0
+odt,account.invoice,0,Pro forma Invoice,Factura Proforma,0
+odt,account.invoice,0,Pro forma Supplier Credit Note,Nota Crédito del Proveedor Proforma,0
+odt,account.invoice,0,Pro forma Supplier Invoice,Factura del Proveedor Proforma,0
 odt,account.invoice,0,Quantity,Cantidad,0
+odt,account.invoice,0,Supplier Credit Note N°:,Nota Crédito del Proveedor N°:,0
+odt,account.invoice,0,Supplier Invoice N°:,Factura del Proveedor N°:,0
 odt,account.invoice,0,Tax,Impuesto,0
 odt,account.invoice,0,Taxes,Impuestos,0
 odt,account.invoice,0,Taxes:,Impuestos:,0
 odt,account.invoice,0,Total:,Total:,0
 odt,account.invoice,0,Total (excl. taxes):,Total (sin impuestos):,0
 odt,account.invoice,0,Unit Price,Precio Unitario,0
-odt,account.invoice,0,VAT:,VAT:,0
+odt,account.invoice,0,VAT:,IVA:,0
+selection,"account.invoice.line,invoice_type",0,Credit Note,Nota Crédito,0
+selection,"account.invoice.line,invoice_type",0,Invoice,Factura,0
+selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Nota Crédito del Proveedor,0
+selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Factura de Proveedor,0
 selection,"account.invoice.line,type",0,Comment,Comentario,0
 selection,"account.invoice.line,type",0,Line,Línea,0
 selection,"account.invoice.line,type",0,Subtotal,Subtotal,0
 selection,"account.invoice.line,type",0,Title,Título,0
 selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Pago Parcial,0
-selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Exento,0
+selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Ajuste,0
 selection,"account.invoice,state",0,Canceled,Cancelado,0
 selection,"account.invoice,state",0,Draft,Borrador,0
-selection,"account.invoice,state",0,Open,Abrir,0
+selection,"account.invoice,state",0,Opened,Abierto,0
 selection,"account.invoice,state",0,Paid,Pagado,0
 selection,"account.invoice,state",0,Pro forma,Pro forma,0
 selection,"account.invoice,type",0,Credit Note,Nota de Crédito,0
@@ -204,13 +315,17 @@ view,account.invoice,0,_Reset to Draft,_Revertir a Borrador,0
 view,account.invoice,0,Taxes,Impuestos,0
 view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Segur@ desea acreditar la(s) factura(s)?,0
 view,account.invoice.credit_invoice.init,0,Credit Invoice,Factura Crédito,0
+view,account.invoice.line,0,General,General,0
 view,account.invoice.line,0,Invoice Line,Línea de Factura,0
 view,account.invoice.line,0,Invoice Lines,Líneas de Factura,0
+view,account.invoice.line,0,Notes,Notas,0
+view,account.invoice.line,0,Products,Productos,0
 view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Cantidad en la Moneda Secundaria,0
 view,account.invoice.pay_invoice.ask,0,Credit,Crédito,0
 view,account.invoice.pay_invoice.ask,0,Debit,Débito,0
 view,account.invoice.pay_invoice.ask,0,Lines to Pay,Líneas a Pagar,0
 view,account.invoice.pay_invoice.ask,0,Pay Invoice,Pagar Factura,0
+view,account.invoice.pay_invoice.ask,0,Payment Lines,Líneas de Pago,0
 view,account.invoice.pay_invoice.init,0,Pay Invoice,Pagar Factura,0
 view,account.invoice.payment_term,0,Payment Term,Término de Pago,0
 view,account.invoice.payment_term,0,Payment Term Line,Línea de Término de Pago,0
@@ -220,8 +335,6 @@ view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Advertenc
 view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimir Factura,0
 view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Las facturas serán enviadas <i>directamente</i> a la impresora.,0
 view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Ha elegido más de una factura para imprimir,0
-view,account.invoice.refund_invoice.init,0,Are you sure to refund those/this invoice(s)?,Segur@ desea devolver la(s) factura(s)?,0
-view,account.invoice.refund_invoice.init,0,Refund Invoice,Factura de Devolución,0
 view,account.invoice.tax,0,Invoice Tax,Impuesto en Factura,0
 view,account.invoice.tax,0,Invoice Taxes,Impuestos de Facturas,0
 view,account.invoice.tax,0,Tax Code,Código de Impuesto,0
diff --git a/es_ES.csv b/es_ES.csv
index 4b93c82..eb8c2db 100644
--- a/es_ES.csv
+++ b/es_ES.csv
@@ -1,108 +1,148 @@
 type,name,res_id,src,value,fuzzy
 error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,No puede cambiar la secuencia de una factura si hay una factura abierta en el año fiscal,0
-error,account.fiscalyear,0,You must have different invoice sequence per fiscal year!,Debe tener secuencias de facturas distintas para cada año fiscal!,0
+error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Debe tener una secuencia diferente de facturación por año fiscal,0
 error,account.invoice,0,"Base taxes different from invoice lines!
-Re-compute the invoice.",Los Impuestos Base difieren de las líneas de factura!,0
-error,account.invoice,0,Credit account on journal is the same than the invoice account!,La cuenta crédito del diario es la misma que la cuenta de la factura!,0
-error,account.invoice,0,Debit account on journal is the same than the invoice account!,La cuenta débito del diario es la misma que la cuenta de factura!,0
-error,account.invoice,0,"Taxes defined but not in invoice lines!
-Re-compute the invoice.",Impuestos definidos pero no usados!,0
+Re-compute the invoice.","Los Impuestos base son distintos de las líneas de la factura.
+Recalcule la factura.",0
+error,account.invoice,0,"Taxes defined but not on invoice lines!
+Re-compute the invoice.","Tiene impuestos definidos pero ninguno en las líneas de la factura
+Recalcule la factura.",0
 error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
-Re-compute the invoice.",Impuestos definidos en factura pero no usados en las líneas!,0
-error,account.invoice,0,The credit account on journal is missing!,Falta la cuenta crédito del diario!,0
-error,account.invoice,0,The debit account on journal is missing!,Falta la cuenta débito del diario!,0
-error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,No hay una secuencia de facturaas para el período/año fiscal!,0
+Re-compute the invoice.","Los impuestos están definidos en las lineas de la factura pero no en la factura.
+Recalcule la factura.",0
+error,account.invoice,0,The credit account on journal is missing!,Falta la cuenta crédito del diario,0
+error,account.invoice,0,The credit account on journal is the same than the invoice account!,La cuenta de crédito en el diario es la misma que la cuenta facturada,0
+error,account.invoice,0,The debit account on journal is missing!,Falta la cuenta débito del diario,0
+error,account.invoice,0,The debit account on journal is the same than the invoice account!,La cuenta de débito en el diario es la misma que la cuenta facturada,0
+error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,No hay una secuencia de factura para el período/año fiscal,0
 error,account.invoice,0,"You can not create an invoice
-with account from a different invoice company!",No puede crear una factura,0
-error,account.invoice,0,"You can not modify invoice that is open, paid or canceled!","No puede modificar una factura que esté abierta, pagada o cancelada!",0
-error,account.invoice,0,You can not reset to draft an invoice that have move!,No puede volver a borradro una factura que tiene un movimiento!,0
+with account from a different invoice company!","No puede crear una factura
+con una cuenta de una compañía distinta a la que factura",0
+error,account.invoice,0,"You can not modify an invoice that is open, paid or canceled!","No puede modificar una factura abierta, pagada o cancelada",0
+error,account.invoice,0,You can not reset to draft an invoice that has move!,No puede poner en borrador una factura que tiene asientos,0
 error,account.invoice,0,"You can not use the same account
-than on invoice line account!",No puede usar la misma cuenta,0
-error,account.invoice.line,0,Line type must have an account!,El tipo de línea debe tener una cuenta!,0
-error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede adicionar una línea a una factura que está abierta, pagada o cancelada!",0
+as on invoice line!","No puede usar la misma cuenta
+que la línea de la factura",0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,No puede acreditar una devolución de una factura con pagos,0
+error,account.invoice.line,0,"Line with ""line"" type must have an account!",Una línea con tipo «línea» debe tener una cuenta,0
+error,account.invoice.line,0,"Line without ""line"" type must have an invoice!",Una línea sin tipo «línea» debe tener una factura,0
+error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede añadir una línea a una factura que está abierta, pagada o cancelada",0
 error,account.invoice.line,0,"You can not create invoice line
-with account from a different invoice company!",No puede crear una línea de factura,0
-error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","No puede modificar la línea de una factura que esté abierta, pagada o cancelada!",0
+with account with a different invoice company!","No puede crear una línea de factura
+con una cuenta de una empresa distinta a la que factura",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","No puede modificar la línea de una factura que esté abierta, pagada o cancelada",0
 error,account.invoice.line,0,"You can not use the same account
-than the invoice account!",No puede usar la misma cuenta,0
-error,account.invoice.payment_term,0,Invalid payment term line!,Línea de opción de pago inválida!,0
-error,account.invoice.payment_term,0,Payment term missing a remainder line!,Hace falta una línea final al término de pago!,0
-error,account.invoice.payment_term.line.delay,0,Code must be unique!,El código debe ser único!,0
-error,account.invoice.payment_term.line.type,0,Code must be unique!,El código debe ser único!,0
-error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede adicionar una línea a una factura que está abierta, pagada o cancelada!",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","No puede modificar impuestos de una factura abierta, pagada o cancelada!",0
+as on the invoice!","No puede usar la misma cuenta
+que en la factura",0
+error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,No puede crear un pago parcial con una cantidad mayor de la que hay que pagar,0
+error,account.invoice.payment_term,0,Invalid payment term line!,La línea de término de pago no es válida,0
+error,account.invoice.payment_term,0,Payment term missing a remainder line!,Al término de pago le una línea final,0
+error,account.invoice.payment_term.line.delay,0,The code must be unique!,El código debe ser único,0
+error,account.invoice.payment_term.line.type,0,The code must be unique!,El código debe ser único,0
+error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede añadir una línea a una factura que está abierta, pagada o cancelada",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","No puede modificar impuestos de una factura abierta, pagada o cancelada",0
 error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,No puede cambiar la secuencia de una factura si hay una factura abierta en el período,0
-field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de la Nota Crédito del Proveedor,0
-field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de Factura de Proveedor,0
-field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de Nota Crédito de Cliente,0
-field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de Facturas de Cliente,0
+error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Debe tener secuencias diferentes de facturas por año fiscal en la misma empresa,0
+field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de abono de proveedor,0
+field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de factura de proveedor,0
+field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de abono a cliente,0
+field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de facturas a cliente,0
 field,"account.invoice,account",0,Account,Cuenta,0
+field,"account.invoice,accounting_date",0,Accounting Date,Fecha de contabilización,0
+field,"account.invoice-account.move.line,invoice",0,Invoice,Factura,0
+field,"account.invoice-account.move.line,line",0,Payment Line,Línea de pago,0
+field,"account.invoice-account.move.line,rec_name",0,Name,Nombre,0
 field,"account.invoice,amount_to_pay",0,Amount to Pay,Cantidad a pagar,0
 field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Cantidad a pagar hoy,0
 field,"account.invoice,comment",0,Comment,Comentario,0
-field,"account.invoice,company",0,Company,Compañía,0
-field,"account.invoice,contact_address",0,Contact Address,Dirección de Contacto,0
-field,"account.invoice,currency",0,Currency,Moneda,0
-field,"account.invoice,currency_digits",0,Currency Digits,Dígitos de Moneda,0
+field,"account.invoice,company",0,Company,Empresa,0
+field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Con devolución,0
+field,"account.invoice,currency",0,Currency,Divisa,0
+field,"account.invoice,currency_digits",0,Currency Digits,Dígitos de la divisa,0
 field,"account.invoice,description",0,Description,Descripción,0
-field,"account.invoice,invoice_address",0,Invoice Address,Dirección de Facturación,0
-field,"account.invoice,invoice_date",0,Invoice Date,Fecha de Factura,0
-field,"account.invoice,invoice_report",0,Invoice Report,Reporte de Facturación,0
-field,"account.invoice,invoice_report_format",0,Invoice Report Format,Formato de Reporte de Facturación,0
+field,"account.invoice,invoice_address",0,Invoice Address,Dirección de facturación,0
+field,"account.invoice,invoice_date",0,Invoice Date,Fecha de factura,0
+field,"account.invoice,invoice_report",0,Invoice Report,Informe de facturación,0
+field,"account.invoice,invoice_report_format",0,Invoice Report Format,Formato del informe de facturación,0
 field,"account.invoice,journal",0,Journal,Diario,0
 field,"account.invoice.line,account",0,Account,Cuenta,0
+field,"account.invoice.line-account.tax,line",0,Invoice Line,Línea de factura,0
+field,"account.invoice.line-account.tax,rec_name",0,Name,Nombre,0
+field,"account.invoice.line-account.tax,tax",0,Tax,Impuesto,0
 field,"account.invoice.line,amount",0,Amount,Cantidad,0
+field,"account.invoice.line,company",0,Company,Empresa,0
+field,"account.invoice.line,currency",0,Currency,Divisa,0
+field,"account.invoice.line,currency_digits",0,Currency Digits,Dígitos de la divisa,0
 field,"account.invoice.line,description",0,Description,Descripción,0
 field,"account.invoice.line,invoice",0,Invoice,Factura,0
+field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Impuestos de la factura,0
+field,"account.invoice.line,invoice_type",0,Invoice Type,Tipo de factura,0
+field,"account.invoice.line,note",0,Note,Nota,0
+field,"account.invoice.line,party",0,Party,Terceros,0
 field,"account.invoice.line,product",0,Product,Producto,0
 field,"account.invoice.line,quantity",0,Quantity,Cantidad,0
+field,"account.invoice.line,rec_name",0,Name,Nombre,0
 field,"account.invoice,lines",0,Lines,Líneas,0
 field,"account.invoice.line,sequence",0,Sequence,Secuencia,0
-field,"account.invoice,lines_to_pay",0,Lines to Pay,Líneas a Pagar,0
+field,"account.invoice,lines_to_pay",0,Lines to Pay,Líneas a pagar,0
 field,"account.invoice.line,taxes",0,Taxes,Impuestos,0
 field,"account.invoice.line,type",0,Type,Tipo,0
 field,"account.invoice.line,unit",0,Unit,Unidad,0
-field,"account.invoice.line,unit_digits",0,Unit Digits,Dígitos de Unidad,0
-field,"account.invoice.line,unit_price",0,Unit Price,Precio Unitario,0
-field,"account.invoice,move",0,Move,Movimiento,0
+field,"account.invoice.line,unit_digits",0,Unit Digits,Dígitos de unidad,0
+field,"account.invoice.line,unit_price",0,Unit Price,Precio unitario,0
+field,"account.invoice,move",0,Move,Asiento,0
 field,"account.invoice,number",0,Number,Número,0
 field,"account.invoice,party",0,Party,Tercero,0
+field,"account.invoice,party_lang",0,Party Language,Idioma del tercero,0
 field,"account.invoice.pay_invoice.ask,account",0,Account,Cuenta,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Account,Cuenta,0
-field,"account.invoice.pay_invoice.ask,amount",0,Amount,Cantidad,0
-field,"account.invoice.pay_invoice.ask,company",0,Company,Compañía,0
-field,"account.invoice.pay_invoice.ask,currency",0,Currency,Moneda,0
+field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Cuenta de pérdidas,0
+field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Cantidad del pago,0
+field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Valor de la pérdida,0
+field,"account.invoice.pay_invoice.ask,company",0,Company,Empresa,0
+field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Divisa de pago,0
+field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Decimales del pago de divisa,0
+field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Pérdida por decimales de divisa,0
+field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Divisa de la pérdida,0
 field,"account.invoice.pay_invoice.ask,date",0,Date,Fecha,0
 field,"account.invoice.pay_invoice.ask,description",0,Description,Descripción,0
+field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Factura,0
 field,"account.invoice.pay_invoice.ask,journal",0,Journal,Diario,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Journal,Diario,0
+field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Diario de pérdidas,0
 field,"account.invoice.pay_invoice.ask,lines",0,Lines,Líneas,0
-field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Líneas a Pagar,0
+field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Líneas a pagar,0
+field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Líneas de pago,0
 field,"account.invoice.pay_invoice.ask,type",0,Type,Tipo,0
 field,"account.invoice.pay_invoice.init,amount",0,Amount,Cantidad,0
-field,"account.invoice.pay_invoice.init,currency",0,Currency,Moneda,0
+field,"account.invoice.pay_invoice.init,currency",0,Currency,Divisa,0
+field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Decimales de la divisa,0
 field,"account.invoice.pay_invoice.init,date",0,Date,Fecha,0
 field,"account.invoice.pay_invoice.init,description",0,Description,Descripción,0
 field,"account.invoice.pay_invoice.init,journal",0,Journal,Diario,0
-field,"account.invoice,payment_lines",0,Payment Lines,Líneas de Pago,0
-field,"account.invoice,payment_term",0,Payment Term,Término de Pago,0
+field,"account.invoice,payment_lines",0,Payment Lines,Líneas de pago,0
+field,"account.invoice,payment_term",0,Payment Term,Término de pago,0
 field,"account.invoice.payment_term,active",0,Active,Activo,0
 field,"account.invoice.payment_term,description",0,Description,Descripción,0
 field,"account.invoice.payment_term.line,amount",0,Amount,Cantidad,0
-field,"account.invoice.payment_term.line,currency",0,Currency,Moneda,0
-field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Dígitos de Moneda,0
+field,"account.invoice.payment_term.line,currency",0,Currency,Divisa,0
+field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Dígitos de la divisa,0
 field,"account.invoice.payment_term.line,days",0,Number of Days,Cantidad de días,0
 field,"account.invoice.payment_term.line,delay",0,Condition,Condición,0
 field,"account.invoice.payment_term.line.delay,code",0,Code,Código,0
 field,"account.invoice.payment_term.line.delay,name",0,Name,Nombre,0
-field,"account.invoice.payment_term.line,payment",0,Payment Term,Término de Pago,0
-field,"account.invoice.payment_term.line,percent",0,Percent,Por ciento,0
+field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Nombre,0
+field,"account.invoice.payment_term.line,payment",0,Payment Term,Término de pago,0
+field,"account.invoice.payment_term.line,percentage",0,Percentage,Porcentaje,0
+field,"account.invoice.payment_term.line,rec_name",0,Name,Nombre,0
 field,"account.invoice.payment_term,lines",0,Lines,Líneas,0
 field,"account.invoice.payment_term.line,sequence",0,Sequence,Secuencia,0
 field,"account.invoice.payment_term.line,type",0,Type,Tipo,0
 field,"account.invoice.payment_term.line.type,code",0,Code,Código,0
 field,"account.invoice.payment_term.line.type,name",0,Name,Nombre,0
-field,"account.invoice.payment_term,name",0,Payment Term,Término de Pago,0
+field,"account.invoice.payment_term.line.type,rec_name",0,Name,Nombre,0
+field,"account.invoice.payment_term,name",0,Payment Term,Término de pago,0
+field,"account.invoice.payment_term,rec_name",0,Name,Nombre,0
+field,"account.invoice,rec_name",0,Name,Nombre,0
 field,"account.invoice,reconciled",0,Reconciled,Conciliado,0
 field,"account.invoice,reference",0,Reference,Referencia,0
 field,"account.invoice,state",0,State,Estado,0
@@ -110,123 +150,199 @@ field,"account.invoice.tax,account",0,Account,Cuenta,0
 field,"account.invoice,tax_amount",0,Tax,Impuesto,0
 field,"account.invoice.tax,amount",0,Amount,Cantidad,0
 field,"account.invoice.tax,base",0,Base,Base,0
-field,"account.invoice.tax,base_code",0,Base Code,Código Base,0
-field,"account.invoice.tax,base_sign",0,Base Sign,Signo Base,0
+field,"account.invoice.tax,base_code",0,Base Code,Código base,0
+field,"account.invoice.tax,base_sign",0,Base Sign,Signo de la base,0
 field,"account.invoice.tax,description",0,Description,Descripción,0
-field,"account.invoice,taxes",0,Tax Lines,Líneas de Impuestos,0
+field,"account.invoice,taxes",0,Tax Lines,Líneas de impuestos,0
 field,"account.invoice.tax,invoice",0,Invoice,Factura,0
 field,"account.invoice.tax,manual",0,Manual,Manual,0
+field,"account.invoice.tax,rec_name",0,Name,Nombre,0
 field,"account.invoice.tax,sequence",0,Sequence,Secuencia,0
-field,"account.invoice.tax,tax_code",0,Tax Code,Código de Impuesto,0
-field,"account.invoice.tax,tax_sign",0,Tax Sign,Signo del Impuesto,0
+field,"account.invoice.tax,sequence_number",0,Sequence Number,Número de secuencia,0
+field,"account.invoice.tax,tax",0,Tax,Impuesto,0
+field,"account.invoice.tax,tax_code",0,Tax Code,Código de impuesto,0
+field,"account.invoice.tax,tax_sign",0,Tax Sign,Signo del impuesto,0
 field,"account.invoice,total_amount",0,Total,Total,0
 field,"account.invoice,type",0,Type,Tipo,0
 field,"account.invoice,type_name",0,Type,Tipo,0
-field,"account.invoice,untaxed_amount",0,Untaxed,Sin Impuesto,0
-field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de la Nota Crédito del Proveedor,0
-field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de Factura de Proveedor,0
-field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de Nota Crédito de Cliente,0
-field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de Facturas de Cliente,0
+field,"account.invoice,untaxed_amount",0,Untaxed,Sin impuesto,0
+field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia del abono de proveedor,0
+field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de factura de proveedor,0
+field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de abono a cliente,0
+field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de factura a cliente,0
 field,"party.address,invoice",0,Invoice,Factura,0
-field,"party.party,payment_term",0,Invoice Payment Term,Término de Pago de la Factura,0
-field,"party.party,supplier_payment_term",0,Supplier Payment Term,Término de Pago a Proveedor,0
-help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Para ordenar las líneas ascendentemente,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Mes Final,0
-model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Días Netos,0
+field,"party.party,payment_term",0,Invoice Payment Term,Término de pago de la factura,0
+field,"party.party,supplier_payment_term",0,Supplier Payment Term,Término de pago al proveedor,0
+help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Si es cierto, la(s) factura(s) actuales se pagarán.",0
+help,"account.invoice.payment_term.line,percentage",0,In %,En %,0
+help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Empleado para ordenar las líneas ascendentemente,0
+model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Factura - Línea de pago,0
+model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Inicio de factura de crédito,0
+model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Línea de factura - Impuesto,0
+model,"account.invoice.line,name",0,Invoice Line,Línea de factura,0
+model,"account.invoice,name",0,Invoice,Factura,0
+model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Solicitud de pago de factura,0
+model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Inicio de pago de factura,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Mes final,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Días netos,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Línea de término de pago retrasado,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Línea de término de pago,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fijo,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percent,Por ciento,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Diferencia,0
+model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Línea de tipo de término de pago,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Porcentaje,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Resto,0
+model,"account.invoice.payment_term,name",0,Payment Term,Término de pago,0
+model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Imprimir informe de aviso de facturas,0
+model,"account.invoice.tax,name",0,Invoice Tax,Impuesto en factura,0
 model,"ir.action,name",act_invoice_form,All Invoices,Todas las facturas,0
-model,"ir.action,name",credit_invoice,Credit,Crédito,0
-model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Notas Crédito,0
+model,"ir.action,name",credit_invoice,Credit,Haber,0
+model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Abonos,0
+model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Abonos,0
+model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Abonos borrador,0
+model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Facturas borrador,0
+model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Borrador de abonos de proveedor,0
+model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Borrador de facturas de proveedor,0
 model,"ir.action,name",report_invoice,Invoice,Factura,0
 model,"ir.action,name",print_invoice_report,Invoice,Factura,0
 model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Facturas,0
-model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Pagar Factura,0
-model,"ir.action,name",act_payment_term_form,Payment Terms,Términos de Pago,0
-model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Notas Crédito del Proveedor,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Facturas de Proveedor,0
+model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Facturas,0
+model,"ir.action,name",act_invoice_form2,Invoices,Facturas,0
+model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Abonos abiertos,0
+model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Facturas abiertas,0
+model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Abonos de proveedor abiertos,0
+model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Facturas de proveedor abiertas,0
+model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Pagar factura,0
+model,"ir.action,name",act_payment_term_form,Payment Terms,Términos de pago,0
+model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Abonos pro forma,0
+model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Facturas pro forma,0
+model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Abonos de proveedor pro forma,0
+model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Facturas de proveedor pro forma,0
+model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Abonos de proveedor,0
+model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Abonos de proveedor,0
+model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Facturas de proveedor,0
+model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Facturas de proveedor,0
+model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Factura,0
 model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Todas las facturas,0
-model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Notas Crédito,0
-model,"ir.ui.menu,name",menu_invoices_configuration,Invoices,Facturas,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Abonos,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Abono borrador,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Facturas borrador,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Abonos de proveedor borrador,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Facturas de proveedor borrador,0
 model,"ir.ui.menu,name",menu_invoices,Invoices,Facturas,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Facturas,0
-model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Términos de Pago,0
-model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Notas Crédito del Proveedor,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Facturas de Proveedor,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nuevo abono,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nueva factura,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nuevo abono de proveedor,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Nueva factura de proveedor,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Abonos abiertos,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Facturas abiertas,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Abonos de proveedor abiertos,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Facturas de proveedor abiertas,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Términos de pago,0
+model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Términos de pago,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Abonos pro forma,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Facturas pro forma,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Abonos de proveedor pro forma,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Facturas de proveedor pro forma,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Abonos del proveedor,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Facturas de proveedor,0
+model,"workflow.activity,name",invoice_activity_cancel,Canceled,Cancelado,0
+model,"workflow.activity,name",invoice_activity_draft,Draft,Borrador,0
+model,"workflow.activity,name",invoice_activity_open,Open,Abierto,0
+model,"workflow.activity,name",invoice_activity_paid,Paid,Pagado,0
+model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
+model,"workflow,name",invoice_workflow,Invoice workflow,Flujo de trabajo de la factura,0
 odt,account.invoice,0,Amount,Cantidad,0
 odt,account.invoice,0,Base,Base,0
+odt,account.invoice,0,Credit Note N°:,Abono Nº:,0
 odt,account.invoice,0,Date,Fecha,0
 odt,account.invoice,0,Date:,Fecha:,0
 odt,account.invoice,0,Description,Descripción,0
 odt,account.invoice,0,Description:,Descripción:,0
+odt,account.invoice,0,Draft Credit Note,Abono borrador,0
+odt,account.invoice,0,Draft Invoice,Factura borrador,0
+odt,account.invoice,0,Draft Supplier Credit Note,Borrador de abono de proveedor,0
+odt,account.invoice,0,Draft Supplier Invoice,Borrador de factura de proveedor,0
 odt,account.invoice,0,E-Mail:,Correo electrónico:,0
-odt,account.invoice,0,Payment Term,Término de Pago,0
+odt,account.invoice,0,Invoice N°:,Factura Nº:,0
+odt,account.invoice,0,Payment Term,Término de pago,0
 odt,account.invoice,0,Phone:,Teléfono:,0
+odt,account.invoice,0,Pro forma Credit Note,Abono pro forma,0
+odt,account.invoice,0,Pro forma Invoice,Factura pro forma,0
+odt,account.invoice,0,Pro forma Supplier Credit Note,Abono de proveedor pro forma,0
+odt,account.invoice,0,Pro forma Supplier Invoice,Factura de proveedor pro forma,0
 odt,account.invoice,0,Quantity,Cantidad,0
+odt,account.invoice,0,Supplier Credit Note N°:,Abono de proveedor Nº:,0
+odt,account.invoice,0,Supplier Invoice N°:,Factura de proveedor Nº:,0
 odt,account.invoice,0,Tax,Impuesto,0
 odt,account.invoice,0,Taxes,Impuestos,0
 odt,account.invoice,0,Taxes:,Impuestos:,0
 odt,account.invoice,0,Total:,Total:,0
 odt,account.invoice,0,Total (excl. taxes):,Total (sin impuestos):,0
-odt,account.invoice,0,Unit Price,Precio Unitario,0
-odt,account.invoice,0,VAT:,VAT:,0
+odt,account.invoice,0,Unit Price,Precio unitario,0
+odt,account.invoice,0,VAT:,IVA:,0
+selection,"account.invoice.line,invoice_type",0,Credit Note,Abono,0
+selection,"account.invoice.line,invoice_type",0,Invoice,Factura,0
+selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Abono de proveedor,0
+selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Factura de proveedor,0
 selection,"account.invoice.line,type",0,Comment,Comentario,0
 selection,"account.invoice.line,type",0,Line,Línea,0
 selection,"account.invoice.line,type",0,Subtotal,Subtotal,0
 selection,"account.invoice.line,type",0,Title,Título,0
-selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Pago Parcial,0
-selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Exento,0
-selection,"account.invoice,state",0,Canceled,Cancelado,0
+selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Pago parcial,0
+selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Pérdida,0
+selection,"account.invoice,state",0,Canceled,Cancelada,0
 selection,"account.invoice,state",0,Draft,Borrador,0
-selection,"account.invoice,state",0,Open,Abrir,0
-selection,"account.invoice,state",0,Paid,Pagado,0
+selection,"account.invoice,state",0,Opened,Abierto,0
+selection,"account.invoice,state",0,Paid,Pagada,0
 selection,"account.invoice,state",0,Pro forma,Pro forma,0
-selection,"account.invoice,type",0,Credit Note,Nota de Crédito,0
+selection,"account.invoice,type",0,Credit Note,Abono,0
 selection,"account.invoice,type",0,Invoice,Factura,0
-selection,"account.invoice,type",0,Supplier Credit Note,Nota Crédito del Proveedor,0
-selection,"account.invoice,type",0,Supplier Invoice,Factura de Proveedor,0
-view,account.invoice,0,Amount Second Currency,Cantidad en la Moneda Secundaria,0
+selection,"account.invoice,type",0,Supplier Credit Note,Abono del proveedor,0
+selection,"account.invoice,type",0,Supplier Invoice,Factura de proveedor,0
+view,account.invoice,0,Amount Second Currency,Cantidad en la divisa secundaria,0
 view,account.invoice,0,_Cancel,_Cancelar,0
-view,account.invoice,0,Credit,Crédito,0
-view,account.invoice,0,Debit,Débito,0
+view,account.invoice,0,Credit,Haber,0
+view,account.invoice,0,Debit,Debe,0
 view,account.invoice,0,_Draft,_Borrador,0
 view,account.invoice,0,Invoice,Factura,0
 view,account.invoice,0,Invoices,Facturas,0
 view,account.invoice,0,Lines,Líneas,0
 view,account.invoice,0,_Open,_Abrir,0
-view,account.invoice,0,Other Info,Información Adicional,0
-view,account.invoice,0,_Pay,_Pago,0
+view,account.invoice,0,Other Info,Información adicional,0
+view,account.invoice,0,_Pay,_Pagar,0
 view,account.invoice,0,Payment,Pago,0
-view,account.invoice,0,Payment Lines,Líneas de Pago,0
-view,account.invoice,0,Pro For_ma,Pro For_ma,0
-view,account.invoice,0,_Reset to Draft,_Revertir a Borrador,0
+view,account.invoice,0,Payment Lines,Líneas de pago,0
+view,account.invoice,0,Pro For_ma,Pro for_ma,0
+view,account.invoice,0,_Reset to Draft,_Restablecer a borrador,0
 view,account.invoice,0,Taxes,Impuestos,0
-view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Segur@ desea acreditar la(s) factura(s)?,0
-view,account.invoice.credit_invoice.init,0,Credit Invoice,Factura Crédito,0
-view,account.invoice.line,0,Invoice Line,Línea de Factura,0
-view,account.invoice.line,0,Invoice Lines,Líneas de Factura,0
-view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Cantidad en la Moneda Secundaria,0
-view,account.invoice.pay_invoice.ask,0,Credit,Crédito,0
-view,account.invoice.pay_invoice.ask,0,Debit,Débito,0
-view,account.invoice.pay_invoice.ask,0,Lines to Pay,Líneas a Pagar,0
-view,account.invoice.pay_invoice.ask,0,Pay Invoice,Pagar Factura,0
-view,account.invoice.pay_invoice.init,0,Pay Invoice,Pagar Factura,0
-view,account.invoice.payment_term,0,Payment Term,Término de Pago,0
-view,account.invoice.payment_term,0,Payment Term Line,Línea de Término de Pago,0
-view,account.invoice.payment_term,0,Payment Term Lines,Líneas de Término de Pago,0
-view,account.invoice.payment_term,0,Payment Terms,Términos de Pago,0
-view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Advertencia!</b>,0
-view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimir Factura,0
-view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Las facturas serán enviadas <i>directamente</i> a la impresora.,0
-view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Ha elegido más de una factura para imprimir,0
-view,account.invoice.refund_invoice.init,0,Are you sure to refund those/this invoice(s)?,Segur@ desea devolver la(s) factura(s)?,0
-view,account.invoice.refund_invoice.init,0,Refund Invoice,Factura de Devolución,0
-view,account.invoice.tax,0,Invoice Tax,Impuesto en Factura,0
-view,account.invoice.tax,0,Invoice Taxes,Impuestos de Facturas,0
-view,account.invoice.tax,0,Tax Code,Código de Impuesto,0
-view,party.party,0,Payment Terms,Términos de Pago,0
-wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Crédito,0
+view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,¿Está seguro que quiere acreditar esas/esta factura(s)?,0
+view,account.invoice.credit_invoice.init,0,Credit Invoice,Factura crédito,0
+view,account.invoice.line,0,General,General,0
+view,account.invoice.line,0,Invoice Line,Línea de factura,0
+view,account.invoice.line,0,Invoice Lines,Líneas de factura,0
+view,account.invoice.line,0,Notes,Notas,0
+view,account.invoice.line,0,Products,Productos,0
+view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Cantidad en la divisa secundaria,0
+view,account.invoice.pay_invoice.ask,0,Credit,Haber,0
+view,account.invoice.pay_invoice.ask,0,Debit,Debe,0
+view,account.invoice.pay_invoice.ask,0,Lines to Pay,Líneas a pagar,0
+view,account.invoice.pay_invoice.ask,0,Pay Invoice,Pagar factura,0
+view,account.invoice.pay_invoice.ask,0,Payment Lines,Líneas de pago,0
+view,account.invoice.pay_invoice.init,0,Pay Invoice,Pagar factura,0
+view,account.invoice.payment_term,0,Payment Term,Término de pago,0
+view,account.invoice.payment_term,0,Payment Term Line,Línea de término de pago,0
+view,account.invoice.payment_term,0,Payment Term Lines,Líneas de término de pago,0
+view,account.invoice.payment_term,0,Payment Terms,Términos de pago,0
+view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Atención</b>,0
+view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimir factura,0
+view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Las facturas se enviarán <i>directamente</i> a la impresora.,0
+view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Ha elegido más de una factura para imprimir.,0
+view,account.invoice.tax,0,Invoice Tax,Impuesto de factura,0
+view,account.invoice.tax,0,Invoice Taxes,Impuestos de factura,0
+view,account.invoice.tax,0,Tax Code,Código de impuesto,0
+view,party.party,0,Payment Terms,Términos de pago,0
+wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Haber,0
 wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Cancelar,0
 wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Cancelar,0
 wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Aceptar,0
diff --git a/fr_FR.csv b/fr_FR.csv
index b4f8eec..708712f 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -1,53 +1,63 @@
 type,name,res_id,src,value,fuzzy
 error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,Vous ne pouvez pas changer la séquence de facture si il y a déjà une facture ouverte dans l'année fiscale,0
-error,account.fiscalyear,0,You must have different invoice sequence per fiscal year!,Vous devez utiliser des séquence de facture différentes par année fiscale !,0
+error,account.fiscalyear,0,You must have different invoice sequences per fiscal year!,Vous devez utiliser des séquences de facture différentes par année fiscale !,0
 error,account.invoice,0,"Base taxes different from invoice lines!
 Re-compute the invoice.","Le montant de base des taxes sont différents des lignes de facture !
 Re-calculez la facture.",0
-error,account.invoice,0,Credit account on journal is the same than the invoice account!,Le compte de crédit sur le journal est le même que le compte de la facture !,0
-error,account.invoice,0,Debit account on journal is the same than the invoice account!,Le compte de débit sur le journal est le même que le compte de la facture !,0
-error,account.invoice,0,"Taxes defined but not in invoice lines!
+error,account.invoice,0,"Taxes defined but not on invoice lines!
 Re-compute the invoice.","Des taxes sont définies mais pas sur les lignes de facture !
 Re-calculez la facture.",0
 error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
 Re-compute the invoice.","Des taxes sont définies sur les lignes de facture mais pas sur la facture !
 Re-calculez la facture.",0
 error,account.invoice,0,The credit account on journal is missing!,Le compte de crédit sur le journal est manquant !,0
+error,account.invoice,0,The credit account on journal is the same than the invoice account!,Le compte de crébit sur le journal est le même que le compte de la facture !,0
 error,account.invoice,0,The debit account on journal is missing!,Le compte de débit sur le journal est manquant !,0
+error,account.invoice,0,The debit account on journal is the same than the invoice account!,Le compte de débit sur le journal est le même que le compte de la facture !,0
 error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Il n'y a pas de séquence de facture sur la période/année fiscale !,0
 error,account.invoice,0,"You can not create an invoice
 with account from a different invoice company!","Vous ne pouvez pas créer une facture
-avec un compte d'une compagnie de facturation différente !",0
-error,account.invoice,0,"You can not modify invoice that is open, paid or canceled!",Vous ne pouvez pas modifier une facture qui est ouverte ou annullée !,0
-error,account.invoice,0,You can not reset to draft an invoice that have move!,Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !,0
+avec un compte d'une société de facturation différente !",0
+error,account.invoice,0,"You can not modify an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier une facture qui est ouverte, payée ou annulée !",0
+error,account.invoice,0,You can not reset to draft an invoice that has move!,Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !,0
 error,account.invoice,0,"You can not use the same account
-than on invoice line account!","Vous ne pouvez pas utiliser le même compte
-qu'un d'une ligne de facture !",0
-error,account.invoice.line,0,Line type must have an account!,Le type de ligne doit avoir un compte,0
-error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée our annullée !",0
+as on invoice line!","Vous ne pouvez pas utiliser le même compte
+que sur la ligne de facture !",0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice that is not opened!,Vous ne pouvez pas créditer avec un remboursement une facture qui n'est pas ouverte !,0
+error,account.invoice.credit_invoice,0,You can not credit with refund an invoice with payments!,Vous ne pouvez pas créditer avec un remboursement une facture avec paiements !,0
+error,account.invoice.line,0,"Line with ""line"" type must have an account!","Ligne de type ""ligne"" doit avoir un compte !",0
+error,account.invoice.line,0,"Line without ""line"" type must have an invoice!","Ligne sans type ""ligne"" doit avoir une facture !",0
+error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée our annulée !",0
 error,account.invoice.line,0,"You can not create invoice line
-with account from a different invoice company!","Vous ne pouvez pas créer de ligne de facture
-avec un compte d'une différente compagnie de facturation !",0
-error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte, payée our annullée !",0
+with account with a different invoice company!","Vous ne pouvez pas créer de ligne de facture
+avec un compte d'une différente société que celle de la  facture !",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte, payée our annulée !",0
 error,account.invoice.line,0,"You can not use the same account
-than the invoice account!","Vous ne pouvez pas utiliser le même compte
-que le compte de la facture !",0
+as on the invoice!","Vous ne pouvez pas utilier le même compte
+que celui de la factiure !",0
+error,account.invoice.pay_invoice,0,You can not create a partial payment with an amount greater then the amount to pay!,Vous ne pouvez pas créer un paiement partiel dont le montant est supérieur au montant qu'il reste à payer !,0
 error,account.invoice.payment_term,0,Invalid payment term line!,Ligne de condition de paiement non-valide !,0
-error,account.invoice.payment_term,0,Payment term missing a remainder line!,La condition de paiement manque un ligne de reste !,0
-error,account.invoice.payment_term.line.delay,0,Code must be unique!,Le code doit être unique !,0
-error,account.invoice.payment_term.line.type,0,Code must be unique!,Le code doit être unique !,0
-error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou annullée !",0
-error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte, payée ou annullée !",0
+error,account.invoice.payment_term,0,Payment term missing a remainder line!,La condition de paiement manque une ligne de reste !,0
+error,account.invoice.payment_term.line.delay,0,The code must be unique!,Le code doit être unique !,0
+error,account.invoice.payment_term.line.type,0,The code must be unique!,Le code doit être unique !,0
+error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou annulée !",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte, payée ou annulée !",0
 error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,Vous ne pouvez pas changer la séquence de facture s'il y a déjà une facture ouverte dans la période,0
+error,account.period,0,You must have different invoice sequences per fiscal year and in the same company!,Vous devez avoir des séquences de facture différentes par année fiscale et dans la même société !,0
 field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Séquence des notes de crédit fournisseur,0
 field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Séquence de facture fournisseur,0
 field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Séquence des notes de crédit client,0
 field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Séquence de facture client,0
 field,"account.invoice,account",0,Account,Compte,0
+field,"account.invoice,accounting_date",0,Accounting Date,Date comptable,0
+field,"account.invoice-account.move.line,invoice",0,Invoice,Facture,0
+field,"account.invoice-account.move.line,line",0,Payment Line,Ligne de paiement,0
+field,"account.invoice-account.move.line,rec_name",0,Name,Nom,0
 field,"account.invoice,amount_to_pay",0,Amount to Pay,Montant à payer,0
 field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Montant à payer aujourd'hui,0
 field,"account.invoice,comment",0,Comment,Commentaire,0
-field,"account.invoice,company",0,Company,Compagnie,0
+field,"account.invoice,company",0,Company,Société,0
+field,"account.invoice.credit_invoice.init,with_refund",0,With Refund,Avec remboursement,0
 field,"account.invoice,currency",0,Currency,Devise,0
 field,"account.invoice,currency_digits",0,Currency Digits,Décimales de la devise,0
 field,"account.invoice,description",0,Description,Description,0
@@ -57,11 +67,22 @@ field,"account.invoice,invoice_report",0,Invoice Report,Rapport de facturation,0
 field,"account.invoice,invoice_report_format",0,Invoice Report Format,Format du rapport de facturation,0
 field,"account.invoice,journal",0,Journal,Journal,0
 field,"account.invoice.line,account",0,Account,Compte,0
+field,"account.invoice.line-account.tax,line",0,Invoice Line,Ligne de facture,0
+field,"account.invoice.line-account.tax,rec_name",0,Name,Nom,0
+field,"account.invoice.line-account.tax,tax",0,Tax,Taxe,0
 field,"account.invoice.line,amount",0,Amount,Montant,0
+field,"account.invoice.line,company",0,Company,Société,0
+field,"account.invoice.line,currency",0,Currency,Devise,0
+field,"account.invoice.line,currency_digits",0,Currency Digits,Décimales de la devise,0
 field,"account.invoice.line,description",0,Description,Description,0
 field,"account.invoice.line,invoice",0,Invoice,Facture,0
+field,"account.invoice.line,invoice_taxes",0,Invoice Taxes,Taxes de le facture,0
+field,"account.invoice.line,invoice_type",0,Invoice Type,Type de facture,0
+field,"account.invoice.line,note",0,Note,Note,0
+field,"account.invoice.line,party",0,Party,Tiers,0
 field,"account.invoice.line,product",0,Product,Produit,0
 field,"account.invoice.line,quantity",0,Quantity,Quantité,0
+field,"account.invoice.line,rec_name",0,Name,Nom,0
 field,"account.invoice,lines",0,Lines,Lignes,0
 field,"account.invoice.line,sequence",0,Sequence,Séquence,0
 field,"account.invoice,lines_to_pay",0,Lines to Pay,Lignes à payer,0
@@ -73,18 +94,24 @@ field,"account.invoice.line,unit_price",0,Unit Price,Prix unitaire,0
 field,"account.invoice,move",0,Move,Mouvement,0
 field,"account.invoice,number",0,Number,Numéro,0
 field,"account.invoice,party",0,Party,Tiers,0
+field,"account.invoice,party_lang",0,Party Language,Langue du tiers,0
 field,"account.invoice.pay_invoice.ask,account",0,Account,Compte,0
-field,"account.invoice.pay_invoice.ask,account_writeoff",0,Account,Compte,0
-field,"account.invoice.pay_invoice.ask,amount",0,Amount,Montant,0
-field,"account.invoice.pay_invoice.ask,company",0,Company,Compagnie,0
-field,"account.invoice.pay_invoice.ask,currency",0,Currency,Devise,0
-field,"account.invoice.pay_invoice.ask,currency_digits",0,Currency Digits,Décimales de la devise,0
+field,"account.invoice.pay_invoice.ask,account_writeoff",0,Write-Off Account,Compte de pertes et profits,0
+field,"account.invoice.pay_invoice.ask,amount",0,Payment Amount,Montant,0
+field,"account.invoice.pay_invoice.ask,amount_writeoff",0,Write-Off Amount,Montant de pertes et profits,0
+field,"account.invoice.pay_invoice.ask,company",0,Company,Société,0
+field,"account.invoice.pay_invoice.ask,currency",0,Payment Currency,Devise,0
+field,"account.invoice.pay_invoice.ask,currency_digits",0,Payment Currency Digits,Décimales de la devise,0
+field,"account.invoice.pay_invoice.ask,currency_digits_writeoff",0,Write-Off Currency Digits,Décimales de la devise de pertes et profits,0
+field,"account.invoice.pay_invoice.ask,currency_writeoff",0,Write-Off Currency,Devise pertes et profits,0
 field,"account.invoice.pay_invoice.ask,date",0,Date,Date,0
 field,"account.invoice.pay_invoice.ask,description",0,Description,Description,0
+field,"account.invoice.pay_invoice.ask,invoice",0,Invoice,Facture,0
 field,"account.invoice.pay_invoice.ask,journal",0,Journal,Journal,0
-field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Journal,Journal,0
+field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Write-Off Journal,Journal,0
 field,"account.invoice.pay_invoice.ask,lines",0,Lines,Lignes,0
 field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Lignes à payer,0
+field,"account.invoice.pay_invoice.ask,payment_lines",0,Payment Lines,Lignes de paiement,0
 field,"account.invoice.pay_invoice.ask,type",0,Type,Type,0
 field,"account.invoice.pay_invoice.init,amount",0,Amount,Montant,0
 field,"account.invoice.pay_invoice.init,currency",0,Currency,Devise,0
@@ -103,14 +130,19 @@ field,"account.invoice.payment_term.line,days",0,Number of Days,Nombre de jours,
 field,"account.invoice.payment_term.line,delay",0,Condition,Condition,0
 field,"account.invoice.payment_term.line.delay,code",0,Code,Code,0
 field,"account.invoice.payment_term.line.delay,name",0,Name,Nom,0
+field,"account.invoice.payment_term.line.delay,rec_name",0,Name,Nom,0
 field,"account.invoice.payment_term.line,payment",0,Payment Term,Condition de paiement,0
-field,"account.invoice.payment_term.line,percent",0,Percent,Pourcent,0
+field,"account.invoice.payment_term.line,percentage",0,Percentage,Pourcentage,0
+field,"account.invoice.payment_term.line,rec_name",0,Name,Nom,0
 field,"account.invoice.payment_term,lines",0,Lines,Lignes,0
 field,"account.invoice.payment_term.line,sequence",0,Sequence,Séquence,0
 field,"account.invoice.payment_term.line,type",0,Type,Type,0
 field,"account.invoice.payment_term.line.type,code",0,Code,Code,0
 field,"account.invoice.payment_term.line.type,name",0,Name,Nom,0
+field,"account.invoice.payment_term.line.type,rec_name",0,Name,Nom,0
 field,"account.invoice.payment_term,name",0,Payment Term,Condition de paiement,0
+field,"account.invoice.payment_term,rec_name",0,Name,Nom,0
+field,"account.invoice,rec_name",0,Name,Nom,0
 field,"account.invoice,reconciled",0,Reconciled,Réconcilié,0
 field,"account.invoice,reference",0,Reference,Référence,0
 field,"account.invoice,state",0,State,État,0
@@ -124,7 +156,10 @@ field,"account.invoice.tax,description",0,Description,Description,0
 field,"account.invoice,taxes",0,Tax Lines,Lignes de taxe,0
 field,"account.invoice.tax,invoice",0,Invoice,Facture,0
 field,"account.invoice.tax,manual",0,Manual,Manuel,0
+field,"account.invoice.tax,rec_name",0,Name,Nom,0
 field,"account.invoice.tax,sequence",0,Sequence,Séquence,0
+field,"account.invoice.tax,sequence_number",0,Sequence Number,Numéro de séquence,0
+field,"account.invoice.tax,tax",0,Tax,Taxe,0
 field,"account.invoice.tax,tax_code",0,Tax Code,Code de taxe,0
 field,"account.invoice.tax,tax_sign",0,Tax Sign,Signe de taxe,0
 field,"account.invoice,total_amount",0,Total,Total,0
@@ -136,63 +171,129 @@ field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Séquence
 field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Séquence des notes de crédit client,0
 field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Séquence de facture client,0
 field,"party.address,invoice",0,Invoice,Facture,0
-field,"party.party,payment_term",0,Invoice Payment Term,Condition de paiement de client,0
-field,"party.party,supplier_payment_term",0,Supplier Payment Term,Condition de paiement de fournisseur,0
+field,"party.party,payment_term",0,Invoice Payment Term,Conditions de paiement du client,0
+field,"party.party,supplier_payment_term",0,Supplier Payment Term,Conditions de paiement du fournisseur,0
+help,"account.invoice.credit_invoice.init,with_refund",0,"If true, the current invoice(s) will be paid.","Si vrai, les factures seront payées.",0
+help,"account.invoice.payment_term.line,percentage",0,In %,En %,0
 help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Utilisé pour trier les lignes en ordre croissant,0
+model,"account.invoice-account.move.line,name",0,Invoice - Payment Line,Facture - Ligne de paiement,0
+model,"account.invoice.credit_invoice.init,name",0,Credit Invoice Init,Crediter la facture - Init,0
+model,"account.invoice.line-account.tax,name",0,Invoice Line - Tax,Ligne de facture - Taxe,0
+model,"account.invoice.line,name",0,Invoice Line,Ligne de Facture,0
+model,"account.invoice,name",0,Invoice,Facture,0
+model,"account.invoice.pay_invoice.ask,name",0,Pay Invoice Ask,Payer la facture - Demande,0
+model,"account.invoice.pay_invoice.init,name",0,Pay Invoice Init,Payer la facture - Init,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,fin du mois,0
 model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Jours,0
+model,"account.invoice.payment_term.line.delay,name",0,Payment Term Line Delay,Délai de ligne de condition de paiement,0
+model,"account.invoice.payment_term.line,name",0,Payment Term Line,Ligne de condition de paiement,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fixe,0
-model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percent,Pourcent,0
+model,"account.invoice.payment_term.line.type,name",0,Payment Term Line Type,Type de line de condition de paiement,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percentage,Pourcentage,0
 model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Reste,0
+model,"account.invoice.payment_term,name",0,Payment Term,Conditions de paiement,0
+model,"account.invoice.print_invoice_report.warning,name",0,Print Invoice Report Warning,Imprimer de la factures - Avertissement,0
+model,"account.invoice.tax,name",0,Invoice Tax,Tax de facture,0
 model,"ir.action,name",act_invoice_form,All Invoices,Toutes les factures,0
 model,"ir.action,name",credit_invoice,Credit,Crédit,0
 model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Notes de crédit,0
+model,"ir.action,name",act_invoice_out_credit_note_form2,Credit Notes,Notes de crédit,0
+model,"ir.action,name",act_invoice_out_credit_note_form3,Draft Credit Notes,Notes de crédit en brouillon,0
+model,"ir.action,name",act_invoice_out_invoice_form3,Draft Invoices,Factures en brouillon,0
+model,"ir.action,name",act_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Notes de crédit fournisseurs en brouillon,0
+model,"ir.action,name",act_invoice_in_invoice_form3,Draft Supplier Invoices,Factures fournisseurs ouvertes,0
 model,"ir.action,name",report_invoice,Invoice,Facture,0
 model,"ir.action,name",print_invoice_report,Invoice,Facture,0
 model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Factures,0
+model,"ir.action,name",act_invoice_out_invoice_form2,Invoices,Factures,0
+model,"ir.action,name",act_invoice_form2,Invoices,Factures,0
+model,"ir.action,name",act_invoice_out_credit_note_form5,Opened Credit Notes,Notes de crédit ouvertes,0
+model,"ir.action,name",act_invoice_out_invoice_form5,Opened Invoices,Factures ouvertes,0
+model,"ir.action,name",act_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Notes de crédit fournisseurs ouvertes,0
+model,"ir.action,name",act_invoice_in_invoice_form5,Opened Supplier Invoices,Factures fournisseurs ouvertes,0
 model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Payer facture,0
 model,"ir.action,name",act_payment_term_form,Payment Terms,Conditions de paiement,0
+model,"ir.action,name",act_invoice_out_credit_note_form4,Pro Forma Credit Notes,Notes de crédit pro forma,0
+model,"ir.action,name",act_invoice_out_invoice_form4,Pro Forma Invoices,Factures pro forma,0
+model,"ir.action,name",act_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Notes de crédit fournisseurs pro forma,0
+model,"ir.action,name",act_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factures fournisseurs pro forma,0
 model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
-model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Facture fournisseurs,0
+model,"ir.action,name",act_invoice_in_credit_note_form2,Supplier Credit Notes,Notes de crédit fournisseurs,0
+model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Factures fournisseurs,0
+model,"ir.action,name",act_invoice_in_invoice_form2,Supplier Invoices,Factures fournisseurs,0
 model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Facture,0
 model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Toutes les factures,0
 model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Notes de crédit,0
-model,"ir.ui.menu,name",menu_invoices_configuration,Invoices,Factures,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form3,Draft Credit Notes,Notes de crédit en brouillon,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form3,Draft Invoices,Factures en brouillon,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form3,Draft Supplier Credit Notes,Notes de crédit fournisseur en brouillon,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form3,Draft Supplier Invoices,Factures fournisseurs en brouillon,0
 model,"ir.ui.menu,name",menu_invoices,Invoices,Factures,0
 model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Factures,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form2,New Credit Note,Nouvelle note de crédit,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form2,New Invoice,Nouvelle facture,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form2,New Supplier Credit Note,Nouvelle note de crédit fournisseur,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form2,New Supplier Invoice,Nouvelle facture fournisseur,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form5,Opened Credit Notes,Notes de crédit ouvertes,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form5,Opened Invoices,Factures ouvertes,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form5,Opened Supplier Credit Notes,Notes de crédit fournisseur ouvertes,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form5,Opened Supplier Invoices,Factures fournisseurs ouvertes,0
+model,"ir.ui.menu,name",menu_payment_terms_configuration,Payment Terms,Conditions de paiement,0
 model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Conditions de paiement,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form4,Pro Forma Credit Notes,Notes de crédit pro forma,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form4,Pro Forma Invoices,Factures pro forma,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form4,Pro Forma Supplier Credit Notes,Notes de crédit fournisseur pro forma,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form4,Pro Forma Supplier Invoices,Factures fournisseurs pro forma,0
 model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
-model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Factures fournisseur,0
-model,"workflow.activity,name",invoice_activity_cancel,Cancel,Annulé,0
-model,"workflow.activity,name",invoice_activity_draft,Draft,Brouilon,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Factures fournisseurs,0
+model,"workflow.activity,name",invoice_activity_cancel,Canceled,Annulé,0
+model,"workflow.activity,name",invoice_activity_draft,Draft,Brouillon,0
 model,"workflow.activity,name",invoice_activity_open,Open,Ouvert,0
 model,"workflow.activity,name",invoice_activity_paid,Paid,Payé,0
 model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
 model,"workflow,name",invoice_workflow,Invoice workflow,Workflow facture,0
 odt,account.invoice,0,Amount,Montant,0
 odt,account.invoice,0,Base,Base,0
+odt,account.invoice,0,Credit Note N°:,N° de note de crédit :,0
 odt,account.invoice,0,Date,Date,0
 odt,account.invoice,0,Date:,Date :,0
 odt,account.invoice,0,Description,Description,0
 odt,account.invoice,0,Description:,Description :,0
+odt,account.invoice,0,Draft Credit Note,Note de crédit brouillon,0
+odt,account.invoice,0,Draft Invoice,Facture brouillon,0
+odt,account.invoice,0,Draft Supplier Credit Note,Note de crédit fournisseur brouillon,0
+odt,account.invoice,0,Draft Supplier Invoice,Facture fournisseur brouillon,0
+odt,account.invoice,0,E-Mail:,E-Mail:,0
+odt,account.invoice,0,Invoice N°:,N° de facture :,0
 odt,account.invoice,0,Payment Term,Condition de paiement,0
+odt,account.invoice,0,Phone:,Téléphone,0
+odt,account.invoice,0,Pro forma Credit Note,Note de crédit pro forma,0
+odt,account.invoice,0,Pro forma Invoice,Facture pro forma,0
+odt,account.invoice,0,Pro forma Supplier Credit Note,Note de crédit fournisseur pro forma,0
+odt,account.invoice,0,Pro forma Supplier Invoice,Facture fournisseur pro forma,0
 odt,account.invoice,0,Quantity,Quantité,0
+odt,account.invoice,0,Supplier Credit Note N°:,N° de note de crédit fournisseur :,0
+odt,account.invoice,0,Supplier Invoice N°:,N° de facture fournisseur :,0
 odt,account.invoice,0,Tax,Taxe,0
 odt,account.invoice,0,Taxes,Taxes,0
 odt,account.invoice,0,Taxes:,Taxes :,0
 odt,account.invoice,0,Total:,Total :,0
 odt,account.invoice,0,Total (excl. taxes):,Total (hors-taxes) :,0
 odt,account.invoice,0,Unit Price,Prix unitaire,0
-odt,account.invoice,0,VAT:,TAV :,0
+odt,account.invoice,0,VAT:,TVA :,0
+selection,"account.invoice.line,invoice_type",0,Credit Note,Note de crédit,0
+selection,"account.invoice.line,invoice_type",0,Invoice,Facture,0
+selection,"account.invoice.line,invoice_type",0,Supplier Credit Note,Note de crédit fournisseur,0
+selection,"account.invoice.line,invoice_type",0,Supplier Invoice,Facture fournisseur,0
 selection,"account.invoice.line,type",0,Comment,Commentaire,0
 selection,"account.invoice.line,type",0,Line,Ligne,0
 selection,"account.invoice.line,type",0,Subtotal,Sous-total,0
 selection,"account.invoice.line,type",0,Title,Titre,0
 selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Paiement partiel,0
-selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Différence,0
+selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Pertes et profits,0
 selection,"account.invoice,state",0,Canceled,Annulé,0
 selection,"account.invoice,state",0,Draft,Brouillon,0
-selection,"account.invoice,state",0,Open,Ouverte,0
+selection,"account.invoice,state",0,Opened,Ouvert,0
 selection,"account.invoice,state",0,Paid,Payée,0
 selection,"account.invoice,state",0,Pro forma,Pro forma,0
 selection,"account.invoice,type",0,Credit Note,Note de crédit,0
@@ -217,22 +318,26 @@ view,account.invoice,0,_Reset to Draft,_Remettre en brouillon,0
 view,account.invoice,0,Taxes,Taxes,0
 view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Etes-vous sûr de vouloir créditer cette/ces factures ?,0
 view,account.invoice.credit_invoice.init,0,Credit Invoice,Facture de crédit,0
-view,account.invoice.line,0,Invoice Line,Ligne de Facture,0
-view,account.invoice.line,0,Invoice Lines,Lignes de Facture,0
+view,account.invoice.line,0,General,Général,0
+view,account.invoice.line,0,Invoice Line,Ligne de facture,0
+view,account.invoice.line,0,Invoice Lines,Lignes de facture,0
+view,account.invoice.line,0,Notes,Notes,0
+view,account.invoice.line,0,Products,Produits,0
 view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Montant en devise secondaire,0
 view,account.invoice.pay_invoice.ask,0,Credit,Crédit,0
 view,account.invoice.pay_invoice.ask,0,Debit,Débit,0
 view,account.invoice.pay_invoice.ask,0,Lines to Pay,Lignes à payer,0
 view,account.invoice.pay_invoice.ask,0,Pay Invoice,Payer la facture,0
+view,account.invoice.pay_invoice.ask,0,Payment Lines,Lignes de paiement,0
 view,account.invoice.pay_invoice.init,0,Pay Invoice,Payer la facture,0
-view,account.invoice.payment_term,0,Payment Term,Condition de paiement,0
+view,account.invoice.payment_term,0,Payment Term,Conditions de paiement,0
 view,account.invoice.payment_term,0,Payment Term Line,Ligne de condition de paiement,0
 view,account.invoice.payment_term,0,Payment Term Lines,Lignes de condition de paiement,0
 view,account.invoice.payment_term,0,Payment Terms,Conditions de paiement,0
 view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Attention!</b>,0
 view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimer la facture,0
 view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Les factures seront envoyées <i>directement</i> à l'imprimante.,0
-view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Vous avez selectioné plus d'une facture à imprimer.,0
+view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Vous avez sélectionné plus d'une facture à imprimer.,0
 view,account.invoice.tax,0,Invoice Tax,Taxes de le facture,0
 view,account.invoice.tax,0,Invoice Taxes,Taxes de le facture,0
 view,account.invoice.tax,0,Tax Code,Code de taxe,0
diff --git a/invoice.odt b/invoice.odt
index 3ec16c7..f49be6f 100644
Binary files a/invoice.odt and b/invoice.odt differ
diff --git a/invoice.py b/invoice.py
index 77099ae..7a16a86 100644
--- a/invoice.py
+++ b/invoice.py
@@ -1,21 +1,24 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 "Invoice"
-
-from trytond.osv import fields, OSV
-import datetime
-import mx.DateTime
-from decimal import Decimal
-from trytond.netsvc import LocalService
+from trytond.model import ModelWorkflow, ModelView, ModelSQL, fields
 from trytond.report import Report
-from trytond.wizard import Wizard, WizardOSV
-from trytond.pooler import get_pool_report
+from trytond.wizard import Wizard
+from trytond.backend import TableHandler
+from decimal import Decimal
 import base64
 
 _STATES = {
     'readonly': "state != 'draft'",
 }
 
+_TYPE = [
+    ('out_invoice', 'Invoice'),
+    ('in_invoice', 'Supplier Invoice'),
+    ('out_credit_note', 'Credit Note'),
+    ('in_credit_note', 'Supplier Credit Note'),
+]
+
 _TYPE2JOURNAL = {
     'out_invoice': 'revenue',
     'in_invoice': 'expense',
@@ -24,222 +27,18 @@ _TYPE2JOURNAL = {
 }
 
 
-class PaymentTerm(OSV):
-    'Payment Term'
-    _name = 'account.invoice.payment_term'
-    _description = __doc__
-    name = fields.Char('Payment Term', 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',
-            'Lines')
-
-    def __init__(self):
-        super(PaymentTerm, self).__init__()
-        self._order.insert(0, ('name', 'ASC'))
-        self._error_messages.update({
-            'invalid_line': 'Invalid payment term line!',
-            'missing_remainder': 'Payment term missing a remainder line!',
-            })
-
-    def default_active(self, cursor, user, context=None):
-        return True
-
-    def compute(self, cursor, user, amount, currency, payment_term, date=None,
-            context=None):
-        '''
-        Return list with (date, amount) for each payment term lines
-        '''
-        #TODO implement business_days
-        # http://pypi.python.org/pypi/BusinessHours/
-        type_obj = self.pool.get('account.invoice.payment_term.line.type')
-        delay_obj = self.pool.get(
-                'account.invoice.payment_term.line.delay')
-        currency_obj = self.pool.get('currency.currency')
-        date_obj = self.pool.get('ir.date')
-
-        res = []
-        if date is None:
-            date = date_obj.today(cursor, user, context=context)
-        remainder = amount
-        for line in payment_term.lines:
-            value = type_obj.get_value(cursor, user, line, remainder, currency,
-                    context)
-            value_date = delay_obj.get_date(cursor, user, line, date, context)
-            if not value or not value_date:
-                if (not remainder) and line.amount:
-                    self.raise_user_error(cursor, 'invalid_line',
-                            context=context)
-                else:
-                    continue
-            res.append((value_date, value))
-            remainder -= value
-        if not currency_obj.is_zero(cursor, user, currency, remainder):
-            self.raise_user_error(cursor, 'missing_remainder',
-                    context=context)
-        return res
-
-PaymentTerm()
-
-
-class PaymentTermLineType(OSV):
-    'Payment Term Line Type'
-    _name = 'account.invoice.payment_term.line.type'
-    _description = __doc__
-    name = fields.Char('Name', size=None, translate=True, required=True)
-    code = fields.Char('Code', size=None, required=True)
-
-    def __init__(self):
-        super(PaymentTermLineType, self).__init__()
-        self._sql_constraints += [
-            ('code_uniq', 'UNIQUE(code)', 'Code must be unique!'),
-        ]
-        self._order.insert(0, ('name', 'ASC'))
-
-    def get_value(self, cursor, user, line, amount, currency, context=None):
-        currency_obj = self.pool.get('currency.currency')
-        if line.type == 'fixed':
-            return currency_obj.compute(cursor, user, line.currency,
-                    line.amount, currency, context=context)
-        elif line.type == 'percent':
-            return currency_obj.round(cursor, user, currency, amount * line.percent)
-        elif line.type == 'remainder':
-            return currency_obj.round(cursor, user, currency, amount)
-        return None
-
-PaymentTermLineType()
-
-
-class PaymentTermLineDelay(OSV):
-    'Payment Term Line Delay'
-    _name = 'account.invoice.payment_term.line.delay'
-    _description = __doc__
-    name = fields.Char('Name', size=None, translate=True, required=True)
-    code = fields.Char('Code', size=None, required=True)
-
-    def __init__(self):
-        super(PaymentTermLineDelay, self).__init__()
-        self._sql_constraints += [
-            ('code_uniq', 'UNIQUE(code)', 'Code must be unique!'),
-        ]
-        self._order.insert(0, ('name', 'ASC'))
-
-    def get_date(self, cursor, user, line, date, context=None):
-        value = None
-        if line.delay == 'net_days':
-            value = mx.DateTime.strptime(str(date), '%Y-%m-%d') + \
-                    mx.DateTime.RelativeDateTime(days=line.days)
-        elif line.delay == 'end_month':
-            value = mx.DateTime.strptime(str(date), '%Y-%m-%d') + \
-                    mx.DateTime.RelativeDateTime(days=line.days) + \
-                    mx.DateTime.RelativeDateTime(day=-1)
-        if value:
-            return datetime.date(value.year, value.month, value.day)
-        return None
-
-PaymentTermLineDelay()
-
-
-class PaymentTermLine(OSV):
-    'Payment Term Line'
-    _name = 'account.invoice.payment_term.line'
-    _description = __doc__
-    sequence = fields.Integer('Sequence',
-            help='Use to order lines in ascending order')
-    payment = fields.Many2One('account.invoice.payment_term', 'Payment Term',
-            required=True, ondelete="CASCADE")
-    type = fields.Selection('get_type', 'Type', required=True,
-            on_change=['type'])
-    percent = fields.Numeric('Percent', digits=(16, 8),
-            states={
-                'invisible': "type != 'percent'",
-                'required': "type == 'percent'",
-            })
-    amount = fields.Numeric('Amount', digits="(16, currency_digits)",
-            states={
-                'invisible': "type != 'fixed'",
-                'required': "type == 'fixed'",
-            })
-    currency = fields.Many2One('currency.currency', 'Currency',
-            states={
-                'invisible': "type != 'fixed'",
-                'required': "type == 'fixed'",
-            })
-    currency_digits = fields.Function('get_currency_digits', type='integer',
-            string='Currency Digits', on_change_with=['currency'])
-    days = fields.Integer('Number of Days')
-    delay = fields.Selection('get_delay', 'Condition', required=True)
-
-    def __init__(self):
-        super(PaymentTermLine, self).__init__()
-        self._order.insert(0, ('sequence', 'ASC'))
-
-    def default_type(self, cursor, user, context=None):
-        return 'remainder'
-
-    def default_delay(self, cursor, user, context=None):
-        return 'net_days'
-
-    def get_type(self, cursor, user, context=None):
-        type_obj = self.pool.get('account.invoice.payment_term.line.type')
-        type_ids = type_obj.search(cursor, user, [], context=context)
-        types = type_obj.browse(cursor, user, type_ids, context=context)
-        return [(x.code, x.name) for x in types]
-
-    def get_delay(self, cursor, user, context=None):
-        delay_obj = self.pool.get('account.invoice.payment_term.line.delay')
-        delay_ids = delay_obj.search(cursor, user, [], context=context)
-        delays = delay_obj.browse(cursor, user, delay_ids,
-                context=context)
-        return [(x.code, x.name) for x in delays]
-
-    def on_change_type(self, cursor, user, ids, vals, context=None):
-        if not 'type' in vals:
-            return {}
-        res = {}
-        if vals['type'] != 'fixed':
-            res['amount'] = Decimal('0.0')
-            res['currency'] =  False
-        if vals['type'] != 'percent':
-            res['percent'] =  Decimal('0.0')
-        return res
-
-    def on_change_with_currency_digits(self, cursor, user, ids, vals,
-            context=None):
-        currency_obj = self.pool.get('currency.currency')
-        if vals.get('currency'):
-            currency = currency_obj.browse(cursor, user, vals['currency'],
-                    context=context)
-            return currency.digits
-        return 2
-
-    def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
-        res = {}
-        for line in self.browse(cursor, user, ids, context=context):
-            if line.currency:
-                res[line.id] = line.currency.digits
-            else:
-                res[line.id] = 2
-        return res
-
-PaymentTermLine()
-
-
-class Invoice(OSV):
+class Invoice(ModelWorkflow, ModelSQL, ModelView):
     'Invoice'
     _name = 'account.invoice'
     _description = __doc__
     _order_name = 'number'
     company = fields.Many2One('company.company', 'Company', required=True,
-            states=_STATES)
-    type = fields.Selection([
-        ('out_invoice', 'Invoice'),
-        ('in_invoice', 'Supplier Invoice'),
-        ('out_credit_note', 'Credit Note'),
-        ('in_credit_note', 'Supplier Credit Note'),
-        ], 'Type', select=1, on_change=['type'], required=True, states={
-            'readonly': "state != 'draft' or context.get('type', False)",
-        })
+            states=_STATES, domain="[('id', '=', context.get('company', 0))]")
+    type = fields.Selection(_TYPE, 'Type', select=1, on_change=['type'],
+            required=True, states={
+                'readonly': "state != 'draft' or context.get('type', False)" \
+                        " or (bool(lines) and bool(type))",
+            })
     type_name = fields.Function('get_type_name', type='char', string='Type')
     number = fields.Char('Number', size=None, readonly=True, select=1)
     reference = fields.Char('Reference', size=None)
@@ -247,15 +46,18 @@ class Invoice(OSV):
     state = fields.Selection([
         ('draft', 'Draft'),
         ('proforma', 'Pro forma'),
-        ('open', 'Open'),
+        ('open', 'Opened'),
         ('paid', 'Paid'),
         ('cancel', 'Canceled'),
         ], 'State', readonly=True)
     invoice_date = fields.Date('Invoice Date', required=True,
         states=_STATES)
+    accounting_date = fields.Date('Accounting Date', states=_STATES)
     party = fields.Many2One('party.party', 'Party', change_default=True,
         required=True, states=_STATES, on_change=['party', 'payment_term',
             'type', 'company'])
+    party_lang = fields.Function('get_party_language', type='char',
+            string='Party Language', on_change_with=['party'])
     invoice_address = fields.Many2One('party.address', 'Invoice Address',
         required=True, states=_STATES, domain="[('party', '=', party)]")
     currency = fields.Many2One('currency.currency', 'Currency', required=True,
@@ -278,18 +80,20 @@ class Invoice(OSV):
         states=_STATES, on_change=['lines', 'taxes', 'currency', 'party', 'type'])
     comment = fields.Text('Comment')
     untaxed_amount = fields.Function('get_untaxed_amount', type='numeric',
-            digits="(16, currency_digits)", string='Untaxed')
+            digits="(16, currency_digits)", string='Untaxed',
+            fnct_search='search_untaxed_amount')
     tax_amount = fields.Function('get_tax_amount', type='numeric',
-            digits="(16, currency_digits)", string='Tax')
+            digits="(16, currency_digits)", string='Tax',
+            fnct_search='search_tax_amount')
     total_amount = fields.Function('get_total_amount', type='numeric',
-            digits="(16, currency_digits)", string='Total')
+            digits="(16, currency_digits)", string='Total',
+            fnct_search='search_total_amount')
     reconciled = fields.Function('get_reconciled', type='boolean',
             string='Reconciled')
     lines_to_pay = fields.Function('get_lines_to_pay', type='one2many',
             relation='account.move.line', string='Lines to Pay')
-    payment_lines = fields.Many2Many('account.move.line',
-            'invoice_payment_lines_rel', 'invoice', 'line', readonly=True,
-            ondelete_target='CASCADE', string='Payment Lines')
+    payment_lines = fields.Many2Many('account.invoice-account.move.line',
+            'invoice', 'line', readonly=True, string='Payment Lines')
     amount_to_pay_today = fields.Function('get_amount_to_pay',
             type='numeric', digits="(16, currency_digits)",
             string='Amount to Pay Today')
@@ -301,19 +105,20 @@ class Invoice(OSV):
 
     def __init__(self):
         super(Invoice, self).__init__()
-        self._rpc_allowed += [
-            'button_draft',
-        ]
+        self._rpc.update({
+            'button_draft': True,
+        })
         self._constraints += [
             ('check_account', 'account_different_company'),
             ('check_account2', 'same_account_on_line'),
         ]
-        self._order.insert(0, ('number', 'ASC'))
+        self._order.insert(0, ('number', 'DESC'))
+        self._order.insert(1, ('id', 'DESC'))
         self._error_messages.update({
             'reset_draft': 'You can not reset to draft ' \
-                    'an invoice that have move!',
+                    'an invoice that has move!',
             'missing_tax_line': 'Taxes defined ' \
-                    'but not in invoice lines!\n' \
+                    'but not on invoice lines!\n' \
                     'Re-compute the invoice.',
             'diff_tax_line': 'Base taxes ' \
                     'different from invoice lines!\n' \
@@ -323,20 +128,20 @@ class Invoice(OSV):
                     'Re-compute the invoice.',
             'no_invoice_sequence': 'There is no invoice sequence ' \
                     'on the period/fiscal year!',
-            'modify_invoice': 'You can not modify invoice that is ' \
+            'modify_invoice': 'You can not modify an invoice that is ' \
                     'open, paid or canceled!',
-            'same_debit_account': 'Debit account on journal is ' \
+            'same_debit_account': 'The debit account on journal is ' \
                     'the same than the invoice account!',
             'missing_debit_account': 'The debit account on journal is ' \
                     'missing!',
-            'same_credit_account': 'Credit account on journal is ' \
+            'same_credit_account': 'The credit account on journal is ' \
                     'the same than the invoice account!',
             'missing_credit_account': 'The credit account on journal is ' \
                     'missing!',
             'account_different_company': 'You can not create an invoice\n' \
                     'with account from a different invoice company!',
             'same_account_on_line': 'You can not use the same account\n' \
-                    'than on invoice line account!',
+                    'as on invoice line!',
             })
 
     def default_type(self, cursor, user, context=None):
@@ -356,19 +161,16 @@ class Invoice(OSV):
         currency_obj = self.pool.get('currency.currency')
         if context is None:
             context = {}
-        company = None
         if context.get('company'):
             company = company_obj.browse(cursor, user, context['company'],
                     context=context)
-            return currency_obj.name_get(cursor, user, company.currency.id,
-                    context=context)[0]
+            return company.currency.id
         return False
 
     def default_currency_digits(self, cursor, user, context=None):
         company_obj = self.pool.get('company.company')
         if context is None:
             context = {}
-        company = None
         if context.get('company'):
             company = company_obj.browse(cursor, user, context['company'],
                     context=context)
@@ -380,17 +182,15 @@ class Invoice(OSV):
         if context is None:
             context = {}
         if context.get('company'):
-            return company_obj.name_get(cursor, user, context['company'],
-                    context=context)[0]
+            return context['company']
         return False
 
     def default_payment_term(self, cursor, user, context=None):
         payment_term_obj = self.pool.get('account.invoice.payment_term')
         payment_term_ids = payment_term_obj.search(cursor, user,
-                self.payment_term._domain, context=context)
+                self.payment_term.domain, context=context)
         if len(payment_term_ids) == 1:
-            return payment_term_obj.name_get(cursor, user, payment_term_ids,
-                    context=context)[0]
+            return payment_term_ids[0]
         return False
 
     def on_change_type(self, cursor, user, ids, vals, context=None):
@@ -401,8 +201,10 @@ class Invoice(OSV):
                 'revenue')),
             ], limit=1, context=context)
         if journal_ids:
-            res['journal'] = journal_obj.name_get(cursor, user, journal_ids[0],
-                    context=context)[0]
+            journal = journal_obj.browse(cursor, user, journal_ids[0],
+                    context=context)
+            res['journal'] = journal.id
+            res['journal.rec_name'] = journal.rec_name
         return res
 
     def on_change_party(self, cursor, user, ids, vals, context=None):
@@ -438,14 +240,14 @@ class Invoice(OSV):
                 res['payment_term'] = company.supplier_payment_term.id
 
         if res['invoice_address']:
-            res['invoice_address'] = address_obj.name_get(cursor, user,
-                    res['invoice_address'], context=context)[0]
+            res['invoice_address.rec_name'] = address_obj.browse(cursor, user,
+                    res['invoice_address'], context=context).rec_name
         if res['account']:
-            res['account'] = account_obj.name_get(cursor, user,
-                    res['account'], context=context)[0]
+            res['account.rec_name'] = account_obj.browse(cursor, user,
+                    res['account'], context=context).rec_name
         if res.get('payment_term'):
-            res['payment_term'] = payment_term_obj.name_get(cursor, user,
-                    res['payment_term'], context=context)[0]
+            res['payment_term.rec_name'] = payment_term_obj.browse(cursor, user,
+                    res['payment_term'], context=context).rec_name
         return res
 
     def on_change_with_currency_digits(self, cursor, user, ids, vals,
@@ -463,6 +265,34 @@ class Invoice(OSV):
             res[invoice.id] = invoice.currency.digits
         return res
 
+    def on_change_with_party_lang(self, cursor, user, ids, vals, context=None):
+        party_obj = self.pool.get('party.party')
+        if vals.get('party'):
+            party = party_obj.browse(cursor, user, vals['party'],
+                    context=context)
+            if party.lang:
+                return party.lang.code
+        return 'en_US'
+
+    def get_party_language(self, cursor, user, ids, name, arg, context=None):
+        '''
+        Return the language code of the party of each invoice
+
+        :param cursor: the database cursor
+        :param user: the user id
+        :param ids: the ids of the invoices
+        :param context: the context
+        :return: a dictionary with invoice id as key and
+            language code as value
+        '''
+        res = {}
+        for invoice in self.browse(cursor, user, ids, context=context):
+            if invoice.party.lang:
+                res[invoice.id] = invoice.party.lang.code
+            else:
+                res[invoice.id] = 'en_US'
+        return res
+
     def get_type_name(self, cursor, user, ids, name, arg, context=None):
         res = {}
         type2name = {}
@@ -521,12 +351,12 @@ class Invoice(OSV):
                 continue
             key = (tax.get('base_code'), tax.get('base_sign'),
                     tax.get('tax_code'), tax.get('tax_sign'),
-                    tax.get('account'), tax.get('description'))
-            tax_keys.append(key)
-            if key not in computed_taxes:
+                    tax.get('account'), tax.get('tax'))
+            if (key not in computed_taxes) or (key in tax_keys):
                 res['taxes'].setdefault('remove', [])
                 res['taxes']['remove'].append(tax.get('id'))
                 continue
+            tax_keys.append(key)
             if currency:
                 if not currency_obj.is_zero(cursor, user, currency,
                         computed_taxes[key]['base'] - \
@@ -677,14 +507,115 @@ class Invoice(OSV):
             res[invoice.id] = amount_currency
         return res
 
+    def search_total_amount(self, cursor, user, name, args, context=None):
+        rule_obj = self.pool.get('ir.rule')
+        line_obj = self.pool.get('account.invoice.line')
+        tax_obj = self.pool.get('account.invoice.tax')
+
+        if not len(args):
+            return []
+
+        if context is None:
+            context = {}
+
+        invoice_query, invoice_val = rule_obj.domain_get(
+            cursor, user, 'account.invoice', context=context)
+
+        cursor.execute(
+            'SELECT invoice '\
+            'FROM ( '\
+               'SELECT invoice, COALESCE(SUM(quantity * unit_price), 0) as total_amount '\
+               'FROM "' + line_obj._table + '" '\
+                 'JOIN "' + self._table + '" on '\
+                     '("' + self._table + '".id = "' + line_obj._table + '".invoice) '\
+               'WHERE ' + invoice_query + ' '\
+               'GROUP BY invoice  '\
+             'UNION '\
+               'SELECT invoice, COALESCE(SUM(amount), 0) as total_amount '\
+               'FROM "' + tax_obj._table + '" '\
+                 'JOIN "' + self._table + '" on '\
+                     '("' + self._table + '".id = "' + tax_obj._table + '".invoice) '\
+               'WHERE ' + invoice_query + ' '\
+               'GROUP BY invoice  '\
+              ') as u '\
+             'GROUP BY u.invoice '\
+             'HAVING ' + \
+                'AND '.join(('(SUM(u.total_amount) ' + arg[1] + ' %s) ' \
+                                for arg in args)),
+            invoice_val + invoice_val + [arg[2] for arg in args])
+
+        if not cursor.rowcount:
+            return [('id', '=', 0)]
+        return [('id', 'in', [x[0] for x in cursor.fetchall()])]
+
+    def search_untaxed_amount(self, cursor, user, name, args, context=None):
+        rule_obj = self.pool.get('ir.rule')
+        line_obj = self.pool.get('account.invoice.line')
+        tax_obj = self.pool.get('account.invoice.tax')
+
+        if not len(args):
+            return []
+
+        if context is None:
+            context = {}
+
+        invoice_query, invoice_val = rule_obj.domain_get(
+            cursor, user, 'account.invoice', context=context)
+
+        cursor.execute(
+            'SELECT invoice '\
+            'FROM "' + line_obj._table + '" '\
+               'JOIN "' + self._table + '" on '\
+                   '("' + self._table + '".id = "' + line_obj._table + '".invoice) '\
+            'WHERE ' + invoice_query + ' '\
+            'GROUP BY invoice  '\
+            'HAVING ' + \
+              'AND '.join(('(COALESCE(SUM(quantity * unit_price), 0) ' + \
+                                arg[1] + ' %s) ' for arg in args)),
+            invoice_val + [arg[2] for arg in args])
+
+        if not cursor.rowcount:
+            return [('id', '=', 0)]
+        return [('id', 'in', [x[0] for x in cursor.fetchall()])]
+
+    def search_tax_amount(self, cursor, user, name, args, context=None):
+        rule_obj = self.pool.get('ir.rule')
+        line_obj = self.pool.get('account.invoice.line')
+        tax_obj = self.pool.get('account.invoice.tax')
+
+        if not len(args):
+            return []
+
+        if context is None:
+            context = {}
+
+        invoice_query, invoice_val = rule_obj.domain_get(
+            cursor, user, 'account.invoice', context=context)
+
+        cursor.execute(
+            'SELECT invoice '\
+            'FROM "' + tax_obj._table + '" '\
+             'JOIN "' + self._table + '" on '\
+                   '("' + self._table + '".id = "' + tax_obj._table + '".invoice) '\
+            'WHERE ' + invoice_query + ' '\
+            'GROUP BY invoice  '\
+            'HAVING ' + \
+              'AND '.join(('(COALESCE(SUM(amount), 0) ' + arg[1] + ' %s) ' \
+                                for arg in args)),
+            invoice_val + [arg[2] for arg in args])
+
+        if not cursor.rowcount:
+            return [('id', '=', 0)]
+        return [('id', 'in', [x[0] for x in cursor.fetchall()])]
+
     def button_draft(self, cursor, user, ids, context=None):
-        workflow_service = LocalService('workflow')
-        for invoice in self.browse(cursor, user, ids, context=context):
+        invoices = self.browse(cursor, user, ids, context=context)
+        for invoice in invoices:
             if invoice.move:
                 self.raise_user_error(cursor, 'reset_draft',
                         context=context)
-            workflow_service.trg_create(user, 'account.invoice',
-                    invoice.id, cursor, context=context)
+        self.workflow_trigger_create(cursor, user,
+                [x.id for x in invoices], context=context)
         self.write(cursor, user, ids, {'state': 'draft'})
         return True
 
@@ -708,6 +639,7 @@ class Invoice(OSV):
         val['description'] = tax['tax'].description
         val['base'] = tax['base']
         val['amount'] = tax['amount']
+        val['tax'] = tax['tax'].id
 
         if invoice_type in ('out_invoice', 'in_invoice'):
             val['base_code'] = tax['tax'].invoice_base_code.id
@@ -723,7 +655,7 @@ class Invoice(OSV):
             val['account'] = tax['tax'].credit_note_account.id
         key = (val['base_code'], val['base_sign'],
                 val['tax_code'], val['tax_sign'],
-                val['account'], val['description'])
+                val['account'], val['tax'])
         return key, val
 
     def _compute_taxes(self, cursor, user, invoice, context=None):
@@ -758,6 +690,8 @@ class Invoice(OSV):
         tax_obj = self.pool.get('account.invoice.tax')
         currency_obj = self.pool.get('currency.currency')
         for invoice in self.browse(cursor, user, ids, context=context):
+            if invoice.state in ('open', 'paid', 'cancel'):
+                continue
             computed_taxes = self._compute_taxes(cursor, user, invoice,
                     context=context)
             if not invoice.taxes:
@@ -770,15 +704,15 @@ class Invoice(OSV):
                         continue
                     key = (tax.base_code.id, tax.base_sign,
                             tax.tax_code.id, tax.tax_sign,
-                            tax.account.id, tax.description)
-                    tax_keys.append(key)
-                    if not key in computed_taxes:
+                            tax.account.id, tax.tax.id)
+                    if (not key in computed_taxes) or (key in tax_keys):
                         if exception:
                             self.raise_user_error(cursor, 'missing_tax_line',
                                     context=context)
                         tax_obj.delete(cursor, user, tax.id,
                                 context=context)
                         continue
+                    tax_keys.append(key)
                     if not currency_obj.is_zero(cursor, user,
                             invoice.currency,
                             computed_taxes[key]['base'] - tax.base):
@@ -885,13 +819,14 @@ class Invoice(OSV):
                 remainder_total_currency):
             move_lines[-1]['amount_second_currency'] += remainder_total_currency
 
+        accounting_date = invoice.accounting_date or invoice.invoice_date
         period_id = period_obj.find(cursor, user, invoice.company.id,
-                date=invoice.invoice_date, context=context)
+                date=accounting_date, context=context)
 
         move_id = move_obj.create(cursor, user, {
             'journal': invoice.journal.id,
             'period': period_id,
-            'date': invoice.invoice_date,
+            'date': accounting_date,
             'lines': [('create', x) for x in move_lines],
             }, context=context)
         self.write(cursor, user, invoice.id, {
@@ -912,8 +847,13 @@ class Invoice(OSV):
         if invoice.number:
             return True
 
+        test_state = True
+        if invoice.type in ('in_invoice', 'in_credit_note'):
+            test_state = False
+
         period_id = period_obj.find(cursor, user, invoice.company.id,
-                date=invoice.invoice_date, context=context)
+                date=invoice.invoice_date, test_state=test_state,
+                context=context)
         period = period_obj.browse(cursor, user, period_id, context=context)
         sequence_id = period[invoice.type + '_sequence'].id
         if not sequence_id:
@@ -937,30 +877,30 @@ class Invoice(OSV):
                         context=context)
         return
 
-    def name_get(self, cursor, user, ids, context=None):
+    def get_rec_name(self, cursor, user, ids, name, arg, context=None):
         if not ids:
-            return []
-        if isinstance(ids, (int, long)):
-            ids = [ids]
-        res = []
+            return {}
+        res = {}
         for invoice in self.browse(cursor, user, ids, context=context):
-            res.append((invoice.id,
-                invoice.number or str(invoice.id) + ' ' + invoice.party.name))
+            res[invoice.id] = invoice.number or unicode(invoice.id) + \
+                    (invoice.reference and (' ' + invoice.reference) or '') + \
+                    ' ' + invoice.party.rec_name
         return res
 
-    def name_search(self, cursor, user, name='', args=None, operator='ilike',
-            context=None, limit=None):
-        if args is None:
-            args = []
-        ids = []
-        if name:
-            ids = self.search(cursor, user, [('number', operator, name)] + args,
-                    limit=limit, context=context)
-        if not ids:
-            ids = self.search(cursor, user, [('party', operator, name)] + args,
-                    limit=limit, context=context)
-        res = self.name_get(cursor, user, ids, context=context)
-        return res
+    def search_rec_name(self, cursor, user, name, args, context=None):
+        args2 = []
+        i = 0
+        while i < len(args):
+            ids = self.search(cursor, user, ['OR',
+                ('number', args[i][1], args[i][2]),
+                ('reference', args[i][1], args[i][2]),
+                ], limit=1, context=context)
+            if ids:
+                args2.append(('number', args[i][1], args[i][2]))
+            else:
+                args2.append(('party', args[i][1], args[i][2]))
+            i += 1
+        return args2
 
     def delete(self, cursor, user, ids, context=None):
         if not ids:
@@ -972,7 +912,6 @@ class Invoice(OSV):
                 context=context)
 
     def write(self, cursor, user, ids, vals, context=None):
-        workflow_service = LocalService('workflow')
         if isinstance(ids, (int, long)):
             ids = [ids]
         keys = vals.keys()
@@ -982,20 +921,26 @@ class Invoice(OSV):
                 keys.remove(key)
         if len(keys):
             self.check_modify(cursor, user, ids, context=context)
+        update_tax_ids = [x.id for x in self.browse(cursor, user, ids,
+            context=context) if x.state == 'draft']
         res = super(Invoice, self).write(cursor, user, ids, vals,
                 context=context)
-        self.update_taxes(cursor, user, ids, context=context)
+        if update_tax_ids:
+            self.update_taxes(cursor, user, update_tax_ids, context=context)
         if 'state' in vals and vals['state'] in ('paid', 'cancel'):
-            for invoice_id in ids:
-                workflow_service.trg_trigger(user, self._name, invoice_id,
-                        cursor, context=context)
+            self.workflow_trigger_trigger(cursor, user, ids, context=context)
         return res
 
-    def copy(self, cursor, user, invoice_id, default=None, context=None):
+    def copy(self, cursor, user, ids, default=None, context=None):
         line_obj = self.pool.get('account.invoice.line')
         tax_obj = self.pool.get('account.invoice.tax')
         date_obj = self.pool.get('ir.date')
 
+        int_id = False
+        if isinstance(ids, (int, long)):
+            int_id = True
+            ids = [ids]
+
         if default is None:
             default = {}
         default = default.copy()
@@ -1007,22 +952,25 @@ class Invoice(OSV):
         default['payment_lines'] = False
         default['lines'] = False
         default['taxes'] = False
-        default['date'] = date_obj.today(cursor, user, context=context)
+        default['invoice_date'] = date_obj.today(cursor, user, context=context)
+        default['accounting_date'] = False
         default['lines_to_pay'] = False
-        new_id = super(Invoice, self).copy(cursor, user, invoice_id,
-                default=default, context=context)
 
-        invoice = self.browse(cursor, user, invoice_id, context=context)
-        for line in invoice.lines:
-            line_obj.copy(cursor, user, line.id, default={
+        new_ids = []
+        for invoice in self.browse(cursor, user, ids, context=context):
+            new_id = super(Invoice, self).copy(cursor, user, invoice.id,
+                    default=default, context=context)
+            line_obj.copy(cursor, user, [x.id for x in invoice.lines], default={
                 'invoice': new_id,
                 }, context=context)
-
-        for tax in invoice.taxes:
-            tax_obj.copy(cursor, user, tax.id, default={
+            tax_obj.copy(cursor, user, [x.id for x in invoice.taxes], default={
                 'invoice': new_id,
                 }, context=context)
-        return new_id
+            new_ids.append(new_id)
+
+        if int_id:
+            return new_ids[0]
+        return new_ids
 
     def check_account(self, cursor, user, ids):
         for invoice in self.browse(cursor, user, ids):
@@ -1104,6 +1052,20 @@ class Invoice(OSV):
     def pay_invoice(self, cursor, user, invoice_id, amount, journal_id, date,
             description, amount_second_currency=False, second_currency=False,
             context=None):
+        '''
+        Add a payment to an invoice
+
+        :param cursor: the database cursor
+        :param invoice_id: the invoice id
+        :param amount: the amount to pay
+        :param journal_id: the journal id for the move
+        :param date: the date of the move
+        :param description: the description of the move
+        :param amount_second_currency: the amount in the second currenry if one
+        :param second_currency: the id of the second currency
+        :param context: the context
+        :return: the id of the payment line
+        '''
         journal_obj = self.pool.get('account.journal')
         move_obj = self.pool.get('account.move')
         period_obj = self.pool.get('account.period')
@@ -1187,7 +1149,7 @@ class Invoice(OSV):
         '''
         Generate invoice report and store it in invoice_report field.
         '''
-        invoice_report = get_pool_report(cursor.dbname).get('account.invoice')
+        invoice_report = self.pool.get('account.invoice', type='report')
         val = invoice_report.execute(cursor, user, [invoice_id],
                 {'id': invoice_id}, context=context)
         self.write(cursor, user, invoice_id, {
@@ -1213,9 +1175,11 @@ class Invoice(OSV):
         elif invoice.type == 'in_credit_note':
             res['type'] = 'in_invoice'
 
-        for field in ('reference', 'description', 'comment'):
+        for field in ('description', 'comment'):
             res[field] = invoice[field]
 
+        res['reference'] = invoice.number or invoice.reference
+
         for field in ('company', 'party', 'invoice_address', 'currency',
                 'journal', 'account', 'payment_term'):
             res[field] = invoice[field].id
@@ -1235,34 +1199,93 @@ class Invoice(OSV):
             res[taxes].append(('create', value))
         return res
 
-    def credit(self, cursor, user, ids, context=None):
+    def credit(self, cursor, user, ids, refund=False, context=None):
         '''
         Credit invoices and return ids of new invoices.
+
+        :param cursor: the database cursor
+        :param user: the user id
+        :param ids: a list of invoice id
+        :param refund: a boolean to specify the refund
+        :param context: the context
+        :return: the list of new invoice id
         '''
+        move_line_obj = self.pool.get('account.move.line')
+
         new_ids = []
         for invoice in self.browse(cursor, user, ids, context=context):
             vals = self._credit(cursor, user, invoice, context=context)
-            new_ids.append(self.create(cursor, user, vals, context=context))
+            new_id = self.create(cursor, user, vals, context=context)
+            new_ids.append(new_id)
+            if refund:
+                self.workflow_trigger_validate(cursor, user, new_id, 'open',
+                        context=context)
+                new_invoice = self.browse(cursor, user, new_id, context=context)
+                if new_invoice.state == 'open':
+                    line_ids = [x.id for x in invoice.lines_to_pay
+                            if not x.reconciliation] + \
+                                    [x.id for x in new_invoice.lines_to_pay
+                                            if not x.reconciliation]
+                    move_line_obj.reconcile(cursor, user, line_ids,
+                            context=context)
         return new_ids
 
 Invoice()
 
 
-class InvoiceLine(OSV):
+class InvoicePaymentLine(ModelSQL):
+    'Invoice - Payment Line'
+    _name = 'account.invoice-account.move.line'
+    _description = __doc__
+    invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
+            select=1, required=True)
+    line = fields.Many2One('account.move.line', 'Payment Line',
+            ondelete='CASCADE', select=1, required=True)
+
+InvoicePaymentLine()
+
+
+class InvoiceLine(ModelSQL, ModelView):
     'Invoice Line'
     _name = 'account.invoice.line'
     _rec_name = 'description'
     _description = __doc__
 
     invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
-            select=1, required=True)
-    sequence = fields.Integer('Sequence')
+            select=1, states={
+            'required': "not bool(globals().get('invoice_type')) " \
+                    "and bool(globals().get('party')) " \
+                    "and bool(globals().get('currency')) " \
+                    "and bool(globals().get('company'))",
+            'invisible': "context.get('standalone', False)",
+        })
+    invoice_type = fields.Selection(_TYPE, 'Invoice Type', select=1, states={
+        'readonly': "context.get('type', False) or bool(type)",
+        'required': "not bool(invoice)",
+        })
+    party = fields.Many2One('party.party', 'Party', select=1, states={
+        'required': "not bool(invoice)",
+        })
+    currency = fields.Many2One('currency.currency', 'Currency', states={
+        'required': "not bool(invoice)",
+        })
+    currency_digits = fields.Function('get_currency_digits', type='integer',
+            string='Currency Digits', on_change_with=['currency'])
+    company = fields.Many2One('company.company', 'Company', states={
+        'required': "not bool(invoice)",
+        }, domain="[('id', '=', context.get('company', 0))]")
+
+    sequence = fields.Integer('Sequence', states={
+            'invisible': "context.get('standalone', False)",
+        })
     type = fields.Selection([
         ('line', 'Line'),
         ('subtotal', 'Subtotal'),
         ('title', 'Title'),
         ('comment', 'Comment'),
-        ], 'Type', select=1, required=True)
+        ], 'Type', select=1, required=True, states={
+            'invisible': "context.get('standalone', False)",
+        })
     quantity = fields.Float('Quantity',
             digits="(16, unit_digits)",
             states={
@@ -1283,11 +1306,15 @@ class InvoiceLine(OSV):
                 'invisible': "type != 'line'",
             }, on_change=['product', 'unit', 'quantity', 'description',
                 '_parent_invoice.type', '_parent_invoice.party',
-                '_parent_invoice.currency'])
+                '_parent_invoice.currency', 'party', 'currency'])
     account = fields.Many2One('account.account', 'Account',
             domain="[('kind', '!=', 'view'), " \
-                    "('company', '=', _parent_invoice.company), " \
-                    "('id', '!=', _parent_invoice.account)]",
+                    "('company', '=', " \
+                        "globals().get('_parent_invoice') and " \
+                        "globals().get('_parent_invoice').company or " \
+                        "globals()['company']), " \
+                    "('id', '!=', globals().get('_parent_invoice') and " \
+                        "globals().get('_parent_invoice').account or 0)]",
             states={
                 'invisible': "type != 'line'",
                 'required': "type == 'line'",
@@ -1298,17 +1325,22 @@ class InvoiceLine(OSV):
                 'required': "type == 'line'",
             })
     amount = fields.Function('get_amount', type='numeric', string='Amount',
-            digits="(16, _parent_invoice.currency_digits)",
+            digits="(16, globals().get('_parent_invoice') and " \
+                        "globals().get('_parent_invoice').currency_digits or " \
+                        "globals()['currency_digits'])",
             states={
                 'invisible': "type not in ('line', 'subtotal')",
             }, on_change_with=['type', 'quantity', 'unit_price',
-                '_parent_invoice.currency'])
-    description = fields.Char('Description', size=None, required=True)
-    taxes = fields.Many2Many('account.tax', 'account_invoice_line_account_tax',
+                '_parent_invoice.currency', 'currency'])
+    description = fields.Text('Description', size=None, required=True)
+    note = fields.Text('Note')
+    taxes = fields.Many2Many('account.invoice.line-account.tax',
             'line', 'tax', 'Taxes', domain=[('parent', '=', False)],
             states={
                 'invisible': "type != 'line'",
             })
+    invoice_taxes = fields.Function('get_invoice_taxes', type='many2many',
+            relation='account.invoice.tax', string='Invoice Taxes')
 
     def __init__(self):
         super(InvoiceLine, self).__init__()
@@ -1316,7 +1348,11 @@ class InvoiceLine(OSV):
             ('type_account',
                 'CHECK((type = \'line\' AND account IS NOT NULL) ' \
                         'OR (type != \'line\'))',
-                'Line type must have an account!'),
+                'Line with "line" type must have an account!'),
+            ('type_invoice',
+                'CHECK((type != \'line\' AND invoice IS NOT NULL) ' \
+                        'OR (type = \'line\'))',
+                'Line without "line" type must have an invoice!'),
         ]
         self._constraints += [
             ('check_account', 'account_different_company'),
@@ -1329,11 +1365,52 @@ class InvoiceLine(OSV):
             'create': 'You can not add a line to an invoice ' \
                     'that is open, paid or canceled!',
             'account_different_company': 'You can not create invoice line\n' \
-                    'with account from a different invoice company!',
+                    'with account with a different invoice company!',
             'same_account_on_invoice': 'You can not use the same account\n' \
-                    'than the invoice account!',
+                    'as on the invoice!',
             })
 
+    def init(self, cursor, module_name):
+        super(InvoiceLine, self).init(cursor, module_name)
+        table = TableHandler(cursor, self, module_name)
+
+        # Migration from 1.0 invoice is no more required
+        table.not_null_action('invoice', action='remove')
+
+    def default_invoice_type(self, cursor, user, context=None):
+        if context is None:
+            context = {}
+        return context.get('invoice_type', 'out_invoice')
+
+    def default_currency(self, cursor, user, context=None):
+        company_obj = self.pool.get('company.company')
+        currency_obj = self.pool.get('currency.currency')
+        if context is None:
+            context = {}
+        if context.get('company'):
+            company = company_obj.browse(cursor, user, context['company'],
+                    context=context)
+            return company.currency.id
+        return False
+
+    def default_currency_digits(self, cursor, user, context=None):
+        company_obj = self.pool.get('company.company')
+        if context is None:
+            context = {}
+        if context.get('company'):
+            company = company_obj.browse(cursor, user, context['company'],
+                    context=context)
+            return company.currency.digits
+        return 2
+
+    def default_company(self, cursor, user, context=None):
+        company_obj = self.pool.get('company.company')
+        if context is None:
+            context = {}
+        if context.get('company'):
+            return context['company']
+        return False
+
     def default_type(self, cursor, user, context=None):
         return 'line'
 
@@ -1346,11 +1423,10 @@ class InvoiceLine(OSV):
     def on_change_with_amount(self, cursor, user, ids, vals, context=None):
         currency_obj = self.pool.get('currency.currency')
         if vals.get('type') == 'line':
-            if isinstance(vals.get('_parent_invoice.currency'), (int, long)):
-                currency = currency_obj.browse(cursor, user,
-                        vals['_parent_invoice.currency'], context=context)
-            else:
-                currency = vals['_parent_invoice.currency']
+            currency = vals.get('_parent_invoice.currency', vals.get('currency'))
+            if isinstance(currency, (int, long)):
+                currency = currency_obj.browse(cursor, user, currency,
+                        context=context)
             amount = Decimal(str(vals.get('quantity') or '0.0')) * \
                     (vals.get('unit_price') or Decimal('0.0'))
             if currency:
@@ -1376,13 +1452,29 @@ class InvoiceLine(OSV):
                 res[line.id] = 2
         return res
 
+    def on_change_with_currency_digits(self, cursor, user, ids, vals,
+            context=None):
+        currency_obj = self.pool.get('currency.currency')
+        if vals.get('currency'):
+            currency = currency_obj.browse(cursor, user, vals['currency'],
+                    context=context)
+            return currency.digits
+        return 2
+
+    def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
+        res = {}
+        for line in self.browse(cursor, user, ids, context=context):
+            res[line.id] = line.currency and line.currency.digits or 2
+        return res
+
     def get_amount(self, cursor, user, ids, name, arg, context=None):
         currency_obj = self.pool.get('currency.currency')
         res = {}
         for line in self.browse(cursor, user, ids, context=context):
             if line.type == 'line':
-                res[line.id] = currency_obj.round(cursor, user,
-                        line.invoice.currency,
+                currency = line.invoice and line.invoice.currency \
+                        or line.currency
+                res[line.id] = currency_obj.round(cursor, user, currency,
                         Decimal(str(line.quantity)) * line.unit_price)
             elif line.type == 'subtotal':
                 res[line.id] = Decimal('0.0')
@@ -1399,6 +1491,50 @@ class InvoiceLine(OSV):
                 res[line.id] = Decimal('0.0')
         return res
 
+    def get_invoice_taxes(self, cursor, user, ids, name, arg, context=None):
+        tax_obj = self.pool.get('account.tax')
+        invoice_obj = self.pool.get('account.invoice')
+
+        if context is None:
+            context = {}
+
+        res = {}
+        for line in self.browse(cursor, user, ids, context=context):
+            ctx = context.copy()
+            ctx.update(invoice_obj.get_tax_context(cursor, user, line.invoice,
+                context=context))
+            tax_ids = [x.id for x in line.taxes]
+            taxes_keys = []
+            for tax in tax_obj.compute(cursor, user, tax_ids, line.unit_price,
+                    line.quantity, context=ctx):
+                key, _ = invoice_obj._compute_tax(cursor, user, tax,
+                        line.invoice.type, context=context)
+                taxes_keys.append(key)
+            res[line.id] = []
+            for tax in line.invoice.taxes:
+                if tax.manual:
+                    continue
+                key = (tax.base_code.id, tax.base_sign,
+                        tax.tax_code.id, tax.tax_sign,
+                        tax.account.id, tax.tax.id)
+                if key in taxes_keys:
+                    res[line.id].append(tax.id)
+        return res
+
+    def _get_tax_rule_pattern(self, cursor, user, party, vals, context=None):
+        '''
+        Get tax rule pattern
+
+        :param cursor: the database cursor
+        :param user: the user id
+        :param party: the BrowseRecord of the party
+        :param vals: a dictionary with value from on_change
+        :param context: the context
+        :return: a dictionary to use as pattern for tax rule
+        '''
+        res = {}
+        return res
+
     def on_change_product(self, cursor, user, ids, vals, context=None):
         product_obj = self.pool.get('product.product')
         party_obj = self.pool.get('party.party')
@@ -1406,6 +1542,8 @@ class InvoiceLine(OSV):
         uom_obj = self.pool.get('product.uom')
         company_obj = self.pool.get('company.company')
         currency_obj = self.pool.get('currency.currency')
+        tax_rule_obj = self.pool.get('account.tax.rule')
+
         if context is None:
             context = {}
         if not vals.get('product'):
@@ -1414,8 +1552,9 @@ class InvoiceLine(OSV):
 
         ctx = context.copy()
         party = None
-        if vals.get('_parent_invoice.party'):
-            party = party_obj.browse(cursor, user, vals['_parent_invoice.party'],
+        if vals.get('_parent_invoice.party', vals.get('party')):
+            party = party_obj.browse(cursor, user, vals.get('_parent_invoice.party',
+                    vals.get('party')),
                     context=context)
             if party.lang:
                 ctx['language'] = party.lang.code
@@ -1428,12 +1567,14 @@ class InvoiceLine(OSV):
             company = company_obj.browse(cursor, user, context['company'],
                     context=context)
         currency = None
-        if vals.get('_parent_invoice.currency'):
+        if vals.get('_parent_invoice.currency', vals.get('currency')):
             #TODO check if today date is correct
             currency = currency_obj.browse(cursor, user,
-                    vals['_parent_invoice.currency'], context=context)
+                    vals.get('_parent_invoice.currency', vals.get('currency')),
+                    context=context)
 
-        if vals.get('_parent_invoice.type') in ('in_invoice', 'in_credit_note'):
+        if vals.get('_parent_invoice.type', vals.get('invoice_type')) \
+                in ('in_invoice', 'in_credit_note'):
             if company and currency:
                 res['unit_price'] = currency_obj.compute(cursor, user,
                         company.currency, product.cost_price, currency,
@@ -1441,19 +1582,28 @@ class InvoiceLine(OSV):
             else:
                 res['unit_price'] = product.cost_price
             try:
-                res['account'] = account_obj.name_get(cursor, user,
-                        product.account_expense_used.id, context=context)[0]
+                res['account'] = product.account_expense_used.id
+                res['account.rec_name'] = product.account_expense_used.rec_name
             except:
                 pass
             res['taxes'] = []
+            pattern = self._get_tax_rule_pattern(cursor, user, party, vals,
+                    context=context)
             for tax in product.supplier_taxes_used:
-                if party:
-                    if 'supplier_' + tax.group.code in party_obj._columns \
-                            and party['supplier_' + tax.group.code]:
-                        res['taxes'].append(
-                                party['supplier_' + tax.group.code].id)
-                        continue
+                if party and party.supplier_tax_rule:
+                    tax_ids = tax_rule_obj.apply(cursor, user,
+                            party.supplier_tax_rule, tax, pattern,
+                            context=context)
+                    if tax_ids:
+                        res['taxes'].extend(tax_ids)
+                    continue
                 res['taxes'].append(tax.id)
+            if party and party.supplier_tax_rule:
+                tax_ids = tax_rule_obj.apply(cursor, user,
+                        party.supplier_tax_rule, False, pattern,
+                        context=context)
+                if tax_ids:
+                    res['taxes'].extend(tax_ids)
         else:
             if company and currency:
                 res['unit_price'] = currency_obj.compute(cursor, user,
@@ -1462,28 +1612,38 @@ class InvoiceLine(OSV):
             else:
                 res['unit_price'] = product.list_price
             try:
-                res['account'] = account_obj.name_get(cursor, user,
-                        product.account_revenue_used.id, context=context)[0]
+                res['account'] = product.account_revenue_used.id
+                res['account.rec_name'] = product.account_revenue_used.rec_name
             except:
                 pass
             res['taxes'] = []
+            pattern = self._get_tax_rule_pattern(cursor, user, party, vals,
+                    context=context)
             for tax in product.customer_taxes_used:
-                if party:
-                    if tax.group.code in party_obj._columns \
-                            and party[tax.group.code]:
-                        res['taxes'].append(party[tax.group.code].id)
-                        continue
+                if party and party.customer_tax_rule:
+                    tax_ids = tax_rule_obj.apply(cursor, user,
+                            party.customer_tax_rule, tax, pattern,
+                            context=context)
+                    if tax_ids:
+                        res['taxes'].extend(tax_ids)
+                    continue
                 res['taxes'].append(tax.id)
+            if party and party.customer_tax_rule:
+                tax_ids = tax_rule_obj.apply(cursor, user,
+                        party.customer_tax_rule, False, pattern,
+                        context=context)
+                if tax_ids:
+                    res['taxes'].extend(tax_ids)
 
         if not vals.get('description'):
-            res['description'] = product_obj.name_get(cursor, user, product.id,
-                    context=ctx)[0][1]
+            res['description'] = product_obj.browse(cursor, user, product.id,
+                    context=ctx).rec_name
 
         category = product.default_uom.category
         if not vals.get('unit') \
                 or vals.get('unit') not in [x.id for x in category.uoms]:
-            res['unit'] = uom_obj.name_get(cursor, user, product.default_uom.id,
-                context=context)[0]
+            res['unit'] = product.default_uom.id
+            res['unit.rec_name'] = product.default_uom.rec_name
             res['unit_digits'] = product.default_uom.digits
 
         vals = vals.copy()
@@ -1498,7 +1658,8 @@ class InvoiceLine(OSV):
         Check if the lines can be modified
         '''
         for line in self.browse(cursor, user, ids, context=context):
-            if line.invoice.state in ('open', 'paid', 'cancel'):
+            if line.invoice and \
+                    line.invoice.state in ('open', 'paid', 'cancel'):
                 self.raise_user_error(cursor, 'modify', context=context)
         return
 
@@ -1528,16 +1689,21 @@ class InvoiceLine(OSV):
 
     def check_account(self, cursor, user, ids):
         for line in self.browse(cursor, user, ids):
-            if line.type == 'line' \
-                    and line.account.company.id != line.invoice.company.id:
-                return False
+            if line.type == 'line':
+                if line.invoice:
+                    if line.account.company.id != line.invoice.company.id:
+                        return False
+                elif line.company:
+                    if line.account.company.id != line.company.id:
+                        return False
         return True
 
     def check_account2(self, cursor, user, ids):
         for line in self.browse(cursor, user, ids):
-            if line.type == 'line' \
-                    and line.account.id == line.invoice.account.id:
-                return False
+            if line.type == 'line':
+                if line.invoice \
+                        and line.account.id == line.invoice.account.id:
+                    return False
         return True
 
     def _compute_taxes(self, cursor, user, line, context=None):
@@ -1637,7 +1803,20 @@ class InvoiceLine(OSV):
 InvoiceLine()
 
 
-class InvoiceTax(OSV):
+class InvoiceLineTax(ModelSQL):
+    'Invoice Line - Tax'
+    _name = 'account.invoice.line-account.tax'
+    _table = 'account_invoice_line_account_tax'
+    _description = __doc__
+    line = fields.Many2One('account.invoice.line', 'Invoice Line',
+            ondelete='CASCADE', select=1, required=True)
+    tax = fields.Many2One('account.tax', 'Tax', ondelete='RESTRICT',
+            required=True)
+
+InvoiceLineTax()
+
+
+class InvoiceTax(ModelSQL, ModelView):
     'Invoice Tax'
     _name = 'account.invoice.tax'
     _rec_name = 'description'
@@ -1647,6 +1826,8 @@ class InvoiceTax(OSV):
             select=1)
     description = fields.Char('Description', size=None, required=True)
     sequence = fields.Integer('Sequence')
+    sequence_number = fields.Function('get_sequence_number', type='integer',
+            string='Sequence Number')
     account = fields.Many2One('account.account', 'Account', required=True,
             domain="[('kind', '!=', 'view'), " \
                 "('company', '=', _parent_invoice.company)]")
@@ -1668,6 +1849,7 @@ class InvoiceTax(OSV):
     tax_code = fields.Many2One('account.tax.code', 'Tax Code',
             domain="[('company', '=', _parent_invoice.company)]")
     tax_sign = fields.Numeric('Tax Sign', digits=(2, 0))
+    tax = fields.Many2One('account.tax', 'Tax')
 
     def __init__(self):
         super(InvoiceTax, self).__init__()
@@ -1709,6 +1891,18 @@ class InvoiceTax(OSV):
                         context=context)
         return
 
+    def get_sequence_number(self, cursor, user, ids, name, arg, context=None):
+        res = {}
+        for tax in self.browse(cursor, user, ids, context=context):
+            res[tax.id] = 0
+            i = 1
+            for tax2 in tax.invoice.taxes:
+                if tax2.id == tax.id:
+                    res[tax.id] = i
+                    break
+                i += 1
+        return res
+
     def delete(self, cursor, user, ids, context=None):
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -1798,15 +1992,17 @@ class InvoiceTax(OSV):
                 'manual', 'base_sign', 'tax_sign'):
             res[field] = tax[field]
 
-        for field in ('account', 'base_code', 'tax_code'):
+        for field in ('account', 'base_code', 'tax_code', 'tax'):
             res[field] = tax[field].id
         return res
 
 InvoiceTax()
 
 
-class PrintInvoiceReportWarning(WizardOSV):
+class PrintInvoiceReportWarning(ModelView):
+    'Print Invoice Report Warning'
     _name = 'account.invoice.print_invoice_report.warning'
+    _description = __doc__
 
 PrintInvoiceReportWarning()
 
@@ -1929,196 +2125,11 @@ class InvoiceReport(Report):
 InvoiceReport()
 
 
-class Address(OSV):
-    _name = 'party.address'
-    invoice = fields.Boolean('Invoice')
-
-Address()
-
-
-class Party(OSV):
-    _name = 'party.party'
-    payment_term = fields.Property(type='many2one',
-            relation='account.invoice.payment_term',
-            string='Invoice Payment Term')
-    supplier_payment_term = fields.Property(type='many2one',
-            relation='account.invoice.payment_term',
-            string='Supplier Payment Term')
-
-Party()
-
-
-class FiscalYear(OSV):
-    _name = 'account.fiscalyear'
-    out_invoice_sequence = fields.Many2One('ir.sequence.strict',
-            'Customer Invoice Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice', 'company': company}")
-    in_invoice_sequence = fields.Many2One('ir.sequence.strict',
-            'Supplier Invoice Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice', 'company': company}")
-    out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
-            'Customer Credit Note Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice', 'company': company}")
-    in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
-            'Supplier Credit Note Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice', 'company': company}")
-
-    def __init__(self):
-        super(FiscalYear, self).__init__()
-        self._constraints += [
-            ('check_invoice_sequences', 'different_invoice_sequence'),
-        ]
-        self._error_messages.update({
-            'change_invoice_sequence': 'You can not change ' \
-                    'the invoice sequence if there is already ' \
-                    'an invoice opened in the fiscalyear',
-            'different_invoice_sequence': 'You must have different ' \
-                    'invoice sequence per fiscal year!',
-            })
-
-    def check_invoice_sequences(self, cursor, user, ids):
-        for fiscalyear in self.browse(cursor, user, ids):
-            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
-                    'out_credit_note_sequence', 'in_credit_note_sequence'):
-                if self.search(cursor, user, [
-                    (sequence, '=', fiscalyear[sequence].id),
-                    ('id', '!=', fiscalyear.id),
-                    ]):
-                    return False
-        return True
-
-    def write(self, cursor, user, ids, vals, context=None):
-        invoice_obj = self.pool.get('account.invoice')
-        for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
-                'out_credit_note_sequence', 'in_credit_note_sequence'):
-            if vals.get(sequence):
-                for fiscalyear in self.browse(cursor, user, ids,
-                        context=context):
-                    if fiscalyear[sequence] and \
-                            fiscalyear[sequence].id != \
-                            vals[sequence]:
-                        if invoice_obj.search(cursor, user, [
-                            ('invoice_date', '>=', fiscalyear.start_date),
-                            ('invoice_date', '<=', fiscalyear.end_date),
-                            ('number', '!=', False),
-                            ('type', '=', sequence[:-9]),
-                            ], context=context):
-                            self.raise_user_error(cursor,
-                                    'change_invoice_sequence', context=context)
-        return super(FiscalYear, self).write(cursor, user, ids, vals,
-                context=context)
-
-FiscalYear()
-
-
-class Period(OSV):
-    _name = 'account.period'
-    out_invoice_sequence = fields.Many2One('ir.sequence.strict',
-            'Customer Invoice Sequence',
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice'}",
-            states={
-                'required': "type == 'standard'",
-                'invisible': "type != 'standard'",
-            })
-    in_invoice_sequence = fields.Many2One('ir.sequence.strict',
-            'Supplier Invoice Sequence',
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice'}",
-            states={
-                'required': "type == 'standard'",
-                'invisible': "type != 'standard'",
-            })
-    out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
-            'Customer Credit Note Sequence',
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice'}",
-            states={
-                'required': "type == 'standard'",
-                'invisible': "type != 'standard'",
-            })
-    in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
-            'Supplier Credit Note Sequence',
-            domain="[('code', '=', 'account.invoice')]",
-            context="{'code': 'account.invoice'}",
-            states={
-                'required': "type == 'standard'",
-                'invisible': "type != 'standard'",
-            })
-
-    def __init__(self):
-        super(Period, self).__init__()
-        self._constraints += [
-            ('check_invoice_sequences',
-                'Error! You must have different invoice sequences ' \
-                        'per fiscal year!', ['out_invoice_sequence',
-                            'in_invoice_sequence', 'out_credit_note_sequence',
-                            'in_credit_note_sequence']),
-        ]
-        self._error_messages.update({
-            'change_invoice_sequence': 'You can not change ' \
-                    'the invoice sequence if there is already ' \
-                    'an invoice opened in the period',
-            })
-
-    def check_invoice_sequences(self, cursor, user, ids):
-        for period in self.browse(cursor, user, ids):
-            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
-                    'out_credit_note_sequence', 'in_credit_note_sequence'):
-                if self.search(cursor, user, [
-                    (sequence, '=', period[sequence].id),
-                    ('fiscalyear', '!=', period.fiscalyear.id),
-                    ]):
-                    return False
-        return True
-
-    def create(self, cursor, user, vals, context=None):
-        fiscalyear_obj = self.pool.get('account.fiscalyear')
-        vals = vals.copy()
-        if vals.get('fiscalyear'):
-            fiscalyear = fiscalyear_obj.browse(cursor, user, vals['fiscalyear'],
-                    context=context)
-            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
-                    'out_credit_note_sequence', 'in_credit_note_sequence'):
-                if not vals.get(sequence):
-                    vals[sequence] = fiscalyear[sequence].id
-        return super(Period, self).create(cursor, user, vals, context=context)
-
-    def write(self, cursor, user, ids, vals, context=None):
-        invoice_obj = self.pool.get('account.invoice')
-
-        if isinstance(ids, (int, long)):
-            ids = [ids]
-
-        for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
-                'out_credit_note_sequence', 'in_credit_note_sequence'):
-            if vals.get(sequence):
-                for period in self.browse(cursor, user, ids, context=context):
-                    if period[sequence] and \
-                            period[sequence].id != \
-                            vals[sequence]:
-                        if invoice_obj.search(cursor, user, [
-                            ('date', '>=', period.start_date),
-                            ('date', '<=', period.end_date),
-                            ('number', '!=', False),
-                            ('type', '=', sequence[:-9]),
-                            ], context=context):
-                            self.raise_user_error(cursor,
-                                    'change_invoice_sequence', context=context)
-        return super(Period, self).write(cursor, user, ids, vals,
-                context=context)
-
-Period()
-
-
-class PayInvoiceInit(WizardOSV):
+class PayInvoiceInit(ModelView):
+    'Pay Invoice Init'
     _name = 'account.invoice.pay_invoice.init'
-    amount = fields.Numeric('Amount', digits="(16, currency_digits)",
-            required=True)
+    _description = __doc__
+    amount = fields.Numeric('Amount', digits="(16, currency_digits)")
     currency = fields.Many2One('currency.currency', 'Currency', required=True)
     currency_digits = fields.Integer('Currency Digits', readonly=True,
             on_change_with=['currency'])
@@ -2143,33 +2154,55 @@ class PayInvoiceInit(WizardOSV):
 PayInvoiceInit()
 
 
-class PayInvoiceAsk(WizardOSV):
+class PayInvoiceAsk(ModelView):
+    'Pay Invoice Ask'
     _name = 'account.invoice.pay_invoice.ask'
+    _description = __doc__
     type = fields.Selection([
         ('writeoff', 'Write-Off'),
         ('partial', 'Partial Payment'),
         ], 'Type', required=True)
-    journal_writeoff = fields.Many2One('account.journal', 'Journal',
+    journal_writeoff = fields.Many2One('account.journal', 'Write-Off Journal',
             states={
                 'invisible': "type != 'writeoff'",
                 'required': "type == 'writeoff'",
             })
-    account_writeoff = fields.Many2One('account.account', 'Account',
+    account_writeoff = fields.Many2One('account.account', 'Write-Off Account',
             domain="[('kind', '!=', 'view'), ('company', '=', company)]",
             states={
                 'invisible': "type != 'writeoff'",
                 'required': "type == 'writeoff'",
             })
-    amount = fields.Numeric('Amount', digits="(16, currency_digits)", readonly=True)
-    currency = fields.Many2One('currency.currency', 'Currency', readonly=True)
-    currency_digits = fields.Integer('Currency Digits', readonly=True,
-            on_change_with=['currency'])
-    lines_to_pay = fields.Char(string='Lines to Pay', size=None)
-    lines = fields.One2Many('account.move.line', 'ham', 'Lines',
-            domain="[('id', 'in', eval(lines_to_pay)), " \
+    amount = fields.Numeric('Payment Amount', digits="(16, currency_digits)",
+            readonly=True, depends=['currency_digits'])
+    currency = fields.Many2One('currency.currency', 'Payment Currency',
+            readonly=True)
+    currency_digits = fields.Integer('Payment Currency Digits', readonly=True)
+    amount_writeoff = fields.Numeric('Write-Off Amount',
+            digits="(16, currency_digits_writeoff)", readonly=True,
+            depends=['currency_digits_writeoff'], states={
+                'invisible': "type != 'writeoff'",
+            })
+    currency_writeoff = fields.Many2One('currency.currency',
+            'Write-Off Currency', readonly=True, states={
+                'invisible': "type != 'writeoff'",
+            })
+    currency_digits_writeoff = fields.Integer('Write-Off Currency Digits',
+            readonly=True)
+    lines_to_pay = fields.Many2Many('account.move.line', None, None,
+            'Lines to Pay', readonly=True)
+    lines = fields.Many2Many('account.move.line', None, None, 'Lines',
+            domain="[('id', 'in', lines_to_pay), " \
                     "('reconciliation', '=', False)]",
             states={
                 'invisible': "type != 'writeoff'",
+            }, on_change=['lines', 'amount', 'currency', 'currency_writeoff',
+                'invoice'],
+            depends=['lines_to_pay'])
+    payment_lines = fields.Many2Many('account.move.line', None, None,
+            'Payment Lines', readonly=True,
+            states={
+                'invisible': "type != 'writeoff'",
             })
     description = fields.Char('Description', size=None, readonly=True)
     journal = fields.Many2One('account.journal', 'Journal', readonly=True,
@@ -2177,18 +2210,31 @@ class PayInvoiceAsk(WizardOSV):
     date = fields.Date('Date', readonly=True)
     company = fields.Many2One('company.company', 'Company', readonly=True)
     account = fields.Many2One('account.account', 'Account', readonly=True)
+    invoice = fields.Many2One('account.invoice', 'Invoice', readonly=True)
 
     def default_type(self, cursor, user, context=None):
-        return 'writeoff'
+        return 'partial'
 
-    def on_change_with_currency_digits(self, cursor, user, ids, vals,
-            context=None):
+    def on_change_lines(self, cursor, user, ids, vals, context=None):
         currency_obj = self.pool.get('currency.currency')
-        if vals.get('currency'):
-            currency = currency_obj.browse(cursor, user, vals['currency'],
-                    context=context)
-            return currency.digits
-        return 2
+        line_obj = self.pool.get('account.move.line')
+        invoice_obj = self.pool.get('account.invoice')
+
+        res = {}
+        invoice = invoice_obj.browse(cursor, user, vals['invoice'],
+                context=context)
+        amount = currency_obj.compute(cursor, user, vals['currency'],
+                vals['amount'], vals['currency_writeoff'], context=context)
+
+        res['amount_writeoff'] = Decimal('0.0')
+        for line in line_obj.browse(cursor, user, vals['lines'],
+                context=context):
+            res['amount_writeoff'] += line.debit - line.credit
+        if invoice.type in ('in_invoice', 'out_credit_note'):
+            res['amount_writeoff'] = - res['amount_writeoff'] - amount
+        else:
+            res['amount_writeoff'] = res['amount_writeoff'] - amount
+        return res
 
 PayInvoiceAsk()
 
@@ -2234,6 +2280,13 @@ class PayInvoice(Wizard):
         },
     }
 
+    def __init__(self):
+        super(PayInvoice, self).__init__()
+        self._error_messages.update({
+            'amount_greater_amount_to_pay': 'You can not create a partial ' \
+                    'payment with an amount greater then the amount to pay!',
+            })
+
     def _init(self, cursor, user, data, context=None):
         invoice_obj = self.pool.get('account.invoice')
         res = {}
@@ -2257,19 +2310,19 @@ class PayInvoice(Wizard):
                 context=context)
         res = invoice_obj.get_reconcile_lines_for_amount(cursor, user, invoice,
                 amount)
-        if res[1] == Decimal('0.0'):
+        if res[1] == Decimal('0.0') and amount <= invoice.amount_to_pay:
             return 'pay'
         return 'ask'
 
     def _ask(self, cursor, user, data, context=None):
         invoice_obj = self.pool.get('account.invoice')
         currency_obj = self.pool.get('currency.currency')
+        line_obj = self.pool.get('account.move.line')
 
         res = {}
         invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
-        res['lines_to_pay'] = str(
-                [x.id for x in invoice.lines_to_pay if not x.reconciliation] + \
-                [x.id for x in invoice.payment_lines if not x.reconciliation])
+        res['lines_to_pay'] = [x.id for x in invoice.lines_to_pay
+                if not x.reconciliation]
 
         res['amount'] = data['form']['amount']
         res['currency'] = data['form']['currency']
@@ -2278,11 +2331,41 @@ class PayInvoice(Wizard):
         res['journal'] = data['form']['journal']
         res['date'] = data['form']['date']
         res['company'] = invoice.company.id
+
         amount = currency_obj.compute(cursor, user, data['form']['currency'],
                 data['form']['amount'], invoice.company.currency,
                 context=context)
-        res['lines'] = invoice_obj.get_reconcile_lines_for_amount(cursor, user, invoice,
-                amount)[0]
+
+        if currency_obj.is_zero(cursor, user, invoice.company.currency,
+                amount):
+            res['lines'] = [x.id for x in invoice.lines_to_pay]
+        else:
+            res['lines'] = invoice_obj.get_reconcile_lines_for_amount(cursor,
+                    user, invoice, amount)[0]
+        for line_id in res['lines'][:]:
+            if line_id not in res['lines_to_pay']:
+                res['lines'].remove(line_id)
+
+        res['amount_writeoff'] = Decimal('0.0')
+        for line in line_obj.browse(cursor, user, res['lines'], context=context):
+            res['amount_writeoff'] += line.debit - line.credit
+        for line in invoice.payment_lines:
+            res['amount_writeoff'] += line.debit - line.credit
+        if invoice.type in ('in_invoice', 'out_credit_note'):
+            res['amount_writeoff'] = - res['amount_writeoff'] - amount
+        else:
+            res['amount_writeoff'] = res['amount_writeoff'] - amount
+
+        res['currency_writeoff'] = invoice.company.currency.id
+        res['currency_digits_writeoff'] = invoice.company.currency.digits
+        res['invoice'] = invoice.id
+        res['payment_lines'] = [x.id for x in invoice.payment_lines
+                if not x.reconciliation]
+
+        if amount > invoice.amount_to_pay \
+                or currency_obj.is_zero(cursor, user, invoice.company.currency,
+                        amount):
+            res['type'] = 'writeoff'
         return res
 
     def _action_pay(self, cursor, user, data, context=None):
@@ -2307,29 +2390,49 @@ class PayInvoice(Wizard):
             amount_second_currency = data['form']['amount']
             second_currency = data['form']['currency']
 
-        line_id = invoice_obj.pay_invoice(cursor, user, data['id'], amount,
-                data['form']['journal'], data['form']['date'],
-                data['form']['description'], amount_second_currency,
-                second_currency, context=context)
+        if amount > invoice.amount_to_pay and \
+                data['form'].get('type') != 'writeoff':
+            self.raise_user_error(cursor, 'amount_greater_amount_to_pay',
+                    context=context)
+
+        line_id = False
+        if not currency_obj.is_zero(cursor, user, invoice.company.currency,
+                amount):
+            line_id = invoice_obj.pay_invoice(cursor, user, data['id'], amount,
+                    data['form']['journal'], data['form']['date'],
+                    data['form']['description'], amount_second_currency,
+                    second_currency, context=context)
 
         if reconcile_lines[1] != Decimal('0.0'):
             if data['form'].get('type') == 'writeoff':
-                line_ids = [line_id] + data['form']['lines'][0][1]
-                move_line_obj.reconcile(cursor, user, line_ids,
-                        journal_id=data['form']['journal_writeoff'],
-                        date=data['form']['date'],
-                        account_id=data['form']['account_writeoff'],
-                        context=context)
+                line_ids = data['form']['lines'][0][1] + \
+                        [x.id for x in invoice.payment_lines
+                                if not x.reconciliation]
+                if line_id:
+                    line_ids += [line_id]
+                if line_ids:
+                    move_line_obj.reconcile(cursor, user, line_ids,
+                            journal_id=data['form']['journal_writeoff'],
+                            date=data['form']['date'],
+                            account_id=data['form']['account_writeoff'],
+                            context=context)
         else:
-            line_ids = reconcile_lines[0] + [line_id]
-            move_line_obj.reconcile(cursor, user, line_ids, context=context)
+            line_ids = reconcile_lines[0]
+            if line_id:
+                line_ids += [line_id]
+            if line_ids:
+                move_line_obj.reconcile(cursor, user, line_ids, context=context)
         return {}
 
 PayInvoice()
 
 
-class CreditInvoiceInit(WizardOSV):
+class CreditInvoiceInit(ModelView):
+    'Credit Invoice Init'
     _name = 'account.invoice.credit_invoice.init'
+    _description = __doc__
+    with_refund = fields.Boolean('With Refund', help='If true, ' \
+            'the current invoice(s) will be paid.')
 
 CreditInvoiceInit()
 
@@ -2339,6 +2442,7 @@ class CreditInvoice(Wizard):
     _name = 'account.invoice.credit_invoice'
     states = {
         'init': {
+            'actions': ['_init'],
             'result': {
                 'type': 'form',
                 'object': 'account.invoice.credit_invoice.init',
@@ -2357,13 +2461,46 @@ class CreditInvoice(Wizard):
         },
     }
 
+    def __init__(self):
+        super(CreditInvoice, self).__init__()
+        self._error_messages.update({
+            'refund_non_open': 'You can not credit with refund ' \
+                    'an invoice that is not opened!',
+            'refund_with_payement': 'You can not credit with refund ' \
+                    'an invoice with payments!',
+            })
+
+    def _init(self, cursor, user, data, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+        res = {
+            'with_refund': True,
+        }
+        for invoice in invoice_obj.browse(cursor, user, data['ids'],
+                context=context):
+            if invoice.state != 'open' or invoice.payment_lines:
+                res['with_refund'] = False
+                break
+        return res
+
     def _action_credit(self, cursor, user, data, context=None):
         model_data_obj = self.pool.get('ir.model.data')
         act_window_obj = self.pool.get('ir.action.act_window')
         invoice_obj = self.pool.get('account.invoice')
 
+        refund = data['form']['with_refund']
+
+        if refund:
+            for invoice in invoice_obj.browse(cursor, user, data['ids'],
+                    context=context):
+                if invoice.state != 'open':
+                    self.raise_user_error(cursor, 'refund_non_open',
+                            context=context)
+                if invoice.payment_lines:
+                    self.raise_user_error(cursor, 'refund_with_payement',
+                            context=context)
+
         invoice_ids = invoice_obj.credit(cursor, user, data['ids'],
-                context=context)
+                refund=refund, context=context)
 
         model_data_ids = model_data_obj.search(cursor, user, [
             ('fs_id', '=', 'act_invoice_form'),
diff --git a/invoice.xml b/invoice.xml
index 876bd36..3df7d21 100644
--- a/invoice.xml
+++ b/invoice.xml
@@ -3,154 +3,11 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
-        <menuitem name="Invoices" parent="account.menu_account_configuration"
-            id="menu_invoices_configuration"/>
+        <menuitem name="Payment Terms" parent="account.menu_account_configuration"
+            id="menu_payment_terms_configuration"/>
         <menuitem name="Invoices" parent="account.menu_account"
             id="menu_invoices" sequence="20"/>
 
-        <record model="ir.ui.view" id="payment_term_view_form">
-            <field name="model">account.invoice.payment_term</field>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Payment Term">
-                    <label name="name"/>
-                    <field name="name"/>
-                    <label name="active"/>
-                    <field name="active" xexpand="0" width="100"/>
-                    <field name="description" colspan="4"/>
-                    <field name="lines" colspan="4">
-                        <tree string="Payment Term Line" sequence="sequence">
-                            <field name="type"/>
-                            <field name="percent"/>
-                            <field name="amount"/>
-                            <field name="currency"/>
-                            <field name="days"/>
-                            <field name="delay"/>
-                            <field name="sequence" tree_invisible="1"/>
-                            <field name="currency_digits" tree_invisible="1"/>
-                        </tree>
-                        <form string="Payment Term Lines">
-                            <label name="type"/>
-                            <field name="type"/>
-                            <group col="1">
-                                <label name="percent" fill="1" xexpand="1" expand="1"/>
-                                <label name="amount" fill="1" xexpand="1" expand="1"/>
-                            </group>
-                            <group col="3">
-                                <field name="percent" colspan="3"/>
-                                <field name="amount"/>
-                                <label name="currency"/>
-                                <field name="currency"/>
-                            </group>
-                            <label name="days"/>
-                            <field name="days"/>
-                            <label name="delay"/>
-                            <field name="delay"/>
-                            <field name="currency_digits" invisible="1"/>
-                        </form>
-                    </field>
-                </form>
-                ]]>
-            </field>
-        </record>
-        <record model="ir.ui.view" id="payment_term_view_tree">
-            <field name="model">account.invoice.payment_term</field>
-            <field name="type">tree</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Payment Terms">
-                    <field name="name" select="1"/>
-                    <field name="active" select="1"/>
-                </tree>
-                ]]>
-            </field>
-        </record>
-        <record model="ir.action.act_window" id="act_payment_term_form">
-            <field name="name">Payment Terms</field>
-            <field name="res_model">account.invoice.payment_term</field>
-            <field name="view_type">form</field>
-        </record>
-        <record model="ir.action.act_window.view" id="act_payment_term_form_view1">
-            <field name="sequence" eval="10"/>
-            <field name="view" ref="payment_term_view_tree"/>
-            <field name="act_window" ref="act_payment_term_form"/>
-        </record>
-        <record model="ir.action.act_window.view" id="act_payment_term_form_view2">
-            <field name="sequence" eval="20"/>
-            <field name="view" ref="payment_term_view_form"/>
-            <field name="act_window" ref="act_payment_term_form"/>
-        </record>
-        <record model="ir.model.access" id="access_payment_term">
-            <field name="model" search="[('model', '=', 'account.invoice.payment_term')]"/>
-            <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_payment_term_account_admin">
-            <field name="model" search="[('model', '=', 'account.invoice.payment_term')]"/>
-            <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.model.access" id="access_payment_term_line">
-            <field name="model" search="[('model', '=', 'account.invoice.payment_term.line')]"/>
-            <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_payment_term_line_account_admin">
-            <field name="model"
-                search="[('model', '=', 'account.invoice.payment_term.line')]"/>
-            <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>
-
-        <menuitem parent="menu_invoices_configuration" action="act_payment_term_form"
-            id="menu_payment_term_form"/>
-
-        <record model="account.invoice.payment_term.line.type"
-            id="payment_term_line_type_fixed">
-            <field name="name">Fixed</field>
-            <field name="code">fixed</field>
-        </record>
-        <record model="account.invoice.payment_term.line.type"
-            id="payment_term_line_type_percent">
-            <field name="name">Percent</field>
-            <field name="code">percent</field>
-        </record>
-        <record model="account.invoice.payment_term.line.type"
-            id="payment_term_line_type_remainder">
-            <field name="name">Remainder</field>
-            <field name="code">remainder</field>
-        </record>
-
-        <record model="account.invoice.payment_term.line.delay"
-            id="payment_term_line_delay_net_days">
-            <field name="name">Net Days</field>
-            <field name="code">net_days</field>
-        </record>
-        <record model="account.invoice.payment_term.line.delay"
-            id="payment_term_line_delay_end_month">
-            <field name="name">End Month</field>
-            <field name="code">end_month</field>
-        </record>
-        <record model="ir.model.access" id="access_payment_term_line_type">
-            <field name="model"
-                search="[('model', '=', 'account.invoice.payment_term.line.type')]"/>
-            <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.action.wizard" id="wizard_pay_invoice">
             <field name="name">Pay Invoice</field>
             <field name="wiz_name">account.invoice.pay_invoice</field>
@@ -179,94 +36,99 @@ this repository contains the full copyright notices and license terms. -->
                     <label name="reference"/>
                     <field name="reference"/>
                     <notebook colspan="6">
-                        <page string="Invoice">
+                        <page string="Invoice" id="invoice" col="6">
                             <label name="invoice_date"/>
                             <field name="invoice_date"/>
                             <label name="payment_term"/>
                             <field name="payment_term"/>
-                            <label name="account"/>
-                            <field name="account"/>
                             <label name="currency"/>
                             <field name="currency"/>
-                            <field name="lines" colspan="4">
+                            <field name="lines" colspan="6">
                                 <tree string="Lines" sequence="sequence" fill="1">
                                     <field name="type"/>
-                                    <field name="product"/>
+                                    <field name="product" select="1"/>
                                     <field name="account" tree_invisible="1"/>
                                     <field name="description"/>
-                                    <field name="quantity"/>
-                                    <field name="unit"/>
-                                    <field name="unit_price"/>
+                                    <field name="quantity" select="1"/>
+                                    <field name="unit" select="2"/>
+                                    <field name="unit_price" select="2"/>
                                     <field name="taxes"/>
                                     <field name="amount"/>
                                     <field name="sequence" tree_invisible="1"/>
                                     <field name="unit_digits" tree_invisible="1"/>
+                                    <field name="currency_digits" tree_invisible="1"/>
                                 </tree>
                             </field>
-                            <group col="1" colspan="2">
-                                <field name="taxes">
-                                    <tree string="Taxes" sequence="sequence">
-                                        <field name="description"/>
-                                        <field name="base"/>
-                                        <field name="amount"/>
-                                        <field name="sequence" tree_invisible="1"/>
-                                        <field name="manual" tree_invisible="1"/>
-                                        <field name="base_code" tree_invisible="1"/>
-                                        <field name="base_sign" tree_invisible="1"/>
-                                        <field name="tax_code" tree_invisible="1"/>
-                                        <field name="tax_sign" tree_invisible="1"/>
-                                        <field name="account" tree_invisible="1"/>
-                                    </tree>
-                                </field>
-                            </group>
-                            <group col="2" colspan="2">
-                                <label name="untaxed_amount"/>
-                                <field name="untaxed_amount"/>
-                                <label name="tax_amount"/>
-                                <field name="tax_amount"/>
-                                <label name="total_amount"/>
-                                <field name="total_amount"/>
-                                <group col="4" colspan="2">
-                                    <label name="reconciled"/>
-                                    <field name="reconciled" xexpand="0"/>
-                                    <label name="state"/>
-                                    <field name="state"/>
+                            <group col="2" colspan="6" id="taxes_amount_state_buttons">
+                                <group col="1" colspan="1" id="taxes">
+                                    <field name="taxes">
+                                        <tree string="Taxes" sequence="sequence" fill="1">
+                                            <field name="description"/>
+                                            <field name="base"/>
+                                            <field name="amount"/>
+                                            <field name="sequence" tree_invisible="1"/>
+                                            <field name="manual" tree_invisible="1"/>
+                                            <field name="base_code" tree_invisible="1"/>
+                                            <field name="base_sign" tree_invisible="1"/>
+                                            <field name="tax_code" tree_invisible="1"/>
+                                            <field name="tax_sign" tree_invisible="1"/>
+                                            <field name="account" tree_invisible="1"/>
+                                        </tree>
+                                    </field>
                                 </group>
-                                <group col="5" colspan="2">
-                                    <button name="cancel" string="_Cancel"
-                                        states="{'invisible': '''state not in ('draft', 'proforma') ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
-                                        icon="tryton-cancel"/>
-                                    <button name="button_draft" string="_Reset to Draft"
-                                        type="object"
-                                        states="{'invisible': '''state != 'cancel' '''}"
-                                        icon="tryton-clear"/>
-                                    <button name="draft" string="_Draft"
-                                        states="{'invisible': '''state != 'proforma' '''}"
-                                        icon="tryton-clear"/>
-                                    <button name="proforma" string="Pro For_ma"
-                                        states="{'invisible': '''state != 'draft' '''}"
-                                        icon="tryton-go-next"/>
-                                    <button name="open" string="_Open"
-                                        states="{'invisible': '''state not in ('draft', 'proforma') ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
-                                        icon="tryton-ok"/>
-                                    <button name="%(wizard_pay_invoice)d" string="_Pay"
-                                        type="action"
-                                        states="{'invisible': '''state != 'open' ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
-                                        icon="tryton-go-next"/>
+                                <group col="2" colspan="1" id="amount_state_buttons">
+                                    <label name="untaxed_amount"/>
+                                    <field name="untaxed_amount"/>
+                                    <label name="tax_amount"/>
+                                    <field name="tax_amount"/>
+                                    <label name="total_amount"/>
+                                    <field name="total_amount"/>
+                                    <group col="4" colspan="2" id="reconciled_state">
+                                        <label name="reconciled"/>
+                                        <field name="reconciled" xexpand="0"/>
+                                        <label name="state"/>
+                                        <field name="state"/>
+                                    </group>
+                                    <group col="5" colspan="2" id="buttons">
+                                        <button name="cancel" string="_Cancel"
+                                            states="{'invisible': '''state not in ('draft', 'proforma') ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
+                                            icon="tryton-cancel"/>
+                                        <button name="button_draft" string="_Reset to Draft"
+                                            type="object"
+                                            states="{'invisible': '''state != 'cancel' '''}"
+                                            icon="tryton-clear"/>
+                                        <button name="draft" string="_Draft"
+                                            states="{'invisible': '''state != 'proforma' '''}"
+                                            icon="tryton-go-previous"/>
+                                        <button name="proforma" string="Pro For_ma"
+                                            states="{'invisible': '''state != 'draft' '''}"
+                                            icon="tryton-go-next"/>
+                                        <button name="open" string="_Open"
+                                            states="{'invisible': '''state not in ('draft', 'proforma') ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
+                                            icon="tryton-ok"/>
+                                        <button name="%(wizard_pay_invoice)d" string="_Pay"
+                                            type="action"
+                                            states="{'invisible': '''state != 'open' ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
+                                            icon="tryton-go-next"/>
+                                    </group>
                                 </group>
                             </group>
                         </page>
-                        <page string="Other Info">
+                        <page string="Other Info" id="info">
                             <label name="company"/>
                             <field name="company"/>
+                            <label name="account"/>
+                            <field name="account"/>
+                            <label name="accounting_date"/>
+                            <field name="accounting_date"/>
                             <label name="move"/>
                             <field name="move"/>
                             <label name="invoice_report"/>
                             <field name="invoice_report"/>
                             <separator name="comment" colspan="4"/>
-                            <field name="comment" colspan="4"/>
+                            <field name="comment" colspan="4" spell="party_lang"/>
                         </page>
-                        <page string="Payment">
+                        <page string="Payment" id="payment">
                             <label name="amount_to_pay_today"/>
                             <field name="amount_to_pay_today"/>
                             <label name="amount_to_pay"/>
@@ -287,6 +149,7 @@ this repository contains the full copyright notices and license terms. -->
                         </page>
                     </notebook>
                     <field name="currency_digits" invisible="1" colspan="6"/>
+                    <field name="party_lang" invisible="1" colspan="6"/>
                 </form>
                 ]]>
             </field>
@@ -299,13 +162,14 @@ this repository contains the full copyright notices and license terms. -->
                 <tree string="Invoices">
                     <field name="type" select="2"/>
                     <field name="number" select="1"/>
+                    <field name="reference" select="1"/>
                     <field name="invoice_date" select="2"/>
                     <field name="party" select="1"/>
                     <field name="currency" select="2"/>
                     <field name="untaxed_amount" select="2"/>
                     <field name="tax_amount" select="2"/>
                     <field name="total_amount" select="2"/>
-                    <field name="state" select="1"/>
+                    <field name="state" select="2"/>
                     <field name="amount_to_pay_today"/>
                     <field name="description" select="2"/>
                     <field name="currency_digits" tree_invisible="1"/>
@@ -351,6 +215,87 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_invoices" action="act_invoice_out_invoice_form"
             id="menu_invoice_out_invoice_form" sequence="1"/>
 
+        <record model="ir.action.act_window" id="act_invoice_out_invoice_form2">
+            <field name="name">Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_invoice')]</field>
+            <field name="context">{'type': 'out_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form2_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form2"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form2_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form2"/>
+        </record>
+        <menuitem name="New Invoice" parent="menu_invoice_out_invoice_form"
+            action="act_invoice_out_invoice_form2"
+            id="menu_invoice_out_invoice_form2" sequence="1"/>
+
+        <record model="ir.action.act_window" id="act_invoice_out_invoice_form3">
+            <field name="name">Draft Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_invoice'), ('state', '=', 'draft')]</field>
+            <field name="context">{'type': 'out_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form3_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form3"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form3_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form3"/>
+        </record>
+        <menuitem parent="menu_invoice_out_invoice_form" action="act_invoice_out_invoice_form3"
+            id="menu_invoice_out_invoice_form3" sequence="2"/>
+
+        <record model="ir.action.act_window" id="act_invoice_out_invoice_form4">
+            <field name="name">Pro Forma Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_invoice'), ('state', '=', 'proforma')]</field>
+            <field name="context">{'type': 'out_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form4_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form4"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form4_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form4"/>
+        </record>
+        <menuitem parent="menu_invoice_out_invoice_form" action="act_invoice_out_invoice_form4"
+            id="menu_invoice_out_invoice_form4" sequence="3"/>
+
+        <record model="ir.action.act_window" id="act_invoice_out_invoice_form5">
+            <field name="name">Opened Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_invoice'), ('state', '=', 'open')]</field>
+            <field name="context">{'type': 'out_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form5_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form5"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form5_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form5"/>
+        </record>
+        <menuitem parent="menu_invoice_out_invoice_form" action="act_invoice_out_invoice_form5"
+            id="menu_invoice_out_invoice_form5" sequence="4"/>
+
         <record model="ir.action.act_window" id="act_invoice_out_credit_note_form">
             <field name="name">Credit Notes</field>
             <field name="res_model">account.invoice</field>
@@ -371,6 +316,87 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_invoices" action="act_invoice_out_credit_note_form"
             id="menu_invoice_out_credit_note_form" sequence="2"/>
 
+        <record model="ir.action.act_window" id="act_invoice_out_credit_note_form2">
+            <field name="name">Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_credit_note')]</field>
+            <field name="context">{'type': 'out_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form2_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form2"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form2_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form2"/>
+        </record>
+        <menuitem name="New Credit Note" parent="menu_invoice_out_credit_note_form"
+            action="act_invoice_out_credit_note_form2"
+            id="menu_invoice_out_credit_note_form2" sequence="1"/>
+
+        <record model="ir.action.act_window" id="act_invoice_out_credit_note_form3">
+            <field name="name">Draft Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_credit_note'), ('domain', '=', 'draft')]</field>
+            <field name="context">{'type': 'out_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form3_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form3"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form3_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form3"/>
+        </record>
+        <menuitem parent="menu_invoice_out_credit_note_form" action="act_invoice_out_credit_note_form3"
+            id="menu_invoice_out_credit_note_form3" sequence="2"/>
+
+        <record model="ir.action.act_window" id="act_invoice_out_credit_note_form4">
+            <field name="name">Pro Forma Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_credit_note'), ('domain', '=', 'proforma')]</field>
+            <field name="context">{'type': 'out_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form4_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form4"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form4_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form4"/>
+        </record>
+        <menuitem parent="menu_invoice_out_credit_note_form" action="act_invoice_out_credit_note_form4"
+            id="menu_invoice_out_credit_note_form4" sequence="3"/>
+
+        <record model="ir.action.act_window" id="act_invoice_out_credit_note_form5">
+            <field name="name">Opened Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_credit_note'), ('domain', '=', 'open')]</field>
+            <field name="context">{'type': 'out_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form5_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form5"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form5_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form5"/>
+        </record>
+        <menuitem parent="menu_invoice_out_credit_note_form" action="act_invoice_out_credit_note_form5"
+            id="menu_invoice_out_credit_note_form5" sequence="4"/>
+
         <record model="ir.action.act_window" id="act_invoice_in_invoice_form">
             <field name="name">Supplier Invoices</field>
             <field name="res_model">account.invoice</field>
@@ -391,6 +417,87 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_invoices" action="act_invoice_in_invoice_form"
             id="menu_invoice_in_invoice_form" sequence="3"/>
 
+        <record model="ir.action.act_window" id="act_invoice_in_invoice_form2">
+            <field name="name">Supplier Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_invoice')]</field>
+            <field name="context">{'type': 'in_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form2_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form2"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form2_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form2"/>
+        </record>
+        <menuitem name="New Supplier Invoice" parent="menu_invoice_in_invoice_form"
+            action="act_invoice_in_invoice_form2"
+            id="menu_invoice_in_invoice_form2" sequence="1"/>
+
+        <record model="ir.action.act_window" id="act_invoice_in_invoice_form3">
+            <field name="name">Draft Supplier Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_invoice'), ('state', '=', 'draft')]</field>
+            <field name="context">{'type': 'in_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form3_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form3"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form3_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form3"/>
+        </record>
+        <menuitem parent="menu_invoice_in_invoice_form" action="act_invoice_in_invoice_form3"
+            id="menu_invoice_in_invoice_form3" sequence="2"/>
+
+        <record model="ir.action.act_window" id="act_invoice_in_invoice_form4">
+            <field name="name">Pro Forma Supplier Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_invoice'), ('state', '=', 'proforma')]</field>
+            <field name="context">{'type': 'in_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form4_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form4"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form4_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form4"/>
+        </record>
+        <menuitem parent="menu_invoice_in_invoice_form" action="act_invoice_in_invoice_form4"
+            id="menu_invoice_in_invoice_form4" sequence="3"/>
+
+        <record model="ir.action.act_window" id="act_invoice_in_invoice_form5">
+            <field name="name">Opened Supplier Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_invoice'), ('state', '=', 'open')]</field>
+            <field name="context">{'type': 'in_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form5_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form5"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form5_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form5"/>
+        </record>
+        <menuitem parent="menu_invoice_in_invoice_form" action="act_invoice_in_invoice_form5"
+            id="menu_invoice_in_invoice_form5" sequence="4"/>
+
         <record model="ir.action.act_window" id="act_invoice_in_credit_note_form">
             <field name="name">Supplier Credit Notes</field>
             <field name="res_model">account.invoice</field>
@@ -411,6 +518,87 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_invoices" action="act_invoice_in_credit_note_form"
             id="menu_invoice_in_credit_note_form" sequence="4"/>
 
+        <record model="ir.action.act_window" id="act_invoice_in_credit_note_form2">
+            <field name="name">Supplier Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_credit_note')]</field>
+            <field name="context">{'type': 'in_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form2_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form2"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form2_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form2"/>
+        </record>
+        <menuitem name="New Supplier Credit Note" parent="menu_invoice_in_credit_note_form"
+            action="act_invoice_in_credit_note_form2"
+            id="menu_invoice_in_credit_note_form2" sequence="1"/>
+
+        <record model="ir.action.act_window" id="act_invoice_in_credit_note_form3">
+            <field name="name">Draft Supplier Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_credit_note'), ('state', '=', 'draft')]</field>
+            <field name="context">{'type': 'in_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form3_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form3"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form3_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form3"/>
+        </record>
+        <menuitem parent="menu_invoice_in_credit_note_form" action="act_invoice_in_credit_note_form3"
+            id="menu_invoice_in_credit_note_form3" sequence="2"/>
+
+        <record model="ir.action.act_window" id="act_invoice_in_credit_note_form4">
+            <field name="name">Pro Forma Supplier Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_credit_note'), ('state', '=', 'proforma')]</field>
+            <field name="context">{'type': 'in_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form4_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form4"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form4_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form4"/>
+        </record>
+        <menuitem parent="menu_invoice_in_credit_note_form" action="act_invoice_in_credit_note_form4"
+            id="menu_invoice_in_credit_note_form4" sequence="3"/>
+
+        <record model="ir.action.act_window" id="act_invoice_in_credit_note_form5">
+            <field name="name">Opened Supplier Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_credit_note'), ('state', '=', 'open')]</field>
+            <field name="context">{'type': 'in_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form5_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form5"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form5_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form5"/>
+        </record>
+        <menuitem parent="menu_invoice_in_credit_note_form" action="act_invoice_in_credit_note_form5"
+            id="menu_invoice_in_credit_note_form5" sequence="4"/>
+
         <record model="ir.model.access" id="access_invoice">
             <field name="model" search="[('model', '=', 'account.invoice')]"/>
             <field name="perm_read" eval="True"/>
@@ -469,7 +657,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="flow_stop" eval="True"/>
         </record>
         <record model="workflow.activity" id="invoice_activity_cancel">
-            <field name="name">Cancel</field>
+            <field name="name">Canceled</field>
             <field name="workflow" ref="invoice_workflow"/>
             <field name="kind">function</field>
             <field name="action">write({'state': 'cancel'})</field>
@@ -525,27 +713,48 @@ this repository contains the full copyright notices and license terms. -->
                 <form string="Invoice Line" cursor="product">
                     <label name="invoice"/>
                     <field name="invoice" colspan="3"/>
-                    <label name="type"/>
-                    <field name="type"/>
-                    <label name="sequence"/>
-                    <field name="sequence"/>
-                    <label name="product"/>
-                    <field name="product"/>
-                    <label name="account"/>
-                    <field name="account"/>
-                    <label name="description"/>
-                    <field name="description" colspan="3"/>
-                    <label name="quantity"/>
-                    <field name="quantity"/>
-                    <label name="unit"/>
-                    <field name="unit"/>
-                    <label name="unit_price"/>
-                    <field name="unit_price"/>
-                    <label name="amount"/>
-                    <field name="amount"/>
-                    <separator name="taxes" colspan="4"/>
-                    <field name="taxes" colspan="4"/>
-                    <field name="unit_digits" invisible="1"/>
+                    <notebook colspan="4">
+                        <page string="General" id="general">
+                            <label name="type"/>
+                            <field name="type"/>
+                            <label name="sequence"/>
+                            <field name="sequence"/>
+                            <label name="product"/>
+                            <field name="product">
+                                <tree string="Products">
+                                    <field name="name" select="1"/>
+                                    <field name="code" select="1"/>
+                                    <field name="list_price_uom" select="2"/>
+                                    <field name="cost_price_uom" select="2"/>
+                                    <field name="default_uom" select="2"/>
+                                    <field name="active" select="2"/>
+                                </tree>
+                            </field>
+                            <label name="account"/>
+                            <field name="account"/>
+                            <newline/>
+                            <label name="description"/>
+                            <field name="description" colspan="3"
+                                spell="_parent_invoice.party_lang"/>
+                            <label name="quantity"/>
+                            <field name="quantity"/>
+                            <label name="unit"/>
+                            <field name="unit"/>
+                            <label name="unit_price"/>
+                            <field name="unit_price"/>
+                            <label name="amount"/>
+                            <field name="amount"/>
+                            <separator name="taxes" colspan="4"/>
+                            <field name="taxes" colspan="4"/>
+                        </page>
+                        <page string="Notes" id="notes">
+                            <separator name="note" colspan="4"/>
+                            <field name="note" colspan="4"
+                                spell="_parent_invoice.party_lang"/>
+                        </page>
+                    </notebook>
+                    <field name="unit_digits" invisible="1" colspan="4"/>
+                    <field name="currency_digits" invisible="1" colspan="4"/>
                 </form>
                 ]]>
             </field>
@@ -567,6 +776,7 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="taxes"/>
                     <field name="amount"/>
                     <field name="unit_digits" tree_invisible="1"/>
+                    <field name="currency_digits" tree_invisible="1"/>
                 </tree>
                 ]]>
             </field>
@@ -603,7 +813,7 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="account"/>
                     <label name="manual"/>
                     <field name="manual"/>
-                    <group col="6" colspan="4" string="Tax Code">
+                    <group col="6" colspan="4" string="Tax Code" id="tax_code">
                         <label name="amount"/>
                         <field name="amount"/>
                         <label name="tax_code"/>
@@ -617,6 +827,7 @@ this repository contains the full copyright notices and license terms. -->
                         <label name="base_sign"/>
                         <field name="base_sign"/>
                     </group>
+                    <field name="tax" colspan="4" invisible="1"/>
                 </form>
                 ]]>
             </field>
@@ -633,6 +844,7 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="manual" select="2"/>
                     <field name="base"/>
                     <field name="amount"/>
+                    <field name="tax" tree_invisible="1"/>
                 </tree>
                 ]]>
             </field>
@@ -653,106 +865,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="perm_delete" eval="True"/>
         </record>
 
-
-        <record model="ir.ui.view" id="address_view_tree">
-            <field name="model">party.address</field>
-            <field name="inherit" ref="party.address_view_tree"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/tree/field[@name="active"]" position="after">
-                        <field name="invoice" select="2"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
-        </record>
-        <record model="ir.ui.view" id="address_view_form">
-            <field name="model">party.address</field>
-            <field name="inherit" ref="party.address_view_form"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/form/group/field[@name="active"]"
-                        position="after">
-                        <label name="invoice"/>
-                        <field name="invoice" xexpand="0" width="25"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
-        </record>
-
-        <record model="ir.ui.view" id="party_view_form">
-            <field name="model">party.party</field>
-            <field name="inherit" ref="party.party_view_form"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/form/notebook/page[@string="_Accounting"]/field[@name="vat_number"]"
-                        position="after">
-                        <separator string="Payment Terms" colspan="4"/>
-                        <label name="payment_term"/>
-                        <field name="payment_term"/>
-                        <label name="supplier_payment_term"/>
-                        <field name="supplier_payment_term"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
-        </record>
-
-        <record model="ir.ui.view" id="fiscalyear_view_form">
-            <field name="model">account.fiscalyear</field>
-            <field name="inherit" ref="account.fiscalyear_view_form"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/form/notebook/page[@string="Sequences"]/field[@name="post_move_sequence"]"
-                        position="after">
-                        <newline/>
-                        <label name="out_invoice_sequence"/>
-                        <field name="out_invoice_sequence"/>
-                        <label name="in_invoice_sequence"/>
-                        <field name="in_invoice_sequence"/>
-                        <label name="out_credit_note_sequence"/>
-                        <field name="out_credit_note_sequence"/>
-                        <label name="in_credit_note_sequence"/>
-                        <field name="in_credit_note_sequence"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
-        </record>
-
-        <record model="ir.ui.view" id="period_view_form">
-            <field name="model">account.period</field>
-            <field name="inherit" ref="account.period_view_form"/>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <data>
-                    <xpath
-                        expr="/form/field[@name="post_move_sequence"]"
-                        position="after">
-                        <newline/>
-                        <label name="out_invoice_sequence"/>
-                        <field name="out_invoice_sequence"/>
-                        <label name="in_invoice_sequence"/>
-                        <field name="in_invoice_sequence"/>
-                        <label name="out_credit_note_sequence"/>
-                        <field name="out_credit_note_sequence"/>
-                        <label name="in_credit_note_sequence"/>
-                        <field name="in_credit_note_sequence"/>
-                    </xpath>
-                </data>
-                ]]>
-            </field>
-        </record>
-
         <record model="ir.ui.view" id="pay_invoice_init_view_form">
             <field name="model">account.invoice.pay_invoice.init</field>
             <field name="type">form</field>
@@ -783,17 +895,21 @@ this repository contains the full copyright notices and license terms. -->
                 <form string="Pay Invoice">
                     <label name="type"/>
                     <field name="type" colspan="3"/>
-                    <label name="journal_writeoff"/>
-                    <field name="journal_writeoff"/>
-                    <label name="account_writeoff"/>
-                    <field name="account_writeoff"/>
                     <label name="amount"/>
                     <field name="amount"/>
                     <label name="currency"/>
                     <field name="currency"/>
+                    <label name="amount_writeoff"/>
+                    <field name="amount_writeoff"/>
+                    <label name="currency_writeoff"/>
+                    <field name="currency_writeoff"/>
+                    <label name="account_writeoff"/>
+                    <field name="account_writeoff"/>
+                    <label name="journal_writeoff"/>
+                    <field name="journal_writeoff"/>
                     <separator name="lines" colspan="4"/>
-                    <field name="lines" colspan="4" widget="many2many">
-                        <tree string="Lines to Pay">
+                    <field name="lines" colspan="4">
+                        <tree string="Lines to Pay" fill="1">
                             <field name="maturity_date"/>
                             <field name="debit" sum="Debit"/>
                             <field name="credit" sum="Credit"/>
@@ -803,12 +919,23 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="second_currency_digits" tree_invisible="1"/>
                         </tree>
                     </field>
-                    <field name="lines_to_pay" colspan="4" invisible="1"/>
+                    <separator name="payment_lines" colspan="4"/>
+                    <field name="payment_lines" colspan="4">
+                        <tree string="Payment Lines" fill="1">
+                            <field name="date"/>
+                            <field name="debit" sum="Debit"/>
+                            <field name="credit" sum="Credit"/>
+                            <field name="amount_second_currency" sum="Amount Second Currency"/>
+                            <field name="second_currency"/>
+                            <field name="currency_digits" tree_invisible="1"/>
+                            <field name="second_currency_digits" tree_invisible="1"/>
+                        </tree>
+                    </field>
                     <field name="description" colspan="4" invisible="1"/>
                     <field name="journal" colspan="4" invisible="1"/>
                     <field name="date" colspan="4" invisible="1"/>
                     <field name="company" colspan="4" invisible="1"/>
-                    <field name="currency_digits" colspan="4" invisible="1"/>
+                    <field name="invoice" colspan="4" invisible="1"/>
                 </form>
                 ]]>
             </field>
@@ -820,13 +947,14 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <form string="Print Invoice" col="2">
-                    <separator string="<b>Warning!</b>" colspan="2" align="0.5"/>
+                    <separator string="<b>Warning!</b>" colspan="2"
+                        align="0.5" id="warning"/>
                     <image name="tryton-dialog-information"/>
-                    <group col="1">
+                    <group col="1" id="labels">
                         <label string="You have selected more than one invoice to print."
-                            align="0.0"/>
+                            align="0.0" id="selected"/>
                         <label string="The invoices will be sent <i>directly</i> to the printer."
-                            align="0.0"/>
+                            align="0.0" id="printer"/>
                     </group>
                 </form>
                 ]]>
@@ -851,8 +979,12 @@ this repository contains the full copyright notices and license terms. -->
                 <![CDATA[
                 <form string="Credit Invoice" col="2">
                     <image name="tryton-dialog-information"/>
-                    <label string="Are you sure to credit those/this invoice(s)?"
-                        align="0.0"/>
+                    <group col="2" id="credit_refund">
+                        <label string="Are you sure to credit those/this invoice(s)?"
+                            align="0.0" id="credit" colspan="2"/>
+                        <label name="with_refund"/>
+                        <field name="with_refund"/>
+                    </group>
                 </form>
                 ]]>
             </field>
@@ -868,5 +1000,27 @@ this repository contains the full copyright notices and license terms. -->
             <field name="model">account.invoice,0</field>
             <field name="action" ref="credit_invoice"/>
         </record>
+
+        <record model="ir.rule.group" id="rule_group_invoice">
+            <field name="model" search="[('model', '=', 'account.invoice')]"/>
+            <field name="global_p" eval="True"/>
+        </record>
+        <record model="ir.rule" id="rule_invoice1">
+            <field name="field" search="[('name', '=', 'company'), ('model.model', '=', 'account.invoice')]"/>
+            <field name="operator">=</field>
+            <field name="operand">User/Current Company</field>
+            <field name="rule_group" ref="rule_group_invoice"/>
+        </record>
+
+        <record model="ir.rule.group" id="rule_group_invoice_line">
+            <field name="model" search="[('model', '=', 'account.invoice.line')]"/>
+            <field name="global_p" eval="True"/>
+        </record>
+        <record model="ir.rule" id="rule_invoice_line1">
+            <field name="field" search="[('name', '=', 'company'), ('model.model', '=', 'account.invoice.line')]"/>
+            <field name="operator">=</field>
+            <field name="operand">User/Current Company</field>
+            <field name="rule_group" ref="rule_group_invoice_line"/>
+        </record>
     </data>
 </tryton>
diff --git a/party.py b/party.py
new file mode 100644
index 0000000..fba7dfc
--- /dev/null
+++ b/party.py
@@ -0,0 +1,22 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from trytond.model import ModelView, ModelSQL, fields
+
+
+class Address(ModelSQL, ModelView):
+    _name = 'party.address'
+    invoice = fields.Boolean('Invoice')
+
+Address()
+
+
+class Party(ModelSQL, ModelView):
+    _name = 'party.party'
+    payment_term = fields.Property(type='many2one',
+            relation='account.invoice.payment_term',
+            string='Invoice Payment Term')
+    supplier_payment_term = fields.Property(type='many2one',
+            relation='account.invoice.payment_term',
+            string='Supplier Payment Term')
+
+Party()
diff --git a/party.xml b/party.xml
new file mode 100644
index 0000000..4d89ade
--- /dev/null
+++ b/party.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tryton>
+    <data>
+        <record model="ir.ui.view" id="address_view_tree">
+            <field name="model">party.address</field>
+            <field name="inherit" ref="party.address_view_tree"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/tree/field[@name="active"]" position="after">
+                        <field name="invoice" select="2"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="address_view_form">
+            <field name="model">party.address</field>
+            <field name="inherit" ref="party.address_view_form"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/form/group/field[@name="active"]"
+                        position="after">
+                        <label name="invoice"/>
+                        <field name="invoice" xexpand="0" width="25"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="party_view_form">
+            <field name="model">party.party</field>
+            <field name="inherit" ref="party.party_view_form"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/form/notebook/page[@id="accounting"]/field[@name="vat_number"]"
+                        position="after">
+                        <separator string="Payment Terms" colspan="4" id="payment_terms"/>
+                        <label name="payment_term"/>
+                        <field name="payment_term"/>
+                        <label name="supplier_payment_term"/>
+                        <field name="supplier_payment_term"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.action.act_window" id="act_invoice_form2">
+            <field name="name">Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[("party", "=", active_id)]</field>
+        </record>
+        <record model="ir.action.keyword"
+                id="act_open_invoice_keyword1">
+            <field name="keyword">form_relate</field>
+            <field name="model">party.party,0</field>
+            <field name="action" ref="act_invoice_form2"/>
+        </record>
+
+    </data>
+</tryton>
diff --git a/payment_term.py b/payment_term.py
new file mode 100644
index 0000000..8640332
--- /dev/null
+++ b/payment_term.py
@@ -0,0 +1,221 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from trytond.model import ModelView, ModelSQL, fields
+from trytond.backend import TableHandler
+from decimal import Decimal
+import datetime
+import mx.DateTime
+
+
+class PaymentTerm(ModelSQL, ModelView):
+    'Payment Term'
+    _name = 'account.invoice.payment_term'
+    _description = __doc__
+    name = fields.Char('Payment Term', 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',
+            'Lines')
+
+    def __init__(self):
+        super(PaymentTerm, self).__init__()
+        self._order.insert(0, ('name', 'ASC'))
+        self._error_messages.update({
+            'invalid_line': 'Invalid payment term line!',
+            'missing_remainder': 'Payment term missing a remainder line!',
+            })
+
+    def default_active(self, cursor, user, context=None):
+        return True
+
+    def compute(self, cursor, user, amount, currency, payment_term, date=None,
+            context=None):
+        '''
+        Return list with (date, amount) for each payment term lines
+        '''
+        #TODO implement business_days
+        # http://pypi.python.org/pypi/BusinessHours/
+        type_obj = self.pool.get('account.invoice.payment_term.line.type')
+        delay_obj = self.pool.get(
+                'account.invoice.payment_term.line.delay')
+        currency_obj = self.pool.get('currency.currency')
+        date_obj = self.pool.get('ir.date')
+
+        res = []
+        if date is None:
+            date = date_obj.today(cursor, user, context=context)
+        remainder = amount
+        for line in payment_term.lines:
+            value = type_obj.get_value(cursor, user, line, remainder, currency,
+                    context)
+            value_date = delay_obj.get_date(cursor, user, line, date, context)
+            if not value or not value_date:
+                if (not remainder) and line.amount:
+                    self.raise_user_error(cursor, 'invalid_line',
+                            context=context)
+                else:
+                    continue
+            res.append((value_date, value))
+            remainder -= value
+        if not currency_obj.is_zero(cursor, user, currency, remainder):
+            self.raise_user_error(cursor, 'missing_remainder',
+                    context=context)
+        return res
+
+PaymentTerm()
+
+
+class PaymentTermLineType(ModelSQL, ModelView):
+    'Payment Term Line Type'
+    _name = 'account.invoice.payment_term.line.type'
+    _description = __doc__
+    name = fields.Char('Name', size=None, translate=True, required=True)
+    code = fields.Char('Code', size=None, required=True)
+
+    def __init__(self):
+        super(PaymentTermLineType, self).__init__()
+        self._sql_constraints += [
+            ('code_uniq', 'UNIQUE(code)', 'The code must be unique!'),
+        ]
+        self._order.insert(0, ('name', 'ASC'))
+
+    def get_value(self, cursor, user, line, amount, currency, context=None):
+        currency_obj = self.pool.get('currency.currency')
+        if line.type == 'fixed':
+            return currency_obj.compute(cursor, user, line.currency,
+                    line.amount, currency, context=context)
+        elif line.type == 'percent':
+            return currency_obj.round(cursor, user, currency,
+                    amount * line.percentage / Decimal('100'))
+        elif line.type == 'remainder':
+            return currency_obj.round(cursor, user, currency, amount)
+        return None
+
+PaymentTermLineType()
+
+
+class PaymentTermLineDelay(ModelSQL, ModelView):
+    'Payment Term Line Delay'
+    _name = 'account.invoice.payment_term.line.delay'
+    _description = __doc__
+    name = fields.Char('Name', size=None, translate=True, required=True)
+    code = fields.Char('Code', size=None, required=True)
+
+    def __init__(self):
+        super(PaymentTermLineDelay, self).__init__()
+        self._sql_constraints += [
+            ('code_uniq', 'UNIQUE(code)', 'The code must be unique!'),
+        ]
+        self._order.insert(0, ('name', 'ASC'))
+
+    def get_date(self, cursor, user, line, date, context=None):
+        value = None
+        if line.delay == 'net_days':
+            value = mx.DateTime.strptime(str(date), '%Y-%m-%d') + \
+                    mx.DateTime.RelativeDateTime(days=line.days)
+        elif line.delay == 'end_month':
+            value = mx.DateTime.strptime(str(date), '%Y-%m-%d') + \
+                    mx.DateTime.RelativeDateTime(days=line.days) + \
+                    mx.DateTime.RelativeDateTime(day=-1)
+        if value:
+            return datetime.date(value.year, value.month, value.day)
+        return None
+
+PaymentTermLineDelay()
+
+
+class PaymentTermLine(ModelSQL, ModelView):
+    'Payment Term Line'
+    _name = 'account.invoice.payment_term.line'
+    _description = __doc__
+    sequence = fields.Integer('Sequence',
+            help='Use to order lines in ascending order')
+    payment = fields.Many2One('account.invoice.payment_term', 'Payment Term',
+            required=True, ondelete="CASCADE")
+    type = fields.Selection('get_type', 'Type', required=True,
+            on_change=['type'])
+    percentage = fields.Numeric('Percentage', digits=(16, 8),
+            states={
+                'invisible': "type != 'percent'",
+                'required': "type == 'percent'",
+            }, help='In %')
+    amount = fields.Numeric('Amount', digits="(16, currency_digits)",
+            states={
+                'invisible': "type != 'fixed'",
+                'required': "type == 'fixed'",
+            })
+    currency = fields.Many2One('currency.currency', 'Currency',
+            states={
+                'invisible': "type != 'fixed'",
+                'required': "type == 'fixed'",
+            })
+    currency_digits = fields.Function('get_currency_digits', type='integer',
+            string='Currency Digits', on_change_with=['currency'])
+    days = fields.Integer('Number of Days')
+    delay = fields.Selection('get_delay', 'Condition', required=True)
+
+    def __init__(self):
+        super(PaymentTermLine, self).__init__()
+        self._order.insert(0, ('sequence', 'ASC'))
+
+    def init(self, cursor, module_name):
+        super(PaymentTermLine, self).init(cursor, module_name)
+        table = TableHandler(cursor, self, module_name)
+
+        # Migration from 1.0 percent change into percentage
+        if table.column_exist('percent'):
+            cursor.execute('UPDATE "' + self._table + '" ' \
+                    'SET percentage = percent * 100')
+            table.drop_column('percent', exception=True)
+
+    def default_type(self, cursor, user, context=None):
+        return 'remainder'
+
+    def default_delay(self, cursor, user, context=None):
+        return 'net_days'
+
+    def get_type(self, cursor, user, context=None):
+        type_obj = self.pool.get('account.invoice.payment_term.line.type')
+        type_ids = type_obj.search(cursor, user, [], context=context)
+        types = type_obj.browse(cursor, user, type_ids, context=context)
+        return [(x.code, x.name) for x in types]
+
+    def get_delay(self, cursor, user, context=None):
+        delay_obj = self.pool.get('account.invoice.payment_term.line.delay')
+        delay_ids = delay_obj.search(cursor, user, [], context=context)
+        delays = delay_obj.browse(cursor, user, delay_ids,
+                context=context)
+        return [(x.code, x.name) for x in delays]
+
+    def on_change_type(self, cursor, user, ids, vals, context=None):
+        if not 'type' in vals:
+            return {}
+        res = {}
+        if vals['type'] != 'fixed':
+            res['amount'] = Decimal('0.0')
+            res['currency'] =  False
+        if vals['type'] != 'percent':
+            res['percentage'] =  Decimal('0.0')
+        return res
+
+    def on_change_with_currency_digits(self, cursor, user, ids, vals,
+            context=None):
+        currency_obj = self.pool.get('currency.currency')
+        if vals.get('currency'):
+            currency = currency_obj.browse(cursor, user, vals['currency'],
+                    context=context)
+            return currency.digits
+        return 2
+
+    def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
+        res = {}
+        for line in self.browse(cursor, user, ids, context=context):
+            if line.currency:
+                res[line.id] = line.currency.digits
+            else:
+                res[line.id] = 2
+        return res
+
+PaymentTermLine()
+
+
diff --git a/payment_term.xml b/payment_term.xml
new file mode 100644
index 0000000..449b414
--- /dev/null
+++ b/payment_term.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tryton>
+    <data>
+        <record model="ir.ui.view" id="payment_term_view_form">
+            <field name="model">account.invoice.payment_term</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Payment Term">
+                    <label name="name"/>
+                    <field name="name"/>
+                    <label name="active"/>
+                    <field name="active" xexpand="0" width="100"/>
+                    <field name="description" colspan="4"/>
+                    <field name="lines" colspan="4">
+                        <tree string="Payment Term Line" sequence="sequence">
+                            <field name="type"/>
+                            <field name="percentage"/>
+                            <field name="amount"/>
+                            <field name="currency"/>
+                            <field name="days"/>
+                            <field name="delay"/>
+                            <field name="sequence" tree_invisible="1"/>
+                            <field name="currency_digits" tree_invisible="1"/>
+                        </tree>
+                        <form string="Payment Term Lines">
+                            <label name="type"/>
+                            <field name="type"/>
+                            <group col="1" id="label_amount_percent">
+                                <label name="percentage" fill="1" xexpand="1" expand="1"/>
+                                <label name="amount" fill="1" xexpand="1" expand="1"/>
+                            </group>
+                            <group col="3" id="amount_percent">
+                                <field name="percentage" colspan="3"/>
+                                <field name="amount"/>
+                                <label name="currency"/>
+                                <field name="currency"/>
+                            </group>
+                            <label name="days"/>
+                            <field name="days"/>
+                            <label name="delay"/>
+                            <field name="delay"/>
+                            <field name="currency_digits" invisible="1"/>
+                        </form>
+                    </field>
+                </form>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="payment_term_view_tree">
+            <field name="model">account.invoice.payment_term</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Payment Terms">
+                    <field name="name" select="1"/>
+                    <field name="active" select="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.action.act_window" id="act_payment_term_form">
+            <field name="name">Payment Terms</field>
+            <field name="res_model">account.invoice.payment_term</field>
+            <field name="view_type">form</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_payment_term_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="payment_term_view_tree"/>
+            <field name="act_window" ref="act_payment_term_form"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_payment_term_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="payment_term_view_form"/>
+            <field name="act_window" ref="act_payment_term_form"/>
+        </record>
+        <record model="ir.model.access" id="access_payment_term">
+            <field name="model" search="[('model', '=', 'account.invoice.payment_term')]"/>
+            <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_payment_term_account_admin">
+            <field name="model" search="[('model', '=', 'account.invoice.payment_term')]"/>
+            <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.model.access" id="access_payment_term_line">
+            <field name="model" search="[('model', '=', 'account.invoice.payment_term.line')]"/>
+            <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_payment_term_line_account_admin">
+            <field name="model"
+                search="[('model', '=', 'account.invoice.payment_term.line')]"/>
+            <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>
+
+        <menuitem parent="menu_payment_terms_configuration"
+            action="act_payment_term_form" id="menu_payment_term_form"/>
+
+        <record model="account.invoice.payment_term.line.type"
+            id="payment_term_line_type_fixed">
+            <field name="name">Fixed</field>
+            <field name="code">fixed</field>
+        </record>
+        <record model="account.invoice.payment_term.line.type"
+            id="payment_term_line_type_percent">
+            <field name="name">Percentage</field>
+            <field name="code">percent</field>
+        </record>
+        <record model="account.invoice.payment_term.line.type"
+            id="payment_term_line_type_remainder">
+            <field name="name">Remainder</field>
+            <field name="code">remainder</field>
+        </record>
+
+        <record model="account.invoice.payment_term.line.delay"
+            id="payment_term_line_delay_net_days">
+            <field name="name">Net Days</field>
+            <field name="code">net_days</field>
+        </record>
+        <record model="account.invoice.payment_term.line.delay"
+            id="payment_term_line_delay_end_month">
+            <field name="name">End Month</field>
+            <field name="code">end_month</field>
+        </record>
+        <record model="ir.model.access" id="access_payment_term_line_type">
+            <field name="model"
+                search="[('model', '=', 'account.invoice.payment_term.line.type')]"/>
+            <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>
+    </data>
+</tryton>
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 05aac85..e7f7828 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.0.3
+Version: 1.2.0
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,7 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.0/
+Download-URL: http://downloads.tryton.org/1.2/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index 5e50844..ecd4482 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -4,15 +4,23 @@ INSTALL
 LICENSE
 MANIFEST.in
 README
+TODO
+account.xml
 de_DE.csv
+es_CO.csv
 es_ES.csv
 fr_FR.csv
 invoice.odt
 invoice.xml
+party.xml
+payment_term.xml
 setup.py
 ./__init__.py
 ./__tryton__.py
+./account.py
 ./invoice.py
+./party.py
+./payment_term.py
 trytond_account_invoice.egg-info/PKG-INFO
 trytond_account_invoice.egg-info/SOURCES.txt
 trytond_account_invoice.egg-info/dependency_links.txt
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
index 180600d..3ba4229 100644
--- a/trytond_account_invoice.egg-info/requires.txt
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -5,5 +5,5 @@ trytond_party
 trytond_product
 trytond_currency
 trytond_account_product
-trytond >= 1.0
-trytond < 1.1
\ No newline at end of file
+trytond >= 1.2
+trytond < 1.3
\ No newline at end of file
commit 2054e59d5b82648d01e71169685e3bd68c3900a6
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Mar 28 16:19:10 2009 +0100

    Releasing debian version 1.0.3-2.

diff --git a/debian/changelog b/debian/changelog
index 216bd08..9484648 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-account-invoice (1.0.3-2) unstable; urgency=low
+
+  * Adding Mathias to uploaders.
+
+ -- Daniel Baumann <daniel at debian.org>  Sat, 28 Mar 2009 16:18:00 +0100
+
 tryton-modules-account-invoice (1.0.3-1) unstable; urgency=low
 
   * Merging upstream version 1.0.3.
commit 0feb71445b24e197baecf65ad30e9dde6f9897bb
Author: Daniel Baumann <daniel at debian.org>
Date:   Sat Mar 28 16:13:15 2009 +0100

    Adding Mathias to uploaders.

diff --git a/debian/control b/debian/control
index ef1cdb7..a9a71f5 100644
--- a/debian/control
+++ b/debian/control
@@ -2,6 +2,7 @@ Source: tryton-modules-account-invoice
 Section: python
 Priority: optional
 Maintainer: Daniel Baumann <daniel at debian.org>
+Uploaders: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
 Build-Depends: debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
 Standards-Version: 3.8.1
 Homepage: http://www.tryton.org/
commit d4c63aa28b6e972d954df5f2086dfef92fede78d
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Mar 23 07:53:30 2009 +0100

    Releasing debian version 1.0.3-1.

diff --git a/debian/changelog b/debian/changelog
index 2daf2d5..216bd08 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-account-invoice (1.0.3-1) unstable; urgency=low
+
+  * Merging upstream version 1.0.3.
+
+ -- Daniel Baumann <daniel at debian.org>  Mon, 23 Mar 2009 07:53:00 +0100
+
 tryton-modules-account-invoice (1.0.2-1) unstable; urgency=low
 
   * Merging upstream version 1.0.2.
commit b4be599d512b04cf9277904a2ab224bb44733c8f
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Mar 23 07:52:51 2009 +0100

    Merging upstream version 1.0.3.

diff --git a/CHANGELOG b/CHANGELOG
index bf8a718..ba45f76 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+Version 1.0.3 - 2009-03-02
+* Some bug fixes (see mercurial logs for details)
+* Use amount_to_pay if amount_to_pay_today is zero in pay invoice wizard
+
 Version 1.0.2 - 2009-01-06
 * Some bug fixes (see mercurial logs for details)
 
diff --git a/COPYRIGHT b/COPYRIGHT
index 37fef2d..da277a9 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,7 +1,7 @@
 Copyright (C) 2004-2008 Tiny SPRL.
-Copyright (C) 2008 Cédric Krier.
-Copyright (C) 2008 Bertrand Chenal.
-Copyright (C) 2008 B2CK SPRL.
+Copyright (C) 2008-2009 Cédric Krier.
+Copyright (C) 2008-2009 Bertrand Chenal.
+Copyright (C) 2008-2009 B2CK SPRL.
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/PKG-INFO b/PKG-INFO
index 8b72c86..0427933 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.0.2
+Version: 1.0.3
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
diff --git a/__tryton__.py b/__tryton__.py
index 8a45695..f9e9a79 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -5,7 +5,7 @@
     'name_de_DE': 'Buchhaltung Rechnungsstellung',
     'name_fr_FR': 'Facturation',
     'name_es_ES': 'Facturación',
-    'version': '1.0.2',
+    'version': '1.0.3',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/invoice.odt b/invoice.odt
index fd89f7d..3ec16c7 100644
Binary files a/invoice.odt and b/invoice.odt differ
diff --git a/invoice.py b/invoice.py
index 9e8084a..77099ae 100644
--- a/invoice.py
+++ b/invoice.py
@@ -2240,7 +2240,7 @@ class PayInvoice(Wizard):
         invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
         res['currency'] = invoice.currency.id
         res['currency_digits'] = invoice.currency.digits
-        res['amount'] = invoice.amount_to_pay_today
+        res['amount'] = invoice.amount_to_pay_today or invoice.amount_to_pay
         res['description'] = invoice.number
         return res
 
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 66df7c7..05aac85 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.0.2
+Version: 1.0.3
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
commit 18d2bd456e269e297b1cc161e6b5ade0bd668cc7
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Mar 23 06:41:33 2009 +0100

    Releasing debian version 1.0.2-1.

diff --git a/debian/changelog b/debian/changelog
index 1cea3b2..2daf2d5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-account-invoice (1.0.2-1) unstable; urgency=low
+
+  * Merging upstream version 1.0.2.
+
+ -- Daniel Baumann <daniel at debian.org>  Mon, 23 Mar 2009 06:41:00 +0100
+
 tryton-modules-account-invoice (1.0.1-1) unstable; urgency=low
 
   * Merging upstream version 1.0.1.
commit e371581efd79ca3d420b1a7bbf1cec88e330371c
Author: Daniel Baumann <daniel at debian.org>
Date:   Mon Mar 23 06:40:51 2009 +0100

    Merging upstream version 1.0.2.

diff --git a/CHANGELOG b/CHANGELOG
index 9801fce..bf8a718 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.0.2 - 2009-01-06
+* Some bug fixes (see mercurial logs for details)
+
 Version 1.0.1 - 2008-12-01
 * Allow egg installation
 
diff --git a/PKG-INFO b/PKG-INFO
index d80e8d3..8b72c86 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.0.1
+Version: 1.0.2
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
diff --git a/__tryton__.py b/__tryton__.py
index 8c60abe..8a45695 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -5,7 +5,7 @@
     'name_de_DE': 'Buchhaltung Rechnungsstellung',
     'name_fr_FR': 'Facturation',
     'name_es_ES': 'Facturación',
-    'version': '1.0.1',
+    'version': '1.0.2',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/invoice.py b/invoice.py
index 0d0133b..9e8084a 100644
--- a/invoice.py
+++ b/invoice.py
@@ -229,6 +229,7 @@ class Invoice(OSV):
     'Invoice'
     _name = 'account.invoice'
     _description = __doc__
+    _order_name = 'number'
     company = fields.Many2One('company.company', 'Company', required=True,
             states=_STATES)
     type = fields.Selection([
@@ -288,7 +289,7 @@ class Invoice(OSV):
             relation='account.move.line', string='Lines to Pay')
     payment_lines = fields.Many2Many('account.move.line',
             'invoice_payment_lines_rel', 'invoice', 'line', readonly=True,
-            string='Payment Lines')
+            ondelete_target='CASCADE', string='Payment Lines')
     amount_to_pay_today = fields.Function('get_amount_to_pay',
             type='numeric', digits="(16, currency_digits)",
             string='Amount to Pay Today')
@@ -1484,6 +1485,12 @@ class InvoiceLine(OSV):
             res['unit'] = uom_obj.name_get(cursor, user, product.default_uom.id,
                 context=context)[0]
             res['unit_digits'] = product.default_uom.digits
+
+        vals = vals.copy()
+        vals['unit_price'] = res['unit_price']
+        vals['type'] = 'line'
+        res['amount'] = self.on_change_with_amount(cursor, user, ids,
+                vals, context=context)
         return res
 
     def check_modify(self, cursor, user, ids, context=None):
@@ -1585,12 +1592,21 @@ class InvoiceLine(OSV):
             res['amount_second_currency'] = Decimal('0.0')
             res['second_currency'] = False
         if line.invoice.type in ('in_invoice', 'out_credit_note'):
-            res['debit'] = amount
-            res['credit'] = Decimal('0.0')
+            if amount >= Decimal('0.0'):
+                res['debit'] = amount
+                res['credit'] = Decimal('0.0')
+            else:
+                res['debit'] = Decimal('0.0')
+                res['credit'] = - amount
+                res['amount_second_currency'] = - res['amount_second_currency']
         else:
-            res['debit'] = Decimal('0.0')
-            res['credit'] = amount
-            res['amount_second_currency'] = - res['amount_second_currency']
+            if amount >= Decimal('0.0'):
+                res['debit'] = Decimal('0.0')
+                res['credit'] = amount
+                res['amount_second_currency'] = - res['amount_second_currency']
+            else:
+                res['debit'] = - amount
+                res['credit'] = Decimal('0.0')
         res['account'] = line.account.id
         res['party'] = line.invoice.party.id
         computed_taxes = self._compute_taxes(cursor, user, line,
@@ -1741,13 +1757,12 @@ class InvoiceTax(OSV):
             amount = currency_obj.compute(cursor, user,
                     tax.invoice.currency, tax.amount,
                     tax.invoice.company.currency, context=context)
-            res['amount_second_currency'] = tax.amount * tax.tax_sign
+            res['amount_second_currency'] = tax.amount
             res['second_currency'] = tax.invoice.currency.id
         else:
             amount = tax.amount
             res['amount_second_currency'] = Decimal('0.0')
             res['second_currency'] = False
-        amount *= tax.tax_sign
         if tax.invoice.type in ('in_invoice', 'out_credit_note'):
             if amount >= Decimal('0.0'):
                 res['debit'] = amount
@@ -1769,7 +1784,7 @@ class InvoiceTax(OSV):
         if tax.tax_code:
             res['tax_lines'] = [('create', {
                 'code': tax.tax_code.id,
-                'amount': amount,
+                'amount': amount * tax.tax_sign,
             })]
         return res
 
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index 9e74625..66df7c7 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.0.1
+Version: 1.0.2
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
commit d86d7b84e085e8912ddee38df9dcf45319acc174
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Mar 22 22:51:15 2009 +0100

    Releasing debian version 1.0.1-1.

diff --git a/debian/changelog b/debian/changelog
index 5c5b5cc..1cea3b2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-account-invoice (1.0.1-1) unstable; urgency=low
+
+  * Merging upstream version 1.0.1.
+  * Updating standards to 3.8.1.
+  * Making package arch all as it should be (Closes: #520797).
+
+ -- Daniel Baumann <daniel at debian.org>  Sun, 22 Mar 2009 22:50:00 +0100
+
 tryton-modules-account-invoice (1.0.0-1) unstable; urgency=low
 
   * Initial release (Closes: #506095).
commit 63ed243147c9bc2aaff606dfbfe9848a2088cc9c
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Mar 22 22:50:42 2009 +0100

    Making package arch all as it should be (Closes: #520797).

diff --git a/debian/control b/debian/control
index 747c10d..ef1cdb7 100644
--- a/debian/control
+++ b/debian/control
@@ -9,7 +9,7 @@ Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian.net/git/debian/tryton-modules-account-invoice.git
 
 Package: tryton-modules-account-invoice
-Architecture: any
+Architecture: all
 Depends: ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-account, tryton-modules-account-product, tryton-modules-company, tryton-modules-currency, tryton-modules-party, tryton-modules-product, python-egenix-mxbeebase, python-pkg-resources
 XB-Python-Version: ${python:Versions}
 Description: Tryton Application Platform (Financial and Accounting Module)
commit 2bb40d2d4dd45f668150fdf8cde36386db63d557
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Mar 22 22:49:53 2009 +0100

    Updating standards to 3.8.1.

diff --git a/debian/control b/debian/control
index 74cefe8..747c10d 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,7 @@ Section: python
 Priority: optional
 Maintainer: Daniel Baumann <daniel at debian.org>
 Build-Depends: debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
-Standards-Version: 3.8.0
+Standards-Version: 3.8.1
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-account-invoice.git
 Vcs-Git: git://git.debian.net/git/debian/tryton-modules-account-invoice.git
commit b49916b6972394cbe7d5a10a88f0c8de5d460ff9
Author: Daniel Baumann <daniel at debian.org>
Date:   Wed Jan 28 02:00:15 2009 +0100

    Merging upstream version 1.0.1.

diff --git a/CHANGELOG b/CHANGELOG
index eacaaef..9801fce 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,2 +1,5 @@
+Version 1.0.1 - 2008-12-01
+* Allow egg installation
+
 Version 1.0.0 - 2008-11-17
 * Initial release
diff --git a/PKG-INFO b/PKG-INFO
index c492a99..d80e8d3 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond_account_invoice
-Version: 1.0.0
+Version: 1.0.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,6 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
+Download-URL: http://downloads.tryton.org/1.0/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index cce6b9d..8c60abe 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -5,7 +5,7 @@
     'name_de_DE': 'Buchhaltung Rechnungsstellung',
     'name_fr_FR': 'Facturation',
     'name_es_ES': 'Facturación',
-    'version': '1.0.0',
+    'version': '1.0.1',
     'author': 'B2CK',
     'email': 'info at b2ck.com',
     'website': 'http://www.tryton.org/',
diff --git a/invoice.py b/invoice.py
index f6513d4..0d0133b 100644
--- a/invoice.py
+++ b/invoice.py
@@ -951,6 +951,7 @@ class Invoice(OSV):
             context=None, limit=None):
         if args is None:
             args = []
+        ids = []
         if name:
             ids = self.search(cursor, user, [('number', operator, name)] + args,
                     limit=limit, context=context)
@@ -1936,16 +1937,20 @@ class FiscalYear(OSV):
     _name = 'account.fiscalyear'
     out_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Invoice Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')]")
+            domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice', 'company': company}")
     in_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Invoice Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')]")
+            domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice', 'company': company}")
     out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Credit Note Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')]")
+            domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice', 'company': company}")
     in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Credit Note Sequence', required=True,
-            domain="[('code', '=', 'account.invoice')]")
+            domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice', 'company': company}")
 
     def __init__(self):
         super(FiscalYear, self).__init__()
@@ -2000,6 +2005,7 @@ class Period(OSV):
     out_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Invoice Sequence',
             domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice'}",
             states={
                 'required': "type == 'standard'",
                 'invisible': "type != 'standard'",
@@ -2007,6 +2013,7 @@ class Period(OSV):
     in_invoice_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Invoice Sequence',
             domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice'}",
             states={
                 'required': "type == 'standard'",
                 'invisible': "type != 'standard'",
@@ -2014,6 +2021,7 @@ class Period(OSV):
     out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Customer Credit Note Sequence',
             domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice'}",
             states={
                 'required': "type == 'standard'",
                 'invisible': "type != 'standard'",
@@ -2021,6 +2029,7 @@ class Period(OSV):
     in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
             'Supplier Credit Note Sequence',
             domain="[('code', '=', 'account.invoice')]",
+            context="{'code': 'account.invoice'}",
             states={
                 'required': "type == 'standard'",
                 'invisible': "type != 'standard'",
diff --git a/setup.py b/setup.py
index 23fc732..0c8de7e 100644
--- a/setup.py
+++ b/setup.py
@@ -27,6 +27,8 @@ setup(name='trytond_account_invoice',
     author=info.get('author', ''),
     author_email=info.get('email', ''),
     url=info.get('website', ''),
+    download_url="http://downloads.tryton.org/" + \
+            info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
     package_dir={'trytond.modules.account_invoice': '.'},
     packages=[
         'trytond.modules.account_invoice',
@@ -54,4 +56,9 @@ setup(name='trytond_account_invoice',
     ],
     license='GPL-3',
     install_requires=requires,
+    zip_safe=False,
+    entry_points="""
+    [trytond.modules]
+    account_invoice = trytond.modules.account_invoice
+    """,
 )
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
index a831ae9..9e74625 100644
--- a/trytond_account_invoice.egg-info/PKG-INFO
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond-account-invoice
-Version: 1.0.0
+Version: 1.0.1
 Summary: Financial and Accounting Module with:
     - Payment Term
     - Invoice / Credit Note
@@ -15,6 +15,7 @@ Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
+Download-URL: http://downloads.tryton.org/1.0/
 Description: UNKNOWN
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
index 08dc178..5e50844 100644
--- a/trytond_account_invoice.egg-info/SOURCES.txt
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -16,5 +16,7 @@ setup.py
 trytond_account_invoice.egg-info/PKG-INFO
 trytond_account_invoice.egg-info/SOURCES.txt
 trytond_account_invoice.egg-info/dependency_links.txt
+trytond_account_invoice.egg-info/entry_points.txt
+trytond_account_invoice.egg-info/not-zip-safe
 trytond_account_invoice.egg-info/requires.txt
 trytond_account_invoice.egg-info/top_level.txt
\ No newline at end of file
diff --git a/trytond_account_invoice.egg-info/entry_points.txt b/trytond_account_invoice.egg-info/entry_points.txt
new file mode 100644
index 0000000..b324fbd
--- /dev/null
+++ b/trytond_account_invoice.egg-info/entry_points.txt
@@ -0,0 +1,4 @@
+
+    [trytond.modules]
+    account_invoice = trytond.modules.account_invoice
+    
\ No newline at end of file
diff --git a/trytond_account_invoice.egg-info/not-zip-safe b/trytond_account_invoice.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/trytond_account_invoice.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
commit ccaf5c58fbe3209d0c71c2021e846460aa4df2a9
Author: Daniel Baumann <daniel at debian.org>
Date:   Tue Nov 18 13:05:53 2008 +0100

    Adding debian version 1.0.0-1.

diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..eacaaef
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,2 @@
+Version 1.0.0 - 2008-11-17
+* Initial release
diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644
index 0000000..37fef2d
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,17 @@
+Copyright (C) 2004-2008 Tiny SPRL.
+Copyright (C) 2008 Cédric Krier.
+Copyright (C) 2008 Bertrand Chenal.
+Copyright (C) 2008 B2CK SPRL.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..099d4fb
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,36 @@
+Installing trytond_account_invoice
+==================================
+
+Prerequisites
+-------------
+
+ * Python 2.4 or later (http://www.python.org/)
+ * egenix-mx-base (http://www.egenix.com/products/python/)
+ * trytond 0.0.x (http://www.tryton.org/)
+ * trytond_account (http://www.tryton.org/)
+ * trytond_company (http://www.tryton.org/)
+ * trytond_party (http://www.tryton.org/)
+ * trytond_currency (http://www.tryton.org/)
+ * trytond_product (http://www.tryton.org/)
+ * trytond_account_product (http://www.tryton.org/)
+
+Installation
+------------
+
+Once you've downloaded and unpacked a trytond_account_invoice source release, enter the
+directory where the archive was unpacked, and run:
+
+    python setup.py install
+
+Note that you may need administrator/root privileges for this step, as
+this command will by default attempt to install module to the Python
+site-packages directory on your system.
+
+For advanced options, please refer to the easy_install and/or the distutils
+documentation:
+
+  http://peak.telecommunity.com/DevCenter/EasyInstall
+  http://docs.python.org/inst/inst.html
+
+To use without installation, extract the archive into ``trytond/modules`` with
+the directory name account_invoice.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..5343ad8
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,9 @@
+include INSTALL
+include README
+include TODO
+include COPYRIGHT
+include CHANGELOG
+include LICENSE
+include *.xml
+include *.odt
+include *.csv
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..c492a99
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,33 @@
+Metadata-Version: 1.0
+Name: trytond_account_invoice
+Version: 1.0.0
+Summary: Financial and Accounting Module with:
+    - Payment Term
+    - Invoice / Credit Note
+    - Supplier Invoice / Supplier Credit Note
+
+With the possibilities:
+    - to follow the payment of the invoices.
+    - to define invoice sequences on fiscal year or period.
+    - to credit any invoice.
+
+Home-page: http://www.tryton.org/
+Author: B2CK
+Author-email: info at b2ck.com
+License: GPL-3
+Description: UNKNOWN
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Plugins
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Financial and Insurance Industry
+Classifier: Intended Audience :: Legal Industry
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: English
+Classifier: Natural Language :: French
+Classifier: Natural Language :: German
+Classifier: Natural Language :: Spanish
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Office/Business
+Classifier: Topic :: Office/Business :: Financial :: Accounting
diff --git a/README b/README
new file mode 100644
index 0000000..845a5ed
--- /dev/null
+++ b/README
@@ -0,0 +1,36 @@
+trytond_account_invoice
+=======================
+
+The account_invoice module of the Tryton application platform.
+See __tryton__.py
+
+Installing
+----------
+
+See INSTALL
+
+Support
+-------
+
+If you encounter any problems with Tryton, please don't hesitate to ask
+questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+
+  http://bugs.tryton.org/
+  http://groups.tryton.org/
+  http://wiki.tryton.org/
+  irc://irc.freenode.net/tryton
+
+License
+-------
+
+See LICENSE
+
+Copyright
+---------
+
+See COPYRIGHT
+
+
+For more information please visit the Tryton web site:
+
+  http://www.tryton.org/
diff --git a/__init__.py b/__init__.py
new file mode 100644
index 0000000..d415f1d
--- /dev/null
+++ b/__init__.py
@@ -0,0 +1,4 @@
+#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 invoice import *
diff --git a/__tryton__.py b/__tryton__.py
new file mode 100644
index 0000000..cce6b9d
--- /dev/null
+++ b/__tryton__.py
@@ -0,0 +1,71 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+{
+    'name': 'Account Invoice',
+    'name_de_DE': 'Buchhaltung Rechnungsstellung',
+    'name_fr_FR': 'Facturation',
+    'name_es_ES': 'Facturación',
+    'version': '1.0.0',
+    'author': 'B2CK',
+    'email': 'info at b2ck.com',
+    'website': 'http://www.tryton.org/',
+    'description': '''Financial and Accounting Module with:
+    - Payment Term
+    - Invoice / Credit Note
+    - Supplier Invoice / Supplier Credit Note
+
+With the possibilities:
+    - to follow the payment of the invoices.
+    - to define invoice sequences on fiscal year or period.
+    - to credit any invoice.
+''',
+    'description_de_DE': '''Modul für Buchhaltung und Rechnungsstellung mit:
+    - Definition von Zahlungsbedingungen
+    - Erstellung von Rechnungen und Gutschriften für Kunden
+    - Erstellung von Rechnungen und Gutschriften für Lieferanten
+
+Ermöglicht:
+    - die Verfolgung der Bezahlung von Rechnungen
+    - die Definition von Rechnungssequenzen für das Geschäftsjahr bzw. die Buchungszeiträume
+    - die Erstellung von Gutschriften zu jeglicher Rechnung
+''',
+    'description_fr_FR': '''Module financier et comptable avec:
+    - Condition de paiement
+    - Facture / Note de crédit
+    - Facture fournisseur / Note de crédit fournisseur
+
+Avec la possibilité:
+    - de suivre le paiment des factures
+    - de définir les numérotations de facture par période ou par année fiscale
+    - de créditer n'importe quelle facture
+''',
+    'description_es_ES': '''Módulo Financiero y de Contabilidad con:
+    - Términos de Pago
+    - Notas de Facturación / Crédito
+    - Factura de Proveedores / Nota de Crédito de Proveedores
+
+Con las posibilidades de:
+    - hacer seguimiento al pago de facturas.
+    - definir secuencias de facturas en año o período fiscal.
+    - acreditar una factura.
+''',
+    'depends': [
+        'ir',
+        'account',
+        'company',
+        'party',
+        'product',
+        'res',
+        'workflow',
+        'currency',
+        'account_product',
+    ],
+    'xml': [
+        'invoice.xml',
+    ],
+    'translation': [
+        'fr_FR.csv',
+        'de_DE.csv',
+        'es_ES.csv',
+    ]
+}
diff --git a/de_DE.csv b/de_DE.csv
new file mode 100644
index 0000000..c2d9b6f
--- /dev/null
+++ b/de_DE.csv
@@ -0,0 +1,245 @@
+type,name,res_id,src,value,fuzzy
+error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,"Sie können die Rechnungsnummern-Sequenz nicht ändern, wenn bereits eine Rechnung im laufenden Buchungsjahr eröffnet wurde.",0
+error,account.fiscalyear,0,You must have different invoice sequence per fiscal year!,Verschiedene Geschäftsjahre erfordern unterschiedliche Rechnungssequenzen!,0
+error,account.invoice,0,"Base taxes different from invoice lines!
+Re-compute the invoice.",Steuern stimmen nicht mit den Rechnungspositionen überein!,0
+error,account.invoice,0,Credit account on journal is the same than the invoice account!,Haben-Konto im Journal und Rechnungskonto sind identisch!,0
+error,account.invoice,0,Debit account on journal is the same than the invoice account!,Soll-Konto im Journal und Rechnungskonto sind identisch!,0
+error,account.invoice,0,"Taxes defined but not in invoice lines!
+Re-compute the invoice.","Steuern sind definiert, allerdings nicht in den Rechnungspositionen!
+",0
+error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
+Re-compute the invoice.","Steuern sind für die Rechnungspositionen definiert, allerdings nicht für die Rechnung selbst!
+",0
+error,account.invoice,0,The credit account on journal is missing!,Haben-Konto im Journal fehlt!,0
+error,account.invoice,0,The debit account on journal is missing!,Soll-Konto im Journal fehlt,0
+error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Rechnungsnummern-Sequenz für diese Periode oder dieses Buchungsjahr fehlt!,0
+error,account.invoice,0,"You can not create an invoice
+with account from a different invoice company!",Es können keine Rechnungen mit einem Konto von einer anderen rechnungsstellenden Firma angelegt werden,0
+error,account.invoice,0,"You can not modify invoice that is open, paid or canceled!","Rechnungen die offen, bezahlt oder abgebrochen wurden können nicht verändert werden!",0
+error,account.invoice,0,You can not reset to draft an invoice that have move!,"Rechnungen die bereits gebucht sind, können nicht auf Vorlage zurückgesetzt werden!",0
+error,account.invoice,0,"You can not use the same account
+than on invoice line account!",Es darf nicht das selbe Konto benutzt werden wie in den Rechnungspositionen,0
+error,account.invoice.line,0,Line type must have an account!,Typ der Position muss einem Konto zugeordnet werden!,0
+error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status: Offen, Bezahlt oder Abgebrochen kann keine neue Position hinzugefügt werden",0
+error,account.invoice.line,0,"You can not create invoice line
+with account from a different invoice company!",Rechnungszeile kann nicht erstellt werden: das Konto ist einer anderen rechnungsstellenden Firma zugeordnet,0
+error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","In einer Rechnung mit dem Status: Offen, Bezahlt oder Abgebrochen kann können Positionen nicht bearbeitet werden",0
+error,account.invoice.line,0,"You can not use the same account
+than the invoice account!",Es darf nicht das selbe Konto benutzt werden wie das Rechnungskonto!,0
+error,account.invoice.payment_term,0,Invalid payment term line!,Ungültige Position in Zahlungsbedingung!,0
+error,account.invoice.payment_term,0,Payment term missing a remainder line!,In der Zahlungsbedingung fehlt eine Restbetragszeile!,0
+error,account.invoice.payment_term.line.delay,0,Code must be unique!,Der Code kann nicht mehrfach vergeben werden!,0
+error,account.invoice.payment_term.line.type,0,Code must be unique!,Der Code kann nicht mehrfach vergeben werden!,0
+error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Einer Rechnung mit dem Status: Offen, Bezahlt oder Abgebrochen kann keine neue Position hinzugefügt werden",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","In einer Rechnung mit dem Status: Offen, Bezahlt oder Abgebrochen kann können Steuern nicht bearbeitet werden",0
+error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,"Sie können die Rechnungsnummern-Sequenz nicht ändern, wenn bereits eine Rechnung in der laufenden Periode eröffnet wurde.",0
+field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Sequenz Gutschriften Lieferanten,0
+field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Sequenz Rechnungen Lieferanten,0
+field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Sequenz Gutschriften Kunden,0
+field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Sequenz Rechnungen Kunden,0
+field,"account.invoice,account",0,Account,Konto,0
+field,"account.invoice,amount_to_pay",0,Amount to Pay,Zahlbarer Betrag,0
+field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Zahlbarer Betrag (heute),0
+field,"account.invoice,comment",0,Comment,Kommentar,0
+field,"account.invoice,company",0,Company,Unternehmen,0
+field,"account.invoice,contact_address",0,Contact Address,Kontaktadresse,0
+field,"account.invoice,currency",0,Currency,Währung,0
+field,"account.invoice,currency_digits",0,Currency Digits,Währung (signifikante Stellen),0
+field,"account.invoice,description",0,Description,Beschreibung,0
+field,"account.invoice,invoice_address",0,Invoice Address,Rechnungsadresse,0
+field,"account.invoice,invoice_date",0,Invoice Date,Rechnungsdatum,0
+field,"account.invoice,invoice_report",0,Invoice Report,Rechnungsbericht,0
+field,"account.invoice,invoice_report_format",0,Invoice Report Format,Format Rechnungsbericht,0
+field,"account.invoice,journal",0,Journal,Journal,0
+field,"account.invoice.line,account",0,Account,Konto,0
+field,"account.invoice.line,amount",0,Amount,Betrag,0
+field,"account.invoice.line,description",0,Description,Bezeichnung,0
+field,"account.invoice.line,invoice",0,Invoice,Rechnung,0
+field,"account.invoice.line,product",0,Product,Artikel,0
+field,"account.invoice.line,quantity",0,Quantity,Menge,0
+field,"account.invoice,lines",0,Lines,Positionen,0
+field,"account.invoice.line,sequence",0,Sequence,Sequenz,0
+field,"account.invoice,lines_to_pay",0,Lines to Pay,Zahlbare Positionen,0
+field,"account.invoice.line,taxes",0,Taxes,Steuern,0
+field,"account.invoice.line,type",0,Type,Typ,0
+field,"account.invoice.line,unit",0,Unit,Einheit,0
+field,"account.invoice.line,unit_digits",0,Unit Digits,Anzahl Stellen,0
+field,"account.invoice.line,unit_price",0,Unit Price,Einzelpreis,0
+field,"account.invoice,move",0,Move,Buchung,0
+field,"account.invoice,number",0,Number,Nummer,0
+field,"account.invoice,party",0,Party,Partei,0
+field,"account.invoice.pay_invoice.ask,account",0,Account,Konto,0
+field,"account.invoice.pay_invoice.ask,account_writeoff",0,Account,Konto,0
+field,"account.invoice.pay_invoice.ask,amount",0,Amount,Betrag,0
+field,"account.invoice.pay_invoice.ask,company",0,Company,Unternehmen,0
+field,"account.invoice.pay_invoice.ask,currency",0,Currency,Währung,0
+field,"account.invoice.pay_invoice.ask,currency_digits",0,Currency Digits,Stellen Währung,0
+field,"account.invoice.pay_invoice.ask,date",0,Date,Datum,0
+field,"account.invoice.pay_invoice.ask,description",0,Description,Beschreibung,0
+field,"account.invoice.pay_invoice.ask,journal",0,Journal,Journal,0
+field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Journal,Journal,0
+field,"account.invoice.pay_invoice.ask,lines",0,Lines,Positionen,0
+field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Zahlbare Positionen,0
+field,"account.invoice.pay_invoice.ask,type",0,Type,Typ,0
+field,"account.invoice.pay_invoice.init,amount",0,Amount,Betrag,0
+field,"account.invoice.pay_invoice.init,currency",0,Currency,Währung,0
+field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Stellen Währung,0
+field,"account.invoice.pay_invoice.init,date",0,Date,Datum,0
+field,"account.invoice.pay_invoice.init,description",0,Description,Beschreibung,0
+field,"account.invoice.pay_invoice.init,journal",0,Journal,Journal,0
+field,"account.invoice,payment_lines",0,Payment Lines,Zahlungspositionen,0
+field,"account.invoice,payment_term",0,Payment Term,Zahlungsbedingung,0
+field,"account.invoice.payment_term,active",0,Active,Aktiv,0
+field,"account.invoice.payment_term,description",0,Description,Beschreibung,0
+field,"account.invoice.payment_term.line,amount",0,Amount,Betrag,0
+field,"account.invoice.payment_term.line,currency",0,Currency,Währung,0
+field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Währung (signifikante Stellen),0
+field,"account.invoice.payment_term.line,days",0,Number of Days,Anzahl an Tagen,0
+field,"account.invoice.payment_term.line,delay",0,Condition,Bedingung,0
+field,"account.invoice.payment_term.line.delay,code",0,Code,Kundennummer,0
+field,"account.invoice.payment_term.line.delay,name",0,Name,Name,0
+field,"account.invoice.payment_term.line,payment",0,Payment Term,Zahlungsbedingung,0
+field,"account.invoice.payment_term.line,percent",0,Percent,Prozent,0
+field,"account.invoice.payment_term,lines",0,Lines,Positionen,0
+field,"account.invoice.payment_term.line,sequence",0,Sequence,Sequenz,0
+field,"account.invoice.payment_term.line,type",0,Type,Typ,0
+field,"account.invoice.payment_term.line.type,code",0,Code,Kundennummer,0
+field,"account.invoice.payment_term.line.type,name",0,Name,Name,0
+field,"account.invoice.payment_term,name",0,Payment Term,Zahlungsbedingung,0
+field,"account.invoice,reconciled",0,Reconciled,Abgestimmt,0
+field,"account.invoice,reference",0,Reference,Referenz,0
+field,"account.invoice,state",0,State,Status,0
+field,"account.invoice.tax,account",0,Account,Konto,0
+field,"account.invoice,tax_amount",0,Tax,Steuer,0
+field,"account.invoice.tax,amount",0,Amount,Betrag,0
+field,"account.invoice.tax,base",0,Base,Netto,0
+field,"account.invoice.tax,base_code",0,Base Code,Code Netto,0
+field,"account.invoice.tax,base_sign",0,Base Sign,Vorzeichen (Netto),0
+field,"account.invoice.tax,description",0,Description,Beschreibung,0
+field,"account.invoice,taxes",0,Tax Lines,Steuerpositionen,0
+field,"account.invoice.tax,invoice",0,Invoice,Rechnung,0
+field,"account.invoice.tax,manual",0,Manual,Manuell,0
+field,"account.invoice.tax,sequence",0,Sequence,Sequenz,0
+field,"account.invoice.tax,tax_code",0,Tax Code,Steuerkennziffer,0
+field,"account.invoice.tax,tax_sign",0,Tax Sign,Vorzeichen (Steuer),0
+field,"account.invoice,total_amount",0,Total,Brutto,0
+field,"account.invoice,type",0,Type,Typ,0
+field,"account.invoice,type_name",0,Type,Typ,0
+field,"account.invoice,untaxed_amount",0,Untaxed,Netto,0
+field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Sequenz Gutschriften Lieferanten,0
+field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Sequenz Rechnungen Lieferanten,0
+field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Sequenz Gutschriften Kunden,0
+field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Sequenz Rechnungen Kunden,0
+field,"party.address,invoice",0,Invoice,Rechnungsadresse,0
+field,"party.party,payment_term",0,Invoice Payment Term,Zahlungsbedingung Verkauf,0
+field,"party.party,supplier_payment_term",0,Supplier Payment Term,Zahlungsbedingung Einkauf,0
+help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Ordnet Positionen in aufsteigender Reihenfolge,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Ende Monat,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Netto Tage,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fix,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percent,Prozent,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Rest,0
+model,"ir.action,name",act_invoice_form,All Invoices,Alle Rechnungen,0
+model,"ir.action,name",credit_invoice,Credit,Gutschrift erstellen,0
+model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Gutschriften an Kunden,0
+model,"ir.action,name",report_invoice,Invoice,Rechnung drucken,0
+model,"ir.action,name",print_invoice_report,Invoice,Rechnung drucken,0
+model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
+model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Rechnung bezahlen,0
+model,"ir.action,name",act_payment_term_form,Payment Terms,Zahlungsbedingungen,0
+model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
+model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
+model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Rechnung,0
+model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Alle Rechnungen,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Gutschriften an Kunden,0
+model,"ir.ui.menu,name",menu_invoices_configuration,Invoices,Rechnungen,0
+model,"ir.ui.menu,name",menu_invoices,Invoices,Rechnungen,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Rechnungsausgang,0
+model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Zahlungsbedingungen,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Gutschriften von Lieferanten,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Rechnungseingang,0
+model,"workflow.activity,name",invoice_activity_cancel,Cancel,Abbrechen,0
+model,"workflow.activity,name",invoice_activity_draft,Draft,Entwurf,0
+model,"workflow.activity,name",invoice_activity_open,Open,Öffnen,0
+model,"workflow.activity,name",invoice_activity_paid,Paid,Bezahlt,0
+model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro Forma,0
+model,"workflow,name",invoice_workflow,Invoice workflow,Workflow Rechnung,0
+odt,account.invoice,0,Amount,Betrag,0
+odt,account.invoice,0,Base,Netto,0
+odt,account.invoice,0,Date,Datum,0
+odt,account.invoice,0,Date:,Datum:,0
+odt,account.invoice,0,Description,Beschreibung,0
+odt,account.invoice,0,Description:,Beschreibung:,0
+odt,account.invoice,0,E-Mail:,E-Mail:,0
+odt,account.invoice,0,Payment Term,Zahlungsbedingung,0
+odt,account.invoice,0,Phone:,Telefon:,0
+odt,account.invoice,0,Quantity,Menge,0
+odt,account.invoice,0,Tax,Steuer,0
+odt,account.invoice,0,Taxes,Steuern,0
+odt,account.invoice,0,Taxes:,Steuern:,0
+odt,account.invoice,0,Total:,Gesamt:,0
+odt,account.invoice,0,Total (excl. taxes):,Netto:,0
+odt,account.invoice,0,Unit Price,Einzelpreis,0
+odt,account.invoice,0,VAT:,UST-ID:,0
+selection,"account.invoice.line,type",0,Comment,Kommentar,0
+selection,"account.invoice.line,type",0,Line,Position,0
+selection,"account.invoice.line,type",0,Subtotal,Zwischensumme,0
+selection,"account.invoice.line,type",0,Title,Überschrift,0
+selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Teilzahlung,0
+selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Ausbuchung,0
+selection,"account.invoice,state",0,Canceled,Abgebrochen,0
+selection,"account.invoice,state",0,Draft,Entwurf,0
+selection,"account.invoice,state",0,Open,Offen,0
+selection,"account.invoice,state",0,Paid,Bezahlt,0
+selection,"account.invoice,state",0,Pro forma,Pro Forma,0
+selection,"account.invoice,type",0,Credit Note,Gutschrift,0
+selection,"account.invoice,type",0,Invoice,Kundenrechnung,0
+selection,"account.invoice,type",0,Supplier Credit Note,Gutschrift von Lieferant,0
+selection,"account.invoice,type",0,Supplier Invoice,Lieferantenrechnung,0
+view,account.invoice,0,Amount Second Currency,Betrag Zweitwährung,0
+view,account.invoice,0,_Cancel,_Abbrechen,0
+view,account.invoice,0,Credit,Haben,0
+view,account.invoice,0,Debit,Soll,0
+view,account.invoice,0,_Draft,_Entwurf,0
+view,account.invoice,0,Invoice,Rechnung,0
+view,account.invoice,0,Invoices,Rechnungen,0
+view,account.invoice,0,Lines,Positionen,0
+view,account.invoice,0,_Open,_Öffnen,0
+view,account.invoice,0,Other Info,Sonstiges,0
+view,account.invoice,0,_Pay,_Bezahlen,0
+view,account.invoice,0,Payment,Zahlung,0
+view,account.invoice,0,Payment Lines,Zahlungspositionen,0
+view,account.invoice,0,Pro For_ma,_Pro Forma,0
+view,account.invoice,0,_Reset to Draft,Auf Entwurf _Zurücksetzen,0
+view,account.invoice,0,Taxes,Steuern,0
+view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Wollen Sie diese Rechnungen wirklich gutschreiben?,0
+view,account.invoice.credit_invoice.init,0,Credit Invoice,Rechnung gutschreiben,0
+view,account.invoice.line,0,Invoice Line,Rechnungszeile,0
+view,account.invoice.line,0,Invoice Lines,Rechnungspositionen,0
+view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Betrag Zweitwährung,0
+view,account.invoice.pay_invoice.ask,0,Credit,Haben,0
+view,account.invoice.pay_invoice.ask,0,Debit,Soll,0
+view,account.invoice.pay_invoice.ask,0,Lines to Pay,Zahlbare Positionen,0
+view,account.invoice.pay_invoice.ask,0,Pay Invoice,Rechnung bezahlen,0
+view,account.invoice.pay_invoice.init,0,Pay Invoice,Rechnung bezahlen,0
+view,account.invoice.payment_term,0,Payment Term,Zahlungsbedingung,0
+view,account.invoice.payment_term,0,Payment Term Line,Zahlungsbedingung,0
+view,account.invoice.payment_term,0,Payment Term Lines,Positionen Zahlungsbedingung,0
+view,account.invoice.payment_term,0,Payment Terms,Zahlungsbedingung,0
+view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Warnung!</b>,0
+view,account.invoice.print_invoice_report.warning,0,Print Invoice,Rechnung drucken,0
+view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Die Rechnungen werden <i>direkt</i> an den Drucker gesendet.,0
+view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Sie haben mehr als eine Rechnung zum ausdrucken gewählt.,0
+view,account.invoice.tax,0,Invoice Tax,Rechnungssteuer,0
+view,account.invoice.tax,0,Invoice Taxes,Rechnungssteuern,0
+view,account.invoice.tax,0,Tax Code,Steuerkennziffer,0
+view,party.party,0,Payment Terms,Zahlungsbedingungen,0
+wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Gutschrift erstellen,0
+wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Abbrechen,0
+wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Abbrechen,0
+wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,OK,0
+wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,OK,0
+wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Abbrechen,0
+wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Abbrechen,0
+wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Drucken,0
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..5c5b5cc
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+tryton-modules-account-invoice (1.0.0-1) unstable; urgency=low
+
+  * Initial release (Closes: #506095).
+
+ -- Daniel Baumann <daniel at debian.org>  Mon, 12 Jan 2009 15:49:00 -0500
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..74cefe8
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,29 @@
+Source: tryton-modules-account-invoice
+Section: python
+Priority: optional
+Maintainer: Daniel Baumann <daniel at debian.org>
+Build-Depends: debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
+Standards-Version: 3.8.0
+Homepage: http://www.tryton.org/
+Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-account-invoice.git
+Vcs-Git: git://git.debian.net/git/debian/tryton-modules-account-invoice.git
+
+Package: tryton-modules-account-invoice
+Architecture: any
+Depends: ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-account, tryton-modules-account-product, tryton-modules-company, tryton-modules-currency, tryton-modules-party, tryton-modules-product, python-egenix-mxbeebase, python-pkg-resources
+XB-Python-Version: ${python:Versions}
+Description: Tryton Application Platform (Financial and Accounting Module)
+ Tryton is a high-level general purpose application platform written in Python
+ and using PostgreSQL as database engine. It is the core base of an ERP.
+ .
+ This package contains the financial and accounting module with:
+ .
+  * Payment Term
+  * Invoice/Credit Note
+  * Supplier Invoice/Supplier Credit Note
+ .
+ With the possibilities:
+ .
+  * to follow the payment of the invoices.
+  * to define invoice sequences on fiscal year or period.
+  * to credit any invoice.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..0088eff
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,44 @@
+Author: Tryton Project <http://www.tryton.org/>
+Download: http://www.tryton.org/downloads.html
+
+Files: *
+Copyright:
+ (C) 2004-2008 Tiny SPRL
+ (C) 2008 Cedric Krier
+ (C) 2008 Bertrand Chenal
+ (C) 2008 B2CK SPRL
+License: GPL-3+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ can be found in /usr/share/common-licenses/GPL-3 file.
+
+Files: debian/*
+Copyright: (C) 2009 Daniel Baumann <daniel at debian.org>
+License: GPL-3+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ can be found in /usr/share/common-licenses/GPL-3 file.
diff --git a/debian/pycompat b/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/debian/pyversions b/debian/pyversions
new file mode 100644
index 0000000..8b253bc
--- /dev/null
+++ b/debian/pyversions
@@ -0,0 +1 @@
+2.4-
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..73ee354
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,42 @@
+#!/usr/bin/make -f
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp
+
+	python setup.py clean
+	rm -rf dist build trytond_account_invoice.egg-info
+
+	dh_clean
+
+build:
+
+install:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs
+
+	python setup.py install --single-version-externally-managed --root=$(CURDIR)/debian/tryton-modules-account-invoice --install-lib /usr/share/python-support/tryton-modules-account-invoice
+
+	find debian/tryton-modules-account-invoice -type f -name "*.pyc" | xargs rm -f
+
+binary: binary-indep
+
+binary-arch:
+
+binary-indep: install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs CHANGELOG
+	dh_installdocs
+	dh_pysupport
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+.PHONY: clean build install binary binary-arch binary-indep
diff --git a/es_ES.csv b/es_ES.csv
new file mode 100644
index 0000000..4b93c82
--- /dev/null
+++ b/es_ES.csv
@@ -0,0 +1,236 @@
+type,name,res_id,src,value,fuzzy
+error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,No puede cambiar la secuencia de una factura si hay una factura abierta en el año fiscal,0
+error,account.fiscalyear,0,You must have different invoice sequence per fiscal year!,Debe tener secuencias de facturas distintas para cada año fiscal!,0
+error,account.invoice,0,"Base taxes different from invoice lines!
+Re-compute the invoice.",Los Impuestos Base difieren de las líneas de factura!,0
+error,account.invoice,0,Credit account on journal is the same than the invoice account!,La cuenta crédito del diario es la misma que la cuenta de la factura!,0
+error,account.invoice,0,Debit account on journal is the same than the invoice account!,La cuenta débito del diario es la misma que la cuenta de factura!,0
+error,account.invoice,0,"Taxes defined but not in invoice lines!
+Re-compute the invoice.",Impuestos definidos pero no usados!,0
+error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
+Re-compute the invoice.",Impuestos definidos en factura pero no usados en las líneas!,0
+error,account.invoice,0,The credit account on journal is missing!,Falta la cuenta crédito del diario!,0
+error,account.invoice,0,The debit account on journal is missing!,Falta la cuenta débito del diario!,0
+error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,No hay una secuencia de facturaas para el período/año fiscal!,0
+error,account.invoice,0,"You can not create an invoice
+with account from a different invoice company!",No puede crear una factura,0
+error,account.invoice,0,"You can not modify invoice that is open, paid or canceled!","No puede modificar una factura que esté abierta, pagada o cancelada!",0
+error,account.invoice,0,You can not reset to draft an invoice that have move!,No puede volver a borradro una factura que tiene un movimiento!,0
+error,account.invoice,0,"You can not use the same account
+than on invoice line account!",No puede usar la misma cuenta,0
+error,account.invoice.line,0,Line type must have an account!,El tipo de línea debe tener una cuenta!,0
+error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede adicionar una línea a una factura que está abierta, pagada o cancelada!",0
+error,account.invoice.line,0,"You can not create invoice line
+with account from a different invoice company!",No puede crear una línea de factura,0
+error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","No puede modificar la línea de una factura que esté abierta, pagada o cancelada!",0
+error,account.invoice.line,0,"You can not use the same account
+than the invoice account!",No puede usar la misma cuenta,0
+error,account.invoice.payment_term,0,Invalid payment term line!,Línea de opción de pago inválida!,0
+error,account.invoice.payment_term,0,Payment term missing a remainder line!,Hace falta una línea final al término de pago!,0
+error,account.invoice.payment_term.line.delay,0,Code must be unique!,El código debe ser único!,0
+error,account.invoice.payment_term.line.type,0,Code must be unique!,El código debe ser único!,0
+error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","No puede adicionar una línea a una factura que está abierta, pagada o cancelada!",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","No puede modificar impuestos de una factura abierta, pagada o cancelada!",0
+error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,No puede cambiar la secuencia de una factura si hay una factura abierta en el período,0
+field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de la Nota Crédito del Proveedor,0
+field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de Factura de Proveedor,0
+field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de Nota Crédito de Cliente,0
+field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de Facturas de Cliente,0
+field,"account.invoice,account",0,Account,Cuenta,0
+field,"account.invoice,amount_to_pay",0,Amount to Pay,Cantidad a pagar,0
+field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Cantidad a pagar hoy,0
+field,"account.invoice,comment",0,Comment,Comentario,0
+field,"account.invoice,company",0,Company,Compañía,0
+field,"account.invoice,contact_address",0,Contact Address,Dirección de Contacto,0
+field,"account.invoice,currency",0,Currency,Moneda,0
+field,"account.invoice,currency_digits",0,Currency Digits,Dígitos de Moneda,0
+field,"account.invoice,description",0,Description,Descripción,0
+field,"account.invoice,invoice_address",0,Invoice Address,Dirección de Facturación,0
+field,"account.invoice,invoice_date",0,Invoice Date,Fecha de Factura,0
+field,"account.invoice,invoice_report",0,Invoice Report,Reporte de Facturación,0
+field,"account.invoice,invoice_report_format",0,Invoice Report Format,Formato de Reporte de Facturación,0
+field,"account.invoice,journal",0,Journal,Diario,0
+field,"account.invoice.line,account",0,Account,Cuenta,0
+field,"account.invoice.line,amount",0,Amount,Cantidad,0
+field,"account.invoice.line,description",0,Description,Descripción,0
+field,"account.invoice.line,invoice",0,Invoice,Factura,0
+field,"account.invoice.line,product",0,Product,Producto,0
+field,"account.invoice.line,quantity",0,Quantity,Cantidad,0
+field,"account.invoice,lines",0,Lines,Líneas,0
+field,"account.invoice.line,sequence",0,Sequence,Secuencia,0
+field,"account.invoice,lines_to_pay",0,Lines to Pay,Líneas a Pagar,0
+field,"account.invoice.line,taxes",0,Taxes,Impuestos,0
+field,"account.invoice.line,type",0,Type,Tipo,0
+field,"account.invoice.line,unit",0,Unit,Unidad,0
+field,"account.invoice.line,unit_digits",0,Unit Digits,Dígitos de Unidad,0
+field,"account.invoice.line,unit_price",0,Unit Price,Precio Unitario,0
+field,"account.invoice,move",0,Move,Movimiento,0
+field,"account.invoice,number",0,Number,Número,0
+field,"account.invoice,party",0,Party,Tercero,0
+field,"account.invoice.pay_invoice.ask,account",0,Account,Cuenta,0
+field,"account.invoice.pay_invoice.ask,account_writeoff",0,Account,Cuenta,0
+field,"account.invoice.pay_invoice.ask,amount",0,Amount,Cantidad,0
+field,"account.invoice.pay_invoice.ask,company",0,Company,Compañía,0
+field,"account.invoice.pay_invoice.ask,currency",0,Currency,Moneda,0
+field,"account.invoice.pay_invoice.ask,date",0,Date,Fecha,0
+field,"account.invoice.pay_invoice.ask,description",0,Description,Descripción,0
+field,"account.invoice.pay_invoice.ask,journal",0,Journal,Diario,0
+field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Journal,Diario,0
+field,"account.invoice.pay_invoice.ask,lines",0,Lines,Líneas,0
+field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Líneas a Pagar,0
+field,"account.invoice.pay_invoice.ask,type",0,Type,Tipo,0
+field,"account.invoice.pay_invoice.init,amount",0,Amount,Cantidad,0
+field,"account.invoice.pay_invoice.init,currency",0,Currency,Moneda,0
+field,"account.invoice.pay_invoice.init,date",0,Date,Fecha,0
+field,"account.invoice.pay_invoice.init,description",0,Description,Descripción,0
+field,"account.invoice.pay_invoice.init,journal",0,Journal,Diario,0
+field,"account.invoice,payment_lines",0,Payment Lines,Líneas de Pago,0
+field,"account.invoice,payment_term",0,Payment Term,Término de Pago,0
+field,"account.invoice.payment_term,active",0,Active,Activo,0
+field,"account.invoice.payment_term,description",0,Description,Descripción,0
+field,"account.invoice.payment_term.line,amount",0,Amount,Cantidad,0
+field,"account.invoice.payment_term.line,currency",0,Currency,Moneda,0
+field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Dígitos de Moneda,0
+field,"account.invoice.payment_term.line,days",0,Number of Days,Cantidad de días,0
+field,"account.invoice.payment_term.line,delay",0,Condition,Condición,0
+field,"account.invoice.payment_term.line.delay,code",0,Code,Código,0
+field,"account.invoice.payment_term.line.delay,name",0,Name,Nombre,0
+field,"account.invoice.payment_term.line,payment",0,Payment Term,Término de Pago,0
+field,"account.invoice.payment_term.line,percent",0,Percent,Por ciento,0
+field,"account.invoice.payment_term,lines",0,Lines,Líneas,0
+field,"account.invoice.payment_term.line,sequence",0,Sequence,Secuencia,0
+field,"account.invoice.payment_term.line,type",0,Type,Tipo,0
+field,"account.invoice.payment_term.line.type,code",0,Code,Código,0
+field,"account.invoice.payment_term.line.type,name",0,Name,Nombre,0
+field,"account.invoice.payment_term,name",0,Payment Term,Término de Pago,0
+field,"account.invoice,reconciled",0,Reconciled,Conciliado,0
+field,"account.invoice,reference",0,Reference,Referencia,0
+field,"account.invoice,state",0,State,Estado,0
+field,"account.invoice.tax,account",0,Account,Cuenta,0
+field,"account.invoice,tax_amount",0,Tax,Impuesto,0
+field,"account.invoice.tax,amount",0,Amount,Cantidad,0
+field,"account.invoice.tax,base",0,Base,Base,0
+field,"account.invoice.tax,base_code",0,Base Code,Código Base,0
+field,"account.invoice.tax,base_sign",0,Base Sign,Signo Base,0
+field,"account.invoice.tax,description",0,Description,Descripción,0
+field,"account.invoice,taxes",0,Tax Lines,Líneas de Impuestos,0
+field,"account.invoice.tax,invoice",0,Invoice,Factura,0
+field,"account.invoice.tax,manual",0,Manual,Manual,0
+field,"account.invoice.tax,sequence",0,Sequence,Secuencia,0
+field,"account.invoice.tax,tax_code",0,Tax Code,Código de Impuesto,0
+field,"account.invoice.tax,tax_sign",0,Tax Sign,Signo del Impuesto,0
+field,"account.invoice,total_amount",0,Total,Total,0
+field,"account.invoice,type",0,Type,Tipo,0
+field,"account.invoice,type_name",0,Type,Tipo,0
+field,"account.invoice,untaxed_amount",0,Untaxed,Sin Impuesto,0
+field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Secuencia de la Nota Crédito del Proveedor,0
+field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Secuencia de Factura de Proveedor,0
+field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Secuencia de Nota Crédito de Cliente,0
+field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Secuencia de Facturas de Cliente,0
+field,"party.address,invoice",0,Invoice,Factura,0
+field,"party.party,payment_term",0,Invoice Payment Term,Término de Pago de la Factura,0
+field,"party.party,supplier_payment_term",0,Supplier Payment Term,Término de Pago a Proveedor,0
+help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Para ordenar las líneas ascendentemente,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,Mes Final,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Días Netos,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fijo,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percent,Por ciento,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Diferencia,0
+model,"ir.action,name",act_invoice_form,All Invoices,Todas las facturas,0
+model,"ir.action,name",credit_invoice,Credit,Crédito,0
+model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Notas Crédito,0
+model,"ir.action,name",report_invoice,Invoice,Factura,0
+model,"ir.action,name",print_invoice_report,Invoice,Factura,0
+model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Facturas,0
+model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Pagar Factura,0
+model,"ir.action,name",act_payment_term_form,Payment Terms,Términos de Pago,0
+model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Notas Crédito del Proveedor,0
+model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Facturas de Proveedor,0
+model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Todas las facturas,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Notas Crédito,0
+model,"ir.ui.menu,name",menu_invoices_configuration,Invoices,Facturas,0
+model,"ir.ui.menu,name",menu_invoices,Invoices,Facturas,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Facturas,0
+model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Términos de Pago,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Notas Crédito del Proveedor,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Facturas de Proveedor,0
+odt,account.invoice,0,Amount,Cantidad,0
+odt,account.invoice,0,Base,Base,0
+odt,account.invoice,0,Date,Fecha,0
+odt,account.invoice,0,Date:,Fecha:,0
+odt,account.invoice,0,Description,Descripción,0
+odt,account.invoice,0,Description:,Descripción:,0
+odt,account.invoice,0,E-Mail:,Correo electrónico:,0
+odt,account.invoice,0,Payment Term,Término de Pago,0
+odt,account.invoice,0,Phone:,Teléfono:,0
+odt,account.invoice,0,Quantity,Cantidad,0
+odt,account.invoice,0,Tax,Impuesto,0
+odt,account.invoice,0,Taxes,Impuestos,0
+odt,account.invoice,0,Taxes:,Impuestos:,0
+odt,account.invoice,0,Total:,Total:,0
+odt,account.invoice,0,Total (excl. taxes):,Total (sin impuestos):,0
+odt,account.invoice,0,Unit Price,Precio Unitario,0
+odt,account.invoice,0,VAT:,VAT:,0
+selection,"account.invoice.line,type",0,Comment,Comentario,0
+selection,"account.invoice.line,type",0,Line,Línea,0
+selection,"account.invoice.line,type",0,Subtotal,Subtotal,0
+selection,"account.invoice.line,type",0,Title,Título,0
+selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Pago Parcial,0
+selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Exento,0
+selection,"account.invoice,state",0,Canceled,Cancelado,0
+selection,"account.invoice,state",0,Draft,Borrador,0
+selection,"account.invoice,state",0,Open,Abrir,0
+selection,"account.invoice,state",0,Paid,Pagado,0
+selection,"account.invoice,state",0,Pro forma,Pro forma,0
+selection,"account.invoice,type",0,Credit Note,Nota de Crédito,0
+selection,"account.invoice,type",0,Invoice,Factura,0
+selection,"account.invoice,type",0,Supplier Credit Note,Nota Crédito del Proveedor,0
+selection,"account.invoice,type",0,Supplier Invoice,Factura de Proveedor,0
+view,account.invoice,0,Amount Second Currency,Cantidad en la Moneda Secundaria,0
+view,account.invoice,0,_Cancel,_Cancelar,0
+view,account.invoice,0,Credit,Crédito,0
+view,account.invoice,0,Debit,Débito,0
+view,account.invoice,0,_Draft,_Borrador,0
+view,account.invoice,0,Invoice,Factura,0
+view,account.invoice,0,Invoices,Facturas,0
+view,account.invoice,0,Lines,Líneas,0
+view,account.invoice,0,_Open,_Abrir,0
+view,account.invoice,0,Other Info,Información Adicional,0
+view,account.invoice,0,_Pay,_Pago,0
+view,account.invoice,0,Payment,Pago,0
+view,account.invoice,0,Payment Lines,Líneas de Pago,0
+view,account.invoice,0,Pro For_ma,Pro For_ma,0
+view,account.invoice,0,_Reset to Draft,_Revertir a Borrador,0
+view,account.invoice,0,Taxes,Impuestos,0
+view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Segur@ desea acreditar la(s) factura(s)?,0
+view,account.invoice.credit_invoice.init,0,Credit Invoice,Factura Crédito,0
+view,account.invoice.line,0,Invoice Line,Línea de Factura,0
+view,account.invoice.line,0,Invoice Lines,Líneas de Factura,0
+view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Cantidad en la Moneda Secundaria,0
+view,account.invoice.pay_invoice.ask,0,Credit,Crédito,0
+view,account.invoice.pay_invoice.ask,0,Debit,Débito,0
+view,account.invoice.pay_invoice.ask,0,Lines to Pay,Líneas a Pagar,0
+view,account.invoice.pay_invoice.ask,0,Pay Invoice,Pagar Factura,0
+view,account.invoice.pay_invoice.init,0,Pay Invoice,Pagar Factura,0
+view,account.invoice.payment_term,0,Payment Term,Término de Pago,0
+view,account.invoice.payment_term,0,Payment Term Line,Línea de Término de Pago,0
+view,account.invoice.payment_term,0,Payment Term Lines,Líneas de Término de Pago,0
+view,account.invoice.payment_term,0,Payment Terms,Términos de Pago,0
+view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Advertencia!</b>,0
+view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimir Factura,0
+view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Las facturas serán enviadas <i>directamente</i> a la impresora.,0
+view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Ha elegido más de una factura para imprimir,0
+view,account.invoice.refund_invoice.init,0,Are you sure to refund those/this invoice(s)?,Segur@ desea devolver la(s) factura(s)?,0
+view,account.invoice.refund_invoice.init,0,Refund Invoice,Factura de Devolución,0
+view,account.invoice.tax,0,Invoice Tax,Impuesto en Factura,0
+view,account.invoice.tax,0,Invoice Taxes,Impuestos de Facturas,0
+view,account.invoice.tax,0,Tax Code,Código de Impuesto,0
+view,party.party,0,Payment Terms,Términos de Pago,0
+wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Crédito,0
+wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Cancelar,0
+wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Cancelar,0
+wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Aceptar,0
+wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,Aceptar,0
+wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Cancelar,0
+wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Cancelar,0
+wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Imprimir,0
diff --git a/fr_FR.csv b/fr_FR.csv
new file mode 100644
index 0000000..b4f8eec
--- /dev/null
+++ b/fr_FR.csv
@@ -0,0 +1,248 @@
+type,name,res_id,src,value,fuzzy
+error,account.fiscalyear,0,You can not change the invoice sequence if there is already an invoice opened in the fiscalyear,Vous ne pouvez pas changer la séquence de facture si il y a déjà une facture ouverte dans l'année fiscale,0
+error,account.fiscalyear,0,You must have different invoice sequence per fiscal year!,Vous devez utiliser des séquence de facture différentes par année fiscale !,0
+error,account.invoice,0,"Base taxes different from invoice lines!
+Re-compute the invoice.","Le montant de base des taxes sont différents des lignes de facture !
+Re-calculez la facture.",0
+error,account.invoice,0,Credit account on journal is the same than the invoice account!,Le compte de crédit sur le journal est le même que le compte de la facture !,0
+error,account.invoice,0,Debit account on journal is the same than the invoice account!,Le compte de débit sur le journal est le même que le compte de la facture !,0
+error,account.invoice,0,"Taxes defined but not in invoice lines!
+Re-compute the invoice.","Des taxes sont définies mais pas sur les lignes de facture !
+Re-calculez la facture.",0
+error,account.invoice,0,"Taxes defined on invoice lines but not on invoice!
+Re-compute the invoice.","Des taxes sont définies sur les lignes de facture mais pas sur la facture !
+Re-calculez la facture.",0
+error,account.invoice,0,The credit account on journal is missing!,Le compte de crédit sur le journal est manquant !,0
+error,account.invoice,0,The debit account on journal is missing!,Le compte de débit sur le journal est manquant !,0
+error,account.invoice,0,There is no invoice sequence on the period/fiscal year!,Il n'y a pas de séquence de facture sur la période/année fiscale !,0
+error,account.invoice,0,"You can not create an invoice
+with account from a different invoice company!","Vous ne pouvez pas créer une facture
+avec un compte d'une compagnie de facturation différente !",0
+error,account.invoice,0,"You can not modify invoice that is open, paid or canceled!",Vous ne pouvez pas modifier une facture qui est ouverte ou annullée !,0
+error,account.invoice,0,You can not reset to draft an invoice that have move!,Vous ne pouvez pas remettre en brouillon une facture qui a un mouvement !,0
+error,account.invoice,0,"You can not use the same account
+than on invoice line account!","Vous ne pouvez pas utiliser le même compte
+qu'un d'une ligne de facture !",0
+error,account.invoice.line,0,Line type must have an account!,Le type de ligne doit avoir un compte,0
+error,account.invoice.line,0,"You can not add a line to an invoice that is open, paid or canceled!","Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée our annullée !",0
+error,account.invoice.line,0,"You can not create invoice line
+with account from a different invoice company!","Vous ne pouvez pas créer de ligne de facture
+avec un compte d'une différente compagnie de facturation !",0
+error,account.invoice.line,0,"You can not modify line from an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier de ligne d'une facture qui est ouverte, payée our annullée !",0
+error,account.invoice.line,0,"You can not use the same account
+than the invoice account!","Vous ne pouvez pas utiliser le même compte
+que le compte de la facture !",0
+error,account.invoice.payment_term,0,Invalid payment term line!,Ligne de condition de paiement non-valide !,0
+error,account.invoice.payment_term,0,Payment term missing a remainder line!,La condition de paiement manque un ligne de reste !,0
+error,account.invoice.payment_term.line.delay,0,Code must be unique!,Le code doit être unique !,0
+error,account.invoice.payment_term.line.type,0,Code must be unique!,Le code doit être unique !,0
+error,account.invoice.tax,0,"You can not add a line to an invoice that is open, paid or canceled!","Vous ne pouvez pas ajouter une ligne à une facture qui est ouverte, payée ou annullée !",0
+error,account.invoice.tax,0,"You can not modify tax from an invoice that is open, paid or canceled!","Vous ne pouvez pas modifier les taxes d'une facture qui est ouverte, payée ou annullée !",0
+error,account.period,0,You can not change the invoice sequence if there is already an invoice opened in the period,Vous ne pouvez pas changer la séquence de facture s'il y a déjà une facture ouverte dans la période,0
+field,"account.fiscalyear,in_credit_note_sequence",0,Supplier Credit Note Sequence,Séquence des notes de crédit fournisseur,0
+field,"account.fiscalyear,in_invoice_sequence",0,Supplier Invoice Sequence,Séquence de facture fournisseur,0
+field,"account.fiscalyear,out_credit_note_sequence",0,Customer Credit Note Sequence,Séquence des notes de crédit client,0
+field,"account.fiscalyear,out_invoice_sequence",0,Customer Invoice Sequence,Séquence de facture client,0
+field,"account.invoice,account",0,Account,Compte,0
+field,"account.invoice,amount_to_pay",0,Amount to Pay,Montant à payer,0
+field,"account.invoice,amount_to_pay_today",0,Amount to Pay Today,Montant à payer aujourd'hui,0
+field,"account.invoice,comment",0,Comment,Commentaire,0
+field,"account.invoice,company",0,Company,Compagnie,0
+field,"account.invoice,currency",0,Currency,Devise,0
+field,"account.invoice,currency_digits",0,Currency Digits,Décimales de la devise,0
+field,"account.invoice,description",0,Description,Description,0
+field,"account.invoice,invoice_address",0,Invoice Address,Adresse de facturation,0
+field,"account.invoice,invoice_date",0,Invoice Date,Date de facturation,0
+field,"account.invoice,invoice_report",0,Invoice Report,Rapport de facturation,0
+field,"account.invoice,invoice_report_format",0,Invoice Report Format,Format du rapport de facturation,0
+field,"account.invoice,journal",0,Journal,Journal,0
+field,"account.invoice.line,account",0,Account,Compte,0
+field,"account.invoice.line,amount",0,Amount,Montant,0
+field,"account.invoice.line,description",0,Description,Description,0
+field,"account.invoice.line,invoice",0,Invoice,Facture,0
+field,"account.invoice.line,product",0,Product,Produit,0
+field,"account.invoice.line,quantity",0,Quantity,Quantité,0
+field,"account.invoice,lines",0,Lines,Lignes,0
+field,"account.invoice.line,sequence",0,Sequence,Séquence,0
+field,"account.invoice,lines_to_pay",0,Lines to Pay,Lignes à payer,0
+field,"account.invoice.line,taxes",0,Taxes,Taxes,0
+field,"account.invoice.line,type",0,Type,Type,0
+field,"account.invoice.line,unit",0,Unit,Unité,0
+field,"account.invoice.line,unit_digits",0,Unit Digits,Décimales de l'unité,0
+field,"account.invoice.line,unit_price",0,Unit Price,Prix unitaire,0
+field,"account.invoice,move",0,Move,Mouvement,0
+field,"account.invoice,number",0,Number,Numéro,0
+field,"account.invoice,party",0,Party,Tiers,0
+field,"account.invoice.pay_invoice.ask,account",0,Account,Compte,0
+field,"account.invoice.pay_invoice.ask,account_writeoff",0,Account,Compte,0
+field,"account.invoice.pay_invoice.ask,amount",0,Amount,Montant,0
+field,"account.invoice.pay_invoice.ask,company",0,Company,Compagnie,0
+field,"account.invoice.pay_invoice.ask,currency",0,Currency,Devise,0
+field,"account.invoice.pay_invoice.ask,currency_digits",0,Currency Digits,Décimales de la devise,0
+field,"account.invoice.pay_invoice.ask,date",0,Date,Date,0
+field,"account.invoice.pay_invoice.ask,description",0,Description,Description,0
+field,"account.invoice.pay_invoice.ask,journal",0,Journal,Journal,0
+field,"account.invoice.pay_invoice.ask,journal_writeoff",0,Journal,Journal,0
+field,"account.invoice.pay_invoice.ask,lines",0,Lines,Lignes,0
+field,"account.invoice.pay_invoice.ask,lines_to_pay",0,Lines to Pay,Lignes à payer,0
+field,"account.invoice.pay_invoice.ask,type",0,Type,Type,0
+field,"account.invoice.pay_invoice.init,amount",0,Amount,Montant,0
+field,"account.invoice.pay_invoice.init,currency",0,Currency,Devise,0
+field,"account.invoice.pay_invoice.init,currency_digits",0,Currency Digits,Décimales de la devise,0
+field,"account.invoice.pay_invoice.init,date",0,Date,date,0
+field,"account.invoice.pay_invoice.init,description",0,Description,Description,0
+field,"account.invoice.pay_invoice.init,journal",0,Journal,Journal,0
+field,"account.invoice,payment_lines",0,Payment Lines,Lignes de paiement,0
+field,"account.invoice,payment_term",0,Payment Term,Condition de paiement,0
+field,"account.invoice.payment_term,active",0,Active,Actif,0
+field,"account.invoice.payment_term,description",0,Description,Description,0
+field,"account.invoice.payment_term.line,amount",0,Amount,Montant,0
+field,"account.invoice.payment_term.line,currency",0,Currency,Devise,0
+field,"account.invoice.payment_term.line,currency_digits",0,Currency Digits,Décimales de la devise,0
+field,"account.invoice.payment_term.line,days",0,Number of Days,Nombre de jours,0
+field,"account.invoice.payment_term.line,delay",0,Condition,Condition,0
+field,"account.invoice.payment_term.line.delay,code",0,Code,Code,0
+field,"account.invoice.payment_term.line.delay,name",0,Name,Nom,0
+field,"account.invoice.payment_term.line,payment",0,Payment Term,Condition de paiement,0
+field,"account.invoice.payment_term.line,percent",0,Percent,Pourcent,0
+field,"account.invoice.payment_term,lines",0,Lines,Lignes,0
+field,"account.invoice.payment_term.line,sequence",0,Sequence,Séquence,0
+field,"account.invoice.payment_term.line,type",0,Type,Type,0
+field,"account.invoice.payment_term.line.type,code",0,Code,Code,0
+field,"account.invoice.payment_term.line.type,name",0,Name,Nom,0
+field,"account.invoice.payment_term,name",0,Payment Term,Condition de paiement,0
+field,"account.invoice,reconciled",0,Reconciled,Réconcilié,0
+field,"account.invoice,reference",0,Reference,Référence,0
+field,"account.invoice,state",0,State,État,0
+field,"account.invoice.tax,account",0,Account,Compte,0
+field,"account.invoice,tax_amount",0,Tax,Taxe,0
+field,"account.invoice.tax,amount",0,Amount,Montant,0
+field,"account.invoice.tax,base",0,Base,Base,0
+field,"account.invoice.tax,base_code",0,Base Code,Code de base,0
+field,"account.invoice.tax,base_sign",0,Base Sign,Signe de base,0
+field,"account.invoice.tax,description",0,Description,Description,0
+field,"account.invoice,taxes",0,Tax Lines,Lignes de taxe,0
+field,"account.invoice.tax,invoice",0,Invoice,Facture,0
+field,"account.invoice.tax,manual",0,Manual,Manuel,0
+field,"account.invoice.tax,sequence",0,Sequence,Séquence,0
+field,"account.invoice.tax,tax_code",0,Tax Code,Code de taxe,0
+field,"account.invoice.tax,tax_sign",0,Tax Sign,Signe de taxe,0
+field,"account.invoice,total_amount",0,Total,Total,0
+field,"account.invoice,type",0,Type,Type,0
+field,"account.invoice,type_name",0,Type,Type,0
+field,"account.invoice,untaxed_amount",0,Untaxed,Hors taxe,0
+field,"account.period,in_credit_note_sequence",0,Supplier Credit Note Sequence,Séquence des notes de crédit fournisseur,0
+field,"account.period,in_invoice_sequence",0,Supplier Invoice Sequence,Séquence de facture fournisseur,0
+field,"account.period,out_credit_note_sequence",0,Customer Credit Note Sequence,Séquence des notes de crédit client,0
+field,"account.period,out_invoice_sequence",0,Customer Invoice Sequence,Séquence de facture client,0
+field,"party.address,invoice",0,Invoice,Facture,0
+field,"party.party,payment_term",0,Invoice Payment Term,Condition de paiement de client,0
+field,"party.party,supplier_payment_term",0,Supplier Payment Term,Condition de paiement de fournisseur,0
+help,"account.invoice.payment_term.line,sequence",0,Use to order lines in ascending order,Utilisé pour trier les lignes en ordre croissant,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_end_month,End Month,fin du mois,0
+model,"account.invoice.payment_term.line.delay,name",payment_term_line_delay_net_days,Net Days,Jours,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_fixed,Fixed,Fixe,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_percent,Percent,Pourcent,0
+model,"account.invoice.payment_term.line.type,name",payment_term_line_type_remainder,Remainder,Reste,0
+model,"ir.action,name",act_invoice_form,All Invoices,Toutes les factures,0
+model,"ir.action,name",credit_invoice,Credit,Crédit,0
+model,"ir.action,name",act_invoice_out_credit_note_form,Credit Notes,Notes de crédit,0
+model,"ir.action,name",report_invoice,Invoice,Facture,0
+model,"ir.action,name",print_invoice_report,Invoice,Facture,0
+model,"ir.action,name",act_invoice_out_invoice_form,Invoices,Factures,0
+model,"ir.action,name",wizard_pay_invoice,Pay Invoice,Payer facture,0
+model,"ir.action,name",act_payment_term_form,Payment Terms,Conditions de paiement,0
+model,"ir.action,name",act_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
+model,"ir.action,name",act_invoice_in_invoice_form,Supplier Invoices,Facture fournisseurs,0
+model,"ir.sequence.type,name",sequence_type_account_invoice,Invoice,Facture,0
+model,"ir.ui.menu,name",menu_invoice_form,All Invoices,Toutes les factures,0
+model,"ir.ui.menu,name",menu_invoice_out_credit_note_form,Credit Notes,Notes de crédit,0
+model,"ir.ui.menu,name",menu_invoices_configuration,Invoices,Factures,0
+model,"ir.ui.menu,name",menu_invoices,Invoices,Factures,0
+model,"ir.ui.menu,name",menu_invoice_out_invoice_form,Invoices,Factures,0
+model,"ir.ui.menu,name",menu_payment_term_form,Payment Terms,Conditions de paiement,0
+model,"ir.ui.menu,name",menu_invoice_in_credit_note_form,Supplier Credit Notes,Notes de crédit fournisseur,0
+model,"ir.ui.menu,name",menu_invoice_in_invoice_form,Supplier Invoices,Factures fournisseur,0
+model,"workflow.activity,name",invoice_activity_cancel,Cancel,Annulé,0
+model,"workflow.activity,name",invoice_activity_draft,Draft,Brouilon,0
+model,"workflow.activity,name",invoice_activity_open,Open,Ouvert,0
+model,"workflow.activity,name",invoice_activity_paid,Paid,Payé,0
+model,"workflow.activity,name",invoice_activity_proforma,Pro forma,Pro forma,0
+model,"workflow,name",invoice_workflow,Invoice workflow,Workflow facture,0
+odt,account.invoice,0,Amount,Montant,0
+odt,account.invoice,0,Base,Base,0
+odt,account.invoice,0,Date,Date,0
+odt,account.invoice,0,Date:,Date :,0
+odt,account.invoice,0,Description,Description,0
+odt,account.invoice,0,Description:,Description :,0
+odt,account.invoice,0,Payment Term,Condition de paiement,0
+odt,account.invoice,0,Quantity,Quantité,0
+odt,account.invoice,0,Tax,Taxe,0
+odt,account.invoice,0,Taxes,Taxes,0
+odt,account.invoice,0,Taxes:,Taxes :,0
+odt,account.invoice,0,Total:,Total :,0
+odt,account.invoice,0,Total (excl. taxes):,Total (hors-taxes) :,0
+odt,account.invoice,0,Unit Price,Prix unitaire,0
+odt,account.invoice,0,VAT:,TAV :,0
+selection,"account.invoice.line,type",0,Comment,Commentaire,0
+selection,"account.invoice.line,type",0,Line,Ligne,0
+selection,"account.invoice.line,type",0,Subtotal,Sous-total,0
+selection,"account.invoice.line,type",0,Title,Titre,0
+selection,"account.invoice.pay_invoice.ask,type",0,Partial Payment,Paiement partiel,0
+selection,"account.invoice.pay_invoice.ask,type",0,Write-Off,Différence,0
+selection,"account.invoice,state",0,Canceled,Annulé,0
+selection,"account.invoice,state",0,Draft,Brouillon,0
+selection,"account.invoice,state",0,Open,Ouverte,0
+selection,"account.invoice,state",0,Paid,Payée,0
+selection,"account.invoice,state",0,Pro forma,Pro forma,0
+selection,"account.invoice,type",0,Credit Note,Note de crédit,0
+selection,"account.invoice,type",0,Invoice,Facture,0
+selection,"account.invoice,type",0,Supplier Credit Note,Note de crédit fournisseur,0
+selection,"account.invoice,type",0,Supplier Invoice,Facture fournisseur,0
+view,account.invoice,0,Amount Second Currency,Montant de devise secondaire,0
+view,account.invoice,0,_Cancel,_Annuler,0
+view,account.invoice,0,Credit,Crédit,0
+view,account.invoice,0,Debit,Débit,0
+view,account.invoice,0,_Draft,_Brouillon,0
+view,account.invoice,0,Invoice,Facture,0
+view,account.invoice,0,Invoices,Factures,0
+view,account.invoice,0,Lines,Lignes,0
+view,account.invoice,0,_Open,_Ouvrir,0
+view,account.invoice,0,Other Info,Autre information,0
+view,account.invoice,0,_Pay,_Payer,0
+view,account.invoice,0,Payment,Paiement,0
+view,account.invoice,0,Payment Lines,Lignes de paiement,0
+view,account.invoice,0,Pro For_ma,Pro For_ma,0
+view,account.invoice,0,_Reset to Draft,_Remettre en brouillon,0
+view,account.invoice,0,Taxes,Taxes,0
+view,account.invoice.credit_invoice.init,0,Are you sure to credit those/this invoice(s)?,Etes-vous sûr de vouloir créditer cette/ces factures ?,0
+view,account.invoice.credit_invoice.init,0,Credit Invoice,Facture de crédit,0
+view,account.invoice.line,0,Invoice Line,Ligne de Facture,0
+view,account.invoice.line,0,Invoice Lines,Lignes de Facture,0
+view,account.invoice.pay_invoice.ask,0,Amount Second Currency,Montant en devise secondaire,0
+view,account.invoice.pay_invoice.ask,0,Credit,Crédit,0
+view,account.invoice.pay_invoice.ask,0,Debit,Débit,0
+view,account.invoice.pay_invoice.ask,0,Lines to Pay,Lignes à payer,0
+view,account.invoice.pay_invoice.ask,0,Pay Invoice,Payer la facture,0
+view,account.invoice.pay_invoice.init,0,Pay Invoice,Payer la facture,0
+view,account.invoice.payment_term,0,Payment Term,Condition de paiement,0
+view,account.invoice.payment_term,0,Payment Term Line,Ligne de condition de paiement,0
+view,account.invoice.payment_term,0,Payment Term Lines,Lignes de condition de paiement,0
+view,account.invoice.payment_term,0,Payment Terms,Conditions de paiement,0
+view,account.invoice.print_invoice_report.warning,0,<b>Warning!</b>,<b>Attention!</b>,0
+view,account.invoice.print_invoice_report.warning,0,Print Invoice,Imprimer la facture,0
+view,account.invoice.print_invoice_report.warning,0,The invoices will be sent <i>directly</i> to the printer.,Les factures seront envoyées <i>directement</i> à l'imprimante.,0
+view,account.invoice.print_invoice_report.warning,0,You have selected more than one invoice to print.,Vous avez selectioné plus d'une facture à imprimer.,0
+view,account.invoice.tax,0,Invoice Tax,Taxes de le facture,0
+view,account.invoice.tax,0,Invoice Taxes,Taxes de le facture,0
+view,account.invoice.tax,0,Tax Code,Code de taxe,0
+view,party.party,0,Payment Terms,Conditions de paiement,0
+view,product.product,0,Taxes,Taxes,0
+wizard_button,"account.invoice.credit_invoice,init,credit",0,Credit,Créditer,0
+wizard_button,"account.invoice.credit_invoice,init,end",0,Cancel,Annuler,0
+wizard_button,"account.invoice.pay_invoice,ask,end",0,Cancel,Annuler,0
+wizard_button,"account.invoice.pay_invoice,ask,pay",0,Ok,Ok,0
+wizard_button,"account.invoice.pay_invoice,init,choice",0,Ok,Ok,0
+wizard_button,"account.invoice.pay_invoice,init,end",0,Cancel,Annuler,0
+wizard_button,"account.invoice.print_invoice_report,warning,end",0,Cancel,Annuler,0
+wizard_button,"account.invoice.print_invoice_report,warning,print",0,Print,Imprimer,0
diff --git a/invoice.odt b/invoice.odt
new file mode 100644
index 0000000..fd89f7d
Binary files /dev/null and b/invoice.odt differ
diff --git a/invoice.py b/invoice.py
new file mode 100644
index 0000000..f6513d4
--- /dev/null
+++ b/invoice.py
@@ -0,0 +1,2357 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+"Invoice"
+
+from trytond.osv import fields, OSV
+import datetime
+import mx.DateTime
+from decimal import Decimal
+from trytond.netsvc import LocalService
+from trytond.report import Report
+from trytond.wizard import Wizard, WizardOSV
+from trytond.pooler import get_pool_report
+import base64
+
+_STATES = {
+    'readonly': "state != 'draft'",
+}
+
+_TYPE2JOURNAL = {
+    'out_invoice': 'revenue',
+    'in_invoice': 'expense',
+    'out_credit_note': 'revenue',
+    'in_credit_note': 'expense',
+}
+
+
+class PaymentTerm(OSV):
+    'Payment Term'
+    _name = 'account.invoice.payment_term'
+    _description = __doc__
+    name = fields.Char('Payment Term', 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',
+            'Lines')
+
+    def __init__(self):
+        super(PaymentTerm, self).__init__()
+        self._order.insert(0, ('name', 'ASC'))
+        self._error_messages.update({
+            'invalid_line': 'Invalid payment term line!',
+            'missing_remainder': 'Payment term missing a remainder line!',
+            })
+
+    def default_active(self, cursor, user, context=None):
+        return True
+
+    def compute(self, cursor, user, amount, currency, payment_term, date=None,
+            context=None):
+        '''
+        Return list with (date, amount) for each payment term lines
+        '''
+        #TODO implement business_days
+        # http://pypi.python.org/pypi/BusinessHours/
+        type_obj = self.pool.get('account.invoice.payment_term.line.type')
+        delay_obj = self.pool.get(
+                'account.invoice.payment_term.line.delay')
+        currency_obj = self.pool.get('currency.currency')
+        date_obj = self.pool.get('ir.date')
+
+        res = []
+        if date is None:
+            date = date_obj.today(cursor, user, context=context)
+        remainder = amount
+        for line in payment_term.lines:
+            value = type_obj.get_value(cursor, user, line, remainder, currency,
+                    context)
+            value_date = delay_obj.get_date(cursor, user, line, date, context)
+            if not value or not value_date:
+                if (not remainder) and line.amount:
+                    self.raise_user_error(cursor, 'invalid_line',
+                            context=context)
+                else:
+                    continue
+            res.append((value_date, value))
+            remainder -= value
+        if not currency_obj.is_zero(cursor, user, currency, remainder):
+            self.raise_user_error(cursor, 'missing_remainder',
+                    context=context)
+        return res
+
+PaymentTerm()
+
+
+class PaymentTermLineType(OSV):
+    'Payment Term Line Type'
+    _name = 'account.invoice.payment_term.line.type'
+    _description = __doc__
+    name = fields.Char('Name', size=None, translate=True, required=True)
+    code = fields.Char('Code', size=None, required=True)
+
+    def __init__(self):
+        super(PaymentTermLineType, self).__init__()
+        self._sql_constraints += [
+            ('code_uniq', 'UNIQUE(code)', 'Code must be unique!'),
+        ]
+        self._order.insert(0, ('name', 'ASC'))
+
+    def get_value(self, cursor, user, line, amount, currency, context=None):
+        currency_obj = self.pool.get('currency.currency')
+        if line.type == 'fixed':
+            return currency_obj.compute(cursor, user, line.currency,
+                    line.amount, currency, context=context)
+        elif line.type == 'percent':
+            return currency_obj.round(cursor, user, currency, amount * line.percent)
+        elif line.type == 'remainder':
+            return currency_obj.round(cursor, user, currency, amount)
+        return None
+
+PaymentTermLineType()
+
+
+class PaymentTermLineDelay(OSV):
+    'Payment Term Line Delay'
+    _name = 'account.invoice.payment_term.line.delay'
+    _description = __doc__
+    name = fields.Char('Name', size=None, translate=True, required=True)
+    code = fields.Char('Code', size=None, required=True)
+
+    def __init__(self):
+        super(PaymentTermLineDelay, self).__init__()
+        self._sql_constraints += [
+            ('code_uniq', 'UNIQUE(code)', 'Code must be unique!'),
+        ]
+        self._order.insert(0, ('name', 'ASC'))
+
+    def get_date(self, cursor, user, line, date, context=None):
+        value = None
+        if line.delay == 'net_days':
+            value = mx.DateTime.strptime(str(date), '%Y-%m-%d') + \
+                    mx.DateTime.RelativeDateTime(days=line.days)
+        elif line.delay == 'end_month':
+            value = mx.DateTime.strptime(str(date), '%Y-%m-%d') + \
+                    mx.DateTime.RelativeDateTime(days=line.days) + \
+                    mx.DateTime.RelativeDateTime(day=-1)
+        if value:
+            return datetime.date(value.year, value.month, value.day)
+        return None
+
+PaymentTermLineDelay()
+
+
+class PaymentTermLine(OSV):
+    'Payment Term Line'
+    _name = 'account.invoice.payment_term.line'
+    _description = __doc__
+    sequence = fields.Integer('Sequence',
+            help='Use to order lines in ascending order')
+    payment = fields.Many2One('account.invoice.payment_term', 'Payment Term',
+            required=True, ondelete="CASCADE")
+    type = fields.Selection('get_type', 'Type', required=True,
+            on_change=['type'])
+    percent = fields.Numeric('Percent', digits=(16, 8),
+            states={
+                'invisible': "type != 'percent'",
+                'required': "type == 'percent'",
+            })
+    amount = fields.Numeric('Amount', digits="(16, currency_digits)",
+            states={
+                'invisible': "type != 'fixed'",
+                'required': "type == 'fixed'",
+            })
+    currency = fields.Many2One('currency.currency', 'Currency',
+            states={
+                'invisible': "type != 'fixed'",
+                'required': "type == 'fixed'",
+            })
+    currency_digits = fields.Function('get_currency_digits', type='integer',
+            string='Currency Digits', on_change_with=['currency'])
+    days = fields.Integer('Number of Days')
+    delay = fields.Selection('get_delay', 'Condition', required=True)
+
+    def __init__(self):
+        super(PaymentTermLine, self).__init__()
+        self._order.insert(0, ('sequence', 'ASC'))
+
+    def default_type(self, cursor, user, context=None):
+        return 'remainder'
+
+    def default_delay(self, cursor, user, context=None):
+        return 'net_days'
+
+    def get_type(self, cursor, user, context=None):
+        type_obj = self.pool.get('account.invoice.payment_term.line.type')
+        type_ids = type_obj.search(cursor, user, [], context=context)
+        types = type_obj.browse(cursor, user, type_ids, context=context)
+        return [(x.code, x.name) for x in types]
+
+    def get_delay(self, cursor, user, context=None):
+        delay_obj = self.pool.get('account.invoice.payment_term.line.delay')
+        delay_ids = delay_obj.search(cursor, user, [], context=context)
+        delays = delay_obj.browse(cursor, user, delay_ids,
+                context=context)
+        return [(x.code, x.name) for x in delays]
+
+    def on_change_type(self, cursor, user, ids, vals, context=None):
+        if not 'type' in vals:
+            return {}
+        res = {}
+        if vals['type'] != 'fixed':
+            res['amount'] = Decimal('0.0')
+            res['currency'] =  False
+        if vals['type'] != 'percent':
+            res['percent'] =  Decimal('0.0')
+        return res
+
+    def on_change_with_currency_digits(self, cursor, user, ids, vals,
+            context=None):
+        currency_obj = self.pool.get('currency.currency')
+        if vals.get('currency'):
+            currency = currency_obj.browse(cursor, user, vals['currency'],
+                    context=context)
+            return currency.digits
+        return 2
+
+    def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
+        res = {}
+        for line in self.browse(cursor, user, ids, context=context):
+            if line.currency:
+                res[line.id] = line.currency.digits
+            else:
+                res[line.id] = 2
+        return res
+
+PaymentTermLine()
+
+
+class Invoice(OSV):
+    'Invoice'
+    _name = 'account.invoice'
+    _description = __doc__
+    company = fields.Many2One('company.company', 'Company', required=True,
+            states=_STATES)
+    type = fields.Selection([
+        ('out_invoice', 'Invoice'),
+        ('in_invoice', 'Supplier Invoice'),
+        ('out_credit_note', 'Credit Note'),
+        ('in_credit_note', 'Supplier Credit Note'),
+        ], 'Type', select=1, on_change=['type'], required=True, states={
+            'readonly': "state != 'draft' or context.get('type', False)",
+        })
+    type_name = fields.Function('get_type_name', type='char', string='Type')
+    number = fields.Char('Number', size=None, readonly=True, select=1)
+    reference = fields.Char('Reference', size=None)
+    description = fields.Char('Description', size=None, states=_STATES)
+    state = fields.Selection([
+        ('draft', 'Draft'),
+        ('proforma', 'Pro forma'),
+        ('open', 'Open'),
+        ('paid', 'Paid'),
+        ('cancel', 'Canceled'),
+        ], 'State', readonly=True)
+    invoice_date = fields.Date('Invoice Date', required=True,
+        states=_STATES)
+    party = fields.Many2One('party.party', 'Party', change_default=True,
+        required=True, states=_STATES, on_change=['party', 'payment_term',
+            'type', 'company'])
+    invoice_address = fields.Many2One('party.address', 'Invoice Address',
+        required=True, states=_STATES, domain="[('party', '=', party)]")
+    currency = fields.Many2One('currency.currency', 'Currency', required=True,
+        states={
+            'readonly': "state != 'draft' or (bool(lines) and bool(currency))",
+        })
+    currency_digits = fields.Function('get_currency_digits', type='integer',
+            string='Currency Digits', on_change_with=['currency'])
+    journal = fields.Many2One('account.journal', 'Journal', required=True,
+        states=_STATES, domain=[('centralised', '=', False)])
+    move = fields.Many2One('account.move', 'Move', readonly=True)
+    account = fields.Many2One('account.account', 'Account', required=True,
+        states=_STATES,
+        domain="[('company', '=', company), ('kind', '!=', 'view')]")
+    payment_term = fields.Many2One('account.invoice.payment_term',
+        'Payment Term', required=True, states=_STATES)
+    lines = fields.One2Many('account.invoice.line', 'invoice', 'Lines',
+        states=_STATES, on_change=['lines', 'taxes', 'currency', 'party', 'type'])
+    taxes = fields.One2Many('account.invoice.tax', 'invoice', 'Tax Lines',
+        states=_STATES, on_change=['lines', 'taxes', 'currency', 'party', 'type'])
+    comment = fields.Text('Comment')
+    untaxed_amount = fields.Function('get_untaxed_amount', type='numeric',
+            digits="(16, currency_digits)", string='Untaxed')
+    tax_amount = fields.Function('get_tax_amount', type='numeric',
+            digits="(16, currency_digits)", string='Tax')
+    total_amount = fields.Function('get_total_amount', type='numeric',
+            digits="(16, currency_digits)", string='Total')
+    reconciled = fields.Function('get_reconciled', type='boolean',
+            string='Reconciled')
+    lines_to_pay = fields.Function('get_lines_to_pay', type='one2many',
+            relation='account.move.line', string='Lines to Pay')
+    payment_lines = fields.Many2Many('account.move.line',
+            'invoice_payment_lines_rel', 'invoice', 'line', readonly=True,
+            string='Payment Lines')
+    amount_to_pay_today = fields.Function('get_amount_to_pay',
+            type='numeric', digits="(16, currency_digits)",
+            string='Amount to Pay Today')
+    amount_to_pay = fields.Function('get_amount_to_pay',
+            type='numeric', digits="(16, currency_digits)",
+            string='Amount to Pay')
+    invoice_report = fields.Binary('Invoice Report', readonly=True)
+    invoice_report_format = fields.Char('Invoice Report Format', readonly=True)
+
+    def __init__(self):
+        super(Invoice, self).__init__()
+        self._rpc_allowed += [
+            'button_draft',
+        ]
+        self._constraints += [
+            ('check_account', 'account_different_company'),
+            ('check_account2', 'same_account_on_line'),
+        ]
+        self._order.insert(0, ('number', 'ASC'))
+        self._error_messages.update({
+            'reset_draft': 'You can not reset to draft ' \
+                    'an invoice that have move!',
+            'missing_tax_line': 'Taxes defined ' \
+                    'but not in invoice lines!\n' \
+                    'Re-compute the invoice.',
+            'diff_tax_line': 'Base taxes ' \
+                    'different from invoice lines!\n' \
+                    'Re-compute the invoice.',
+            'missing_tax_line2': 'Taxes defined ' \
+                    'on invoice lines but not on invoice!\n' \
+                    'Re-compute the invoice.',
+            'no_invoice_sequence': 'There is no invoice sequence ' \
+                    'on the period/fiscal year!',
+            'modify_invoice': 'You can not modify invoice that is ' \
+                    'open, paid or canceled!',
+            'same_debit_account': 'Debit account on journal is ' \
+                    'the same than the invoice account!',
+            'missing_debit_account': 'The debit account on journal is ' \
+                    'missing!',
+            'same_credit_account': 'Credit account on journal is ' \
+                    'the same than the invoice account!',
+            'missing_credit_account': 'The credit account on journal is ' \
+                    'missing!',
+            'account_different_company': 'You can not create an invoice\n' \
+                    'with account from a different invoice company!',
+            'same_account_on_line': 'You can not use the same account\n' \
+                    'than on invoice line account!',
+            })
+
+    def default_type(self, cursor, user, context=None):
+        if context is None:
+            context = {}
+        return context.get('type', 'out_invoice')
+
+    def default_state(self, cursor, user, context=None):
+        return 'draft'
+
+    def default_invoice_date(self, cursor, user, context=None):
+        date_obj = self.pool.get('ir.date')
+        return date_obj.today(cursor, user, context=context)
+
+    def default_currency(self, cursor, user, context=None):
+        company_obj = self.pool.get('company.company')
+        currency_obj = self.pool.get('currency.currency')
+        if context is None:
+            context = {}
+        company = None
+        if context.get('company'):
+            company = company_obj.browse(cursor, user, context['company'],
+                    context=context)
+            return currency_obj.name_get(cursor, user, company.currency.id,
+                    context=context)[0]
+        return False
+
+    def default_currency_digits(self, cursor, user, context=None):
+        company_obj = self.pool.get('company.company')
+        if context is None:
+            context = {}
+        company = None
+        if context.get('company'):
+            company = company_obj.browse(cursor, user, context['company'],
+                    context=context)
+            return company.currency.digits
+        return 2
+
+    def default_company(self, cursor, user, context=None):
+        company_obj = self.pool.get('company.company')
+        if context is None:
+            context = {}
+        if context.get('company'):
+            return company_obj.name_get(cursor, user, context['company'],
+                    context=context)[0]
+        return False
+
+    def default_payment_term(self, cursor, user, context=None):
+        payment_term_obj = self.pool.get('account.invoice.payment_term')
+        payment_term_ids = payment_term_obj.search(cursor, user,
+                self.payment_term._domain, context=context)
+        if len(payment_term_ids) == 1:
+            return payment_term_obj.name_get(cursor, user, payment_term_ids,
+                    context=context)[0]
+        return False
+
+    def on_change_type(self, cursor, user, ids, vals, context=None):
+        journal_obj = self.pool.get('account.journal')
+        res = {}
+        journal_ids = journal_obj.search(cursor, user, [
+            ('type', '=', _TYPE2JOURNAL.get(vals.get('type', 'out_invoice'),
+                'revenue')),
+            ], limit=1, context=context)
+        if journal_ids:
+            res['journal'] = journal_obj.name_get(cursor, user, journal_ids[0],
+                    context=context)[0]
+        return res
+
+    def on_change_party(self, cursor, user, ids, vals, context=None):
+        party_obj = self.pool.get('party.party')
+        address_obj = self.pool.get('party.address')
+        account_obj = self.pool.get('account.account')
+        payment_term_obj = self.pool.get('account.invoice.payment_term')
+        company_obj = self.pool.get('company.company')
+        res = {
+            'invoice_address': False,
+            'account': False,
+        }
+        if vals.get('party'):
+            party = party_obj.browse(cursor, user, vals['party'],
+                    context=context)
+            res['invoice_address'] = party_obj.address_get(cursor, user,
+                    party.id, type='invoice', context=context)
+            if vals.get('type') in ('out_invoice', 'out_credit_note'):
+                res['account'] = party.account_receivable.id
+                if vals['type'] == 'out_invoice' and party.payment_term:
+                    res['payment_term'] = party.payment_term.id
+            elif vals.get('type') in ('in_invoice', 'in_credit_note'):
+                res['account'] = party.account_payable.id
+                if vals['type'] == 'in_invoice' and party.supplier_payment_term:
+                    res['payment_term'] = party.supplier_payment_term.id
+
+        if vals.get('company'):
+            company = company_obj.browse(cursor, user, vals['company'],
+                    context=context)
+            if vals.get('type') == 'out_credit_note':
+                res['payment_term'] = company.payment_term.id
+            elif vals.get('type') == 'in_credit_note':
+                res['payment_term'] = company.supplier_payment_term.id
+
+        if res['invoice_address']:
+            res['invoice_address'] = address_obj.name_get(cursor, user,
+                    res['invoice_address'], context=context)[0]
+        if res['account']:
+            res['account'] = account_obj.name_get(cursor, user,
+                    res['account'], context=context)[0]
+        if res.get('payment_term'):
+            res['payment_term'] = payment_term_obj.name_get(cursor, user,
+                    res['payment_term'], context=context)[0]
+        return res
+
+    def on_change_with_currency_digits(self, cursor, user, ids, vals,
+            context=None):
+        currency_obj = self.pool.get('currency.currency')
+        if vals.get('currency'):
+            currency = currency_obj.browse(cursor, user, vals['currency'],
+                    context=context)
+            return currency.digits
+        return 2
+
+    def get_currency_digits(self, cursor, user, ids, name, arg, context=None):
+        res = {}
+        for invoice in self.browse(cursor, user, ids, context=context):
+            res[invoice.id] = invoice.currency.digits
+        return res
+
+    def get_type_name(self, cursor, user, ids, name, arg, context=None):
+        res = {}
+        type2name = {}
+        for type, name in self.fields_get(cursor, user, fields_names=['type'],
+                context=context)['type']['selection']:
+            type2name[type] = name
+        for invoice in self.browse(cursor, user, ids, context=context):
+            res[invoice.id] = type2name[invoice.type]
+        return res
+
+    def on_change_lines(self, cursor, user, ids, vals, context=None):
+        return self._on_change_lines_taxes(cursor, user, ids, vals, context=context)
+
+    def on_change_taxes(self, cursor, user, ids, vals, context=None):
+        return self._on_change_lines_taxes(cursor, user, ids, vals, context=context)
+
+    def _on_change_lines_taxes(self, cursor, user, ids, vals, context=None):
+        currency_obj = self.pool.get('currency.currency')
+        tax_obj = self.pool.get('account.tax')
+        if context is None:
+            context = {}
+        res = {
+            'untaxed_amount': Decimal('0.0'),
+            'tax_amount': Decimal('0.0'),
+            'total_amount': Decimal('0.0'),
+            'taxes': {},
+        }
+        currency = None
+        if vals.get('currency'):
+            currency = currency_obj.browse(cursor, user, vals['currency'],
+                    context=context)
+        computed_taxes = {}
+        if vals.get('lines'):
+            ctx = context.copy()
+            ctx.update(self.get_tax_context(cursor, user, vals,
+                context=context))
+            for line in vals['lines']:
+                if line.get('type', 'line') != 'line':
+                    continue
+                res['untaxed_amount'] += line.get('amount', Decimal('0.0'))
+
+                for tax in tax_obj.compute(cursor, user, line.get('taxes', []),
+                        line.get('unit_price', Decimal('0.0')),
+                        line.get('quantity', 0.0), context=context):
+                    key, val = self._compute_tax(cursor, user, tax,
+                            vals.get('type', 'out_invoice'), context=context)
+                    if not key in computed_taxes:
+                        computed_taxes[key] = val
+                    else:
+                        computed_taxes[key]['base'] += val['base']
+                        computed_taxes[key]['amount'] += val['amount']
+        tax_keys = []
+        for tax in vals.get('taxes', []):
+            if tax.get('manual', False):
+                res['tax_amount'] += tax.get('amount', Decimal('0.0'))
+                continue
+            key = (tax.get('base_code'), tax.get('base_sign'),
+                    tax.get('tax_code'), tax.get('tax_sign'),
+                    tax.get('account'), tax.get('description'))
+            tax_keys.append(key)
+            if key not in computed_taxes:
+                res['taxes'].setdefault('remove', [])
+                res['taxes']['remove'].append(tax.get('id'))
+                continue
+            if currency:
+                if not currency_obj.is_zero(cursor, user, currency,
+                        computed_taxes[key]['base'] - \
+                                tax.get('base', Decimal('0.0'))):
+                    res['tax_amount'] += computed_taxes[key]['amount']
+                    res['taxes'].setdefault('update', [])
+                    res['taxes']['update'].append({
+                        'id': tax.get('id'),
+                        'amount': computed_taxes[key]['amount'],
+                        'base': computed_taxes[key]['base'],
+                        })
+                else:
+                    res['tax_amount'] += tax.get('amount', Decimal('0.0'))
+            else:
+                if computed_taxes[key]['base'] - \
+                        tax.get('base', Decimal('0.0')) != Decimal('0.0'):
+                    res['tax_amount'] += computed_taxes[key]['amount']
+                    res['taxes'].setdefault('update', [])
+                    res['taxes']['update'].append({
+                        'id': tax.get('id'),
+                        'amount': computed_taxes[key]['amount'],
+                        'base': computed_taxes[key]['base'],
+                        })
+                else:
+                    res['tax_amount'] += tax.get('amount', Decimal('0.0'))
+        for key in computed_taxes:
+            if key not in tax_keys:
+                res['tax_amount'] += computed_taxes[key]['amount']
+                res['taxes'].setdefault('add', [])
+                res['taxes']['add'].append(computed_taxes[key])
+        if currency:
+            res['untaxed_amount'] = currency_obj.round(cursor, user, currency,
+                    res['untaxed_amount'])
+            res['tax_amount'] = currency_obj.round(cursor, user, currency,
+                    res['tax_amount'])
+        res['total_amount'] = res['untaxed_amount'] + res['tax_amount']
+        if currency:
+            res['total_amount'] = currency_obj.round(cursor, user, currency,
+                    res['total_amount'])
+        return res
+
+    def get_untaxed_amount(self, cursor, user, ids, name, arg, context=None):
+        currency_obj = self.pool.get('currency.currency')
+        res = {}
+        for invoice in self.browse(cursor, user, ids, context=context):
+            res.setdefault(invoice.id, Decimal('0.0'))
+            for line in invoice.lines:
+                if line.type != 'line':
+                    continue
+                res[invoice.id] += line.amount
+            res[invoice.id] = currency_obj.round(cursor, user, invoice.currency,
+                    res[invoice.id])
+        return res
+
+    def get_tax_amount(self, cursor, user, ids, name, arg, context=None):
+        currency_obj = self.pool.get('currency.currency')
+        res = {}
+        cursor.execute('SELECT invoice, ' \
+                    'COALESCE(SUM(amount), 0)::DECIMAL ' \
+                'FROM account_invoice_tax ' \
+                'WHERE invoice IN (' + ','.join(['%s' for x in ids]) + ') ' \
+                'GROUP BY invoice', ids)
+        for invoice_id, sum in cursor.fetchall():
+            res[invoice_id] = sum
+
+        for invoice in self.browse(cursor, user, ids, context=context):
+            res.setdefault(invoice.id, Decimal('0.0'))
+            res[invoice.id] = currency_obj.round(cursor, user, invoice.currency,
+                    res[invoice.id])
+        return res
+
+    def get_total_amount(self, cursor, user, ids, name, arg, context=None):
+        currency_obj = self.pool.get('currency.currency')
+        res = {}
+        for invoice in self.browse(cursor, user, ids, context=context):
+            res[invoice.id] = currency_obj.round(cursor, user, invoice.currency,
+                    invoice.untaxed_amount + invoice.tax_amount)
+        return res
+
+    def get_reconciled(self, cursor, user, ids, name, arg, context=None):
+        res = {}
+        for invoice in self.browse(cursor, user, ids, context=context):
+            res[invoice.id] = True
+            if not invoice.lines_to_pay:
+                res[invoice.id] = False
+                continue
+            for line in invoice.lines_to_pay:
+                if not line.reconciliation:
+                    res[invoice.id] = False
+                    break
+        return res
+
+    def get_lines_to_pay(self, cursor, user, ids, name, args, context=None):
+        res = {}
+        for invoice in self.browse(cursor, user, ids, context=context):
+            lines = []
+            if invoice.move:
+                for line in invoice.move.lines:
+                    if line.account.id == invoice.account.id \
+                            and line.maturity_date:
+                        lines.append(line)
+            lines.sort(lambda x, y: cmp(x.maturity_date, y.maturity_date))
+            res[invoice.id] = [x.id for x in lines]
+        return res
+
+    def get_amount_to_pay(self, cursor, user, ids, name, arg,
+            context=None):
+        currency_obj = self.pool.get('currency.currency')
+        date_obj = self.pool.get('ir.date')
+
+        res = {}
+        for invoice in self.browse(cursor, user, ids, context=context):
+            amount = Decimal('0.0')
+            amount_currency = Decimal('0.0')
+            for line in invoice.lines_to_pay:
+                if line.reconciliation:
+                    continue
+                if name == 'amount_to_pay_today' \
+                        and line.maturity_date > date_obj.today(cursor, user,
+                                context=context):
+                    continue
+                if line.second_currency.id == invoice.currency.id:
+                    if line.debit - line.credit > Decimal('0.0'):
+                        amount_currency += line.amount_second_currency
+                    else:
+                        amount_currency -= line.amount_second_currency
+                else:
+                    amount += line.debit - line.credit
+            for line in invoice.payment_lines:
+                if line.reconciliation:
+                    continue
+                if line.second_currency.id == invoice.currency.id:
+                    if line.debit - line.credit > Decimal('0.0'):
+                        amount_currency += line.amount_second_currency
+                    else:
+                        amount_currency -= line.amount_second_currency
+                else:
+                    amount += line.debit - line.credit
+            if invoice.type in ('in_invoice', 'out_credit_note'):
+                amount = - amount
+                amount_currency = - amount_currency
+            if amount != Decimal('0.0'):
+                amount_currency += currency_obj.compute(cursor, user,
+                        invoice.company.currency, amount, invoice.currency,
+                        context=context)
+            if amount_currency < Decimal('0.0'):
+                amount_currency = Decimal('0.0')
+            res[invoice.id] = amount_currency
+        return res
+
+    def button_draft(self, cursor, user, ids, context=None):
+        workflow_service = LocalService('workflow')
+        for invoice in self.browse(cursor, user, ids, context=context):
+            if invoice.move:
+                self.raise_user_error(cursor, 'reset_draft',
+                        context=context)
+            workflow_service.trg_create(user, 'account.invoice',
+                    invoice.id, cursor, context=context)
+        self.write(cursor, user, ids, {'state': 'draft'})
+        return True
+
+    def get_tax_context(self, cursor, user, invoice, context=None):
+        party_obj = self.pool.get('party.party')
+        res = {}
+        if isinstance(invoice, dict):
+            if invoice.get('party'):
+                party = party_obj.browse(cursor, user, invoice['party'],
+                        context=context)
+                if party.lang:
+                    res['language'] = party.lang.code
+        else:
+            if invoice.party.lang:
+                res['language'] = invoice.party.lang.code
+        return res
+
+    def _compute_tax(self, cursor, user, tax, invoice_type, context=None):
+        val = {}
+        val['manual'] = False
+        val['description'] = tax['tax'].description
+        val['base'] = tax['base']
+        val['amount'] = tax['amount']
+
+        if invoice_type in ('out_invoice', 'in_invoice'):
+            val['base_code'] = tax['tax'].invoice_base_code.id
+            val['base_sign'] = tax['tax'].invoice_base_sign
+            val['tax_code'] = tax['tax'].invoice_tax_code.id
+            val['tax_sign'] = tax['tax'].invoice_tax_sign
+            val['account'] = tax['tax'].invoice_account.id
+        else:
+            val['base_code'] = tax['tax'].credit_note_base_code.id
+            val['base_sign'] = tax['tax'].credit_note_base_sign
+            val['tax_code'] = tax['tax'].credit_note_tax_code.id
+            val['tax_sign'] = tax['tax'].credit_note_tax_sign
+            val['account'] = tax['tax'].credit_note_account.id
+        key = (val['base_code'], val['base_sign'],
+                val['tax_code'], val['tax_sign'],
+                val['account'], val['description'])
+        return key, val
+
+    def _compute_taxes(self, cursor, user, invoice, context=None):
+        tax_obj = self.pool.get('account.tax')
+        currency_obj = self.pool.get('currency.currency')
+        if context is None:
+            context = {}
+
+        ctx = context.copy()
+        ctx.update(self.get_tax_context(cursor, user, invoice,
+            context=context))
+
+        res = {}
+        for line in invoice.lines:
+            # Don't round on each line to handle rounding error
+            if line.type != 'line':
+                continue
+            tax_ids = [x.id for x in line.taxes]
+            for tax in tax_obj.compute(cursor, user, tax_ids, line.unit_price,
+                    line.quantity, context=ctx):
+                key, val = self._compute_tax(cursor, user, tax, invoice.type,
+                        context=context)
+                val['invoice'] = invoice.id
+                if not key in res:
+                    res[key] = val
+                else:
+                    res[key]['base'] += val['base']
+                    res[key]['amount'] += val['amount']
+        return res
+
+    def update_taxes(self, cursor, user, ids, context=None, exception=False):
+        tax_obj = self.pool.get('account.invoice.tax')
+        currency_obj = self.pool.get('currency.currency')
+        for invoice in self.browse(cursor, user, ids, context=context):
+            computed_taxes = self._compute_taxes(cursor, user, invoice,
+                    context=context)
+            if not invoice.taxes:
+                for tax in computed_taxes.values():
+                    tax_obj.create(cursor, user, tax, context=context)
+            else:
+                tax_keys = []
+                for tax in invoice.taxes:
+                    if tax.manual:
+                        continue
+                    key = (tax.base_code.id, tax.base_sign,
+                            tax.tax_code.id, tax.tax_sign,
+                            tax.account.id, tax.description)
+                    tax_keys.append(key)
+                    if not key in computed_taxes:
+                        if exception:
+                            self.raise_user_error(cursor, 'missing_tax_line',
+                                    context=context)
+                        tax_obj.delete(cursor, user, tax.id,
+                                context=context)
+                        continue
+                    if not currency_obj.is_zero(cursor, user,
+                            invoice.currency,
+                            computed_taxes[key]['base'] - tax.base):
+                        if exception:
+                            self.raise_user_error(cursor, 'diff_tax_line',
+                                    context=context)
+                        tax_obj.write(cursor, user, tax.id,
+                                computed_taxes[key], context=context)
+                for key in computed_taxes:
+                    if not key in tax_keys:
+                        if exception:
+                            self.raise_user_error(cursor, 'missing_tax_line',
+                                    context=context)
+                        tax_obj.create(cursor, user, computed_taxes[key],
+                                context=context)
+        return True
+
+    def _get_move_line_invoice_line(self, cursor, user, invoice, context=None):
+        '''
+        Return list of move line values for each invoice lines
+        '''
+        line_obj = self.pool.get('account.invoice.line')
+        res = []
+        for line in invoice.lines:
+            val = line_obj.get_move_line(cursor, user, line,
+                    context=context)
+            if val:
+                res.append(val)
+        return res
+
+    def _get_move_line_invoice_tax(self, cursor, user, invoice, context=None):
+        '''
+        Return list of move line values for each invoice taxes
+        '''
+        tax_obj = self.pool.get('account.invoice.tax')
+        res = []
+        for tax in invoice.taxes:
+            val = tax_obj.get_move_line(cursor, user, tax,
+                    context=context)
+            res.append(val)
+        return res
+
+    def _get_move_line(self, cursor, user, invoice, date, amount, context=None):
+        '''
+        Return move line
+        '''
+        currency_obj = self.pool.get('currency.currency')
+        res = {}
+        if invoice.currency.id != invoice.company.currency.id:
+            res['amount_second_currency'] = currency_obj.compute(cursor, user,
+                    invoice.company.currency, amount,
+                    invoice.currency, context=context)
+            res['amount_second_currency'] = abs(res['amount_second_currency'])
+            res['second_currency'] = invoice.currency.id
+        else:
+            res['amount_second_currency'] = Decimal('0.0')
+            res['second_currency'] = False
+        if amount >= Decimal('0.0'):
+            res['debit'] = Decimal('0.0')
+            res['credit'] = amount
+        else:
+            res['debit'] = - amount
+            res['credit'] = Decimal('0.0')
+        res['account'] = invoice.account.id
+        res['maturity_date'] = date
+        res['reference'] = invoice.reference
+        res['name'] = invoice.number
+        res['party'] = invoice.party.id
+        return res
+
+    def create_move(self, cursor, user, invoice_id, context=None):
+        tax_obj = self.pool.get('account.invoice.tax')
+        payment_term_obj = self.pool.get('account.invoice.payment_term')
+        currency_obj = self.pool.get('currency.currency')
+        move_obj = self.pool.get('account.move')
+        period_obj = self.pool.get('account.period')
+
+        invoice = self.browse(cursor, user, invoice_id, context=context)
+        if invoice.move:
+            return True
+        self.update_taxes(cursor, user, [invoice.id], context=context,
+                exception=True)
+        move_lines = self._get_move_line_invoice_line(cursor, user, invoice,
+                context=context)
+        move_lines += self._get_move_line_invoice_tax(cursor, user, invoice,
+                context=context)
+
+        total = Decimal('0.0')
+        total_currency = Decimal('0.0')
+        for line in move_lines:
+            total += line['debit'] - line['credit']
+            total_currency += line['amount_second_currency']
+
+        term_lines = payment_term_obj.compute(cursor, user, total,
+                invoice.company.currency, invoice.payment_term,
+                invoice.invoice_date, context=context)
+        remainder_total_currency = total_currency
+        for date, amount in term_lines:
+            val = self._get_move_line(cursor, user, invoice, date, amount,
+                    context=None)
+            remainder_total_currency -= val['amount_second_currency']
+            move_lines.append(val)
+        if not currency_obj.is_zero(cursor, user, invoice.currency,
+                remainder_total_currency):
+            move_lines[-1]['amount_second_currency'] += remainder_total_currency
+
+        period_id = period_obj.find(cursor, user, invoice.company.id,
+                date=invoice.invoice_date, context=context)
+
+        move_id = move_obj.create(cursor, user, {
+            'journal': invoice.journal.id,
+            'period': period_id,
+            'date': invoice.invoice_date,
+            'lines': [('create', x) for x in move_lines],
+            }, context=context)
+        self.write(cursor, user, invoice.id, {
+            'move': move_id,
+            }, context=context)
+        move_obj.post(cursor, user, move_id, context=context)
+        return move_id
+
+    def set_number(self, cursor, user, invoice_id, context=None):
+        period_obj = self.pool.get('account.period')
+        sequence_obj = self.pool.get('ir.sequence.strict')
+
+        if context is None:
+            context = {}
+
+        invoice = self.browse(cursor, user, invoice_id, context=context)
+
+        if invoice.number:
+            return True
+
+        period_id = period_obj.find(cursor, user, invoice.company.id,
+                date=invoice.invoice_date, context=context)
+        period = period_obj.browse(cursor, user, period_id, context=context)
+        sequence_id = period[invoice.type + '_sequence'].id
+        if not sequence_id:
+            self.raise_user_error(cursor, 'no_invoice_sequence',
+                    context=context)
+        ctx = context.copy()
+        ctx['date'] = invoice.invoice_date
+        number = sequence_obj.get_id(cursor, user, sequence_id, context=ctx)
+        self.write(cursor, user, invoice_id, {
+            'number': number,
+            }, context=context)
+        return True
+
+    def check_modify(self, cursor, user, ids, context=None):
+        '''
+        Check if the invoices can be modified
+        '''
+        for invoice in self.browse(cursor, user, ids, context=context):
+            if invoice.state in ('open', 'paid'):
+                self.raise_user_error(cursor, 'modify_invoice',
+                        context=context)
+        return
+
+    def name_get(self, cursor, user, ids, context=None):
+        if not ids:
+            return []
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+        res = []
+        for invoice in self.browse(cursor, user, ids, context=context):
+            res.append((invoice.id,
+                invoice.number or str(invoice.id) + ' ' + invoice.party.name))
+        return res
+
+    def name_search(self, cursor, user, name='', args=None, operator='ilike',
+            context=None, limit=None):
+        if args is None:
+            args = []
+        if name:
+            ids = self.search(cursor, user, [('number', operator, name)] + args,
+                    limit=limit, context=context)
+        if not ids:
+            ids = self.search(cursor, user, [('party', operator, name)] + args,
+                    limit=limit, context=context)
+        res = self.name_get(cursor, user, ids, context=context)
+        return res
+
+    def delete(self, cursor, user, ids, context=None):
+        if not ids:
+            return True
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+        self.check_modify(cursor, user, ids, context=context)
+        return super(Invoice, self).delete(cursor, user, ids,
+                context=context)
+
+    def write(self, cursor, user, ids, vals, context=None):
+        workflow_service = LocalService('workflow')
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+        keys = vals.keys()
+        for key in ('state', 'payment_lines',
+                'invoice_report', 'invoice_report_format'):
+            if key in keys:
+                keys.remove(key)
+        if len(keys):
+            self.check_modify(cursor, user, ids, context=context)
+        res = super(Invoice, self).write(cursor, user, ids, vals,
+                context=context)
+        self.update_taxes(cursor, user, ids, context=context)
+        if 'state' in vals and vals['state'] in ('paid', 'cancel'):
+            for invoice_id in ids:
+                workflow_service.trg_trigger(user, self._name, invoice_id,
+                        cursor, context=context)
+        return res
+
+    def copy(self, cursor, user, invoice_id, default=None, context=None):
+        line_obj = self.pool.get('account.invoice.line')
+        tax_obj = self.pool.get('account.invoice.tax')
+        date_obj = self.pool.get('ir.date')
+
+        if default is None:
+            default = {}
+        default = default.copy()
+        default['state'] = 'draft'
+        default['number'] = False
+        default['move'] = False
+        default['invoice_report'] = False
+        default['invoice_report_format'] = False
+        default['payment_lines'] = False
+        default['lines'] = False
+        default['taxes'] = False
+        default['date'] = date_obj.today(cursor, user, context=context)
+        default['lines_to_pay'] = False
+        new_id = super(Invoice, self).copy(cursor, user, invoice_id,
+                default=default, context=context)
+
+        invoice = self.browse(cursor, user, invoice_id, context=context)
+        for line in invoice.lines:
+            line_obj.copy(cursor, user, line.id, default={
+                'invoice': new_id,
+                }, context=context)
+
+        for tax in invoice.taxes:
+            tax_obj.copy(cursor, user, tax.id, default={
+                'invoice': new_id,
+                }, context=context)
+        return new_id
+
+    def check_account(self, cursor, user, ids):
+        for invoice in self.browse(cursor, user, ids):
+            if invoice.account.company.id != invoice.company.id:
+                return False
+        return True
+
+    def check_account2(self, cursor, user, ids):
+        for invoice in self.browse(cursor, user, ids):
+            for line in invoice.lines:
+                if line.type == 'line' \
+                        and line.account.id == invoice.account.id:
+                    return False
+        return True
+
+    def get_reconcile_lines_for_amount(self, cursor, user, invoice, amount,
+            exclude_ids=None, context=None):
+        '''
+        Return list of line ids and the remainder to make reconciliation.
+        '''
+        currency_obj = self.pool.get('currency.currency')
+
+        if exclude_ids is None:
+            exclude_ids = []
+        payment_amount = Decimal('0.0')
+        remainder = invoice.total_amount
+        lines = []
+        payment_lines = []
+
+        for line in invoice.payment_lines:
+            if line.reconciliation:
+                continue
+            payment_amount += line.debit - line.credit
+            payment_lines.append(line.id)
+
+        if invoice.type in ('out_invoice', 'in_credit_note'):
+            amount = - abs(amount)
+        else:
+            amount = abs(amount)
+
+        for line in invoice.lines_to_pay:
+
+            if line.reconciliation:
+                continue
+            if line.id in exclude_ids:
+                continue
+
+            test_amount = amount + (line.debit - line.credit)
+            if currency_obj.is_zero(cursor, user, invoice.currency,
+                    test_amount):
+                return ([line.id], Decimal('0.0'))
+            if abs(test_amount) < abs(remainder):
+                lines = [line.id]
+                remainder = test_amount
+
+            test_amount = (amount + payment_amount) + (line.debit - line.credit)
+            if currency_obj.is_zero(cursor, user, invoice.currency,
+                    test_amount):
+                return ([line.id] + payment_lines, Decimal('0.0'))
+            if abs(test_amount) < abs(remainder):
+                lines = [line.id] + payment_lines
+                remainder = test_amount
+
+            exclude_ids2 = exclude_ids[:]
+            exclude_ids2.append(line.id)
+            res = self.get_reconcile_lines_for_amount(cursor, user, invoice,
+                    (amount + (line.debit - line.credit)),
+                    exclude_ids=exclude_ids2, context=context)
+            if res[1] == Decimal('0.0'):
+                res[0].append(line.id)
+                return res
+            if abs(res[1]) < abs(remainder):
+                res[0].append(line.id)
+                lines = res[0]
+                remainder = res[1]
+
+        return (lines, remainder)
+
+    def pay_invoice(self, cursor, user, invoice_id, amount, journal_id, date,
+            description, amount_second_currency=False, second_currency=False,
+            context=None):
+        journal_obj = self.pool.get('account.journal')
+        move_obj = self.pool.get('account.move')
+        period_obj = self.pool.get('account.period')
+
+        lines = []
+        invoice = self.browse(cursor, user, invoice_id, context=context)
+        journal = journal_obj.browse(cursor, user, journal_id, context=context)
+
+        if invoice.type in ('out_invoice', 'in_credit_note'):
+            lines.append({
+                'name': description,
+                'account': invoice.account.id,
+                'party': invoice.party.id,
+                'debit': Decimal('0.0'),
+                'credit': amount,
+                'amount_second_currency': amount_second_currency,
+                'second_currency': second_currency,
+            })
+            lines.append({
+                'name': description,
+                'account': journal.debit_account.id,
+                'party': invoice.party.id,
+                'debit': amount,
+                'credit': Decimal('0.0'),
+                'amount_second_currency': amount_second_currency,
+                'second_currency': second_currency,
+            })
+            if invoice.account.id == journal.debit_account.id:
+                self.raise_user_error(cursor, 'same_debit_account',
+                        context=context)
+            if not journal.debit_account:
+                self.raise_user_error(cursor, 'missing_debit_account',
+                        context=context)
+        else:
+            lines.append({
+                'name': description,
+                'account': invoice.account.id,
+                'party': invoice.party.id,
+                'debit': amount,
+                'credit': Decimal('0.0'),
+                'amount_second_currency': amount_second_currency,
+                'second_currency': second_currency,
+            })
+            lines.append({
+                'name': description,
+                'account': journal.credit_account.id,
+                'party': invoice.party.id,
+                'debit': Decimal('0.0'),
+                'credit': amount,
+                'amount_second_currency': amount_second_currency,
+                'second_currency': second_currency,
+            })
+            if invoice.account.id == journal.debit_account.id:
+                self.raise_user_error(cursor, 'same_credit_account',
+                        context=context)
+            if not journal.credit_account:
+                self.raise_user_error(cursor, 'missing_credit_account',
+                        context=context)
+
+        period_id = period_obj.find(cursor, user, invoice.company.id,
+                date=date, context=context)
+
+        move_id = move_obj.create(cursor, user, {
+            'journal': journal.id,
+            'period': period_id,
+            'date': date,
+            'lines': [('create', x) for x in lines],
+            }, context=context)
+
+        move = move_obj.browse(cursor, user, move_id, context=context)
+
+        for line in move.lines:
+            if line.account.id == invoice.account.id:
+                self.write(cursor, user, invoice.id, {
+                    'payment_lines': [('add', line.id)],
+                    }, context=context)
+                return line.id
+        raise Exception('Missing account')
+
+    def print_invoice(self, cursor, user, invoice_id, context=None):
+        '''
+        Generate invoice report and store it in invoice_report field.
+        '''
+        invoice_report = get_pool_report(cursor.dbname).get('account.invoice')
+        val = invoice_report.execute(cursor, user, [invoice_id],
+                {'id': invoice_id}, context=context)
+        self.write(cursor, user, invoice_id, {
+            'invoice_report_format': val[0],
+            'invoice_report': val[1],
+            }, context=context)
+        return
+
+    def _credit(self, cursor, user, invoice, context=None):
+        '''
+        Return values to credit invoice.
+        '''
+        invoice_line_obj = self.pool.get('account.invoice.line')
+        invoice_tax_obj = self.pool.get('account.invoice.tax')
+
+        res = {}
+        if invoice.type == 'out_invoice':
+            res['type'] = 'out_credit_note'
+        elif invoice.type == 'in_invoice':
+            res['type'] = 'in_credit_note'
+        elif invoice.type == 'out_credit_note':
+            res['type'] = 'out_invoice'
+        elif invoice.type == 'in_credit_note':
+            res['type'] = 'in_invoice'
+
+        for field in ('reference', 'description', 'comment'):
+            res[field] = invoice[field]
+
+        for field in ('company', 'party', 'invoice_address', 'currency',
+                'journal', 'account', 'payment_term'):
+            res[field] = invoice[field].id
+
+        res['lines'] = []
+        for line in invoice.lines:
+            value = invoice_line_obj._credit(cursor, user, line,
+                    context=context)
+            res['lines'].append(('create', value))
+
+        res['taxes'] = []
+        for tax in invoice.taxes:
+            if not tax.manual:
+                continue
+            value = invoice_tax_obj._credit(cursor, user, tax,
+                    context=context)
+            res[taxes].append(('create', value))
+        return res
+
+    def credit(self, cursor, user, ids, context=None):
+        '''
+        Credit invoices and return ids of new invoices.
+        '''
+        new_ids = []
+        for invoice in self.browse(cursor, user, ids, context=context):
+            vals = self._credit(cursor, user, invoice, context=context)
+            new_ids.append(self.create(cursor, user, vals, context=context))
+        return new_ids
+
+Invoice()
+
+
+class InvoiceLine(OSV):
+    'Invoice Line'
+    _name = 'account.invoice.line'
+    _rec_name = 'description'
+    _description = __doc__
+
+    invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
+            select=1, required=True)
+    sequence = fields.Integer('Sequence')
+    type = fields.Selection([
+        ('line', 'Line'),
+        ('subtotal', 'Subtotal'),
+        ('title', 'Title'),
+        ('comment', 'Comment'),
+        ], 'Type', select=1, required=True)
+    quantity = fields.Float('Quantity',
+            digits="(16, unit_digits)",
+            states={
+                'invisible': "type != 'line'",
+                'required': "type == 'line'",
+            })
+    unit = fields.Many2One('product.uom', 'Unit',
+            states={
+                'required': "product",
+                'invisible': "type != 'line'",
+            }, domain="[('category', '=', " \
+                    "(product, 'product.default_uom.category'))]",
+            context="{'category': (product, 'product.default_uom.category')}")
+    unit_digits = fields.Function('get_unit_digits', type='integer',
+            string='Unit Digits', on_change_with=['unit'])
+    product = fields.Many2One('product.product', 'Product',
+            states={
+                'invisible': "type != 'line'",
+            }, on_change=['product', 'unit', 'quantity', 'description',
+                '_parent_invoice.type', '_parent_invoice.party',
+                '_parent_invoice.currency'])
+    account = fields.Many2One('account.account', 'Account',
+            domain="[('kind', '!=', 'view'), " \
+                    "('company', '=', _parent_invoice.company), " \
+                    "('id', '!=', _parent_invoice.account)]",
+            states={
+                'invisible': "type != 'line'",
+                'required': "type == 'line'",
+            })
+    unit_price = fields.Numeric('Unit Price', digits=(16, 4),
+            states={
+                'invisible': "type != 'line'",
+                'required': "type == 'line'",
+            })
+    amount = fields.Function('get_amount', type='numeric', string='Amount',
+            digits="(16, _parent_invoice.currency_digits)",
+            states={
+                'invisible': "type not in ('line', 'subtotal')",
+            }, on_change_with=['type', 'quantity', 'unit_price',
+                '_parent_invoice.currency'])
+    description = fields.Char('Description', size=None, required=True)
+    taxes = fields.Many2Many('account.tax', 'account_invoice_line_account_tax',
+            'line', 'tax', 'Taxes', domain=[('parent', '=', False)],
+            states={
+                'invisible': "type != 'line'",
+            })
+
+    def __init__(self):
+        super(InvoiceLine, self).__init__()
+        self._sql_constraints += [
+            ('type_account',
+                'CHECK((type = \'line\' AND account IS NOT NULL) ' \
+                        'OR (type != \'line\'))',
+                'Line type must have an account!'),
+        ]
+        self._constraints += [
+            ('check_account', 'account_different_company'),
+            ('check_account2', 'same_account_on_invoice'),
+        ]
+        self._order.insert(0, ('sequence', 'ASC'))
+        self._error_messages.update({
+            'modify': 'You can not modify line from an invoice ' \
+                    'that is open, paid or canceled!',
+            'create': 'You can not add a line to an invoice ' \
+                    'that is open, paid or canceled!',
+            'account_different_company': 'You can not create invoice line\n' \
+                    'with account from a different invoice company!',
+            'same_account_on_invoice': 'You can not use the same account\n' \
+                    'than the invoice account!',
+            })
+
+    def default_type(self, cursor, user, context=None):
+        return 'line'
+
+    def default_quantity(self, cursor, user, context=None):
+        return 0.0
+
+    def default_unit_price(self, cursor, user, context=None):
+        return Decimal('0.0')
+
+    def on_change_with_amount(self, cursor, user, ids, vals, context=None):
+        currency_obj = self.pool.get('currency.currency')
+        if vals.get('type') == 'line':
+            if isinstance(vals.get('_parent_invoice.currency'), (int, long)):
+                currency = currency_obj.browse(cursor, user,
+                        vals['_parent_invoice.currency'], context=context)
+            else:
+                currency = vals['_parent_invoice.currency']
+            amount = Decimal(str(vals.get('quantity') or '0.0')) * \
+                    (vals.get('unit_price') or Decimal('0.0'))
+            if currency:
+                return currency_obj.round(cursor, user, currency, amount)
+            return amount
+        return Decimal('0.0')
+
+    def on_change_with_unit_digits(self, cursor, user, ids, vals,
+            context=None):
+        uom_obj = self.pool.get('product.uom')
+        if vals.get('unit'):
+            uom = uom_obj.browse(cursor, user, vals['unit'],
+                    context=context)
+            return uom.digits
+        return 2
+
+    def get_unit_digits(self, cursor, user, ids, name, arg, context=None):
+        res = {}
+        for line in self.browse(cursor, user, ids, context=context):
+            if line.unit:
+                res[line.id] = line.unit.digits
+            else:
+                res[line.id] = 2
+        return res
+
+    def get_amount(self, cursor, user, ids, name, arg, context=None):
+        currency_obj = self.pool.get('currency.currency')
+        res = {}
+        for line in self.browse(cursor, user, ids, context=context):
+            if line.type == 'line':
+                res[line.id] = currency_obj.round(cursor, user,
+                        line.invoice.currency,
+                        Decimal(str(line.quantity)) * line.unit_price)
+            elif line.type == 'subtotal':
+                res[line.id] = Decimal('0.0')
+                for line2 in line.invoice.lines:
+                    if line2.type == 'line':
+                        res[line.id] += currency_obj.round(cursor, user,
+                                line2.invoice.currency,
+                                Decimal(str(line2.quantity)) * line2.unit_price)
+                    elif line2.type == 'subtotal':
+                        if line.id == line2.id:
+                            break
+                        res[line.id] = Decimal('0.0')
+            else:
+                res[line.id] = Decimal('0.0')
+        return res
+
+    def on_change_product(self, cursor, user, ids, vals, context=None):
+        product_obj = self.pool.get('product.product')
+        party_obj = self.pool.get('party.party')
+        account_obj = self.pool.get('account.account')
+        uom_obj = self.pool.get('product.uom')
+        company_obj = self.pool.get('company.company')
+        currency_obj = self.pool.get('currency.currency')
+        if context is None:
+            context = {}
+        if not vals.get('product'):
+            return {}
+        res = {}
+
+        ctx = context.copy()
+        party = None
+        if vals.get('_parent_invoice.party'):
+            party = party_obj.browse(cursor, user, vals['_parent_invoice.party'],
+                    context=context)
+            if party.lang:
+                ctx['language'] = party.lang.code
+
+        product = product_obj.browse(cursor, user, vals['product'],
+                context=context)
+
+        company = None
+        if context.get('company'):
+            company = company_obj.browse(cursor, user, context['company'],
+                    context=context)
+        currency = None
+        if vals.get('_parent_invoice.currency'):
+            #TODO check if today date is correct
+            currency = currency_obj.browse(cursor, user,
+                    vals['_parent_invoice.currency'], context=context)
+
+        if vals.get('_parent_invoice.type') in ('in_invoice', 'in_credit_note'):
+            if company and currency:
+                res['unit_price'] = currency_obj.compute(cursor, user,
+                        company.currency, product.cost_price, currency,
+                        round=False, context=context)
+            else:
+                res['unit_price'] = product.cost_price
+            try:
+                res['account'] = account_obj.name_get(cursor, user,
+                        product.account_expense_used.id, context=context)[0]
+            except:
+                pass
+            res['taxes'] = []
+            for tax in product.supplier_taxes_used:
+                if party:
+                    if 'supplier_' + tax.group.code in party_obj._columns \
+                            and party['supplier_' + tax.group.code]:
+                        res['taxes'].append(
+                                party['supplier_' + tax.group.code].id)
+                        continue
+                res['taxes'].append(tax.id)
+        else:
+            if company and currency:
+                res['unit_price'] = currency_obj.compute(cursor, user,
+                        company.currency, product.list_price, currency,
+                        round=False, context=context)
+            else:
+                res['unit_price'] = product.list_price
+            try:
+                res['account'] = account_obj.name_get(cursor, user,
+                        product.account_revenue_used.id, context=context)[0]
+            except:
+                pass
+            res['taxes'] = []
+            for tax in product.customer_taxes_used:
+                if party:
+                    if tax.group.code in party_obj._columns \
+                            and party[tax.group.code]:
+                        res['taxes'].append(party[tax.group.code].id)
+                        continue
+                res['taxes'].append(tax.id)
+
+        if not vals.get('description'):
+            res['description'] = product_obj.name_get(cursor, user, product.id,
+                    context=ctx)[0][1]
+
+        category = product.default_uom.category
+        if not vals.get('unit') \
+                or vals.get('unit') not in [x.id for x in category.uoms]:
+            res['unit'] = uom_obj.name_get(cursor, user, product.default_uom.id,
+                context=context)[0]
+            res['unit_digits'] = product.default_uom.digits
+        return res
+
+    def check_modify(self, cursor, user, ids, context=None):
+        '''
+        Check if the lines can be modified
+        '''
+        for line in self.browse(cursor, user, ids, context=context):
+            if line.invoice.state in ('open', 'paid', 'cancel'):
+                self.raise_user_error(cursor, 'modify', context=context)
+        return
+
+    def delete(self, cursor, user, ids, context=None):
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+        self.check_modify(cursor, user, ids, context=context)
+        return super(InvoiceLine, self).delete(cursor, user, ids,
+                context=context)
+
+    def write(self, cursor, user, ids, vals, context=None):
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+        self.check_modify(cursor, user, ids, context=context)
+        return super(InvoiceLine, self).write(cursor, user, ids, vals,
+                context=context)
+
+    def create(self, cursor, user, vals, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+        if vals.get('invoice'):
+            invoice = invoice_obj.browse(cursor, user, vals['invoice'],
+                    context=context)
+            if invoice.state in ('open', 'paid', 'cancel'):
+                self.raise_user_error(cursor, 'create', context=context)
+        return super(InvoiceLine, self).create(cursor, user, vals,
+                context=context)
+
+    def check_account(self, cursor, user, ids):
+        for line in self.browse(cursor, user, ids):
+            if line.type == 'line' \
+                    and line.account.company.id != line.invoice.company.id:
+                return False
+        return True
+
+    def check_account2(self, cursor, user, ids):
+        for line in self.browse(cursor, user, ids):
+            if line.type == 'line' \
+                    and line.account.id == line.invoice.account.id:
+                return False
+        return True
+
+    def _compute_taxes(self, cursor, user, line, context=None):
+        tax_obj = self.pool.get('account.tax')
+        currency_obj = self.pool.get('currency.currency')
+        invoice_obj = self.pool.get('account.invoice')
+        if context is None:
+            context = {}
+
+        ctx = context.copy()
+        ctx.update(invoice_obj.get_tax_context(cursor, user, line.invoice,
+            context=context))
+        res = []
+        if line.type != 'line':
+            return res
+        tax_ids = [x.id for x in line.taxes]
+        for tax in tax_obj.compute(cursor, user, tax_ids, line.unit_price,
+                line.quantity, context=ctx):
+            if line.invoice.type in ('out_invoice', 'in_invoice'):
+                base_code_id = tax['tax'].invoice_base_code.id
+                amount = tax['base'] * tax['tax'].invoice_base_sign
+            else:
+                base_code_id = tax['tax'].credit_note_base_code.id
+                amount = tax['base'] * tax['tax'].credit_note_base_sign
+            if base_code_id:
+                amount = currency_obj.compute(cursor, user,
+                        line.invoice.currency, amount,
+                        line.invoice.company.currency, context=context)
+                res.append({
+                    'code': base_code_id,
+                    'amount': amount,
+                })
+        return res
+
+    def get_move_line(self, cursor, user, line, context=None):
+        '''
+        Return move line value for invoice line
+        '''
+        currency_obj = self.pool.get('currency.currency')
+        res = {}
+        if line.type != 'line':
+            return res
+        res['name'] = line.description
+        if line.invoice.currency.id != line.invoice.company.currency.id:
+            amount = currency_obj.compute(cursor, user,
+                    line.invoice.currency, line.amount,
+                    line.invoice.company.currency, context=context)
+            res['amount_second_currency'] = line.amount
+            res['second_currency'] = line.invoice.currency.id
+        else:
+            amount = line.amount
+            res['amount_second_currency'] = Decimal('0.0')
+            res['second_currency'] = False
+        if line.invoice.type in ('in_invoice', 'out_credit_note'):
+            res['debit'] = amount
+            res['credit'] = Decimal('0.0')
+        else:
+            res['debit'] = Decimal('0.0')
+            res['credit'] = amount
+            res['amount_second_currency'] = - res['amount_second_currency']
+        res['account'] = line.account.id
+        res['party'] = line.invoice.party.id
+        computed_taxes = self._compute_taxes(cursor, user, line,
+                context=context)
+        for tax in computed_taxes:
+            res.setdefault('tax_lines', [])
+            res['tax_lines'].append(('create', tax))
+        return res
+
+    def _credit(self, cursor, user, line, context=None):
+        '''
+        Return values to credit line.
+        '''
+        res = {}
+
+        for field in ('sequence', 'type', 'quantity', 'unit_price',
+                'description'):
+            res[field] = line[field]
+
+        for field in ('unit', 'product', 'account'):
+            res[field] = line[field].id
+
+        res['taxes'] = []
+        for tax in line.taxes:
+            res['taxes'].append(('add', tax.id))
+        return res
+
+InvoiceLine()
+
+
+class InvoiceTax(OSV):
+    'Invoice Tax'
+    _name = 'account.invoice.tax'
+    _rec_name = 'description'
+    _description = __doc__
+
+    invoice = fields.Many2One('account.invoice', 'Invoice', ondelete='CASCADE',
+            select=1)
+    description = fields.Char('Description', size=None, required=True)
+    sequence = fields.Integer('Sequence')
+    account = fields.Many2One('account.account', 'Account', required=True,
+            domain="[('kind', '!=', 'view'), " \
+                "('company', '=', _parent_invoice.company)]")
+    base = fields.Numeric('Base', digits="(16, _parent_invoice.currency_digits)",
+            states={
+                'invisible': "manual",
+            })
+    amount = fields.Numeric('Amount', digits="(16, _parent_invoice.currency_digits)")
+    manual = fields.Boolean('Manual')
+    base_code = fields.Many2One('account.tax.code', 'Base Code',
+            domain="[('company', '=', _parent_invoice.company)]",
+            states={
+                'invisible': "manual",
+            })
+    base_sign = fields.Numeric('Base Sign', digits=(2, 0),
+            states={
+                'invisible': "manual",
+            })
+    tax_code = fields.Many2One('account.tax.code', 'Tax Code',
+            domain="[('company', '=', _parent_invoice.company)]")
+    tax_sign = fields.Numeric('Tax Sign', digits=(2, 0))
+
+    def __init__(self):
+        super(InvoiceTax, self).__init__()
+        self._constraints += [
+            ('check_company', 'You can not create invoice tax \n' \
+                    'with account or code from a different invoice company!',
+                    ['account', 'base_code', 'tax_code']),
+        ]
+        self._order.insert(0, ('sequence', 'ASC'))
+        self._error_messages.update({
+            'modify': 'You can not modify tax from an invoice ' \
+                    'that is open, paid or canceled!',
+            'create': 'You can not add a line to an invoice ' \
+                    'that is open, paid or canceled!',
+            })
+
+    def default_base(self, cursor, user, context=None):
+        return Decimal('0.0')
+
+    def default_amount(self, cursor, user, context=None):
+        return Decimal('0.0')
+
+    def default_manual(self, cursor, user, context=None):
+        return True
+
+    def default_base_sign(self, cursor, user, context=None):
+        return Decimal('1')
+
+    def default_tax_sign(self, cursor, user, context=None):
+        return Decimal('1')
+
+    def check_modify(self, cursor, user, ids, context=None):
+        '''
+        Check if the taxes can be modified
+        '''
+        for tax in self.browse(cursor, user, ids, context=context):
+            if tax.invoice.state in ('open', 'paid', 'cancel'):
+                self.raise_user_error(cursor, 'modify',
+                        context=context)
+        return
+
+    def delete(self, cursor, user, ids, context=None):
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+        self.check_modify(cursor, user, ids, context=context)
+        return super(InvoiceTax, self).delete(cursor, user, ids,
+                context=context)
+
+    def write(self, cursor, user, ids, vals, context=None):
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+        self.check_modify(cursor, user, ids, context=context)
+        return super(InvoiceTax, self).write(cursor, user, ids, vals,
+                context=context)
+
+    def create(self, cursor, user, vals, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+        if vals.get('invoice'):
+            invoice = invoice_obj.browse(cursor, user, vals['invoice'],
+                    context=context)
+            if invoice.state in ('open', 'paid', 'cancel'):
+                self.raise_user_error(cursor, 'create', context=context)
+        return super(InvoiceTax, self).create(cursor, user, vals,
+                context=context)
+
+    def check_company(self, cursor, user, ids):
+        for tax in self.browse(cursor, user, ids):
+            company = tax.invoice.company
+            if tax.account.company.id != company.id:
+                return False
+            if tax.base_code:
+                if tax.base_code.company.id != company.id:
+                    return False
+            if tax.tax_code:
+                if tax.tax_code.company.id != company.id:
+                    return False
+        return True
+
+    def get_move_line(self, cursor, user, tax, context=None):
+        '''
+        Return move line value for invoice tax
+        '''
+        currency_obj = self.pool.get('currency.currency')
+        res = {}
+        res['name'] = tax.description
+        if tax.invoice.currency.id != tax.invoice.company.currency.id:
+            amount = currency_obj.compute(cursor, user,
+                    tax.invoice.currency, tax.amount,
+                    tax.invoice.company.currency, context=context)
+            res['amount_second_currency'] = tax.amount * tax.tax_sign
+            res['second_currency'] = tax.invoice.currency.id
+        else:
+            amount = tax.amount
+            res['amount_second_currency'] = Decimal('0.0')
+            res['second_currency'] = False
+        amount *= tax.tax_sign
+        if tax.invoice.type in ('in_invoice', 'out_credit_note'):
+            if amount >= Decimal('0.0'):
+                res['debit'] = amount
+                res['credit'] = Decimal('0.0')
+            else:
+                res['debit'] = Decimal('0.0')
+                res['credit'] = - amount
+                res['amount_second_currency'] = - res['amount_second_currency']
+        else:
+            if amount >= Decimal('0.0'):
+                res['debit'] = Decimal('0.0')
+                res['credit'] = amount
+                res['amount_second_currency'] = - res['amount_second_currency']
+            else:
+                res['debit'] = - amount
+                res['credit'] = Decimal('0.0')
+        res['account'] = tax.account.id
+        res['party'] = tax.invoice.party.id
+        if tax.tax_code:
+            res['tax_lines'] = [('create', {
+                'code': tax.tax_code.id,
+                'amount': amount,
+            })]
+        return res
+
+    def _credit(self, cursor, user, tax, context=None):
+        '''
+        Return values to credit tax.
+        '''
+        res = {}
+
+        for field in ('description', 'sequence', 'base', 'amount',
+                'manual', 'base_sign', 'tax_sign'):
+            res[field] = tax[field]
+
+        for field in ('account', 'base_code', 'tax_code'):
+            res[field] = tax[field].id
+        return res
+
+InvoiceTax()
+
+
+class PrintInvoiceReportWarning(WizardOSV):
+    _name = 'account.invoice.print_invoice_report.warning'
+
+PrintInvoiceReportWarning()
+
+
+class PrintInvoiceReport(Wizard):
+    'Print Invoice Report'
+    _name = 'account.invoice.print_invoice_report'
+    states = {
+        'init': {
+            'result': {
+                'type': 'choice',
+                'next_state': '_choice',
+            },
+        },
+        'warning': {
+            'result': {
+                'type': 'form',
+                'object': 'account.invoice.print_invoice_report.warning',
+                'state': [
+                    ('end', 'Cancel', 'tryton-cancel'),
+                    ('print', 'Print', 'tryton-ok', True),
+                ],
+            },
+        },
+        'print': {
+            'actions': ['_print_init'],
+            'result': {
+                'type': 'print',
+                'report': 'account.invoice',
+                'state': 'print_next',
+                'get_id_from_action': True,
+            },
+        },
+        'print_next': {
+            'actions': ['_next_id'],
+            'result': {
+                'type': 'choice',
+                'next_state': '_print_next',
+            },
+        }
+    }
+
+    def _choice(self, cursor, user, data, context=None):
+        if len(data['ids']) > 1:
+            return 'warning'
+        return 'print'
+
+    def _print_init(self, cursor, user, data, context=None):
+        res = {}
+        if 'ids' in data['form']:
+            res['ids'] = data['form']['ids']
+        else:
+            res['ids'] = data['ids']
+        return res
+
+    def _next_id(self, cursor, user, data, context=None):
+        res = {}
+        if data['form']['ids']:
+            data['form']['ids'].pop(0)
+        res['ids'] = data['form']['ids']
+        return res
+
+    def _print_next(self, cursor, user, data, context=None):
+        if not data['form']['ids']:
+            return 'end'
+        return 'print'
+
+PrintInvoiceReport()
+
+
+class InvoiceReport(Report):
+    _name = 'account.invoice'
+
+    def execute(self, cursor, user, ids, datas, context=None):
+        if context is None:
+            context = {}
+        res = super(InvoiceReport, self).execute(cursor, user, ids, datas,
+                context=context)
+        if len(ids) > 1 or datas['id'] != ids[0]:
+            res = (res[0], res[1], True)
+        return res
+
+    def _get_objects(self, cursor, user_id, ids, model, datas, context):
+        invoice_obj = self.pool.get('account.invoice')
+
+        if context is None:
+            context = {}
+
+        context = context.copy()
+        if 'language' in context:
+            del context['language']
+        return invoice_obj.browse(cursor, user_id, [ids[0]], context=context)
+
+    def parse(self, cursor, user_id, report, objects, datas, context):
+        user_obj = self.pool.get('res.user')
+        invoice_obj = self.pool.get('account.invoice')
+
+        invoice = objects[0]
+
+        if invoice.invoice_report:
+            return (invoice.invoice_report_format,
+                    base64.decodestring(invoice.invoice_report))
+
+        user = user_obj.browse(cursor, user_id, user_id, context)
+        if context is None:
+            context = {}
+        context = context.copy()
+        context['company'] = user.company
+        res = super(InvoiceReport, self).parse(cursor, user_id, report, objects,
+                datas, context)
+        #If the invoice is open or paid and the report not saved in invoice_report
+        #there was an error somewhere. So we save it now in invoice_report
+        if invoice.state in ('open', 'paid'):
+            invoice_obj.write(cursor, user_id, invoice.id, {
+                'invoice_report_format': res[0],
+                'invoice_report': base64.encodestring(res[1]),
+                }, context=context)
+        return res
+
+InvoiceReport()
+
+
+class Address(OSV):
+    _name = 'party.address'
+    invoice = fields.Boolean('Invoice')
+
+Address()
+
+
+class Party(OSV):
+    _name = 'party.party'
+    payment_term = fields.Property(type='many2one',
+            relation='account.invoice.payment_term',
+            string='Invoice Payment Term')
+    supplier_payment_term = fields.Property(type='many2one',
+            relation='account.invoice.payment_term',
+            string='Supplier Payment Term')
+
+Party()
+
+
+class FiscalYear(OSV):
+    _name = 'account.fiscalyear'
+    out_invoice_sequence = fields.Many2One('ir.sequence.strict',
+            'Customer Invoice Sequence', required=True,
+            domain="[('code', '=', 'account.invoice')]")
+    in_invoice_sequence = fields.Many2One('ir.sequence.strict',
+            'Supplier Invoice Sequence', required=True,
+            domain="[('code', '=', 'account.invoice')]")
+    out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
+            'Customer Credit Note Sequence', required=True,
+            domain="[('code', '=', 'account.invoice')]")
+    in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
+            'Supplier Credit Note Sequence', required=True,
+            domain="[('code', '=', 'account.invoice')]")
+
+    def __init__(self):
+        super(FiscalYear, self).__init__()
+        self._constraints += [
+            ('check_invoice_sequences', 'different_invoice_sequence'),
+        ]
+        self._error_messages.update({
+            'change_invoice_sequence': 'You can not change ' \
+                    'the invoice sequence if there is already ' \
+                    'an invoice opened in the fiscalyear',
+            'different_invoice_sequence': 'You must have different ' \
+                    'invoice sequence per fiscal year!',
+            })
+
+    def check_invoice_sequences(self, cursor, user, ids):
+        for fiscalyear in self.browse(cursor, user, ids):
+            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                    'out_credit_note_sequence', 'in_credit_note_sequence'):
+                if self.search(cursor, user, [
+                    (sequence, '=', fiscalyear[sequence].id),
+                    ('id', '!=', fiscalyear.id),
+                    ]):
+                    return False
+        return True
+
+    def write(self, cursor, user, ids, vals, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+        for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                'out_credit_note_sequence', 'in_credit_note_sequence'):
+            if vals.get(sequence):
+                for fiscalyear in self.browse(cursor, user, ids,
+                        context=context):
+                    if fiscalyear[sequence] and \
+                            fiscalyear[sequence].id != \
+                            vals[sequence]:
+                        if invoice_obj.search(cursor, user, [
+                            ('invoice_date', '>=', fiscalyear.start_date),
+                            ('invoice_date', '<=', fiscalyear.end_date),
+                            ('number', '!=', False),
+                            ('type', '=', sequence[:-9]),
+                            ], context=context):
+                            self.raise_user_error(cursor,
+                                    'change_invoice_sequence', context=context)
+        return super(FiscalYear, self).write(cursor, user, ids, vals,
+                context=context)
+
+FiscalYear()
+
+
+class Period(OSV):
+    _name = 'account.period'
+    out_invoice_sequence = fields.Many2One('ir.sequence.strict',
+            'Customer Invoice Sequence',
+            domain="[('code', '=', 'account.invoice')]",
+            states={
+                'required': "type == 'standard'",
+                'invisible': "type != 'standard'",
+            })
+    in_invoice_sequence = fields.Many2One('ir.sequence.strict',
+            'Supplier Invoice Sequence',
+            domain="[('code', '=', 'account.invoice')]",
+            states={
+                'required': "type == 'standard'",
+                'invisible': "type != 'standard'",
+            })
+    out_credit_note_sequence = fields.Many2One('ir.sequence.strict',
+            'Customer Credit Note Sequence',
+            domain="[('code', '=', 'account.invoice')]",
+            states={
+                'required': "type == 'standard'",
+                'invisible': "type != 'standard'",
+            })
+    in_credit_note_sequence = fields.Many2One('ir.sequence.strict',
+            'Supplier Credit Note Sequence',
+            domain="[('code', '=', 'account.invoice')]",
+            states={
+                'required': "type == 'standard'",
+                'invisible': "type != 'standard'",
+            })
+
+    def __init__(self):
+        super(Period, self).__init__()
+        self._constraints += [
+            ('check_invoice_sequences',
+                'Error! You must have different invoice sequences ' \
+                        'per fiscal year!', ['out_invoice_sequence',
+                            'in_invoice_sequence', 'out_credit_note_sequence',
+                            'in_credit_note_sequence']),
+        ]
+        self._error_messages.update({
+            'change_invoice_sequence': 'You can not change ' \
+                    'the invoice sequence if there is already ' \
+                    'an invoice opened in the period',
+            })
+
+    def check_invoice_sequences(self, cursor, user, ids):
+        for period in self.browse(cursor, user, ids):
+            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                    'out_credit_note_sequence', 'in_credit_note_sequence'):
+                if self.search(cursor, user, [
+                    (sequence, '=', period[sequence].id),
+                    ('fiscalyear', '!=', period.fiscalyear.id),
+                    ]):
+                    return False
+        return True
+
+    def create(self, cursor, user, vals, context=None):
+        fiscalyear_obj = self.pool.get('account.fiscalyear')
+        vals = vals.copy()
+        if vals.get('fiscalyear'):
+            fiscalyear = fiscalyear_obj.browse(cursor, user, vals['fiscalyear'],
+                    context=context)
+            for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                    'out_credit_note_sequence', 'in_credit_note_sequence'):
+                if not vals.get(sequence):
+                    vals[sequence] = fiscalyear[sequence].id
+        return super(Period, self).create(cursor, user, vals, context=context)
+
+    def write(self, cursor, user, ids, vals, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+
+        if isinstance(ids, (int, long)):
+            ids = [ids]
+
+        for sequence in ('out_invoice_sequence', 'in_invoice_sequence',
+                'out_credit_note_sequence', 'in_credit_note_sequence'):
+            if vals.get(sequence):
+                for period in self.browse(cursor, user, ids, context=context):
+                    if period[sequence] and \
+                            period[sequence].id != \
+                            vals[sequence]:
+                        if invoice_obj.search(cursor, user, [
+                            ('date', '>=', period.start_date),
+                            ('date', '<=', period.end_date),
+                            ('number', '!=', False),
+                            ('type', '=', sequence[:-9]),
+                            ], context=context):
+                            self.raise_user_error(cursor,
+                                    'change_invoice_sequence', context=context)
+        return super(Period, self).write(cursor, user, ids, vals,
+                context=context)
+
+Period()
+
+
+class PayInvoiceInit(WizardOSV):
+    _name = 'account.invoice.pay_invoice.init'
+    amount = fields.Numeric('Amount', digits="(16, currency_digits)",
+            required=True)
+    currency = fields.Many2One('currency.currency', 'Currency', required=True)
+    currency_digits = fields.Integer('Currency Digits', readonly=True,
+            on_change_with=['currency'])
+    description = fields.Char('Description', size=None, required=True)
+    journal = fields.Many2One('account.journal', 'Journal', required=True,
+            domain=[('type', '=', 'cash')])
+    date = fields.Date('Date', required=True)
+
+    def default_date(self, cursor, user, context=None):
+        date_obj = self.pool.get('ir.date')
+        return date_obj.today(cursor, user, context=context)
+
+    def on_change_with_currency_digits(self, cursor, user, ids, vals,
+            context=None):
+        currency_obj = self.pool.get('currency.currency')
+        if vals.get('currency'):
+            currency = currency_obj.browse(cursor, user, vals['currency'],
+                    context=context)
+            return currency.digits
+        return 2
+
+PayInvoiceInit()
+
+
+class PayInvoiceAsk(WizardOSV):
+    _name = 'account.invoice.pay_invoice.ask'
+    type = fields.Selection([
+        ('writeoff', 'Write-Off'),
+        ('partial', 'Partial Payment'),
+        ], 'Type', required=True)
+    journal_writeoff = fields.Many2One('account.journal', 'Journal',
+            states={
+                'invisible': "type != 'writeoff'",
+                'required': "type == 'writeoff'",
+            })
+    account_writeoff = fields.Many2One('account.account', 'Account',
+            domain="[('kind', '!=', 'view'), ('company', '=', company)]",
+            states={
+                'invisible': "type != 'writeoff'",
+                'required': "type == 'writeoff'",
+            })
+    amount = fields.Numeric('Amount', digits="(16, currency_digits)", readonly=True)
+    currency = fields.Many2One('currency.currency', 'Currency', readonly=True)
+    currency_digits = fields.Integer('Currency Digits', readonly=True,
+            on_change_with=['currency'])
+    lines_to_pay = fields.Char(string='Lines to Pay', size=None)
+    lines = fields.One2Many('account.move.line', 'ham', 'Lines',
+            domain="[('id', 'in', eval(lines_to_pay)), " \
+                    "('reconciliation', '=', False)]",
+            states={
+                'invisible': "type != 'writeoff'",
+            })
+    description = fields.Char('Description', size=None, readonly=True)
+    journal = fields.Many2One('account.journal', 'Journal', readonly=True,
+            domain=[('type', '=', 'cash')])
+    date = fields.Date('Date', readonly=True)
+    company = fields.Many2One('company.company', 'Company', readonly=True)
+    account = fields.Many2One('account.account', 'Account', readonly=True)
+
+    def default_type(self, cursor, user, context=None):
+        return 'writeoff'
+
+    def on_change_with_currency_digits(self, cursor, user, ids, vals,
+            context=None):
+        currency_obj = self.pool.get('currency.currency')
+        if vals.get('currency'):
+            currency = currency_obj.browse(cursor, user, vals['currency'],
+                    context=context)
+            return currency.digits
+        return 2
+
+PayInvoiceAsk()
+
+
+class PayInvoice(Wizard):
+    'Pay Invoice'
+    _name = 'account.invoice.pay_invoice'
+    states = {
+        'init': {
+            'actions': ['_init'],
+            'result': {
+                'type': 'form',
+                'object': 'account.invoice.pay_invoice.init',
+                'state': [
+                    ('end', 'Cancel', 'tryton-cancel'),
+                    ('choice', 'Ok', 'tryton-ok', True),
+                ],
+            },
+        },
+        'choice': {
+            'result': {
+                'type': 'choice',
+                'next_state': '_choice',
+            },
+        },
+        'ask': {
+            'actions': ['_ask'],
+            'result': {
+                'type': 'form',
+                'object': 'account.invoice.pay_invoice.ask',
+                'state': [
+                    ('end', 'Cancel', 'tryton-cancel'),
+                    ('pay', 'Ok', 'tryton-ok', True),
+                ],
+            },
+        },
+        'pay': {
+            'result': {
+                'type': 'action',
+                'action': '_action_pay',
+                'state': 'end',
+            },
+        },
+    }
+
+    def _init(self, cursor, user, data, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+        res = {}
+        invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
+        res['currency'] = invoice.currency.id
+        res['currency_digits'] = invoice.currency.digits
+        res['amount'] = invoice.amount_to_pay_today
+        res['description'] = invoice.number
+        return res
+
+    def _choice(self, cursor, user, data, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+        currency_obj = self.pool.get('currency.currency')
+
+        invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
+
+        ctx = context.copy()
+        ctx['date'] = data['form']['date']
+        amount = currency_obj.compute(cursor, user, data['form']['currency'],
+                data['form']['amount'], invoice.company.currency,
+                context=context)
+        res = invoice_obj.get_reconcile_lines_for_amount(cursor, user, invoice,
+                amount)
+        if res[1] == Decimal('0.0'):
+            return 'pay'
+        return 'ask'
+
+    def _ask(self, cursor, user, data, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+        currency_obj = self.pool.get('currency.currency')
+
+        res = {}
+        invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
+        res['lines_to_pay'] = str(
+                [x.id for x in invoice.lines_to_pay if not x.reconciliation] + \
+                [x.id for x in invoice.payment_lines if not x.reconciliation])
+
+        res['amount'] = data['form']['amount']
+        res['currency'] = data['form']['currency']
+        res['currency_digits'] = data['form']['currency_digits']
+        res['description'] = data['form']['description']
+        res['journal'] = data['form']['journal']
+        res['date'] = data['form']['date']
+        res['company'] = invoice.company.id
+        amount = currency_obj.compute(cursor, user, data['form']['currency'],
+                data['form']['amount'], invoice.company.currency,
+                context=context)
+        res['lines'] = invoice_obj.get_reconcile_lines_for_amount(cursor, user, invoice,
+                amount)[0]
+        return res
+
+    def _action_pay(self, cursor, user, data, context=None):
+        invoice_obj = self.pool.get('account.invoice')
+        currency_obj = self.pool.get('currency.currency')
+        move_line_obj = self.pool.get('account.move.line')
+
+        invoice = invoice_obj.browse(cursor, user, data['id'], context=context)
+
+        ctx = context.copy()
+        ctx['date'] = data['form']['date']
+        amount = currency_obj.compute(cursor, user, data['form']['currency'],
+                data['form']['amount'], invoice.company.currency,
+                context=context)
+
+        reconcile_lines = invoice_obj.get_reconcile_lines_for_amount(cursor,
+                user, invoice, amount)
+
+        amount_second_currency = False
+        second_currency = False
+        if data['form']['currency'] != invoice.company.currency.id:
+            amount_second_currency = data['form']['amount']
+            second_currency = data['form']['currency']
+
+        line_id = invoice_obj.pay_invoice(cursor, user, data['id'], amount,
+                data['form']['journal'], data['form']['date'],
+                data['form']['description'], amount_second_currency,
+                second_currency, context=context)
+
+        if reconcile_lines[1] != Decimal('0.0'):
+            if data['form'].get('type') == 'writeoff':
+                line_ids = [line_id] + data['form']['lines'][0][1]
+                move_line_obj.reconcile(cursor, user, line_ids,
+                        journal_id=data['form']['journal_writeoff'],
+                        date=data['form']['date'],
+                        account_id=data['form']['account_writeoff'],
+                        context=context)
+        else:
+            line_ids = reconcile_lines[0] + [line_id]
+            move_line_obj.reconcile(cursor, user, line_ids, context=context)
+        return {}
+
+PayInvoice()
+
+
+class CreditInvoiceInit(WizardOSV):
+    _name = 'account.invoice.credit_invoice.init'
+
+CreditInvoiceInit()
+
+
+class CreditInvoice(Wizard):
+    'Credit Invoice'
+    _name = 'account.invoice.credit_invoice'
+    states = {
+        'init': {
+            'result': {
+                'type': 'form',
+                'object': 'account.invoice.credit_invoice.init',
+                'state': [
+                    ('end', 'Cancel', 'tryton-cancel'),
+                    ('credit', 'Credit', 'tryton-ok', True),
+                ],
+            }
+        },
+        'credit': {
+            'result': {
+                'type': 'action',
+                'action': '_action_credit',
+                'state': 'end',
+            },
+        },
+    }
+
+    def _action_credit(self, cursor, user, data, context=None):
+        model_data_obj = self.pool.get('ir.model.data')
+        act_window_obj = self.pool.get('ir.action.act_window')
+        invoice_obj = self.pool.get('account.invoice')
+
+        invoice_ids = invoice_obj.credit(cursor, user, data['ids'],
+                context=context)
+
+        model_data_ids = model_data_obj.search(cursor, user, [
+            ('fs_id', '=', 'act_invoice_form'),
+            ('module', '=', 'account_invoice'),
+            ('inherit', '=', False),
+            ], limit=1, context=context)
+        model_data = model_data_obj.browse(cursor, user, model_data_ids[0],
+                context=context)
+        res = act_window_obj.read(cursor, user, model_data.db_id, context=context)
+        res['res_id'] = invoice_ids
+        if len(invoice_ids) == 1:
+            res['views'].reverse()
+        return res
+
+CreditInvoice()
diff --git a/invoice.xml b/invoice.xml
new file mode 100644
index 0000000..876bd36
--- /dev/null
+++ b/invoice.xml
@@ -0,0 +1,872 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tryton>
+    <data>
+        <menuitem name="Invoices" parent="account.menu_account_configuration"
+            id="menu_invoices_configuration"/>
+        <menuitem name="Invoices" parent="account.menu_account"
+            id="menu_invoices" sequence="20"/>
+
+        <record model="ir.ui.view" id="payment_term_view_form">
+            <field name="model">account.invoice.payment_term</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Payment Term">
+                    <label name="name"/>
+                    <field name="name"/>
+                    <label name="active"/>
+                    <field name="active" xexpand="0" width="100"/>
+                    <field name="description" colspan="4"/>
+                    <field name="lines" colspan="4">
+                        <tree string="Payment Term Line" sequence="sequence">
+                            <field name="type"/>
+                            <field name="percent"/>
+                            <field name="amount"/>
+                            <field name="currency"/>
+                            <field name="days"/>
+                            <field name="delay"/>
+                            <field name="sequence" tree_invisible="1"/>
+                            <field name="currency_digits" tree_invisible="1"/>
+                        </tree>
+                        <form string="Payment Term Lines">
+                            <label name="type"/>
+                            <field name="type"/>
+                            <group col="1">
+                                <label name="percent" fill="1" xexpand="1" expand="1"/>
+                                <label name="amount" fill="1" xexpand="1" expand="1"/>
+                            </group>
+                            <group col="3">
+                                <field name="percent" colspan="3"/>
+                                <field name="amount"/>
+                                <label name="currency"/>
+                                <field name="currency"/>
+                            </group>
+                            <label name="days"/>
+                            <field name="days"/>
+                            <label name="delay"/>
+                            <field name="delay"/>
+                            <field name="currency_digits" invisible="1"/>
+                        </form>
+                    </field>
+                </form>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="payment_term_view_tree">
+            <field name="model">account.invoice.payment_term</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Payment Terms">
+                    <field name="name" select="1"/>
+                    <field name="active" select="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.action.act_window" id="act_payment_term_form">
+            <field name="name">Payment Terms</field>
+            <field name="res_model">account.invoice.payment_term</field>
+            <field name="view_type">form</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_payment_term_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="payment_term_view_tree"/>
+            <field name="act_window" ref="act_payment_term_form"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_payment_term_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="payment_term_view_form"/>
+            <field name="act_window" ref="act_payment_term_form"/>
+        </record>
+        <record model="ir.model.access" id="access_payment_term">
+            <field name="model" search="[('model', '=', 'account.invoice.payment_term')]"/>
+            <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_payment_term_account_admin">
+            <field name="model" search="[('model', '=', 'account.invoice.payment_term')]"/>
+            <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.model.access" id="access_payment_term_line">
+            <field name="model" search="[('model', '=', 'account.invoice.payment_term.line')]"/>
+            <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_payment_term_line_account_admin">
+            <field name="model"
+                search="[('model', '=', 'account.invoice.payment_term.line')]"/>
+            <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>
+
+        <menuitem parent="menu_invoices_configuration" action="act_payment_term_form"
+            id="menu_payment_term_form"/>
+
+        <record model="account.invoice.payment_term.line.type"
+            id="payment_term_line_type_fixed">
+            <field name="name">Fixed</field>
+            <field name="code">fixed</field>
+        </record>
+        <record model="account.invoice.payment_term.line.type"
+            id="payment_term_line_type_percent">
+            <field name="name">Percent</field>
+            <field name="code">percent</field>
+        </record>
+        <record model="account.invoice.payment_term.line.type"
+            id="payment_term_line_type_remainder">
+            <field name="name">Remainder</field>
+            <field name="code">remainder</field>
+        </record>
+
+        <record model="account.invoice.payment_term.line.delay"
+            id="payment_term_line_delay_net_days">
+            <field name="name">Net Days</field>
+            <field name="code">net_days</field>
+        </record>
+        <record model="account.invoice.payment_term.line.delay"
+            id="payment_term_line_delay_end_month">
+            <field name="name">End Month</field>
+            <field name="code">end_month</field>
+        </record>
+        <record model="ir.model.access" id="access_payment_term_line_type">
+            <field name="model"
+                search="[('model', '=', 'account.invoice.payment_term.line.type')]"/>
+            <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.action.wizard" id="wizard_pay_invoice">
+            <field name="name">Pay Invoice</field>
+            <field name="wiz_name">account.invoice.pay_invoice</field>
+            <field name="model">account.invoice</field>
+        </record>
+
+        <record model="ir.ui.view" id="invoice_view_form">
+            <field name="model">account.invoice</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Invoice" col="6" cursor="party">
+                    <label name="type"/>
+                    <field name="type"/>
+                    <label name="journal"/>
+                    <field name="journal"/>
+                    <label name="number"/>
+                    <field name="number"/>
+                    <label name="party"/>
+                    <field name="party"/>
+                    <label name="invoice_address"/>
+                    <field name="invoice_address"/>
+                    <newline/>
+                    <label name="description"/>
+                    <field name="description" colspan="3"/>
+                    <label name="reference"/>
+                    <field name="reference"/>
+                    <notebook colspan="6">
+                        <page string="Invoice">
+                            <label name="invoice_date"/>
+                            <field name="invoice_date"/>
+                            <label name="payment_term"/>
+                            <field name="payment_term"/>
+                            <label name="account"/>
+                            <field name="account"/>
+                            <label name="currency"/>
+                            <field name="currency"/>
+                            <field name="lines" colspan="4">
+                                <tree string="Lines" sequence="sequence" fill="1">
+                                    <field name="type"/>
+                                    <field name="product"/>
+                                    <field name="account" tree_invisible="1"/>
+                                    <field name="description"/>
+                                    <field name="quantity"/>
+                                    <field name="unit"/>
+                                    <field name="unit_price"/>
+                                    <field name="taxes"/>
+                                    <field name="amount"/>
+                                    <field name="sequence" tree_invisible="1"/>
+                                    <field name="unit_digits" tree_invisible="1"/>
+                                </tree>
+                            </field>
+                            <group col="1" colspan="2">
+                                <field name="taxes">
+                                    <tree string="Taxes" sequence="sequence">
+                                        <field name="description"/>
+                                        <field name="base"/>
+                                        <field name="amount"/>
+                                        <field name="sequence" tree_invisible="1"/>
+                                        <field name="manual" tree_invisible="1"/>
+                                        <field name="base_code" tree_invisible="1"/>
+                                        <field name="base_sign" tree_invisible="1"/>
+                                        <field name="tax_code" tree_invisible="1"/>
+                                        <field name="tax_sign" tree_invisible="1"/>
+                                        <field name="account" tree_invisible="1"/>
+                                    </tree>
+                                </field>
+                            </group>
+                            <group col="2" colspan="2">
+                                <label name="untaxed_amount"/>
+                                <field name="untaxed_amount"/>
+                                <label name="tax_amount"/>
+                                <field name="tax_amount"/>
+                                <label name="total_amount"/>
+                                <field name="total_amount"/>
+                                <group col="4" colspan="2">
+                                    <label name="reconciled"/>
+                                    <field name="reconciled" xexpand="0"/>
+                                    <label name="state"/>
+                                    <field name="state"/>
+                                </group>
+                                <group col="5" colspan="2">
+                                    <button name="cancel" string="_Cancel"
+                                        states="{'invisible': '''state not in ('draft', 'proforma') ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
+                                        icon="tryton-cancel"/>
+                                    <button name="button_draft" string="_Reset to Draft"
+                                        type="object"
+                                        states="{'invisible': '''state != 'cancel' '''}"
+                                        icon="tryton-clear"/>
+                                    <button name="draft" string="_Draft"
+                                        states="{'invisible': '''state != 'proforma' '''}"
+                                        icon="tryton-clear"/>
+                                    <button name="proforma" string="Pro For_ma"
+                                        states="{'invisible': '''state != 'draft' '''}"
+                                        icon="tryton-go-next"/>
+                                    <button name="open" string="_Open"
+                                        states="{'invisible': '''state not in ('draft', 'proforma') ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
+                                        icon="tryton-ok"/>
+                                    <button name="%(wizard_pay_invoice)d" string="_Pay"
+                                        type="action"
+                                        states="{'invisible': '''state != 'open' ''', 'readonly': ''' %(account.group_account)d not in groups '''}"
+                                        icon="tryton-go-next"/>
+                                </group>
+                            </group>
+                        </page>
+                        <page string="Other Info">
+                            <label name="company"/>
+                            <field name="company"/>
+                            <label name="move"/>
+                            <field name="move"/>
+                            <label name="invoice_report"/>
+                            <field name="invoice_report"/>
+                            <separator name="comment" colspan="4"/>
+                            <field name="comment" colspan="4"/>
+                        </page>
+                        <page string="Payment">
+                            <label name="amount_to_pay_today"/>
+                            <field name="amount_to_pay_today"/>
+                            <label name="amount_to_pay"/>
+                            <field name="amount_to_pay"/>
+                            <separator name="payment_lines" colspan="4"/>
+                            <field name="payment_lines" colspan="4">
+                                <tree string="Payment Lines">
+                                    <field name="date"/>
+                                    <field name="debit" sum="Debit"/>
+                                    <field name="credit" sum="Credit"/>
+                                    <field name="amount_second_currency"
+                                        sum="Amount Second Currency"/>
+                                    <field name="second_currency"/>
+                                    <field name="currency_digits" tree_invisible="1"/>
+                                    <field name="second_currency_digits" tree_invisible="1"/>
+                                </tree>
+                            </field>
+                        </page>
+                    </notebook>
+                    <field name="currency_digits" invisible="1" colspan="6"/>
+                </form>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="invoice_view_tree">
+            <field name="model">account.invoice</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Invoices">
+                    <field name="type" select="2"/>
+                    <field name="number" select="1"/>
+                    <field name="invoice_date" select="2"/>
+                    <field name="party" select="1"/>
+                    <field name="currency" select="2"/>
+                    <field name="untaxed_amount" select="2"/>
+                    <field name="tax_amount" select="2"/>
+                    <field name="total_amount" select="2"/>
+                    <field name="state" select="1"/>
+                    <field name="amount_to_pay_today"/>
+                    <field name="description" select="2"/>
+                    <field name="currency_digits" tree_invisible="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.action.act_window" id="act_invoice_form">
+            <field name="name">All Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_form"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_form"/>
+        </record>
+        <menuitem parent="menu_invoices" action="act_invoice_form"
+            id="menu_invoice_form" sequence="5"/>
+
+        <record model="ir.action.act_window" id="act_invoice_out_invoice_form">
+            <field name="name">Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_invoice')]</field>
+            <field name="context">{'type': 'out_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_invoice_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_invoice_form"/>
+        </record>
+        <menuitem parent="menu_invoices" action="act_invoice_out_invoice_form"
+            id="menu_invoice_out_invoice_form" sequence="1"/>
+
+        <record model="ir.action.act_window" id="act_invoice_out_credit_note_form">
+            <field name="name">Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'out_credit_note')]</field>
+            <field name="context">{'type': 'out_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_out_credit_note_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_out_credit_note_form"/>
+        </record>
+        <menuitem parent="menu_invoices" action="act_invoice_out_credit_note_form"
+            id="menu_invoice_out_credit_note_form" sequence="2"/>
+
+        <record model="ir.action.act_window" id="act_invoice_in_invoice_form">
+            <field name="name">Supplier Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_invoice')]</field>
+            <field name="context">{'type': 'in_invoice'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_invoice_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_invoice_form"/>
+        </record>
+        <menuitem parent="menu_invoices" action="act_invoice_in_invoice_form"
+            id="menu_invoice_in_invoice_form" sequence="3"/>
+
+        <record model="ir.action.act_window" id="act_invoice_in_credit_note_form">
+            <field name="name">Supplier Credit Notes</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type', '=', 'in_credit_note')]</field>
+            <field name="context">{'type': 'in_credit_note'}</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="invoice_view_tree"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_invoice_in_credit_note_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="invoice_view_form"/>
+            <field name="act_window" ref="act_invoice_in_credit_note_form"/>
+        </record>
+        <menuitem parent="menu_invoices" action="act_invoice_in_credit_note_form"
+            id="menu_invoice_in_credit_note_form" sequence="4"/>
+
+        <record model="ir.model.access" id="access_invoice">
+            <field name="model" search="[('model', '=', 'account.invoice')]"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="False"/>
+            <field name="perm_create" eval="True"/>
+            <field name="perm_delete" eval="False"/>
+        </record>
+        <record model="ir.model.access" id="access_invoice_account">
+            <field name="model" search="[('model', '=', 'account.invoice')]"/>
+            <field name="group" ref="account.group_account"/>
+            <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.action.report" id="report_invoice">
+            <field name="name">Invoice</field>
+            <field name="model">account.invoice</field>
+            <field name="report_name">account.invoice</field>
+            <field name="report">account_invoice/invoice.odt</field>
+            <field name="style">company/header_A4.odt</field>
+        </record>
+        <record model="ir.sequence.type" id="sequence_type_account_invoice">
+            <field name="name">Invoice</field>
+            <field name="code">account.invoice</field>
+        </record>
+        <record model="workflow" id="invoice_workflow">
+            <field name="name">Invoice workflow</field>
+            <field name="osv">account.invoice</field>
+            <field name="on_create" eval="True"/>
+        </record>
+        <record model="workflow.activity" id="invoice_activity_draft">
+            <field name="name">Draft</field>
+            <field name="workflow" ref="invoice_workflow"/>
+            <field name="kind">function</field>
+            <field name="action">write({'state': 'draft'})</field>
+            <field name="flow_start" eval="True"/>
+        </record>
+        <record model="workflow.activity" id="invoice_activity_proforma">
+            <field name="name">Pro forma</field>
+            <field name="workflow" ref="invoice_workflow"/>
+            <field name="kind">function</field>
+            <field name="action">write({'state': 'proforma'})</field>
+        </record>
+        <record model="workflow.activity" id="invoice_activity_open">
+            <field name="name">Open</field>
+            <field name="workflow" ref="invoice_workflow"/>
+            <field name="kind">function</field>
+            <field name="action">set_number()
create_move()
write({'state': 'open'})
print_invoice()</field>
+        </record>
+        <record model="workflow.activity" id="invoice_activity_paid">
+            <field name="name">Paid</field>
+            <field name="workflow" ref="invoice_workflow"/>
+            <field name="kind">function</field>
+            <field name="action">write({'state': 'paid'})</field>
+            <field name="flow_stop" eval="True"/>
+        </record>
+        <record model="workflow.activity" id="invoice_activity_cancel">
+            <field name="name">Cancel</field>
+            <field name="workflow" ref="invoice_workflow"/>
+            <field name="kind">function</field>
+            <field name="action">write({'state': 'cancel'})</field>
+            <field name="flow_stop" eval="True"/>
+        </record>
+        <record model="workflow.transition" id="invoice_transition_draft_proforma">
+            <field name="act_from" ref="invoice_activity_draft"/>
+            <field name="act_to" ref="invoice_activity_proforma"/>
+            <field name="signal">proforma</field>
+        </record>
+        <record model="workflow.transition" id="invoice_transition_proforma_draft">
+            <field name="act_from" ref="invoice_activity_proforma"/>
+            <field name="act_to" ref="invoice_activity_draft"/>
+            <field name="signal">draft</field>
+        </record>
+        <record model="workflow.transition" id="invoice_transition_draft_open">
+            <field name="act_from" ref="invoice_activity_draft"/>
+            <field name="act_to" ref="invoice_activity_open"/>
+            <field name="signal">open</field>
+            <field name="group" ref="account.group_account"/>
+        </record>
+        <record model="workflow.transition" id="invoice_transition_proforma_open">
+            <field name="act_from" ref="invoice_activity_proforma"/>
+            <field name="act_to" ref="invoice_activity_open"/>
+            <field name="signal">open</field>
+            <field name="group" ref="account.group_account"/>
+        </record>
+        <record model="workflow.transition" id="invoice_transition_open_paid">
+            <field name="act_from" ref="invoice_activity_open"/>
+            <field name="act_to" ref="invoice_activity_paid"/>
+            <field name="trigger_model">account.move.line</field>
+            <field name="trigger_expr_id">[x.id for x in lines_to_pay]</field>
+            <field name="condition">reconciled</field>
+        </record>
+        <record model="workflow.transition" id="invoice_transition_draft_cancel">
+            <field name="act_from" ref="invoice_activity_draft"/>
+            <field name="act_to" ref="invoice_activity_cancel"/>
+            <field name="signal">cancel</field>
+            <field name="group" ref="account.group_account"/>
+        </record>
+        <record model="workflow.transition" id="invoice_transition_proforma_cancel">
+            <field name="act_from" ref="invoice_activity_proforma"/>
+            <field name="act_to" ref="invoice_activity_cancel"/>
+            <field name="signal">cancel</field>
+            <field name="group" ref="account.group_account"/>
+        </record>
+
+        <record model="ir.ui.view" id="invoice_line_view_form">
+            <field name="model">account.invoice.line</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Invoice Line" cursor="product">
+                    <label name="invoice"/>
+                    <field name="invoice" colspan="3"/>
+                    <label name="type"/>
+                    <field name="type"/>
+                    <label name="sequence"/>
+                    <field name="sequence"/>
+                    <label name="product"/>
+                    <field name="product"/>
+                    <label name="account"/>
+                    <field name="account"/>
+                    <label name="description"/>
+                    <field name="description" colspan="3"/>
+                    <label name="quantity"/>
+                    <field name="quantity"/>
+                    <label name="unit"/>
+                    <field name="unit"/>
+                    <label name="unit_price"/>
+                    <field name="unit_price"/>
+                    <label name="amount"/>
+                    <field name="amount"/>
+                    <separator name="taxes" colspan="4"/>
+                    <field name="taxes" colspan="4"/>
+                    <field name="unit_digits" invisible="1"/>
+                </form>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="invoice_line_view_tree">
+            <field name="model">account.invoice.line</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Invoice Lines">
+                    <field name="invoice" select="1"/>
+                    <field name="type" select="1"/>
+                    <field name="product" select="1"/>
+                    <field name="account" select="2"/>
+                    <field name="description" select="1"/>
+                    <field name="quantity" select="2"/>
+                    <field name="unit" select="2"/>
+                    <field name="unit_price" select="2"/>
+                    <field name="taxes"/>
+                    <field name="amount"/>
+                    <field name="unit_digits" tree_invisible="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.model.access" id="access_invoice_line">
+            <field name="model" search="[('model', '=', 'account.invoice.line')]"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="False"/>
+            <field name="perm_create" eval="True"/>
+            <field name="perm_delete" eval="False"/>
+        </record>
+        <record model="ir.model.access" id="access_invoice_line_account">
+            <field name="model" search="[('model', '=', 'account.invoice.line')]"/>
+            <field name="group" ref="account.group_account"/>
+            <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="invoice_tax_view_form">
+            <field name="model">account.invoice.tax</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Invoice Tax">
+                    <label name="invoice"/>
+                    <field name="invoice" colspan="3"/>
+                    <label name="description"/>
+                    <field name="description"/>
+                    <label name="sequence"/>
+                    <field name="sequence"/>
+                    <label name="account"/>
+                    <field name="account"/>
+                    <label name="manual"/>
+                    <field name="manual"/>
+                    <group col="6" colspan="4" string="Tax Code">
+                        <label name="amount"/>
+                        <field name="amount"/>
+                        <label name="tax_code"/>
+                        <field name="tax_code"/>
+                        <label name="tax_sign"/>
+                        <field name="tax_sign"/>
+                        <label name="base"/>
+                        <field name="base"/>
+                        <label name="base_code"/>
+                        <field name="base_code"/>
+                        <label name="base_sign"/>
+                        <field name="base_sign"/>
+                    </group>
+                </form>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="invoice_tax_view_tree">
+            <field name="model">account.invoice.tax</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Invoice Taxes">
+                    <field name="invoice" select="1"/>
+                    <field name="description" select="1"/>
+                    <field name="account" select="1"/>
+                    <field name="manual" select="2"/>
+                    <field name="base"/>
+                    <field name="amount"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.model.access" id="access_invoice_tax">
+            <field name="model" search="[('model', '=', 'account.invoice.tax')]"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="False"/>
+            <field name="perm_create" eval="True"/>
+            <field name="perm_delete" eval="False"/>
+        </record>
+        <record model="ir.model.access" id="access_invoice_tax_account">
+            <field name="model" search="[('model', '=', 'account.invoice.tax')]"/>
+            <field name="group" ref="account.group_account"/>
+            <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="address_view_tree">
+            <field name="model">party.address</field>
+            <field name="inherit" ref="party.address_view_tree"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/tree/field[@name="active"]" position="after">
+                        <field name="invoice" select="2"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="address_view_form">
+            <field name="model">party.address</field>
+            <field name="inherit" ref="party.address_view_form"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/form/group/field[@name="active"]"
+                        position="after">
+                        <label name="invoice"/>
+                        <field name="invoice" xexpand="0" width="25"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="party_view_form">
+            <field name="model">party.party</field>
+            <field name="inherit" ref="party.party_view_form"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/form/notebook/page[@string="_Accounting"]/field[@name="vat_number"]"
+                        position="after">
+                        <separator string="Payment Terms" colspan="4"/>
+                        <label name="payment_term"/>
+                        <field name="payment_term"/>
+                        <label name="supplier_payment_term"/>
+                        <field name="supplier_payment_term"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="fiscalyear_view_form">
+            <field name="model">account.fiscalyear</field>
+            <field name="inherit" ref="account.fiscalyear_view_form"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/form/notebook/page[@string="Sequences"]/field[@name="post_move_sequence"]"
+                        position="after">
+                        <newline/>
+                        <label name="out_invoice_sequence"/>
+                        <field name="out_invoice_sequence"/>
+                        <label name="in_invoice_sequence"/>
+                        <field name="in_invoice_sequence"/>
+                        <label name="out_credit_note_sequence"/>
+                        <field name="out_credit_note_sequence"/>
+                        <label name="in_credit_note_sequence"/>
+                        <field name="in_credit_note_sequence"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="period_view_form">
+            <field name="model">account.period</field>
+            <field name="inherit" ref="account.period_view_form"/>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <data>
+                    <xpath
+                        expr="/form/field[@name="post_move_sequence"]"
+                        position="after">
+                        <newline/>
+                        <label name="out_invoice_sequence"/>
+                        <field name="out_invoice_sequence"/>
+                        <label name="in_invoice_sequence"/>
+                        <field name="in_invoice_sequence"/>
+                        <label name="out_credit_note_sequence"/>
+                        <field name="out_credit_note_sequence"/>
+                        <label name="in_credit_note_sequence"/>
+                        <field name="in_credit_note_sequence"/>
+                    </xpath>
+                </data>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="pay_invoice_init_view_form">
+            <field name="model">account.invoice.pay_invoice.init</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Pay Invoice">
+                    <label name="amount"/>
+                    <field name="amount"/>
+                    <label name="currency"/>
+                    <field name="currency"/>
+                    <label name="description"/>
+                    <field name="description" colspan="3"/>
+                    <label name="journal"/>
+                    <field name="journal"/>
+                    <label name="date"/>
+                    <field name="date"/>
+                    <field name="currency_digits" colspan="4" invisible="1"/>
+                </form>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="pay_invoice_ask_view_form">
+            <field name="model">account.invoice.pay_invoice.ask</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Pay Invoice">
+                    <label name="type"/>
+                    <field name="type" colspan="3"/>
+                    <label name="journal_writeoff"/>
+                    <field name="journal_writeoff"/>
+                    <label name="account_writeoff"/>
+                    <field name="account_writeoff"/>
+                    <label name="amount"/>
+                    <field name="amount"/>
+                    <label name="currency"/>
+                    <field name="currency"/>
+                    <separator name="lines" colspan="4"/>
+                    <field name="lines" colspan="4" widget="many2many">
+                        <tree string="Lines to Pay">
+                            <field name="maturity_date"/>
+                            <field name="debit" sum="Debit"/>
+                            <field name="credit" sum="Credit"/>
+                            <field name="amount_second_currency" sum="Amount Second Currency"/>
+                            <field name="second_currency"/>
+                            <field name="currency_digits" tree_invisible="1"/>
+                            <field name="second_currency_digits" tree_invisible="1"/>
+                        </tree>
+                    </field>
+                    <field name="lines_to_pay" colspan="4" invisible="1"/>
+                    <field name="description" colspan="4" invisible="1"/>
+                    <field name="journal" colspan="4" invisible="1"/>
+                    <field name="date" colspan="4" invisible="1"/>
+                    <field name="company" colspan="4" invisible="1"/>
+                    <field name="currency_digits" colspan="4" invisible="1"/>
+                </form>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="print_invoice_report_warning_view_form">
+            <field name="model">account.invoice.print_invoice_report.warning</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Print Invoice" col="2">
+                    <separator string="<b>Warning!</b>" colspan="2" align="0.5"/>
+                    <image name="tryton-dialog-information"/>
+                    <group col="1">
+                        <label string="You have selected more than one invoice to print."
+                            align="0.0"/>
+                        <label string="The invoices will be sent <i>directly</i> to the printer."
+                            align="0.0"/>
+                    </group>
+                </form>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.action.wizard" id="print_invoice_report">
+            <field name="name">Invoice</field>
+            <field name="wiz_name">account.invoice.print_invoice_report</field>
+            <field name="model">account.invoice</field>
+        </record>
+        <record model="ir.action.keyword" id="print_invoice_report_keyword">
+            <field name="keyword">form_print</field>
+            <field name="model">account.invoice,0</field>
+            <field name="action" ref="print_invoice_report"/>
+        </record>
+
+        <record model="ir.ui.view" id="credit_invoice_init_view_form">
+            <field name="model">account.invoice.credit_invoice.init</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Credit Invoice" col="2">
+                    <image name="tryton-dialog-information"/>
+                    <label string="Are you sure to credit those/this invoice(s)?"
+                        align="0.0"/>
+                </form>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.action.wizard" id="credit_invoice">
+            <field name="name">Credit</field>
+            <field name="wiz_name">account.invoice.credit_invoice</field>
+            <field name="model">account.invoice</field>
+        </record>
+        <record model="ir.action.keyword" id="credit_invoice_keyword">
+            <field name="keyword">form_action</field>
+            <field name="model">account.invoice,0</field>
+            <field name="action" ref="credit_invoice"/>
+        </record>
+    </data>
+</tryton>
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..861a9f5
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,5 @@
+[egg_info]
+tag_build = 
+tag_date = 0
+tag_svn_revision = 0
+
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..23fc732
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+
+from setuptools import setup, find_packages
+import re
+
+info = eval(file('__tryton__.py').read())
+
+requires = ['egenix-mx-base']
+for dep in info.get('depends', []):
+    match = re.compile(
+            '(ir|res|workflow|webdav)((\s|$|<|>|<=|>=|==|!=).*?$)').match(dep)
+    if match:
+        continue
+    else:
+        dep = 'trytond_' + dep
+    requires.append(dep)
+
+major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
+requires.append('trytond >= %s.%s' % (major_version, minor_version))
+requires.append('trytond < %s.%s' % (major_version, str(int(minor_version) + 1)))
+
+setup(name='trytond_account_invoice',
+    version=info.get('version', '0.0.1'),
+    description=info.get('description', ''),
+    author=info.get('author', ''),
+    author_email=info.get('email', ''),
+    url=info.get('website', ''),
+    package_dir={'trytond.modules.account_invoice': '.'},
+    packages=[
+        'trytond.modules.account_invoice',
+    ],
+    package_data={
+        'trytond.modules.account_invoice': info.get('xml', []) \
+                + info.get('translation', []) \
+                + ['invoice.odt'],
+    },
+    classifiers=[
+        'Development Status :: 5 - Production/Stable',
+        'Environment :: Plugins',
+        'Intended Audience :: Developers',
+        'Intended Audience :: Financial and Insurance Industry',
+        'Intended Audience :: Legal Industry',
+        'License :: OSI Approved :: GNU General Public License (GPL)',
+        'Natural Language :: English',
+        'Natural Language :: French',
+        'Natural Language :: German',
+        'Natural Language :: Spanish',
+        'Operating System :: OS Independent',
+        'Programming Language :: Python',
+        'Topic :: Office/Business',
+        'Topic :: Office/Business :: Financial :: Accounting',
+    ],
+    license='GPL-3',
+    install_requires=requires,
+)
diff --git a/trytond_account_invoice.egg-info/PKG-INFO b/trytond_account_invoice.egg-info/PKG-INFO
new file mode 100644
index 0000000..a831ae9
--- /dev/null
+++ b/trytond_account_invoice.egg-info/PKG-INFO
@@ -0,0 +1,33 @@
+Metadata-Version: 1.0
+Name: trytond-account-invoice
+Version: 1.0.0
+Summary: Financial and Accounting Module with:
+    - Payment Term
+    - Invoice / Credit Note
+    - Supplier Invoice / Supplier Credit Note
+
+With the possibilities:
+    - to follow the payment of the invoices.
+    - to define invoice sequences on fiscal year or period.
+    - to credit any invoice.
+
+Home-page: http://www.tryton.org/
+Author: B2CK
+Author-email: info at b2ck.com
+License: GPL-3
+Description: UNKNOWN
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Plugins
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Financial and Insurance Industry
+Classifier: Intended Audience :: Legal Industry
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: English
+Classifier: Natural Language :: French
+Classifier: Natural Language :: German
+Classifier: Natural Language :: Spanish
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Office/Business
+Classifier: Topic :: Office/Business :: Financial :: Accounting
diff --git a/trytond_account_invoice.egg-info/SOURCES.txt b/trytond_account_invoice.egg-info/SOURCES.txt
new file mode 100644
index 0000000..08dc178
--- /dev/null
+++ b/trytond_account_invoice.egg-info/SOURCES.txt
@@ -0,0 +1,20 @@
+CHANGELOG
+COPYRIGHT
+INSTALL
+LICENSE
+MANIFEST.in
+README
+de_DE.csv
+es_ES.csv
+fr_FR.csv
+invoice.odt
+invoice.xml
+setup.py
+./__init__.py
+./__tryton__.py
+./invoice.py
+trytond_account_invoice.egg-info/PKG-INFO
+trytond_account_invoice.egg-info/SOURCES.txt
+trytond_account_invoice.egg-info/dependency_links.txt
+trytond_account_invoice.egg-info/requires.txt
+trytond_account_invoice.egg-info/top_level.txt
\ No newline at end of file
diff --git a/trytond_account_invoice.egg-info/dependency_links.txt b/trytond_account_invoice.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/trytond_account_invoice.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/trytond_account_invoice.egg-info/requires.txt b/trytond_account_invoice.egg-info/requires.txt
new file mode 100644
index 0000000..180600d
--- /dev/null
+++ b/trytond_account_invoice.egg-info/requires.txt
@@ -0,0 +1,9 @@
+egenix-mx-base
+trytond_account
+trytond_company
+trytond_party
+trytond_product
+trytond_currency
+trytond_account_product
+trytond >= 1.0
+trytond < 1.1
\ No newline at end of file
diff --git a/trytond_account_invoice.egg-info/top_level.txt b/trytond_account_invoice.egg-info/top_level.txt
new file mode 100644
index 0000000..93df119
--- /dev/null
+++ b/trytond_account_invoice.egg-info/top_level.txt
@@ -0,0 +1 @@
+trytond
-- 
tryton-modules-account-invoice



More information about the tryton-debian-vcs mailing list