diff --git a/modules/purchase/invoice.py b/modules/purchase/invoice.py
index 10e51c4f7a..90e4fa3222 100644
--- a/modules/purchase/invoice.py
+++ b/modules/purchase/invoice.py
@@ -6,7 +6,7 @@ from trytond.i18n import gettext
from trytond.model import ModelView, Workflow, fields
from trytond.model.exceptions import AccessError
from trytond.pool import Pool, PoolMeta
-from trytond.pyson import Eval
+from trytond.pyson import Bool, Eval, If
from trytond.tools import cached_property
from trytond.transaction import Transaction, without_check_access
@@ -110,6 +110,13 @@ class InvoiceLine(metaclass=PoolMeta):
cls.origin.domain = {}
cls.origin.domain['purchase.line'] = [
('type', '=', Eval('type')),
+ If(Bool(Eval('_parent_invoice')),
+ If(Eval('_parent_invoice', {}).get('type') != 'in',
+ ('id', '=', -1),
+ ()),
+ If(Eval('invoice_type') != 'in',
+ ('id', '=', -1),
+ ())),
]
@cached_property
diff --git a/modules/purchase/invoice.xml b/modules/purchase/invoice.xml
index 11ecbf138a..6c745db59d 100644
--- a/modules/purchase/invoice.xml
+++ b/modules/purchase/invoice.xml
@@ -9,7 +9,7 @@ this repository contains the full copyright notices and license terms. -->
account.invoice
account.invoice
diff --git a/modules/sale_subscription/invoice.py b/modules/sale_subscription/invoice.py
index 77e9906bd6..c5404541ee 100644
--- a/modules/sale_subscription/invoice.py
+++ b/modules/sale_subscription/invoice.py
@@ -1,11 +1,27 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool, PoolMeta
+from trytond.pyson import Bool, Eval, If
class InvoiceLine(metaclass=PoolMeta):
__name__ = 'account.invoice.line'
+ @classmethod
+ def __setup__(cls):
+ super().__setup__()
+ if not cls.origin.domain:
+ cls.origin.domain = {}
+ cls.origin.domain['sale.subscription.line'] = [
+ If(Bool(Eval('_parent_invoice')),
+ If(Eval('_parent_invoice', {}).get('type') != 'out',
+ ('id', '=', -1),
+ ()),
+ If(Eval('invoice_type') != 'out',
+ ('id', '=', -1),
+ ())),
+ ]
+
@property
def origin_name(self):
pool = Pool()
diff --git a/modules/sale_subscription/subscription.xml b/modules/sale_subscription/subscription.xml
index 7d539a6ee2..e9d7e997ef 100644
--- a/modules/sale_subscription/subscription.xml
+++ b/modules/sale_subscription/subscription.xml
@@ -218,7 +218,7 @@ this repository contains the full copyright notices and license terms. -->
account.invoice