vhRestoreFactToBon ; Verwijderen verkoopfacturen - Terugsteken leveringsbon, opkuis statistiek, hiestoriek, ... ; ; Restore van een factuur RestoreFactuur(FANr) New R,KLNr,BONNr,ExtFactDat,IntFactDat,Maand,KC Do:$D(^KFA("F",FANr)) . Do DeleteArchive^KF20(FANr) . Set R=^KFA("F",FANr,0,0),KLNr=$P(R,D),ExtFactDat=$P(R,D,6),IntFactDat=$$INTDATE^vhDTyp(ExtFactDat) . Set Maand=$$CONVDATE^vhDTyp(ExtFactDat,"DKP","DM4")_" " . Set BONNr="U" . For Set BONNr=$O(^KFA("F",FANr,BONNr)) Quit:$E(BONNr)'="U" Do RestoreBon(FANr,$E(BONNr,2,9),Maand) . Kill ^KFA1("F",KLNr,-IntFactDat,FANr) Quit ; Restore van een bon RestoreBon(FANr,BONNr,Maand) New R,X,KLNr,BLNr,PRNr,Aantal,Korting,LijstPr,AankPr,Omzet,ActieCode,IsActieProd Set R=$G(^KU1(BONNr,"F")),KLNr=$P(R,D) Merge ^KUL(KLNr,"F",BONNr)=^KUL(KLNr,"G",BONNr) Kill ^KUL(KLNr,"G",BONNr) Set BLNr=100 For Set BLNr=$O(^KUL(KLNr,"F",BONNr,BLNr)) Quit:'BLNr Do . Set R=$G(^KFA("F",FANr,"U"_BONNr,BLNr)) . Do:R="" . . Set R=^KUL(KLNr,"F",BONNr,BLNr),Aantal=$P(R,D,3),PRNr=$P(R,D,2) . . Quit:'PRNr . . Set X=$$KLANTPR^KPRIJS(KLNr,PRNr),AankPr=$P(X,D,13),LijstPr=$P(X,D,15) . . Set $P(R,D,32)=LijstPr*Aantal,$P(R,D,33)=AankPr*Aantal,$P(R,D,34)=$P(R,D,9) . Set PRNr=$P(R,D,2),IsActieProd=0 . If 'PRNr,$P($P(R,D,17),"#",2)="CK" Do . . Set ActieCode=$P($P(R,D,17),"#",4) . . Set:$L(ActieCode) (PRNr,IsActieProd)=$P($G(^RES("FLOW","PI","MANLIJNAC","D",ActieCode)),"`",4) . Quit:'PRNr . Set Korting=$P(R,D,7),LijstPr=$P(R,D,32),AankPr=$P(R,D,33),Omzet=$P(R,D,34) . Do RestoreKLKAN(KLNr,PRNr,Maand,Korting,LijstPr,AankPr,Omzet) . Do RestoreStat(FANr,BONNr,BLNr,Maand) . Do:'IsActieProd RestoreHist(BONNr,BLNr) ; Opkuisen van de indexen Set $P(^KU1(BONNr,"F"),D,2,99)="" Kill ^KU1(BONNr,"F",FANr) Set R=^KUL(KLNr,"F",BONNr,1),$P(R,D,6)=KLNr Do SET^KFVZW("F",R,BONNr) Set ^KU2("F",KLNr,BONNr)="" Do BUILDBON^FLOWBON3(KLNr,BONNr) Do BUILDKUP^FLOWBON3(KLNr,BONNr) Quit ; Restore KSTKL en KSTPR RestoreStat(FANr,BONNr,BLNr,Maand) New R,KLNr,PRNr,Aantal,AantalKOM,Netto,IsLidVan,%LidVan,ActieCode Set R=^KU1(BONNr,"F"),KLNr=$P(R,D) Set R=^KUL(KLNr,"F",BONNr,BLNr),PRNr=$P(R,D,2) If 'PRNr,$P($P(R,D,17),"#",2)="CK" Do . Set ActieCode=$P($P(R,D,17),"#",4) . Set:$L(ActieCode) PRNr=$P($G(^RES("FLOW","PI","MANLIJNAC","D",ActieCode)),"`",4),$P(R,D,3)=$S(+$P(R,D,3)=0:1,1:$P(R,D,3)) Do:PRNr . Set IsLidVan=$$GetLidVan^KF21B(KLNr),%LidVan=$LI(IsLidVan,2),IsLidVan=$LI(IsLidVan) . Set Aantal=$P(R,D,3),IsKOM=$P($P(R,D,28),";")="KOM" . Set Netto=$P(R,D,9) . If IsLidVan,%LidVan S Netto=+$J(Netto*(100-%LidVan/100),0,4) . Set R=^($O(^KPR(PRNr,"J"))),CiffPPL=$P(R,D,23),Marge=Netto-(CiffPPL*Aantal),LijstPrijs=$P(R,D,25) . Do RestoreKSTKL(KLNr,PRNr,Maand,Aantal,Netto,Marge,LijstPrijs,IsKOM) . Do RestoreKSTPR(PRNr,KLNr,Maand,Aantal,Netto,Marge,LijstPrijs,IsKOM) Quit ; Restore KSTKL RestoreKSTKL(KLNr,PRNr,Maand,Aantal,Netto,Marge,LijstPrijs,IsKOM) New R,StatPRNr For StatPRNr=0,PRNr Do . Set R=$G(^KSTKL(KLNr,StatPRNr,Maand)) . Quit:R="" . Set $P(R,D)=$P(R,D)-Aantal . Set $P(R,D,2)=$P(R,D,2)-1 . Set $P(R,D,3)=$P(R,D,3)-Netto . Set $P(R,D,4)=$P(R,D,4)-Marge . Set:IsKOM $P(R,D,5)=$P(R,D,5)-Aantal . Set $P(R,D,6)=$P(R,D,6)-(Aantal*LijstPrijs) . If $TR(R,"0\","")="" Kill ^KSTKL(KLNr,StatPRNr,Maand) . Else Set ^KSTKL(KLNr,StatPRNr,Maand)=R . Kill:$O(^KSTKL(KLNr,StatPRNr,0))="" ^KSTKL(KLNr,StatPRNr,0) Quit ; Restore KSTPR RestoreKSTPR(PRNr,KLNr,Maand,Aantal,Netto,Marge,LijstPrijs,IsKOM) New R,StatKLNr For StatKLNr=0,KLNr Do . Set R=$G(^KSTPR(PRNr,StatKLNr,Maand)) . Quit:R="" . Set $P(R,D)=$P(R,D)-Aantal . Set $P(R,D,2)=$P(R,D,2)-1 . Set $P(R,D,3)=$P(R,D,3)-Netto . Set $P(R,D,4)=$P(R,D,4)-Marge . Set:IsKOM $P(R,D,5)=$P(R,D,5)-Aantal . Set $P(R,D,6)=$P(R,D,6)-(Aantal*LijstPrijs) . If $TR(R,"0\","")="" Kill ^KSTPR(PRNr,StatKLNr,Maand) . Else Set ^KSTPR(PRNr,StatKLNr,Maand)=R . Kill:$O(^KSTPR(PRNr,StatKLNr,0))="" ^KSTPR(PRNr,StatKLNr,0) Quit ; Restore klantstatistiek per kodex RestoreKLKAN(KLNr,PRNr,Maand,Korting,LijstPr,AankPr,Omzet) New R,Kodex Set Maand=$$INTDATE^vhDTyp($P(Maand," "),"DM") Set Korting=1-(1-($P(Korting,"#")/100))*(1-($P(Korting,"#",2)/100))*100 Set Kodex=$S(Korting'>0:0,Korting'>7.5:1,Korting'>15:2,Korting'>22.5:3,1:4)*3 Set R=$G(^KLKAN(KLNr,0,Maand)) Set $P(R,D,1+Kodex)=$P(R,D,1+Kodex)-Omzet Set $P(R,D,2+Kodex)=$P(R,D,2+Kodex)-LijstPr Set $P(R,D,3+Kodex)=$P(R,D,3+Kodex)-AankPr If $TR(R,"0\","")="" Kill ^KLKAN(KLNr,0,Maand) Else Set ^KLKAN(KLNr,0,Maand)=R Set R=$G(^KLKAN(KLNr,PRNr,Maand)) Set $P(R,D,1+Kodex)=$P(R,D,1+Kodex)-Omzet Set $P(R,D,2+Kodex)=$P(R,D,2+Kodex)-LijstPr Set $P(R,D,3+Kodex)=$P(R,D,3+Kodex)-AankPr If $TR(R,"0\","")="" Kill ^KLKAN(KLNr,PRNr,Maand) Else Set ^KLKAN(KLNr,PRNr,Maand)=R Quit ; ; Restore van de produkthistoriek RestoreHist(BONNr,BLNr) New R,KLNr,FANr,PRNr,BLUNr,HistNr,Exit Set R=$G(^KU1(BONNr,"F")),KLNr=$P(R,D),FANr=$P(R,D,2) If KLNr,FANr Do . Set R=^KUL(KLNr,"F",BONNr,BLNr),PRNr=$P(R,D,2),BLUNr=$P(R,D,15) . Quit:'PRNr . Set HistNr="",Exit=0 . For Set HistNr=$O(^PRHIST(PRNr,HistNr),-1) Quit:HistNr="" Do Quit:Exit . . Set R=^PRHIST(PRNr,HistNr) . . If $P(R,D,6)=KLNr,$P(R,D,7)=BONNr,$P(R,D,8)=BLUNr,$P(R,D,10)=FANr Do . . . Set $P(R,D,10)="",^PRHIST(PRNr,HistNr)=R,Exit=1 . . . Set ^PRHISTI("B",BONNr,BLUNr,PRNr)=HistNr Quit