#include %Prod.Product ORGALUX ;Verwerking Orgalux [ 12/27/2003 12:40 PM ] ; ISORGAL(PRNr) ; Is het een orgalux product Quit $$ISORGAL^PRODUKT2(PRNr) IsIntivo(PRNr) Quit $P($G(^KPR(PRNr,0)),"\")?1(1"OL.I",1"OL.TI",1"OL.FW").E ConsumentenPrijs(PRNr,Land,NoSa) Quit $$ConsumentenPrijs^KPRIJS(PRNr,.Land,.NoSa) VERPAK Goto VERPAK^ORGVERP ; REFORD(ORDNr) New R,KLNr,OrgRef Set OrgRef="" Set:$$ISORGAL^FLOW("O",ORDNr) KLNr=$P(^KO1(ORDNr,"F"),D),R=^KOD(KLNr,"F",ORDNr,1),OrgRef=$P(R,D,19) Quit OrgRef ; REFBON(BONNr,ORDNr) New R,KLNr,OLNr,OrgRef Set OrgRef="" Do:$$ISORGAL^FLOW("L",BONNr) .Set KLNr=$P(^KU1(BONNr,"F"),D),OLNr=100 .For Set OLNr=$O(^KUL(KLNr,"F",BONNr,OLNr)) Quit:'OLNr Do Quit:$L(OrgRef) ..Set R=^KUL(KLNr,"F",BONNr,OLNr) ..Quit:$P(R,D,17)'="KF5" ..Set:$P($P(R,D,5)," - ")=ORDNr OrgRef=$P(R,D,20) Quit OrgRef ; BEVATMAT(BONNr,ORDNr) New R,BevatMat,KLNr,OLNr,Quit Set ORDNr=$G(ORDNr),KLNr=$P(^KU1(BONNr,"F"),D),OLNr=100 If ORDNr For Set OLNr=$O(^KUL(KLNr,"F",BONNr,OLNr)) Quit:'OLNr Do Quit:Quit .Set R=^KUL(KLNr,"F",BONNr,OLNr) .Set Quit=$P(R,D,17)="KF5"&($P($P(R,D,5)," - ")=ORDNr) For Set OLNr=$O(^KUL(KLNr,"F",BONNr,OLNr)) Quit:'OLNr Do Quit:Quit .Set R=^KUL(KLNr,"F",BONNr,OLNr),PRNr=$P(R,D,2) .If ORDNr Set Quit=$P(R,D,17)="KF5"&($P($P(R,D,5)," - ")'=ORDNr) .Quit:'PRNr .Set BevatMat=$$ISMAT(PRNr) Quit BevatMat ; ISMAT(MPRNr) New R,IsMat,KPRNr ;Set (IsMat,KPRNr)="" ;For Set KPRNr=$O(^PRLINK("D",MPRNr,KPRNr)) Quit:KPRNr="" Do Quit:IsMat ;.Set R=^PRLINK("D",MPRNr,KPRNr),IsMat=$P(R,D,2)="I" Set IsMat=$E($$SORTKEY^PRODUKT(MPRNr),7,9)="MAT" Quit IsMat ; ; Bevat oververpakking BEVATOVP(BONNr,ORDNr) New R,BevatOVP,KLNr,OLNr,Quit,PRNr Set ORDNr=$G(ORDNr),KLNr=$P(^KU1(BONNr,"F"),D),OLNr=100 If ORDNr For Set OLNr=$O(^KUL(KLNr,"F",BONNr,OLNr)) Quit:'OLNr Do Quit:Quit .Set R=^KUL(KLNr,"F",BONNr,OLNr) .Set Quit=$P(R,D,17)="KF5"&($P($P(R,D,5)," - ")=ORDNr) Set BevatOVP="" For Set OLNr=$O(^KUL(KLNr,"F",BONNr,OLNr)) Quit:'OLNr Do Quit:Quit Quit:BevatOVP .Set R=^KUL(KLNr,"F",BONNr,OLNr),PRNr=$P(R,D,2) .If ORDNr Set Quit=$P(R,D,17)="KF5"&($P($P(R,D,5)," - ")'=ORDNr) .Quit:'PRNr .Set BevatOVP=$$ISOVP(PRNr) Set:BevatOVP BevatOVP=BevatOVP_D_$P(R,D,3) Quit BevatOVP ; ; Is oververpakking ISOVP(MPRNr) New R,IsOVP,KPRNr Set (IsOVP,KPRNr)="" For Set KPRNr=$O(^PRLINK("D",MPRNr,KPRNr)) Quit:KPRNr="" Do Quit:IsOVP .Set R=^PRLINK("D",MPRNr,KPRNr) Set:$P(R,D,2)="O" IsOVP=MPRNr Quit IsOVP ; ; Stockupdate van de moeders met stock overkinderen STOCKUPD(Night) Set Night=$G(Night,0) If Night Do .New Night .Set Q="K" .Do ^cA604,INIT^vhTERMINA .Set Update=1 Else Do .New %SC,zb .Set Update="" .Do DISPLAY^vhScherm("ORGSTCKUPD"),FIELD^vhScherm("ORGSTCKUPD","ASKUPDATE") .Set Update=Update="H" .Do:Update DISPLAY^vhScherm("ORGSTCKUPD") Quit:'Update Set %J=$$%J^vhRtn1() Kill ^HULP(%J) ; Fysstock toekennen aan de moeders vertrekkend van de min. stock van de kinderen Set MPRNr="" For { Set MPRNr=$O(^PRBS("BS",MPRNr)) Quit:'MPRNr If $$$ProductGet(MPRNr,$$$LinkType)="S" ; Geen stock over kinderen { Do STOCKUPDMoeder(MPRNr,%J,Night) } } ; Reservatie vanuit moeder wissen Set PRNr="" For Set PRNr=$O(^PRSTOCK("D",PRNr)) Quit:PRNr="" Do . Set Qty=$P(^PRSTOCK("D",PRNr),D,9) ; oud aantal in reservatie door moeder . Quit:'Qty ; Niets gereserveerd . Lock +^KPR(PRNr) . ;Set Reserv=$P(^KPR(PRNr,2),D,9) . Set $P(^PRSTOCK("D",PRNr),D,6)=$P($G(^PRSTOCK("D",PRNr)),D,6)-Qty ; aantal in reservatie door moeder weghalen bij de werkvloer reservatie (truuk) . ;Set $P(^KPR(PRNr,2),D,9)=Reserv . Set $P(^PRSTOCK("D",PRNr),D,9)="" . Lock -^KPR(PRNr) ; Nieuwe reservatie toekennen Set PRNr="" For Set PRNr=$O(^HULP(%J,PRNr)) Quit:PRNr="" Do . Lock +^KPR(PRNr) . Set Qty=^HULP(%J,PRNr) . Set $P(^PRSTOCK("D",PRNr),D,6)=$P($G(^PRSTOCK("D",PRNr)),D,6)+Qty ; aantal in reservatie door moeder bijtellen bij de werkvloer reservatie (truuk) . Set $P(^PRSTOCK("D",PRNr),D,9)=Qty ; aantal in reservatie door moeder . Lock -^KPR(PRNr) Quit ; ; Stockupdate van een moeder met stock overkinderen STOCKUPDMoeder(MPRNr,%J,Night) ; OPTIONEEL :%J, alleen te gebruiken als opgeroepen door STOCKUPD van alle producten ; OPTIONEEL :Night, alleen te gebruiken als opgeroepen door STOCKUPD van alle producten New R,ScanTyp,MFysSt,KFysSt,Reserv,Faktor,KPRNr,QtyOld,QtyNew,Sleutel ; Fysstock toekennen aan de moeders vertrekkend van de min. stock van de kinderen #define StockOverKinderen "S" Quit:$$$ProductGet(MPRNr,$$$LinkType)'=$$$StockOverKinderen Set R=^KPR(MPRNr,0) Set KPRNr="" ;Fysische stock bepalen dmv fysische stock van de kindproducten. Set MoederProduct = ##class(DOM.PM.Bouwstenen.Product).%OpenId(MPRNr) Set KindIterator = ##class(TECH.ListIterator).%New(MoederProduct.Bouwstenen) While(KindIterator.HasNext()) { Set KindBouwsteen = KindIterator.Next() #define BouwsteenTypeKind "K" If ($$$BouwsteenTypeKind=KindBouwsteen.Type) { Set KPRNr = KindBouwsteen.KindProduct.ProductNr #define OpslagzoneManueel 9 Set Faktor=KindBouwsteen.Aantal If KPRNr && ($$OPSLZONE^PRODUKT2(KPRNr)'=$$$OpslagzoneManueel) && (Faktor) { Set KFysSt=$$GETSTOCK^PRODUKT4(KPRNr,"F")/Faktor\1 Set MFysSt=$G(MFysSt,KFysSt) Set:KFysSt