Really, this should be it, for the passing income.
[capital-apms-progress.git] / workflow / b-todo-task.w
blob481da51d815b7dc7bda286fdcfb7b7f0a595f2b6
1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI
2 &ANALYZE-RESUME
3 /* Connected Databases
4 */
5 &Scoped-define WINDOW-NAME CURRENT-WINDOW
6 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS B-table-Win
7 /*------------------------------------------------------------------------
9 File: workflow/b-todo-task.w
11 Description: Browser for todo tasks
13 Input Parameters:
14 <none>
16 Output Parameters:
17 <none>
19 ------------------------------------------------------------------------*/
21 CREATE WIDGET-POOL.
23 /* *************************** Definitions ************************** */
25 {inc/topic/tpflwtsk.i}
27 DEF VAR entity-type-filter AS CHAR NO-UNDO INITIAL "".
28 DEF VAR filter-status AS CHAR NO-UNDO INITIAL "TODO".
29 DEF VAR period-1 AS DATE NO-UNDO.
30 DEF VAR period-n AS DATE NO-UNDO.
31 DEF VAR key-name AS CHAR NO-UNDO.
32 DEF VAR key-value AS CHAR NO-UNDO.
34 key-name = "PersonCode".
35 {inc/username.i "key-value"}
36 FIND Usr WHERE Usr.UserName = key-value NO-LOCK.
37 key-value = STRING(Usr.PersonCode).
39 period-1 = TODAY - 360.
40 period-n = TODAY + 732.
42 DEF TEMP-TABLE TaskDue NO-UNDO
43 FIELD DueDate AS DATE
44 FIELD FlowTaskNo AS INT
45 INDEX XPKDueTasks IS UNIQUE PRIMARY DueDate FlowTaskNo.
47 /* _UIB-CODE-BLOCK-END */
48 &ANALYZE-RESUME
51 &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
53 /* ******************** Preprocessor Definitions ******************** */
55 &Scoped-define PROCEDURE-TYPE SmartBrowser
57 &Scoped-define ADM-SUPPORTED-LINKS Record-Source,Record-Target,TableIO-Target
59 /* Name of first Frame and/or Browse and/or first Query */
60 &Scoped-define FRAME-NAME F-Main
61 &Scoped-define BROWSE-NAME br_table
63 /* Internal Tables (found by Frame, Query & Browse Queries) */
64 &Scoped-define INTERNAL-TABLES TaskDue FlowTask
66 /* Define KEY-PHRASE in case it is used by any query. */
67 &Scoped-define KEY-PHRASE TRUE
69 /* Definitions for BROWSE br_table */
70 &Scoped-define FIELDS-IN-QUERY-br_table FlowTask.DueDate FlowTask.FlowTaskType FlowTask.Description FlowTask.EntityType FlowTask.EntityCode FlowTask.Priority FlowTask.ActivityStatus
71 &Scoped-define ENABLED-FIELDS-IN-QUERY-br_table
72 &Scoped-define FIELD-PAIRS-IN-QUERY-br_table
73 &Scoped-define SELF-NAME br_table
74 &Scoped-define OPEN-QUERY-br_table OPEN QUERY {&SELF-NAME} FOR EACH TaskDue, ~
75 EACH FlowTask OF TaskDue NO-LOCK ~{&SORTBY-PHRASE}.
76 &Scoped-define TABLES-IN-QUERY-br_table TaskDue FlowTask
77 &Scoped-define FIRST-TABLE-IN-QUERY-br_table TaskDue
80 /* Definitions for FRAME F-Main */
81 &Scoped-define OPEN-BROWSERS-IN-QUERY-F-Main ~
82 ~{&OPEN-QUERY-br_table}
84 /* Standard List Definitions */
85 &Scoped-Define ENABLED-OBJECTS br_table
87 /* Custom List Definitions */
88 /* List-1,List-2,List-3,List-4,List-5,List-6 */
90 /* _UIB-PREPROCESSOR-BLOCK-END */
91 &ANALYZE-RESUME
94 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Foreign Keys" B-table-Win _INLINE
95 /* Actions: ? adm/support/keyedit.w ? ? ? */
96 /* STRUCTURED-DATA
97 <KEY-OBJECT>
98 &BROWSE-NAME
99 </KEY-OBJECT>
100 <FOREIGN-KEYS>
101 Joblogno|y|y|TTPL.FlowTask.Joblogno
102 EntityCode|y|y|TTPL.FlowTask.EntityCode
103 ProjectCode|y|y|TTPL.FlowTask.EntityCode
104 TenantCode|y|y|TTPL.FlowTask.EntityCode
105 CompanyCode|y|y|TTPL.FlowTask.EntityCode
106 PropertyCode|y|y|TTPL.FlowTask.EntityCode
107 EntityType|y|y|TTPL.FlowTask.EntityType
108 PersonCode|y|y|TTPL.FlowTask.AllocatedTo
109 FlowTaskType|y|y|TTPL.FlowTask.FlowTaskType
110 </FOREIGN-KEYS>
111 <EXECUTING-CODE>
112 **************************
113 * Set attributes related to FOREIGN KEYS
115 RUN set-attribute-list (
116 'Keys-Accepted = "Joblogno,EntityCode,ProjectCode,TenantCode,CompanyCode,PropertyCode,EntityType,PersonCode,FlowTaskType",
117 Keys-Supplied = "Joblogno,EntityCode,ProjectCode,TenantCode,CompanyCode,PropertyCode,EntityType,PersonCode,FlowTaskType"':U).
119 /* Tell the ADM to use the OPEN-QUERY-CASES. */
120 &Scoped-define OPEN-QUERY-CASES RUN dispatch ('open-query-cases':U).
121 /**************************
122 </EXECUTING-CODE> */
123 /* _UIB-CODE-BLOCK-END */
124 &ANALYZE-RESUME
126 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Advanced Query Options" B-table-Win _INLINE
127 /* Actions: ? adm/support/advqedit.w ? ? ? */
128 /* STRUCTURED-DATA
129 <KEY-OBJECT>
130 &BROWSE-NAME
131 </KEY-OBJECT>
132 <SORTBY-OPTIONS>
133 Due Date|y||TTPL.FlowTask.DueDate|yes
134 Type|||TTPL.FlowTask.FlowTaskType|yes,TTPL.FlowTask.DueDate|yes
135 Entity|||TTPL.FlowTask.EntityType|yes,TTPL.FlowTask.EntityCode|yes
136 </SORTBY-OPTIONS>
137 <SORTBY-RUN-CODE>
138 ************************
139 * Set attributes related to SORTBY-OPTIONS */
140 RUN set-attribute-list (
141 'SortBy-Options = "Due Date,Type,Entity",
142 SortBy-Case = Due Date':U).
144 /* Tell the ADM to use the OPEN-QUERY-CASES. */
145 &Scoped-define OPEN-QUERY-CASES RUN dispatch ('open-query-cases':U).
147 /* This SmartObject is a valid SortBy-Target. */
148 &IF '{&user-supported-links}':U ne '':U &THEN
149 &Scoped-define user-supported-links {&user-supported-links},SortBy-Target
150 &ELSE
151 &Scoped-define user-supported-links SortBy-Target
152 &ENDIF
154 /************************
155 </SORTBY-RUN-CODE>
156 <FILTER-ATTRIBUTES>
157 </FILTER-ATTRIBUTES> */
159 /* _UIB-CODE-BLOCK-END */
160 &ANALYZE-RESUME
163 /* *********************** Control Definitions ********************** */
166 /* Definitions of the field level widgets */
167 /* Query definitions */
168 &ANALYZE-SUSPEND
169 DEFINE QUERY br_table FOR
170 TaskDue,
171 FlowTask SCROLLING.
172 &ANALYZE-RESUME
174 /* Browse definitions */
175 DEFINE BROWSE br_table
176 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS br_table B-table-Win _FREEFORM
177 QUERY br_table NO-LOCK DISPLAY
178 FlowTask.DueDate COLUMN-LABEL "Due Before"
179 FlowTask.FlowTaskType COLUMN-LABEL "Type"
180 FlowTask.Description COLUMN-LABEL "Task Description"
181 FlowTask.EntityType COLUMN-LABEL "T"
182 FlowTask.EntityCode COLUMN-LABEL " Entity"
183 FlowTask.Priority COLUMN-LABEL "Pri"
184 FlowTask.ActivityStatus
185 /* _UIB-CODE-BLOCK-END */
186 &ANALYZE-RESUME
187 WITH NO-ASSIGN SEPARATORS SIZE 74.29 BY 16.2
188 BGCOLOR 16 .
191 /* ************************ Frame Definitions *********************** */
193 DEFINE FRAME F-Main
194 br_table AT ROW 1 COL 1
195 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
196 SIDE-LABELS NO-UNDERLINE THREE-D
197 AT COL 1 ROW 1 SCROLLABLE
198 BGCOLOR 8 FGCOLOR 0 .
201 /* *********************** Procedure Settings ************************ */
203 &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
204 /* Settings for THIS-PROCEDURE
205 Type: SmartBrowser
206 Allow: Basic,Browse
207 Frames: 1
208 Add Fields to: EXTERNAL-TABLES
209 Other Settings: PERSISTENT-ONLY COMPILE
212 /* This procedure should always be RUN PERSISTENT. Report the error, */
213 /* then cleanup and return. */
214 IF NOT THIS-PROCEDURE:PERSISTENT THEN DO:
215 MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT."
216 VIEW-AS ALERT-BOX ERROR BUTTONS OK.
217 RETURN.
218 END.
220 &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
222 /* ************************* Create Window ************************** */
224 &ANALYZE-SUSPEND _CREATE-WINDOW
225 /* DESIGN Window definition (used by the UIB)
226 CREATE WINDOW B-table-Win ASSIGN
227 HEIGHT = 19.05
228 WIDTH = 84.29.
229 /* END WINDOW DEFINITION */
231 &ANALYZE-RESUME
234 /* *************** Runtime Attributes and UIB Settings ************** */
236 &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
237 /* SETTINGS FOR WINDOW B-table-Win
238 NOT-VISIBLE,,RUN-PERSISTENT */
239 /* SETTINGS FOR FRAME F-Main
240 NOT-VISIBLE Size-to-Fit */
241 /* BROWSE-TAB br_table 1 F-Main */
242 ASSIGN
243 FRAME F-Main:SCROLLABLE = FALSE
244 FRAME F-Main:HIDDEN = TRUE.
246 /* _RUN-TIME-ATTRIBUTES-END */
247 &ANALYZE-RESUME
250 /* Setting information for Queries and Browse Widgets fields */
252 &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE br_table
253 /* Query rebuild information for BROWSE br_table
254 _START_FREEFORM
255 OPEN QUERY {&SELF-NAME} FOR EACH TaskDue, EACH FlowTask OF TaskDue
256 NO-LOCK
257 ~{&SORTBY-PHRASE}.
258 _END_FREEFORM
259 _Options = "NO-LOCK KEY-PHRASE SORTBY-PHRASE"
260 _TblOptList = ", OUTER"
261 _Where[1] = "FlowTask.ActivityStatus BEGINS filter-status AND
262 FlowTask.EntityType BEGINS entity-type-filter
264 _Query is OPENED
265 */ /* BROWSE br_table */
266 &ANALYZE-RESUME
268 &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
269 /* Query rebuild information for FRAME F-Main
270 _Options = "NO-LOCK"
271 _Query is NOT OPENED
272 */ /* FRAME F-Main */
273 &ANALYZE-RESUME
278 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB B-table-Win
279 /* ************************* Included-Libraries *********************** */
281 {src/adm/method/browser.i}
282 {inc/method/m-drlvwr.i}
284 /* _UIB-CODE-BLOCK-END */
285 &ANALYZE-RESUME
290 /* ************************ Control Triggers ************************ */
292 &Scoped-define BROWSE-NAME br_table
293 &Scoped-define SELF-NAME br_table
294 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table B-table-Win
295 ON ROW-ENTRY OF br_table IN FRAME F-Main
297 /* This code displays initial values for newly added or copied rows. */
298 {src/adm/template/brsentry.i}
299 END.
301 /* _UIB-CODE-BLOCK-END */
302 &ANALYZE-RESUME
305 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table B-table-Win
306 ON ROW-LEAVE OF br_table IN FRAME F-Main
308 /* Do not disable this code or no updates will take place except
309 by pressing the Save button on an Update SmartPanel. */
310 {src/adm/template/brsleave.i}
311 END.
313 /* _UIB-CODE-BLOCK-END */
314 &ANALYZE-RESUME
317 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table B-table-Win
318 ON VALUE-CHANGED OF br_table IN FRAME F-Main
320 /* This ADM trigger code must be preserved in order to notify other
321 objects when the browser's current row changes. */
322 {src/adm/template/brschnge.i}
323 END.
325 /* _UIB-CODE-BLOCK-END */
326 &ANALYZE-RESUME
329 &UNDEFINE SELF-NAME
331 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK B-table-Win
334 /* *************************** Main Block *************************** */
336 RUN set-attribute-list( 'SortBy-Options = Due Date|Entity|Type, SortBy-Case = Due Date':U ).
337 RUN set-attribute-list( 'FilterBy-Options = All|To do|Completed, FilterBy-Case = To do':U ).
338 RUN set-attribute-list( 'SearchBy-Case = ':U ).
340 /* _UIB-CODE-BLOCK-END */
341 &ANALYZE-RESUME
344 /* ********************** Internal Procedures *********************** */
346 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-open-query-cases B-table-Win adm/support/_adm-opn.p
347 PROCEDURE adm-open-query-cases :
348 /*------------------------------------------------------------------------------
349 Purpose: Opens different cases of the query based on attributes
350 such as the 'Key-Name', or 'SortBy-Case'
351 Parameters: <none>
352 ------------------------------------------------------------------------------*/
353 DEF VAR key-value AS CHAR NO-UNDO.
355 /* Look up the current key-value. */
356 RUN get-attribute ('Key-Value':U).
357 key-value = RETURN-VALUE.
359 /* Find the current record using the current Key-Name. */
360 RUN get-attribute ('Key-Name':U).
361 CASE RETURN-VALUE:
362 WHEN 'Joblogno':U THEN DO:
363 &Scope KEY-PHRASE FlowTask.Joblogno eq INTEGER(key-value)
364 RUN get-attribute ('SortBy-Case':U).
365 CASE RETURN-VALUE:
366 WHEN 'Due Date':U THEN DO:
367 &Scope SORTBY-PHRASE BY FlowTask.DueDate
368 {&OPEN-QUERY-{&BROWSE-NAME}}
369 END.
370 WHEN 'Type':U THEN DO:
371 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
372 {&OPEN-QUERY-{&BROWSE-NAME}}
373 END.
374 WHEN 'Entity':U THEN DO:
375 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
376 {&OPEN-QUERY-{&BROWSE-NAME}}
377 END.
378 OTHERWISE DO:
379 &Undefine SORTBY-PHRASE
380 {&OPEN-QUERY-{&BROWSE-NAME}}
381 END. /* OTHERWISE...*/
382 END CASE.
383 END. /* Joblogno */
384 WHEN 'EntityCode':U THEN DO:
385 &Scope KEY-PHRASE FlowTask.EntityCode eq INTEGER(key-value)
386 RUN get-attribute ('SortBy-Case':U).
387 CASE RETURN-VALUE:
388 WHEN 'Due Date':U THEN DO:
389 &Scope SORTBY-PHRASE BY FlowTask.DueDate
390 {&OPEN-QUERY-{&BROWSE-NAME}}
391 END.
392 WHEN 'Type':U THEN DO:
393 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
394 {&OPEN-QUERY-{&BROWSE-NAME}}
395 END.
396 WHEN 'Entity':U THEN DO:
397 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
398 {&OPEN-QUERY-{&BROWSE-NAME}}
399 END.
400 OTHERWISE DO:
401 &Undefine SORTBY-PHRASE
402 {&OPEN-QUERY-{&BROWSE-NAME}}
403 END. /* OTHERWISE...*/
404 END CASE.
405 END. /* EntityCode */
406 WHEN 'ProjectCode':U THEN DO:
407 &Scope KEY-PHRASE FlowTask.EntityCode eq INTEGER(key-value)
408 RUN get-attribute ('SortBy-Case':U).
409 CASE RETURN-VALUE:
410 WHEN 'Due Date':U THEN DO:
411 &Scope SORTBY-PHRASE BY FlowTask.DueDate
412 {&OPEN-QUERY-{&BROWSE-NAME}}
413 END.
414 WHEN 'Type':U THEN DO:
415 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
416 {&OPEN-QUERY-{&BROWSE-NAME}}
417 END.
418 WHEN 'Entity':U THEN DO:
419 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
420 {&OPEN-QUERY-{&BROWSE-NAME}}
421 END.
422 OTHERWISE DO:
423 &Undefine SORTBY-PHRASE
424 {&OPEN-QUERY-{&BROWSE-NAME}}
425 END. /* OTHERWISE...*/
426 END CASE.
427 END. /* ProjectCode */
428 WHEN 'TenantCode':U THEN DO:
429 &Scope KEY-PHRASE FlowTask.EntityCode eq INTEGER(key-value)
430 RUN get-attribute ('SortBy-Case':U).
431 CASE RETURN-VALUE:
432 WHEN 'Due Date':U THEN DO:
433 &Scope SORTBY-PHRASE BY FlowTask.DueDate
434 {&OPEN-QUERY-{&BROWSE-NAME}}
435 END.
436 WHEN 'Type':U THEN DO:
437 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
438 {&OPEN-QUERY-{&BROWSE-NAME}}
439 END.
440 WHEN 'Entity':U THEN DO:
441 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
442 {&OPEN-QUERY-{&BROWSE-NAME}}
443 END.
444 OTHERWISE DO:
445 &Undefine SORTBY-PHRASE
446 {&OPEN-QUERY-{&BROWSE-NAME}}
447 END. /* OTHERWISE...*/
448 END CASE.
449 END. /* TenantCode */
450 WHEN 'CompanyCode':U THEN DO:
451 &Scope KEY-PHRASE FlowTask.EntityCode eq INTEGER(key-value)
452 RUN get-attribute ('SortBy-Case':U).
453 CASE RETURN-VALUE:
454 WHEN 'Due Date':U THEN DO:
455 &Scope SORTBY-PHRASE BY FlowTask.DueDate
456 {&OPEN-QUERY-{&BROWSE-NAME}}
457 END.
458 WHEN 'Type':U THEN DO:
459 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
460 {&OPEN-QUERY-{&BROWSE-NAME}}
461 END.
462 WHEN 'Entity':U THEN DO:
463 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
464 {&OPEN-QUERY-{&BROWSE-NAME}}
465 END.
466 OTHERWISE DO:
467 &Undefine SORTBY-PHRASE
468 {&OPEN-QUERY-{&BROWSE-NAME}}
469 END. /* OTHERWISE...*/
470 END CASE.
471 END. /* CompanyCode */
472 WHEN 'PropertyCode':U THEN DO:
473 &Scope KEY-PHRASE FlowTask.EntityCode eq INTEGER(key-value)
474 RUN get-attribute ('SortBy-Case':U).
475 CASE RETURN-VALUE:
476 WHEN 'Due Date':U THEN DO:
477 &Scope SORTBY-PHRASE BY FlowTask.DueDate
478 {&OPEN-QUERY-{&BROWSE-NAME}}
479 END.
480 WHEN 'Type':U THEN DO:
481 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
482 {&OPEN-QUERY-{&BROWSE-NAME}}
483 END.
484 WHEN 'Entity':U THEN DO:
485 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
486 {&OPEN-QUERY-{&BROWSE-NAME}}
487 END.
488 OTHERWISE DO:
489 &Undefine SORTBY-PHRASE
490 {&OPEN-QUERY-{&BROWSE-NAME}}
491 END. /* OTHERWISE...*/
492 END CASE.
493 END. /* PropertyCode */
494 WHEN 'EntityType':U THEN DO:
495 &Scope KEY-PHRASE FlowTask.EntityType eq key-value
496 RUN get-attribute ('SortBy-Case':U).
497 CASE RETURN-VALUE:
498 WHEN 'Due Date':U THEN DO:
499 &Scope SORTBY-PHRASE BY FlowTask.DueDate
500 {&OPEN-QUERY-{&BROWSE-NAME}}
501 END.
502 WHEN 'Type':U THEN DO:
503 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
504 {&OPEN-QUERY-{&BROWSE-NAME}}
505 END.
506 WHEN 'Entity':U THEN DO:
507 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
508 {&OPEN-QUERY-{&BROWSE-NAME}}
509 END.
510 OTHERWISE DO:
511 &Undefine SORTBY-PHRASE
512 {&OPEN-QUERY-{&BROWSE-NAME}}
513 END. /* OTHERWISE...*/
514 END CASE.
515 END. /* EntityType */
516 WHEN 'PersonCode':U THEN DO:
517 &Scope KEY-PHRASE FlowTask.AllocatedTo eq INTEGER(key-value)
518 RUN get-attribute ('SortBy-Case':U).
519 CASE RETURN-VALUE:
520 WHEN 'Due Date':U THEN DO:
521 &Scope SORTBY-PHRASE BY FlowTask.DueDate
522 {&OPEN-QUERY-{&BROWSE-NAME}}
523 END.
524 WHEN 'Type':U THEN DO:
525 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
526 {&OPEN-QUERY-{&BROWSE-NAME}}
527 END.
528 WHEN 'Entity':U THEN DO:
529 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
530 {&OPEN-QUERY-{&BROWSE-NAME}}
531 END.
532 OTHERWISE DO:
533 &Undefine SORTBY-PHRASE
534 {&OPEN-QUERY-{&BROWSE-NAME}}
535 END. /* OTHERWISE...*/
536 END CASE.
537 END. /* PersonCode */
538 WHEN 'FlowTaskType':U THEN DO:
539 &Scope KEY-PHRASE FlowTask.FlowTaskType eq key-value
540 RUN get-attribute ('SortBy-Case':U).
541 CASE RETURN-VALUE:
542 WHEN 'Due Date':U THEN DO:
543 &Scope SORTBY-PHRASE BY FlowTask.DueDate
544 {&OPEN-QUERY-{&BROWSE-NAME}}
545 END.
546 WHEN 'Type':U THEN DO:
547 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
548 {&OPEN-QUERY-{&BROWSE-NAME}}
549 END.
550 WHEN 'Entity':U THEN DO:
551 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
552 {&OPEN-QUERY-{&BROWSE-NAME}}
553 END.
554 OTHERWISE DO:
555 &Undefine SORTBY-PHRASE
556 {&OPEN-QUERY-{&BROWSE-NAME}}
557 END. /* OTHERWISE...*/
558 END CASE.
559 END. /* FlowTaskType */
560 OTHERWISE DO:
561 &Scope KEY-PHRASE TRUE
562 RUN get-attribute ('SortBy-Case':U).
563 CASE RETURN-VALUE:
564 WHEN 'Due Date':U THEN DO:
565 &Scope SORTBY-PHRASE BY FlowTask.DueDate
566 {&OPEN-QUERY-{&BROWSE-NAME}}
567 END.
568 WHEN 'Type':U THEN DO:
569 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
570 {&OPEN-QUERY-{&BROWSE-NAME}}
571 END.
572 WHEN 'Entity':U THEN DO:
573 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
574 {&OPEN-QUERY-{&BROWSE-NAME}}
575 END.
576 OTHERWISE DO:
577 &Undefine SORTBY-PHRASE
578 {&OPEN-QUERY-{&BROWSE-NAME}}
579 END. /* OTHERWISE...*/
580 END CASE.
581 END. /* OTHERWISE...*/
582 END CASE.
584 END PROCEDURE.
586 /* _UIB-CODE-BLOCK-END */
587 &ANALYZE-RESUME
590 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available B-table-Win _ADM-ROW-AVAILABLE
591 PROCEDURE adm-row-available :
592 /*------------------------------------------------------------------------------
593 Purpose: Dispatched to this procedure when the Record-
594 Source has a new row available. This procedure
595 tries to get the new row (or foriegn keys) from
596 the Record-Source and process it.
597 Parameters: <none>
598 ------------------------------------------------------------------------------*/
600 /* Define variables needed by this internal procedure. */
601 {src/adm/template/row-head.i}
603 /* Process the newly available records (i.e. display fields,
604 open queries, and/or pass records on to any RECORD-TARGETS). */
605 {src/adm/template/row-end.i}
607 END PROCEDURE.
609 /* _UIB-CODE-BLOCK-END */
610 &ANALYZE-RESUME
613 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE delete-current-task B-table-Win
614 PROCEDURE delete-current-task :
615 /*------------------------------------------------------------------------------
616 Purpose:
617 ------------------------------------------------------------------------------*/
618 IF NOT AVAILABLE(FlowTask) THEN RETURN.
619 DEF VAR do-it AS LOGI NO-UNDO INITIAL No.
621 MESSAGE "Are you sure you want to delete this task?" SKIP(1)
622 "All steps will also be deleted and this" SKIP
623 "action cannot be undone."
624 VIEW-AS ALERT-BOX QUESTION BUTTONS OK-CANCEL
625 TITLE "Confirm Deletion"
626 UPDATE do-it.
628 IF do-it THEN DO TRANSACTION:
629 FIND CURRENT FlowTask EXCLUSIVE-LOCK.
630 DELETE FlowTask.
631 END.
632 RUN dispatch( 'open-query':U ).
634 END PROCEDURE.
636 /* _UIB-CODE-BLOCK-END */
637 &ANALYZE-RESUME
640 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI B-table-Win _DEFAULT-DISABLE
641 PROCEDURE disable_UI :
642 /*------------------------------------------------------------------------------
643 Purpose: DISABLE the User Interface
644 Parameters: <none>
645 Notes: Here we clean-up the user-interface by deleting
646 dynamic widgets we have created and/or hide
647 frames. This procedure is usually called when
648 we are ready to "clean-up" after running.
649 ------------------------------------------------------------------------------*/
650 /* Hide all frames. */
651 HIDE FRAME F-Main.
652 IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
653 END PROCEDURE.
655 /* _UIB-CODE-BLOCK-END */
656 &ANALYZE-RESUME
659 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-open-query-cases B-table-Win
660 PROCEDURE local-open-query-cases :
661 /*------------------------------------------------------------------------------
662 Purpose: Override standard ADM method
663 Notes:
664 ------------------------------------------------------------------------------*/
666 /* Code placed here will execute PRIOR to standard behavior. */
667 FOR EACH TaskDue:
668 DELETE TaskDue.
669 END.
671 IF key-name = "PersonCode" THEN RUN tasks-one-person( INT(key-value) ).
672 ELSE IF key-name = "PropertyCode" THEN RUN tasks-one-property( INT(key-value) ).
673 ELSE RUN tasks-one-entity( entity-type-filter, key-value ).
675 /* Dispatch standard ADM method. */
676 RUN dispatch IN THIS-PROCEDURE ( INPUT 'open-query-cases':U ) .
678 /* Code placed here will execute AFTER standard behavior. */
680 END PROCEDURE.
682 /* _UIB-CODE-BLOCK-END */
683 &ANALYZE-RESUME
686 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE mark-as-completed B-table-Win
687 PROCEDURE mark-as-completed :
688 /*------------------------------------------------------------------------------
689 Purpose:
690 ------------------------------------------------------------------------------*/
691 DEF VAR due-date AS DATE NO-UNDO.
692 DEF VAR task-no AS INT NO-UNDO.
693 DEF VAR results AS CHAR NO-UNDO.
695 IF NOT AVAILABLE(FlowTask) THEN RETURN.
696 due-date = FlowTask.DueDate.
697 task-no = FlowTask.FlowTaskNo.
698 RUN workflow/update-task.p( INPUT-OUTPUT due-date, INPUT-OUTPUT task-no, "TaskDone",
699 "", OUTPUT results ).
701 {&BROWSE-NAME}:REFRESH() IN FRAME {&FRAME-NAME}.
703 END PROCEDURE.
705 /* _UIB-CODE-BLOCK-END */
706 &ANALYZE-RESUME
709 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE mark-as-todo B-table-Win
710 PROCEDURE mark-as-todo :
711 /*------------------------------------------------------------------------------
712 Purpose:
713 ------------------------------------------------------------------------------*/
714 IF NOT AVAILABLE(FlowTask) THEN RETURN.
716 DO TRANSACTION:
717 FIND CURRENT FlowTask EXCLUSIVE-LOCK NO-ERROR.
718 FOR EACH FlowStep OF FlowTask WHERE FlowStep.ActivityStatus = "DONE" EXCLUSIVE-LOCK:
719 FlowStep.ActivityStatus = "TODO".
720 FlowStep.StatusUpdateDate = TODAY.
721 END.
722 FlowTask.ActivityStatus = "TODO".
723 FlowTask.StatusUpdateDate = TODAY.
724 FIND CURRENT FlowTask NO-LOCK.
725 END.
727 {&BROWSE-NAME}:REFRESH() IN FRAME {&FRAME-NAME}.
729 END PROCEDURE.
731 /* _UIB-CODE-BLOCK-END */
732 &ANALYZE-RESUME
735 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE normal-send-key B-table-Win adm/support/_key-snd.p
736 PROCEDURE normal-send-key :
737 /*------------------------------------------------------------------------------
738 Purpose: Sends a requested KEY value back to the calling
739 SmartObject.
740 Parameters: <see adm/template/sndkytop.i>
741 ------------------------------------------------------------------------------*/
743 /* Define variables needed by this internal procedure. */
744 {src/adm/template/sndkytop.i}
746 /* Return the key value associated with each key case. */
747 {src/adm/template/sndkycas.i "Joblogno" "FlowTask" "Joblogno"}
748 {src/adm/template/sndkycas.i "EntityCode" "FlowTask" "EntityCode"}
749 {src/adm/template/sndkycas.i "ProjectCode" "FlowTask" "EntityCode"}
750 {src/adm/template/sndkycas.i "TenantCode" "FlowTask" "EntityCode"}
751 {src/adm/template/sndkycas.i "CompanyCode" "FlowTask" "EntityCode"}
752 {src/adm/template/sndkycas.i "PropertyCode" "FlowTask" "EntityCode"}
753 {src/adm/template/sndkycas.i "EntityType" "FlowTask" "EntityType"}
754 {src/adm/template/sndkycas.i "PersonCode" "FlowTask" "AllocatedTo"}
755 {src/adm/template/sndkycas.i "FlowTaskType" "FlowTask" "FlowTaskType"}
757 /* Close the CASE statement and end the procedure. */
758 {src/adm/template/sndkyend.i}
760 END PROCEDURE.
762 /* _UIB-CODE-BLOCK-END */
763 &ANALYZE-RESUME
766 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-key B-table-Win
767 PROCEDURE send-key :
768 /*------------------------------------------------------------------------------
769 Purpose:
770 ------------------------------------------------------------------------------*/
771 DEF INPUT PARAMETER in-key-name AS CHAR NO-UNDO.
772 DEF OUTPUT PARAMETER out-key-value AS CHAR NO-UNDO INITIAL ?.
774 /* complexified! */
775 /* Because the add a task viewer might request the parent keys via */
776 /* the entityType and EntityCode attributes */
777 IF in-key-name = "EntityType" THEN DO:
778 IF key-name = "PersonCode" THEN out-key-value = "Person".
779 ELSE out-key-value = entity-type-filter.
780 END.
781 ELSE IF in-key-name = "EntityCode" THEN DO:
782 IF key-name = "PersonCode" THEN out-key-value = key-value.
783 ELSE DO:
784 out-key-value = key-value.
785 IF SUBSTRING(out-key-value,1,1) = entity-type-filter THEN
786 out-key-value = SUBSTRING(out-key-value,2).
787 END.
788 END.
789 ELSE IF key-name = in-key-name AND NOT(in-key-name BEGINS "Parent") THEN
790 out-key-value = key-value.
792 IF out-key-value = ? AND AVAILABLE(FlowTask) THEN DO:
793 /* Dispatch standard ADM method. */
794 RUN normal-send-key( in-key-name, OUTPUT out-key-value ) NO-ERROR.
795 END.
797 END PROCEDURE.
799 /* _UIB-CODE-BLOCK-END */
800 &ANALYZE-RESUME
803 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records B-table-Win _ADM-SEND-RECORDS
804 PROCEDURE send-records :
805 /*------------------------------------------------------------------------------
806 Purpose: Send record ROWID's for all tables used by
807 this file.
808 Parameters: see template/snd-head.i
809 ------------------------------------------------------------------------------*/
811 /* Define variables needed by this internal procedure. */
812 {src/adm/template/snd-head.i}
814 /* For each requested table, put it's ROWID in the output list. */
815 {src/adm/template/snd-list.i "TaskDue"}
816 {src/adm/template/snd-list.i "FlowTask"}
818 /* Deal with any unexpected table requests before closing. */
819 {src/adm/template/snd-end.i}
821 END PROCEDURE.
823 /* _UIB-CODE-BLOCK-END */
824 &ANALYZE-RESUME
827 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed B-table-Win
828 PROCEDURE state-changed :
829 /* -----------------------------------------------------------
830 Purpose:
831 Parameters: <none>
832 Notes:
833 -------------------------------------------------------------*/
834 DEFINE INPUT PARAMETER p-issuer-hdl AS HANDLE NO-UNDO.
835 DEFINE INPUT PARAMETER p-state AS CHARACTER NO-UNDO.
837 CASE p-state:
838 /* Object instance CASEs can go here to replace standard behavior
839 or add new cases. */
840 {src/adm/template/bstates.i}
841 END CASE.
842 END PROCEDURE.
844 /* _UIB-CODE-BLOCK-END */
845 &ANALYZE-RESUME
848 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE tasks-one-entity B-table-Win
849 PROCEDURE tasks-one-entity :
850 /*------------------------------------------------------------------------------
851 Purpose:
852 ------------------------------------------------------------------------------*/
853 DEF INPUT PARAMETER entity-type AS CHAR NO-UNDO.
854 DEF INPUT PARAMETER entity-text AS CHAR NO-UNDO.
856 DEF VAR entity-code AS INT NO-UNDO.
858 IF SUBSTRING( entity-text, 1, 1) = entity-type THEN
859 entity-text = SUBSTRING( entity-text, 2).
861 IF SUBSTRING( entity-text, 1, 1) >= "0" AND SUBSTRING( entity-text, 1, 1) <= "9" THEN
862 entity-code = INT(entity-text).
863 ELSE DO:
864 MESSAGE "{&FILE-NAME} doesn't understand a code of" "'" + UPPER(entity-text) + "'".
865 RETURN.
866 END.
868 FOR EACH FlowTask WHERE FlowTask.ActivityStatus BEGINS filter-status
869 AND FlowTask.EntityType = entity-type
870 AND FlowTask.EntityCode = entity-code NO-LOCK:
871 IF FlowTask.DueDate < period-1 OR FlowTask.DueDate > period-n THEN NEXT.
872 IF CAN-FIND( TaskDue OF FlowTask ) THEN NEXT.
873 CREATE TaskDue.
874 TaskDue.DueDate = FlowTask.DueDate.
875 TaskDue.FlowTaskNo = FlowTask.FlowTaskNo.
876 END.
878 END PROCEDURE.
880 /* _UIB-CODE-BLOCK-END */
881 &ANALYZE-RESUME
884 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE tasks-one-person B-table-Win
885 PROCEDURE tasks-one-person :
886 /*------------------------------------------------------------------------------
887 Purpose:
888 ------------------------------------------------------------------------------*/
889 DEF INPUT PARAMETER this-person AS INT NO-UNDO.
891 FIND Person WHERE Person.PersonCode = this-person NO-LOCK NO-ERROR.
892 IF NOT AVAILABLE(Person) THEN RETURN.
894 FOR EACH FlowTask WHERE FlowTask.ActivityStatus BEGINS filter-status
895 AND FlowTask.AllocatedTo = this-person NO-LOCK:
896 IF FlowTask.DueDate < period-1 OR FlowTask.DueDate > period-n THEN NEXT.
897 IF CAN-FIND( TaskDue OF FlowTask ) THEN NEXT.
898 CREATE TaskDue.
899 TaskDue.DueDate = FlowTask.DueDate.
900 TaskDue.FlowTaskNo = FlowTask.FlowTaskNo.
901 END.
903 FOR EACH Property WHERE Property.Active AND Property.Manager = this-person NO-LOCK:
904 RUN tasks-one-property( Property.PropertyCode ).
905 END.
907 FOR EACH Property WHERE Property.Active AND Property.Administrator = this-person NO-LOCK:
908 RUN tasks-one-property( Property.PropertyCode ).
909 END.
911 END PROCEDURE.
913 /* _UIB-CODE-BLOCK-END */
914 &ANALYZE-RESUME
917 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE tasks-one-property B-table-Win
918 PROCEDURE tasks-one-property :
919 /*------------------------------------------------------------------------------
920 Purpose:
921 ------------------------------------------------------------------------------*/
922 DEF INPUT PARAMETER property-code AS INT NO-UNDO.
924 FOR EACH FlowTask WHERE FlowTask.ActivityStatus BEGINS filter-status
925 AND FlowTask.EntityType = "P"
926 AND FlowTask.EntityCode = property-code NO-LOCK:
927 IF FlowTask.DueDate < period-1 OR FlowTask.DueDate > period-n THEN NEXT.
928 IF CAN-FIND( TaskDue OF FlowTask ) THEN NEXT.
929 CREATE TaskDue.
930 TaskDue.DueDate = FlowTask.DueDate.
931 TaskDue.FlowTaskNo = FlowTask.FlowTaskNo.
932 END.
933 FOR EACH Tenant WHERE Tenant.Active AND Tenant.EntityType = "P"
934 AND Tenant.EntityCode = property-code NO-LOCK:
935 FOR EACH FlowTask WHERE FlowTask.ActivityStatus BEGINS filter-status
936 AND FlowTask.EntityType = "T"
937 AND FlowTask.EntityCode = Tenant.TenantCode NO-LOCK:
938 IF FlowTask.DueDate < period-1 OR FlowTask.DueDate > period-n THEN NEXT.
939 IF CAN-FIND( TaskDue OF FlowTask ) THEN NEXT.
940 CREATE TaskDue.
941 TaskDue.DueDate = FlowTask.DueDate.
942 TaskDue.FlowTaskNo = FlowTask.FlowTaskNo.
943 END.
944 END.
946 END PROCEDURE.
948 /* _UIB-CODE-BLOCK-END */
949 &ANALYZE-RESUME
952 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-FilterBy-Case B-table-Win
953 PROCEDURE use-FilterBy-Case :
954 /*------------------------------------------------------------------------------
955 Purpose:
956 ------------------------------------------------------------------------------*/
957 DEF INPUT PARAMETER new-filter AS CHAR NO-UNDO.
959 CASE new-filter:
960 WHEN "To Do" THEN filter-status = "TODO".
961 WHEN "Completed" THEN filter-status = "DONE".
962 OTHERWISE filter-status = "".
963 END CASE.
965 END PROCEDURE.
967 /* _UIB-CODE-BLOCK-END */
968 &ANALYZE-RESUME
971 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Key-Name B-table-Win
972 PROCEDURE use-Key-Name :
973 /*------------------------------------------------------------------------------
974 Purpose:
975 ------------------------------------------------------------------------------*/
976 DEF INPUT PARAMETER new-key-name AS CHAR NO-UNDO.
978 key-name = new-key-name.
979 IF key-name = "PersonCode" THEN period-n = TODAY + 400.
980 ELSE period-n = TODAY + 10000.
982 IF key-name = "ProjectCode" THEN entity-type-filter = "J".
983 ELSE IF key-name = "TenantCode" THEN entity-type-filter = "T".
984 ELSE IF key-name = "CompanyCode" THEN entity-type-filter = "L".
985 ELSE IF key-name = "PropertyCode" THEN entity-type-filter = "P".
986 ELSE IF key-name = "EntityCode" THEN
987 entity-type-filter = find-parent-key( "EntityType" ).
988 ELSE
989 entity-type-filter = "".
991 END PROCEDURE.
993 /* _UIB-CODE-BLOCK-END */
994 &ANALYZE-RESUME
997 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Key-Value B-table-Win
998 PROCEDURE use-Key-Value :
999 /*------------------------------------------------------------------------------
1000 Purpose:
1001 ------------------------------------------------------------------------------*/
1002 DEF INPUT PARAMETER new-key-value AS CHAR NO-UNDO.
1004 key-value = new-key-value.
1006 END PROCEDURE.
1008 /* _UIB-CODE-BLOCK-END */
1009 &ANALYZE-RESUME