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

AFSLACHT.m

Go to the documentation of this file.
AFSLACHT ;IHS/OIRM/DSD/JLG - WRITE TO TRAVEL-ACH FORMAT FILE;  [ 09/26/2005  12:53 PM ]
 ;;3.0t1;1166 APPROVALS FOR PAYMENT;**19**;AUG 31, 2005
 ;Original JDM
 ;Part 2 - Gen. Treasury ECS/ACH-format file from Unix Treasury Tape-format file.
FRD ;EP
 ;****** Open & rd tape file & send to ascii formatted file ******
 ;
 ;Var AFSLFY is being stuffed into a field that is being changed from
 ;a 2 digit to a 4 digit FY.  The var is not being manipulated in this
 ;routine so no change required here.
 ;
 S (AFSLRCT,AFSLSAMT)=0
 S AFSLZROS="000000000000"
 S AFSLSPAC="                                   "
 F I=1:1:10 S AFSLASY(I)="                ",AFSLSAM(I)="000000000000"
OPENFLS S %FN=AFSEXFN
 S %IN=1
 S (AFSLBFL1,AFSLBFL2,AFSLBFL3,AFSLBFL4,AFSLBFL5,AFSLGFLG)=0
 S (AFSLXA,AFSLXC,AFSLXX,AFSLTMXX)=""
 D OPENHFS^AFSLCK1
 I $D(AFSERMSG) D ERROR^AFSLCK1 G FINI
 I $D(AFSJFLG) G FINI
 S AFSLTDEV=%DEV K %DEV
READTFL ;rd tp fle
 U AFSLTDEV R X:DTIME I X=""!($A(X)=-1)!($E(X,1,3))="C01" G FINI
