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

BARPPY1A.m

Go to the documentation of this file.
  1. BARPPY1A ; IHS/SD/TMM - PREPAYMENT ENTRY - CONT'D ; 05/11/2010
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**19**;OCT 26, 2005
  1. ;
  1. ; IHS/SD/TMM 06/18/10 1.8*19 Add Prepayment functionality.
  1. ; *********************************************************************
  1. ;
  1. NEW() ;EP - extrensic call to establish a new prepayment record
  1. ; returns 0-lock on file, fm-dt/sec -IEN ; -1 not added
  1. F I=1:1:5 L +^BARPPAY(DUZ(2)):2 S X=$T Q:X
  1. I 'X D Q X
  1. . W *7,!!,"A/R PREPAYMENT FILE LOCKED, try again",!!
  1. ;---- Create Pre-Payment record
  1. K DIC,DR,DA
  1. S DIC="^BARPPAY(DUZ(2),"
  1. S DIC(0)="E"
  1. K DD,DO
  1. D FILE^DICN
  1. K DR,DA,DIE
  1. L -^BARPPAY(DUZ(2))
  1. Q +Y
  1. ;
  1. PAD(BARVAR,BARLNG) ; EP
  1. ; BARVAR = data
  1. ; BARLNG = length
  1. ; Right justify, zero fill value BARVAR for length BARLNG
  1. K BARZERO
  1. S $P(BARZERO,"0",BARLNG+1)=""
  1. S BARVAR=BARZERO_BARVAR
  1. S BARVAR=$E(BARVAR,$L(BARVAR)-(BARLNG-1),$L(BARVAR))
  1. Q BARVAR
  1. ;
  1. CARDTYPE(CARD) ;
  1. S CARDTYPE=$S(CARD="A":"AMERICAN EXPRESS",CARD="C":"DINERS CLUB",CARD="D":"DISCOVER",CARD="M":"MASTERCARD",CARD="V":"VISA",1:"")
  1. Q CARDTYPE
  1. ;
  1. PAYTYPE(PMTYP) ;
  1. S PAYTYPE=$S(PMTYP="CA":"CASH",PMTYP="CK":"CHECK",PMTYP="CC":"CREDIT CARD",PMTYP="DB":"DEBIT CARD",1:"")
  1. Q PAYTYPE
  1. ;
  1. CKOUT() ; Check DIR values
  1. I $D(DTOUT)!$D(DUOUT)!$D(DIROUT)!$G(BARSTOP) Q 1
  1. Q 0
  1. ;
  1. ; *********************************************************************
  1. HINPTON ; Hilight when PT NAME field
  1. I $G(BARPAT)'="",BARPAT'=BARPTI1 D
  1. . W $$EN^BARVDF("HIN")
  1. . S HINPTON=1
  1. Q
  1. ;
  1. HINPTOFF ; Turn off Hilight when PT NAME field
  1. W $$EN^BARVDF("HIF")
  1. S HINPTON=0
  1. Q
  1. ;
  1. HINBLON ; Hilight DOS fields
  1. I BARDOSB'="",BARDOSB'=BARPDOS D
  1. . W $$EN^BARVDF("HIN")
  1. . S HINBLON=1
  1. Q
  1. ;
  1. HINBLOFF ; Turn off hilight for DOS fields
  1. W "**",$$EN^BARVDF("HIF")
  1. S HINBLON=0
  1. Q
  1. ;
  1. RECAP ; Display data for user to review and select next step
  1. Q:BARSTOP
  1. W $$EN^BARVDF("IOF"),! ;Form Feed/Clear screen
  1. W $$EN^BARVDF("CLR") ;Clear screen
  1. S Y=BARPDOS
  1. D D^DIQ ;get external date
  1. D HINBLON
  1. W !,"1)",?4,"PAYMENT FOR DOS:",?22,Y
  1. I HINBLON D HINBLOFF
  1. W !,"2)",?4,"CREDIT: ",?22,"$",$FN(BARAMT,",",2)
  1. W !!,"3)",?4,"DEPARTMENT:",?22,BARDEPTE
  1. I BARPMTYP="CA" S BARTMP="CASH^^"
  1. I BARPMTYP="CK" S BARTMP="CHECK^CHECK NUMBER:^NAME ON CK ACCOUNT:"
  1. I BARPMTYP="CC" S BARTMP="CREDIT CARD^CARD TYPE:^NAME ON CARD:"
  1. I BARPMTYP="DB" S BARTMP="DEBIT CARD^CARD TYPE:^NAME ON CARD:"
  1. W !!,"4)",?4,"PAYMENT TYPE:",?22,$P(BARTMP,U) ;PAYMENT TYPE line 1
  1. S BARTMP1=$S(BARPMTYP="CK":BARCK,BARPMTYP="CC":BARCTYPN,BARPMTYP="DB":BARCTYPN,1:"")
  1. I $P(BARTMP,U)'="CASH" D
  1. . W !,?4,$P(BARTMP,U,2),?22,BARTMP1 ;PAYMENT TYPE line 2
  1. . S BARTMP1=$S("^CK^CC^DB^"[BARPMTYP:BARCNAME,1:"")
  1. . W !,?4,$P(BARTMP,U,3),?22,BARTMP1 ;PAYMENT TYPE line 3
  1. W !!,"5)",?4,"A/R BILL NUMBER:",?22,$$GET1^DIQ(90050.01,BARBLIEN_",",.01,"E")
  1. I BARBLIEN'="" D HINPTON ;hilight patient name when applicable
  1. W !,?4,"PATIENT NAME:",?22,$S(+BARPAT:$P(^DPT(BARPAT,0),U),1:"")
  1. I HINPTON D HINPTOFF ;hilight patient name when applicable
  1. I BARBLIEN'="" D HINBLON
  1. S Y=$G(BARDOSB)
  1. D D^DIQ ;converts internal FM date to external
  1. W !,?4,"BILL DOS:",?22,Y
  1. I HINBLON D HINBLOFF
  1. D HINPTON
  1. W !!,"6)",?4,"PATIENT:",?22,BARPTNM1
  1. I HINPTON D HINPTOFF
  1. CMT ;Comments
  1. K BARCMT ; comments array
  1. S BARCMT=$L(BARCMTS)
  1. N SP,W,L,WORD S SP=" ",L=1 ;SP-space; W- WordCtr; L-LINE#
  1. S BARCMT(1)=""
  1. F W=1:1 S WORD=$P(BARCMTS,SP,W) Q:WORD="" D
  1. . I W>1 S WORD=SP_WORD ; space betw words
  1. . I ($L(BARCMT(L))+$L(WORD))'>70 S BARCMT(L)=BARCMT(L)_WORD
  1. . E S L=L+1,BARCMT(L)=$E(WORD,2,99) ; remove leading space
  1. I BARCMT(1)="" K BARCMT
  1. W !!,"7)",?4,"COMMENTS:"
  1. F I=1:1:4 S BARCMT=$O(BARCMT(I)) Q:$G(BARCMT(I))="" D
  1. . S BARCMT(5)=BARCMT(I)
  1. . I BARCMT(I)=1 W " "
  1. . E I $E(BARCMT(5),$L(BARCMT(5)))'=" "&($E(BARCMT(I))'=" ") W " "
  1. . W BARCMT(I)
  1. K BARCMT(5)
  1. ;
  1. FMQ ; Prompt F/M/Q
  1. I $G(BARDOSB)'="",BARDOSB'=BARPDOS W !!,?4,$$EN^BARVDF("HIN"),BARNOTE1,$$EN^BARVDF("HIF")
  1. I $G(BARPAT)'="",BARPAT'=BARPTI1 W $$EN^BARVDF("HIN"),!!,?4,BARNOTE2,$$EN^BARVDF("HIF")
  1. S BARFILE=""
  1. W !!
  1. D RESETDIR^BARPPY01
  1. S DIR(0)="SA^F:FILE;M:MODIFY;Q:QUIT"
  1. S DIR("A")="FILE PREPAYMENT? SELECT (F)ILE, (M)ODIFY, (Q)UIT: "
  1. K DA
  1. D ^DIR
  1. I $D(DUOUT)!$D(DIROUT) G FMQ
  1. I $D(DTOUT) Q
  1. S BARFILE=X
  1. ;
  1. ; ---FILE---
  1. I "Ff"[BARFILE D
  1. . S BARTMPF="OK" ;OK to file (No A/R Bill Selected, or A/R Bill selected and matches item 6 PATIENT)
  1. . I +$G(BARPTI1)=0,(+$G(BARBLIEN)=0) S BARTMPF="NOB" ;bar*1.8*19 SDR
  1. . I $G(BARPAT)'="",BARPAT'=BARPTI1 S BARTMPF="NOK" ;A/R Bill selected and does not match item 6 PATIENT)
  1. ;start new code bar*1.8*19 SDR
  1. I "Ff"[BARFILE,($G(BARTMPF)="NOB") D G RECAP
  1. .W !!,"A PATIENT or a BILL NUMBER is required!" H 1
  1. ;end new SDR
  1. I "Ff"[BARFILE,BARTMPF="NOK" D
  1. . W !!
  1. . S DIR("A",1)="Patient in Item 5 does not match Patient in Item 6"
  1. . S DIR("A",2)="Do you still want to file this data?"
  1. . S DIR("A",3)=" Enter 'YES' to File data"
  1. . S DIR("A",4)=" Enter 'NO' to Modify data"
  1. . S DIR("A",5)=" "
  1. . S DIR("A")= "Enter YES/NO: "
  1. . S DIR("B")="NO"
  1. . S DIR(0)="YA"
  1. . D ^DIR
  1. . I Y=1 S BARTMPF="OK" Q
  1. I "Ff"[BARFILE,BARTMPF="OK" Q
  1. I "Ff"[BARFILE,BARTMPF="NOK" G RECAP
  1. I "Qq"[BARFILE,Y=1 S BARQUIT=1 Q
  1. I "Qq"[BARFILE,Y=0 G FMQ
  1. ;
  1. I "Qq"[BARFILE D
  1. . W !!
  1. . S DIR("A",1)="Are you sure you want to quit?"
  1. . S DIR("A",2)="The data you have entered will not be saved."
  1. . S DIR("A")="Proceed with quit? YES/NO "
  1. . S DIR("B")="NO"
  1. . S DIR(0)="YA"
  1. . D ^DIR
  1. I "Qq"[BARFILE,Y=1 S BARQUIT=1 Q ;M819*ADD*TMM*20100826
  1. I "Qq"[BARFILE,Y=0 G FMQ
  1. S BARDONE=0
  1. F I=1:1 D Q:BARDONE
  1. . S BARUPDT=1
  1. . D UPDT
  1. . S BARUPDT=0
  1. Q
  1. ;
  1. FILE ;File prepayment
  1. ; Get new IEN for ^BARPPAY
  1. S BARPPIEN=$$NEW^BARPPY1A()
  1. FDATA ; Add Pre-Payment data
  1. K DIE,DR,DA
  1. ; Receipt #
  1. I '$D(BARPSAT(DUZ(2),2)) D BARPSAT^BARUTL0
  1. S BARSUFX=$G(BARPSAT(DUZ(2),2))
  1. S BARCPT=BARSUFX_$$PAD^BARPPY1A(BARPPIEN,10)
  1. S DR=".01////^S X=BARCPT"
  1. ; Other data
  1. D NOW^%DTC
  1. S BARPDOSE=$P(%,".")
  1. S DR=DR_";.02////^S X=BARPDOSE" ;PAYMENT DATE
  1. S DR=DR_";.03////^S X=BARPMTYP" ;PAYMENT TYPE
  1. S DR=DR_";.04////^S X=$G(BARCK)" ;CHECK #
  1. S DR=DR_";.05////^S X=$G(BARCNAME)" ;BANK ACCOUNT OWNER NAME
  1. S DR=DR_";.06////^S X=$G(BARCTYPE)" ;CARD TYPE
  1. S DR=DR_";.07////^S X=$G(BARAMT)" ;CREDIT
  1. S DR=DR_";.08////^S X=$G(BARPTI1)" ;PATIENT (IEN) (selected patient, not A/R BILL patient)
  1. S DR=DR_";.09////^S X=$G(BARBLIEN)" ;A/R BILL
  1. S DR=DR_";.1////^S X=DUZ" ;ENTERED BY
  1. S DR=DR_";.11////^S X=BARDEPTI" ;DEPARTMENT
  1. S DR=DR_";.12////^S X=$G(BARDOSB)" ;BILL DOS
  1. S DR=DR_";.13////^S X=BARPDOS" ;PAYMENT FOR DOS
  1. S DR=DR_";.18////^S X=""N""" ;BATCH FLAG
  1. ; Add to Pre-Payment file
  1. S DA=BARPPIEN
  1. S DIE=$$DIC^XBDIQ1(90050.06)
  1. D ^DIE
  1. CMTFILE ;EP
  1. S BARIENS=BARPPIEN_","
  1. D WP^DIE(90050.06,BARIENS,101,"","BARCMT","MSG")
  1. D WP^DIE(90050.06,BARIENS,.2,"","BARCMT","MSG")
  1. W !!!,?9,"RECEIPT #:",?22,BARCPT
  1. Q
  1. ;
  1. UPDT ; Allow user to modify data entered
  1. Q:BARSTOP
  1. S (BARITEM,BARLIST)=""
  1. W !!
  1. D RESETDIR^BARPPY01
  1. S BARLIST="SAO^1:PAYMENT FOR DOS;2:CREDIT;3:DEPARTMENT"
  1. S BARLIST=BARLIST_";4:PAYMENT TYPE INFO"
  1. S BARLIST=BARLIST_";5:A/R BILL INFO"
  1. S BARLIST=BARLIST_";6:PATIENT"
  1. S BARLIST=BARLIST_";7:COMMENTS"
  1. S DIR(0)=BARLIST
  1. S DIR("A")="SELECT ITEM TO MODIFY: (?? for list) "
  1. K DA
  1. D ^DIR
  1. I $D(DIROUT) S BARSTOP=1 Q
  1. I $D(DTOUT)!$D(DUOUT) S BARDONE=1 Q
  1. K DIRUT
  1. S BARITEM=X
  1. I BARITEM=1 F I=1:1 D Q:(+BARPDOS)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT)!(BARSTOP)
  1. . ; Get DOS for this payment
  1. . S BARPDOS=""
  1. . D PAYDOS1^BARPPY01
  1. . I $D(DIROUT) S BARSTOP=1
  1. I BARITEM=2 F I=1:1 D Q:(+BARAMT>0)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT)!(BARSTOP)
  1. . ; Enter Credit amount
  1. . D AMOUNT1^BARPPY01
  1. . I $D(DIROUT) S BARSTOP=1
  1. I BARITEM=3 F I=1:1 D Q:(BARDEPTI'="")!$D(DTOUT)!($D(DUOUT))!$D(DIROUT)!(BARSTOP)
  1. . D SELDEPT^BARPPY01
  1. . I $D(DIROUT) S BARSTOP=1
  1. I BARITEM=4 F I=1:1 D Q:($G(BARDAT))!$D(DTOUT)!($D(DUOUT))!$D(DIROUT)!(BARSTOP)
  1. . S BARDAT=0 ;required data collected flag
  1. . D SELPMT^BARPPY01
  1. . I $D(DIROUT) S BARSTOP=1
  1. I BARITEM=5 F I=1:1 D Q:($D(BARFPASS))!$D(DTOUT)!$D(DUOUT)!$D(DIROUT)!(BARSTOP)
  1. . ; Get A/R Bill, Patient, A/R Bill DOS
  1. . K BARFPASS
  1. . D ARBILL1^BARPPY01
  1. . I $D(DIROUT) S BARSTOP=1
  1. I BARITEM=6 F I=1:1 D Q:($D(BARPTNM1))!$D(DTOUT)!$D(DUOUT)!$D(DIROUT)!(BARSTOP)
  1. . ; Get Patient Name
  1. . D GETPAT1^BARPPY01
  1. . I $D(DIROUT) S BARSTOP=1
  1. I BARITEM=7 D CMTS^BARPPY01
  1. D RECAP
  1. S BARDONE=1
  1. Q