[613] | 1 | PRCG238P ;WISC/BGJ-IFCAP 410 FILE CLEANUP (PURGE) ;11/5/99
|
---|
| 2 | V ;;5.1;IFCAP;**95**;Oct 20, 2000
|
---|
| 3 | ;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;This routine is installed by patch PRC*5*238.
|
---|
| 5 | ;The purpose of this routine is to cleanup entries in files 410, 410.1
|
---|
| 6 | ;and 443 that are leftover after running the Archive/Purge
|
---|
| 7 | ;functionality. Routine PRCG238Q is a routine installed by patch 238
|
---|
| 8 | ;that queues entries into PurgeMaster for purging. Those entries
|
---|
| 9 | ;are then purged by this routine as PurgeMaster cycles through file
|
---|
| 10 | ;443.1 (PurgeMaster Worklist).
|
---|
| 11 | ;
|
---|
| 12 | 410(X) ;
|
---|
| 13 | N DA,KDA,OK,X1,FORMTYPE,TRANTYPE,REQDATE,REQFY,PRCHDA,PONUM,REQID,TEMPID,BEGDA,ENDA,SITE,PERMDATE,TEMPDATE
|
---|
| 14 | D UNLOAD
|
---|
| 15 | F S DA=$O(^PRCS(410,DA)) Q:'DA!(DA>ENDA) D
|
---|
| 16 | . S OK=1
|
---|
| 17 | . ;Kill 410 record when no zeroth node
|
---|
| 18 | . S X=$G(^PRCS(410,DA,0)) I X="" S X="SYSPURG1",^(0)=X,^PRCS(410,"B","SYSPURG1",DA)="" S KDA=DA D KILL443(KDA),KILL410(KDA) Q
|
---|
| 19 | . S X1=$G(^PRCS(410,DA,1)),FORMTYPE=$P(X,"^",4),TRANTYPE=$P(X,"^",2),REQDATE=$P(X1,"^"),REQID=$P(X,"^"),TEMPID=$P(X,"^",3)
|
---|
| 20 | . I $P(REQID,"-")'=SITE Q
|
---|
| 21 | . S PRCHDA=$P($G(^PRCS(410,DA,10)),"^",3),PONUM=$E($P($G(^PRCS(410,DA,4)),"^",5),1,6) S:PONUM]"" PONUM=SITE_"-"_PONUM
|
---|
| 22 | . ;Ceiling transactions
|
---|
| 23 | . I TRANTYPE="C" D CEILING Q:'OK S KDA=DA D KILL443(KDA),KILL410(KDA) Q
|
---|
| 24 | . ;Kill temp request when request date <= date specified for temps
|
---|
| 25 | . I REQID=TEMPID,(REQDATE'>TEMPDATE) S KDA=DA D KILL443(KDA),KILL410(KDA) Q
|
---|
| 26 | . Q:'+REQID
|
---|
| 27 | . ;Do not delete when date of request > date specified for permanent requests
|
---|
| 28 | . I REQDATE>PERMDATE Q
|
---|
| 29 | . ;If no date of request, use the fiscal year from the txn #
|
---|
| 30 | . I '+REQDATE S REQFY=$P(REQID,"-",2),REQFY=$S(REQFY<70:3,1:2)_REQFY I REQFY>$E(PERMDATE,1,3) Q
|
---|
| 31 | . ;If no reference to purchase order or if PO referenced does not exist - kill record
|
---|
| 32 | . I PRCHDA]""!(PONUM]"") D Q
|
---|
| 33 | . . I PRCHDA]"",$D(^PRC(442,PRCHDA,0)) D CHKDT(REQDATE,PRCHDA) Q:'OK
|
---|
| 34 | . . I PONUM]"" S X=$O(^PRC(442,"B",PONUM,0)) I +X,$D(^PRC(442,+X,0)) D CHKDT(REQDATE,+X) Q:'OK
|
---|
| 35 | . . S KDA=DA D KILL443(KDA),KILL410(KDA)
|
---|
| 36 | . I PRCHDA="",PONUM="" S KDA=DA D KILL443(KDA),KILL410(KDA)
|
---|
| 37 | Q
|
---|
| 38 | 443(X) ;
|
---|
| 39 | N DA,BEGDA,ENDA,SITE
|
---|
| 40 | D UNLOAD
|
---|
| 41 | F S DA=$O(^PRC(443,DA)) Q:'DA!(DA>ENDA) D
|
---|
| 42 | . I '$D(^PRCS(410,DA,0)) S KDA=DA D KILL443(KDA)
|
---|
| 43 | Q
|
---|
| 44 | 4101(X) ;
|
---|
| 45 | N DA,BEGDA,ENDA,SITE,PERMDATE,X0,LDA
|
---|
| 46 | D UNLOAD
|
---|
| 47 | F S DA=$O(^PRCS(410.1,DA)) Q:'DA!(DA>ENDA) D
|
---|
| 48 | . S X0=$G(^PRCS(410.1,DA,0)) Q:X0=""
|
---|
| 49 | . Q:SITE'=$P(X0,"-")
|
---|
| 50 | . S LDA=$P(X0,"^",3)
|
---|
| 51 | . Q:LDA>PERMDATE
|
---|
| 52 | . S DIK="^PRCS(410.1," D ^DIK
|
---|
| 53 | . K DIK
|
---|
| 54 | Q
|
---|
| 55 | UNLOAD ;
|
---|
| 56 | S BEGDA=$P(X,"-",1),ENDA=+$P(X,"-",2),SITE=$P(X,";",2)
|
---|
| 57 | S X=$P(X,";",3)
|
---|
| 58 | I X]"" S TEMPDATE=$P(X,"-",1),PERMDATE=$P(X,"-",2)
|
---|
| 59 | S DA=BEGDA-.1
|
---|
| 60 | Q
|
---|
| 61 | CHKDT(RDATE,PODA) ;
|
---|
| 62 | N PODATE
|
---|
| 63 | ;Use DATE PO ASSIGNED field if defined, else use PO DATE
|
---|
| 64 | S PODATE=$P($P($G(^PRC(442,PODA,12)),"^",5),".")
|
---|
| 65 | I +PODATE=0 S PODATE=$P($G(^PRC(442,PODA,1)),"^",15) Q:'+PODATE
|
---|
| 66 | I '+RDATE D Q
|
---|
| 67 | . I REQFY<$E(PODATE,1,3) Q
|
---|
| 68 | . S OK=0
|
---|
| 69 | I $E(RDATE,1,3)<$E(PODATE,1,3) Q
|
---|
| 70 | S OK=0
|
---|
| 71 | Q
|
---|
| 72 | CEILING ;
|
---|
| 73 | N ALLOCDT,REQFY
|
---|
| 74 | S ALLOCDT=$P($G(^PRCS(410,DA,6)),"^",2)
|
---|
| 75 | I +ALLOCDT'=0,ALLOCDT>PERMDATE S OK=0 Q
|
---|
| 76 | S REQFY=$P(REQID,"-",2),REQFY=$S(REQFY<70:3,1:2)_REQFY
|
---|
| 77 | I REQFY>$E(PERMDATE,1,3) S OK=0 Q
|
---|
| 78 | I PRCHDA]""!(PONUM]"") D
|
---|
| 79 | . I PRCHDA]"",$D(^PRC(442,PRCHDA,0)) D CHKDT(ALLOCDT,PRCHDA) Q:'OK
|
---|
| 80 | . I PONUM]"" S X=$O(^PRC(442,"B",PONUM,0)) I +X,$D(^PRC(442,+X,0)) D CHKDT(ALLOCDT,+X)
|
---|
| 81 | Q
|
---|
| 82 | KILL410(DA) ;
|
---|
| 83 | Q:'$D(^PRCS(410,DA,0))
|
---|
| 84 | S DIK="^PRCS(410," D ^DIK
|
---|
| 85 | K DIK
|
---|
| 86 | D KILL4101
|
---|
| 87 | Q
|
---|
| 88 | KILL443(DA) ;
|
---|
| 89 | Q:'$D(^PRC(443,DA,0))
|
---|
| 90 | S DIK="^PRC(443," D ^DIK
|
---|
| 91 | K DIK
|
---|
| 92 | Q
|
---|
| 93 | KILL4101 ;
|
---|
| 94 | Q:$G(REQID)=""
|
---|
| 95 | N DA,ID1,ID2,ID3,ID,LDA
|
---|
| 96 | S ID1=$P(REQID,"-")_"-"_$P(REQID,"-",2)_"-"_$P(REQID,"-",4)
|
---|
| 97 | S ID2=$G(PONUM)
|
---|
| 98 | S ID3=REQID
|
---|
| 99 | F ID=ID1,ID2,ID3 I ID'="",$D(^PRCS(410.1,"B",ID)) D
|
---|
| 100 | . S DA=$O(^PRCS(410.1,"B",ID,0))
|
---|
| 101 | . Q:DA=""
|
---|
| 102 | . Q:'$D(^PRCS(410.1,DA,0))
|
---|
| 103 | . S LDA=$P(^PRCS(410.1,DA,0),"^",3)
|
---|
| 104 | . Q:LDA>PERMDATE
|
---|
| 105 | . S DIK="^PRCS(410.1," D ^DIK
|
---|
| 106 | . K DIK
|
---|
| 107 | Q
|
---|
| 108 | FIND445 ;find invalid records in file 445
|
---|
| 109 | S IPIEN=0
|
---|
| 110 | F S IPIEN=$O(^PRCP(445,IPIEN)) Q:IPIEN'>0 D
|
---|
| 111 | .S IEN=0
|
---|
| 112 | .F S IEN=$O(^PRCP(445,IPIEN,1,IEN)) Q:IEN'>0 D
|
---|
| 113 | ..Q:'$D(^PRCP(445,IPIEN,1,IEN,7))
|
---|
| 114 | ..S TTLI=$P(^PRCP(445,IPIEN,1,IEN,7,0),U,4)
|
---|
| 115 | ..S ITIEN=0
|
---|
| 116 | ..F S ITIEN=$O(^PRCP(445,IPIEN,1,IEN,7,ITIEN)) Q:ITIEN'>0 D
|
---|
| 117 | ...I '$D(^PRCS(410,ITIEN)) D KILL445
|
---|
| 118 | ..S $P(^PRCP(445,IPIEN,1,IEN,7,0),U,4)=TTLI
|
---|
| 119 | ..;-leave this with zero amount don't delete? - I TTLI=0 S ^PRCP(445,IPIEN,1,IEN,7) Q
|
---|
| 120 | ..Q
|
---|
| 121 | .Q
|
---|
| 122 | K IPIEN,IEN,ITIEN,TTLI
|
---|
| 123 | Q
|
---|
| 124 | KILL445 ;clear the invalid records
|
---|
| 125 | Q:'$D(^PRCP(445,IPIEN,1,IEN,7,ITIEN,0))
|
---|
| 126 | S HLDDA=DA,DA(2)=IPIEN,DA(1)=IEN,DA=ITIEN
|
---|
| 127 | S DIK="^PRCP(445,"_DA(2)_",1,"_DA(1)_",7,"
|
---|
| 128 | D ^DIK
|
---|
| 129 | K DIK
|
---|
| 130 | S TTLI=TTLI-1
|
---|
| 131 | S DA=HLDDA
|
---|
| 132 | Q
|
---|