| [613] | 1 | PRCHDAR ;WISC/CR - DELINQUENT APPROVALS REPORT ; 1/19/99  14:47
 | 
|---|
 | 2 |  ;;5.1;IFCAP;**8**;Oct 20, 2000
 | 
|---|
 | 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 |  W !
 | 
|---|
 | 6 | START K ^TMP($J),^TMP("RECDATE")
 | 
|---|
 | 7 |  S PRCF("X")="S" D ^PRCFSITE Q:'$D(PRC("SITE"))  Q:$G(X)="^"
 | 
|---|
 | 8 |  S DIC="^VA(200,",DIC("A")="START WITH CARD HOLDER: ",DIC(0)="AEMQ" D ^DIC K DIC Q:'$D(^VA(200,+Y))  S FPERSN=Y K Y
 | 
|---|
 | 9 |  S DIC="^VA(200,",DIC("A")="GO TO CARD HOLDER: ",DIC(0)="AEMQ" D ^DIC K DIC Q:'$D(^VA(200,+Y))  S SPERSN=Y K Y
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 |  ; Get the last name of first and second card holder entered.
 | 
|---|
 | 12 |  S FPERSNL=$P($P(FPERSN,"^",2),",",1),SPERSNL=$P($P(SPERSN,"^",2),",",1)
 | 
|---|
 | 13 |  ;
 | 
|---|
 | 14 |  ; Get the first name of first and second card holder entered.
 | 
|---|
 | 15 |  S FPERSNF=$P(FPERSN,",",2),SPERSNF=$P(SPERSN,",",2)
 | 
|---|
 | 16 |  ;
 | 
|---|
 | 17 |  I FPERSNL]SPERSNL W !,$C(7),"Less than 'FROM' value.",! K FPERSN,SPERSN,Y G START
 | 
|---|
 | 18 |  I (FPERSNL=SPERSNL)&(FPERSNF]SPERSNF) W !,$C(7),"Less than 'FROM' value.",! K FPERSN,SPERSN,Y G START
 | 
|---|
 | 19 |  W !
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 | DATE S DIR("A")="START WITH APPROVAL DATE",DIR("?")="Enter the first date for which you wish to see records."
 | 
|---|
 | 22 |  S DIR(0)="D^^" D ^DIR K DIR Q:+Y<1  S FDATE=+Y W "   ",Y(0)
 | 
|---|
 | 23 |  S DIR("A")="GO TO APPROVAL DATE",DIR("?")="Enter the last date for which you want to see records."
 | 
|---|
 | 24 |  S DIR(0)="D^^" D ^DIR K DIR Q:+Y<1  S EDATE=+Y W "   ",Y(0)
 | 
|---|
 | 25 |  I EDATE<FDATE W !,$C(7),"Less than 'FROM' value.",! K EDATE,FDATE G DATE
 | 
|---|
 | 26 |  W !!,$C(7),?5,"This report should be queued. It may be very large and"
 | 
|---|
 | 27 |  W !,?4,"take a long time to generate to the printer. We suggest you"
 | 
|---|
 | 28 |  W !,?4,"run it during off hours.",! H 2
 | 
|---|
 | 29 |  S %ZIS("B")="",%ZIS="MQ" D ^%ZIS Q:POP
 | 
|---|
 | 30 |  I $D(IO("Q")) S ZTRTN="DETAIL^PRCHDAR",ZTSAVE("*")="" D ^%ZTLOAD,^%ZISC Q
 | 
|---|
 | 31 |  D DETAIL,^%ZISC
 | 
|---|
 | 32 |  Q
 | 
|---|
 | 33 |  ;
 | 
|---|
 | 34 | DETAIL ;
 | 
|---|
 | 35 |  D STAT
 | 
|---|
 | 36 |  D WRITE
 | 
|---|
 | 37 | CLEAN ;
 | 
|---|
 | 38 |  K ^TMP($J),^TMP("RECDATE"),APDATE,C1,C2,C3,CARDOFF,EDATE,EX,FDATE
 | 
|---|
 | 39 |  K FINALDEL,FPARTIAL,FPERSNF,FPERSN,FPERSNL,GETDATE,I,LINE1,OFFPT
 | 
|---|
 | 40 |  K OIEN,ORECD0,ORECD1,ORECD5,P,PARTIAL,PO,PRCHDUZ,RECAPP,RECDATE,RECREQ
 | 
|---|
 | 41 |  K SPERSNF,SPERSN,SPERSNL,TIMDATE,USER,USERFN,USERLN
 | 
|---|
 | 42 |  K X,X1,XXZ,Y,Z1,ZP
 | 
