| 1 | PRCFFU16 ;WISC/SJG-PO OBLIGATION UTILITY ;8/18/94  17:03 | 
|---|
| 2 | V ;;5.1;IFCAP;;Oct 20, 2000 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | EN(IEN) ; Called from PO obligation processing | 
|---|
| 6 | ; IEN - Internal entry number from 442 | 
|---|
| 7 | W !,"Editing Auto Accrual information...",! | 
|---|
| 8 | D POVENO^PRCFFU15(IEN) | 
|---|
| 9 | S (ACCEDIT,AUTOACC,EXIT)=0 | 
|---|
| 10 | N FILE S FILE=$$FILE | 
|---|
| 11 | D GENDIQ^PRCFFU7(FILE,IEN,".1;29;30","IEN","") | 
|---|
| 12 | I $G(PRCTMP(FILE,IEN,29,"E"))="" D PROMPT I 'Y!($D(DIRUT)) D:EXIT MSG5 Q | 
|---|
| 13 | I $G(PRCTMP(FILE,IEN,29,"E"))'="" S OB=IEN D MSG1,PROMPT1 I Y!($D(DIRUT)) D:EXIT MSG5 Q | 
|---|
| 14 | W ! D MSG3,MSG4 | 
|---|
| 15 | I EXIT D MSG5 Q | 
|---|
| 16 | W ! D CHK | 
|---|
| 17 | I (NEWDATE="")&(NEWACC="YES") D | 
|---|
| 18 | .K MSG W !! | 
|---|
| 19 | .S MSG(1)="This Purchase Order Obligation does not have an Ending Date, but the" | 
|---|
| 20 | .S MSG(2)="Auto Accrual flag is set to 'YES'.",MSG(3)="  " | 
|---|
| 21 | .S MSG(4)="The Auto Accrual flag will be corrected and set to 'NO'." | 
|---|
| 22 | .D EN^DDIOL(.MSG) W ! K MSG D EDIT H 3 | 
|---|
| 23 | .Q | 
|---|
| 24 | S DIE=442,DA=IEN,DR="29////^S X=NEWDATE;30////^S X=NEWACC" | 
|---|
| 25 | I $P(PRCFA("MOD"),U)="M",'PRCFA("RETRAN") S DIE=443.6 | 
|---|
| 26 | D ^DIE K DIE,DR | 
|---|
| 27 | D TAG33^PRCFFU9 | 
|---|
| 28 | KILL AUTOACC,NEWACC,NEWDATE,OLDACC,OLDDATE,CONTEND,CONTENDA,CONTENDE,CONTENDI | 
|---|
| 29 | QUIT | 
|---|
| 30 | ; | 
|---|
| 31 | EDIT S DIE=442,DA=IEN,DR="30///^S X=""N""" | 
|---|
| 32 | I $P(PRCFA("MOD"),U)="M",'PRCFA("RETRAN") S DIE=443.6 | 
|---|
| 33 | D ^DIE K DIE,DR | 
|---|
| 34 | Q | 
|---|
| 35 | PROMPT ; Prompt user | 
|---|
| 36 | D EN^DDIOL("This "_$$LABEL^PRCFFU15_" Obligation appears to be for services.") | 
|---|
| 37 | S DIR(0)="Y",DIR("A")="Will this Purchase Order Obligation need to be accrued in FMS",DIR("B")="YES" | 
|---|
| 38 | S DIR("?")="  '^' to exit this option." | 
|---|
| 39 | S DIR("?",1)="Enter one of the following:" | 
|---|
| 40 | S DIR("?",2)="  'NO' or 'N' if no accrual is needed OR it is for one month." | 
|---|
| 41 | S DIR("?",3)="  'YES' or 'Y' if the Obligation covers more than one month AND accrual is",DIR("?",4)="   needed." | 
|---|
| 42 | S DIR("?",5)="  'RETURN' for YES." | 
|---|
| 43 | S DIR("??")="^D MSG2^PRCFFU15" | 
|---|
| 44 | D ^DIR K DIR W ! | 
|---|
| 45 | I 'Y!($D(DIRUT)) N YY S YY=Y D EDIT,TAG33^PRCFFU9,MSG5 S Y=YY Q | 
|---|
| 46 | S NEWACC=Y(0) | 
|---|
| 47 | Q | 
|---|
| 48 | MSG1 ; Display current auto accrual information | 
|---|
| 49 | D MSG1^PRCFFU15 | 
|---|
| 50 | Q | 
|---|
| 51 | PROMPT1 ; Prompt for correct values | 
|---|
| 52 | S DIR(0)="Y",DIR("A")="Are these Auto Accrual values correct",DIR("B")="YES",DIR("??")="^D MSG2^PRCFFU15" | 
|---|
| 53 | W ! D ^DIR K DIR W ! | 
|---|
| 54 | I Y S EXIT=0,PRCFA("ACCEDIT")=1 | 
|---|
| 55 | Q | 
|---|
| 56 | MSG3 ; Prompt for Ending Date | 
|---|
| 57 | S NEWDATE=$G(PRCTMP(FILE,IEN,29,"I")),EXIT=0 | 
|---|
| 58 | S DIR(0)="D",DIR("A")="END DATE FOR P.O. SERVICE ORDER" | 
|---|
| 59 | I $G(PRCTMP(FILE,IEN,29,"E"))]"" S DIR("B")=$G(PRCTMP(FILE,IEN,29,"E")) | 
|---|
| 60 | I $G(PRCTMP(FILE,IEN,29,"E"))="" D | 
|---|
| 61 | .I $D(CONTENDA)>9 D | 
|---|
| 62 | ..N END,CONT S END="",CONT=$O(CONTENDA(END)) | 
|---|
| 63 | ..S CONTEND=$P(CONTENDA(CONT),U) | 
|---|
| 64 | ..I CONTEND]"" S DIR("B")=CONTEND | 
|---|
| 65 | ..Q | 
|---|
| 66 | .I $D(CONTENDA)<9 D | 
|---|
| 67 | ..N COM S COM=$G(PRCTMP(FILE,IEN,.1,"I")),Y=$P($$EOM^PRCFFU16(COM),U,2) | 
|---|
| 68 | ..D DD^%DT S DIR("B")=Y | 
|---|
| 69 | ..Q | 
|---|
| 70 | .Q | 
|---|
| 71 | D ^DIR K DIR | 
|---|
| 72 | I $D(DIRUT) S EXIT=1 Q | 
|---|
| 73 | I Y S NEWDATE=Y | 
|---|
| 74 | S X1=NEWDATE,X2=$G(PRCTMP(FILE,IEN,.1,"I")) D ^%DTC I X<0 W ! D EN^DDIOL("The Ending Date cannot come before the Purchase Order Date - "_$G(PRCTMP(FILE,IEN,.1,"E"))) W ! G MSG3 | 
|---|
| 75 | D CHK1(NEWDATE) | 
|---|
| 76 | Q | 
|---|
| 77 | MSG4 ; Prompt for Auto Accrual | 
|---|
| 78 | Q:EXIT | 
|---|
| 79 | S NEWACC=$G(PRCTMP(FILE,IEN,30,"I")),EXIT=0 | 
|---|
| 80 | S DIR(0)="Y",DIR("A")="AUTO ACCRUAL FLAG",DIR("B")="YES" | 
|---|
| 81 | I $G(PRCTMP(FILE,IEN,30,"E"))="" D | 
|---|
| 82 | .S X1=NEWDATE,X2=$G(PRCTMP(FILE,IEN,.1,"I")) D ^%DTC I X<31 S DIR("B")="NO" | 
|---|
| 83 | I $G(PRCTMP(FILE,IEN,30,"E"))]"" S DIR("B")=$G(PRCTMP(FILE,IEN,30,"E")) | 
|---|
| 84 | D ^DIR K DIR | 
|---|
| 85 | I $D(DIRUT) S EXIT=1 Q | 
|---|
| 86 | S NEWACC=$S($E(Y,1)="Y":1,$E(Y,1)="N":0,$G(DIRUT)=1:0,'Y:0,Y:1,1:1) | 
|---|
| 87 | Q | 
|---|
| 88 | MSG5 ; Exit message | 
|---|
| 89 | D MSG5^PRCFFU15 | 
|---|
| 90 | Q | 
|---|
| 91 | MSG6 ; Returning message | 
|---|
| 92 | D EN^DDIOL("Returning to Obligation processing...") | 
|---|
| 93 | Q | 
|---|
| 94 | CHK ; | 
|---|
| 95 | S OLDDATE=$G(PRCTMP(FILE,IEN,29,"I")) | 
|---|
| 96 | S OLDACC=$G(PRCTMP(FILE,IEN,33,"I")) | 
|---|
| 97 | I OLDDATE=NEWDATE&(OLDACC=NEWACC) Q | 
|---|
| 98 | I OLDDATE'=NEWDATE S (PRCFA("ACCEDIT"),ACCEDIT)=1 | 
|---|
| 99 | I OLDACC'=NEWACC S (PRCFA("ACCEDIT"),ACCEDIT)=1 | 
|---|
| 100 | Q | 
|---|
| 101 | FILE() ; Determine file for lookup | 
|---|
| 102 | I $D(PRCFA("MOD")),$P(PRCFA("MOD"),U)="E" S FILE=442 | 
|---|
| 103 | I $D(PRCFA("MOD")),$P(PRCFA("MOD"),U)="M" D | 
|---|
| 104 | .I $D(PRCFA("RETRAN")),PRCFA("RETRAN")=0 S FILE=443.6 | 
|---|
| 105 | .I $D(PRCFA("RETRAN")),PRCFA("RETRAN")=1 S FILE=442 | 
|---|
| 106 | .Q | 
|---|
| 107 | Q FILE | 
|---|
| 108 | EOM(DATE) ; Determine end-of-month default date | 
|---|
| 109 | N YR,MON,EOM,LEAP,DEF | 
|---|
| 110 | S YR=$E(DATE,1,3)+1700,MON=+$E(DATE,4,5) | 
|---|
| 111 | S LEAP=$S(YR#400=0:1,YR#4=0&'(YR#100=0):1,1:0) | 
|---|
| 112 | S EOM=$P("31~"_(28+LEAP)_"~31~30~31~30~31~31~30~31~30~31","~",MON) | 
|---|
| 113 | S FMEOM=$E(DATE,1,5)_EOM,DEF=MON_"/"_EOM | 
|---|
| 114 | Q DEF_U_FMEOM | 
|---|
| 115 | CHK1(DATE) ;Check for Ending date crossover to next FY. | 
|---|
| 116 | S X="0930"_PRC("FY") D ^%DT | 
|---|
| 117 | S X2=Y ; end of fiscal year for PO | 
|---|
| 118 | S X=DATE D ^%DT | 
|---|
| 119 | S X1=Y D ^%DTC | 
|---|
| 120 | I X>0 W ! D EN^DDIOL("NOTE: The Ending Date for P.O. Service Order exceeds the End of the Fiscal Year!") | 
|---|
| 121 | W ! | 
|---|
| 122 | Q | 
|---|