FLOWMANL ;Manuele lijn ;[ 02/20/2001 10:29 AM ] ; NIEUW(Global,KLNr,DOCNr) New R,DocTyp,Taal,KlMunt,DocMunt,IsHandel,Land,PrijsKl,NetBrut,KlantBtw,NoSa,CommKortNew New PRNr,CKPRNr,ActieCode,IDNr,KortText,Omschr1,Omschr2,CKValidate New Omschr,Bedrag,GbRek,BtwKode,CommKort New Aantal,LevTerm,LijstPr,KlantPr,VerkPr,Munt,Eenheid,Korting1,Korting2,LTyp Do INITKL Set CommKortNew=1,KlantBtw=$G(KB) Set (IDNr,KortText,Omschr1,Omschr2)="" Set (Omschr,Bedrag,BtwKode,CommKort)="" Set (Aantal,LevTerm,LijstPr,KlantPr,VerkPr,Eenheid,Korting1,Korting2,LTyp)="" Set R=@("^"_Global_"(KLNr,""F"",DOCNr,1)"),DocTyp=$P(R,D,25),NetBrut=$P(R,D,27) If Global="KOFKL" Set NoSa=$P(R,D,14),NoSa=$S(NoSa:"S",1:"N") Set DocMunt=$P(R,D,18),Munt=$S(DocMunt="MTL":"",1:DocMunt) For Do FIELD^vhScherm("FLOWMANL","PIDNR") Quit:$G(PRNr)'="-"!'%SC Quit:'%SC "-" If IDNr="A" Do . New zb . Set %SC=0,FP=2201 . Write @F,@F1 . Set ActieCode=$$PI^vhPOPUP("C;C","-1KO","Actie","FLOW","MANLIJNAC") . Quit:zb="CANC" . Set R=^RES("FLOW","PI","MANLIJNAC","D",ActieCode),CommKort=$P(R,"`",3)_"%",CKPRNr=$P(R,"`",4),CKValidate=$P(R,"`",6) . If $L(CKValidate) Xecute "Set CKValidate=$$"_CKValidate_"(KLNr,CKPRNr)" Quit:'CKValidate . Set BtwKode=8 Set:KlantBtw<1 BtwKode=0 . Set IDNr="",LTyp="M",Input=".",%SC=1 Else Do . Set LTyp=$S($L(IDNr):"P",1:"M") . If LTyp="M" For Do FIELD^vhScherm("FLOWMANL","AANTAL") Quit:$G(Aantal)'="-"!'%SC . Quit:'%SC . If LTyp="M" Set BtwKode=8 Set:KlantBtw<1 BtwKode=0 Set:Aantal LTyp="A" . If LTyp="P" Do . . ;Set Korting1=$$KORTING1(KLNr,PrijsKl) . . Set LevTerm=$S(Global="KOFKL":"",$D(DefLevT):DefLevT,1:$$GetLeverDag^FLOW3(KLNr,,$H,1)) . Do NIEUW^vhScherm("FLOWMANL") If %SC Set B(1)="",%SC=$$BUILDB() Quit $S('%SC:"-",1:"") ; WIJZIG(Global,KLNr,DOCNr,LijnNr) New B,R,DocTyp,Taal,KlMunt,DocMunt,IsHandel,Land,PrijsKl,NetBrut,KlantBtw,NoSa,CommKortMod New OldRec,PRNr,CKPRNr,ActieCode,IDNr,KortText,Omschr1,Omschr2 New Omschr,Bedrag,GbRek,BtwKode,CommKort New Aantal,LevTerm,LijstPr,KlantPr,VerkPr,Munt,Eenheid,Korting1,Korting2,LTyp New Quit Do INITKL Set CommKortMod=1,KlantBtw=$G(KB) Set (IDNr,KortText,Omschr1,Omschr2)="" Set (Omschr,Bedrag,BtwKode)="" Set (Aantal,LevTerm,LijstPr,KlantPr,VerkPr,Eenheid,Korting1,Korting2,LTyp)="" Set R=@("^"_Global_"(KLNr,""F"",DOCNr,1)"),DocTyp=$P(R,D,25),NetBrut=$P(R,D,27) If Global="KOFKL" Set NoSa=$P(R,D,14),NoSa=$S(NoSa:"S",1:"N") Set DocMunt=$P(R,D,18),Munt=$S(DocMunt="MTL":"",1:DocMunt) Set (R,OldRec)=@("^"_Global_"(KLNr,""F"",DOCNr,LijnNr)"),Aantal=$P(R,D,3),IDNr=$P(R,D,20) Set LTyp=$S($L(IDNr):"P",$L(Aantal):"A",1:"M") Set GbRek=$P(R,D,1),VerkPr=$P(R,D,6),BtwKode=$P(R,D,8),Bedrag=$P(R,D,9),Munt=$P(R,D,22),CommKort="" Set:$P($P(R,D,17),"#",2)="CK" CommKort=$S($P($P(R,D,17),"#",3):$P($P(R,D,17),"#",3)_"%",1:-Bedrag) If LTyp'="P" Set Omschr=$P(R,D,5) If LTyp="P" Do .Set KortText=$P(R,D,5),Korting1=$P($P(R,D,7),"#"),Korting2=$P($P(R,D,7),"#",2),Eenheid=$P(R,D,21) .Set LevTerm=$P(R,D,25),Omschr1=$P(R,D,29),Omschr2=$P(R,D,30),LijstPr=$P(R,D,32) .Set VerkPr=$J($P(R,D,9)/$P(R,D,3)*$S(Eenheid="M":1000,Eenheid="H":100,1:1),1,2) .Set KlantPr=$J(LijstPr*(100-$$KORTING1(KLNr,PrijsKl))/100,0,2) Do EDIT^vhScherm("FLOWMANL") If %SC Set B(1)=OldRec,%SC=$$BUILDB() If %SC Do .Set @("^"_Global_"(KLNr,""F"",DOCNr,LijnNr)")=B(1) .If "\KOD\KUL\"[(D_Global_D),$P(OldRec,D,9)'=$P(B(1),D,9)!($P(OldRec,D,22)'=Munt) Do ..Do CALCTOT^FLOW(-$P(OldRec,D,9),$P(OldRec,D,22)),CALCTOT^FLOW($P(B(1),D,9),Munt,1) Quit ; ; Opzetten rubrieken volgens type REMATTR New Rubriek If LTyp="" Quit If LTyp="P" Do Quit .If DocTyp'="M",DocTyp'="P",Global'="KOFKL",GbRek="" Do REMATTR^vhScherm("PGBREK","H","DH") .For Rubriek="PIDNR","PKORTTXT","POMSCHR1","POMSCHR2" Do REMATTR^vhScherm(Rubriek,"H","DH") .Do REMATTR^vhScherm("PLEVT"_$S(Global["OFKL":"OFF",1:""),"H","DH") .For Rubriek="PAANTAL","PLIJSTPR","PKORT1","PKORT2","PVERKPR" Do REMATTR^vhScherm(Rubriek,"H","DH") .Do REMATTR^vhScherm("PKLANTPR","H","H") If DocTyp'="M",DocTyp'="P",Global'="KOFKL" Do REMATTR^vhScherm("GBREK","H","DH"),REMATTR^vhScherm("BTW","H","H") Do REMATTR^vhScherm("COMMKORT","H","DH") If LTyp="A" Do Quit .For Rubriek="OMSCHR","AANTAL","PRIJS" Do REMATTR^vhScherm(Rubriek,"H","DH") For Rubriek="OMSCHR","BEDRAG" Do REMATTR^vhScherm(Rubriek,"H","DH") Quit ; ; Kontrole identnummer IDENTNR New R,sFL,OldPRNr If X="" Do Quit .If $L(KortText) Set sEr=1 Quit .Set:KlantBtw<1 BtwKode=0 If X="A",'$$BevatCommKort(Global,KLNr,DOCNr) Quit If $E(X)="?" Do Quit .Set X="-.---.---.-",BtwKode=$P(^KPR($O(^KPR(0)),0),D,5) .Set:KlantBtw<1 BtwKode=0 If $E(X)="P",$G(sModT)'="F"!(LTyp="") Do Quit .If $D(PRNr) Set OldPRNr=PRNr .Set PRNr=$$SELECT^PRODUKT6() .If PRNr="-" Kill PRNr Set:$D(OldPRNr) PRNr=OldPRNr Set sEr=-1 Quit .If $$ISKLANT^KS(KLNr),'$$ISPROD^KS(PRNr),'$$TXTPOP^KS("NOKSPROD","",0,1) Do Quit ..Kill PRNr ..Set:$D(OldPRNr) PRNr=OldPRNr Set sEr=-1 .Set R=$$KLANTPR^KPRIJS(KLNr,PRNr,$G(NoSa,"N")) .If DocMunt'="MTL",$P(R,D,2)'=DocMunt Do Quit ..Set sEr=$P(^KPR(PRNr,0),D)_" munt verschillend" ..Kill PRNr Set:$D(OldPRNr) PRNr=OldPRNr .Set (KlantPr,VerkPr)=$P(R,D),Munt=$P(R,D,2),Eenheid=$P(R,D,3),LijstPr=$P(R,D,4) .Set Korting1=$P(R,D,5),Korting2=$P(R,D,6) .Do FETCHPR^PRODUKT2(PRNr,"sFL") .Set KortText=$P(sFL(0),D),X=$P(sFL(2),D,25) .Set BtwKode=$P(sFL(0),D,5) Set:KlantBtw<1 BtwKode=0 .Set R=@("sFL("_$P("0\1\2\2",D,$F("NFDE",Taal)-1)_")") .Set Omschr1=$P(R,D,$P("2\22\2\1",D,$F("NFDE",Taal)-1)) .Set R=@("sFL("_$P("0\3\3\3",D,$F("NFDE",Taal)-1)_")") .Set Omschr2=$P(R,D,$P("11\21\23\22",D,$F("NFDE",Taal)-1)) .If '$D(sDir),$G(sModT)'="F" Do REPAINT^vhScherm("PIDNR;PKORTTXT;POMSCHR1;POMSCHR2;PLIJSTPR;PKLANTPR;PKORT1;PKORT2;PVERKPR") If '$$CHECKID^PRODUKT2(X) Set sEr=1 Quit If $$EXISTID^PRODUKT2(X) Set sEr="Dit identnummer bestaat reeds" Quit ; ; Opvraven grootboekrekening REKENING() New K Set K=$$SELECT^REKENING(1,GbRek) Set:'K K="-" Quit K ; ; Opvragen lijstprijsgegevens LIJSTPR Quit:$G(PRNr) New LijstPr Set LijstPr=X New X Do PUT^vhScherm("PLIJSTPR",LijstPr),RECALC(Korting1,Korting2) If DocMunt="MTL" For Do FIELD^vhScherm("FLOWMANL","PMUNT") Quit:%SC Do PUT^vhScherm("PLIJSTPR",LijstPr),PUT^vhScherm("PKLANTPR",KlantPr),PUT^vhScherm("PVERKPR",VerkPr) For Do FIELD^vhScherm("FLOWMANL","PEENHEID") Quit:%SC Do PUT^vhScherm("PLIJSTPR",LijstPr),PUT^vhScherm("PKLANTPR",KlantPr),PUT^vhScherm("PVERKPR",VerkPr) Quit ; ; Herrekenen wijzigbare gegevens RECALC(Kt1,Kt2,Vkp) If '$D(Vkp) Do .If 'Kt1,Kt2 Set (Kt1,Korting1,X)=Kt2,(Kt2,Korting2)="" .Set KlantPr=$J(LijstPr*(1-($$KORTING1(KLNr,PrijsKl)/100)),0,2) .Set VerkPr=$J(LijstPr*(1-(Kt1/100))*(1-(Kt2/100)),0,2) If $D(Vkp) Do .Set Korting1=1-(Vkp/$S(LijstPr:LijstPr,KlantPr:KlantPr,1:1))*100,Korting2=0,VerkPr=Vkp Do PUT^vhScherm("PKLANTPR",KlantPr),PUT^vhScherm("PKORT1",Korting1) Do PUT^vhScherm("PKORT2",Korting2),PUT^vhScherm("PVERKPR",VerkPr) Quit ; CHKKORT1(KLNr,PRNr,X,Korting2) New sEr Set sEr="" If '$G(PRNr),X'?.N Set sEr=1 Else If $G(PRNr),$$ISKLANT^KS(KLNr),'$$ISPROD^KS(PRNr) Do .Set:'(X?.N!(X?1"-".N)!(X?.N1"."1N)!(X?1"-".N1"."1N)&(X+Korting2<100)!("KS"[X&$L(X)=1)) sEr=1 Else Set:'(X?.N!(X?.N1"."1N)&(X+Korting2<100)!("CPLRSBG"[X&$L(X)=1)) sEr=1 Quit sEr ; HLPKORT1(KLNr) New Hlp Set Hlp="C=consument P=plus L=lijst R=rabat S=spil B=basis G=groot" If $G(PRNr),$$ISKLANT^KS(KLNr),'$$ISPROD^KS(PRNr) Set Hlp="K=kleinverp S=stuk" Quit Hlp ; ; Bepalen korting1 KORTING1(KLNr,K) New R Do:$L(K) .If $G(PRNr),$$ISKLANT^KS(KLNr),'$$ISPROD^KS(PRNr) Do ..If K'="K",K'="S" Quit ..Set K=$S(K="S":"E",1:K),R=$$KSKORT^KPRIJS($G(PRNr),K,$G(NoSa,"N")) ..If 'R,$G(PRNr) Set R=$$KSKORT^KPRIJS(,K,$G(NoSa,"N")) ..Set K=R .Else If "CPLRSBG"[K Do ..If '$G(PRNr) Set K=$S(K="G":20,K="S":10,1:0) ..Else Set K=$J($P($$PROD^KPRIJS(PRNr,K,0,KlMunt,NetBrut,IsHandel,$G(NoSa,"N")),D,5),0,1) Quit +K ; ; Opvragen prijsgegevens PRIJS New VerkPr Set VerkPr=X New X Do PUT^vhScherm("PRIJS",VerkPr) If DocMunt="MTL" For Do FIELD^vhScherm("FLOWMANL","PMUNT") Quit:%SC Quit ; ; Opvragen prijsgegevens BEDRAG New Bedrag Set Bedrag=X New X Do PUT^vhScherm("BEDRAG",Bedrag) If DocMunt="MTL" For Do FIELD^vhScherm("FLOWMANL","PMUNT") Quit:%SC Quit ; BUILDB() If $L(IDNr) Set Quit=0 For Do Quit:'%SC!Quit .If IDNr="-.---.---.-" Set Quit=1 Quit .If $$CHECKID^PRODUKT2(IDNr),'$$EXISTID^PRODUKT2(IDNr) Set Quit=1 Quit .Do FIELD^vhScherm("FLOWMANL","PIDNR") If %SC,$L(KortText) Set Quit=0 For Do Quit:'%SC!Quit .If '$$EXISTKT^PRODUKT2(KortText) Set Quit=1 Quit .Do FIELD^vhScherm("FLOWMANL","PKORTTXT") If Global="KOD",DocTyp="M"!(DocTyp="P") Set (GbRek,BtwKode)="" If Global="KOFKL" Set (GbRek,BtwKode)="" If LTyp'="P" Do . Set:$G(CKPRNr) Omschr="" . Do PUTB(5,Omschr) If LTyp'="M" Do .Do PUTB(3,Aantal),PUTB(6,$J(VerkPr,0,2)) .Set Bedrag=$J(VerkPr*Aantal/$S(Eenheid="M":1000,Eenheid="H":100,1:1),0,2) If LTyp="P" Do .Do PUTB(5,KortText),PUTB(7,Korting1_"#"_Korting2) .Do PUTB(20,IDNr),PUTB(21,Eenheid),PUTB(25,LevTerm) .Do PUTB(29,Omschr1),PUTB(30,Omschr2),PUTB(32,LijstPr) Do PUTB(1,GbRek),PUTB(11,GbRek),PUTB(8,BtwKode) Do PUTB(9,$J(Bedrag,0,2)),PUTB(10,$J(Bedrag,0,2)),PUTB(16,$J(Bedrag,0,2)) Do PUTB(17,$S(Global="KOD":"KF1925",Global="KUL":"KF1925",Global="KOFKL":"KOF1925",1:"") _"#"_$S(CommKort:"CK",1:"")_"#"_$S($E(CommKort,$L(CommKort))="%":+CommKort,1:"")_"#"_$G(ActieCode)) Do PUTB(22,Munt) If NetBrut,LTyp="P" Do PUTB(6,$J(LijstPr,0,2)),PUTB(16,$J(LijstPr*Aantal/$S(Eenheid="M":1000,Eenheid="H":100,1:1),0,2)) Quit %SC ; PUTB(Piece,Value) Set B(100+Piece)=Value,$P(B(1),D,Piece)=Value Quit ; INITKL New sFL Do FETCHKL^UTILI(KLNr,"sFL") Set Land=$P(sFL(0),D,8) If Land="" Set Land="B" Set Taal=$P(sFL(0),D,9) If Taal="" Set Taal="N" Set KlMunt=$P(sFL(0),D,11) If KlMunt="" Set KlMunt=$$FADEF^vhRtn1() Set PrijsKl=$P(sFL(2),D,3),NetBrut=$P(sFL(2),D,5),IsHandel=$$IsHandel^KLANT5(KLNr) Set GbRek=$$GBREK^FLOW(Land) Set:$L(GbRek) GbRek=+GbRek Quit ; ; Formateren van de korting FMTKORT(Rec) New Korting,Korting1,Korting2,CommKort Set Korting1=$P($P(Rec,D,7),"#"),Korting2=$P($P(Rec,D,7),"#",2) Set CommKort=$P($P(Rec,D,17),"#",2)="CK" If CommKort Set Korting="Comm "_$S($P($P(Rec,D,17),"#",3):$P($P(Rec,D,17),"#",3)_"% ",1:"") Else Set Korting=$$FMTKORT^FLOW(Korting1,Korting2) Quit Korting ; ; Inputcontrole commerciele korting ValCommKort(Value,Aantal) New Ok Set Ok=0 If Value="" Set Ok=1 ; Geen commerciele korting Else If $E(Value,$L(Value))="%" Do ; Als % ingegeven . Set Value=$E(Value,1,$L(Value)-1) . Quit:'Value Quit:Value>100 Quit:Aantal . Set:Value?.N!(Value?.N1"."1N)!(Value?.N1"."2N) Ok=1 Else Do ; Absolute waarde ingeven . Set:Value?.N!(Value?.N1"."1N)!(Value?.N1"."2N) Ok=1 Quit Ok ; ; Invullen en eventueel hertekenen van bepaalde velden na de rubriek commerciele korting CommKort New R,zb Kill CKPRNr,ActieCode Set CommKort=X If X="A" Do If zb="CANC" Set X="-" . Set ActieCode=$$PI^vhPOPUP("C;C","-1O","Actie","FLOW","MANLIJNAC") . Quit:zb="CANC" . Set R=^RES("FLOW","PI","MANLIJNAC","D",ActieCode),X=$P(R,"`",3)_"%",CKPRNr=$P(R,"`",4) . Set Omschr=$$Omschr(KLNr,"CK",CKPRNr) Else Set Omschr=$S('X:"",$L(Omschr):Omschr,1:$$Omschr(KLNr,"CK")) Do PUT^vhScherm("OMSCHR",Omschr) If Aantal Do . Set VerkPr=$S($E(X,$L(X))="%":"",X:X,1:"") . Do PUT^vhScherm("PRIJS",VerkPr) Else Do . If $E(X,$L(X))'="%" Set Bedrag=$S(X:-X,1:"") . Else Do . . Set R="Set Bedrag=$$CalcCommKort(Global,KLNr,DOCNr,X" . . If $G(CommKortMod),'$G(CommKortNew),Global="KUL" Set R=R_",LijnNr" . . Set R=R_")" . . Xecute R . Do PUT^vhScherm("BEDRAG",Bedrag) Quit ; ; Het document mag slechts een lijn met commerciele korting bevatten BevatCommKort(Global,KLNr,DOCNr) New R,BevatCommKort,LijnNr Set BevatCommKort=0,LijnNr=100 For Set LijnNr=$O(@("^"_Global_"(KLNr,""F"",DOCNr,LijnNr)")) Quit:'LijnNr Do Quit:BevatCommKort . Set R=@("^"_Global_"(KLNr,""F"",DOCNr,LijnNr)"),BevatCommKort=$P($P(R,D,17),"#",2)="CK" . Set:BevatCommKort BevatCommKort=BevatCommKort_"#"_$P($P(R,D,17),"#",4) Quit BevatCommKort ; Omschr(KLNr,Type,CKPRNr) New Omschr,Obj,Taal Set Obj=##Class(Derde.Klant.Klant).%OpenId(KLNr),Taal=Obj.Taal If Type="CK",$G(CKPRNr) Set Omschr=$P(^KPR(CKPRNr,0),D) ; Actiecode Else If Type="CK" Set Omschr=$P($P($T(TCommKort),";",2),D,$F("NFDE",Taal)-1) ; Commerciele tegemoetkoming Quit Omschr ; ; Korttekst ophalen in ^KPR indien actiecode KortTxt(R) New KortTxt,CKPRNr,ActieCode Set KortTxt=$P(R,D,5) Do:$P($P(R,D,17),"#",2)="CK" . Set ActieCode=$P($P(R,D,17),"#",4) . Quit:ActieCode="" . Set CKPRNr=$P(^RES("FLOW","PI","MANLIJNAC","D",ActieCode),"`",4) . Quit:'CKPRNr . Set KortTxt=$P(^KPR(CKPRNr,0),D) Quit KortTxt ; ; Berekenen de commerciele korting bij het ingave van een order of bon CalcCommKort(Global,KLNr,DOCNr,%Korting,CommKortLijnNr) New R,CommKort Set R="Set CommKort=$$CalcCommKort"_$S(Global="KOFKL":"Off",Global="KOD":"Ord",1:"Bon")_"(KLNr,DOCNr,%Korting" Set:$D(CommKortLijnNr) R=R_","_CommKortLijnNr Set R=R_")" Xecute R Quit CommKort ; ; Bereken de commerciele korting bij ingave offerte CalcCommKortOff(KLNr,DOCNr,%Korting) New R,CommKort,Totaal,LijnNr,CommKortLijnNr Set Totaal=0,LijnNr=100 For Set LijnNr=$O(^KOFKL(KLNr,"F",DOCNr,LijnNr)) Quit:'LijnNr Do . Set R=^KOFKL(KLNr,"F",DOCNr,LijnNr) . If $P($P(R,D,17),"#",2)'="CK" Set Totaal=Totaal+$P(R,D,9) Quit ; Mag zichzelf niet meerekenen . Set CommKortLijnNr=LijnNr Set:$G(%Korting) CommKort=$J(-Totaal*%Korting/100,0,2) Quit $G(CommKort) ; ; Bereken de commerciele korting bij ingave order CalcCommKortOrd(KLNr,DOCNr,%Korting) New R,CommKort,Totaal,LijnNr,CommKortLijnNr Set Totaal=0,LijnNr=100 For Set LijnNr=$O(^KOD(KLNr,"F",DOCNr,LijnNr)) Quit:'LijnNr Do . Set R=^KOD(KLNr,"F",DOCNr,LijnNr) . If $P($P(R,D,17),"#",2)'="CK" Set Totaal=Totaal+$P(R,D,9) Quit ; Mag zichzelf niet meerekenen . Set CommKortLijnNr=LijnNr Set:$G(%Korting) CommKort=$J(-Totaal*%Korting/100,0,2) Quit $G(CommKort) ; ; Bereken de commerciele korting bij ingave bon CalcCommKortBon(KLNr,DOCNr,%Korting,CommKortLijnNr) New R,CommKort,Totaal,LijnNr,ORDNr If '$D(CommKortLijnNr) Do ; Nieuwe lijn . ; Opzoeken van het laatste order van de bon . Set LijnNr="" . For Set LijnNr=$O(^KUL(KLNr,"F",DOCNr,LijnNr),-1) Quit:LijnNr<100 Set R=^KUL(KLNr,"F",DOCNr,LijnNr) Quit:$P(R,D,17)="KF5" . Set Totaal=0 . For Set LijnNr=$O(^KUL(KLNr,"F",DOCNr,LijnNr)) Quit:'LijnNr Do . . Set R=^KUL(KLNr,"F",DOCNr,LijnNr) . . If $P($P(R,D,17),"#",2)'="CK" Set Totaal=Totaal+$P(R,D,9) Quit ; Mag zichzelf niet meerekenen . . Set CommKortLijnNr=LijnNr Else Do ; Wijzigen bestaande lijn van een bepaald order . ; Opzoeken van de eerste lijn van het order . Set LijnNr=CommKortLijnNr,ORDNr="" . For Set LijnNr=$O(^KUL(KLNr,"F",DOCNr,LijnNr),-1) Quit:LijnNr<100 Do Quit:ORDNr . . Set R=^KUL(KLNr,"F",DOCNr,LijnNr) . . Set:$P(R,D,17)="KF5" ORDNr=$P($P(R,D,5)," - ") . ; Verrekenen van alle lijnen van het order . Set Totaal=0,ORDNr="" . For Set LijnNr=$O(^KUL(KLNr,"F",DOCNr,LijnNr)) Quit:'LijnNr Do Quit:ORDNr . . Set R=^KUL(KLNr,"F",DOCNr,LijnNr) . . If $P(R,D,17)="KF5" Set ORDNr=$P($P(R,D,5)," - ") Quit . . If $P($P(R,D,17),"#",2)'="CK" Set Totaal=Totaal+$P(R,D,9) Quit ; Mag zichzelf niet meerekenen Set:$G(%Korting) CommKort=$J(-Totaal*%Korting/100,0,2) Quit $G(CommKort) ; ; Herrekenen de commerciele korting bij het wijzigen van een order of bon RecalcCommKort(Global,KLNr,DOCNr,Dummy,Show) New R Set Show=$G(Show) Set R="Do RecalcCommKort"_$S(Global="KOFKL":"Off",Global="KOD":"Ord",1:"Bon")_"(KLNr,DOCNr,Show)" Xecute R Quit ; ; Herrekenen de commerciele korting bij het wijzigen van een offerte RecalcCommKortOff(KLNr,DOCNr,Show) New R,CommKort,Totaal,LijnNr,CommKortLijnNr,ADTemp,%Korting,BevatCommKort,ActieCode,CalcRoutine Set Show=$G(Show) Set BevatCommKort=$$BevatCommKort("KOFKL",KLNr,DOCNr),ActieCode=$P(BevatCommKort,"#",2),CalcRoutine="" Set:$L(ActieCode) CalcRoutine=$P(^RES("FLOW","PI","MANLIJNAC","D",ActieCode),"`",5) If BevatCommKort,CalcRoutine="" Do . Set Totaal=0,LijnNr=100 . For Set LijnNr=$O(^KOFKL(KLNr,"F",DOCNr,LijnNr)) Quit:'LijnNr Do . . Set R=^KOFKL(KLNr,"F",DOCNr,LijnNr) . . If $P($P(R,D,17),"#",2)'="CK" Set Totaal=Totaal+$P(R,D,9) Quit ; Mag zichzelf niet meerekenen . . Set CommKortLijnNr=LijnNr,%Korting=$P($P(R,D,17),"#",3) . ; Einde order dus korting berekenen en invullen indien korting % . Do:$G(%Korting) . . Set CommKort=$J(-Totaal*%Korting/100,0,2) . . Do:$G(CommKortLijnNr) . . . Set R=^KOFKL(KLNr,"F",DOCNr,CommKortLijnNr) . . . Do:$D(UTOT)&Show CALCTOT^FLOW(-$P(R,D,9),$P(R,D,22),1) . . . Set ($P(R,D,9),$P(R,D,10),$P(R,D,16))=CommKort . . . Set ^KOFKL(KLNr,"F",DOCNr,CommKortLijnNr)=R . . . Quit:'Show . . . Do:$D(UTOT) CALCTOT^FLOW($P(R,D,9),$P(R,D,22),1) . . . Merge ADTemp=AD . . . For AD(6)=AD(7):1:(AD(7)+AD(4)-1) If $G(Detail(AD(6)))=CommKortLijnNr Quit . . . If $G(Detail(AD(6)))=CommKortLijnNr Do @($S(AD(6)=ADTemp(6):"EL",1:"DL")_"^PROC") . . . Kill AD . . . Merge AD=ADTemp Else Do:BevatCommKort @(CalcRoutine_"(""KOFKL"",KLNr,DOCNr,,Show)") Quit ; ; Herrekenen de commerciele korting bij het wijzigen van een order RecalcCommKortOrd(KLNr,DOCNr,Show) New R,CommKort,Totaal,LijnNr,CommKortLijnNr,ADTemp,%Korting,BevatCommKort,ActieCode,CalcRoutine Set Show=$G(Show) Set BevatCommKort=$$BevatCommKort("KOD",KLNr,DOCNr),ActieCode=$P(BevatCommKort,"#",2),CalcRoutine="" Set:$L(ActieCode) CalcRoutine=$P(^RES("FLOW","PI","MANLIJNAC","D",ActieCode),"`",5) If BevatCommKort,CalcRoutine="" Do . Set Totaal=0,LijnNr=100 . For Set LijnNr=$O(^KOD(KLNr,"F",DOCNr,LijnNr)) Quit:'LijnNr Do . . Set R=^KOD(KLNr,"F",DOCNr,LijnNr) . . If $P($P(R,D,17),"#",2)'="CK" Set Totaal=Totaal+$P(R,D,9) Quit ; Mag zichzelf niet meerekenen . . Set CommKortLijnNr=LijnNr,%Korting=$P($P(R,D,17),"#",3) . ; Einde order dus korting berekenen en invullen indien korting % . Do:$G(%Korting) . . Set CommKort=$J(-Totaal*%Korting/100,0,2) . . Do:$G(CommKortLijnNr) . . . Set R=^KOD(KLNr,"F",DOCNr,CommKortLijnNr) . . . Do:$D(UTOT)&Show CALCTOT^FLOW(-$P(R,D,9),$P(R,D,22),1) . . . Set ($P(R,D,9),$P(R,D,10),$P(R,D,16))=CommKort . . . Set ^KOD(KLNr,"F",DOCNr,CommKortLijnNr)=R . . . Quit:'Show . . . Do:$D(UTOT) CALCTOT^FLOW($P(R,D,9),$P(R,D,22),1) . . . Merge ADTemp=AD . . . For AD(6)=AD(7):1:(AD(7)+AD(4)-1) If $G(Detail(AD(6)))=CommKortLijnNr Quit . . . If $G(Detail(AD(6)))=CommKortLijnNr Do @($S(AD(6)=ADTemp(6):"EL",1:"DL")_"^PROC") . . . Kill AD . . . Merge AD=ADTemp Else Do:BevatCommKort @(CalcRoutine_"(""KOD"",KLNr,DOCNr,,Show)") Quit ; ; Herrekenen de commerciele korting bij het wijzigen van een bon RecalcCommKortBon(KLNr,DOCNr,Show) New R,CommKort,Totaal,LijnNr,CommKortLijnNr,ADTemp,%Korting,BevatCommKort,ActieCode,CalcRoutine Set Show=$G(Show) Set BevatCommKort=$$BevatCommKort("KUL",KLNr,DOCNr),ActieCode=$P(BevatCommKort,"#",2),CalcRoutine="" Set:$L(ActieCode) CalcRoutine=$P(^RES("FLOW","PI","MANLIJNAC","D",ActieCode),"`",5) If BevatCommKort,CalcRoutine="" Do . Set Totaal=0,LijnNr=100 . ; Order per order de korting berekenen . For Set LijnNr=$O(^KUL(KLNr,"F",DOCNr,LijnNr)) Quit:'LijnNr Do . . Set R=^KUL(KLNr,"F",DOCNr,LijnNr) . . If $P($P(R,D,17),"#",2)'="CK" Set Totaal=Totaal+$P(R,D,9) ; Mag zichzelf niet meerekenen . . Else Set CommKortLijnNr=LijnNr,%Korting=$P($P(R,D,17),"#",3) . . If $O(^KUL(KLNr,"F",DOCNr,LijnNr)),$P(R,D,17)'="KF5" Quit . . ; Nieuw order of einde bon dus korting berekenen en invullen indien korting % . . Do:$G(%Korting) . . . Set CommKort=$J(-Totaal*%Korting/100,0,2) . . . Do:$G(CommKortLijnNr) . . . .Set R=^KUL(KLNr,"F",DOCNr,CommKortLijnNr) . . . .Do:$D(UTOT)&Show CALCTOT^FLOW(-$P(R,D,9),$P(R,D,22),1) . . . .Set ($P(R,D,9),$P(R,D,10),$P(R,D,16))=CommKort . . . .Set ^KUL(KLNr,"F",DOCNr,CommKortLijnNr)=R . . . .Quit:'Show . . . .Do:$D(UTOT) CALCTOT^FLOW($P(R,D,9),$P(R,D,22),1) . . . .Merge ADTemp=AD . . . .For AD(6)=AD(7):1:(AD(7)+AD(4)-1) If $G(Detail(AD(6)))=CommKortLijnNr Quit . . . .If $G(Detail(AD(6)))=CommKortLijnNr Do @($S(AD(6)=ADTemp(6):"EL",1:"DL")_"^PROC") . . . .Kill AD . . . .Merge AD=ADTemp . . Kill %Korting . . Set Totaal=0 Else Do:BevatCommKort @(CalcRoutine_"(""KUL"",KLNr,DOCNr,,Show)") Quit ; TCommKort ;Commerciele tegemoetkoming\Compensation commerciale\Kommerzielle Beitrag\Commercial compensation ;