1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI
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
19 ------------------------------------------------------------------------*/
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
44 FIELD FlowTaskNo
AS INT
45 INDEX XPKDueTasks
IS UNIQUE PRIMARY DueDate FlowTaskNo.
47 /* _UIB-CODE-BLOCK-END
*/
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
*/
94 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Foreign Keys" B-table-Win _INLINE
95 /* Actions
: ? adm
/support
/keyedit.w ? ? ?
*/
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
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 /**************************
123 /* _UIB-CODE-BLOCK-END
*/
126 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Advanced Query Options" B-table-Win _INLINE
127 /* Actions
: ? adm
/support
/advqedit.w ? ? ?
*/
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
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
151 &Scoped-define user-supported-links SortBy-Target
154 /************************
157 </FILTER-ATTRIBUTES
> */
159 /* _UIB-CODE-BLOCK-END
*/
163 /* *********************** Control Definitions
********************** */
166 /* Definitions of the field level widgets
*/
167 /* Query definitions
*/
169 DEFINE QUERY br_table
FOR
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
*/
187 WITH NO-ASSIGN SEPARATORS SIZE 74.29 BY 16.2
191 /* ************************ Frame Definitions
*********************** */
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
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.
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
229 /* END WINDOW DEFINITION
*/
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
*/
243 FRAME F-Main
:SCROLLABLE = FALSE
244 FRAME F-Main
:HIDDEN = TRUE.
246 /* _RUN-TIME-ATTRIBUTES-END
*/
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
255 OPEN QUERY {&SELF-NAME} FOR EACH TaskDue, EACH FlowTask OF TaskDue
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
265 */ /* BROWSE br_table
*/
268 &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
269 /* Query rebuild information for
FRAME F-Main
272 */ /* FRAME F-Main
*/
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
*/
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
}
301 /* _UIB-CODE-BLOCK-END
*/
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
}
313 /* _UIB-CODE-BLOCK-END
*/
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
}
325 /* _UIB-CODE-BLOCK-END
*/
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
*/
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'
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
).
362 WHEN 'Joblogno'
:U
THEN DO:
363 &Scope KEY-PHRASE FlowTask.Joblogno eq INTEGER(key-value)
364 RUN get-attribute
('SortBy-Case'
:U
).
366 WHEN 'Due Date'
:U
THEN DO:
367 &Scope SORTBY-PHRASE BY FlowTask.DueDate
368 {&OPEN-QUERY-{&BROWSE-NAME}}
370 WHEN 'Type'
:U
THEN DO:
371 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
372 {&OPEN-QUERY-{&BROWSE-NAME}}
374 WHEN 'Entity'
:U
THEN DO:
375 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
376 {&OPEN-QUERY-{&BROWSE-NAME}}
379 &Undefine SORTBY-PHRASE
380 {&OPEN-QUERY-{&BROWSE-NAME}}
381 END.
/* OTHERWISE...
*/
384 WHEN 'EntityCode'
:U
THEN DO:
385 &Scope KEY-PHRASE FlowTask.EntityCode eq INTEGER(key-value)
386 RUN get-attribute
('SortBy-Case'
:U
).
388 WHEN 'Due Date'
:U
THEN DO:
389 &Scope SORTBY-PHRASE BY FlowTask.DueDate
390 {&OPEN-QUERY-{&BROWSE-NAME}}
392 WHEN 'Type'
:U
THEN DO:
393 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
394 {&OPEN-QUERY-{&BROWSE-NAME}}
396 WHEN 'Entity'
:U
THEN DO:
397 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
398 {&OPEN-QUERY-{&BROWSE-NAME}}
401 &Undefine SORTBY-PHRASE
402 {&OPEN-QUERY-{&BROWSE-NAME}}
403 END.
/* OTHERWISE...
*/
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
).
410 WHEN 'Due Date'
:U
THEN DO:
411 &Scope SORTBY-PHRASE BY FlowTask.DueDate
412 {&OPEN-QUERY-{&BROWSE-NAME}}
414 WHEN 'Type'
:U
THEN DO:
415 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
416 {&OPEN-QUERY-{&BROWSE-NAME}}
418 WHEN 'Entity'
:U
THEN DO:
419 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
420 {&OPEN-QUERY-{&BROWSE-NAME}}
423 &Undefine SORTBY-PHRASE
424 {&OPEN-QUERY-{&BROWSE-NAME}}
425 END.
/* OTHERWISE...
*/
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
).
432 WHEN 'Due Date'
:U
THEN DO:
433 &Scope SORTBY-PHRASE BY FlowTask.DueDate
434 {&OPEN-QUERY-{&BROWSE-NAME}}
436 WHEN 'Type'
:U
THEN DO:
437 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
438 {&OPEN-QUERY-{&BROWSE-NAME}}
440 WHEN 'Entity'
:U
THEN DO:
441 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
442 {&OPEN-QUERY-{&BROWSE-NAME}}
445 &Undefine SORTBY-PHRASE
446 {&OPEN-QUERY-{&BROWSE-NAME}}
447 END.
/* OTHERWISE...
*/
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
).
454 WHEN 'Due Date'
:U
THEN DO:
455 &Scope SORTBY-PHRASE BY FlowTask.DueDate
456 {&OPEN-QUERY-{&BROWSE-NAME}}
458 WHEN 'Type'
:U
THEN DO:
459 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
460 {&OPEN-QUERY-{&BROWSE-NAME}}
462 WHEN 'Entity'
:U
THEN DO:
463 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
464 {&OPEN-QUERY-{&BROWSE-NAME}}
467 &Undefine SORTBY-PHRASE
468 {&OPEN-QUERY-{&BROWSE-NAME}}
469 END.
/* OTHERWISE...
*/
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
).
476 WHEN 'Due Date'
:U
THEN DO:
477 &Scope SORTBY-PHRASE BY FlowTask.DueDate
478 {&OPEN-QUERY-{&BROWSE-NAME}}
480 WHEN 'Type'
:U
THEN DO:
481 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
482 {&OPEN-QUERY-{&BROWSE-NAME}}
484 WHEN 'Entity'
:U
THEN DO:
485 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
486 {&OPEN-QUERY-{&BROWSE-NAME}}
489 &Undefine SORTBY-PHRASE
490 {&OPEN-QUERY-{&BROWSE-NAME}}
491 END.
/* OTHERWISE...
*/
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
).
498 WHEN 'Due Date'
:U
THEN DO:
499 &Scope SORTBY-PHRASE BY FlowTask.DueDate
500 {&OPEN-QUERY-{&BROWSE-NAME}}
502 WHEN 'Type'
:U
THEN DO:
503 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
504 {&OPEN-QUERY-{&BROWSE-NAME}}
506 WHEN 'Entity'
:U
THEN DO:
507 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
508 {&OPEN-QUERY-{&BROWSE-NAME}}
511 &Undefine SORTBY-PHRASE
512 {&OPEN-QUERY-{&BROWSE-NAME}}
513 END.
/* OTHERWISE...
*/
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
).
520 WHEN 'Due Date'
:U
THEN DO:
521 &Scope SORTBY-PHRASE BY FlowTask.DueDate
522 {&OPEN-QUERY-{&BROWSE-NAME}}
524 WHEN 'Type'
:U
THEN DO:
525 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
526 {&OPEN-QUERY-{&BROWSE-NAME}}
528 WHEN 'Entity'
:U
THEN DO:
529 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
530 {&OPEN-QUERY-{&BROWSE-NAME}}
533 &Undefine SORTBY-PHRASE
534 {&OPEN-QUERY-{&BROWSE-NAME}}
535 END.
/* OTHERWISE...
*/
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
).
542 WHEN 'Due Date'
:U
THEN DO:
543 &Scope SORTBY-PHRASE BY FlowTask.DueDate
544 {&OPEN-QUERY-{&BROWSE-NAME}}
546 WHEN 'Type'
:U
THEN DO:
547 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
548 {&OPEN-QUERY-{&BROWSE-NAME}}
550 WHEN 'Entity'
:U
THEN DO:
551 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
552 {&OPEN-QUERY-{&BROWSE-NAME}}
555 &Undefine SORTBY-PHRASE
556 {&OPEN-QUERY-{&BROWSE-NAME}}
557 END.
/* OTHERWISE...
*/
559 END.
/* FlowTaskType
*/
561 &Scope KEY-PHRASE TRUE
562 RUN get-attribute
('SortBy-Case'
:U
).
564 WHEN 'Due Date'
:U
THEN DO:
565 &Scope SORTBY-PHRASE BY FlowTask.DueDate
566 {&OPEN-QUERY-{&BROWSE-NAME}}
568 WHEN 'Type'
:U
THEN DO:
569 &Scope SORTBY-PHRASE BY FlowTask.FlowTaskType BY FlowTask.DueDate
570 {&OPEN-QUERY-{&BROWSE-NAME}}
572 WHEN 'Entity'
:U
THEN DO:
573 &Scope SORTBY-PHRASE BY FlowTask.EntityType BY FlowTask.EntityCode
574 {&OPEN-QUERY-{&BROWSE-NAME}}
577 &Undefine SORTBY-PHRASE
578 {&OPEN-QUERY-{&BROWSE-NAME}}
579 END.
/* OTHERWISE...
*/
581 END.
/* OTHERWISE...
*/
586 /* _UIB-CODE-BLOCK-END
*/
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.
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
}
609 /* _UIB-CODE-BLOCK-END
*/
613 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE delete-current-task B-table-Win
614 PROCEDURE delete-current-task
:
615 /*------------------------------------------------------------------------------
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"
628 IF do-it
THEN DO TRANSACTION:
629 FIND CURRENT FlowTask
EXCLUSIVE-LOCK.
632 RUN dispatch
( 'open-query'
:U
).
636 /* _UIB-CODE-BLOCK-END
*/
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
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.
*/
652 IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
655 /* _UIB-CODE-BLOCK-END
*/
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
664 ------------------------------------------------------------------------------*/
666 /* Code placed here will execute PRIOR to standard behavior.
*/
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.
*/
682 /* _UIB-CODE-BLOCK-END
*/
686 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE mark-as-completed B-table-Win
687 PROCEDURE mark-as-completed
:
688 /*------------------------------------------------------------------------------
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}.
705 /* _UIB-CODE-BLOCK-END
*/
709 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE mark-as-todo B-table-Win
710 PROCEDURE mark-as-todo
:
711 /*------------------------------------------------------------------------------
713 ------------------------------------------------------------------------------*/
714 IF NOT AVAILABLE(FlowTask
) THEN RETURN.
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.
722 FlowTask.ActivityStatus
= "TODO".
723 FlowTask.StatusUpdateDate
= TODAY.
724 FIND CURRENT FlowTask
NO-LOCK.
727 {&BROWSE-NAME}:REFRESH() IN FRAME {&FRAME-NAME}.
731 /* _UIB-CODE-BLOCK-END
*/
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
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
}
762 /* _UIB-CODE-BLOCK-END
*/
766 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-key B-table-Win
768 /*------------------------------------------------------------------------------
770 ------------------------------------------------------------------------------*/
771 DEF INPUT PARAMETER in-key-name
AS CHAR NO-UNDO.
772 DEF OUTPUT PARAMETER out-key-value
AS CHAR NO-UNDO INITIAL ?.
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.
781 ELSE IF in-key-name
= "EntityCode" THEN DO:
782 IF key-name
= "PersonCode" THEN out-key-value
= key-value.
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).
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.
799 /* _UIB-CODE-BLOCK-END
*/
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
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
}
823 /* _UIB-CODE-BLOCK-END
*/
827 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed B-table-Win
828 PROCEDURE state-changed
:
829 /* -----------------------------------------------------------
833 -------------------------------------------------------------*/
834 DEFINE INPUT PARAMETER p-issuer-hdl
AS HANDLE NO-UNDO.
835 DEFINE INPUT PARAMETER p-state
AS CHARACTER NO-UNDO.
838 /* Object instance CASEs can go here to replace standard behavior
840 {src
/adm
/template
/bstates.i
}
844 /* _UIB-CODE-BLOCK-END
*/
848 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE tasks-one-entity B-table-Win
849 PROCEDURE tasks-one-entity
:
850 /*------------------------------------------------------------------------------
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
).
864 MESSAGE "{&FILE-NAME} doesn't understand a code of" "'" + UPPER(entity-text
) + "'".
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.
874 TaskDue.DueDate
= FlowTask.DueDate.
875 TaskDue.FlowTaskNo
= FlowTask.FlowTaskNo.
880 /* _UIB-CODE-BLOCK-END
*/
884 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE tasks-one-person B-table-Win
885 PROCEDURE tasks-one-person
:
886 /*------------------------------------------------------------------------------
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.
899 TaskDue.DueDate
= FlowTask.DueDate.
900 TaskDue.FlowTaskNo
= FlowTask.FlowTaskNo.
903 FOR EACH Property
WHERE Property.Active
AND Property.Manager
= this-person
NO-LOCK:
904 RUN tasks-one-property
( Property.PropertyCode
).
907 FOR EACH Property
WHERE Property.Active
AND Property.Administrator
= this-person
NO-LOCK:
908 RUN tasks-one-property
( Property.PropertyCode
).
913 /* _UIB-CODE-BLOCK-END
*/
917 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE tasks-one-property B-table-Win
918 PROCEDURE tasks-one-property
:
919 /*------------------------------------------------------------------------------
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.
930 TaskDue.DueDate
= FlowTask.DueDate.
931 TaskDue.FlowTaskNo
= FlowTask.FlowTaskNo.
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.
941 TaskDue.DueDate
= FlowTask.DueDate.
942 TaskDue.FlowTaskNo
= FlowTask.FlowTaskNo.
948 /* _UIB-CODE-BLOCK-END
*/
952 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-FilterBy-Case B-table-Win
953 PROCEDURE use-FilterBy-Case
:
954 /*------------------------------------------------------------------------------
956 ------------------------------------------------------------------------------*/
957 DEF INPUT PARAMETER new-filter
AS CHAR NO-UNDO.
960 WHEN "To Do" THEN filter-status
= "TODO".
961 WHEN "Completed" THEN filter-status
= "DONE".
962 OTHERWISE filter-status
= "".
967 /* _UIB-CODE-BLOCK-END
*/
971 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Key-Name B-table-Win
972 PROCEDURE use-Key-Name
:
973 /*------------------------------------------------------------------------------
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" ).
989 entity-type-filter
= "".
993 /* _UIB-CODE-BLOCK-END
*/
997 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Key-Value B-table-Win
998 PROCEDURE use-Key-Value
:
999 /*------------------------------------------------------------------------------
1001 ------------------------------------------------------------------------------*/
1002 DEF INPUT PARAMETER new-key-value
AS CHAR NO-UNDO.
1004 key-value
= new-key-value.
1008 /* _UIB-CODE-BLOCK-END
*/