|---|
 | 43 |  Q
 | 
|---|
 | 44 |  ;
 | 
|---|
 | 45 | STAT ; Get appropriate records from file # 440.6
 | 
|---|
 | 46 |  S ZP="" F  S ZP=$O(^PRCH(440.6,"PO",ZP)) Q:ZP=""  D
 | 
|---|
 | 47 |  .S Z1=$G(^PRC(442,ZP,0)),PO=$P(Z1,"^",1) Q:PO=""
 | 
|---|
 | 48 |  .I $D(PRC("SITE")) Q:$P(Z1,"-",1)'=PRC("SITE")
 | 
|---|
 | 49 |  .;
 | 
|---|
 | 50 |  .; Get the receiving required code and the IEN of the Oracle record.
 | 
|---|
 | 51 |  .S RECREQ=$P($G(^PRC(442,ZP,23)),"^",15)
 | 
|---|
 | 52 |  .S OIEN="" F  S OIEN=$O(^PRCH(440.6,"PO",ZP,OIEN)) Q:OIEN=""  D
 | 
|---|
 | 53 |  ..S ORECD0=$G(^PRCH(440.6,OIEN,0))
 | 
|---|
 | 54 |  ..S ORECD1=$G(^PRCH(440.6,OIEN,1))
 | 
|---|
 | 55 |  ..S ORECD5=$G(^PRCH(440.6,OIEN,5))
 | 
|---|
 | 56 |  ..S PRCHDUZ=+$P(ORECD1,"^",5),USER=$P($G(^VA(200,PRCHDUZ,0)),"^"),USERLN=$P(USER,",",1),USERFN=$P(USER,",",2)
 | 
|---|
 | 57 |  ..S OFFPT=+$P(ORECD5,"^",7),CARDOFF=$P($G(^VA(200,OFFPT,0)),"^") I CARDOFF="" S CARDOFF="OFFICIAL NOT ASSIGNED"
 | 
|---|
 | 58 |  ..Q:(USER="")!(OFFPT="")
 | 
|---|
 | 59 |  ..;
 | 
|---|
 | 60 |  ..; Check that user found is within range specified at the beginning.
 | 
|---|
 | 61 |  ..I (FPERSNL]USERLN) Q
 | 
|---|
 | 62 |  ..I (USERLN]SPERSNL) Q
 | 
|---|
 | 63 |  ..I (USERLN=SPERSNL)&(USERFN]SPERSNF) Q
 | 
|---|
 | 64 |  ..;
 | 
|---|
 | 65 |  ..; Ignore orders not reconciled, without final charge, and not fully
 | 
|---|
 | 66 |  ..; received.
 | 
|---|
 | 67 |  ..Q:$P(ORECD0,"^",16)'["R"
 | 
|---|
 | 68 |  ..Q:$P(ORECD1,"^",4)'["Y"
 | 
|---|
 | 69 |  ..Q:$P(ORECD1,"^",3)'["Y"
 | 
|---|
 | 70 |  ..;
 | 
|---|
 | 71 |  ..; RECAPP=reconciliation interval, CARDOFF=card official.
 | 
|---|
 | 72 |  ..; APDATE=approval date by official.
 | 
|---|
 | 73 |  ..; RECDATE=reconciliation date by card holder.
 | 
|---|
 | 74 |  ..;
 | 
|---|
 | 75 |  ..S RECDATE=$P(ORECD1,"^",6) Q:RECDATE=""
 | 
|---|
 | 76 |  ..S APDATE=$P(ORECD5,"^",6) Q:APDATE=""
 | 
|---|
 | 77 |  ..Q:APDATE<FDATE
 | 
|---|
 | 78 |  ..Q:APDATE>EDATE
 | 
|---|
 | 79 |  ..Q:APDATE=RECDATE
 | 
|---|
 | 80 |  ..;
 | 
|---|
 | 81 |  ..; Check if receiving is required and date/time of last partial delivery.
 | 
