[tryton-debian-vcs] tryton-modules-account-invoice branch upstream updated. upstream/2.8.3-1-gb8f32cb

git repository hosting tryton-debian-vcs at m9s.biz
Mon Nov 25 19:32:25 UTC 2013


The following commit has been merged in the upstream branch:
http://debian.tryton.org/gitweb/?p=packages/tryton-modules-account-invoice.git;a=commitdiff;h=upstream/2.8.3-1-gb8f32cb

commit b8f32cb57f37cf9c0c8a7865bceea2f8e0185da7
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Nov 24 17:26:21 2013 +0100

    Adding 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
-- 
tryton-modules-account-invoice



More information about the tryton-debian-vcs mailing list