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

ASU3BKOR.m

Go to the documentation of this file.
  1. ASU3BKOR ; IHS/ITSC/LMH -RELEASE BACKORDER ;
  1. ;;4.2T2;Supply Accounting Mgmt. System;;JUN 30, 2000
  1. ;;This routine provides logic for checking all back orders to see if
  1. ;;they may be released during the update which calls it.
  1. ;; Requires local arrays ASUC, ASUL, ASUM, ASUMB, ASUT, ASUV
  1. EN(X) ;EP; CHECK FOR BACKORDER FOR INDEX X
  1. S ASUMB("E#","IDX")=X,ASUMB("E#","QTY")=""
  1. F S ASUMB("E#","QTY")=$O(^ASUMB("AC",ASUMB("E#","IDX"),ASUMB("E#","QTY"))) Q:ASUMB("E#","QTY")="" D
  1. .S ASUMB("E#","REQ")="" N Z
  1. .F S ASUMB("E#","REQ")=$O(^ASUMB("AC",ASUMB("E#","IDX"),ASUMB("E#","QTY"),ASUMB("E#","REQ"))) Q:ASUMB("E#","REQ")="" D
  1. ..I '$D(^ASUMB(ASUMB("E#","REQ"),1,ASUMB("E#","IDX"),0)) Q
  1. ..S ASUM("RMK-B/O")="",ASUT("TRCD")="31",ASUT("TYPE")=3
  1. ..;S ASUV("TR")=$G(ASUT("TRCD")),ASUV("TP")=$G(ASUT("TYPE")),ASUV("DA")=ASUHDA
  1. ..D ^ASUMBOIO ;Read Backorder Master
  1. ..S ASUC("TR")=$G(ASUC("TR"))+1
  1. ..S ASUT="BOR"
  1. ..D GENBOR ;Copy Backorder Master fields into Transaction array
  1. ..S Z="Releasing Backorder for this item. Requested by: "_ASUL(22,"PGM","NM")_" - "_ASUL(20,"REQ","NM")_". For a quantity of: "_ASUMB("QTYB/O") W *7 D MSG^ASUJHELP(Z) ;DFM P1 9/1/98
  1. ..S X=ASUT(ASUT,"QTY"),Y="" D SPQ^ASU3ISQA(.X,.Y) ;Adjust quantity to standard pack, if aplicable
  1. ..S ASUT(ASUT,"QTY","ISS")=Y ;use adjusted qty if set
  1. ..I ASUT(ASUT,"QTY")'=Y D ;Quantity was adjusted
  1. ...S ASUT("RMK")="B/O-R ADJ"_ASUT(ASUT,"QTY")-ASUT(ASUT,"QTY","ISS")
  1. ..I ASUMS("QTY","O/H")<ASUT(ASUT,"QTY","ISS") D ;Only release qty available (partial)
  1. ...S ASUT(ASUT,"FPN")="P"
  1. ...S ASUT(ASUT,"QTY","ISS")=ASUMS("QTY","O/H")
  1. ...S ASUMS("D/O","QTY")=ASUMS("D/O","QTY")-ASUT(ASUT,"QTY","ISS")
  1. ...S ASUT(ASUT,"QTY","B/O")=ASUT(ASUT,"QTY","REQ")-ASUT(ASUT,"QTY","ISS")
  1. ...S ASUT("RMK")="B/O-R PAR"
  1. ...S Z="Unable to release requested quantity of "_ASUMB("QTYB/O") ;DFM P1 9/1/98
  1. ...S Z=Z_". A partial release of "_ASUT(ASUT,"QTY","ISS")_" will be made." ;DFM P1 9/1/98
  1. ...S Z=Z_" A quantity of "_ASUT(ASUT,"QTY","B/O")_" will remain on backorder." ;DFM P1 9/1/98
  1. ...W *7 D MSG^ASUJHELP(Z) ;DFM P1 9/1/98
  1. ...D BORESET
  1. ...S DA(1)=ASUMB("E#","REQ"),DA=ASUMB("E#","IDX")
  1. ...D KFAC^ASUMBOIO,KAC^ASUMBOIO ;Kill Master cross references
  1. ...D WRITEBO^ASUMBOIO ;Update Backorder Master from transaction array
  1. ...D SFAC^ASUMBOIO,SAC^ASUMBOIO ;Reset Master cross references
  1. ..E D ;Able to release full qty
  1. ...S Z="Full release of backorder for a quantity of "_ASUT(ASUT,"QTY","ISS")_" was posted." W *7 D MSG^ASUJHELP(Z) ;DFM P1 9/1/98
  1. ...S ASUT(ASUT,"FPN")="F" ;Update Master due out qty
  1. ...S ASUMS("D/O","QTY")=ASUMS("D/O","QTY")-ASUT(ASUT,"QTY","ISS")
  1. ...D BORESET
  1. ...S DA=ASUMB("E#","IDX"),DA(1)=ASUMB("E#","REQ"),DIK="^ASUMB("_DA(1)_",1," D ^DIK
  1. ...I $P(^ASUMB(DA(1),1,0),U,4)=0 D
  1. ....S DA=ASUMB("E#","REQ"),DIK="^ASUMB(" D ^DIK
  1. ..S X=ASUK("DT","FM")_"."_ASUK("TIME","F")_"."_DUZ,DIC(0)="L",DIC=9002036.3 D ^DIC
  1. ..S ASUV(ASUT,"E#")=+Y,ASUT(ASUT,"TRKY")=X
  1. ..S ASUM("TRTYP")="REGULAR"
  1. ..D ^ASUMKBPS,^ASUMYDPS
  1. ..D TR31(ASUV(ASUT,"E#")),UPDATE^ASU3IUPD
  1. ;K ASUT M ASUT=ASUTS S ASUT("TRCD")=ASUV("TR"),ASUT("TYPE")=ASUV("TP"),ASUHDA=ASUV("DA")
  1. Q
  1. BORESET ;EP; -RESETS TOTAL VALUE & TOTAL QUANTITY ON BACK ORDERS
  1. N X S X="" D MSUNCST^ASU6JUPD(.X) S ASUT(ASUT,"UCS")=X,ASUT(ASUT,"VAL")=X*ASUT(ASUT,"QTY","ISS")
  1. I ASUT(ASUT,"VAL")>ASUMS("VAL","O/H") S ASUT(ASUT,"VAL")=ASUMS("VAL","O/H")
  1. S ASUT(ASUT,"SIGN")=-1 D SETMOIS^ASU3IUPD
  1. I ASUT(ASUT,"VAL")>ASUMS("VAL","O/H")!(ASUMS("QTY","O/H")=ASUT(ASUT,"QTY","ISS")) S ASUT(ASUT,"VAL")=ASUMS("VAL","O/H")
  1. Q
  1. GENBOR ;EP ;GENERATE BACKORDER RELEASE TRANSACTION (31)
  1. S ASUT("TRCD")=31,ASUT("TYPE")=3
  1. S ASUT(ASUT,"AR")=ASUL(1,"AR","AP")
  1. S ASUT(ASUT,"PT","AR")=ASUL(1,"AR","AP")
  1. S ASUT(ASUT,"PT","STA")=$G(ASUL(2,"STA","E#"))
  1. S ASUT(ASUT,"ACC")=ASUMB("ACC")
  1. S ASUT(ASUT,"PT","ACC")=ASUMB("ACC")
  1. S ASUT(ASUT,"IDX")=ASUMB("IDX")
  1. S ASUT(ASUT,"PT","IDX")=ASUL(1,"AR","AP")_ASUT(ASUT,"IDX")
  1. S ASUT(ASUT,"ENTR BY")=DUZ
  1. S ASUT(ASUT,"DTE")=ASUK("DT","FM")
  1. S ASUT(ASUT,"DTP")=ASUK("DT","FM")
  1. S ASUT(ASUT,"DTW")=""
  1. S ASUT(ASUT,"STATUS")="U"
  1. S ASUT(ASUT,"SSA")=ASUMB("SSA") D:ASUT(ASUT,"SSA")]"" SSA^ASULDIRR(ASUT(ASUT,"SSA"))
  1. S ASUT(ASUT,"PT","SSA")=$G(ASUL(17,"SSA","E#"))
  1. S ASUT(ASUT,"SST")=ASUMB("SST") D:ASUT(ASUT,"SST")]"" SST^ASULDIRR(ASUT(ASUT,"SST"))
  1. S:$L(ASUT(ASUT,"SST"))=5 ASUT(ASUT,"SST")=$E(ASUT(ASUT,"SST"),4,5)
  1. S ASUT(ASUT,"PT","SST")=$G(ASUL(18,"SST","E#"))
  1. S ASUT(ASUT,"USR")=ASUMB("USR") D:ASUT(ASUT,"USR")]"" USR^ASULDIRR(ASUT(ASUT,"USR"))
  1. S ASUT(ASUT,"PT","USR")=$G(ASUL(19,"USR","E#"))
  1. D:ASUT(ASUT,"PT","USR")]"" REQ^ASULDIRR(ASUT(ASUT,"PT","USR"))
  1. S ASUT(ASUT,"PT","REQ")=$G(ASUL(20,"REQ","E#"))
  1. S ASUT(ASUT,"REQ")=$G(ASUL(20,"REQ"))
  1. S ASUT(ASUT,"PT","EOQ TYP")=""
  1. S ASUT(ASUT,"CALCED")=1
  1. S ASUT(ASUT,"DTR")=ASUK("DT","FM")
  1. S ASUT(ASUT,"VOU")=ASUMB("VOU")
  1. S (ASUT(ASUT,"QTY","REQ"),ASUT(ASUT,"QTY"))=ASUMB("QTYB/O")
  1. S ASUT(ASUT,"VAL")=""
  1. S ASUT(ASUT,"CAN")=ASUMB("CAN")
  1. S ASUT(ASUT,"B/O")=ASUMB("B/O")
  1. S ASUT(ASUT,"QTY","ADJ")=ASUMB("QTYAJ")
  1. S ASUT(ASUT,"CTG")=ASUMB("CTG")
  1. S ASUT(ASUT,"SLC")=ASUMB("SLC"),ASUT(ASUT,"PT","SLC")=ASUMB("E#","SLC")
  1. S ASUT(ASUT,"RQN")=ASUMB("RQN")
  1. S ASUT(ASUT,"REQ TYP")=ASUMB("REQTYP")
  1. S ASUT(ASUT,"STA")=ASUMB("STA")
  1. S ASUT(ASUT,"FPN")=ASUMB("FPN")
  1. S ASUT(ASUT,"UCS")=ASUMB("UCS")
  1. S ASUT(ASUT,"ORD")=""
  1. S:'$D(ASUT(ASUT,"PON")) ASUT(ASUT,"PON")=""
  1. S ASUT(ASUT,"EOQ TYP")=""
  1. S ASUT(ASUT,"PST")=""
  1. S ASUT(ASUT,"ISSTY")=3
  1. S ASUT(ASUT,"SUI")=$G(ASUT(ASUT,"SUI"))
  1. S ASUT(ASUT,"SRC")=$G(ASUT(ASUT,"SRC"))
  1. Q
  1. BKORDCAN ;EP;
  1. ;This routine provides for posting a Cancel Pending Backorder
  1. ;transaction to the Backorder file.
  1. S DIC(0)="MXZ",DIC=9002035,X=ASUT(ASUT,"PT","REQ") D ^DIC
  1. I Y<0 S ASUM("RMK")="B/O NOT MATCH" N Z S Z="Unable to cancel Back Order - no match" W *7 D MSG^ASUJHELP(.Z) S DDSERROR=1 Q ;DFM P1 9/1/98
  1. I Y>0 S ASUMB("E#","REQ")=+Y D
  1. .S ASUMB("E#","IDX")=ASUMX("E#","IDX")
  1. .S ASUMB("QTYB/O")=$P(^ASUMB(ASUMB("E#","REQ"),1,ASUMB("E#","IDX"),0),U,4)
  1. .S ASUMS("D/O","QTY")=ASUMS("D/O","QTY")-ASUMB("QTYB/O")
  1. .S:ASUMS("D/O","QTY")'>0 ASUMS("D/O","QTY")=""
  1. .S $P(^ASUMS(ASUMS("E#","STA"),1,ASUMS("E#","IDX"),2),U,2)=ASUMS("D/O","QTY")
  1. .S DIE="^ASUMB(ASUMB(""E#"",""REQ""),1,"
  1. .S DR=".01///@"
  1. .S DA(1)=ASUMB("E#","REQ")
  1. .S DA=ASUMB("E#","IDX"),ASUMB(0)=^ASUMB(DA(1),1,DA,0),ASUMB(1)=$G(^ASUMB(DA(1),1,DA,1))
  1. .K Y D ^DIE
  1. .I $D(Y) S ASUM("RMK")="B/O NOT CANCELLED" N Z S Z="Unable to cancel Back Order" W *7 D MSG^ASUJHELP(.Z) S DDSERROR=2 ;DFM P1 9/1/98
  1. .E S ASUM("RMK")="B/O CANCELLED"
  1. Q:$G(DDSERROR)>0
  1. D ^ASUJHIST ;Move transaction to History file
  1. Q
  1. TR31(X) ;EP ;ADD NEW BACKORDER RELEASE TRANSACTION
  1. S ASUHDA=X
  1. S ASUT(ASUT,"STATUS")="U"
  1. S ASUT(ASUT,"DTW")=""
  1. S ASUT(ASUT,"DTE")=""
  1. S ASUT(ASUT,"DTP")=ASUK("DT","FM")
  1. S ASUT(ASUT,"ISSTY")=3
  1. S ASUT(ASUT,"PST")=""
  1. S ASUT(ASUT,"PT","SSA")=$G(ASUL(17,"SSA","E#"))
  1. S ASUT(ASUT,"PT","SST")=$G(ASUL(18,"SST","E#"))
  1. S ASUT(ASUT,"PT","USR")=$G(ASUL(19,"USR","E#"))
  1. S ASUT(ASUT,"PT","REQ")=$G(ASUL(20,"REQ","E#"))
  1. S ASUT(ASUT,"PT","EOQ TYP")=$G(ASUL(6,"EOQTP","E#"))
  1. S ASUT(ASUT,"PT","AR")=ASUT(ASUT,"AR")
  1. S ASUT(ASUT,"PT","STA")=$G(ASUL(2,"STA","E#"))
  1. S ASUT(ASUT,"PT","ACC")=ASUT(ASUT,"ACC")
  1. S ASUT(ASUT,"PT","IDX")=ASUT(ASUT,"AR")_ASUT(ASUT,"IDX")
  1. S ASUT(ASUT,"ENTR BY")=DUZ
  1. S ASUT(ASUT,"CALCED")=""
  1. S ASUF("SV")=2
  1. Q
  1. REINDX ;
  1. F X=0:0 S X=$O(^ASUMB(X)) Q:X']"" D
  1. .I X?1A.A K ^ASUMB(X) Q
  1. .F Y=0:0 S Y=$O(^ASUMB(X,1,Y)) Q:Y']"" D
  1. ..I Y?1A.A K ^ASUMB(X,1,Y) Q
  1. ..S Z="AAA" F S Z=$O(^ASUMB(X,1,Y,1,Z)) Q:Z']"" K ^ASUMB(X,1,Y,1,Z)
  1. S DIK="^ASUMB(" D IXALL^DIK
  1. Q