KLVERZW ;KLANTEN verzendwijze [ 08/23/2002 4:29 PM ] ; ; Selekteer verzendwijze SELECT(OldVerzW,MultSel,Compact,DefPost,DefKLNr,ExtElem,CB,Zonder,Titel,CalcODDAGIfSP,NoCheckLeveringPerDag) New R,VerzW,VolgNr,Default,MultSelD,sFmt,VerzWCanc Set VerzWCanc=$G(OldVerzW) Set MultSelD=$P($G(MultSel),";",2) Set:MultSelD="" MultSelD='$G(MultSel) Set OldVerzW=$TR($G(OldVerzW),"`",";"),MultSel=$S($G(MultSel)=1:"M",1:"") Set Zonder=$S($D(Zonder):$S(Zonder=1:"Z",1:Zonder),MultSel="":"",1:"Z") Set Compact=$G(Compact),DefPost=$G(DefPost),DefKLNr=$G(DefKLNr),CalcODDAGIfSP=$G(CalcODDAGIfSP,1) If DefPost!DefKLNr Set Default=$$DEFAULT(DefPost,DefKLNr) Set:OldVerzW="" OldVerzW=$G(Default) If MultSel="",OldVerzW="" Set OldVerzW="OD" Set:DefPost'?.N OldVerzW="EX" Set VerzW="" For Set VerzW=$O(^RES("KLANT","PI","VERZENDWIJZE","D",VerzW)) Quit:VerzW="" Do .Set R=^RES("KLANT","PI","VERZENDWIJZE","D",VerzW),VolgNr=$P(R,"`") .If 'Compact Quit:$P(R,"`",8)=0 .If Compact,$L(VerzW)>2 Quit .Set VerzW(VolgNr)=VerzW_"`"_$P(R,"`",2,99) If DefPost!DefKLNr Do .For VolgNr=$O(VerzW(""),-1):-1:1 If $D(VerzW(VolgNr)) Set VerzW(VolgNr+2)=VerzW(VolgNr) Kill VerzW(VolgNr) .Set VerzW(VolgNr)="Def`"_$$SHOW(,,,Default),VolgNr=VolgNr+1,VerzW(VolgNr)="&S" If $D(ExtElem) Do .Set:$L($G(ExtElem)) VolgNr=$O(ExtElem("")),VolgNr=$O(ExtElem(""),-1)-1,ExtElem(VolgNr)=ExtElem .Set VolgNr=$O(VerzW(""),-1)+1,VerzW(VolgNr)="&S" .Set ExtElem="" .For Set ExtElem=$O(ExtElem(ExtElem)) Quit:ExtElem="" Set VolgNr=VolgNr+1,VerzW(VolgNr)=ExtElem(ExtElem) Set sFmt=$S(MultSel="M":"^RES(""KLANT"",""LD"",""VERZENDWIJZEMULTSEL"")",1:"^RES(""KLANT"",""LD"",""VERZENDWIJZE"")") Set VerzW=$$WILD^vhPOPUP("C;C",MultSel_Zonder_"OK1-L",$G(Titel,"Verzendwijze"),.VerzW,OldVerzW,.CB) If zb="CANC" Set VerzW=VerzWCanc Else Do .Set:VerzW="Def" VerzW=$TR(Default,";`","`;") .Set VerzW=$TR(VerzW,";`","`;") .Set:VerzW["DI1" CalcODDAGIfSP=1 .If VerzW["DI1"!(VerzW["OD"&(VerzW'=$G(Default)))!(VerzW["DI"&(VerzW'=$G(Default)))!(VerzW["EX"&(VerzW'=$G(Default))) Do ..Quit:'$G(NoCheckLeveringPerDag) ..Set VerzW=$$ODDAG(VerzW,MultSelD,$S(MultSelD:$S(VerzW=$P(OldVerzW,";"):OldVerzW,1:""),1:$S('CalcODDAGIfSP:OldVerzW,1:"")),,CalcODDAGIfSP) Quit VerzW ; CB(Select,Old,New,Rec) New R Do:$P(Rec,"`")="AB" .Kill sX .For I=1:1 Quit:'$D(sY(I)) Set R=sY(I) If R'=Rec,"\\&S\OD\DI\"'[(D_$E(R,1,2)_D) Set sX(I)=1 Quit ; ; Opvragen leverdag onze diensten en ABX ODDAG(VerzW,MultSel,OldSel,Titel,CalcOldSel) New I,R,One,Dag,GetTitel Set MultSel=$S($G(MultSel)=1:"M",1:""),GetTitel='$L($G(Titel)),CalcOldSel=$G(CalcOldSel,1) For I=1:1:$L(VerzW,"`") Do .Set One=$P($P(VerzW,"`",I),";"),Dag=$P($P(VerzW,"`",I),";",2) .If One'["OD",One'["DI",One'["EX" Quit .If 'MultSel,$G(OldSel)="" .Else Set CalcOldSel=0 .If $G(CalcOldSel) Set OldSel=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes(,"A",One["OD"!(One["DI2")),"DWN") ; DI1 (SP) = huidige dag, OD en DI2 = volgende arbeidsdag .Set:GetTitel Titel=$P(^RES("KLANT","PI","VERZENDWIJZE","D",One),"`",2) .Set Dag=$$PI^vhPOPUP("C;C",MultSel_"O1-",Titel,"KLANT","ODDAG",$G(OldSel)) .Set R="" .For Quit:Dag="" Set R=R_"`"_One_";"_$P(Dag,";"),Dag=$P(Dag,";",2,99) .Set $E(R)="",$P(VerzW,"`",I)=R If VerzW="",One["DI1" Set VerzW=One If VerzW="",One["EX" Set VerzW=One Quit VerzW ; ; Verzendwijze voor postkode eventueel via klant POSTKODE(PostCode, KlantNummer) // [DEPRECATED] use BL.Legacy.KLVERZW -> PostCode() Set PostCode = $Get(PostCode) Set KlantNummer = $Get(KlantNummer) Quit ##class(BL.Legacy.KLVERZW).%New().GeefVerzendwijze(PostCode, KlantNummer) ; ; Default verzendwijze DEFAULT(PostCode, KlantNummer, OrderNummer) // [DEPRECATED] use BL.Legacy.KLVERZW -> Default() Set PostCode = $Get(PostCode) Set KlantNummer = $Get(KlantNummer) Set OrderNummer = $Get(OrderNummer) Quit ##class(BL.Legacy.KLVERZW).%New().GeefDefaultVerzendWijze(PostCode, KlantNummer, OrderNummer) ; Welke dagen er gereden wordt naar de klant DAGEN(KLNr) ; New Verzwen,Dag,Dagen,I Set Verzwen=$$DEFAULT(,KLNr) Set Dagen="" For I=1:1:$L(Verzwen,"`") Do .Set Dag=$P($P(Verzwen,"`",I),";",2) Do .Set:Dag Dagen=Dagen_$P("Ma;Di;Wo;Do;Vr",";",Dag) Quit Dagen ; Verzendwijze vertaald SHOW(PostKode,KLNr,ORDNr,VerzW,Default,MaxLen,DagNietTonen) New I,One,Dag Set Default=$G(Default) Set DagNietTonen=$G(DagNietTonen,0) Set:$G(VerzW)="" VerzW=$$DEFAULT($G(PostKode),$G(KLNr),$G(ORDNr)) Set:Default Default=VerzW=$$POSTKODE($G(PostKode),$G(KLNr)) For I=1:1:$L(VerzW,"`") Do .Set One=$P($P(VerzW,"`",I),";"),Dag=$P($P(VerzW,"`",I),";",2) .Set:DagNietTonen Dag="" .Set:Dag Dag=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes(,"W","FD")-1+Dag,"DC") .Set $P(VerzW,"`",I)=One_$S($L(Dag):"("_$E(Dag,1,2)_")",1:"") Set:Default VerzW="["_VerzW_"]" Set VerzW=$TR(VerzW,"`",",") If $G(MaxLen),$L(VerzW)>MaxLen Do . Set MaxLen=MaxLen-3 . For Set VerzW=$P(VerzW,",",1,$L(VerzW,",")-1) Quit:$L(VerzW)'>MaxLen . Set VerzW=VerzW_"..." Quit VerzW ; ; Geef de eerstvolgende leverdag op basis van de verzendwijze LEVERDATUM(VerzW,MinLeverDag) New I,R,LeverDatum,LeverDagen,LeverDag,DueOutTime,BasisDatum,WeekDagNr,Weken,TempVerzW,TempLeverDatum Set TempVerzW=VerzW,LeverDagen="" For I=1:1:$L(VerzW,"`") Set LeverDagen=LeverDagen_","_$P($P(VerzW,"`",I),";",2) Set $E(LeverDagen)="" Set VerzW=$P($P(VerzW,"`"),";") If $L(LeverDagen) Do .Set MinLeverDag=$G(MinLeverDag) Set:MinLeverDag'>($H+1) MinLeverDag=$H+1 .; Bepalen van de eerstvolgende arbeidsdag op basis van de mogelijke leverdagen .Set BasisDatum=$$CALCDATE^vhLib.DataTypes($h-7,"W","LD") ; Laatste dag van vorige week .For I=1:1 Set WeekDagNr=$P(LeverDagen,",",I) Quit:WeekDagNr="" Do ..Set Weken=0 ..For Do If LeverDag'+$H LeverDatum=+$H .If LeverDatum=+$H,DueOutTime,$P($H,",",2)>DueOutTime Set LeverDatum=LeverDatum+1 .For Quit:$$ISARBDAG^vhRtn2(LeverDatum) Set LeverDatum=LeverDatum+1 .Set LeverDatum=+LeverDatum Quit LeverDatum ; ; Geef de eerstvolgende leverdagen voor een klant (eventueel vanaf datum, eventueel tot datum) ; Indien $G(Type)="" - > output $H formaat ; Indien $G(Delimiter)="" - > output $LB formaat ; Indien MinLeverDag en MaxLeverDag niet meegegeven dan eerstvolgende leverdag GetLeverDatums(KLNr,MinLeverDag,MaxLeverDag,Type,Delimiter,VerzW) New D,LeverDatum,LeverDatums,Taal Set D="\",LeverDatum=$G(MinLeverDag),LeverDatums="" Set:LeverDatum'>+$H LeverDatum=+$H Set:$G(VerzW)="" VerzW=$$DEFAULT(,KLNr) For Do Quit:LeverDatum>$G(MaxLeverDag) . Set LeverDatum=$$LEVERDATUM(VerzW,LeverDatum) . If $G(MaxLeverDag),LeverDatum>MaxLeverDag Quit . Set $LI(LeverDatums,$LL(LeverDatums)+1)=LeverDatum,LeverDatum=LeverDatum+1 If $L($G(Type)) Set Taal=$P(^KKL(^KK1(KLNr),0),D,9) For I=1:1:$LL(LeverDatums) Set $LI(LeverDatums,I)=$$EXTDATE^vhLib.DataTypes($LI(LeverDatums,I),Type,Taal) If $L($G(Delimiter)) Set LeverDatums=$$ListToPieces^vhLib(LeverDatums,Delimiter) Quit LeverDatums ; ZWINT Set K=$$SELECT($S($L($P($G(B(3)),D,16)):$P($G(B(3)),D,16),$P($G(B(1)),D,20)>10:"DI1",1:""),,,$P($G(B(1)),D,6),,,,,,,1) Set Locals("K")=K Quit ZWINTLEVER Do E^cA612 Set K=$$SELECT($S($L($P($G(B(0)),D,26)):$P($G(B(0)),D,26),1:""),,,,,,,,,,1) Quit VERZWLEVERADRES() New VerzendWijze,Postcode if $piece(B(1),"\",1)="HOOFD" { set Postcode = $P(B("X"),"\",6) new KLNr set KLNr = $P(B("X"),"\",1) set VerzendWijze = $$DEFAULT(Postcode,KLNr) } else { set Postcode = $P(B(1),"\",6) set VerzendWijze = $P(B(1),"\",26) } set VerzendWijze = $$SHOW^KLVERZW(,,,VerzendWijze,1) quit $$Ellipsis^vhLib.String(VerzendWijze,20) ;