Setting the Required Date field on the Purchase Order to required does not stop the PO from being saved.
1. Required flag is set for a field within a particular application. This means that different applications can have this field required or not. Example: field FLD1 is set to required in application APP1 and non-required in application APP2. Mbo, which has this field, has to be rendered to invoke field validation (to check if the field has a value).
Application is a UI entity (xml, data beans) and object logic does not (and should not) check for any UI related properties since Object logic works the same way for any UI entity (including application).
Maximo Application Designer sets "required field flag" this way.
2. Required flag is set for the field on the object level. This means that this field will be validated (to check if the value is not null) every time when mbo is going to be saved. Example: field FLD1 is set to required in object OBJ1. every time that this mbo is going to be saved the field is validated as having a value.
Maximo Configuration Application sets "required field flag" this way.
Resolving the problem
The purchase order field (required date) is set to required in Application Designer for PO application. Change status is happening on the object (PO) side and doesn't validate "application required fields". This is a correct behavior since the same PO change status logic can be invoked (and it is!) from many other places, where this field can be non-required.
If we want that "required date" will be validated for a not null value then it has to be set to "required" on the object level (via Configuration Application). In this case, every time when PO is saved ("change status" logic saves the PO as well) the field will be validated for a not null value.
1. If you set field to required in Application Designer:
- the required flag is set for the particular application
- mbo has to be rendered to invoke validation logic (it is not happening when you are changing PO status)
2. If you set field to required in Configuration Application:
- the required flag is set on the object level
- every time that mbo is going to be saved the field is validated as having a value
If you want that validation happens every time when mbo is saved then set the field required flag on the object level (via Configuration Application).