FLOWOFF3 ;Offerte [ 01/10/2003 4:02 PM ] ; DELLINE(OFFNr,OFLNr,Extern) New %TC,R,KLNr,PRNr,OFLUNr Set Extern=$G(Extern),KLNr=$P(^KOFKL1(OFFNr,"F"),D) For Do ADD^vhLock("^KOFKL(KLNr,""F"",OFFNr,OFLNr)") Quit:%TC Do LDISP^vhLock("^KOFKL(KLNr,""F"",OFFNr,OFLNr)","Offerte "_OFFNr) If OFLNr,OFLNr?.N Do .Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2),OFLUNr=$P(R,D,15) .Kill:PRNr ^KOFKLP(PRNr,OFFNr,OFLNr) .Do DELOFF(KLNr,OFFNr,OFLNr) .Kill:OFLUNr AkpVkpVerlies(OFLUNr) Kill ^KOFKL(KLNr,"F",OFFNr,OFLNr) If $G(PRNr) Do ResetVerstuurd(OFFNr) If Extern Do KSTBXKWK^FLOWOFF4(KLNr,OFFNr) If Extern,$O(^KOFKL(KLNr,"F",OFFNr,100))="" Do .Kill ^KOFKL1(OFFNr,"F"),^KOFKLB(OFFNr,"F"),^KOFKLT(OFFNr,"F"),^KOFKL2("F",KLNr,OFFNr),^KOFKL(KLNr,"F",OFFNr) Do REMOVE^vhLock("^KOFKL(KLNr,""F"",OFFNr,OFLNr)") Quit ; DELOBJ(OFFNr) New KLNr,OFLNr Set KLNr=$P(^KOFKL1(OFFNr,"F"),D),OFLNr=100 For Do ADD^vhLock("^KOFKL(KLNr,""F"",OFFNr)") Quit:%TC Do LDISP^vhLock("^KOFKL(KLNr,""F"",OFFNr)","Offerte "_OFFNr) For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr="" Do DELLINE(OFFNr,OFLNr) Kill ^KOFKL1(OFFNr,"F"),^KOFKLB(OFFNr,"F"),^KOFKLT(OFFNr,"F"),^KOFKL2("F",KLNr,OFFNr),^KOFKL(KLNr,"F",OFFNr) Do REMOVE^vhLock("^KOFKL(KLNr,""F"",OFFNr)") Quit ; AUTO New B,R,OFFNr,KlMunt,NetBrutP,LevVoorw Do FETCHKL^UTILI(KLNr) Set KlMunt=$P(B(1),D,11),NetBrutP=$P(B(3),D,5),LevVoorw=$P(B(4),D,3) Set:KlMunt="" KlMunt=$$FADEF^vhRtn1() Set OFFNr=$$GETNUM^FLOW("KOFKL","KOFKL1") Set R="",$P(R,D,31)="",$P(R,D,2)=DT,$P(R,D,3)=$G(Refer),$P(R,D,6)=KLNr,$P(R,D,9,12)="1\1\\1" Set $P(R,D,18)=KlMunt,$P(R,D,21)=LevVoorw,$P(R,D,25)=OffTyp,$P(R,D,27)=NetBrutP Set ^KOFKL(KLNr,"F",OFFNr,0)=101,^KOFKL(KLNr,"F",OFFNr,1)=R Set ^KOFKL1(OFFNr,"F")=KLNr_D,^KOFKL2("F",KLNr,OFFNr)="",^KOFKLB(OFFNr,"F")=KLNr_"\\\"_+$H Quit OFFNr ; BUILDOFF(KLNr,OFFNr,OFLNr) Set KLNr=$G(KLNr,0),OFFNr=$G(OFFNr),OFLNr=$G(OFLNr) Do BUILDIU(KLNr,OFFNr,OFLNr) Do BUILDIP(KLNr,OFFNr,OFLNr) Quit ; BUILDIU(KLNr,OFFNr,OFLNr) New R,OneCust,OneOff,OneLine,PRNr,OFLUNr Set KLNr=$G(KLNr,0),OFFNr=$G(OFFNr),OFLNr=$G(OFLNr) Set (OneCust,OneOff,OneLine)=0 Set:KLNr OneCust=1 Set:OFFNr OneOff=1 Set:OFLNr OneLine=1 For Set:'OneCust KLNr=$O(^KOFKL(KLNr)) Quit:KLNr="" Do Quit:OneCust .Set:'OneOff OFFNr=0 .For Set:'OneOff OFFNr=$O(^KOFKL(KLNr,"F",OFFNr)) Quit:OFFNr="" Do Quit:OneOff ..Set:'OneLine OFLNr=100 ..For Set:'OneLine OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr'?3.4N Do Quit:OneLine ...Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2),OFLUNr=$P(R,D,15) ...If 'OFLUNr Set OFLUNr=$$UNIEKLNR^FLOWOFF(KLNr,OFFNr),$P(R,D,15)=OFLUNr,^KOFKL(KLNr,"F",OFFNr,OFLNr)=R ...Quit:'PRNr ...Set ^OFF("IU",OFFNr,OFLUNr)=OFLNr Quit ; BUILDIP(KLNr,OFFNr,OFLNr) New R,OneCust,OneOff,OneLine,OFLUNr,PRNr Set KLNr=$G(KLNr,0),OFFNr=$G(OFFNr),OFLNr=$G(OFLNr) Set (OneCust,OneOff,OneLine)=0 Set:KLNr OneCust=1 Set:OFFNr OneOff=1 Set:OFLNr OneLine=1 For Set:'OneCust KLNr=$O(^KOFKL(KLNr)) Quit:KLNr="" Do Quit:OneCust .Set:'OneOff OFFNr=0 .For Set:'OneOff OFFNr=$O(^KOFKL(KLNr,"F",OFFNr)) Quit:OFFNr="" Do Quit:OneOff ..Set:'OneLine OFLNr=100 ..For Set:'OneLine OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr'?3.4N Do Quit:OneLine ...Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2),OFLUNr=$P(R,D,15) ...If 'OFLUNr Set OFLUNr=$$UNIEKLNR^FLOWOFF(KLNr,OFFNr),$P(R,D,15)=OFLUNr,^KOFKL(KLNr,"F",OFFNr,OFLNr)=R ...Quit:'PRNr ...Set ^OFF("IP",PRNr,OFFNr,OFLUNr)=OFLNr ...Set ^KOFKLP(PRNr,OFFNr,OFLNr)=KLNr Quit ; DELOFF(KLNr,OFFNr,OFLNr) Set KLNr=$G(KLNr,0),OFFNr=$G(OFFNr),OFLNr=$G(OFLNr) Do DELIU(KLNr,OFFNr,OFLNr) Do DELIP(KLNr,OFFNr,OFLNr) Quit ; DELIU(KLNr,OFFNr,OFLNr) New R,OneCust,OneOff,OneLine,OFLUNr Set KLNr=$G(KLNr,0),OFFNr=$G(OFFNr),OFLNr=$G(OFLNr) Set (OneCust,OneOff,OneLine)=0 Set:KLNr OneCust=1 Set:OFFNr OneOff=1 Set:OFLNr OneLine=1 For Set:'OneCust KLNr=$O(^KOFKL(KLNr)) Quit:KLNr="" Do Quit:OneCust .Set:'OneOff OFFNr=0 .For Set:'OneOff OFFNr=$O(^KOFKL(KLNr,"F",OFFNr)) Quit:OFFNr="" Do Quit:OneOff ..Set:'OneLine OFLNr=100 ..For Set:'OneLine OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:'OFLNr Do Quit:OneLine ...Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2),OFLUNr=$P(R,D,15) ...If 'OFLUNr Set OFLUNr=$$UNIEKLNR^FLOWOFF(KLNr,OFFNr),$P(R,D,15)=OFLUNr,^KOFKL(KLNr,"F",OFFNr,OFLNr)=R ...Quit:'PRNr ...Kill ^OFF("IU",OFFNr,OFLUNr) Quit ; DELIP(KLNr,OFFNr,OFLNr) New R,OneCust,OneOff,OneLine,OFLUNr,PRNr Set KLNr=$G(KLNr,0),OFFNr=$G(OFFNr),OFLNr=$G(OFLNr) Set (OneCust,OneOff,OneLine)=0 Set:KLNr OneCust=1 Set:OFFNr OneOff=1 Set:OFLNr OneLine=1 For Set:'OneCust KLNr=$O(^KOFKL(KLNr)) Quit:KLNr="" Do Quit:OneCust .Set:'OneOff OFFNr=0 .For Set:'OneOff OFFNr=$O(^KOFKL(KLNr,"F",OFFNr)) Quit:OFFNr="" Do Quit:OneOff ..Set:'OneLine OFLNr=100 ..For Set:'OneLine OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:'OFLNr Do Quit:OneLine ...Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2),OFLUNr=$P(R,D,15) ...If 'OFLUNr Set OFLUNr=$$UNIEKLNR^FLOWOFF(KLNr,OFFNr),$P(R,D,15)=OFLUNr,^KOFKL(KLNr,"F",OFFNr,OFLNr)=R ...Quit:'PRNr ...Kill ^OFF("IP",PRNr,OFFNr,OFLUNr) ...Kill ^KOFKLP(PRNr,OFFNr,OFLNr) Quit ; BUILDKOF New Do INIT^vhTERMINA Kill ^KOFKLP Set KLNr=0 For Set KLNr=$O(^KOFKL(KLNr)) Quit:'KLNr Do .Set OFFNr="" .For Set OFFNr=$O(^KOFKL(KLNr,"F",OFFNr)) Quit:'OFFNr Do ..Set OFLNr=100 ..For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:'OFLNr Quit:OFLNr'?.N Do ...Set PRNr=$P(^KOFKL(KLNr,"F",OFFNr,OFLNr),D,2) ...Quit:'PRNr Quit:'$D(^KPR(PRNr)) ...Set ^KOFKLP(PRNr,OFFNr,OFLNr)=KLNr Quit ; CHECKKOF New Do INIT^vhTERMINA Set KLNr=0 For Set KLNr=$O(^KOFKL(KLNr)) Quit:'KLNr Do .Set OFFNr="" .For Set OFFNr=$O(^KOFKL(KLNr,"F",OFFNr)) Quit:'OFFNr Do ..Set OFLNr=100 ..For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:'OFLNr Quit:OFLNr'?.N Do ...Set PRNr=$P(^KOFKL(KLNr,"F",OFFNr,OFLNr),D,2) ...Quit:'PRNr ...If '$D(^KPR(PRNr)) Write:$D(^KOFKLP(PRNr,OFFNr,OFLNr)) !,$ZR,!,"Produkt onbekend" ...Else If '$D(^KOFKLP(PRNr,OFFNr,OFLNr)) Write !,$ZR,!,"Onbekend" ...Else If ^KOFKLP(PRNr,OFFNr,OFLNr)'=KLNr Write !,$ZR,!,"Klant verschillend" Set PRNr="" For Set PRNr=$O(^KOFKLP(PRNr)) Quit:'PRNr Do .Set OFFNr="" .For Set OFFNr=$O(^KOFKLP(PRNr,OFFNr)) Quit:'OFFNr Do ..Set OFLNr="" ..For Set OFLNr=$O(^KOFKLP(PRNr,OFFNr,OFLNr)) Quit:'OFLNr Do ...Set KLNr=^KOFKLP(PRNr,OFFNr,OFLNr) ...If '$D(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Write !,$ZR,!,"Onbekend" ...Else If PRNr'=$P(^KOFKL(KLNr,"F",OFFNr,OFLNr),D,2) Write !,$ZR,!,"Produkt verschillend" Quit ; AUTOOFF New R,Next,Aantal,LevTerm,Prijs,Text,BlockId,AfdrFakt,NoRecalc Set Next="" For Set Next=$O(PRNr(Next)) Quit:Next="" Do .Set ScrolOff=1 .Set R=PRNr(Next) .If $P(R,D)="T" Do ..Set Text=$P(R,D,2),BlockId=$P(R,D,3),AfdrFakt=$P(R,D,4) ..Do TINSERT^FLOWOFF(,,Text,,BlockId,AfdrFakt) .Else Do ..Set PRNr=$P(R,D),Aantal=$P(R,D,2),LevTerm=$P(R,D,3),Prijs=$P(R,D,4) ..Set NoRecalc=''$L(Prijs) Set:'NoRecalc NoRecalc="" ..Do PINSERT^FLOWOFF(,,PRNr,Aantal,Prijs,,,LevTerm) Kill PRNr Quit ; BUILDOBJ(KLNr,OffTyp,Refer,PRNr) New OFFNr,Next,Prijs,Round,Munt,Korting1,Korting2,Netto,Bruto,IsStock,Verpak,LevTerm Set OFFNr=$$AUTO^FLOWOFF(KLNr,OffTyp,$G(Refer)) Do INITKL^FLOWOFF For Next=1:1 Quit:'$D(PRNr(Next)) Do .Set R=PRNr(Next),PRNr=$P(R,D),Aantal=$P(R,D,2) .Quit:'PRNr Quit:'$D(^KPR(PRNr)) .Set R=$$KLANTPR^KPRIJS(KLNr,PRNr),Prijs=$P(R,D),Munt=$P(R,D,2),Korting1=$P(R,D,5),Korting2=$P(R,D,6) .Set Round=$P(R,D,10) .Set R=^KPR(PRNr,1),IsStock=$P(R,D,20),R=$O(^KPR(PRNr,"J")) Set:$E(R)="J" R=^KPR(PRNr,R) .Set LevTerm=$S(IsStock:".",1:$P(R,D,7)+1),Verpak=$TR($P(R,D,14,16),D,"#") .Set R="",$P(R,D,35)=D,$P(R,D,2)=PRNr,$P(R,D,3)=Aantal,$P(R,D,6)=$J(Prijs,0,2) .Set $P(R,D,7)=Korting1_"#"_Korting2,$P(R,D,9)=$J(Prijs*Aantal,0,2),$P(R,D,10)=$P(R,D,9) .Set $P(R,D,16)=$P(R,D,9),$P(R,D,17)="KOF0",$P(R,D,21)=Round,$P(R,D,22)=Munt,$P(R,D,23)=Verpak .Set $P(R,D,25)=LevTerm .Do INSERT^FLOWOFF(R,"E","",0) Do SORT^FLOWOFF() If $O(^KOFKL(KLNr,"F",OFFNr,100))="" Do DELOBJ(OFFNr) Quit OFFNr ; ; Geef een tabel van alle geldige offertes van een klant voor een bepaald product ; Beperk bevat "P" = Lijst beperken tot een lijn per prijs GetGeldigeOfferte(KLNr,PRNr,Offertes,Beperk,NoSa) New R,OFFNr,OFFLNr,Count,DagenAfname,NietOuderDan,OffDatum,StatDatum,KKey,Geldig,UitzLijn,UitzGeldigVan,UitzGeldigTot,UitzDatum New LEVNr,DatumPrijsWijz,BeperkPrijs Set:$G(NoSa)'="S" NoSa="N" Set BeperkPrijs=$G(Beperk)["P" Set LEVNr=$$LEVNR^PRODUKT2(PRNr),DatumPrijsWijz=$P(^KLE(^KL1(LEVNr),2),D,4) Set:'DatumPrijsWijz DatumPrijsWijz=$$CALCDATE^vhDTyp(,"M",-12,"FD") ; Defaulting Set R=$$GETALG^DEFAULTS("FLOWOFF","DAGENGELDIG"),DagenAfname=$P(R,D),NietOuderDan=$P(R,D,2) Set OFFNr="" Set KKey=$$KKEY^KLASS(PRNr),HoofdGr=$$GETSORT^KLASS(KKey,1) Set Groep=$$GETSORT^KLASS(KKey,2),SubGroep=$$GETSORT^KLASS(KKey,3) For Set OFFNr=$O(^KOFKLP(PRNr,OFFNr)) Quit:OFFNr="" Do . Set R=$G(^KOFKL(KLNr,"F",OFFNr,1)) . Quit:R="" . If $P(R,D,14),NoSa'="S" Quit ; Schaduw . Set OffDatum=$$INTDATE^vhDTyp($P(R,D,2)) . If DatumPrijsWijz,OffDatumUitzGeldigTot Geldig=0 ; Geldig tot is goter dan offertedatum ... Set:UitzDatum>OffDatum Geldig=0 ; Ingave- wijziging uitzondering is goter dan offertedatum . Set R=$G(^KSTKL(KLNr,PRNr,0)) . If $L(R) Set StatDatum=$$INTDATE^vhDTyp($P(R,D)) Quit:StatDatum>(OffDatum+DagenAfname) ; Recenter afgenomen dan offertedatum+X . Set OFFLNr=100 . For Set OFFLNr=$O(^KOFKLP(PRNr,OFFNr,OFFLNr)) Quit:OFFLNr="" Do .. Quit:^KOFKLP(PRNr,OFFNr,OFFLNr)'=KLNr .. Set R=$G(^KOFKL(KLNr,"F",OFFNr,OFFLNr)) .. Quit:R="" .. Set R=OFFNr_D_OFFLNr_D_$P(R,D,3)_D_$P(R,D,6)_D_$P(R,D,22)_D_$P(R,D,21)_D_OffDatum_D_$ZR .. If $D(Offertes("P",+$P(R,D,4))),Offertes("P",+$P(R,D,4))'<$P(R,D,3) .. Else Set Offertes("P",+$P(R,D,4))=$P(R,D,3) .. Set Offertes("S",OffDatum,OFFNr,OFFLNr)=R Set Count=0,OffDatum="" For Set OffDatum=$O(Offertes("S",OffDatum),-1) Quit:OffDatum="" Do . Set OFFNr="" . For Set OFFNr=$O(Offertes("S",OffDatum,OFFNr)) Quit:OFFNr="" Do .. Set OFFLNr="" .. For Set OFFLNr=$O(Offertes("S",OffDatum,OFFNr,OFFLNr)) Quit:OFFLNr="" Do ... Set R=Offertes("S",OffDatum,OFFNr,OFFLNr) ... If BeperkPrijs Quit:$P(R,D,3)'=$G(Offertes("P",+$P(R,D,4))) ... Set Count=Count+1,Offertes(Count)=R ... Kill Offertes("P",+$P(R,D,4)) Kill Offertes("P"),Offertes("S") Quit ; ; Kies een geldige offerte SelGeldigeOfferte(KLNr,PRNr,Prijs,Munt,GrOrde,Offertes,NoSa) New R,Offerte,LD,zb,Pos,OffDatum,Count Set:$G(NoSa)'="S" NoSa="N" Set Prijs=$G(Prijs),Munt=$G(Munt),GrOrde=$G(GrOrde) If '$G(Prijs),$G(KLNr),$G(PRNr) Set R=$$KLANTPR^KPRIJS(KLNr,PRNr,NoSa),Prijs=$P(R,D),Munt=$P(R,D,2),GrOrde=$P(R,D,3) Set Offerte="" If '$D(Offertes),$G(KLNr),$G(PRNr) Do GetGeldigeOfferte(KLNr,PRNr,.Offertes,"P",NoSa) ; Geldigeffertes ophalen Do:$D(Offertes) . If '$O(Offertes(1)) Set R=Offertes(1) If +$P(R,D,4)=+Prijs,$P(R,D,5)=Munt Set Offerte="H" Quit . Do STORE^vhTERMINA() . Do INIT^vhLIST("FLOW","GELDOFF",.LD) . ; Opzoeken en eventueel selecteren van lijn met de opgegeven prijs . Set OffDatum="" . For Count=1:1 Quit:'$D(Offertes(Count)) Do .. Set R=Offertes(Count) .. If OffDatum<$P(R,D,7),+$P(R,D,4)=+Prijs Set LD("SELECT")=Count,OffDatum=$P(R,D,7) . ; Plaats op het scherm aanpassen . Set Pos=$P(LD("POS"),"`"),$P(Pos,";",3)=$P(Pos,";")+Count-2 . Set:$P(Pos,";",3)>21 $P(Pos,";",3)=21 . Set $P(LD("POS"),"`")=Pos,$P(LD("SET"),"`")=Pos . Do WRITE^vhLIST(.LD) . For Set Offerte=$$SCROLL^vhLIST(.LD) Quit:"\\ENTER\"[(D_zb_D) . Set:Offerte="S" Offerte=Offertes(LD("SELECT")) . Do REFRESH^vhTERMINA() Quit Offerte ; ; Overzicht verstuurd op "" zetten ResetVerstuurd(OFFNr) New KLNr Set KLNr=$P(^KOFKL1(OFFNr,"F"),D),$P(^KOFKL(KLNr,"F",OFFNr,1),D,32)="" Quit ; ; Lijnnummer via uniek lijnnummer OFLNR(OFFNr,OFLUNr) Quit ^OFF("IU",OFFNr,OFLUNr) ;