diff --git a/base/src/org/compiere/acct/Doc.java b/base/src/org/compiere/acct/Doc.java index 77c3733600..ac09f2c4b7 100644 --- a/base/src/org/compiere/acct/Doc.java +++ b/base/src/org/compiere/acct/Doc.java @@ -574,6 +574,7 @@ public abstract class Doc // for all Accounting Schema boolean OK = true; + getPO().setDoc(this); try { for (int i = 0; OK && i < m_ass.length; i++) @@ -619,8 +620,7 @@ public abstract class Doc String validatorMsg = null; // Call validator on before post - if (!p_Status.equals(STATUS_Error)) { - getPO().setDoc(this); + if (!p_Status.equals(STATUS_Error)) { validatorMsg = ModelValidationEngine.get().fireDocValidate(getPO(), ModelValidator.TIMING_BEFORE_POST); if (validatorMsg != null) { p_Status = STATUS_Error; @@ -723,6 +723,14 @@ public abstract class Doc ArrayList facts = createFacts (m_ass[index]); if (facts == null) return STATUS_Error; + + // call modelValidator + String validatorMsg = ModelValidationEngine.get().fireFactsValidate(m_ass[index], facts, getPO()); + if (validatorMsg != null) { + p_Error = validatorMsg; + return STATUS_Error; + } + for (int f = 0; f < facts.size(); f++) { Fact fact = facts.get(f); diff --git a/base/src/org/compiere/model/FactsValidator.java b/base/src/org/compiere/model/FactsValidator.java new file mode 100644 index 0000000000..a3484d22fc --- /dev/null +++ b/base/src/org/compiere/model/FactsValidator.java @@ -0,0 +1,23 @@ +package org.compiere.model; + +import java.util.List; + +import org.compiere.acct.Fact; + +public interface FactsValidator { + + /** + * Get Client to be monitored + * @return AD_Client_ID + */ + public int getAD_Client_ID(); + + /** + * + * @param facts + * @param po + * @return error message or null - + * if not null, the pocument will be marked as Invalid. + */ + public String factsValidate(MAcctSchema schema, List facts, PO po); +} diff --git a/base/src/org/compiere/model/PreferenceListener.java b/base/src/org/compiere/model/PreferenceListener.java new file mode 100644 index 0000000000..19fb5ce919 --- /dev/null +++ b/base/src/org/compiere/model/PreferenceListener.java @@ -0,0 +1,12 @@ +package org.compiere.model; + +import java.util.Properties; + +public interface PreferenceListener { + + /** + * @param properties + */ + public void afterLoadPreferences(Properties properties); + +}