1 | PRCPSFIV ;WOIFO/RFJ,LKG-create fms iv issues code sheet ;4/27/05 14:08
|
---|
2 | ;;5.1;IFCAP;**81**;Oct 20, 2000
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | ;
|
---|
7 | IV(INVPT,TRANID,TRANNO,TRANDATE,STACKDA) ; create fms iv document
|
---|
8 | ; tranid=transaction register id number; tranno=ib number (from 410)
|
---|
9 | ; trandate=optional FMS acctg period, otherwise it uses the
|
---|
10 | ; transaction date
|
---|
11 | ; pass stackda for regeneration of document
|
---|
12 | ; loop transaction register for posted items
|
---|
13 | ; variables required:
|
---|
14 | ; prcpwsta = whse station #; prcppsta = buyer station #
|
---|
15 | ; prcpwfcp = whse fcp ; prcppfcp = buyer fcp
|
---|
16 | ; prcpwbfy = whse beg fy ; prcppbfy = buyer beg fy
|
---|
17 | N ACCT,BUYBFY,BUYEFY,BUYFUND,BUYJOB,BUYLINE,BUYTABLE,BUYXPROG,COSTCNTR,DATA,FMSLINE,GECSFMS,INVCOST,LINEDA,LINEDOC,PRCPDA,PRCPFMOD,PRCPFMS,PRCPSEC1,PROFIT,PROFLINE
|
---|
18 | N SELBFY,SELEFY,SELFUND,SELLCOST,SELLINE,SELTABLE,SELXPROG,SIGN,SUBACCT,TOTAL,TRANDA,VOUCHER
|
---|
19 | S PRCPDA=$O(^PRCS(410,"B",TRANNO,0)) I 'PRCPDA Q
|
---|
20 | I $D(^PRCS(410,PRCPDA,"IT","FMSLINE")) S PRCPFMOD=1
|
---|
21 | K PRCPFMS
|
---|
22 | S (TRANDA,TOTAL)=0 F S TRANDA=$O(^PRCP(445.2,"T",INVPT,TRANID,TRANDA)) Q:'TRANDA S DATA=$G(^PRCP(445.2,TRANDA,0)) I DATA'="" D
|
---|
23 | . S LINEDA=+$P(DATA,"^",24) I 'LINEDA Q
|
---|
24 | . I 'TRANDATE S TRANDATE=$P(DATA,"^",3)
|
---|
25 | . D FINDLINE^PRCPSFU0(PRCPDA,LINEDA)
|
---|
26 | . ; invcost and sellcost is minus when coming out of the whse
|
---|
27 | . ; inventory point. fms is positive when coming out of the whse.
|
---|
28 | . S INVCOST=-$P(DATA,"^",22),SELLCOST=-$P(DATA,"^",23)
|
---|
29 | . S PROFIT=SELLCOST-INVCOST
|
---|
30 | . ; total is total of unsigned amounts on all lines
|
---|
31 | . S TOTAL=TOTAL+SELLCOST
|
---|
32 | . I '$D(PRCPFMS(FMSLINE)) S PRCPFMS(FMSLINE)=ACCT_"^"_SUBACCT
|
---|
33 | . S $P(PRCPFMS(FMSLINE),"^",3)=$P(PRCPFMS(FMSLINE),"^",3)+INVCOST
|
---|
34 | . S $P(PRCPFMS(FMSLINE),"^",4)=$P(PRCPFMS(FMSLINE),"^",4)+PROFIT
|
---|
35 | I '$D(PRCPFMS) Q
|
---|
36 | IVCOTS ;Entry Point for building IV for COTS inventory transaction
|
---|
37 | ; set up document variables
|
---|
38 | S COSTCNTR=$P($G(^PRCS(410,PRCPDA,3)),"^",3),COSTCNTR=$S($D(^PRCD(420.1,+COSTCNTR,0)):$P(^(0),"^"),1:COSTCNTR)
|
---|
39 | S VOUCHER=$P($G(^PRCS(410,PRCPDA,445)),"^") S VOUCHER=$E(VOUCHER_"00000",1,6)
|
---|
40 | ; seller=whse
|
---|
41 | ; table=^^xprogram(fcp/prj)^^linefund^beginfy^endfy^^^job
|
---|
42 | S SELTABLE=$$ACC^PRC0C(PRCPWSTA,PRCPWFCP_"^"_$P(TRANNO,"-",2)_"^"_PRCPWBFY)
|
---|
43 | S SELXPROG=$P(SELTABLE,"^",3),SELFUND=$P(SELTABLE,"^",5),SELBFY=$E($P(SELTABLE,"^",6),3,4),SELEFY=$E($P(SELTABLE,"^",7),3,4)
|
---|
44 | I SELEFY=SELBFY S SELEFY=""
|
---|
45 | ; buyer
|
---|
46 | S BUYTABLE=$$ACC^PRC0C(PRCPPSTA,PRCPPFCP_"^"_$P(TRANNO,"-",2)_"^"_PRCPPBFY)
|
---|
47 | S BUYXPROG=$P(BUYTABLE,"^",3),BUYFUND=$P(BUYTABLE,"^",5),BUYBFY=$E($P(BUYTABLE,"^",6),3,4),BUYEFY=$E($P(BUYTABLE,"^",7),3,4),BUYJOB=$P(BUYTABLE,"^",10)
|
---|
48 | I BUYEFY=BUYBFY S BUYEFY=""
|
---|
49 | ;
|
---|
50 | ; build control segments in gcs
|
---|
51 | S PRCPSEC1=$$SEC1^PRC0C(PRCPWSTA) S:PRCPSEC1="" PRCPSEC1=10
|
---|
52 | I '$G(STACKDA) D CONTROL^GECSUFMS("I",PRCPWSTA,PRCPWSTA_VOUCHER,"IV",PRCPSEC1,+$G(PRCPFMOD),"Y","post issue book: "_TRANNO_" tranid: "_TRANID)
|
---|
53 | I $G(STACKDA) D REBUILD^GECSUFM1(STACKDA,"I",PRCPSEC1,"Y","Rebuild post issue book: "_TRANNO_" tranid: "_TRANID) S GECSFMS("DA")=STACKDA
|
---|
54 | D SETPARAM^GECSSDCT(GECSFMS("DA"),TRANID)
|
---|
55 | ;
|
---|
56 | ; build iv2 segment
|
---|
57 | S LINEDOC="IV2^"_$E(TRANDATE,2,3)_"^"_$E(TRANDATE,4,5)_"^"_$E(TRANDATE,6,7)
|
---|
58 | S $P(LINEDOC,"^",9)=$S($D(GECSFMS("BAT")):"M",1:"E")
|
---|
59 | S $P(LINEDOC,"^",21)=$E($TR($P(TRANNO,"-",2,5),"-"),1,12)
|
---|
60 | S $P(LINEDOC,"^",22)=$J($S(TOTAL<0:-TOTAL,1:TOTAL),0,2)
|
---|
61 | D SETCS^GECSSTAA(GECSFMS("DA"),LINEDOC_"^~")
|
---|
62 | ;
|
---|
63 | ; build line documents
|
---|
64 | S LINEDA=0 F S LINEDA=$O(PRCPFMS(LINEDA)) Q:'LINEDA S DATA=PRCPFMS(LINEDA) D
|
---|
65 | . S ACCT=$P(DATA,"^"),SUBACCT=$P(DATA,"^",2),INVCOST=$P(DATA,"^",3),PROFIT=$P(DATA,"^",4)
|
---|
66 | . S SIGN="I" I INVCOST<0 S INVCOST=-INVCOST,SIGN="D"
|
---|
67 | . S SELLINE="LIN^~IVA^"_$E("000",$L(LINEDA)+1,3)_LINEDA_"^"_$J(INVCOST,0,2)_"^"_SIGN_"^^"_SELBFY_"^"_SELEFY_"^"_SELFUND_"^"_PRCPWSTA_"^^^^"_SELXPROG_"^^^^SFCS^^^0"_$S(ACCT=1:4,ACCT=2:6,ACCT=8:2,1:8)_"^^"
|
---|
68 | . S BUYLINE="^"_BUYBFY_"^"_BUYEFY_"^"_BUYFUND_"^"_PRCPPSTA_"^^"_$E(COSTCNTR,1,4)_"00^"_$E(COSTCNTR,5,6)_"^"_BUYXPROG_"^"_SUBACCT_"^~"
|
---|
69 | . S LINEDOC=SELLINE_BUYLINE_"IVB^01^~"
|
---|
70 | . I INVCOST D SETCS^GECSSTAA(GECSFMS("DA"),LINEDOC)
|
---|
71 | . I 'PROFIT Q
|
---|
72 | . ; create profit line
|
---|
73 | . S SIGN="I" I PROFIT<0 S PROFIT=-PROFIT,SIGN="D"
|
---|
74 | . S PROFLINE=LINEDA+1
|
---|
75 | . S SELLINE="LIN^~IVA^"_$E("000",$L(PROFLINE)+1,3)_PROFLINE_"^"_$J(PROFIT,0,2)_"^"_SIGN_"^^"_SELBFY_"^"_SELEFY_"^"_SELFUND_"^"_PRCPWSTA_"^^^^"_SELXPROG_"^^^^SFPR^^^0"_($S(ACCT=1:4,ACCT=2:6,ACCT=8:2,1:8)+1)_"^^"
|
---|
76 | . S BUYLINE="^"_BUYBFY_"^"_BUYEFY_"^"_BUYFUND_"^"_PRCPPSTA_"^^"_$E(COSTCNTR,1,4)_"00^"_$E(COSTCNTR,5,6)_"^"_BUYXPROG_"^"_SUBACCT_"^~"
|
---|
77 | . S LINEDOC=SELLINE_BUYLINE_"IVB^01^~"
|
---|
78 | . D SETCS^GECSSTAA(GECSFMS("DA"),LINEDOC)
|
---|
79 | ;
|
---|
80 | D SETSTAT^GECSSTAA(GECSFMS("DA"),"Q")
|
---|
81 | D EN^DDIOL("FMS IV "_$S($D(GECSFMS("BAT")):"MODIFICATION ",1:"")_PRCPWSTA_VOUCHER_" document automatically "_$S($G(STACKDA):"RE-",1:"")_"transmitted.","","!?4")
|
---|
82 | Q
|
---|