diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index 6424391b69d74ca458ed994cacfcdc413506b853..affe0d3aac583150ced99e60ab52eb1407ee8d9e 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -223,6 +223,7 @@
     <entityConsumer>
       <name>Documents</name>
       <selectionMode>MULTI</selectionMode>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/documents/stateProcess.js</stateProcess>
       <dependency>
         <name>dependency</name>
         <entityName>Document_entity</entityName>
@@ -556,6 +557,7 @@
     </entityField>
     <entityConsumer>
       <name>Attributes</name>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/attributes/stateProcess.js</stateProcess>
       <onValidation>%aditoprj%/entity/Offer_entity/entityfields/attributes/onValidation.js</onValidation>
       <dependency>
         <name>dependency</name>
diff --git a/entity/Offer_entity/entityfields/attributes/stateProcess.js b/entity/Offer_entity/entityfields/attributes/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8225159ab271d45cf061f4e302b1eac50adada28
--- /dev/null
+++ b/entity/Offer_entity/entityfields/attributes/stateProcess.js
@@ -0,0 +1,15 @@
+import("Offer_lib");
+import("Sql_lib");
+import("system.vars");
+import("system.db");
+import("system.neon");
+import("system.result");
+
+if (OfferUtils.isEditable(vars.get("$field.STATUS"))) 
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_READONLY);
+}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/documents/stateProcess.js b/entity/Offer_entity/entityfields/documents/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c5360f5be4a89227e57e90bb98bdcaed69d6786
--- /dev/null
+++ b/entity/Offer_entity/entityfields/documents/stateProcess.js
@@ -0,0 +1,14 @@
+import("system.logging");
+import("system.vars");
+import("Offer_lib");
+import("system.result");
+import("system.neon");
+
+if (OfferUtils.isEditable(vars.get("$field.STATUS"))) 
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_READONLY);
+}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/maindocuments/stateProcess.js b/entity/Offer_entity/entityfields/maindocuments/stateProcess.js
index 5c640c079ddca224a84ea8fe108d10d39d0f926c..d80ff786571df619cb3388194ac84777938acbff 100644
--- a/entity/Offer_entity/entityfields/maindocuments/stateProcess.js
+++ b/entity/Offer_entity/entityfields/maindocuments/stateProcess.js
@@ -1,14 +1,22 @@
+import("Offer_lib");
 import("system.result");
 import("system.db");
 import("system.vars");
 import("system.neon");
 import("Sql_lib");
 
-if (0 == db.getBinaryCount("OFFER", "DOCUMENT", vars.get("$sys.uid"), SqlUtils.getSystemAlias(), "MAINDOCUMENT"))
+if (OfferUtils.isEditable(vars.get("$field.STATUS"))) 
 {
-    result.string(neon.COMPONENTSTATE_INVISIBLE);
+    if (0 == db.getBinaryCount("OFFER", "DOCUMENT", vars.get("$sys.uid"), SqlUtils.getSystemAlias(), "MAINDOCUMENT"))
+    {
+        result.string(neon.COMPONENTSTATE_INVISIBLE);
+    }
+    else
+    {
+        result.string(neon.COMPONENTSTATE_EDITABLE);
+    }
 }
 else
 {
-    result.string(neon.COMPONENTSTATE_EDITABLE);
+    result.string(neon.COMPONENTSTATE_READONLY);
 }
\ No newline at end of file