/*Validate Document Type compatability * @return Error message or null if valid */ public String Validate() { MDocType dt = GetDocType(); if (dt == null) { log.Log(Level.SEVERE, "No DocType=" + GetC_DocType_ID()); SetIsValid(false); return("No Document Type"); } MDocType c_dt = GetCounterDocType(); if (c_dt == null) { log.Log(Level.SEVERE, "No Counter DocType=" + GetCounter_C_DocType_ID()); SetIsValid(false); return("No Counter Document Type"); } // String dtBT = dt.GetDocBaseType(); String c_dtBT = c_dt.GetDocBaseType(); log.Fine(dtBT + " -> " + c_dtBT); // SO / PO if ((MDocBaseType.DOCBASETYPE_SALESORDER.Equals(dtBT) && MDocBaseType.DOCBASETYPE_PURCHASEORDER.Equals(c_dtBT)) || (MDocBaseType.DOCBASETYPE_SALESORDER.Equals(c_dtBT) && MDocBaseType.DOCBASETYPE_PURCHASEORDER.Equals(dtBT))) { SetIsValid(true); } // AP/AR Invoice else if ((MDocBaseType.DOCBASETYPE_APINVOICE.Equals(dtBT) && MDocBaseType.DOCBASETYPE_ARINVOICE.Equals(c_dtBT)) || (MDocBaseType.DOCBASETYPE_APINVOICE.Equals(c_dtBT) && MDocBaseType.DOCBASETYPE_ARINVOICE.Equals(dtBT))) { SetIsValid(true); } // Shipment else if ((MDocBaseType.DOCBASETYPE_MATERIALDELIVERY.Equals(dtBT) && MDocBaseType.DOCBASETYPE_MATERIALRECEIPT.Equals(c_dtBT)) || (MDocBaseType.DOCBASETYPE_MATERIALDELIVERY.Equals(c_dtBT) && MDocBaseType.DOCBASETYPE_MATERIALRECEIPT.Equals(dtBT))) { SetIsValid(true); } // AP/AR CreditMemo else if ((MDocBaseType.DOCBASETYPE_APCREDITMEMO.Equals(dtBT) && MDocBaseType.DOCBASETYPE_ARCREDITMEMO.Equals(c_dtBT)) || (MDocBaseType.DOCBASETYPE_APCREDITMEMO.Equals(c_dtBT) && MDocBaseType.DOCBASETYPE_ARCREDITMEMO.Equals(dtBT))) { SetIsValid(true); } // Receipt / Payment else if ((MDocBaseType.DOCBASETYPE_ARRECEIPT.Equals(dtBT) && MDocBaseType.DOCBASETYPE_APPAYMENT.Equals(c_dtBT)) || (MDocBaseType.DOCBASETYPE_ARRECEIPT.Equals(c_dtBT) && MDocBaseType.DOCBASETYPE_APPAYMENT.Equals(dtBT))) { SetIsValid(true); } else { log.Warning("NOT - " + dtBT + " -> " + c_dtBT); SetIsValid(false); return("Not valid"); } // Counter should have document numbering if (!c_dt.IsDocNoControlled()) { return("Counter Document Type should be automatically Document Number controlled"); } return(null); }