[613] | 1 | PRCHAMYC ;WISC/DJM-UPDATING THE LINE ITEM DISCOUNTS ON THE AMENDED 442 RECORD ;2/17/95 11:00 AM
|
---|
| 2 | V ;;5.1;IFCAP;**91**;Oct 20, 2000
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;GO THROUGH ALL LINE ITEMS AND CREATE 'PRCH("AM",PRCHCN)' ARRAY
|
---|
| 5 | ;PRCHCN CAN BE A 'CONTRACT NUMBER' OR '.OM'.
|
---|
| 6 | ;PRCH("AM",PRCHCN) HAS 3 "^" PARTS.
|
---|
| 7 | ; PART 1 = NUMBER OF LINE ITEMS IN THIS ARRAY ELEMENT.
|
---|
| 8 | ; PART 2 = TOTAL $AMOUNT OF ALL LINE ITEMS IN ARRAY ELEMENT.
|
---|
| 9 | ; PART 3 = LISTING OF ALL LINE NUMBERS IN THIS ARRAY ELEMENT.
|
---|
| 10 | ;THE LISTING IS SAVED IN THE FORMAT NEEDED TO USE WITHIN A MUMPS
|
---|
| 11 | ;'FOR' COMMAND. FOR EXAMPLE: 1:1:2,4,6,8:11,
|
---|
| 12 | ;
|
---|
| 13 | ;kill existing PRCH("AM") array data
|
---|
| 14 | K PRCH("AM")
|
---|
| 15 | ;LOOP THROUGH ALL LINE ITEM ENTRIES AND ADD/UPDATE THE 'PRCH("AM",PRCHCN)' ARRAY.
|
---|
| 16 | S (PRCH,PRCHEC)=0 F I=1:1 S PRCH=$O(^PRC(442,PRCHPO,2,PRCH)) Q:PRCH=""!(PRCH'>0) D
|
---|
| 17 | .S PRCHAMX=$G(^PRC(442,PRCHPO,2,PRCH,2))
|
---|
| 18 | .S $P(PRCHAMX,U,6)="",^PRC(442,PRCHPO,2,PRCH,2)=PRCHAMX
|
---|
| 19 | .S PRCHCN=$P(PRCHAMX,U,2),PRCHAMX=$P(PRCHAMX,U),PRCHLI=I
|
---|
| 20 | .D CN:PRCHCN]"",OM:PRCHCN=""
|
---|
| 21 | .Q
|
---|
| 22 | S PRCHLCNT=I-1 S:$D(^PRC(442,PRCHPO,2,0)) $P(^(0),U,3,4)="1^"_PRCHLCNT
|
---|
| 23 | G UP
|
---|
| 24 | ;
|
---|
| 25 | LI ;CREAT THE ENTRY FOR THE 3rd "^" PIECE OF PRCH("AM",PRCHCN) HERE.
|
---|
| 26 | S PRCHL0=$P(PRCH("AM",PRCHL3),U,3) Q:PRCHL0="" F J=1:1 S PRCHL1=$E(PRCHL0,$L(PRCHL0)-J) Q:PRCHL1'=+PRCHL1
|
---|
| 27 | S PRCHL2=$E(PRCHL0,$L(PRCHL0)-J+1,$L(PRCHL0)-1),PRCHL2=PRCHL2+1 I PRCHL2'=PRCHLI S PRCHLI=PRCHL0_PRCHLI Q
|
---|
| 28 | I PRCHL1=":" S PRCHLI=$E(PRCHL0,1,$L(PRCHL0)-J)_PRCHLI Q
|
---|
| 29 | S PRCHLI=$E(PRCHL0,1,$L(PRCHL0)-1)_":1:"_PRCHLI
|
---|
| 30 | Q
|
---|
| 31 | ;
|
---|
| 32 | CN ;CREATE THE 'PRCH("AM",PRCHCN)' ARRAY ELEMENT HERE, ALL THREE PARTS, FOR LINE ITEMS WITH A CONTRACT NUMBER.
|
---|
| 33 | S:'$D(PRCH("AM",PRCHCN)) PRCH("AM",PRCHCN)="",PRCHEC=PRCHEC+1 S PRCHL3=PRCHCN
|
---|
| 34 | D LI S PRCH("AM",PRCHCN)=($P(PRCH("AM",PRCHCN),U,1)+1)_U_($P(PRCH("AM",PRCHCN),U,2)+PRCHAMX)_U_PRCHLI_",",^PRC(442,PRCHPO,2,"AC",$E(PRCHCN,1,30),PRCH)=""
|
---|
| 35 | Q
|
---|
| 36 | ;
|
---|
| 37 | OM ;CREATE THE 'PRCH("AM",PRCHCN)' ARRAY ELEMENT HERE, ALL THREE PARTS, FOR LINE ITEMS WITHOUT A CONTRACT NUMBER.
|
---|
| 38 | S:'$D(PRCH("AM",".OM")) PRCH("AM",".OM")="",PRCHEC=PRCHEC+1 S PRCHL3=".OM" D LI S PRCH("AM",".OM")=($P(PRCH("AM",".OM"),U,1)+1)_U_($P(PRCH("AM",".OM"),U,2)+PRCHAMX)_U_PRCHLI_","
|
---|
| 39 | Q
|
---|
| 40 | ;
|
---|
| 41 | UP ;NOW LETS DO THE ACTUAL UPDATING OF THE DISCOUNT FOR EACH LINE ITEM.
|
---|
| 42 | ;
|
---|
| 43 | S PRCH=0
|
---|
| 44 | F I=1:1 S PRCH=$O(^PRC(442,PRCHPO,3,PRCH)) Q:PRCH=""!(PRCH'>0) S PRCHCN=$S($P(^(PRCH,0),U,5)]"":$P(^(0),U,5),1:".OM"),PRCHAC=$P(^(0),U,1),PRCHACT=$P(^(0),U,4),PRCHP=$P(^(0),U,2) D SET
|
---|
| 45 | Q
|
---|
| 46 | ;
|
---|
| 47 | SET ;DECIDE THE LINE ITEM NUMBERS TO DO THE DISCOUNT ADJUSTMENT.
|
---|
| 48 | G:PRCHAC="Q" PCTQ
|
---|
| 49 | I PRCHAC[":" S PRCHAC=$P(PRCHAC,":",1)_":1:"_$P(PRCHAC,":",2)
|
---|
| 50 | ;
|
---|
| 51 | PCT ;FOR EACH 'LINE ITEM NUMBER' WITH A DISCOUNT DO IT HERE.
|
---|
| 52 | S PRCHAMT=0,Y="F J="_PRCHAC_" S PRCHN=J D PCT1 G:$D(PRCHER) Q" X Y
|
---|
| 53 | S PRCHAMT=PRCHAMT*100+.5\1/100,$P(PRCH("AM",PRCHCN),U,2)=$P(PRCH("AM",PRCHCN),U,2)-PRCHAMT
|
---|
| 54 | S $P(^PRC(442,PRCHPO,3,PRCH,0),U,3)=PRCHAMT,$P(^(0),U,6)=I+PRCHLCNT
|
---|
| 55 | Q
|
---|
| 56 | ;
|
---|
| 57 | PCT1 S PRCHN=$O(^PRC(442,PRCHPO,2,"B",PRCHN,0)),PRCHD=+$P($G(^PRC(442,PRCHPO,2,PRCHN,2)),U,1)
|
---|
| 58 | I $E(PRCHP,1)="$" S PRCHDA=$P(PRCHP,"$",2)/PRCHACT
|
---|
| 59 | E S PRCHDA=$J(PRCHD*(PRCHP/100),0,2)
|
---|
| 60 | S PRCHAMT=PRCHAMT+PRCHDA,$P(^PRC(442,PRCHPO,2,PRCHN,2),U,6)=PRCHDA
|
---|
| 61 | Q
|
---|
| 62 | ;
|
---|
| 63 | PCTQ ;COME HERE IF THE USER SELECTED A 'QUANTITY' DISCOUNT.
|
---|
| 64 | ;
|
---|
| 65 | S (PRCHAMT,PRCHCN,PRCHX)=0,PRCHACT=PRCHLCNT F K=0:0 S PRCHCN=$O(PRCH("AM",PRCHCN)) Q:PRCHCN="" S PRCHAC=$E($P(PRCH("AM",PRCHCN),U,3),1,$L($P(PRCH("AM",PRCHCN),U,3))-1) D PCT S PRCHX=PRCHX+PRCHAMT
|
---|
| 66 | S $P(^PRC(442,PRCHPO,3,PRCH,0),U,3)=PRCHX
|
---|
| 67 | Q
|
---|
| 68 | ;
|
---|