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

GMRCCY.m

Go to the documentation of this file.
  1. GMRCCY ;SFVAMC/DAD - Consult Closure Tool: Date Range Selector ;01/20/17 15:19
  1. ;;3.0;CONSULT/REQUEST TRACKING;**89**;DEC 27, 1997;Build 62
  1. ;Consult Closure Tool
  1. ;
  1. ; IA# Usage Component
  1. ; ---------------------------
  1. ; 10003 Supported ^%DT
  1. ; 10103 Supported $$FMTE^XLFDT
  1. ; 10103 Supported $$SCH^XLFDT
  1. ; 10104 Supported $$UP^XLFSTR
  1. ;
  1. EN(GMTBEG,GMTEND,GMHEAD,GMRANG) ; *** Entry Point
  1. ; Input
  1. ; GMTBEG = Begin date - Default (FM Int) [Req, Pass by ref]
  1. ; GMTEND = End date - Default (FM Int) [Req, Pass by ref]
  1. ; GMHEAD = Header line [Opt, Pass by value]
  1. ; GMRANG = Date range type [Opt, Pass by value]
  1. ; M,M!,Q,Q!,S,S!,Y,Y!,F,F!,U,U! ("!" forces selection)
  1. ; Output
  1. ; $$EN() = 1 - Okay OR 0 - Exit
  1. ; GMTBEG = Begin date [If $$EN()=1 FM Int Date, Else ""]
  1. ; GMTEND = End date [If $$EN()=1 FM Int Date, Else ""]
  1. ;
  1. ; Example
  1. ; IF $$EN^GMDATE(.GMTBEG,.GMTEND,GMHEAD,GMRANG)'>0 QUIT
  1. ;
  1. N GM,GMDATA,GMDFLT,GMDONE,GMFRAM,GMQUIT,GMWHEN,X,Y
  1. S (GMFRAM,GMFRAM(0))=""
  1. F GM=1:1 S GMDATA=$P($T(FRAMDAT+GM),";;",2) Q:GMDATA=U D
  1. . S GMFRAM=GMFRAM_U_$$UP^XLFSTR(GMDATA)
  1. . S GMFRAM(0)=GMFRAM(0)_GMDATA_$S(GM<6:", ",1:"")
  1. . Q
  1. F D Q:GMQUIT!GMDONE
  1. . S (GMQUIT,GMDONE)=0
  1. . S GMTBEG=$S($G(GMTBEG)\1?7N:GMTBEG\1,1:"")
  1. . S GMTEND=$S($G(GMTEND)\1?7N:GMTEND\1,1:"")
  1. . S GMDFLT=$$UP^XLFSTR($G(GMRANG))_U_GMTBEG_U_GMTEND
  1. . I $G(GMHEAD)]"" W !,GMHEAD
  1. . W !,GMFRAM(0)
  1. . W !,"Select date range: "
  1. . W $S($TR($P(GMDFLT,U),"!")]"":$TR($P(GMDFLT,U),"!")_"// ",1:"")
  1. . S GMWHEN=""
  1. . I $P(GMDFLT,U)'["!" R GMWHEN:DTIME S:'$T GMWHEN=U
  1. . I GMWHEN="" S GMWHEN=$TR($P(GMDFLT,U),"!") W GMWHEN
  1. . I (GMWHEN="")!($E(GMWHEN)=U) S GMQUIT=1 Q
  1. . S GMWHEN=$$UP^XLFSTR(GMWHEN)
  1. . I $F(GMFRAM,U_GMWHEN)'>0 D Q
  1. .. D BELL(GMWHEN)
  1. .. I $P(GMDFLT,U)["!" S GMQUIT=1 Q
  1. .. W !!?5,"Enter the first few letters of "
  1. .. W "one of the choices listed below.",!
  1. .. Q
  1. . W $P($P(GMFRAM,U_GMWHEN,2),U)
  1. . S GMWHEN=$E(GMWHEN)
  1. . S GMQUIT=$$ASKDATE(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
  1. . I GMQUIT D
  1. .. S GMQUIT=$S($P(GMDFLT,U)'["!":0,1:GMQUIT)
  1. .. I GMQUIT'>0 W !
  1. .. Q
  1. . E D
  1. .. S GMDONE=1
  1. .. Q
  1. . Q
  1. S GMQUIT='$G(GMQUIT)
  1. I GMQUIT>0 D
  1. . W !!,"Range selected: "
  1. . W $$FMTE^XLFDT(GMTBEG,"5Z")," to ",$$FMTE^XLFDT(GMTEND,"5Z")
  1. . Q
  1. E D
  1. . S (GMTBEG,GMTEND)=""
  1. . Q
  1. Q GMQUIT
  1. ;
  1. FRAMDAT ;; TimeFrameName
  1. ;;Monthly
  1. ;;Quarterly
  1. ;;Semi-Annually
  1. ;;Yearly
  1. ;;Fiscal Yearly
  1. ;;User Selectable
  1. ;;^
  1. ;
  1. ASKDATE(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Prompt for date range
  1. N GMQUIT
  1. S GMQUIT=1
  1. I GMWHEN="M" D
  1. . S GMQUIT=$$MONTH(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
  1. . Q
  1. I (GMWHEN="Q")!(GMWHEN="S") D
  1. . S GMQUIT=$$QUART(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
  1. . Q
  1. I (GMWHEN="F")!(GMWHEN="Y") D
  1. . S GMQUIT=$$YEAR(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
  1. . Q
  1. I GMWHEN="U" D
  1. . S GMQUIT=$$USERSEL(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
  1. . Q
  1. Q GMQUIT
  1. ;
  1. MONTH(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Monthly
  1. N %DT,GM,GMDATA,GMDONE,GMEND,GMEOM,GMMNYR,GMMOE,GMQUIT,GMYEAR,X,Y
  1. F GM=1:1 S GMDATA=$P($T(MONTHDAT+GM),";;",2) Q:GMDATA=U D
  1. . S GMEOM($P(GMDATA,U))=$P(GMDATA,U,2,3)
  1. . Q
  1. S (GMQUIT,GMDONE)=0
  1. F D Q:(GMQUIT>0)!(GMDONE>0)
  1. . K %DT
  1. . S %DT="AE"
  1. . S %DT("A")="Enter Month and Year: "
  1. . I $P(GMDFLT,U,2)]"" D
  1. .. S GMMNYR=$P(GMDFLT,U,2)
  1. .. S %DT("B")=$E(GMMNYR,4,5)_"/"_(1700+$E(GMMNYR,1,3))
  1. .. Q
  1. . W ! D ^%DT S GMEND=+$G(Y)
  1. . I GMEND'>0 S GMQUIT=1 Q
  1. . I ('+$E(GMEND,4,5))!(+$E(GMEND,6,7)) D Q
  1. .. D BELL("")
  1. .. W !!,"Please enter a month and year"
  1. .. W $S(+$E(GMEND,6,7):" only",1:"")
  1. .. Q
  1. . S GMMOE=$E(GMEND,4,5)
  1. . S GMTEND=$E(GMEND,1,5)_$P(GMEOM(GMMOE),U)
  1. . I $E(GMTEND,4,5)="02" D
  1. .. S GMYEAR=1700+$E(GMTEND,1,3)
  1. .. S GMTEND=GMTEND+((GMYEAR#4=0)&((GMYEAR#100)!(GMYEAR#400=0)))
  1. .. Q
  1. . S GMTBEG=$E(GMTEND,1,5)_"01"
  1. . S GMDONE=1
  1. . Q
  1. Q GMQUIT
  1. ;
  1. MONTHDAT ;; MonthNumber ^ DaysInMonth ^ MonthName
  1. ;;01^31^JANUARY
  1. ;;02^28^FEBRUARY
  1. ;;03^31^MARCH
  1. ;;04^30^APRIL
  1. ;;05^31^MAY
  1. ;;06^30^JUNE
  1. ;;07^31^JULY
  1. ;;08^31^AUGUST
  1. ;;09^30^SEPTEMBER
  1. ;;10^31^OCTOBER
  1. ;;11^30^NOVEMBER
  1. ;;12^31^DECEMBER
  1. ;;^
  1. ;
  1. QUART(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Quarterly & Semi-Annually
  1. N %DT,GM,GMDATA,GMDONE,GMMNDY,GMQU,GMQUIT,GMQUYR,GMSBEG,GMSEMI,GMYR,GMQART
  1. N GMQBEG,GMQEND,GMQQUA,X,Y
  1. S GMSEMI=$S(GMWHEN="S":1,1:0)
  1. F GM=1:1 S GMDATA=$P($T(QUARTDAT+GM),";;",2) Q:GMDATA=U D
  1. . S GMQQUA(GM)=$P(GMDATA,U)
  1. . S GMQBEG(GM)="000"_$P(GMDATA,U,2)
  1. . S GMSBEG(GM)="000"_$P(GMDATA,U,3)
  1. . S GMQEND(GM)="000"_$P(GMDATA,U,4)
  1. . Q
  1. S GMQUYR=""
  1. I $P(GMDFLT,U,2)]"" D
  1. . S GMMNDY=$E($P(GMDFLT,U,2),4,7)
  1. . I (GMMNDY'<GMQBEG(1))&(GMMNDY'>GMQEND(1)) S GMQU=1
  1. . I (GMMNDY'<GMQBEG(2))&(GMMNDY'>GMQEND(2)) S GMQU=2
  1. . I (GMMNDY'<GMQBEG(3))&(GMMNDY'>GMQEND(3)) S GMQU=3
  1. . I (GMMNDY'<GMQBEG(4))&(GMMNDY'>GMQEND(4)) S GMQU=4
  1. . S GMQUYR=$S(GMQU>0:GMQU_"/"_(1700+$E($P(GMDFLT,U,2),1,3)+(GMQU=1)),1:"")
  1. . Q
  1. S (GMQUIT,GMDONE)=0
  1. F D Q:(GMQUIT>0)!(GMDONE>0)
  1. . I GMSEMI>0 D
  1. .. W !!,"Enter Quarter Period and FY you "
  1. .. W "wish Semi-Annual range to end with"
  1. .. Q
  1. . W !
  1. . W !,"Enter Quarter and Year: ",$S(GMQUYR]"":GMQUYR_"// ",1:"")
  1. . R GMQART:DTIME S:'$T GMQART=U
  1. . I GMQART="" S GMQART=GMQUYR
  1. . I (GMQART=U)!(GMQART="") S GMQUIT=1 Q
  1. . I (GMQART'?1N1P2N)&(GMQART'?1N1P4N) D Q
  1. .. D BELL(GMQART)
  1. .. W !!,"Enter Quarter Period in this format: "
  1. .. W "2nd quarter 1988 would be 2-88, 2/88, 2 88"
  1. .. Q
  1. . I ($E(GMQART)>4)!($E(GMQART)<1) D Q
  1. .. D BELL("")
  1. .. W !!,"Enter Quarter 1 to 4 only"
  1. .. Q
  1. . S GMQU=$E(GMQART)
  1. . S GMYR=$E(GMQART,3,6)
  1. . K %DT S X=GMYR D ^%DT S GMYR=$E(Y,1,3)
  1. . F GM=1:1:4 D
  1. .. S GMQBEG(GM)=$S(GM=1:GMYR-1,1:GMYR)_$E(GMQBEG(GM),4,7)
  1. .. S GMSBEG(GM)=$S(GM'>2:GMYR-1,1:GMYR)_$E(GMSBEG(GM),4,7)
  1. .. S GMQEND(GM)=$S(GM=1:GMYR-1,1:GMYR)_$E(GMQEND(GM),4,7)
  1. .. Q
  1. . S GMTEND=GMQEND(GMQU)
  1. . S GMTBEG=$S(GMSEMI:GMSBEG(GMQU),1:GMQBEG(GMQU))
  1. . S GMDONE=1
  1. . Q
  1. Q GMQUIT
  1. ;
  1. QUARTDAT ;;Name ^ QuarterStart ^ SemiStart ^ QuarterEnd
  1. ;;FIRST^1001^0701^1231
  1. ;;SECOND^0101^1001^0331
  1. ;;THIRD^0401^0101^0630
  1. ;;FOURTH^0701^0401^0930
  1. ;;^
  1. ;
  1. YEAR(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Yearly & Fiscal Yearly
  1. N %DT,GMDONE,GMFY,GMQUIT,GMYEAR,GMYR,X,Y
  1. S GMFY=$S(GMWHEN="F":1,1:0)
  1. S (GMQUIT,GMDONE)=0
  1. F D Q:(GMQUIT>0)!(GMDONE>0)
  1. . W !!,"Enter ",$S(GMFY:"FISCAL ",1:""),"YEAR: "
  1. . S GMYEAR=$S($P(GMDFLT,U,2)]"":1700+$E($P(GMDFLT,U,2),1,3),1:"")
  1. . W $S(GMYEAR]"":GMYEAR_"// ",1:"")
  1. . R GMYR:DTIME S:'$T GMYR=U
  1. . I GMYR="" S GMYR=GMYEAR
  1. . I (GMYR=U)!(GMYR="") S GMQUIT=1 Q
  1. . I (GMYR'?2N)&(GMYR'?4N) D Q
  1. .. D BELL(GMYR)
  1. .. W !!,"Enter a 2 or 4 digit ",$S(GMFY:"fiscal ",1:""),"year"
  1. .. Q
  1. . K %DT S X=GMYR D ^%DT S GMYR=$E(Y,1,3)
  1. . I GMFY D
  1. .. S GMTBEG=GMYR-1_"1001"
  1. .. S GMTEND=GMYR_"0930"
  1. .. Q
  1. . E D
  1. .. S GMTBEG=GMYR_"0101"
  1. .. S GMTEND=GMYR_"1231"
  1. .. Q
  1. . S GMDONE=1
  1. . Q
  1. Q GMQUIT
  1. ;
  1. USERSEL(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** User Selectable
  1. N %DT,GMBEG,GMEND,GMQUIT,X,Y
  1. S GMQUIT=0
  1. W !!,"Enter beginning and ending dates for the desired time period:",!
  1. K %DT
  1. S %DT="AEX"
  1. S %DT("A")="Beginning Date: "
  1. I $P(GMDFLT,U,2)]"" S %DT("B")=$$FMTE^XLFDT($P(GMDFLT,U,2),"5Z")
  1. D ^%DT S GMBEG=+$G(Y)
  1. I GMBEG>0 D
  1. . K %DT
  1. . S %DT="AEX"
  1. . S %DT(0)=GMBEG
  1. . S %DT("A")="Ending Date: "
  1. . I $P(GMDFLT,U,3)]"",$P(GMDFLT,U,3)'<GMBEG D
  1. .. S %DT("B")=$$FMTE^XLFDT($P(GMDFLT,U,3),"5Z")
  1. .. Q
  1. . E D
  1. .. S %DT("B")=$$FMTE^XLFDT(GMBEG,"5Z")
  1. .. Q
  1. . D ^%DT S GMEND=+$G(Y)
  1. . I GMEND>0 D
  1. .. S GMTBEG=GMBEG
  1. .. S GMTEND=GMEND
  1. .. Q
  1. . E D
  1. .. S GMQUIT=1
  1. .. Q
  1. . Q
  1. E D
  1. . S GMQUIT=1
  1. . Q
  1. Q GMQUIT
  1. ;
  1. BELL(X) ; *** Write ?? <Beep>
  1. I $E(X)'="?" W " ??",$C(7)
  1. Q
  1. ;
  1. LASTMNTH(GMDATE,GMTBEG,GMTEND) ; *** Compute last month date range
  1. N GMMN,GMYR
  1. S GMYR=1700+$E(GMDATE,1,3)
  1. S GMMN=$E(GMDATE,4,5)
  1. I (GMMN'<1)&(GMMN'>12) D
  1. . S GMMN=GMMN-1
  1. . I GMMN=0 S GMMN=12,GMYR=GMYR-1
  1. . I $L(GMMN)=1 S GMMN="0"_GMMN
  1. . S GMTBEG=(GMYR-1700)_GMMN_"01"
  1. . S GMTEND=$$SCH^XLFDT("1M(1)",GMTBEG)\1
  1. . Q
  1. E D
  1. . S (GMTBEG,GMTEND)=""
  1. . Q
  1. Q