ITEM ;process pmt data
 I $E(X,1,3)="C01" G FINI
 I $E(X,1,3)="&01" D  G:$D(AFSJFLG) FINI G:$D(AFSLMFLG) FINI G READTFL
 .S AFSLSCHD=$E(X,4,13)
 .S AFSLALC=$E(X,27,34)
 .S AFSLAID=$P(^AFSLPRM(1,2),U,8)
 .S AFSLRECN="000000"
 .S AFSLRFC=$P(^AFSLPRM(1,2),U,3)
 .D ALCC
 I $E(X,1,3)="A01"&($E(X,4,13)=AFSLSCHD) D  G READTFL
 .S AFSLANAM=$E(X,72,80)
 I $E(X,1,3)="A01"&($E(X,4,13)'=AFSLSCHD) D  G READTFL
 .S AFSLANAM=AFSLANAM_$E(X,4,19)
 .S AFSLADR1=$E(X,20,44)
 .S AFSLADR2=$E(X,45,69)
 .D BLCC
 I $E(X,1,3)="B01"&($E(X,47)="B") D  G READTFL
 .S AFSLRCT=AFSLRCT+1
 .S AFSLENCD=$E(X,14)
 .S AFSLTSSN=$E(X,15,23)
 .S AFSLTAMT=$E(X,27,36)
 .S AFSLSAMT=AFSLSAMT+AFSLTAMT
 .S AFSLTNAM=$E(X,48,80)
 .S AFSLBFL1=1
 I $E(X,1,3)="B01"&(AFSLBFL1=1) D  G READTFL
 .S AFSLBFL1=0
 .S AFSLADD1=$E(X,4,38)
 .S AFSLBFL2=1
 I $E(X,1,3)="B01"&(AFSLBFL2=1) D  G READTFL
 .S AFSLBFL2=0
 .S AFSLADD2=$E(X,4,38)
 .S AFSLADD3=$E(X,39,68)
 .S AFSLBFL3=1
 I $E(X,1,3)="B01"&(AFSLBFL3=1) D  G READTFL
 .S AFSLBFL3=0
 .S AFSLADD4=$E(X,4,33)
 .S AFSLPTYP="A"
 .S AFSLACSY=$E(X,34,49)
 .S AFSLBFL4=1
 I $E(X,1,3)="B01"&(AFSLBFL4=1) D  G READTFL
 .S AFSLBFL4=0
 .S AFSLPCNT=$E(X,5,6)
 .S AFSLBFL5=1
 .K AFSLPREC
 .D READLP
 G READTFL
 Q
READLP ;rd 1-14 pd-for rcds & create AFSLPREC(1-14)
 F J=1:1:AFSLPCNT D
 .U AFSLTDEV R X:DTIME
 .U AFSLSDEV G:X=""!($A(X)=-1)!(AFSLGFLG=1) FINI D:AFSLXFLG'=1 SETPREC
 D PMTREC
 Q
SETPREC ;set AFSLPREC(J)
 S AFSLPREC(J)=$E(X,4,58)
 Q
ALCC ;********Create Transmission Hdr Rcd & ALC Ctl rcd*********
 D SHDR^AFSLACH2 Q:$D(AFSLMFLG)
 S AFSLAID=AFSLAID_$E("          ",1,10-$L(AFSLAID))
 I AFSLXFLG=3 S AFSLPNOT="P"
 I '$D(AFSLPNOT) S AFSLPNOT=" "
 S AFSLPNOT=" "
 S AFSLALCC="02"_"000001"_AFSLSCHD_"    "_"             "_AFSLALC_"           "_"&"_AFSLPNOT_$E(AFSLB50,2,50)_AFSLB50_AFSLB50_AFSLB50_AFSLB50_AFSLB50_AFSLB50_$E(AFSLB50,1,35)
 D WRTALCC
 Q
BLCC ;******** Create Agcy Billing Addr Ctl Rcd ********
 S AFSLBLCC="03"_"000002"_AFSLSCHD_"    "_"0000000000000"_"                   "_"A"_AFSLANAM_AFSLADR1_AFSLADR2_$E(AFSLB50,1,25)_"          "_AFSLB50_AFSLB50_AFSLB50_AFSLB50_AFSLB50_$E(AFSLB50,1,25)
 U AFSLKDEV W AFSLBLCC
 U AFSLKDEV
 Q
PMTREC ;***************** Create pmt rcd *****************
 ;AFSLENCD=Enclosure Code (2) or Acct. Type (C=Ckg, S=Svgs)..GET FROM 1166 AFP ACH-PERSON file
 S AFSLTNAM=AFSLTNAM_$E($$SPACE^AFSLUTLM(35),1,35-$L(AFSLTNAM)),AFSLRECN=$E($$ZERO^AFSLUTLM(6),1,6-$L(AFSLRCT))_AFSLRCT
 S AFSLTAMT=$E($$ZERO^AFSLUTLM(10),1,10-$L(AFSLTAMT))_AFSLTAMT
 S AFSLAID=AFSLAID_$E(AFSLB50,1,10-$L(AFSLAID))
ASKSSN ;
 S AFSLSKED=$E(AFSLSCHD,5,10) D ^AFSLSKLU
 S AFSLNXPN=0
SKLOOP ;
 I '$O(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN)) G SKEND
 S AFSLNXPN=$O(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN))
 S AFSLPNDX=$P(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,0),U,24) ;THL
 S AFSLPSSN=$P(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,1),U,22)
 S AFSLPAMT=$P(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,0),U,11)
 S AFSLPAMT=$P(AFSLPAMT,".",1)_$P(AFSLPAMT,".",2),AFSLPAMT=$E("00000000",1,8-$L(AFSLPAMT))_AFSLPAMT
 I AFSLTSSN=AFSLPSSN&(AFSLPAMT=AFSLTAMT) S AFSLAPPN=$P(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,1),U,21) G SKEND
 G SKLOOP
SKEND ;
 S AFSLAPPN=AFSLACSY
SKPSK ;
 I AFSLTSSN="" K DIR S DIR(0)="F^9:9",DIR("A")="Enter Person SSN (i.e., 123456789)" U AFSLSDEV D ^DIR I X'?9N W !,"FOLLOW EXAMPLES GIVEN!",*7,! G ASKSSN
 S AFSLPID=AFSLTSSN
 S AFSLVND=AFSLPID U 0 S AFSLTMPL=1 D ^AFSLEMLU K AFSLTMPL
 I AFSLPFND'="XX" S AFSLPNDX=AFSLPNOD
 I '$D(^ACRAU(AFSLPNDX,19)) S AFSLIDN="" D ASKACH
 I $D(AFSLQFLG) S AFSLRFLG=1 K AFSLQFLG Q
 S AFSLIDN=AFSLPNDX
 S AFSLENCD=$P(^ACRAU(AFSLIDN,19),U,1),AFSLRTN=$P(^ACRAU(AFSLIDN,19),U,2),AFSLDAN=$P(^ACRAU(AFSLIDN,19),U,3)
 S AFSLRTN=AFSLRTN_$E("000000000",1,9-$L(AFSLRTN))
 S AFSLDAN=AFSLDAN_$E("                 ",1,17-$L(AFSLDAN))
 S AFSLTSSN=AFSLTSSN_$E(AFSLB50,1,16-$L(AFSLTSSN))
 S AFSLPYID=$E(AFSLTSSN,1,9)
 S AFSLPYNM=$E(AFSLTNAM,1,22)
 D GETPIDL
 I '$D(AFSLPIDL) S AFSLPIDL=""
 S AFSLPIDL=AFSLPIDL_$E(AFSLB80,1,80-$L(AFSLPIDL))
