1 | ABSVMVV2 ;OAKLANDFO/DPC-VSS MIGRATION;7/18/2002
|
---|
2 | ;;4.0;VOLUNTARY TIMEKEEPING;**31,33,35**;Jul 1994
|
---|
3 | ;
|
---|
4 | PROF(VOLIEN,VOLIDEN,FLAG,VALRESP) ;
|
---|
5 | ;
|
---|
6 | N PROFIEN,PROF0,ERRS,OUT
|
---|
7 | N AWARD,AWCDPTR,ENTRY,STATION,STATPTR,TERM
|
---|
8 | S PROFIEN=0
|
---|
9 | F S PROFIEN=$O(^ABS(503330,VOLIEN,4,PROFIEN)) Q:PROFIEN="" D
|
---|
10 | . N ERRS S ERRS=0
|
---|
11 | . S OUT=0
|
---|
12 | . S PROF0=$G(^ABS(503330,VOLIEN,4,PROFIEN,0))
|
---|
13 | . ; if no zero node, clean up children nodes and 'B' cross-ref
|
---|
14 | . I PROF0="" K ^ABS(503330,VOLIEN,4,"B",PROFIEN,PROFIEN),^ABS(503330,VOLIEN,4,PROFIEN) Q
|
---|
15 | . ;STATION NUMBER
|
---|
16 | . D
|
---|
17 | . . S STATPTR=$P(PROF0,U)
|
---|
18 | . . I STATPTR="" D ADDERR^ABSVMVV1(VOLIDEN_"is missing Station information.",.ERRS,VOLIEN) S OUT=1 Q
|
---|
19 | . . S STATION=$P($G(^ABS(503338,STATPTR,0)),U,9)
|
---|
20 | . . Q:$D(EXSITES(STATION)) ;check for excluded sites
|
---|
21 | . . I $L(STATION)>7!(STATION="") D ADDERR^ABSVMVV1(VOLIDEN_"has incorrect Station Number information.",.ERRS,VOLIEN) S OUT=1 Q
|
---|
22 | . . ; if no station number, then set it. This field should alway be there, it is set in a trigger on .01 field
|
---|
23 | . . I $P(PROF0,U,12)="" S $P(PROF0,U,12)=STATION,^ABS(503330,VOLIEN,4,PROFIEN,0)=PROF0 Q
|
---|
24 | . ;ENTRY DATE, if no error then do
|
---|
25 | . D:'OUT
|
---|
26 | . . N DA,DIK
|
---|
27 | . . S ENTRY=$P(PROF0,U,2),DIK="^ABS(503330,"_VOLIEN_",4,"
|
---|
28 | . . ;if no entry date, then delete this station multiple
|
---|
29 | . . I ENTRY="" S DA=PROFIEN,DA(1)=VOLIEN D ^DIK S OUT=1 Q
|
---|
30 | . . ;D ADDERR^ABSVMVV1(VOLIDEN_"is missing Entry Date information.",.ERRS,VOLIEN) Q
|
---|
31 | . . ;Check if hours recorded for that station. Ok if entry date new.
|
---|
32 | . . I '$D(^TMP("ABSVM","VOLWHRS",$J,VOLIEN,STATION))&(+ENTRY<$$HTFM^XLFDT($$HADD^XLFDT($H,-90))) S OUT=1 Q
|
---|
33 | . . N RES D DT^DILF("",ENTRY,.RES)
|
---|
34 | . . I $L($P(ENTRY,"."))'=7!(RES=-1) D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect Entry Date.",.ERRS,VOLIDEN)
|
---|
35 | . ;If OUT, Station Profile should not be sent, record error and QUIT
|
---|
36 | . I OUT D:ERRS>0 RECERR^ABSVMUT1(.VALRESP,.ERRS) Q
|
---|
37 | . ;YEARS
|
---|
38 | . I $P(PROF0,U,3)'?.N D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect value for Years At Station.",ERRS,VOLIEN)
|
---|
39 | . ;PRIOR HOURS
|
---|
40 | . I $P(PROF0,U,20)'?.N D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect value for Prior Years Hours Served.",.ERRS,VOLIEN)
|
---|
41 | . ;CURRENT HOURS
|
---|
42 | . I $P(PROF0,U,21)'?.N D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect value for Current Year Hours Served.",.ERRS,VOLIEN)
|
---|
43 | . ;LAST AWARD HOURS
|
---|
44 | . I $P(PROF0,U,5)'?.N D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect value for Hours Last Award.",.ERRS,VOLIEN)
|
---|
45 | . ;LAST AWARD DATE
|
---|
46 | . S AWARD=$P(PROF0,U,6)
|
---|
47 | . D:AWARD'=""
|
---|
48 | . . N RES D DT^DILF("",AWARD,.RES)
|
---|
49 | . . I $L($P(AWARD,"."))'=7!(RES=-1) D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect Last Award Date.",.ERRS,VOLIDEN)
|
---|
50 | . ;AWARD CODE
|
---|
51 | . S AWCDPTR=$P(PROF0,U,7)
|
---|
52 | . I AWCDPTR'="",'$D(ACDS(AWCDPTR)) D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect Award Code.",.ERRS,.VOLIEN)
|
---|
53 | . ;TERM DATE
|
---|
54 | . S TERM=$P(PROF0,U,8)
|
---|
55 | . D:TERM'=""
|
---|
56 | . . N RES D DT^DILF("",TERM,.RES)
|
---|
57 | . . I $L($P(TERM,"."))'=7!(RES=-1) D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect Termination Date.",.ERRS,VOLIDEN)
|
---|
58 | . ;REMARKS
|
---|
59 | . ;Only 160 characters can be sent. See ABSVM VOLREMARKS function.
|
---|
60 | . D
|
---|
61 | .. N D0,D1,REM,ERRORS
|
---|
62 | .. S D0=VOLIEN,D1=PROFIEN,REM=$$GETREM()
|
---|
63 | .. I $L(REM)>160 D
|
---|
64 | ... S ERRORS(1)="Warning: "_VOLIDEN_"has Remarks greater than 160 characters."
|
---|
65 | ... I $G(VALRES("ERRIEN"))="" D
|
---|
66 | .... N ABSIEN
|
---|
67 | .... D ABSIEN^ABSVMUT1 Q:'ABSIEN
|
---|
68 | .... S VALRES("ERRIEN")=ABSIEN
|
---|
69 | ... D WP^DIE(503339.52,VALRES("DA")_","_VALRES("ERRIEN")_",",4,"A","ERRORS")
|
---|
70 | . ;MEALS?
|
---|
71 | . I ",,0,1,"'[(","_$P(PROF0,U,24)_",") D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect Eligible For Meals code.",.ERRS,VOLIEN)
|
---|
72 | . ;TRANSPORT
|
---|
73 | . I ",,1,2,3,4,"'[(","_$P(PROF0,U,23)_",") D ADDERR^ABSVMVV1(VOLIDEN_"has an incorrect Method of Transportation code.",.ERRS,VOLIEN)
|
---|
74 | . ; Check for errors
|
---|
75 | . I ERRS>0 D RECERR^ABSVMUT1(.VALRESP,.ERRS) Q
|
---|
76 | . ; No errors and got this far; add to send list if FLAG=S
|
---|
77 | . I $G(FLAG)["S" S ^XTMP("ABSVMVOLP","IEN",VOLIEN)=""
|
---|
78 | . ;PARKING STICKERS
|
---|
79 | . D PARKVAL^ABSVMVV3(VOLIEN,PROFIEN,VOLIDEN,$G(FLAG),.VALRESP)
|
---|
80 | Q
|
---|
81 | ;
|
---|
82 | GETREM() ;Function to return Remarks field from Voluntary Master
|
---|
83 | N MYIENS,MYROOT,WPREM,REMARKS,I
|
---|
84 | S MYIENS=D1_","_D0_","
|
---|
85 | S MYROOT=$$GET1^DIQ(503330.01,MYIENS,18,,"WPREM")
|
---|
86 | I MYROOT="" Q ""
|
---|
87 | S I=0,REMARKS=""
|
---|
88 | F S I=$O(WPREM(I)) Q:I="" D
|
---|
89 | . ;Avoid string too long error.
|
---|
90 | . I $L(REMARKS)+$L(WPREM(I))>511 S I=99999 Q
|
---|
91 | . S REMARKS=REMARKS_$S($L(REMARKS)>0:" ",1:"")_WPREM(I)
|
---|
92 | Q REMARKS
|
---|
93 | ;
|
---|