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

ACRFIV42.m

Go to the documentation of this file.
  1. ACRFIV42 ;IHS/OIRM/DSD/AEF,MRS - ARMS TO 1166 PAYMENT INTERFACE [ 05/09/2005 8:51 AM ]
  1. ;;2.1;ADMIN RESOURCE MGT SYSTEM;**16,17**;JUL 31, 2001
  1. ;ACR*2.1*16.06 IM15505 ;NEW ROUTINE
  1. ;
  1. ; UTILITY EDIT PAYMENT DATA AFTER INVOICE AUDIT COMPLETED
  1. ; CONTINUED FROM ACRFIV41
  1. ; CALLED TO DO DISCOUNT AND DISCOUNT LOST PROCESSING ONLY
  1. ;
  1. LOST(ACRTERMS) ;EP;INDICATE THE PERCENT OF DISCOUNT LOST
  1. ;TEMPORARY OUT OF ORDER MESSAGE
  1. W !!!,"The Discount Lost option is not available at this time"
  1. D PAUSE^ACRFWARN
  1. Q
  1. S DIR(0)="NOA^0:99"
  1. S DIR("A")="Percent of the Discount Lost: "
  1. W !
  1. D DIR^ACRFDIC
  1. Q:$D(ACROUT)
  1. I +Y D
  1. . S $P(ACRTERMS,U,3)=+Y
  1. . S ACRT=-2 ;Flag/Capture rate
  1. I $G(ACRTERMS)="" D
  1. .S DIR(0)="NOA^0:100000:2"
  1. .S DIR("A")="Actual Dollar amount LOST...: "
  1. .W !
  1. .D DIR^ACRFDIC
  1. .I +Y D
  1. . . S $P(ACRTERMS,U,2)=+Y
  1. . . S ACRT=-2 ;Flag/Capture amount
  1. I $G(ACRTERMS)="" D Q
  1. .W !!,"NO Lost Discount will be recorded."
  1. .K ACRTERMS
  1. .Q
  1. S $P(ACRTERMS,U,14)=ACRT
  1. D PAY^ACRFIV43(.ACRIVPAY,.ACRIVT,.ACRTERMS,.ACRT)
  1. D CORRECT^ACRFIV43(.ACRDT,.ACRPCNT,.ACRIVDC,.ACRTERMS,.ACRIVTF)
  1. I '$D(ACRDT) D KILL G LOST
  1. S $P(ACRTERMS,U,8)=19817 ;Discount Lost transaction code
  1. Q
  1. ;
  1. DISCOUNT(ACRTERMS,ACRDT,ACROUT,ACRQUIT,ACRIVPAY) ;EP;DISCOUNT TERMS
  1. DISC K ACRDT,ACRQUIT,ACRTERMS,ACRTYPE,ACRT
  1. N J,X,Y,Z
  1. D DTSEL
  1. Q:$D(ACRQUIT)
  1. I $G(ACRTERMS)="" D
  1. .W !!,"No DISCOUNT TERMS selected for this PAYMENT"
  1. .D KILL
  1. I ACRT]"",ACRT'=-1 D DCAN(.ACRTERMS,ACRT,.ACRIVDIS)
  1. D PAY^ACRFIV43(.ACRIVPAY,.ACRIVT,.ACRTERMS,.ACRT)
  1. D CORRECT^ACRFIV43(.ACRDT,.ACRPCNT,.ACRIVDC,.ACRIVTF)
  1. I '$D(ACRDT) D G DISC
  1. .D KILL
  1. .K ACRQUIT
  1. K ACRQUIT
  1. Q
  1. ;
  1. DTSEL ;EP;SELECT TERMS APPLICABLE TO THIS PAYMENT
  1. S ACRTYPE="APPLY"
  1. S DIR(0)="SO^1:Discount Percent;2:Actual Dollar Discount"
  1. S DIR(0)=DIR(0)_";3:No Discounts;4:Discount Adjustments Complete"
  1. S DIR("A")="Discount Method"
  1. D DIR^ACRFDIC
  1. I '$G(Y) S ACRQUIT="" Q
  1. I Y=1 D S Y=1 ;UPDATE/SELECT VENDOR DISCOUNT TERMS
  1. .D DT^ACRFDT
  1. .;I $D(ACRQUIT)!$G(ACRDTDA)']"" D Q ;ACR*2.1*17.09 IM17312
  1. .I $D(ACRQUIT)!($G(ACRDTDA)']"") D Q ;ACR*2.1*17.09 IM17312
  1. ..W !!,"No DISCOUNT TERMS selected for this PAYMENT"
  1. ..D KILL
  1. .S $P(ACRTERMS,U)=$P(ACRDTDA,U) ;Discount Days
  1. .S $P(ACRTERMS,U,3)=$P(ACRDTDA,U,2) ;Discount % Rate
  1. .S ACRT=1 ;Discount w/percentage
  1. ;
  1. I Y=2 D DAMT
  1. Q:$G(ACRTERMS)=""
  1. S $P(ACRTERMS,U,8)="05025" ;Discount transaction code
  1. S $P(ACRTERMS,U,12)=ACRIVTF ;Invoice total
  1. S $P(ACRTERMS,U,14)=ACRT ;Type int/dsc (0 or 1)
  1. ;
  1. I Y=3 D
  1. .D KILL
  1. .S ACRQUIT=""
  1. Q
  1. DAMT ;SELECT DISCOUNT DOLLAR AMOUNT
  1. S DIR(0)="NOA^0:99999:2"
  1. S DIR("A")="Discount Dollar Amount: "
  1. W !
  1. D DIR^ACRFDIC
  1. I $D(ACRQUIT)!$G(ACRDTDA)']"" D Q
  1. .W !!,"No DISCOUNT TERMS selected for this PAYMENT" K ACRTERMS
  1. ;S $P(ACRTERMS,U,1,2)="D"_U_Y
  1. S $P(ACRTERMS,U,2)=Y
  1. S ACRT=0 ;Discount w/dollar amount given
  1. Q
  1. DCAN(ACRTERMS,ACRT,ACRIVDIS) ;DETERMINE WHICH OCC/SET SEPARATE DISCOUNT AMOUNTS PER OCC
  1. N ACR,ACRA,ACRC,ACRO,ACRJ,ACRDCNT,ACRPC
  1. S (ACRC,ACRJ,ACRPCTOT)=0
  1. S ACRDCNT=$$OBJCNT^ACRFIV43(.ACRIVPAY)
  1. Q:'ACRDCNT
  1. F S ACRC=$O(ACRIVPAY(ACRC)) Q:'ACRC D
  1. .S ACRO=0
  1. .F S ACRO=$O(ACRIVPAY(ACRC,ACRO)) Q:'ACRO D
  1. ..S ACR=ACRIVPAY(ACRC,ACRO) ;ORIGINAL ITEM AMOUNT
  1. ..S ACRA=$P(ACRTERMS,U,2) ;DISCOUNT DOLLAR AMOUNT
  1. ..S ACRATE=$P(ACRTERMS,U,3) ;DISCOUNT RATE
  1. ..S ACRTOT=$P(ACRTERMS,U,12) ;FULL INVOICE AMOUNT
  1. ..S ACRPC=$$PERCNT(ACR,ACRA,ACRATE,ACRTOT)
  1. ..S ACRPCTOT=ACRPCTOT+ACRPC
  1. ..D C1(ACR,.ACRIVDIS,ACRC,ACRO,ACRT,ACRPC,ACRPCTOT)
  1. S:$P(ACRTERMS,U,2)="" $P(ACRTERMS,U,2)=ACRPCTOT
  1. Q
  1. ;
  1. C1(ACRORG,ACRIVDIS,ACRCANDA,ACROBJDA,ACRT,ACRPC,ACRP) ;LOCAL ENTRY
  1. ; Sets ACRIVDIS(ACRCANDA,ACROBJDA array using ACRT
  1. ; ACRT >0 = Discount w/percentage
  1. ; ACRT =0 = Discount w/amount given
  1. ; ACRT -1 = Interest penalty amount
  1. ; ACRT -2 = Discount Lost
  1. ; If an interest penalty, uses fixed OCC=4319 = INTEREST-ALL OTHER
  1. ;
  1. ;S ACROBJDA=$S(ACRT>0:1,ACRT=0:1,1:$O(^AUTTOBJC("C",4319,0)))
  1. I ACRT=1!(ACRT=0) D ;DISCOUNT TAKEN FLAG
  1. .S ACRIVDIS(ACRCANDA,ACROBJDA)=ACRORG-ACRPC ;-DISCOUNT AMOUNT
  1. .S ACRIVDIS(ACRCANDA,ACROBJDA,"D")=ACRPC
  1. .S ACRIVDIS(ACRCANDA,"D")=ACRP ;TOTAL DISCOUNT ON INVOICE
  1. ; Changes below by Linda to test Interest display on individual items
  1. ;I ACRT<0 D ;INTEREST PENALTY
  1. I ACRT=-2 D ;LSL (Discount Lost)
  1. .S ACRIVDIS(ACRCANDA,ACROBJDA)=ACRP ;PENALTY AMOUNT
  1. .S ACRIVDIS(ACRCANDA,ACROBJDA,"P")=ACRP
  1. .S ACRIVDIS(ACRCANDA,"P")=ACRP
  1. I ACRT=-1 D ;LSL (Interest)
  1. .S ACRIVDIS(ACRCANDA,ACROBJDA)=ACRPC ;PENALTY AMOUNT
  1. .S ACRIVDIS(ACRCANDA,ACROBJDA,"P")=ACRPC
  1. .S ACRIVDIS(ACRCANDA,"P")=ACRPC
  1. Q
  1. PERCNT(ACRAMT,ACRA,ACRATE,ACRTOT) ;EXTRINSIC FUNCTION TO CALCULATE PERCENTAGE
  1. ; ENTERS WITH ACRAMT: ORIGINAL AMOUNT DUE FOR ITEM
  1. ; ACRA : DOLLAR AMOUNT TO BE DISCOUNTED, IF THERE or
  1. ; ACRATE: PERCENTAGE TO BE DISCOUNTED, IF THERE
  1. ; ACRTOT: TOTAL AMOUNT OF INVOICE
  1. ; RETURNS AMOUNT OF DISCOUNT
  1. ;
  1. N ACR
  1. I ACRA]"" D
  1. .S ACRATE=ACRA/ACRTOT ;CREATE PERCENTAGE
  1. S:ACRATE'["." ACRATE=ACRATE/100
  1. S ACR=ACRATE*ACRAMT
  1. S ACR=$J(ACR,"P",2)
  1. I ACR<0 S ACR=0
  1. Q ACR
  1. KILL ; KILL VARIABLES IF NOT CORRECT
  1. K ACRTERMS
  1. K ACRIVDIS
  1. K ACRQUIT
  1. S ACRT=""
  1. Q