FLOWOranje ; Actiecode Van Hoecke bestellingen (Oranjegekte) ;[ 02/20/2001 10:29 AM ] ; ValidateCKPRNr(KLNr,CKPRNr) New R,Validate,GeldigVan,GeldigTot,Text,Buttons Set R=^RES("FLOW","PI","MANLIJNAC","D","ORA"),GeldigVan=$P(R,"`",9),GeldigTot=$P(R,"`",10) ; Mag meerdere malen toegekend worden. ;Set Validate=$$ReedsToegekendCKPRNr(KLNr,CKPRNr) Set Validate=1 If $$LAND^vhRtn1(KLNr,"K")'="NL" Do WARN^vhTXTPOP("De 'ORANJE-ACTIE' is enkel geldig voor nederlandse klanten.","") Set Validate=0 If Validate,$HGeldigTot Do . Set Text="Text",Text(1)="De 'ORANJE-ACTIE' loopt van "_$$EXTDATE^vhLib.DataTypes(GeldigVan)_" t.e.m. "_$$EXTDATE^vhLib.DataTypes(GeldigTot)_".",Text(2)="Wenst u deze toch nog toe te kennen?" . Set Buttons="Buttons",Buttons(1)="Ja&1",Buttons(2)="Neen&N*" . Set Validate=$$WILD^vhTXTPOP("C;C","",.Text,.Buttons) Quit Validate ; ; Is het actieprodukt reeds toegekend ReedsToegekendCKPRNr(KLNr,CKPRNr) New R,ActieCode,ReedsToegekend,ORDNr,OLNr,BONNr,BLNr,FANr Set ReedsToegekend=$D(^KSTKL(KLNr,CKPRNr)) ; Reeds in de statistiek? Do:ReedsToegekend ; Reeds op factuur, factuurnummer opzoeken . Set ReedsToegekend=0,Date="" . For Set Date=$O(^KFA1("F",KLNr,Date)) Quit:Date="" Do Quit:ReedsToegekend . . Set FANr="" . . For Set FANr=$O(^KFA1("F",KLNr,Date,FANr)) Quit:FANr="" Do Quit:ReedsToegekend . . . Set BONNr="U" . . . For Set BONNr=$O(^KFA("F",FANr,BONNr)) Quit:$E(BONNr)'="U" Do Quit:ReedsToegekend . . . . Set BLNr=100 . . . . For Set BLNr=$O(^KFA("F",FANr,BONNr,BLNr)) Quit:'BLNr Do Quit:ReedsToegekend . . . . . Set R=^KFA("F",FANr,BONNr,BLNr) . . . . . Quit:$P($P(R,D,17),"#",2)'="CK" . . . . . Set ActieCode=$P($P(R,D,17),"#",4) . . . . . Quit:ActieCode="" . . . . . Set ReedsToegekend=$P($G(^RES("FLOW","PI","MANLIJNAC","D",ActieCode)),"`",4)=CKPRNr Do:'ReedsToegekend ; Reeds op order? . Set ORDNr="" . For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Do Quit:ReedsToegekend . . Set OLNr=100 . . For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do Quit:ReedsToegekend . . . Set R=^KOD(KLNr,"F",ORDNr,OLNr) . . . Quit:$P($P(R,D,17),"#",2)'="CK" . . . Set ActieCode=$P($P(R,D,17),"#",4) . . . Quit:ActieCode="" . . . Set ReedsToegekend=$P($G(^RES("FLOW","PI","MANLIJNAC","D",ActieCode)),"`",4)=CKPRNr Do:'ReedsToegekend ; Reeds op bon? . Set BONNr="" . For Set BONNr=$O(^KUL(KLNr,"F",BONNr)) Quit:BONNr="" Do Quit:ReedsToegekend . . Set BLNr=100 . . For Set BLNr=$O(^KUL(KLNr,"F",BONNr,BLNr)) Quit:'BLNr Do Quit:ReedsToegekend . . . Set R=^KUL(KLNr,"F",BONNr,BLNr) . . . Quit:$P($P(R,D,17),"#",2)'="CK" . . . Set ActieCode=$P($P(R,D,17),"#",4) . . . Quit:ActieCode="" . . . Set ReedsToegekend=$P($G(^RES("FLOW","PI","MANLIJNAC","D",ActieCode)),"`",4)=CKPRNr Do:ReedsToegekend . Quit:'$$^vhTXTPOP("FLOW","REEDSTOEGEKEND","",$P(^KPR(CKPRNr,0),D),$S($G(ORDNr):"order "_ORDNr,$G(BONNr):"levering "_BONNr,$G(FANr):"factuur "_FANr,1:"")) . Set:ReedsToegekend ReedsToegekend='$$ASK^vhWACHTW("MANAGER",,,0) Quit 'ReedsToegekend ; ; 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,ActieCode,MaxKorting Set Show=$G(Show),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" Do Quit ; Mag zichzelf niet meerekenen . . Set PRNr=$P(R,D,2) . . Quit:'PRNr ;Quit:'$$ISBLUM^PRODUKT2(PRNr) . . Set Totaal=Totaal+$P(R,D,9) . Set CommKortLijnNr=LijnNr,%Korting=$P($P(R,D,17),"#",3),ActieCode=$P($P(R,D,17),"#",4) . Set:$L(ActieCode) MaxKorting=$P($G(^RES("FLOW","PI","MANLIJNAC","D",ActieCode)),"`",7) ; Einde order dus korting berekenen en invullen indien korting % Do:$G(%Korting) . Set CommKort=$J(-Totaal*%Korting/100,0,2) . Do:$G(CommKortLijnNr) . . If $G(MaxKorting),-CommKort>MaxKorting Set CommKort=-MaxKorting ; Maximum korting bereikt? . . 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,6),$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 Quit ; ; Herrekenen de commerciele korting bij het wijzigen van een order RecalcCommKortOrd(KLNr,DOCNr,Show) New R,CommKort,Totaal,LijnNr,CommKortLijnNr,ADTemp,%Korting,ActieCode,MaxKorting Set Show=$G(Show),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" Do Quit ; Mag zichzelf niet meerekenen . . Set PRNr=$P(R,D,2) . . Quit:'PRNr ;Quit:'$$ISBLUM^PRODUKT2(PRNr) . . Set Totaal=Totaal+$P(R,D,9) . Set CommKortLijnNr=LijnNr,%Korting=$P($P(R,D,17),"#",3),ActieCode=$P($P(R,D,17),"#",4) . Set:$L(ActieCode) MaxKorting=$P($G(^RES("FLOW","PI","MANLIJNAC","D",ActieCode)),"`",7) ; Einde order dus korting berekenen en invullen indien korting % Do:$G(%Korting) . Set CommKort=$J(-Totaal*%Korting/100,0,2) . Do:$G(CommKortLijnNr) . . If $G(MaxKorting),-CommKort>MaxKorting Set CommKort=-MaxKorting ; Maximum korting bereikt? . . 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,6),$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 Quit ; ; Herrekenen de commerciele korting bij het wijzigen van een bon RecalcCommKortBon(KLNr,DOCNr,Show) New R,CommKort,Totaal,LijnNr,CommKortLijnNr,ADTemp,%Korting,ActieCode,MaxKorting Set Show=$G(Show),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" Do ; Mag zichzelf niet meerekenen . . Set PRNr=$P(R,D,2) . . Quit:'PRNr ;Quit:'$$ISBLUM^PRODUKT2(PRNr) . . Set Totaal=Totaal+$P(R,D,9) . Else Do . . Set CommKortLijnNr=LijnNr,%Korting=$P($P(R,D,17),"#",3),ActieCode=$P($P(R,D,17),"#",4) . . Set:$L(ActieCode) MaxKorting=$P($G(^RES("FLOW","PI","MANLIJNAC","D",ActieCode)),"`",7) . 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) . . . If $G(MaxKorting),-CommKort>MaxKorting Set CommKort=-MaxKorting ; Maximum korting bereikt? . . . 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,6),$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 Quit ;