diff --git a/contracts/admin.py b/contracts/admin.py
index eea3864b0644b8bbe15c1a2c671d614304cfdd0e..ee23c5dbde1911d2af4ba917ade6d7f0cffacd31 100644
--- a/contracts/admin.py
+++ b/contracts/admin.py
@@ -122,11 +122,14 @@ class ContractFileAdmin(
 
 
 class ParentContractInlineMixin:
+    def get_parent_object_is_editable(self, obj):
+        return obj.is_editable_without_approve_permission
+
     def has_add_permission(self, request, obj=None):
         if (
             obj is not None
             and not request.user.has_perm("contracts.edit_when_approved")
-            and not obj.is_editable_without_approve_permission
+            and not self.get_parent_object_is_editable()
         ):
             return False
 
@@ -153,6 +156,9 @@ class ContracteeSignatureRepresentativeInline(
     extra = 1
     formset = SingnatureRepresentativeFormSet
 
+    def get_parent_object_is_editable(self, obj):
+        return obj.contract.is_editable_without_approve_permission
+
     def get_formset(self, request, obj=None, **kwargs):
         formset = super().get_formset(request, obj, **kwargs)
         formset.request = request
@@ -170,6 +176,9 @@ class ContracteeSignatureInline(ParentContractInlineMixin, NestedStackedInline):
 class SigneeSignatureRepresentativeInline(
     ParentContractInlineMixin, NestedStackedInline
 ):
+    def get_parent_object_is_editable(self, obj):
+        return obj.contract.is_editable_without_approve_permission
+
     model = SigneeSignatureRepresentative
     extra = 0