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

BARUFEX.m

Go to the documentation of this file.
  1. BARUFEX ; IHS/SD/TPF - MAIN EXTRACT RTN FOR UFMS ; 09/19/2008
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**3,4,6,7**;OCT 26, 2005
  1. ;Heavily modified to prevent duplicate records ;MRS:BAR*1.8*7 IM30562
  1. ;GETDATA MOVED TO NEW ROUTINE BARUFEX1 created to meet SAC size requirements ;MRS:BAR*1.8*7
  1. ;New functionality only enters through single PULLSESS EP ;MRS:BAR*1.8*7 IM30562
  1. Q
  1. ;
  1. PULLSESS(UDUZ,SESSID) ;EP - PULL TRANSACTIONS LOGGED UNDER THIS SESSION
  1. N TRDATE,TRAILER,NOTSENT,BAROLD,BARNOW
  1. K ^BARUFEX($J)
  1. S RC=$$ASKFNAME^BARUFUT1(.BARFILE)
  1. I 'RC W !!,"SESSION NOT TRANSMITTED" D ASKFORRT^BARUFUT Q 0
  1. S (RECORD,TOTAMT)=0
  1. I $D(SESSID)'=1 D Q $D(^BARUFEX($J))_U_BARFILE
  1. .S BAROLD=$$OLD(.SESSID) ;CAPTURE OLDEST DATE BAR*1.8*4
  1. .S REC=""
  1. .F S REC=$O(SESSID(REC)) Q:REC="" D
  1. ..S UDUZ=$P(SESSID(REC),U)
  1. ..S SESSID=$P(SESSID(REC),U,2)
  1. ..I '$$LCK(UDUZ,SESSID) Q ;MRS:BAR*1.8*7 IM30562
  1. ..I SESSID<BAROLD S BAROLD=SESSID ;CAPTURE OLDEST DATE
  1. ..D DT(UDUZ,SESSID,BAROLD)
  1. .S:$D(^BARUFEX($J)) TRAILER=$$TRAILER()
  1. E D Q $D(^BARUFEX($J))_U_BARFILE
  1. .I '$$LCK(UDUZ,SESSID) Q ;MRS:BAR*1.8*7 IM30562
  1. .D DT(UDUZ,SESSID,SESSID)
  1. .S:$D(^BARUFEX($J)) TRAILER=$$TRAILER()
  1. Q $D(^BARUFEX($J))_U_BARFILE
  1. ;
  1. DT(UDUZ,SESSID,BAROLD) ;EP - HEAVILY MODIFIED FOR BAR*1.8*4 SCR80 1.4.1
  1. ;CHECK FOR TRANSACTIONS NOT SENT
  1. ;D NOTSENT(.RECORD,.TOTAMT) ;ONLY CHECK ONCE
  1. S CURSTAT=$$CURSTAT^BARUFUT(UDUZ,SESSID) ;MRS:BAR*1.8*6 IM29616
  1. Q:CURSTAT'="REVIEWED/APPROVED" ;MRS:BAR*1.8*6 IM29616
  1. D NOW^%DTC
  1. S BARNOW=%
  1. S BARB=$P(SESSID,".")-.0001
  1. S BARDUZ=DUZ ;CASHIER
  1. I '$G(NOTSENT) D
  1. .D PRE^BARUFEX5(BAROLD,BARDUZ) ;CREATE ^BARBOB GLOBAL ONCE
  1. .D NOTSENT(.RECORD,.TOTAMT) S NOTSENT=1 ;ONLY CHECK ONCE
  1. .W !,"FINISHED CHECKING 'NOT SENT' TRANSACTIONS"
  1. W !!,"PROCESSING SESSION TRANSACTIONS FOR "_$P(^VA(200,UDUZ,0),U)_": "_SESSID
  1. S TRDATE=0
  1. F S TRDATE=$O(^BARSESS(DUZ(2),UDUZ,11,SESSID,2,TRDATE)) Q:'TRDATE D
  1. .D GETDATA^BARUFEX1(TRDATE,.RECORD,.TOTAMT,UDUZ,SESSID)
  1. Q
  1. ;
  1. TRAILER() ;EP -
  1. ;DO THE TRAILER
  1. S RECTYPE="T"
  1. S RECORDS=$$FILLSTR^BARUFUT1(RECORD,10,"R","0")
  1. S TOTAMT=$$FILLSTR^BARUFUT1(TOTAMT,20,"R","0")
  1. S ^BARUFEX($J,RECORD)=RECTYPE_RECORDS_TOTAMT
  1. D SENDFILE^BARUFUT2("BARUFEX(",BARFILE)
  1. ;
  1. ;SET TRANSMISSION DATE/TIME MULTIPLE
  1. ;S RC=$$SETTRANS^BARUFUT(UDUZ,SESSID,BARFILE,CURSTAT)
  1. Q 1_U_BARFILE
  1. ;
  1. NOTSENT(RECORD,TOTAMT) ;EP - CHECK THE NOT SENT CROSS REFERENCE
  1. N TRDATE,SESSID,UDUZ
  1. W !!,"CHECKING PREVIOUSLY 'NOT SENT' TRANSACTIONS"
  1. S TRDATE=""
  1. F S TRDATE=$O(^BARSESS(DUZ(2),"NS",TRDATE)) Q:TRDATE="" D
  1. .S SESSID=$O(^BARSESS(DUZ(2),"NS",TRDATE,""))
  1. .S UDUZ=$O(^BARSESS(DUZ(2),"NS",TRDATE,SESSID,""))
  1. .;D GETDATA(TRDATE,.RECORD,.TOTAMT)
  1. .D GETDATA^BARUFEX1(TRDATE,.RECORD,.TOTAMT,UDUZ,SESSID)
  1. Q
  1. ;
  1. OLD(SESSID) ;FIND OLDEST SESSION DATE BAR*1.8*4 DD 4.1.1
  1. N DATE,OLD,REC
  1. S OLD=$G(SESSID)
  1. S REC=""
  1. F S REC=$O(SESSID(REC)) Q:REC="" D
  1. .S DATE=$P(SESSID(REC),U,2)
  1. .I OLD="" S OLD=DATE
  1. .I OLD>DATE S OLD=DATE ;CAPTURE OLDEST DATE
  1. Q OLD-2 ;MAKE A LITTLE OLDER
  1. ;
  1. LCK(UDUZ,SESSID) ;EP; LOCK A/R SESSION FILE ;MRS:BAR*1.8*7 IM30562
  1. ;
  1. N X
  1. F I=1:1:5 LOCK +^BARSESS(DUZ(2),UDUZ,11,SESSID):2 S X=$T Q:X
  1. I 'X D Q X
  1. .W *7,!!,"A/R UFMS CASHIER SESSION FILE IS LOCKED for SESSION "_SESSID
  1. .W !," SOMEONE ELSE MAY BE EXPORTING, TRY THIS SESSION AGAIN LATER "
  1. .H 3
  1. Q X
  1. ;
  1. ;OLD SUBROUTINES DISABLED AND MOVED TO BOTTOM OF ROUTINE;MRS:BAR*1.8*7 IM30562
  1. ASKDATE ;EP - ASK DATE RANGE
  1. ASKFROM ;EP - ASK FROM DATE
  1. Q ;DISABLED MRS:BAR*1.8*7 IM30562
  1. K %DT
  1. S %DT="AET"
  1. S %DT("A")="Enter beginning transaction date: "
  1. D ^%DT
  1. Q:X=""!(X[U)
  1. I Y<0 W !,"INVALID DATE. TRY AGAIN!" H 2 G ASKFROM
  1. S BARFROM=Y
  1. ASKTO ;EP - ASK TO DATE
  1. Q ;DISABLED MRS:BAR*1.8*7 IM30562
  1. K %DT
  1. S %DT="AET"
  1. S %DT("A")="Enter ending transaction date: "
  1. D ^%DT
  1. G:X=""!(X[U) ASKFROM
  1. I Y<0 W !,"INVALID DATE. TRY AGAIN!" H 2 G ASKTO
  1. S BARTO=Y
  1. I BARTO<BARFROM W !!,"END DATE MUST BE GREATER THAN BEGINING DATE" H 2 G ASKFROM
  1. ASKFILE ;EP - ASK FILENAME
  1. Q ;DISABLED MRS:BAR*1.8*7 IM30562
  1. S RC=$$ASKFNAME^BARUFUT1(.BARFILE)
  1. I 'RC W !!,"FILE NOT TRANSMITTED" D ASKFORRT^BARUFUT Q
  1. D EN(BARFROM,BARTO)
  1. I '$D(^BARUFEX($J)) D
  1. .W !,"THERE WERE NO TRANSACTIONS FOUND ELIGIBLE FOR TRANSMISSION!"
  1. .D ASKFORRT^BARUFUT
  1. D SENDFILE^BARUFUT2("BARUFEX(",BARFILE)
  1. Q
  1. ONETRAN(TRDATE,SESSID) ;EP - CREATE FILE FOR ONE/MANY A/R TRANSACTION
  1. Q ;DISABLED;MRS:BAR*1.8*7 IM30562
  1. N REC
  1. K ^BARUFEX($J)
  1. S ARFROM=TRDATE-.01
  1. S ARFROM=ARFROM-.00001
  1. D PRE^BARUFEX5(ARFROM,DUZ) ;CREATE ^BARBOB GLOBAL
  1. S RC=$$ASKFNAME^BARUFUT1(.BARFILE)
  1. I 'RC W !!,"TRANSACTIONS NOT TRANSMITTED" D ASKFORRT^BARUFUT Q
  1. S (RECORD,TOTAMT)=0
  1. ;
  1. S REC=""
  1. F S REC=$O(TRDATE(REC)) Q:REC="" D
  1. .S TRDATE=TRDATE(REC)
  1. .;D GETDATA(TRDATE,.RECORD,.TOTAMT)
  1. .D GETDATA^BARUFEX1(TRDATE,.RECORD,.TOTAMT,UDUZ,SESSID)
  1. I '$D(^BARUFEX($J)) D Q
  1. .W !,"THERE WERE NO TRANSACTIONS FOUND ELIGIBLE FOR TRANSMISSION!"
  1. .D ASKFORRT^BARUFUT
  1. ;DO THE TRAILER
  1. S RECTYPE="T"
  1. S RECORDS=$$FILLSTR^BARUFUT1(RECORD,10,"R","0")
  1. S TOTAMT=$$FILLSTR^BARUFUT1(TOTAMT,20,"R","0")
  1. S ^BARUFEX($J,RECORD)=RECTYPE_RECORDS_TOTAMT
  1. D SENDFILE^BARUFUT2("BARUFEX(",BARFILE)
  1. Q
  1. EN(ARFROM,ARTO) ;EP - ENTRY TO MAIN UFMS EXTRACT. PULL ALL TRANSACTIONS W/IN DATE RANGE
  1. Q ;DISABLED MRS:BAR*1.8*7 IM30562
  1. N TRDATE,ENDDATE,TODATE
  1. N IENS,UFMSTRDT,ARCREDIT,ARDEBIT,ARBILL,UFMSBILL,TPBIEN,TPBLOC,BARACCT,TPBSTAT
  1. N ARCOL,ARCOLIN,ARASUFAC,ARCOLDT,TRANTYPE,UFMSTYPE,UFMSAMT,APPLYTO,BARAREA,PARNTLOC
  1. K ^BARUFEX($J)
  1. S:$G(ARFROM)="" ARFROM=DT-.01
  1. S:$G(ARTO)="" ARTO=DT
  1. S ENDDATE=ARTO_.999999
  1. D PRE^BARUFEX5(ARFROM,DUZ) ;CREATE ^BARBOB GLOBAL ;BAR*1.8*4 UFMS ;bar*1.8*4 SDR
  1. S TRDATE=ARFROM-.00001
  1. S RECORD=1,TOTAMT=0
  1. F S TRDATE=$O(^BARTR(DUZ(2),TRDATE)) Q:'TRDATE!(TRDATE>ENDDATE) D
  1. .;D GETDATA(TRDATE,.RECORD,.TOTAMT) ;MRS:BAR*1.8*7 IM30562
  1. .D GETDATA^BARUFEX1(TRDATE,.RECORD,.TOTAMT)
  1. ;
  1. ;DO THE TRAILER
  1. S RECTYPE="T"
  1. S RECORDS=$$FILLSTR^BARUFUT1(RECORD,10,"R","0")
  1. S TOTAMT=$$FILLSTR^BARUFUT1(TOTAMT,20,"R","0")
  1. S ^BARUFEX($J,RECORD)=RECTYPE_RECORDS_TOTAMT
  1. Q