Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PRCFFU16

PRCFFU16.m

Go to the documentation of this file.
  1. PRCFFU16 ;WISC/SJG-PO OBLIGATION UTILITY ;8/18/94 17:03
  1. V ;;5.1;IFCAP;;Oct 20, 2000
  1. ;Per VHA Directive 10-93-142, this routine should not be modified.
  1. ;
  1. EN(IEN) ; Called from PO obligation processing
  1. ; IEN - Internal entry number from 442
  1. W !,"Editing Auto Accrual information...",!
  1. D POVENO^PRCFFU15(IEN)
  1. S (ACCEDIT,AUTOACC,EXIT)=0
  1. N FILE S FILE=$$FILE
  1. D GENDIQ^PRCFFU7(FILE,IEN,".1;29;30","IEN","")
  1. I $G(PRCTMP(FILE,IEN,29,"E"))="" D PROMPT I 'Y!($D(DIRUT)) D:EXIT MSG5 Q
  1. I $G(PRCTMP(FILE,IEN,29,"E"))'="" S OB=IEN D MSG1,PROMPT1 I Y!($D(DIRUT)) D:EXIT MSG5 Q
  1. W ! D MSG3,MSG4
  1. I EXIT D MSG5 Q
  1. W ! D CHK
  1. I (NEWDATE="")&(NEWACC="YES") D
  1. .K MSG W !!
  1. .S MSG(1)="This Purchase Order Obligation does not have an Ending Date, but the"
  1. .S MSG(2)="Auto Accrual flag is set to 'YES'.",MSG(3)=" "
  1. .S MSG(4)="The Auto Accrual flag will be corrected and set to 'NO'."
  1. .D EN^DDIOL(.MSG) W ! K MSG D EDIT H 3
  1. .Q
  1. S DIE=442,DA=IEN,DR="29////^S X=NEWDATE;30////^S X=NEWACC"
  1. I $P(PRCFA("MOD"),U)="M",'PRCFA("RETRAN") S DIE=443.6
  1. D ^DIE K DIE,DR
  1. D TAG33^PRCFFU9
  1. KILL AUTOACC,NEWACC,NEWDATE,OLDACC,OLDDATE,CONTEND,CONTENDA,CONTENDE,CONTENDI
  1. QUIT
  1. ;
  1. EDIT S DIE=442,DA=IEN,DR="30///^S X=""N"""
  1. I $P(PRCFA("MOD"),U)="M",'PRCFA("RETRAN") S DIE=443.6
  1. D ^DIE K DIE,DR
  1. Q
  1. PROMPT ; Prompt user
  1. D EN^DDIOL("This "_$$LABEL^PRCFFU15_" Obligation appears to be for services.")
  1. S DIR(0)="Y",DIR("A")="Will this Purchase Order Obligation need to be accrued in FMS",DIR("B")="YES"
  1. S DIR("?")=" '^' to exit this option."
  1. S DIR("?",1)="Enter one of the following:"
  1. S DIR("?",2)=" 'NO' or 'N' if no accrual is needed OR it is for one month."
  1. S DIR("?",3)=" 'YES' or 'Y' if the Obligation covers more than one month AND accrual is",DIR("?",4)=" needed."
  1. S DIR("?",5)=" 'RETURN' for YES."
  1. S DIR("??")="^D MSG2^PRCFFU15"
  1. D ^DIR K DIR W !
  1. I 'Y!($D(DIRUT)) N YY S YY=Y D EDIT,TAG33^PRCFFU9,MSG5 S Y=YY Q
  1. S NEWACC=Y(0)
  1. Q
  1. MSG1 ; Display current auto accrual information
  1. D MSG1^PRCFFU15
  1. Q
  1. PROMPT1 ; Prompt for correct values
  1. S DIR(0)="Y",DIR("A")="Are these Auto Accrual values correct",DIR("B")="YES",DIR("??")="^D MSG2^PRCFFU15"
  1. W ! D ^DIR K DIR W !
  1. I Y S EXIT=0,PRCFA("ACCEDIT")=1
  1. Q
  1. MSG3 ; Prompt for Ending Date
  1. S NEWDATE=$G(PRCTMP(FILE,IEN,29,"I")),EXIT=0
  1. S DIR(0)="D",DIR("A")="END DATE FOR P.O. SERVICE ORDER"
  1. I $G(PRCTMP(FILE,IEN,29,"E"))]"" S DIR("B")=$G(PRCTMP(FILE,IEN,29,"E"))
  1. I $G(PRCTMP(FILE,IEN,29,"E"))="" D
  1. .I $D(CONTENDA)>9 D
  1. ..N END,CONT S END="",CONT=$O(CONTENDA(END))
  1. ..S CONTEND=$P(CONTENDA(CONT),U)
  1. ..I CONTEND]"" S DIR("B")=CONTEND
  1. ..Q
  1. .I $D(CONTENDA)<9 D
  1. ..N COM S COM=$G(PRCTMP(FILE,IEN,.1,"I")),Y=$P($$EOM^PRCFFU16(COM),U,2)
  1. ..D DD^%DT S DIR("B")=Y
  1. ..Q
  1. .Q
  1. D ^DIR K DIR
  1. I $D(DIRUT) S EXIT=1 Q
  1. I Y S NEWDATE=Y
  1. 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
  1. D CHK1(NEWDATE)
  1. Q
  1. MSG4 ; Prompt for Auto Accrual
  1. Q:EXIT
  1. S NEWACC=$G(PRCTMP(FILE,IEN,30,"I")),EXIT=0
  1. S DIR(0)="Y",DIR("A")="AUTO ACCRUAL FLAG",DIR("B")="YES"
  1. I $G(PRCTMP(FILE,IEN,30,"E"))="" D
  1. .S X1=NEWDATE,X2=$G(PRCTMP(FILE,IEN,.1,"I")) D ^%DTC I X<31 S DIR("B")="NO"
  1. I $G(PRCTMP(FILE,IEN,30,"E"))]"" S DIR("B")=$G(PRCTMP(FILE,IEN,30,"E"))
  1. D ^DIR K DIR
  1. I $D(DIRUT) S EXIT=1 Q
  1. S NEWACC=$S($E(Y,1)="Y":1,$E(Y,1)="N":0,$G(DIRUT)=1:0,'Y:0,Y:1,1:1)
  1. Q
  1. MSG5 ; Exit message
  1. D MSG5^PRCFFU15
  1. Q
  1. MSG6 ; Returning message
  1. D EN^DDIOL("Returning to Obligation processing...")
  1. Q
  1. CHK ;
  1. S OLDDATE=$G(PRCTMP(FILE,IEN,29,"I"))
  1. S OLDACC=$G(PRCTMP(FILE,IEN,33,"I"))
  1. I OLDDATE=NEWDATE&(OLDACC=NEWACC) Q
  1. I OLDDATE'=NEWDATE S (PRCFA("ACCEDIT"),ACCEDIT)=1
  1. I OLDACC'=NEWACC S (PRCFA("ACCEDIT"),ACCEDIT)=1
  1. Q
  1. FILE() ; Determine file for lookup
  1. I $D(PRCFA("MOD")),$P(PRCFA("MOD"),U)="E" S FILE=442
  1. I $D(PRCFA("MOD")),$P(PRCFA("MOD"),U)="M" D
  1. .I $D(PRCFA("RETRAN")),PRCFA("RETRAN")=0 S FILE=443.6
  1. .I $D(PRCFA("RETRAN")),PRCFA("RETRAN")=1 S FILE=442
  1. .Q
  1. Q FILE
  1. EOM(DATE) ; Determine end-of-month default date
  1. N YR,MON,EOM,LEAP,DEF
  1. S YR=$E(DATE,1,3)+1700,MON=+$E(DATE,4,5)
  1. S LEAP=$S(YR#400=0:1,YR#4=0&'(YR#100=0):1,1:0)
  1. S EOM=$P("31~"_(28+LEAP)_"~31~30~31~30~31~31~30~31~30~31","~",MON)
  1. S FMEOM=$E(DATE,1,5)_EOM,DEF=MON_"/"_EOM
  1. Q DEF_U_FMEOM
  1. CHK1(DATE) ;Check for Ending date crossover to next FY.
  1. S X="0930"_PRC("FY") D ^%DT
  1. S X2=Y ; end of fiscal year for PO
  1. S X=DATE D ^%DT
  1. S X1=Y D ^%DTC
  1. I X>0 W ! D EN^DDIOL("NOTE: The Ending Date for P.O. Service Order exceeds the End of the Fiscal Year!")
  1. W !
  1. Q