1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12
3 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure
4 /*--------------------------------------------------------------------------
5 File
: workflow
/create-all-tasks.p
6 Purpose
: Create all tasks for system events if they don't already exist
15 ------------------------------------------------------------------------*/
17 DEF INPUT PARAMETER process-options
AS CHAR NO-UNDO.
19 DEF VAR w1
AS WIDGET-HANDLE NO-UNDO.
20 DEF VAR prev-window
AS WIDGET-HANDLE NO-UNDO.
23 ASSIGN TITLE = "Creating System Events"
29 prev-window
= CURRENT-WINDOW.
32 DEF VAR event-types
AS CHAR NO-UNDO INITIAL "".
34 /* _UIB-CODE-BLOCK-END
*/
38 &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
40 /* ******************** Preprocessor Definitions
******************** */
42 &Scoped-define PROCEDURE-TYPE Procedure
46 /* _UIB-PREPROCESSOR-BLOCK-END
*/
51 /* *********************** Procedure Settings
************************ */
53 &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
54 /* Settings for
THIS-PROCEDURE
58 Add Fields to
: Neither
59 Other Settings
: CODE-ONLY
COMPILE
61 &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
63 /* ************************* Create Window
************************** */
65 &ANALYZE-SUSPEND _CREATE-WINDOW
66 /* DESIGN Window definition
(used by the UIB
)
67 CREATE WINDOW Procedure
ASSIGN
70 /* END WINDOW DEFINITION
*/
76 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB Procedure
77 /* ************************* Included-Libraries
*********************** */
81 /* _UIB-CODE-BLOCK-END
*/
86 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
89 /* *************************** Main Block
*************************** */
92 RUN build-system-events.
94 /* clean up and close window
*/
95 CURRENT-WINDOW = prev-window.
98 /* _UIB-CODE-BLOCK-END
*/
102 /* ********************** Internal Procedures
*********************** */
104 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE build-lease-events Procedure
105 PROCEDURE build-lease-events
:
106 /*------------------------------------------------------------------------------
108 ------------------------------------------------------------------------------*/
109 DEF VAR due-date
AS DATE NO-UNDO.
110 DEF VAR task-no
AS INT NO-UNDO.
111 DEF VAR out-results
AS CHAR NO-UNDO.
113 FOR EACH TenancyLease
NO-LOCK:
114 FOR EACH RentReview
OF TenancyLease
NO-LOCK:
115 due-date
= RentReview.DateDue.
116 IF due-date
= ?
THEN NEXT.
117 FIND FIRST FlowTask
WHERE FlowTask.DueDate
= RentReview.DateDue
118 AND FlowTask.FlowTaskType
= "RR"
119 AND FlowTask.EntityType
= "T"
120 AND FlowTask.EntityCode
= TenancyLease.TenantCode
121 AND FlowTask.ActivityStatus
<> "DONE"
123 IF RentReview.ReviewStatus
= "DONE" AND AVAILABLE(FlowTask
) THEN DO:
124 /* mark any existing events as completed
*/
125 task-no
= FlowTask.FlowTaskNo.
126 RUN workflow
/update-task.p
( INPUT-OUTPUT due-date
, INPUT-OUTPUT task-no
,
127 "TaskDone", "", OUTPUT out-results
).
129 ELSE IF TenancyLease.LeaseStatus
<> "PAST" AND NOT AVAILABLE(FlowTask
) THEN DO:
130 /* make sure this event is set up as a FlowTask record
*/
131 RUN workflow
/update-task.p
( INPUT-OUTPUT due-date
, INPUT-OUTPUT task-no
,
132 "NewTask", "T," + STRING(TenancyLease.TenantCode
) + ",RR",
133 OUTPUT out-results
).
135 END.
/* each rent review of lease
*/
137 due-date
= TenancyLease.LeaseEndDate.
138 IF due-date
= ?
THEN NEXT.
139 FIND FIRST FlowTask
WHERE FlowTask.DueDate
= due-date
140 AND FlowTask.FlowTaskType
= "LE"
141 AND FlowTask.EntityType
= "T"
142 AND FlowTask.EntityCode
= TenancyLease.TenantCode
143 AND FlowTask.ActivityStatus
<> "DONE"
145 IF TenancyLease.LeaseStatus
= "PAST" AND AVAILABLE(FlowTask
) THEN DO:
146 task-no
= FlowTask.FlowTaskNo.
147 RUN workflow
/update-task.p
( INPUT-OUTPUT due-date
, INPUT-OUTPUT task-no
,
148 "TaskDone", "", OUTPUT out-results
).
150 ELSE IF TenancyLease.LeaseStatus
<> "PAST" AND NOT AVAILABLE(FlowTask
) THEN DO:
151 /* make sure this event is set up as a FlowTask record
*/
152 RUN workflow
/update-task.p
( INPUT-OUTPUT due-date
, INPUT-OUTPUT task-no
,
153 "NewTask", "T," + STRING(TenancyLease.TenantCode
) + ",LE",
154 OUTPUT out-results
).
160 /* _UIB-CODE-BLOCK-END
*/
164 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE build-property-events Procedure
165 PROCEDURE build-property-events
:
166 /*------------------------------------------------------------------------------
168 ------------------------------------------------------------------------------*/
169 DEF VAR due-date
AS DATE NO-UNDO.
170 DEF VAR task-no
AS INT NO-UNDO.
171 DEF VAR out-results
AS CHAR NO-UNDO.
173 FOR EACH Property
NO-LOCK:
174 FOR EACH FlowTask
WHERE FlowTask.EntityType
= "P"
175 AND FlowTask.EntityCode
= Property.PropertyCode
177 IF (FlowTask.FlowTaskType
= "WOF" AND FlowTask.DueDate
< Property.WofExpiryDate
)
178 OR NOT(Property.Active
) THEN DO:
179 task-no
= FlowTask.FlowTaskNo.
180 due-date
= FlowTask.DueDate.
181 RUN workflow
/update-task.p
( INPUT-OUTPUT due-date
, INPUT-OUTPUT task-no
,
182 "TaskDone", "", OUTPUT out-results
).
186 IF Property.Active
AND Property.WofExpiryDate
<> ?
THEN DO:
187 due-date
= Property.WofExpiryDate.
188 FIND FlowTask
WHERE FlowTask.EntityType
= "P"
189 AND FlowTask.EntityCode
= Property.PropertyCode
190 AND FlowTask.FlowTaskType
= "WOF"
191 AND FlowTask.DueDate
= due-date
NO-LOCK NO-ERROR.
192 IF NOT AVAILABLE(FlowTask
) THEN DO:
193 /* make sure this event is set up as a FlowTask record
*/
194 RUN workflow
/update-task.p
( INPUT-OUTPUT due-date
, INPUT-OUTPUT task-no
,
195 "NewTask", "P," + STRING(Property.PropertyCode
) + ",WOF",
196 OUTPUT out-results
).
200 IF Property.Active
AND Property.ReconciliationDue
<> ?
THEN DO:
201 due-date
= Property.ReconciliationDue.
202 FIND FlowTask
WHERE FlowTask.EntityType
= "P"
203 AND FlowTask.EntityCode
= Property.PropertyCode
204 AND FlowTask.FlowTaskType
= "OB"
205 AND FlowTask.DueDate
= due-date
NO-LOCK NO-ERROR.
206 IF NOT AVAILABLE(FlowTask
) THEN
207 FIND FlowTask
WHERE FlowTask.EntityType
= "P"
208 AND FlowTask.EntityCode
= Property.PropertyCode
209 AND FlowTask.FlowTaskType
= "OB"
210 AND FlowTask.DueDate
= first-of-month
(due-date
) NO-LOCK NO-ERROR.
211 IF NOT AVAILABLE(FlowTask
) THEN DO:
212 /* make sure this event is set up as a FlowTask record
*/
213 RUN workflow
/update-task.p
( INPUT-OUTPUT due-date
, INPUT-OUTPUT task-no
,
214 "NewTask", "P," + STRING(Property.PropertyCode
) + ",OB",
215 OUTPUT out-results
).
223 /* _UIB-CODE-BLOCK-END
*/
227 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE build-system-events Procedure
228 PROCEDURE build-system-events
:
229 /*------------------------------------------------------------------------------
231 ------------------------------------------------------------------------------*/
232 IF event-types
= "" OR CAN-DO( event-types
, "Lease" ) THEN RUN build-lease-events.
233 IF event-types
= "" OR CAN-DO( event-types
, "Property" ) THEN RUN build-property-events.
235 MESSAGE "System Event Update Completed".
239 /* _UIB-CODE-BLOCK-END
*/
243 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE parse-parameters Procedure
244 PROCEDURE parse-parameters
:
245 /*------------------------------------------------------------------------------
247 ------------------------------------------------------------------------------*/
248 DEF VAR token
AS CHAR NO-UNDO.
249 DEF VAR i
AS INT NO-UNDO.
250 DEF VAR n
AS INT NO-UNDO.
252 {inc
/showopts.i
"process-options"}
254 n
= NUM-ENTRIES( process-options
, "~n" ).
256 token
= ENTRY( i
, process-options
, "~n" ).
258 CASE ENTRY( 1, token
):
259 WHEN "EventTypes" THEN event-types
= SUBSTRING( token
, INDEX(token
, ",") + 1).
266 /* _UIB-CODE-BLOCK-END
*/