|---|
 | 82 |  ..I RECREQ["Y" D
 | 
|---|
 | 83 |  ...S PARTIAL=+$P($G(^PRC(442,ZP,11,0)),"^",3)
 | 
|---|
 | 84 |  ...I PARTIAL>0 S FPARTIAL=$G(^PRC(442,ZP,11,PARTIAL,0))
 | 
|---|
 | 85 |  ...S GETDATE=$P($G(FPARTIAL),"^",1),FINALDEL=$P($G(FPARTIAL),"^",9)
 | 
|---|
 | 86 |  ...I FINALDEL["F"&(GETDATE]"")&(GETDATE>RECDATE) S RECDATE=GETDATE
 | 
|---|
 | 87 |  ..;
 | 
|---|
 | 88 |  ..Q:RECDATE>EDATE
 | 
|---|
 | 89 |  ..S X=RECDATE,X1=APDATE D ^XUWORKDY S RECAPP=X
 | 
|---|
 | 90 |  ..S Y=RECDATE D DD^%DT S RECDATE=Y I RECDATE["@" S ^TMP("RECDATE",$J)=1
 | 
|---|
 | 91 |  ..S Y=APDATE D DD^%DT S APDATE=Y
 | 
|---|
 | 92 |  ..;
 | 
|---|
 | 93 |  ..; Get those orders with more than 15 days elapsed from date of final
 | 
|---|
 | 94 |  ..; reconciliation by the card holder to approval by the approving official.
 | 
|---|
 | 95 |  ..;
 | 
|---|
 | 96 |  ..I RECAPP>15 D
 | 
|---|
 | 97 |  ...S ^TMP($J,USER,OFFPT,ZP)=USER_"^"_PO_"^"_RECDATE_"^"_APDATE_"^"_RECAPP_"^"_CARDOFF
 | 
|---|
 | 98 |  Q
 | 
|---|
 | 99 |  ;
 | 
|---|
 | 100 | WRITE ; Let's print out what we have.
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 |  S X=DT D NOW^%DTC,YX^%DTC S TIMDATE=Y
 | 
|---|
 | 103 |  U IO S U="^",(EX,P)=1
 | 
|---|
 | 104 |  I '$D(^TMP($J)) S C1="" D HEADER W !!!!,?10,"*** NO RECORDS TO PRINT ***" Q
 | 
|---|
 | 105 |  ;
 | 
|---|
 | 106 |  S C1="" F  S C1=$O(^TMP($J,C1)) Q:C1=""  Q:EX[U  D
 | 
|---|
 | 107 |  .D HEADER
 | 
|---|
 | 108 |  .S C2="" F  S C2=$O(^TMP($J,C1,C2)) Q:C2=""  Q:EX[U  D
 | 
|---|
 | 109 |  ..S C3="" F  S C3=$O(^TMP($J,C1,C2,C3)) Q:C3=""  Q:EX[U  D
 | 
|---|
 | 110 |  ...S LINE1=^TMP($J,C1,C2,C3) D
 | 
|---|
 | 111 |  ....W $P(LINE1,"^",2),?14,$E($P(LINE1,"^",3),1,18),?34,$P(LINE1,"^",4),?52,$P(LINE1,"^",5),?59,$E($P(LINE1,"^",6),1,21),!
 | 
|---|
 | 112 |  ....I (IOSL-$Y)<2 D HOLD
 | 
|---|
 | 113 |  .I $E(IOST,1,2)'="P-",EX'[U W !,"Press return to continue, '^' to exit: " R XXZ:DTIME S:XXZ[U EX=U S:'$T EX=U W !
 | 
|---|
 | 114 |  I $G(^TMP("RECDATE",$J))=1 W !?2,"'@' - This symbol indicates the final Date/Time of receipt",!,?8,"of the PC order by the user or the Warehouse if applicable.",!
 | 
|---|
 | 115 |  Q
 | 
|---|
 | 116 |  ;
 | 
|---|
 | 117 | HOLD G HEADER:$E(IOST,1,2)="P-"!(IO'=IO(0)) W !,"Press return to continue, '^' to exit: " R XXZ:DTIME S:XXZ[U EX=U S:'$T EX=U D:EX'=U HEADER
 | 
|---|
 | 118 |  Q
 | 
|---|
 | 119 |  ;
 | 
|---|
 | 120 | HEADER ;
 | 
|---|
 | 121 |  W @IOF
 | 
|---|
 | 122 |  W !,"DELINQUENT APPROVALS EXCEPTION LISTING",?45,TIMDATE,?69,"PAGE ",P,!
 | 
|---|
 | 123 |  W !,"PURCHASE",?14,"FINAL RECONCILE",?34,"APPROVAL",?47,"RECON TO",!
 | 
|---|
 | 124 |  W "ORDER",?14,"DATE",?34,"DATE",?47,"APPR INTER",?59,"CARD OFFICIAL"
 | 
|---|
 | 125 |  ;
 | 
|---|
 | 126 |  W ! F I=1:1:10 W "--------"
 | 
|---|
 | 127 |  W !
 | 
|---|
 | 128 |  W !,?10,"CARD HOLDER: ",C1,!
 | 
|---|
 | 129 |  S P=P+1
 | 
|---|
 | 130 |  Q
 | 
|---|