#include Prod.Product PRHISTInventarisCorr Set VanDatum=$$INTDATE^vhLib.DataTypes("01.07.05") Set TotDatum=$$INTDATE^vhLib.DataTypes("03.07.05") Set NaarDatum=$$INTDATE^vhLib.DataTypes("30.06.05") Set NaarTijdStip=22*60*60 ; 22:00 uur Set DWDatum=$$INTDATE^vhLib.DataTypes("30.06.05") ;s VanDatum=60068, TotDatum=60068 ;Set NaarDatum=60067 ;S DWDatum=59717 Write "De historieken met actiecode = T, H, I of U EN OOK M ",! Write " van "_$$EXTDATE^vhLib.DataTypes(VanDatum,"DK")_" tot "_$$EXTDATE^vhLib.DataTypes(TotDatum,"DK"),! Write " worden verplaatst naar "_$$EXTDATE^vhLib.DataTypes(NaarDatum,"DK"),! Write " en op een vast tijdstip "_$$EXTTIME^vhLib.DataTypes(NaarTijdStip)_" gezet",! Write " de bevroren stockwaarde van "_$$EXTDATE^vhLib.DataTypes(DWDatum,"DK")_" wordt ook aangepast",! Read "Type ""Correctie""[] om wijziging uit te voeren (dit kan 5min. duren)",Input Quit:$zcvt(Input,"U")'="CORRECTIE" Do ChangeInventaris(VanDatum,TotDatum,NaarDatum,NaarTijdStip,DWDatum) Quit ChangeInventaris(VanDatum,TotDatum,NaarDatum,NaarTijdStip,DWDatum) ; Alle historiekaanpassingen die liggen tussen VanDatum en TotDatum verschuiven naar NaarDatum ; Indien DWDatum dan wordt ook de DW.StockWaarde van DWDatum aangepast. Set PRNr="" ;s PRNr=11610 For Set PRNr=$O(^PRHIST(PRNr)) Quit:PRNr="" Do:PRNr?4.7N . w PRNr ;," ",$P(^KPR(PRNr,0),D),! . Set (MemVolgNr,VolgNr)="" . For Set VolgNr=$O(^PRHIST(PRNr,VolgNr)) Quit:VolgNr="" Do . . Set Datum=+$P(^PRHIST(PRNr,VolgNr),D) . . Set:Datum'>NaarDatum MemVolgNr=VolgNr . . Quit:DatumTotDatum . . Set (NewRec,Rec)=^PRHIST(PRNr,VolgNr) . . Set Actie=$P(Rec,D,4) . . ;Quit:"H;T;I;U;M"'[Actie . . ;Write VolgNr," ",Actie," ",$P(Rec,D,2) . . Set $P(NewRec,D)=NaarDatum_","_NaarTijdStip . . Set ^PRHIST(PRNr,VolgNr)=NewRec . . Set SubVolgNr="" . . For Set SubVolgNr=$O(^PRHIST(PRNr,VolgNr,SubVolgNr)) Quit:SubVolgNr="" Do . . . Set Dat=$P(^PRHIST(PRNr,VolgNr,SubVolgNr),D,3) . . . If $L(Dat) Do . . . . Set $P(Dat,",")=NaarDatum . . . . Set $P(^PRHIST(PRNr,VolgNr,SubVolgNr),D,3)=Dat . . w NewRec,! . . w MemVolgNr+1,"->",VolgNr,! . . Do StraightInsert(PRNr,MemVolgNr+1,VolgNr) . . Set MemVolgNr=MemVolgNr+1 . . Set Mag=$P(Rec,D,5) . . Set Qty=$P(Rec,D,2) . . Do:DWDatum UpdateStockWaarde(DWDatum,PRNr,Mag,Qty) . . ;r k Quit StraightInsert(PRNr,StartVolgNr,EndVolgNr) Quit:StartVolgNr'",VolgNr+1,^PRHIST(PRNr,VolgNr) ;R K ; Invoegen Kill ^PRHIST(PRNr,StartVolgNr) Merge ^PRHIST(PRNr,StartVolgNr)=Rec ; R K Quit UpdateStockWaarde(DWDatum,PRNr,Mag,Qty) Set oStockWaarde=##class(DW.StockWaarde).%OpenId(DWDatum_"||"_PRNr) If $isObject(oStockWaarde) Do . Do AddStockWaarde(oStockWaarde,Mag,Qty) . Do oStockWaarde.CalcWaarden() . Set Ok=oStockWaarde.%Save() Else Do ; Nieuwe record . Set oStockWaarde=##class(DW.StockWaarde).%New() . Set BeginMnd=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes(DWDatum,"M",-12),"DM4")_" " . Set EndMnd=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes(DWDatum,"M",-1),"DM4")_" " . Do oStockWaarde.SetAlgemeen(PRNr,DWDatum,BeginMnd,EndMnd) . Do AddStockWaarde(oStockWaarde,Mag,Qty) . Do oStockWaarde.CalcWaarden() . Quit:oStockWaarde.IsEmpty() . Set Ok=oStockWaarde.%Save() Quit AddStockWaarde(oStockWaarde,Mag,Qty) ;d DumpObject^%apiOBJ(oStockWaarde) If Mag="W" Do ;Werklvoer . Set oStockWaarde.WerkVloer=oStockWaarde.WerkVloer+Qty Else If Mag="M" Do ;Magazijn->Stock . Set oStockWaarde.Stock=oStockWaarde.Stock+Qty ;d DumpObject^%apiOBJ(oStockWaarde) Quit