RecuPak ; User interface voor recupereerbare verpakking ; Select produkt voor openen en wijzigen produkten SELPROD(PRNr) New zb,R,RecPRNr,KortTxt,List,SortKey,PopPos Set SelPRNr=$P(B(1),D,32),(RecPRNr,PopPos)="" For Set RecPRNr=$O(^HISTPAK("P",RecPRNr)) Quit:RecPRNr="" Do . Quit:RecPRNr=PRNr . Set KortTxt=$P(^KPR(RecPRNr,0),D) . Set SortKey=$LI(^HISTPAK("P",RecPRNr)) Set:'SortKey SortKey=$$SORTKEY^PRODUKT(RecPRNr) . Set RecPRNr(0,SortKey)=RecPRNr_"`"_KortTxt For Set RecPRNr=$O(RecPRNr(0,RecPRNr)) Quit:RecPRNr="" Do . Set R=RecPRNr(0,RecPRNr) . Set RecPRNr($O(RecPRNr(""),-1)+1)=R . Set:$P(R,"`")=SelPRNr PopPos=$O(RecPRNr(""),-1) Kill RecPRNr(0) Set PopPos=$P(U2,";",5)-(''$L(SelPRNr)*2)-PopPos+''PopPos_";"_$P(U2,";",6) Set RecPRNr=$$WILD^vhPOPUP(PopPos,"-1ZO",$$INITCAP^vhRtn1($P(U2,U)),.RecPRNr,SelPRNr) Set:zb="CANC" RecPRNr="-" Do:RecPRNr'="-" . New K,X,U1,U2,U3 . Set $P(B(1),D,32)=RecPRNr Set:'RecPRNr $P(B(1),D,33)="" . Set U1=100 . For Set U1=$O(A(U1)) Quit:U1="" Do .. Set U2=A(U1) .. Quit:$P(U2,U,16)'=133 .. Set X=$P(U2,U,16),U3=$P(B(X\100),D,X#100),K=U3 .. Xecute:$L($P(U2,U,8)) "Set U3="_$P(U2,U,8) .. Set FP=$P(U2,U,5)*100+$P(U2,U,6) .. Write @F,$J("",$P(U2,U,9)),$J("",$P(U2,U,13)),@F,U3 Quit RecPRNr VerwerkRecuPak New Derde,zb,BLObj Set BLObj=##class(BL.Flow.RecuPak.Main).%New() Set Derde="K;" For Do Quit:Derde="" . Do:$P(Derde,";")="L" VerwerkLeverancier . Do:$P(Derde,";")="K" VerwerkKlant Quit ; Terugname van een klant VerwerkKlant New R,KLNr,RecuPak,LD,VerwerkKlanten,Beweging,BewegingModified,Input Set Beweging="",BewegingModified=0 Do DISPLAY^vhScherm("RECUPAK"),INIT^vhLIST("RECUPAK","TERUGNAME",.LD),WRITE^vhLIST(.LD) Set (KLNr,VerwerkKlanten)="",Beweging="I" For Do Quit:$E(Derde)'="K" . Set R=$S(BewegingModified:KLNr,1:$$SELECT^KLANT6(1)) . If R=##class(Derde.Lev.Lev).LevAlsKlant(5005) Set Derde="L;" Quit . If 'R,$D(RecuPak) Set R=KLNr ; Zelfde klant . If 'R Set Derde=$S(VerwerkKlanten:"",1:"L;") Quit . Set VerwerkKlanten=1 . Do:R'=KLNr!BewegingModified .. Set:R'=KLNr Beweging="I" .. Set KLNr=R,Derde="K;"_KLNr .. Do DISPLAY^vhScherm("RECUPAK",,,,"DERDE;BEWEGING") .. Do FetchKlant(KLNr,.RecuPak,Beweging),INIT^vhLIST("RECUPAK","TERUGNAME",.LD) . Set BewegingModified=0 . Do WRITE^vhLIST(.LD) . If '$D(RecuPak),Beweging="I" Do Quit .. Set R=$$^vhTXTPOP("RECUPAK","NOSALDO","","klant",KLNr,$P(^KKL(^KK1(KLNr),0),D,2),"leveringen aan","Leveren","L") .. Set:R="L" Beweging="L",BewegingModified=1 . Do ##class(Flow.RecuPak.Historiek).LockKlant(KLNr,1) . For Set Input=$$SCROLL^vhLIST(.LD) Do Quit:$E(Derde)'="K" Quit:$P(Derde,";",2)="" .. If Input="COM" Set Input="" Do CALL^vhMenu("RECUPAK",.Input) .. Do EXEC^vhMenu("RECUPAK",.Input) .. Set:Input="CANC" Derde="" .. If 'BewegingModified,$P(Derde,";",2)="" Set:$$Save(KLNr,.RecuPak,Beweging)="" Derde="K;"_KLNr // Opslaan van de wijzigingen . Do ##class(Flow.RecuPak.Historiek).UnLockKlant(KLNr) Quit ; Teruggave aan Blum VerwerkLeverancier New I,R,LEVNr,RecuPak,LD,KLNr,Beweging,BewegingModified,PRNr,Save,Input Set Beweging="U",BewegingModified=0 For Do Quit:$E(Derde)'="L" . Set LEVNr=5005,Derde="L;"_LEVNr,BewegingModified=0 . Set KLNr=##class(Derde.Lev.Lev).LevAlsKlant(LEVNr) . Do ##class(Flow.RecuPak.Historiek).LockKlant(KLNr,1) . Do DISPLAY^vhScherm("RECUPAK") . Do FetchLeverancier(LEVNr,.RecuPak,Beweging),INIT^vhLIST("RECUPAK","TERUGNAME",.LD),WRITE^vhLIST(.LD) . If '$D(RecuPak),Beweging="U" Do Quit .. Set R=$$^vhTXTPOP("RECUPAK","NOSALDO","","leverancier",LEVNr,$P(^KLE(^KL1(LEVNr),0),D,2),"recepties van","Recepteren","R") .. If R="R" Set Beweging="R",BewegingModified=1 .. Else Set Derde="" . For Set Input=$$SCROLL^vhLIST(.LD) Do Quit:$E(Derde)'="L" Quit:$P(Derde,";",2)="" .. If Input="COM" Set Input="" Do CALL^vhMenu("RECUPAK",.Input) .. Do EXEC^vhMenu("RECUPAK",.Input) .. Set:Input="CANC" Derde="" .. If 'BewegingModified,$P(Derde,";",2)="" Do ... If Beweging="U" For I=1:1 Set R=$G(RecuPak(I)) Quit:R="" Do .... Set PRNr=$P(R,D),Aantal=$P(R,D,6) .... Set:Aantal PRNr(PRNr)=Aantal ... Set Save=$$Save(KLNr,.RecuPak,Beweging,1) // Opslaan van de wijzigingen ... If Save="" Set Derde="L;"_LEVNr Kill PRNr // Niet opgeslagen, Annuleer gedrukt . Do ##class(Flow.RecuPak.Historiek).UnLockKlant(KLNr) Quit FetchKlant(KLNr,RecuPak,Beweging,LevAlsKlant) New PRNr,Saldo,TijdStip,SortKey,Count,Verpak,QRef Kill RecuPak Kill BLObj.Verpak Do BLObj.GetSaldos(KLNr) Set QRef="^HISTPAK(""P"",PRNr)" Set:"\I\U\"[(D_Beweging_D) QRef="^HISTPAK(""D"",KLNr,PRNr)" Set PRNr="" For Set PRNr=$O(@QRef) Quit:PRNr="" Do . Quit:'$D(^KPR(PRNr)) . If '$D(BLObj.Verpak(PRNr)) Set Saldo=0,TijdStip=$S("\I\U\"[(D_Beweging_D):$H,1:"") . Else Set Saldo=$LI(BLObj.Verpak(PRNr),1),TijdStip=$LI(BLObj.Verpak(PRNr),2) . Set:'$G(LevAlsKlant) Saldo=-Saldo . Set SortKey=$LI($G(^HISTPAK("P",PRNr)),1) Set:'SortKey SortKey=$$SORTKEY^PRODUKT(PRNr) . Set RecuPak(0,SortKey)=PRNr_D_Saldo_D_Saldo_D_TijdStip_D_TijdStip_D_D Set SortKey="",Count=0 For Set SortKey=$O(RecuPak(0,SortKey)) Quit:SortKey="" Set Count=Count+1,RecuPak(Count)=RecuPak(0,SortKey) Kill RecuPak(0) Quit FetchLeverancier(LEVNr,RecuPak,Beweging) New KLNr Kill RecuPak Set KLNr=##class(Derde.Lev.Lev).LevAlsKlant(LEVNr) Do FetchKlant(KLNr,.RecuPak,Beweging,1) Quit // Opslaan van de gewijzigde gegevens Save(KLNr,RecuPak,Beweging,LevAlsKlant) New I,R,Save,PRNr,Aantal For I=1:1 Set R=$G(RecuPak(I)) Quit:R="" Set Save=$P(R,D,6) Quit:Save If $G(Save) Do // Er is iets gewijzigd . Set Save=$$^vhTXTPOP("FILE","SAVE") . Quit:Save'="J" // Wijzigingen niet opslaan . For I=1:1 Set R=$G(RecuPak(I)) Quit:R="" Do .. Set PRNr=$P(R,D),Aantal=$P(R,D,6) .. Quit:'Aantal .. If Beweging="M" Do Quit // Correctie zonder aanpassing van ^KPR en ^PRHIST ... Set Opmerking=$P(R,D,7) Set:Opmerking="" Opmerking="Manuele correctie" ... Set:'$G(LevAlsKlant) Aantal=-Aantal ... Do ##class(BL.Flow.RecuPak.Main).ManueleCorrectie(KLNr,PRNr,Aantal,Opmerking) .. Set Opmerking=$S(Beweging="I":"",Beweging="R":"Correctie in",1:"Correctie uit") .. Do:"\U\L\"[(D_Beweging_D) ##class(BL.Flow.RecuPak.Main).TerugGave(KLNr,PRNr,Aantal,Opmerking) // Teruggave aan Blum of levering aan klant .. Do:"\I\R\"[(D_Beweging_D) ##class(BL.Flow.RecuPak.Main).TerugName(KLNr,PRNr,Aantal,,,,,,Opmerking) // Terugname van klant of receptie van Blum . Kill RecuPak Else Set Save="N" Quit Save // Terug van klant of terug aan Blum AantalTerug New %SC,R,HistRec,PRNr,OudSaldo,NieuwSaldo,OudTijdStip,NieuwTijdStip,AantalTerug Set HistRec=RecuPak(LD("SELECT")),PRNr=$P(HistRec,D),OudSaldo=$P(HistRec,D,2) Set OudTijdStip=$P(HistRec,D,4),NieuwTijdStip=$P(HistRec,D,5),AantalTerug=$P(HistRec,D,6) Do STORE^vhTERMINA(),FIELD^vhScherm("RECUPAKMOD","AANTTERUG"),REFRESH^vhTERMINA() Do:%SC . If 'AantalTerug Set NieuwSaldo=OudSaldo,NieuwTijdStip=OudTijdStip . Else Set NieuwSaldo=OudSaldo-AantalTerug,NieuwTijdStip=$H . Set $P(HistRec,D,3)=NieuwSaldo,$P(HistRec,D,5)=NieuwTijdStip,$P(HistRec,D,6)=AantalTerug . Set RecuPak(LD("SELECT"))=HistRec . Do ENABLE^vhLIST(.LD,LD("SELECT"),1) Quit // Receptie van Blum of levering aan klant AantalGeleverd New %SC,R,HistRec,PRNr,OudSaldo,NieuwSaldo,OudTijdStip,NieuwTijdStip,AantalGeleverd Set HistRec=RecuPak(LD("SELECT")),PRNr=$P(HistRec,D),OudSaldo=$P(HistRec,D,2) Set OudTijdStip=$P(HistRec,D,4),NieuwTijdStip=$P(HistRec,D,5),AantalGeleverd=$P(HistRec,D,6) Do STORE^vhTERMINA(),FIELD^vhScherm("RECUPAKMOD","AANTGELEV"),REFRESH^vhTERMINA() Do:%SC . If 'AantalGeleverd Set NieuwSaldo=OudSaldo,NieuwTijdStip=OudTijdStip . Else Set NieuwSaldo=OudSaldo+AantalGeleverd,NieuwTijdStip=$H . Set $P(HistRec,D,3)=NieuwSaldo,$P(HistRec,D,5)=NieuwTijdStip,$P(HistRec,D,6)=AantalGeleverd . Set RecuPak(LD("SELECT"))=HistRec . Do ENABLE^vhLIST(.LD,LD("SELECT"),1) Quit // Manuele correctie AantalCorrectie New %SC,R,HistRec,PRNr,OudSaldo,NieuwSaldo,OudTijdStip,NieuwTijdStip,AantalCorrectie,Opmerking Set HistRec=RecuPak(LD("SELECT")),PRNr=$P(HistRec,D),OudSaldo=$P(HistRec,D,2) Set OudTijdStip=$P(HistRec,D,4),NieuwTijdStip=$P(HistRec,D,5),AantalCorrectie=$P(HistRec,D,6) Set Opmerking=$P(HistRec,D,7) If 'AantalCorrectie Do . Set Opmerking="" . Do NIEUW^vhScherm("RECUPAKMOD",,,,,,3) Else Do EDIT^vhScherm("RECUPAKMOD",,,,,,3) Do:%SC . If 'AantalCorrectie Set NieuwSaldo=OudSaldo,NieuwTijdStip=OudTijdStip,Opmerking="" . Else Set NieuwSaldo=OudSaldo+AantalCorrectie,NieuwTijdStip=$H . Set $P(HistRec,D,3)=NieuwSaldo,$P(HistRec,D,5)=NieuwTijdStip,$P(HistRec,D,6)=AantalCorrectie . Set $P(HistRec,D,7)=Opmerking . Set RecuPak(LD("SELECT"))=HistRec . Do ENABLE^vhLIST(.LD,LD("SELECT"),1) Quit ; AutoSelect bevat de nieuwe automatisch te selecteren beweging ; I = Terugname ; U = Teruggave ; R = Receptie ; L = Uitlevering ; M = Manuele correctie Beweging(Beweging,Derde,AutoSelect) New R,zb Set R=$G(AutoSelect) Set:R="" R=$$POP^vhScherm("RECUPAK","BEWEGING","-O1","Beweging","RECUPAK","BEWEGING",Beweging) If R'=Beweging Do . If R="M" Quit:'$$ASK^vhWACHTW("MANAGER",,,0) . Quit:$$Save(KLNr,.RecuPak,Beweging)="" . Set Beweging=R,$P(Derde,";",2)="",BewegingModified=1 Quit CBBeweging(sRec) New D,Include Set D="\",Include=$P(sRec,"`",3)[$E(Derde) If $P(sRec,"`")="M",";"_$$USERID^vhUSER("SYS")_";"'[(";"_$G(QU(1))_";") Set Include=0 Quit Include Raadplegen(KLNr) New R,RecuPak,LD,VerwerkKlanten,Beweging,BewegingModified,Derde,zb,BLObj,Input Set BLObj=##class(BL.Flow.RecuPak.Main).%New() Set Beweging="" Set Derde="K;"_KLNr Do DISPLAY^vhScherm("RECUPAK"),INIT^vhLIST("RECUPAK","TERUGNAME",.LD),WRITE^vhLIST(.LD) Set Beweging="I" Do FetchKlant(KLNr,.RecuPak,Beweging) Do WRITE^vhLIST(.LD) For Set Input=$$SCROLL^vhLIST(.LD) Do Quit:Input="CANC" . If Input="COM" Set Input="" Do CALL^vhMenu("RECUPAKR",.Input) . Do EXEC^vhMenu("RECUPAKR",.Input) . Set:Input="CANC" Derde="" Quit Historiek(KLNr,PRNr) New %J,R,TijdStip,TempTijdStip,Count,LD,Derde,Input Do STORE^vhTERMINA() Set %J=$$%J^vhRtn1(),Derde="K;"_KLNr Set:KLNr=##class(Derde.Lev.Lev).LevAlsKlant(5005) Derde="L;5005" Do DISPLAY^vhScherm("RECUPAKH") Kill ^HULP(%J) Set Count=0,(TijdStip,TempTijdStip)="" For Set TijdStip=$O(^HISTPAK("D",KLNr,PRNr,"H",TijdStip),-1) Quit:TijdStip="" Do . Set R=^HISTPAK("D",KLNr,PRNr,"H",TijdStip) . Set $P(R,D,20)=TijdStip_D_$S(+TempTijdStip=+TijdStip:"",1:TijdStip) . Set Count=Count+1,^HULP(%J,Count)=R,TempTijdStip=TijdStip Kill ^HULP(%J,"S") Do INIT^vhLIST("RECUPAK","HISTORIEK",.LD),WRITE^vhLIST(.LD) For Set Input=$$SCROLL^vhLIST(.LD) Do Quit:Input="-" . Set Input="-" Kill ^HULP(%J) Do REFRESH^vhTERMINA() Quit OmschrijvingHistoriek(Rec) New Omchrijving,Opmerking,DOKLNr,MPRNr Set Opmerking=$P(Rec,D,6),DOKLNr=$P(Rec,D,9),MPRNr=$P(Rec,D,10) Set Omschrijving=Opmerking Do:DOKLNr . Set Omschrijving=Omschrijving_" (DO" . Set:$D(^KK1(DOKLNr)) Omschrijving=Omschrijving_" "_$P(^KKL(^KK1(DOKLNr),0),D,2) . Set Omschrijving=Omschrijving_")" If Omschrijving="",MPRNr Set Omschrijving=$P($G(^KPR(MPRNr,0),"*** "_MPRNr_" ***"),D) Quit Omschrijving ConvertHISTPAK Set KLNr=0,(KLCount,SaldoOk,SaldoNok)=0 For Set KLNr=$O(^HISTPAK("D",KLNr)) Quit:KLNr="" Do . Set KLCount=KLCount+1 . Kill HistPak . Merge HistPak("D",KLNr)=^HISTPAK("D",KLNr) . Kill ^HISTPAK("D",KLNr) . Set PRNr="" . For Set PRNr=$O(HistPak("D",KLNr,PRNr)) Quit:PRNr="" Do .. Set TijdStip="",Saldo=0 .. For Set TijdStip=$O(HistPak("D",KLNr,PRNr,"H",TijdStip)) Quit:TijdStip="" Do ... Set (R,RL,RT)=HistPak("D",KLNr,PRNr,"H",TijdStip) ... If $P(RL,D,2) Do .... Set Saldo=Saldo-$P(RL,D,2),$P(RL,D)=Saldo,$P(RL,D,2)=-$P(RL,D,2),$P(RL,D,4)="U" .... Set ^HISTPAK("D",KLNr,PRNr,"H",TijdStip)=RL ... If $P(RT,D,4) Do .... If $P(R,D,2),$P(R,D,4) Set $P(TijdStip,",",2)=$P(TijdStip,",",2)+1 .... Set Saldo=Saldo+$P(RT,D,4),$P(RT,D)=Saldo,$P(RT,D,2)=$P(RT,D,4),$P(RT,D,4)="I" .... Set ^HISTPAK("D",KLNr,PRNr,"H",TijdStip)=RT .. If -Saldo'=$P(HistPak("D",KLNr,PRNr),D) Write !,KLNr,?10,PRNr,?20,Saldo,?30,$P(HistPak("D",KLNr,PRNr),D) Set SaldoNok=SaldoNok+1 .. Else Set SaldoOk=SaldoOk+1 Write !!!,"Convert : ",KLCount Write !,"Saldo ok : ",SaldoOk Write !,"Saldo niet ok : ",SaldoNok Quit