| 1 | PRCHLO1A ;WOIFO/RLL-EXTRACT ROUTINE (cont.)CLO REPORT SERVER ; 12/19/05 11:17am | 
|---|
| 2 | V ;;5.1;IFCAP;**83**;; Oct 20, 2000 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; Continuation of PRCHLO1. This program builds the extracts for | 
|---|
| 5 | ; the Master PO Table and the associated multiples | 
|---|
| 6 | POMAST ; PoMaster Table | 
|---|
| 7 | Q | 
|---|
| 8 | PODISCW ; Write PO Discount table data | 
|---|
| 9 | N GPOID,GPOND | 
|---|
| 10 | S GPOID=0,GPOND="" | 
|---|
| 11 | F  S GPOID=$O(^TMP($J,"PODISC",GPOID)) Q:GPOID=""  D | 
|---|
| 12 | . F  S GPOND=$O(^TMP($J,"PODISC",GPOID,GPOND)) Q:GPOND=""  D | 
|---|
| 13 | . . W $G(^TMP($J,"PODISC",GPOID,GPOND)) | 
|---|
| 14 | . . W ! | 
|---|
| 15 | . . Q | 
|---|
| 16 | . Q | 
|---|
| 17 | W ! | 
|---|
| 18 | Q | 
|---|
| 19 | PODISC ; | 
|---|
| 20 | ;PoDiscount Table 442.03A (multiple) | 
|---|
| 21 | ; ^PRC(442,POID,3,0)=^442.03A | 
|---|
| 22 | N CKDS,PPO,PPOVAL,CKDS1,V1,V2,V3,V4,V5,V6 | 
|---|
| 23 | S CKDS=$G(^PRC(442,POID,3,0)),PPO=0 | 
|---|
| 24 | S CKDS1=$P(CKDS,U,3) | 
|---|
| 25 | I +CKDS1>0  D  ; Contains at least one discount, create rec. | 
|---|
| 26 | . D LPPODIS | 
|---|
| 27 | . Q | 
|---|
| 28 | Q | 
|---|
| 29 | PO2237 ; 2237RefNum Table | 
|---|
| 30 | N CK2237,PPO,PPOVAL,CK2237A,PPV4E1,PPV4E2 | 
|---|
| 31 | S CK2237=$G(^PRC(442,POID,13,0)),PPO=0 | 
|---|
| 32 | S CK2237A=$P(CK2237,U,3) | 
|---|
| 33 | I +CK2237A>0  D  ; Contains at least one 2237#, create rec | 
|---|
| 34 | . D LP2237 | 
|---|
| 35 | Q | 
|---|
| 36 | POBOC ; PoBoc Table | 
|---|
| 37 | N CKBS,PPO,PPOVAL,PPOVAL1,CKBS1 | 
|---|
| 38 | S CKBS=$G(^PRC(442,POID,22,0)),PPO=0 | 
|---|
| 39 | S CKBS1=$P(CKBS,U,3) | 
|---|
| 40 | I +CKBS1>0  D  ; Contains at lease one BOC, create rec. | 
|---|
| 41 | . D LPPOBC | 
|---|
| 42 | Q | 
|---|
| 43 | POAMT ; PO Amount table (multiple) | 
|---|
| 44 | N POAMT,POAMT1,POAMT2,POAMT3,POAMT4,V1,V2,V3 | 
|---|
| 45 | N V1E,V1E1,V1E2,V2E,V2E1,V2E2,VE,VE1,VE2 | 
|---|
| 46 | S POAMT=$G(^PRC(442,POID,9,0)) | 
|---|
| 47 | S POAMT1=$P(POAMT,U,3) | 
|---|
| 48 | I +POAMT1>0  D | 
|---|
| 49 | . S POAMT2=0 | 
|---|
| 50 | . F  S POAMT2=$O(^PRC(442,POID,9,POAMT2)) Q:POAMT2=""  D | 
|---|
| 51 | . . Q:+POAMT2<0 | 
|---|
| 52 | . . S POAMT3=$G(^PRC(442,POID,9,POAMT2,0)) | 
|---|
| 53 | . . Q:POAMT3="" | 
|---|
| 54 | . . ; For V1-V3, Get the node, $P the data, pad with "^" delimiters | 
|---|
| 55 | . . ; get external value for TypeCode | 
|---|
| 56 | . . S VE=$P(POAMT3,U,2) | 
|---|
| 57 | . . I VE'="" S VE1=$G(^PRCD(420.6,+VE,0)),VE2=$P(VE1,U,1) | 
|---|
| 58 | . . I VE="" S VE2="" | 
|---|
| 59 | . . ; get external value for CompStatus Business | 
|---|
| 60 | . . S V1E=$P(POAMT3,U,4) | 
|---|
| 61 | . . I V1E'="" S V1E1=$G(^PRCD(420.6,+V1E,0)),V1E2=$P(V1E1,U,1) | 
|---|
| 62 | . . I V1E="" S V1E2="" | 
|---|
| 63 | . . ; | 
|---|
| 64 | . . S V1=$P(POAMT3,U,1)_U_VE2_U_V1E2_U | 
|---|
| 65 | . . ; Get external value for PrefProgram | 
|---|
| 66 | . . S V2E=$P(POAMT3,U,5) | 
|---|
| 67 | . . I V2E'="" S V2E1=$G(^PRCD(420.6,+V2E,0)),V2E2=$P(V2E1,U,1) | 
|---|
| 68 | . . I V2E="" S V2E2="" | 
|---|
| 69 | . . S V2=V2E2_U_$P(POAMT3,U,3),V3=V1_V2 | 
|---|
| 70 | . . S POAMT4=PPOKEY_U_POAMT2_U_V3 | 
|---|
| 71 | . . I +POAMT2>0 S ^TMP($J,"POAMT",POID,POAMT2,0)=POAMT4 | 
|---|
| 72 | . . D PAMBCD  ; Po Amount Breakout code | 
|---|
| 73 | . . Q | 
|---|
| 74 | . Q | 
|---|
| 75 | Q | 
|---|
| 76 | PAMBCD ; PO Amount Breakout code | 
|---|
| 77 | N PAMBC,PAMBC1,PAMBC2,PAMBC3,PAMBC4,VBCE,VBCE1,VBCE2 | 
|---|
| 78 | S PAMBC=0,PAMBC1=0,PAMBC2=0,PAMBC3=0 | 
|---|
| 79 | S PAMBC=$G(^PRC(442,POID,9,POAMT2,1,0)) | 
|---|
| 80 | S PAMBC1=$P(PAMBC,U,3) | 
|---|
| 81 | I +PAMBC1>0  D | 
|---|
| 82 | . F  S PAMBC2=$O(^PRC(442,POID,9,POAMT2,1,PAMBC2)) Q:PAMBC2=""  D | 
|---|
| 83 | . . Q:+PAMBC2<0 | 
|---|
| 84 | . . S PAMBC3=$G(^PRC(442,POID,9,POAMT2,1,PAMBC2,0)) | 
|---|
| 85 | . . ; | 
|---|
| 86 | . . ; get external value for breakout code | 
|---|
| 87 | . . S VBCE=$P(PAMBC3,U,1) | 
|---|
| 88 | . . I VBCE'="" S VBCE1=$G(^PRCD(420.6,+VBCE,0)),VBCE2=$P(VBCE1,U,1) | 
|---|
| 89 | . . I VBCE="" S VBCE2="" | 
|---|
| 90 | . . S PAMBC4=PPOKEY_U_POAMT2_U_PAMBC2_U_VBCE2 | 
|---|
| 91 | . . I +PAMBC2>0 S ^TMP($J,"POBKCOD",POID,POAMT2,PAMBC2,0)=PAMBC4 | 
|---|
| 92 | . . Q | 
|---|
| 93 | . Q | 
|---|
| 94 | Q | 
|---|
| 95 | POAMMD ; PO Amendment Table (multiple) | 
|---|
| 96 | N POAMD,POAMD1,POAMD2,POAMD3,POAMD3A,POAMD4,V1,V2,V3,V2E,V2E1,V2E2 | 
|---|
| 97 | N V3E,V3E1,V3E2,V1E,V1E1,V1E2 | 
|---|
| 98 | S POAMD=$G(^PRC(442,POID,6,0)) | 
|---|
| 99 | S POAMD1=$P(POAMD,U,3) | 
|---|
| 100 | I +POAMD1>1  D | 
|---|
| 101 | . S POAMD2=0 | 
|---|
| 102 | . F  S POAMD2=$O(^PRC(442,POID,6,POAMD2)) Q:POAMD2=""  D | 
|---|
| 103 | . . Q:+POAMD<0 | 
|---|
| 104 | . . S POAMD3=$G(^PRC(442,POID,6,POAMD2,0)) | 
|---|
| 105 | . . S POAMD3A=$G(^PRC(442,POID,6,POAMD2,1)) | 
|---|
| 106 | . . ; V1-V3, $Get the data, $P the values, pad with "^" delimiters | 
|---|
| 107 | . . ; get external date for EffectiveDate | 
|---|
| 108 | . . S V1E=$P(POAMD3,U,2),V1E1=$P(V1E,".",1) | 
|---|
| 109 | . . I V1E'="" S V1E2=$$FMTE^XLFDT(V1E1) | 
|---|
| 110 | . . I V1E="" S V1E2="" | 
|---|
| 111 | . . S V1=$P(POAMD3,U,1)_U_V1E2_U_$P(POAMD3,U,3)_U | 
|---|
| 112 | . . ; get external value for pAPPMaUthorizedBuyer | 
|---|
| 113 | . . S V2E=$P(POAMD3A,U,1) | 
|---|
| 114 | . . I V2E'="" S V2E1=$G(^VA(200,+V2E,0)),V2E2=$P(V2E1,U,1) | 
|---|
| 115 | . . I V2E="" S V2E2="" | 
|---|
| 116 | . . ; get external value for AmendmentAdjustment | 
|---|
| 117 | . . S V3E=$P(POAMD3A,U,4) | 
|---|
| 118 | . . I V3E'="" S V3E1=$G(^PRCD(442.3,+V3E,0)),V3E2=$P(V3E1,U,1) | 
|---|
| 119 | . . I V3E="" S V3E2="" | 
|---|
| 120 | . . S V2=V2E2_U_V3E2,V3=V1_V2 | 
|---|
| 121 | . . S POAMD4=PPOKEY_U_POAMD2_U_V3 | 
|---|
| 122 | . . I +POAMD2>0 S ^TMP($J,"POAMMD",POID,POAMD2,0)=POAMD4 | 
|---|
| 123 | . . D POAMCH  ; Check for Amendment Changes | 
|---|
| 124 | . . D POAMDS  ; Check for Amendment Description | 
|---|
| 125 | . . Q | 
|---|
| 126 | . Q | 
|---|
| 127 | Q | 
|---|
| 128 | POAMCH ; PO Amendment Changes Table (mulitple) | 
|---|
| 129 | N POAMC,POAMC1,POAMC2,POAMC3,POAMC4,POAMC5,POAMC6 | 
|---|
| 130 | S POAMC=$G(^PRC(442,POID,6,POAMD2,3,0)) | 
|---|
| 131 | S POAMC1=$P(POAMC,U,3) | 
|---|
| 132 | I +POAMC1>1  D | 
|---|
| 133 | . S POAMC2=0 | 
|---|
| 134 | . F  S POAMC2=$O(^PRC(442,POID,6,POAMD2,3,POAMC2)) Q:POAMC2=""  D | 
|---|
| 135 | . . S POAMC3=$G(^PRC(442,POID,6,POAMD2,3,POAMC2,0)) | 
|---|
| 136 | . . S POAMC4=$P(POAMC3,U,1),POAMC5=$P(POAMC3,U,2) | 
|---|
| 137 | . . S POAMC6=PPOKEY_U_POAMD2_U_POAMC2_U_POAMC4_U_POAMC5 | 
|---|
| 138 | . . I +POAMC2>0 S ^TMP($J,"POAMMDCH",POID,POAMD2,POAMC2,0)=POAMC6 | 
|---|
| 139 | . . Q | 
|---|
| 140 | . Q | 
|---|
| 141 | Q | 
|---|
| 142 | POAMDS ; PO Amendment Description Table | 
|---|
| 143 | N POADD,POADD1,POADD2,POADD3,POADD4 | 
|---|
| 144 | S POADD=$G(^PRC(442,POID,6,POAMD2,2,0)) | 
|---|
| 145 | I $D(POADD)  D | 
|---|
| 146 | . S POADD1=0 | 
|---|
| 147 | . F  S POADD1=$O(^PRC(442,POID,6,POAMD2,2,POADD1)) Q:POADD1=""  D | 
|---|
| 148 | . . S POADD2=$G(^PRC(442,POID,6,POAMD2,2,POADD1,0))  ;  mult | 
|---|
| 149 | . . S POADD3=PPOKEY_U_POAMD2_U_POADD1_U_POADD2 | 
|---|
| 150 | . . Q:+POADD1>1  ; Get the 1st "1" | 
|---|
| 151 | . . I +POAMD2>0 S ^TMP($J,"POAMMDDES",POID,POAMD2,POADD1,0)=POADD3 | 
|---|
| 152 | . . Q | 
|---|
| 153 | . Q | 
|---|
| 154 | Q | 
|---|
| 155 | POCMTS ; PocommentsTable | 
|---|
| 156 | N POCMTS,POCMTS1 | 
|---|
| 157 | S POCMTS=$G(^PRC(442,POID,4,1,0))  ; 1st line | 
|---|
| 158 | S POCMTS1=$E(POCMTS,1,175)  ; Get the 1st 175 Chars | 
|---|
| 159 | ; Get the 1st 175 Char of 1st comment only | 
|---|
| 160 | I POCMTS'="" S ^TMP($J,"POCOMMENTS",POID)=PPOKEY_U_1_U_POCMTS1 | 
|---|
| 161 | Q | 
|---|
| 162 | PORMKS ; PoRemarks Table | 
|---|
| 163 | N PORMKS,PORMKS1 | 
|---|
| 164 | S PORMKS=$G(^PRC(442,POID,16,1,0))  ; 1st Line, 1st Comment | 
|---|
| 165 | S PORMKS1=$E(PORMKS,1,175)  ; Get the 1st 175 Chars | 
|---|
| 166 | ; gET 1st 175 Characters of 1st remark | 
|---|
| 167 | I PORMKS'="" S ^TMP($J,"POREMARKS",POID)=PPOKEY_U_1_U_PORMKS1 | 
|---|
| 168 | Q | 
|---|
| 169 | LPPODIS ; Loop on PO Discount | 
|---|
| 170 | I CKDS1>0  D | 
|---|
| 171 | . F  S PPO=$O(^PRC(442,POID,3,PPO)) Q:PPO=""  D | 
|---|
| 172 | . . S PPOVAL=$G(^PRC(442,POID,3,PPO,0)) | 
|---|
| 173 | . . S V1=$P(PPOVAL,U,1)_U_$P(PPOVAL,U,2)_U  ; disc itm & %$tot | 
|---|
| 174 | . . S V2=$P(PPOVAL,U,3)_U_$P(PPOVAL,U,4)_U  ; DiscAmt & ItmCt | 
|---|
| 175 | . . S V3=$P(PPOVAL,U,5)_U_$P(PPOVAL,U,6)  ; contract & lineItem | 
|---|
| 176 | . . S V4=V1_V2_V3  ; all data | 
|---|
| 177 | . . S PPOVAL1=PPOKEY_U_PPO_U_V4 | 
|---|
| 178 | . . S ^TMP($J,"PODISC",POID,PPO)=PPOVAL1 | 
|---|
| 179 | . . Q | 
|---|
| 180 | . Q | 
|---|
| 181 | Q | 
|---|
| 182 | LPPOBC ; Loop PoBoc Table | 
|---|
| 183 | F  S PPO=$O(^PRC(442,POID,22,PPO)) Q:PPO=""  D | 
|---|
| 184 | . Q:PPO="B"  ; don't want B index | 
|---|
| 185 | . S PPOVAL=$G(^PRC(442,POID,22,PPO,0)) | 
|---|
| 186 | . S PPOVAL1=$P(PPOVAL,U,1)_U_$P(PPOVAL,U,2) | 
|---|
| 187 | . S PPOVAL2=PPOKEY_U_PPO_U_PPOVAL1 | 
|---|
| 188 | . S ^TMP($J,"POBOC",POID,PPO)=PPOVAL2 | 
|---|
| 189 | . Q | 
|---|
| 190 | Q | 
|---|
| 191 | LP2237 ; Loop 2237 | 
|---|
| 192 | N PPOVAL,PPV1,PPV2,PPV3,PPV4,PPV5,PPV6,PPV7,PPVALL,POKEY,PPOVAL2 | 
|---|
| 193 | N PPV1E,PPV1E1,PPV2E,PPV2E1,PPV4E1,PPV4E2,PPV7E,PPV7E1,PPV7E2 | 
|---|
| 194 | N PPV3E,PPV3E1 | 
|---|
| 195 | F  S PPO=$O(^PRC(442,POID,13,PPO)) Q:PPO=""  D | 
|---|
| 196 | . S PPOVAL=$G(^PRC(442,POID,13,PPO,0)) | 
|---|
| 197 | . S PPV1=$P(PPOVAL,U,1),PPV2=$P(PPOVAL,U,2),PPV3=$P(PPOVAL,U,4) | 
|---|
| 198 | . ; external value for 2237 PPV1 | 
|---|
| 199 | . I PPV1'="" S PPV1E=$G(^PRCS(410,+PPV1,0)),PPV1E1=$P(PPV1E,U,1) | 
|---|
| 200 | . I PPV1="" S PPV1E1="" | 
|---|
| 201 | . ; exeternal value for AccountableOfficer PPV2 | 
|---|
| 202 | . I PPV2'="" S PPV2E=$G(^VA(200,+PPV2,0)),PPV2E1=$P(PPV2E,U,1) | 
|---|
| 203 | . I PPV2="" S PPV2E1="" | 
|---|
| 204 | . ; ext. date value for Date Signed | 
|---|
| 205 | . I PPV3'="" S PPV3E=$P(PPV3,".",1),PPV3E1=$$FMTE^XLFDT(PPV3E) | 
|---|
| 206 | . I PPV3="" S PPV3E1="" | 
|---|
| 207 | . S PPV4=$P(PPOVAL,U,5),PPV5=$P(PPOVAL,U,9),PPV6=$P(PPOVAL,U,10) | 
|---|
| 208 | . ; external for Purchasing agent PPV4 | 
|---|
| 209 | . ; | 
|---|
| 210 | . I PPV4'="" S PPV4E1=$G(^VA(200,+PPV4,0)),PPV4E2=$P(PPV4E1,U,1) | 
|---|
| 211 | . I PPV4="" S PPV4E2="" | 
|---|
| 212 | . ; get external value for InvDistPoint | 
|---|
| 213 | . S PPV7E=$P(PPOVAL,U,11) | 
|---|
| 214 | . I PPV7E'="" S PPV7E1=$G(^PRCP(445,+PPV7E,0)),PPV7E2=$P(PPV7E1,U,1) | 
|---|
| 215 | . I PPV7E="" S PPV7E2="" | 
|---|
| 216 | . S PPV7=PPV7E2 | 
|---|
| 217 | . S PPVALL=PPV1E1_U_PPV2E1_U_PPV3E1_U_PPV4E2_U_PPV5_U_PPV6_U_PPV7 | 
|---|
| 218 | . ; | 
|---|
| 219 | . S PPOVAL2=PPOKEY_U_PPO_U_PPVALL | 
|---|
| 220 | . S ^TMP($J,"PO2237",POID,PPO)=PPOVAL2 | 
|---|
| 221 | . Q | 
|---|
| 222 | Q | 
|---|
| 223 | PODISCH ; PO Discount Header File | 
|---|
| 224 | ; Header file for PO Discount Multiple | 
|---|
| 225 | W "PoIdNum^PurchaseOrderNum^PoDate^MonthYrRun^StationNum^" | 
|---|
| 226 | W "DiscountIdNum^DiscountItem^PercentDollarAmount^" | 
|---|
| 227 | W "DiscountAmount^ItemCount^Contract^LineItem",! | 
|---|
| 228 | Q | 
|---|