code: public int doRecordChange(FieldInfo field, int iChangeType, boolean bDisplayOption)
      { // Read a valid record
      	if ((this.getOwner().getMasterSlave() & RecordOwner.SLAVE) != 0)
      	{	// Only do this in the slave and shared code
  	        switch (iChangeType)
  	        {
  	            case DBConstants.REFRESH_TYPE:
  	            case DBConstants.ADD_TYPE:
  	                this.setTheDate();
  	                break;
  	            case DBConstants.UPDATE_TYPE:
  	                if (this.getOwner().isModified(true))
  	                {   // Don't need to set the last changed date if the record hasn't changed
  	                    this.setTheDate();
  	                    if (this.isModLockMode())
  	                        this.setTemporaryKeyField();
  	                }
  	                break; // DO NOT Reset error count!
  	            case DBConstants.AFTER_UPDATE_TYPE:
  	                this.clearTemporaryKeyField();
  	                m_iErrorCount = 0;  // Reset error count - Success
  	                break;
  	        }
      	}
          return super.doRecordChange(field, iChangeType, bDisplayOption);        // Initialize the record
      }
docs: Called when a change is the record status is about to happen/has happened.
  This method sets the field to the current time on an add or update.
  @param field If this file change is due to a field, this is the field.
  @param changeType The type of change that occurred.
  @param bDisplayOption If true, display any changes.
  @return an error code.