WRTPMT ;
 S AFSLALCP="04"_AFSLRECN_AFSLSCHD_"    "_AFSLENCD_AFSLPYID_"   "_"00000000000"
 S AFSLAPPN=AFSLAPPN_$E("                ",1,16-$L(AFSLAPPN))
 S AFSLALCP=AFSLALCP_AFSLTAMT_"B"_AFSLPYNM_"       "_AFSLRTN_AFSLDAN_AFSLB50_AFSLB50_"    "_" "_AFSLAPPN_AFSLB50_AFSLPIDL
 S AFSLPCNT=$E("00",1,2-$L(AFSLPCNT))_AFSLPCNT
 S AFSLSYMT=AFSLSYMT+AFSLTAMT
 I '$D(AFSLTOT(AFSLAPPN)) S AFSLTOT(AFSLAPPN)=0
 S AFSLTOT(AFSLAPPN)=AFSLTOT(AFSLAPPN)+AFSLTAMT
 S AFSLASY(1)=AFSLAPPN,AFSLSAM(1)=$E("000000000000",1,12-$L(AFSLSYMT))_AFSLSYMT
 U AFSLKDEV W AFSLALCP
PIDLINE ;
 U AFSLKDEV W AFSLB50_$E(AFSLB50,1,27)
 Q
WRTALCC ;write alc ctl rcd
 S %FN="/usr/spool/afsdata/"_AFSLNXDK_"-"_AFSLMMDD,%IN=0
 I '$D(^AFSLPRM(1,3)) G SKPPRM
 I $P(^AFSLPRM(1,3),U,1)'="" S %FN=$P(^AFSLPRM(1,3),U,1)_"/"_AFSLNXDK_"-"_AFSLMMDD
SKPPRM ;
 D OPENHFS^AFSLCK1
 I $D(AFSERMSG) U AFSLSDEV W !,AFSERMSG
 I Y>0 U AFSLSDEV W !,"UNABLE TO OPEN DISKETTE FILE FOR WRITE!"
 I Y=1 U AFSLSDEV W !,"No HFS Device available...",! R !,"PRESS <RETURN>",AFSLRTNX:300
 I Y=2 U AFSLSDEV W !,"Trying to open a new file for read (R) mode...",!
 I Y=3 U AFSLSDEV W !,"Passed fls by ref...",!
 I Y=4 U AFSLSDEV W !,"Invalid fi length...",!
 I Y>0 S AFSJFLG=1 Q
 S AFSLKDEV=%DEV K %DEV
 U AFSLKDEV W AFSLSHDR,AFSLALCC
 U AFSLSDEV
 Q
WRTPRX ;
 U AFSLKDEV W AFSLRCTY_AFSLRECN_AFSLSCHD_"    "
 Q
WRTSCR ;write alc schd ctl rcd
 S %H=$H
 D YX^%DTC
 S AFSLNOW=X_$E(%,1,5)
 S AFSLMMDD=$E(X,4,7)
 S AFSLSICT=$E($$ZERO^AFSLUTLM(7),1,7-$L(AFSLRCT))_AFSLRCT
 S AFSLSAMT=$E($$ZERO^AFSLUTLM(12),1,12-$L(AFSLSAMT))_AFSLSAMT
 S AFSLRECN=AFSLRECN+1
 S AFSLRECN=$E($$ZERO^AFSLUTLM(6),1,6-$L(AFSLRECN))_AFSLRECN
 S AFSLSCR="09"_AFSLRECN_AFSLSCHD_"    "_"9999999999999"_AFSLSICT_AFSLSAMT_"C"
 S AFSLNXAN="",AFSLACT=0
 I '$D(AFSLTOT(AFSLENCD)) S AFSLTOT(AFSLENCD)=0
NXAPN ;
 I AFSLACT=10 G QNXAPN
 I '$O(AFSLTOT(AFSLNXAN)) D  G NXAPN
 .S AFSLSCR=AFSLSCR_"                000000000000"
 .S AFSLACT=AFSLACT+1
 S AFSLNXAN=$O(AFSLTOT(AFSLNXAN))
 I AFSLTOT(AFSLNXAN)="" S AFSLTOT(AFSLNXAN)=0
 S AFSLTOT(AFSLNXAN)=$E("000000000000",1,12-$L(AFSLTOT(AFSLNXAN)))_AFSLTOT(AFSLNXAN)
 S AFSLSCR=AFSLSCR_AFSLNXAN_AFSLTOT(AFSLNXAN)
 S AFSLACT=AFSLACT+1
 G NXAPN
