Creating the cleaning entries
This function will be called automatically each day by the Job Queue, and has to create a Cleaning Entry for each room that is occupied or has not been cleaned for a week:
OnRun() CreateCleaningEntryForEachRoom;
Since our function contains an iteration through a room record set, the Main function is a single description of the iteration.
In the following function, we again describe the business logic while programming the loop. Both the functions that we call have a meaningful name:
LOCAL CreateCleaningEntryForEachRoom() WITH Room DO IF FINDSET THEN BEGIN REPEAT IF OccupiedOrHasNotBeenCleanedForAWeek(Room) THEN CreateCleaningEntryForRoom(Room); UNTIL NEXT = 0; END;
By implementing Readability and Reducing Cyclomatic Complexity, we can create code that is easy to understand by adding a function called FindLastCleaningDate
and LastWeek
:
LOCAL OccupiedOrHasNotBeenCleanedForAWeek(Room : Record "Bed and Breakfast Room") : Boolean...