StockWijziging ;BIJWERKEN STOCK, HISTORIEK EN STATISTIEK ; Oude routinenaam KPR10, KPR20 ; Opgeroepen vanuit: ; BL.Flow.RecuPak.Main : D ^KPR10 ; EWBON : D ^KPR10 ; FLOWBON : D ^KPR10 ; FLOWBON3 : D ^KPR10 ; KF20 : D ^KPR10 ; KF21B : D ^KPR10 ; KF21P3 : D ^KPR10 ; KF5 : D ^KPR10 ; KF6AD : D ^KPR10 ; KF8A : D ^KPR10 ; KP49 : D ^KPR10 ; PRODUKT4 : D ^KPR10 ; PRSTOCK : D ^KPR10 ; RECUPVP : D ^KPR10 // Bijwerken van de voorraad van een product // Deze routine bouwt alles op in een cache en zal het geheel in een keer wegschrijven // R10 WijzigStockBijUitgaandeBeweging N PRNr,Node0,DatumEnAardBeweging,Aantal,blnWijzigKumulVerkoop,Waarde,UitzonderlijkeVerkoop,blnGeenOudeHistoriek,Referentie,R9,R10 ,DatumLaatsteUitgaandeBeweging,Quote,KPRReferentie,HulpLocal,DataMStatistiek,Index2,TempIndex2,NextIndex2,SaldoGeleverd ,DataMStatistiekWaarde,ExtractIndex2,Teller,RW,OorspronkelijkAantal,ToExecute S PRNr=PR S DatumEnAardBeweging=$P(R,D,1),Aantal=$P(R,D,2),blnWijzigKumulVerkoop=$P(R,D,4),Waarde=$P(R,D,5),UitzonderlijkeVerkoop=$P(R,D,6) S blnGeenOudeHistoriek=$P(R,D,7),Referentie=$P(R,D,8),R9=$P(R,D,9),R10=$P(R,D,10),DatumLaatsteUitgaandeBeweging=$P(R,D,11) S blnGeenOudeHistoriek=1 ; De oude historieken mogen niet meer opgebouwd worden (CW 24.06.05) ; Aanpassen van het 14e veld (stock) in ^KPR(PRNr,0) S OorspronkelijkAantal=Aantal,DataMStatistiekWaarde=0,RW=$S($L(R9)!$L(R10):R9_$J(R10,5,1),1:""),KPRReferentie="^KPR(PRNr,"""_RW_"0"")",Teller=0,Node0=@KPRReferentie,Index2=RW_"L",TempIndex2="",ExtractIndex2=$S($L(RW):9,1:1),Quote=-1 BijUitgaandeBewegingA S Quote=$F(Node0,"""",Quote+1) I Quote S Node0=$E(Node0,1,Quote-1)_""""_$E(Node0,Quote,999) G BijUitgaandeBewegingA S ToExecute(Teller)="S "_KPRReferentie_"="""_$P(Node0,D,1,13)_D_($P(Node0,D,14)-Aantal)_D_$P(Node0,D,15)_D_DatumLaatsteUitgaandeBeweging_D_$P(Node0,D,17,99)_"""",Teller=Teller+1 G BijUitgaandeBewegingC:blnGeenOudeHistoriek ; Opzetten van de oude historiek in ^KPR ; Dit onderdeel (H-node) wordt niet meer gebruikt, onze historiek zit in ^PRHIST S HulpLocal=$E(DatumEnAardBeweging,3,9)_Aantal_"#"_(blnWijzigKumulVerkoop*Waarde)_"#"_Referentie_"#"_D,R=1 I $D(^(RW_"H")) S R=^(RW_"H"),R(Teller)=^(RW_"H"_$E("0000",1,4-$L(R))_R) G BijUitgaandeBewegingB:$L(R(Teller)_HulpLocal)<230 S R=R+1 S ToExecute(Teller)="S ^(RW_""H"")="""_R_"""",R(Teller)="",Teller=Teller+1,R(Teller)="" BijUitgaandeBewegingB S ToExecute(Teller)="S ^(RW_""H"_$E("0000",1,4-$L(R))_R_""")="""_R(Teller)_HulpLocal_"""",R(Teller)="",Teller=Teller+1 ; Opzetten van de leveringen per dag ; Dit onderdeel (L-node) wordt niet gebruikt BijUitgaandeBewegingC S Index2=$N(^(Index2)) G BijUitgaandeBewegingD:$E(Index2,ExtractIndex2)="L" S Index2=RW_"L"_$E(DatumEnAardBeweging,3,8),ToExecute(Teller)="S ^("""_Index2_""")="""_0_D_$P(Node0,D,7)_D_(-Aantal)_D_$P(Node0,D,19)_D_"""",Teller=Teller+1,DataMStatistiekWaarde=-$P(Node0,D,19)*Aantal G BijUitgaandeBewegingH BijUitgaandeBewegingD S NextIndex2=$N(^(Index2)),SaldoGeleverd=$P(^(Index2),D,3) G BijUitgaandeBewegingG:SaldoGeleverd'>0 I Aantal>SaldoGeleverd S Aantal=Aantal-SaldoGeleverd,R=SaldoGeleverd,SaldoGeleverd=0 G BijUitgaandeBewegingF BijUitgaandeBewegingE S SaldoGeleverd=SaldoGeleverd-Aantal,R=Aantal,Aantal=0 BijUitgaandeBewegingF S ToExecute(Teller)="S ^("""_Index2_""")="""_$P(^(Index2),D,1,2)_D_SaldoGeleverd_D_$P(^(Index2),D,4,9)_"""",Teller=Teller+1 S:'SaldoGeleverd&$L(TempIndex2) ToExecute(Teller)="K ^("""_TempIndex2_""")",Teller=Teller+1 S DataMStatistiekWaarde=DataMStatistiekWaarde-($P(^(Index2),D,4)*R) G BijUitgaandeBewegingH:'Aantal,BijUitgaandeBewegingC:$E(NextIndex2,ExtractIndex2)="L",BijUitgaandeBewegingE BijUitgaandeBewegingG G BijUitgaandeBewegingE:$E(NextIndex2,ExtractIndex2)'="L" S TempIndex2=Index2 G BijUitgaandeBewegingC ; Opzetten van de statistieknodes per maand ; Dit onderdeel (S-node) wordt niet gebruikt BijUitgaandeBewegingH S HulpLocal=RW_"S"_$E(DatumEnAardBeweging,1,6),DataMStatistiek="\\\\\\\\\",ToExecute(Teller)="S ^("""_HulpLocal_""")=""" I $D(^(HulpLocal)) S DataMStatistiek=^(HulpLocal) I UitzonderlijkeVerkoop S ToExecute(Teller)=ToExecute(Teller)_$P(DataMStatistiek,D,1,6)_D_(OorspronkelijkAantal+$P(DataMStatistiek,D,7))_D_(blnWijzigKumulVerkoop*Waarde+$P(DataMStatistiek,D,8))_D_(Waarde+DataMStatistiekWaarde*blnWijzigKumulVerkoop+$P(DataMStatistiek,D,9))_D_$P(DataMStatistiek,D,10,99)_"""" E S ToExecute(Teller)=ToExecute(Teller)_(OorspronkelijkAantal+$P(DataMStatistiek,D,1))_D_(blnWijzigKumulVerkoop*Waarde+$P(DataMStatistiek,D,2))_D_(Waarde+DataMStatistiekWaarde*blnWijzigKumulVerkoop+$P(DataMStatistiek,D,3))_D_$P(DataMStatistiek,D,4,99)_"""" ; Wegschrijven in ^KPR S @%Q1=0 F R=0:1:Teller X ToExecute(R) ; Aanpassen Fysische stock in ^PRSTOCK Lock +^PRSTOCK("D",PRNr) S R=$G(^PRSTOCK("D",PRNr)),$P(R,D)=$P(R,D)-OorspronkelijkAantal,^PRSTOCK("D",PRNr)=R D:OorspronkelijkAantal ##class(DOM.MAG.event.EventRaiser).%New().RaiseStockGewijzigdEvent(PRNr) Lock -^PRSTOCK("D",PRNr) Do UitVerkoop^PRODUKT5(PRNr) K R Q ; Opgeroepen vanuit: ; EWTOE : D ^KPR20 ; FLOWTOER : D ^KPR20 ; KP49 : D ^KPR20 ; KTIIN : D ^KPR20 ; PRODUKT4 : D ^KPR20 ; PRSTOCK : D ^KPR20 ; VERVI : D ^KPR20 // Bijwerken van de voorraad van een product // Deze routine bouwt alles op in een cache en zal het geheel in een keer wegschrijven // R20 WijzigStockBijInkomendeBeweging N PRNr,Node0,DatumEnAardBeweging,Aantal,AankoopPrijs,blnWijzigKumulAankoop,Waarde,blnGeenOudeHistoriek,Referentie,R9,R10,Quote ,KPRReferentie,DataMStatistiek,Index2,SaldoGeleverd,ExtractIndex2,RW,ToExecute,Teller S PRNr=PR S DatumEnAardBeweging=$P(R,D,1),Aantal=$P(R,D,2),AankoopPrijs=$P(R,D,3),blnWijzigKumulAankoop=$P(R,D,4),Waarde=$P(R,D,5) S blnGeenOudeHistoriek=$P(R,D,7),Referentie=$P(R,D,8),R9=$P(R,D,9),R10=$P(R,D,10) S blnGeenOudeHistoriek=1 ; De oude historieken mogen niet meer opgebouwd worden (CW 24.06.05) ; Aanpassen van het 14e veld (stock) in ^KPR(PRNr,0) S RW=$S($L(R9)!$L(R10):R9_$J(R10,5,1),1:""),KPRReferentie="^"_Q_"PR(PRNr,"""_RW_"0"")",Teller=0,Node0=@KPRReferentie,Index2=RW_"L",SaldoGeleverd=0,ExtractIndex2=$S($L(RW):9,1:1),Quote=-1 BijInkomendeBeweging1 S Quote=$F(Node0,"""",Quote+1) I Quote S Node0=$E(Node0,1,Quote-1)_""""_$E(Node0,Quote,999) G BijInkomendeBeweging1 S ToExecute(Teller)="S "_KPRReferentie_"="""_$P(Node0,D,1,6)_D_Waarde_D_$P(Node0,D,8,13)_D_($P(Node0,D,14)+Aantal)_D_$P(Node0,D,15,18)_D_AankoopPrijs_D_$P(Node0,D,20,99)_"""",Teller=Teller+1 G BijInkomendeBeweging3:blnGeenOudeHistoriek ; Opzetten van de oude historiek in ^KPR ; Dit onderdeel (H-node) wordt niet meer gebruikt, onze historiek zit in ^PRHIST S HulpLocal=$E(DatumEnAardBeweging,3,9)_Aantal_"#"_(blnWijzigKumulAankoop*Aantal*AankoopPrijs)_"#"_Referentie_"#"_D,R=1 I $D(^(RW_"H")) S R=^(RW_"H"),R(Teller)=^(RW_"H"_$E("0000",1,4-$L(R))_R) G BijInkomendeBeweging2:$L(R(Teller)_HulpLocal)<230 S R=R+1 S ToExecute(Teller)="S ^(RW_""H"")="""_R_"""",R(Teller)="",Teller=Teller+1,R(Teller)="" BijInkomendeBeweging2 S ToExecute(Teller)="S ^(RW_""H"_$E("0000",1,4-$L(R))_R_""")="""_R(Teller)_HulpLocal_"""",R(Teller)="",Teller=Teller+1,SaldoGeleverd=0 ; Opzetten van de leveringen per dag ; Dit onderdeel (L-node) wordt niet gebruikt BijInkomendeBeweging3 S Index2=$N(^(Index2)) G BijInkomendeBeweging4:$E(Index2,ExtractIndex2)'="L" S:$P(^(Index2),D,3)<0 SaldoGeleverd=SaldoGeleverd+$P(^(Index2),D,3),ToExecute(Teller)="K ^("""_Index2_""")",Teller=Teller+1 G BijInkomendeBeweging3 BijInkomendeBeweging4 S HulpLocal=RW_"L"_$E(DatumEnAardBeweging,3,8),R="" BijInkomendeBeweging5 I $D(^(HulpLocal_R)) S R=R+1 G BijInkomendeBeweging5 S ToExecute(Teller)="S ^("""_HulpLocal_R_""")="""_Aantal_D_Waarde_D_(Aantal+SaldoGeleverd)_D_AankoopPrijs_D_"""",Teller=Teller+1 ; Opzetten van de statistieknodes per maand ; Dit onderdeel (S-node) wordt niet gebruikt S HulpLocal=RW_"S"_$E(DatumEnAardBeweging,1,6),DataMStatistiek="\\\\\\\\\" I $D(^(HulpLocal)) S DataMStatistiek=^(HulpLocal) S ToExecute(Teller)="S ^("""_HulpLocal_""")="""_$P(DataMStatistiek,D,1,4)_D_(Aantal+$P(DataMStatistiek,D,5))_D_(blnWijzigKumulAankoop*Aantal*AankoopPrijs+$P(DataMStatistiek,D,6))_D_$P(DataMStatistiek,D,7,99)_"""" ; Wegschrijven in ^KPR S @%Q1=0 F R=0:1:Teller X ToExecute(R) ; Aanpassen Fysische stock in ^PRSTOCK Lock +^PRSTOCK("D",PRNr) S R=$G(^PRSTOCK("D",PRNr)),$P(R,D)=$P(R,D)+Aantal,^PRSTOCK("D",PRNr)=R D:Aantal ##class(DOM.MAG.event.EventRaiser).%New().RaiseStockGewijzigdEvent(PRNr) Lock -^PRSTOCK("D",PRNr) K R Q ; Opgeroepen vanuit: ; EWBON : Do WV^KPR10 ; EWTOE : Do WV^KPR10 ; FLOWTOER : Do WV^KPR10 ; PRHF : Do WV^KPR10 ; PRSTOCK : Do WV^KPR10 // Bijwerken werkvloervorraad // De routines die onderstaande subroutine aanroepen 'WV^KPR10' aanpassen // zodat deze rechtstreeks 'WijzigWerkvloerStock(PRNr,Delta)' kunnen aanroepen // WV VerwerkWerkvloer S DatumEnAardBeweging=$P(R,D,1),Aantal=$P(R,D,2) D WijzigWerkvloerStock(PR,$S($E(DatumEnAardBeweging,9)#2:Aantal,1:-Aantal)) K R,DatumEnAardBeweging,Aantal Q ; Opgeroepen vanuit: ; BL.Prod.OptiBox.Snijden : Do Werkvloer^KPR10 // Bijwerken van de werkvloerstock // Werkvloer(PRNr,Delta) WijzigWerkvloerStock(PRNr,Delta) New Rec Lock +^PRSTOCK("D",PRNr) S Rec=$G(^PRSTOCK("D",PRNr)),$P(Rec,"\",5)=$P(Rec,"\",5)+Delta,^PRSTOCK("D",PRNr)=Rec D:Delta ##class(DOM.MAG.event.EventRaiser).%New().RaiseStockGewijzigdEvent(PRNr) Lock -^PRSTOCK("D",PRNr) Quit