QNXAPN ;
 U AFSLKDEV W AFSLSCR
 F M=1:1:105 U AFSLKDEV W " "
 S AFSLNXTD=AFSLNXDK_"-"_AFSLMMDD
 S X=AFSLNOW
 S DIC="^AFSLDKGL("
 S DIC(0)="ML"
 U AFSLSDEV
 D ^DIC
 S DIE="^AFSLDKGL(",DA=$P(Y,U,1)
 S DR="1///^S X=AFSLFY" D ^DIE     ;This field being changed to 4 digits
 S DR="2///^S X=AFSLSCHD" D ^DIE
 S DR="3///^S X=AFSLEXFN" D ^DIE
 S DR="4///^S X=AFSLNXTD" D ^DIE
 S DR="5///^S X=AFSLRCT" D ^DIE
 S DR="6///^S X=AFSLSAMT" D ^DIE
 Q
FINI ;
 I $E(X,1,3)="C01"&('$D(AFSJFLG)) D WRTSCR,WRTSTRL^AFSLACH2
 I '$D(AFSLTDEV) G FINI2
 S IO=AFSLTDEV D ^%ZISC
FINI2 ;
 I '$D(AFSLKDEV) G FINI3
 S IO=AFSLKDEV D ^%ZISC
FINI3 ;
 I $D(%DEV) S IO=%DEV D ^%ZISC
 Q
 W AFSLSYMT
 W AFSLSYMT
ASKACH ;
 I '$O(^VA(200,"SSN",AFSLTSSN,0)) D  Q
 .U AFSLSDEV W !,"Can't find person: ",AFSLTNAM," in PERSON File anymore,",!,"or SSN/INFO been changed or person has been deleted!",!,"SKIPPING PAYMENT. "
 .S AFSLQFLG=1
 S AFSLNXVX=0
 S AFSLVCT=0
NXVNLP ;
 I '$O(^VA(200,"SSN",AFSLTSSN,AFSLNXVX)) G EXITLP
 S AFSLNXVX=$O(^VA(200,"SSN",AFSLTSSN,AFSLNXVX))
 S AFSLVCT=AFSLVCT+1
 G NXVNLP
EXITLP ; 
 I AFSLVCT>1 G SSNDUPS
 S AFSLTNOD=$O(^VA(200,"SSN",AFSLTSSN,0))
 ;S X=$P(^VA(200,AFSLTNOD,0),U,1)  ;ACR*2.1*19.02 IM16848
 S X=$$NAME2^ACRFUTL1(AFSLTNOD)  ;ACR*2.1*19.02 IM16848
 U AFSLSDEV W !,"Person: ",$E(AFSLTNAM,1,22)," doesn't yet have needed ACH information.",!,"PLEASE ENTER ALL REQUESTED INFO NOW...",!!
 H 5
 Q
SSNDUPS ;
 U AFSLSDEV W !!,"NAME: ",AFSLTNAM,!,"SSN: ",AFSLTSSN,!
 W !,"There is more than one person in PERSON file with this person's SSN."
 W !,"So, I need you to select the one to get information from.",!!
 S X=$E(AFSLTSSN,1,10)
 S DIC="^VA(200,"
 S DIC(0)="QM"
 D ^DIC
 R !,"PRESS RETURN",AFSLRTNX:300
 Q
GETPIDX ;GET CORRECT ADDENDUM (PAYMENT IDENT INFO) FM PAYMENT
 ;
GETPIDL ;GET CORRECT ADDENDUM (PAYMENT IDENT INFO) FM PAYMENT
 S AFSLPIDX=AFSLPREC(1)
 I $E(AFSLPIDX,4)'="*" D FINDAST
 S AFSLPIDL=$E(AFSLPIDX,1,80)
 S AFSLPIDL=AFSLPIDL_$E(AFSLB80,1,80-$L(AFSLPIDL))
 Q
FINDAST ;
 F K=1:1:79 I $E(AFSLPIDX,K)="*" S AFSLASTX=K Q
 I AFSLASTX=80 Q
 I AFSLASTX'>4 Q
 S AFSLASTZ=AFSLASTX-3
 S AFSLPIDX=$E(AFSLPIDX,AFSLASTZ,80)
 Q