EWRCPS2 ;E'WMS Opbouw van naar RCP met Toeleveringsgegevens[ 10/26/2001 3:19 PM ] ; BLDRCP(LEVNr,TOENr,MarkRef,RCPNr,RCPDate,RCPLRef,RCPBRef) ; Opbouw van de Receptie en indien reeds doorgestuurd het nieuwe deel onmiddellijk doorsturen. ; De toelevering is gelockt door het oproepende programma ; @MarkRef bevat voor de verschillende TLUNrs het aantal (piece 1) voor het WMS en of er een BackOrder moet gekreeerd worden (piece 2). ; Het BackOrder = markering B dan is BOQty=OLQty-MarkedQty, of het mag het Backorder aantal zelf zijn. New TLNr,TLUNr,TLCnt,TLRec,Qty,BOQty If "WP"'[$P($G(^RCP("D",RCPNr)),D,20) S X=$$^vhTXTPOP("EWRCPS","NOADD") Quit Lock +^RCP("D",RCPNr) ; Receptie hoofding Set RCPRec=$G(^RCP("D",RCPNr)) If RCPRec="" Do .Set $P(RCPRec,D,1)="L" .Set $P(RCPRec,D,2)=LEVNr .Set $P(RCPRec,D,3)=RCPLRef .Set $P(RCPRec,D,4)=RCPDate ; Set DH="" Set (TOENr,TLUNr)="" Set TLCnt=0 For Set TOENr=$O(@MarkRef@(TOENr)) Quit:TOENr="" Do .Lock +^KTO(LEVNr,TOENr) .For Set TLUNr=$O(@MarkRef@(TOENr,TLUNr)) Quit:TLUNr="" Do ..Set TLNr=^TO("IU",TOENr,TLUNr) ..Set TLRec=^KTO(LEVNr,TOENr,TLNr) ..Set Qty=$P($G(@MarkRef@(TOENr,TLUNr)),D) ..Quit:'Qty ..Set BOQty=$P(@MarkRef@(TOENr,TLUNr),D,2) ..Set BOQty=$S(BOQty="B":$P(TLRec,D,3)-Qty,BOQty>0:BOQty,1:"") ..Set:BOQty<1 BOQty="" ; kan niet negatief zijn ..Set TLCnt=TLCnt+1 ..Do BLDTL(LEVNr,RCPNr,TOENr,TLUNr,Qty,BOQty,RCPBRef) .Lock -^KTO(LEVNr,TOENr) If TLCnt Do .Set ^RCP("D",RCPNr)=RCPRec .Set ^RCP("IL",LEVNr,RCPNr)="" .Set ^RCP("IO",RCPNr)="" ; Openstaand .Do:$L($P(RCPRec,D,10)) SEND^EWRCPSW(RCPNr) ; Is RCP reeds doorgestuurd naar WMS, daarom nieuwe lijnen onmiddellijk doorsturen. Lock -^RCP("D",RCPNr) Quit BLDTL(LEVNr,RCPNr,TOENr,TLUNr,Qty,BOQty,RCPBRef) ; Verwerken van een toeleveringslijn met eventuele opslitsing in verschillende kindproducten New TLNr,TLRec,PRNr,KPRNr,OLCache Set TLNr=^TO("IU",TOENr,TLUNr) Set TLRec=^KTO(LEVNr,TOENr,TLNr) Set PRNr=$P(TLRec,D,2) If 'PRNr Do ERROR^EWLOG("NOPROD") Quit ;Opbouw OL in RCP Set TLRec="" Set $P(TLRec,D,1)=PRNr Set $P(TLRec,D,4)=Qty Set $P(TLRec,D,6)=BOQty Set $P(TLRec,D,10)=RCPBRef Set ^RCP("D",RCPNr,"D",TOENr,TLUNr)=TLRec Set ^RCP("IT",TOENr,TLUNr)=RCPNr ; If $D(^PRLINK("D",PRNr)) Do ; Opslitsen in kindproducten .Set KPRNr="" .For Set KPRNr=$O(^PRLINK("D",PRNr,KPRNr)) Quit:KPRNr="" Do ..Do BLDSUB(RCPNr,TOENr,TLUNr,KPRNr,Qty*$P(^PRLINK("D",PRNr,KPRNr),D),RCPBRef) Else Do .Do BLDSUB(RCPNr,TOENr,TLUNr,PRNr,Qty,RCPBRef) Quit BLDSUB(RCPNr,TOENr,TLUNr,PRNr,Qty,RCPBRef) ; opbouw van een subreceptielijn New SubRec,SubTLNr,C,PRRec Set SubTLNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr,""),-1) Set SubTLNr=SubTLNr\100+1*100 Set SubRec="" Set $P(SubRec,D,1)=PRNr Set $P(SubRec,D,3)=Qty Set $P(SubRec,D,10)=RCPBRef Set ^RCP("D",RCPNr,"D",TOENr,TLUNr,SubTLNr)=SubRec Quit ; Event bij het inboekenen van een toeleveringlijn ProductToeleveringLijnIngeboekt(LeverancierID,ToeleveringID,ToeleveringLijnID) New Rec,ProductID,ToeleveringLijnCode,ProductToeleveringLijnEventData,ProductToeleveringLijnIngeboekt Set Rec=^KTO(LeverancierID,ToeleveringID,ToeleveringLijnID),ProductID=$P(Rec,D,2),ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierID,ToeleveringID,ToeleveringLijnID) If ProductID{ Set ProductToeleveringLijnEventData = ##class(DOM.AKP.event.ProductToelevLijnEventData).%New(ToeleveringID, ToeleveringLijnCode, ProductID, LeverancierID) Set ProductToeleveringLijnIngeboekt = ##class(DOM.AKP.event.ProductToelevLijnIngeboekt).%New(ProductToeleveringLijnEventData) Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(ProductToeleveringLijnIngeboekt) } ; Errormeldingen NOPROD ;"Geen product gedefinieerd in :"_TOENr_";"_TLUNr