#include %occStatus FLOWORD ;Order [ 11/04/2003 1:20 PM ] #include BL.Derde.KlantSpecifiek ; New ORDNr,KLNr,Input,Detail,DefLevT,DefLevM,DefLeverDag,PrCount,AD,ScrolOrd,Help,KlMunt,IsHandel,OrdTyp,HalTOENr,ProjRef,IsSyncToe,AkpVkpVerlies,KenAnk,EmptyContract,Mirror,blVerzendWijze,blLeveringsTermijn Do INIT() Set:$O(^KOD(KLNr,"F",ORDNr,100))'="" KenAnk=$$KennisAnkerUnRead^FLOWORD8(,ORDNr,1) Do:$G(KenAnk)'="ANNULEER" COMMAND Kill EwmsLink Do:$D(EmptyContract) SendMiniMail^KFCOL(KLNr,.EmptyContract) ; Ordertotaal en SendWMS-status wissen op het scherm Do SHOWTOT^KFTOT(0) Set FP=UD-2*100+76 Write @F," " Quit ; COMMAND Do:$G(AutoOrd) .If $L($G(EDIORDNr)),$D(^MBLOG("EDI",KLNr,+EDIORDNr,EDIORDNr)) Do ..Quit:$$KENANK^ATKEDI(KLNr,ORDNr,EDIORDNr)="ANNULEER" ..Do IMPORD^ATKEDI(KLNr,ORDNr,EDIORDNr) ..Set Input="S" ..Set Input="" ; Automatisch sluiten afgesloten .Do:$D(PRNr) AUTOORD^FLOWORD3 If $G(OfferteNr),$D(Offerte) Do ; Verwerken van webshopoffertes (de lijnen) . New I,R,GroepKey,Count,objOfferte,Commentaar,BlockId,PrintOBF,ProjectRef,PakketRef . Set Count=0 . Set objOfferte=##Class(Flow.Offerte.Hoofding).%OpenId(OfferteNr) . Set Commentaar(1)=$TR(objOfferte.Commentaar,$C(10)_$C(13),"~"),Commentaar="Commentaar" . Do:$L(Commentaar(1)) . . Do GETWRAP^vhBIGEDIT("Commentaar",42,.Commentaar,"G","~","") . . Set BlockId=$H_";T;;",PrintOBF="-" . . For Commentaar=1:1:Commentaar Do . . . Set R=$P(Commentaar(Commentaar),"`",5) . . . Set Count=Count+1,PRNr(Count)="T\"_R_D_BlockId_PrintOBF_"\\" . . . If KLNr=12486,$E(R,1,10)="Opmerking:" Set PrintOBF="OBF" . . Kill:$P($G(PRNr(Count)),D,2)="" PRNr(Count) . Set GroepKey="" . For Set GroepKey=$O(Offerte("L",GroepKey)) Quit:GroepKey="" Do . . Set R=Offerte("L",GroepKey) . . Quit:$P(R,D,3)="DL" ; Lijn is verwijderd . . If $P(R,D)="T" Do . . . Set R=$TR($P(R,D,4),$C(10,13),"~"),BlockId=$H . . . For I=1:1:$L(R,"~") Set Count=Count+1,PRNr(Count)="T\"_$P(R,"~",I)_D_BlockId_"\\"_GroepKey . . Else Do . . . Quit:$P(R,D,4)'?4.7N ; Geen productnummer . . . Quit:'$D(^KPR($P(R,D,4))) ; Onbekend product . . . Set PakketRef=$P(R,D,5),ProjectRef=$P(R,D,20) . . . Set R=$P(R,D,4)_D_$P(R,D,7)_D_$P(R,D,8)_D_D_GroepKey . . . Set Count=Count+1,PRNr(Count)=R . . . Merge PRNr(Count,"Default")=Offerte("L",GroepKey,"Default") . . . Set:$L(ProjectRef) $P(PRNr(Count,"Default"),D,5)=ProjectRef . . . Set:$L(PakketRef) $P(PRNr(Count,"Default"),D,37)=PakketRef . Do:$D(PRNr) AUTOORD^FLOWORD3 . Set Offerte("F")=ORDNr Do:($IsObject(##class(APPS.VKP.Maatwerk.ConfiguratorService).%New().GeefBesteldeProducten(##class(APPS.VKP.Maatwerk.enu.DocumentType).Order(), ORDNr))) VerwerkConfiguratorProducten Do:($IsObject(##class(CHUI.Flow.ConfiguratorHelper).GeefAdminSessieParameters(##class(APPS.VKP.Maatwerk.enu.DocumentType).Order(), ORDNr))) StartExterneConfigurator Do RESET^vhScherm For Do If Input="-" Do:AD(13)'="FLOWORDADP" DETAIL(1) Do SORT(KLNr,ORDNr),ChkRembours^FLOWORD4(ORDNr),AkpVkpVerlies^FLOW2("O",ORDNr,.AkpVkpVerlies),qc2^vhRtn2("^KOD("_KLNr_",""F"","_ORDNr_")") Quit .Set ScrolOrd=1 .Do REFRESH .If USC=""!'Help Set FP=$P(UD,D,2)+1*100+1 Write @F,@F1 .Else Do HELP^FLOW .Set Help=1 .Set DL(2)="\[31~;SPEC" .If $L(Input) Set R=Input .Else Do SL^PROC .Set Input=R .If Input="COM" Do ..Do MENU .Else If Input="SPEC" Do ..Do SPEC .Else Do ..Do EXEC^vhMenu("FLOWORDQCK",.Input) ..If R=Input D EXEC^vhMenu("FLOWORD",.Input) ..Set R=Input .Kill A,B .If Input'="-" Do Quit:Input="" ..New R,LWarn,LMax ..Set UZ=^KOD(KLNr,"F",ORDNr,0)-100,LWarn=90,LMax=99 ..If UZ>LWarn,UZ'>LMax,"\.\T\M\Z\U\C\F\O\OR\Q\I\%K\"[(D_Input_D) Set R=$$^vhTXTPOP("FLOW","WARNLINES",,UZ,LMax) ..If UZ>LMax,"\.\T\M\Z\U\C\F\O\OR\Q\I\%K\"[(D_Input_D),'$$^vhTXTPOP("FLOW","MAXLINES",,UZ,LMax) Set Input="" ...Set R=$$^vhTXTPOP("FLOW","MAXLINES",,UZ,99) .If Input="." Do LINSERT("P") Do Quit ..If $G(Mirror) Set PRNr(1)=Mirror Do AUTOORD^FLOWORD3 ..Kill Mirror ..Set Help=K="-" .If Input="T" Do LINSERT("T") Set Help=K="-" .If Input="M",$G(CashECar)!("\\K\M\P\Y\"[(D_OrdTyp_D)) Do LINSERT("M") Set Help=K="-" Quit .If Input="-" Quit:$O(^KOD(KLNr,"F",ORDNr,100))="" .If Input="-",'$G(CashECar) Set:$P(^KOD(KLNr,"F",ORDNr,1),D,22) Input="S" .If Input="-" Set Input="" .If Input="HELP" Set USC=^KOD(0,"F",$S($G(CashECar):"USCCC",1:"USC")) .If '$G(CashECar) Do Quit:Input="-" ..If $L(Input)=1,"ABLPW"[Input Do LMODIFY(Input) ..If Input="AL" Do AMODIFY(Input) ..If Input="Z" Do HADWIZ ..If Input="µ" Do Configurator(0) ..If Input="ù" Do Configurator(1) ..If Input="U" Do MOEDERB ..If Input="C" Do PAKKET ..If Input="F" Do CREDFAKT ..If Input="O" Do COPYOFF ..If Input="OR" Do COPYORD ..If Input="Q" Do LCONTR ..;If Input="Y",OrdTyp="" Do OPBON .If $G(CashECar) Do Quit:Input="-" ..If $L(Input)=1,"APW"[Input Do LMODIFY(Input) ..If Input="F" Do FAKTURAT ..If Input="L" Do PRINTBON .If Input="G" Do VERWTYP .If Input="I" Do LINSERT("","B") .If Input="K" Do QKORT .If Input="R" Do SORT(KLNr,ORDNr),FETCHDET,WL^PROC .If Input="S" Do CREATOR If $$CHKKRED^FLOW2(ORDNr,1) If $$CANCLOSE Do CLOSE If '$G(CashECar) Set Input="-" Quit .If Input="V" Do LDELETE .If Input="X" Do DELETE Set Input=$S($G(K)="-":"",1:"-") Quit .If Input="E" Do NEWPROD^FLOWORD2 .If Input="KK" Do KILLKOML^FLOWORD2 .If Input=">"!(Input="<") Do SWAP^FLOWORD2(Input) .If Input="RL" Do MLRECALC(KLNr,ORDNr,Detail(@DL(1)@(6)),2) .If Input="RO" Do RECALC(ORDNr,1) .If Input="PRINT" Do PRINT() Quit:Input="-" .If Input="%K" Do KOSTEN .If Input="LAK" Do LAKWERK^FOLTECL(ORDNr) .If $G(AskTekst) Do LINSERT("T") Set Help=K="-" Kill AskTekst .Set Input="" Do PutViaFLOWORD^EWORDS6(ORDNr) Quit ; ; Insert van een lijn INSERT(Rec,Insert,OLNr,Show) Do INSERT^FLOWORD2(Rec,Insert,$G(OLNr),$G(Show)) Quit ; ; Insert produkt ; LDefault doorgegeven als .Local(Piece)=Value PINSERT(Insert,Line,PRNr,Aantal,Prijs,Korting1,Korting2,LevTerm,Show,StkCorr,NoRecalc,Kost,NoChkPrs,LDefault) New R Set Insert=$G(Insert),Line=$G(Line) Set PRNr=$G(PRNr),Aantal=$G(Aantal),Prijs=$G(Prijs) Set Korting1=$G(Korting1),Korting2=$G(Korting2),LevTerm=$G(LevTerm) Set Show=$G(Show,1),StkCorr=$G(StkCorr,"?"),NoRecalc=$G(NoRecalc) Set:NoRecalc NoRecalc="=" Set Kost=$G(Kost,"?"),NoChkPrs=$G(NoChkPrs) Do PINSERT^FLOWORD2(Insert,Line,PRNr,Aantal,Prijs,Korting1,Korting2,LevTerm,Show,StkCorr,NoRecalc,Kost,NoChkPrs,.LDefault) Quit ; ; Insert tekst TINSERT(Insert,Line,Text,Show,BlockId,AfdrFakt) New R Set Insert=$G(Insert),Line=$G(Line),Text=$G(Text) Set R="TINSERT^FLOWORD2(Insert,Line,Text" Set R=R_"," Set:$D(Show) R=R_"Show" Set R=R_"," Set:$D(BlockId) R=R_"BlockId" Set R=R_"," Set:$D(AfdrFakt) R=R_"AfdrFakt" Set R=R_")" Do @R Quit ; ; Insert manuele lijn MINSERT(Insert,Line,Text,Show) New R Set Insert=$G(Insert),Line=$G(Line),Text=$G(Text) Set R="MINSERT^FLOWORD2(Insert,Line,Text" Set:$D(Show) R=R_",Show" Set R=R_")" Do @R Quit ; ; Selekteer insert module LINSERT(Type,Insert) Do LINSERT^FLOWORD2(Type,$G(Insert)) Quit ; ; Wijzig lijn LMODIFY(Input,Default) Do LMODIFY^FLOWORD4(Input,$G(Default)) Quit ; ; Wijzig alle lijnen AMODIFY(Input) Do AMODIFY^FLOWORD4(Input) Quit ; ; Sorteer volgens boom SORT(KLNr,ORDNr,First,Last) Set First="" , Last = "" // best op leeg zetten want anders werkt het toch niet JCL New R,%J,OLNr,Group,PRNr,Key,Next,PakketNr,BlockId,OLUNr,LEVNr,TOENr,TLNr,KredLock,flagNewGroup Quit:$O(^KOD(KLNr,"F",ORDNr,100))="" Quit:KLNr=$$$KlantKeller ; Niet voor Keller Quit:KLNr=$$$KlantDedecker ; Niet voor De Decker JB Set R=^KOD(KLNr,"F",ORDNr,1),KredLock=$P(R,D,23) Quit:KredLock=1 If $$FOLTEC(KLNr,ORDNr) Do SORT^FOLTECL(ORDNr,$G(First),$G(Last)) Quit Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Lock +^OD("SORT",ORDNr) Set:'$G(First) First=101 Set:'$G(Last) Last=$O(^KOD(KLNr,"F",ORDNr,""),-1) Set OLNr=First-1,Group=0,OLUNr="" For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr>Last!'OLNr Do . Set flagNewGroup=0 . Set Key="" . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),BlockId=$P(R,D,18) . If ( $P(BlockId,";",2)="T" ) && ( $P(BlockId,";",3)="" ) Do . . Set Group=$I(Group) // indien een tekstlijn en geen link met product group verhogen . If PRNr Set OLUNr=$P(R,D,15),PakketNr=$P(R,D,31) Set:'PakketNr PakketNr=999999 . .;Do KWNODE(KLNr,ORDNr,OLNr) . If ( $P(BlockId,";",2)="P" ) && ( $L($P(BlockId,";",3)) ) Do Quit ; Indien lijnen gelinkt zijn aan andere lijnen . . Set OLUNr=$P(R,D,15),PakketNr=$P(R,D,31) Set:'PakketNr PakketNr=999999 . . Set tmpOLUNr=$P(BlockId,";",3) . . Set tmpOLNr=^ORD("IU",ORDNr,tmpOLUNr) . . Set tmpPR=$P(^KOD(KLNr,"F",ORDNr,tmpOLNr),"\",2) . . Set Key=$$SORTKEY^PRODUKT(tmpPR)_" "_tmpOLNr_$J(OLUNr,7) . . Merge ^HULP(%J,$J(Group,3)_$J(PakketNr,7)_" "_Key_" "_OLNr)=^KOD(KLNr,"F",ORDNr,OLNr) . If 'PRNr Set PakketNr=$P(R,D,31) . Else Do . . Set Key=$$SORTKEY^PRODUKT(PRNr) . . If $P($$GENTYP^HAD(PRNr),"\")="TBX" Set Key=$E(Key,1,17)_$J(OLUNr,7) . Merge ^HULP(%J,$J(Group,3)_$J(PakketNr,7)_" "_Key_" "_OLNr)=^KOD(KLNr,"F",ORDNr,OLNr) . If flagNewGroup Set Group=$I(Group) // nieuwe group starten na group ophoging Set:'$G(First) First=101 Set:'$G(Last) Last=$O(^KOD(KLNr,"F",ORDNr,""),-1) Set OLNr=First-1 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr>Last!'OLNr Do . Do KWNODE(KLNr,ORDNr,OLNr) . Kill ^KOD(KLNr,"F",ORDNr,OLNr) Set Next="",OLNr=100 For Set Next=$O(^HULP(%J,Next)) Quit:Next="" Do .Set OLNr=OLNr+1 .Merge ^KOD(KLNr,"F",ORDNr,OLNr)=^HULP(%J,Next) .Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),TOENr=$P(R,D,27),TLNr=$P(R,D,28) .If PRNr Do ..Do SWNODE(KLNr,ORDNr,OLNr) ..Quit:'TOENr Quit:'TLNr ..Set LEVNr=$P($G(^KTO1(TOENr)),D) ..Quit:'LEVNr ..Set R=^KTO(LEVNr,TOENr,TLNr) ..Set $P(R,D,28)=OLNr,^KTO(LEVNr,TOENr,TLNr)=R ..If $D(^KTOK(LEVNr,TOENr,TLNr)) Set R=^KTOK(LEVNr,TOENr,TLNr),$P(R,D,5)=OLNr,^KTOK(LEVNr,TOENr,TLNr)=R Set ^KOD(KLNr,"F",ORDNr,0)=OLNr+1 Lock -^OD("SORT",ORDNr) Kill ^HULP(%J) Quit ; ; Verwijder een lijn MDELETE ; Mirror lijn New DelMirror Set DelMirror=1 LDELETE New PRNr,OLNr,BlockId,KlOLNr,MirrorLine Quit:'$D(Detail) Set OLNr=Detail(@DL(1)@(6)) Set K=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(K,D,2),KlOLNr=$P(K,D,35) If PRNr,$P(KlOLNr,".",2) Goto EDELETE If $P($P(K,D,17),"#")="KF11" Do DELETE^FLOWTEXT(Q_UGL,ORDNr,OLNr) Quit If '$$CHKTRANS(ORDNr) Set K="-" Quit ; Op transport, dus niet verwijderen If $$CHECKWMS^FLOW(,,ORDNr,OLNr,,,,1) Set K="-" Quit ; In het WMS, dus niet verwijderen If $$CHKHF(ORDNr,OLNr) Set K="-" Quit ; Halffabricaat, dus niet verwijderen If $G(DelMirror) Set K="V" Else Set K=$$KEYL^vhINP("FLOWORD","LDELETE") Quit:K'="V" Set K=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(K,D,2) Do CALCTOT^FLOW(-$P(K,D,9),$P(K,D,22)) Do:PRNr PRCOUNT^FLOW("-","KOD") Do DELLINE(ORDNr,OLNr),SHOWTOT^KFTOT(UTOT),DELETE^PROC3 Do RecalcCommKort^FLOWMANL("KOD",KLNr,ORDNr,,1) If PRNr Do . Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) . If OLNr Do . . Set R=^KOD(KLNr,"F",ORDNr,OLNr) . . Quit:$P($P(R,D,17),"#")'="KF11" . . Set BlockId=$P(R,D,18) . . Quit:$P(BlockId,";",2)'="P" . . Do DELETE^FLOWTEXT(Q_UGL,ORDNr,OLNr,1) . Do KSTBXKWK^FLOWORD4(KLNr,ORDNr,,1) . Set MirrorLine=$$MirrorLine(KLNr,ORDNr,PRNr) . Quit:'MirrorLine . Quit:'$$DelMirror^PRODUKT(PRNr) . For I=1:1 Quit:'$D(Detail(I)) Set:Detail(I)=MirrorLine @DL(1)@(6)=I . If @DL(1)@(6)<@DL(1)@(7) Set @DL(1)@(7)=@DL(1)@(6) . Else If @DL(1)@(6)>(@DL(1)@(4)+@DL(1)@(7)-1) Set @DL(1)@(7)=@DL(1)@(6)+1-@DL(1)@(4) . Do WL^PROC . Do:Detail(@DL(1)@(6))=MirrorLine MDELETE Quit ; ; Verwijder een EDI-lijn EDELETE New PRNr,OLNr,BlockId,KlOLNr,KlNaam,DelEdi Quit:'$D(Detail) Set OLNr=Detail(@DL(1)@(6)),DelEdi="L" If $$CHECKWMS^FLOW(,,ORDNr,OLNr,,,,1) Set K="-" Quit Set K=^KOD(KLNr,"F",ORDNr,OLNr),KlOLNr=$P(K,D,35),OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:DelEdi="G" .Set K=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(K,D,2) .Quit:'PRNr Quit:$P($P(K,D,35),".")'=$P(KlOLNr,".") Quit:$P($P(K,D,35),".",3)'=$P(KlOLNr,".",3) .Set:$$CHECKWMS^FLOW(,,ORDNr,OLNr,,,,1) DelEdi="G" If DelEdi="G" Do Quit:K="-" .Set KlNaam=$P(^KKL(^KK1(KLNr),0),D,2) .Set DelEdi=$$TXTPOP^FLOW("WMSDELEDI",,$$EXTNUM^vhDTyp(ORDNr,0,".",0),KlNaam) .Set:DelEdi="A" K="-" Else Do Quit:K="-" .Set K=$$KEYL^vhINP("FLOWORD","EDELETE") .Quit:K'="G" .Set DelEdi="L" If DelEdi="G" Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr),-1) Else Set OLNr=100,DL(2)="HO" Do ML^PROC Kill DL(2) For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:DelEdi="G" .Set K=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(K,D,2) .If 'PRNr Set DL(2)="DO" Do ML^PROC Quit .If $P($P(K,D,35),".")=$P(KlOLNr,"."),$P($P(K,D,35),".",3)=$P(KlOLNr,".",3) .Else Set DL(2)="DO" Do ML^PROC Quit .If $$CHECKWMS^FLOW(,,ORDNr,OLNr) Set DL(2)="DO" Do ML^PROC Quit .Do CALCTOT^FLOW(-$P(K,D,9),$P(K,D,22)),PRCOUNT^FLOW("-","KOD") .Do DELLINE(ORDNr,OLNr),SHOWTOT^KFTOT(UTOT),DELETE^PROC3 .Do RecalcCommKort^FLOWMANL("KOD",KLNr,ORDNr,,1) .Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) .If OLNr Do ..Set R=^KOD(KLNr,"F",ORDNr,OLNr) ..If $P($P(R,D,17),"#")'="KF11" Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr),-1) Quit ..Set BlockId=$P(R,D,18) ..Quit:$P(BlockId,";",2)'="P" ..Do DELETE^FLOWTEXT(Q_UGL,ORDNr,OLNr,1) .Else Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr),-1) Quit ; ; Verwijder volledig het order DELETE New R,Rembours,TeBet,KlNaam,Munt Set R=^KOD(KLNr,"F",ORDNr,1),Munt=$P(R,D,18),Rembours=$P(R,D,37) If '$$CHKTRANS(ORDNr) Set K="-" Quit ; Op transport, dus niet verwijderen If $$CHECKWMS^FLOW(,,ORDNr,,,,,1) Set K="-" Quit ; In het WMS, dus niet verwijderen If $$CHKHF(ORDNr) Set K="-" Quit ; Halffabricaat, dus niet verwijderen Do DL^PROC Set K=$$ASKL^vhINP("FLOWORD","DELETE") If K'="V" Do EL^PROC Quit Do DELOBJ(ORDNr) Kill Detail Set UTOT=0 Do SHOWTOT^KFTOT(UTOT) Do:Rembours . Set TeBet=$P(Rembours,"#",3) . Set R=^KKL(^KK1(KLNr),0),KlNaam=$P(R,D,2) . For Do Quit:R'="T" . . Set R=$$^vhTXTPOP("FLOWORD","DELREMB","",KLNr,KlNaam,$$EXTNUM^vhDTyp(ORDNr,0,".T",0),$$EXTNUM^vhDTyp(TeBet,0,".",2),Munt) . . Do:R="T" TELEFOON^KONTAKT("K",KLNr) Quit ; DELLINE(ORDNr,OLNr,Extern) Do DELLINE^FLOWORD3(ORDNr,OLNr,$G(Extern)) Quit ; DELOBJ(ORDNr) Do DELOBJ^FLOWORD3(ORDNr) Quit ; BUILDOBJ(KLNr,AutoMb,OrdRef,PRNr,EDIORDNr,BackGrnd,OrdTyp,FBRef,Offerte) Do BUILDOBJ^FLOWORD3($G(KLNr),$G(AutoMb),$G(OrdRef),.PRNr,$G(EDIORDNr),$G(BackGrnd),$G(OrdTyp),$G(FBRef),.Offerte) Quit ; ; Contractlijn LCONTR Quit:'$D(Detail(@DL(1)@(6))) Do SCROL^KFCOL(Detail(@DL(1)@(6))) Set R="" If K'="-",$O(B(100))'="" For I=1:1:35 Set R=R_$G(B(I+100))_D If $L(R) Do INSERT(R,"E","",1) Quit ; ; Paketten PAKKET Do ^KFPAK Quit ; ; Deuren DEUR Do SERIE^DEUR(KLNr,"","CBDEUR^FLOWORD") Quit ; CBDEUR(PRNr) New R,Prijs,Korting1,Korting2 Set R=$$KLANTPR^KPRIJS(KLNr,PRNr) Set Prijs=$J($P(R,D),0,2),Korting1=$P(R,D,5),Korting2=$P(R,D,6) Do PINSERT("","",PRNr,"",Prijs,Korting1,Korting2,$G(DefLevT)) Set FP=$P(UD,D,2)+1*100+1 Write @F,@F1 Quit ; ; Kontrole foltec produkten FOLTEC(KLNr,ORDNr) New R,PRNr,LEVNr,Foltec,OLNr Set OLNr=100,Foltec=0 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do Quit:Foltec .Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) .Quit:'PRNr .Set Foltec=$D(^KPR(PRNr,"J6092")) .Set:'Foltec Foltec=$D(^KPR(PRNr,"J6428")) Quit Foltec ; ; Halux wizard HADWIZ New R,PRNr,Aantal,OLNr,Data,Next,NoChkPrs Set (PRNr,Aantal)="" If $D(Detail) Set OLNr=Detail(@DL(1)@(6)),R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) Set:PRNr Aantal=$P(R,D,3) Do CREATE^HADWIZ(KC,PRNr,Aantal,KV,"ORD",.Data) Set NoChkPrs="\1569\"[(D_KLNr_D) ; Geen prijscontrole voor DEDECKER Set Next="" For Set Next=$O(Data(Next)) Quit:Next="" Do . Set R=Data(Next),PRNr=$P(R,D),Aantal=$P(R,D,2) . If PRNr,Aantal Do PINSERT("","",PRNr,Aantal,,,,,,,,,NoChkPrs) Quit Configurator(WijzigProduct) Quit:(WijzigProduct)&&('$Data(Detail)) New R,PRNr,BesteldeProducten,BesteldeProductenIterator,BesteldProduct,Parameters,IsGeannuleerd Set (PRNr,BesteldeProducten,Puntjes)="" Set IsGeannuleerd = 0 If (WijzigProduct) { New Familie,Variant Set (Familie,Variant) = "" Set OLNr=Detail(@DL(1)@(6)),R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) Set:PRNr Aantal=$P(R,D,3) Set Parameters = ##class(CHUI.Flow.ConfiguratorHelper).MaakWijzigenParameters(PRNr, ##class(APPS.VKP.Maatwerk.enu.DocumentType).Order(), ORDNr, KLNr, OLNr, .Status) Quit:'$IsObject(Parameters) } Else { Set Parameters = ##class(CHUI.Flow.ConfiguratorHelper).MaakToevoegenParameters(##class(APPS.VKP.Maatwerk.enu.DocumentType).Order(), ORDNr, KLNr, .Status) } If ($$$ISERR(Status)) { Do DISPONLY^vhTXTPOP("Opslaan parameterobject niet gelukt~"_$$ParseStatus^vhLib(Status),"Fout!") Quit } StartExterneConfigurator Set:('$IsObject($Get(Parameters))) Parameters = ##class(CHUI.Flow.ConfiguratorHelper).GeefAdminSessieParameters(##class(APPS.VKP.Maatwerk.enu.DocumentType).Order(), ORDNr) Do ##class(CHUI.Flow.ConfiguratorHelper).StartConfiguratorMet(Parameters) VerwerkConfiguratorProducten Set:('$IsObject($Get(Parameters))) Parameters = ##class(CHUI.Flow.ConfiguratorHelper).GeefAdminSessieParameters(##class(APPS.VKP.Maatwerk.enu.DocumentType).Order(), ORDNr) Set BesteldeProducten = ##class(CHUI.Flow.ConfiguratorHelper).GeefBesteldeProducten(##class(APPS.VKP.Maatwerk.enu.DocumentType).Order(), ORDNr) If ('$Get(IsGeannuleerd,0) && Parameters.%Extends("APPS.VKP.Maatwerk.impl.ProductWijzigenParameters")) { Do DELLINE(ORDNr, Parameters.GeefLijnID()) } Set BesteldeProductenIterator = ##class(TECH.ListIterator).%New(BesteldeProducten.Lijst) While (BesteldeProductenIterator.HasNext()) { Set BesteldProduct = BesteldeProductenIterator.Next() Do PINSERT("","",BesteldProduct.GeefPRNr(),BesteldProduct.GeefAantal()) Set OLNr=Detail(@DL(1)@(6)) Set $Piece(^KOD(KLNr,"F",ORDNr,OLNr),"\",5) = BesteldProduct.GeefProjectReferentie() } Do BesteldeProducten.%DeleteId(BesteldeProducten.%Id()) Do:('$Get(IsGeannuleerd,0)) Parameters.%DeleteId(Parameters.%Id()) Quit ; ; Moederbon MOEDERB Do ^MOEDERB Quit ; ; Credditeren van fakturen CREDFAKT Do ^KFCRED If K="-" Do WL^PROC Quit ; ; Copieer een offerte COPYOFF Do OFF^KFCOPY Quit ; ; Copieer een order COPYORD Do ORD^KFCOPY Quit ; ; Kwantumkorting bij handel QKORT Quit:'$D(Detail) For Do Quit:K="-" .Do SCROL^KFKYW(Detail(@DL(1)@(6))) .Set FP=$P(UD,D,2)+1*100+1 Write @F,@F1 .Quit:K="-" .If @DL(1)@(6)=@DL(1)@(9) Do EL^PROC Set K="-" Quit .Set DL(2)="DO" Do ML^PROC Kill DL(2) Quit ; ; Aanduiding verwerkingstype VERWTYP New K,R,Line,IK Quit:'$D(Detail) If OrdTyp="Y" Set R=$$TXTPOP^FLOW("C&CNOSTOCKUPD") Quit Set Line=Detail(@DL(1)@(6)),R=^KOD(KLNr,"F",ORDNr,Line) Quit:'$P(R,D,2) Quit:$$CHECKWMS^FLOW(,,ORDNr,Line,,,1) Set K=$S($P(R,D,14)["S":"S",$P(R,D,14)["Z":"Z",1:"N") Set K=$$PI^vhPOPUP("C;C","-O1","","FLOWORD","STOCKUPD",K) If K="N" Do .If $P(R,D,14)'["S",$P(R,D,14)'["Z" Quit .Set $P(R,D,14)=$TR($P(R,D,14),"SZ","") .Set ^KOD(KLNr,"F",ORDNr,Line)=R .Do MODRES(KLNr,ORDNr,Line) Else Do .Quit:$P(R,D,14)[K .Do ..New K,PRNr,ProductKey,VerpProductKey,KortTekst ..Set PRNr=$P(R,D,2) ..Set ProductKey=##class(Prod.ProductPrijs).%OpenId(PRNr,0) ..Set VerpProductKey=ProductKey.VerpakkingsProduct ..Quit:VerpProductKey="" ..Set ProductKey=##class(Prod.Product).%OpenId(PRNr,0) ..Set IK=$$^vhTXTPOP("FLOWORD","VERPAKKINGSPRODUCT","",ProductKey.KortTekst,VerpProductKey.KortTekst) .If $P(R,D,14)'["S",$P(R,D,14)'["Z" Do MODRES(KLNr,ORDNr,Line,1) .Set $P(R,D,14)=$TR($P(R,D,14),"SZ","")_K .Set ^KOD(KLNr,"F",ORDNr,Line)=R Do EL^PROC Quit ; ; fakturatie cash&carry FAKTURAT Do ^KF20CC If K'="-" Set Input="-" Quit ; ; Nazien of het order gesloten is en eventueel sluiten CLOSED(ORDNr,Close,SkipOrd) New R,KLNr,Closed Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set R=^KOD(KLNr,"F",ORDNr,1),Closed=$P(R,D,22) If 'Closed,$G(Close),$$CHKKRED^FLOW2(ORDNr,$G(SkipOrd)) Do .Do CLOSE,ADD^vhScherm(1,24),FETCHDET,REFRESH .Set R=^KOD(KLNr,"F",ORDNr,1),Closed=$P(R,D,22) Quit Closed CANCLOSE() New Result Set Result = $$ChkBeloofdeDatum^FLOWORD4(ORDNr,KLNr) // checken op juistheid beloofde datum false indien wijzigingen gebeurd zijn of datum onjuist Do:'Result ADD^vhScherm(1,24),REFRESH // indien sluiten niet mag .. scherm hertekenen Quit Result ; ; Sluit order CLOSE New zb,R,OrdDat,Closed,TLNr,OLNr,Data,IntPers,ExtPers,FaxNrOrEmail,DevNr,KredLock,Created,LEVNr,DueOutOk,ORDNrs,TempORDNr,OrdBev,FaxType,Exit,BevatMaatWerk Do CheckType2Proforma^FLOWORD5(ORDNr) Set R=^KOD(KLNr,"F",ORDNr,1),KredLock=$P(R,D,23),OrdTyp=$P(R,D,25) Quit:KredLock=1 Set OrdDat=$P(R,D,2),Created=$P(R,D,8),IntPers=$P(Created,"#"),ExtPers=$P(R,D,9) Set FaxNrOrEmail=$P(R,D,10),Closed=$P(R,D,22),BevatMaatWerk=$$BevatMaatWerk^FLOW("O",ORDNr) If 'Closed Do . Do ModifyLeverDagenOnCloseOrder^FLOWORD4(ORDNr) . Do ModifyLeverDagenOnD2^FLOWORD4(ORDNr) . Do:KredLock CHKLEVT(ORDNr) . Do CREATOR . If 'KredLock Do KLACHT If KLNr=$$$KlantBVanHoecke Do PartMedew^FLOW2("O",ORDNr) . Quit:$L(FaxNrOrEmail) . Set OrdBev=$P(^KKL(^KK1(KLNr),1),D,19) . If KLNr=$$$KlantSFS Do . . If ($P(R,D,53)=##class(BL.Flow.Offerte.enu.Oorsprong).EDIBestand()) Do . . . Do ##class(APPS.OV.impl.OrderBevestigingSFS).%New(ORDNr).Verwerk() . . . Set OrdBev="" . Quit:OrdBev="" ; Geen bevestiging faxen . If $E(OrdBev,2)="M",'BevatMaatWerk,'$$BevatNietStock^FLOWORD5(ORDNr),'$$BevatAfdekKap^FLOW("O",ORDNr) Quit ; Geen maatwerk, geen Niet-stock, geen afdekkapjes dus geen fax of mail . If $E(OrdBev)="F" Set FaxNrOrEmail=$P(^KKL(^KK1(KLNr),1),D,24) . Else Set FaxNrOrEmail=$$GetDefaultemKlant^FaxMail(KLNr,,1,,"O"_$S(BevatMaatWerk:"M",1:"")) . Set $P(^KOD(KLNr,"F",ORDNr,1),D,10)=FaxNrOrEmail Else Do:'$$CHKLACHT(ORDNr) KLACHT If $G(CashECar) Quit:Closed Do ^KFSOCC Quit If $$ISLAKORD^FOLTECL(ORDNr) Do CLOSE^FOLTECL(ORDNr) Set R=^KOD(KLNr,"F",ORDNr,1) Do:'Closed .Set R=^KOD(KLNr,"F",ORDNr,1) Set:$P(R,D,45)="" $P(R,D,45)=$H,^KOD(KLNr,"F",ORDNr,1)=R ; Referentiedatum voor DOM levertermijn .Do BSControl^FLOWORD7(ORDNr) .Do CheckUitVerkoop^FLOWPROD(ORDNr) Do CheckProduct2VerzendWijze^FLOWORD5(KLNr,ORDNr) Do CheckLeverDagen2VerzendWijze^FLOWORD5(KLNr,ORDNr) Do ^KFSO Set OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do .Set R=^KOD(KLNr,"F",ORDNr,OLNr) .Set:$P(R,D,27) TLNr($P(R,D,27))="" Set TLNr="" For Set TLNr=$O(TLNr(TLNr)) Quit:TLNr="" Do TSPLIT^FLOWTOE(TLNr) If $$ISHALUX^FLOW("O",ORDNr),$$CheckProductieOrder^FLOWHALUX(ORDNr) Do .If Closed Do Quit:DueOutOk ..Set OLNr=100,DueOutOk=1 ..For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do ...Set R=^KOD(KLNr,"F",ORDNr,OLNr) ...Set:$P(R,D,27) TLNr($P(R,D,27))="" ..Set TLNr="" ..For Set TLNr=$O(TLNr(TLNr)) Quit:TLNr="" Do Quit:'DueOutOk ...Set LEVNr=$P(^KTO1(TLNr),D) ...Set R=^KTO(LEVNr,TLNr,1),DueOutOk=$P(R,D,19) .Do ProductieOrder^FLOWHALUX(ORDNr,1) Do:'Closed .Do SetDueOutProductieORD^FLOWHALUX(ORDNr,1) .Do:KLNr'=$$$KlantKeller CheckTBXDagPlus^FLOWORD2(ORDNr) .If '$L(FaxNrOrEmail) Do Quit:Exit ..Set Exit=1 ..Quit:OrdBev="" ..If $E(OrdBev,2)="M",'BevatMaatWerk,'$$BevatAfdekKap^FLOW("O",ORDNr) Quit ..Set Exit=0 .Set FaxType=$$PI^vhPOPUP("C;C","-O1","Fax voorblad","FLOWORD","FAXVOORBLAD") .If zb="CANC" Do TXTL^vhINP("PRINTER","FAXNOTSEND") Quit .If '$L(FaxNrOrEmail),FaxType="Z" Do TXTL^vhINP("DCFAX","FAXNREMPTY") Quit .If '$L(FaxNrOrEmail),FaxType'["?" Set FaxType=FaxType_"?" .Set Data("VanUser")=IntPers,Data("Verantw")=$P(ExtPers,"#"),Data("Fax")=FaxNrOrEmail .Set Data("ATK")=$P(ExtPers,"#",2) .Set Data("TextId")=FaxType .Set:$$CHKALG^DEFAULTS(KLNr,"FLOWORD","AUTOFAX","SKIPVOORBLAD") Data("TextId")="Z" .Set TempORDNr="",ORDNrs=ORDNr .For Set TempORDNr=$O(^KOD(KLNr,"F",TempORDNr)) Quit:TempORDNr="" Do:TempORDNr'=ORDNr .. Set R=^KOD(KLNr,"F",TempORDNr,1) .. Set:$P($P(R,D,24),"#",3)=ORDNr ORDNrs(TempORDNr)="" .If KLNr=$$$KlantBruynzeel Do Quit:'ORDNrs ..Set TempORDNr="" ..For Set TempORDNr=$O(ORDNrs(TempORDNr)) Quit:TempORDNr="" Kill:$$ISORGAL^FLOWCHK("O",TempORDNr) ORDNrs(TempORDNr) ..If $$ISORGAL^FLOWCHK("O",ORDNrs) Set ORDNrs=$O(ORDNrs("")) Kill:ORDNrs ORDNrs(ORDNrs) .Do PRINT(.Data) // Event raisen dat het order gesloten is Do RaiseOrderGeslotenEvent(ORDNr) // Ook een event raisen voor alle gelinkte orders die zijn aangemaakt New GelinkteOrders,GelinkteOrdersIterator Set GelinkteOrders = $Piece(^KOD(KLNr,"F",ORDNr,1),D,41) Set GelinkteOrdersIterator = ##class(TECH.PiecesIterator).%New(GelinkteOrders,";") While (GelinkteOrdersIterator.HasNext()) { Do RaiseOrderGeslotenEvent(GelinkteOrdersIterator.Next()) } Quit RaiseOrderGeslotenEvent(ORDNr) New EventData,Event Set EventData = ##class(DOM.VKP.event.OrderGeslotenEventData).%New(ORDNr) Set Event = ##class(DOM.VKP.event.OrderGeslotenEvent).%New(EventData) Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(Event) Quit ; ; Call back voor het opnemen van de elementen 'fax voorblad' PopUpInclElement(Element) New D,Include Set D="\" Set:$P(Element,"`",3)="" $P(Element,"`",3)=1 Xecute "Set Include="_$P(Element,"`",3) Quit Include ; ; Invullen creator en klassementref. CREATOR New R,OrdDat,IntPers,DevNr,KlasRef,Created,Closed,UserInit Set R=^KOD(KLNr,"F",ORDNr,1) Set OrdDat=$P(R,D,2),Created=$P(R,D,8),IntPers=$P(Created,"#"),Closed=$P(R,D,22),KlasRef=$P(R,D,24) If 'Closed,Created=""!(KlasRef="") Do .Quit:'$O(^KOD(KLNr,"F",ORDNr,100)) .Set DevNr=$$IO^cQ5,UserInit=$G(QU) .If $L(UserInit) Set IntPers=$$USERID^vhUSER(UserInit) .Else Set IntPers=$P($$DEVUSER^vhUSER(DevNr),";") .Set:Created="" Created=IntPers_"#"_DevNr_"#"_$H .Do:KlasRef="" ..If ";"_$$TGROEP^vhUSER("EIGENKLAS")_";"[(";"_IntPers_";") Set KlasRef=IntPers ..Else Set KlasRef="DIV" ..Set KlasRef=KlasRef_"#"_$H_"#"_ORDNr .Set $P(R,D,8)=Created,$P(R,D,24)=KlasRef,^KOD(KLNr,"F",ORDNr,1)=R .Do ORDER^FLOWKLAS(ORDNr) Quit ; ; Geeft de gebruiker en tijdstip creatie OrderCreatedBy(ORDNr) New R,CreatedBy Set KLNr=$P($G(^KO1(ORDNr,"F")),D),CreatedBy="" Set:KLNr R=$G(^KOD(KLNr,"F",ORDNr,1)),CreatedBy=$P(R,D,8) Quit CreatedBy ; ; Kontrole klacht ingevuld CHKLACHT(ORDNr) New R,Ok,KlachtId,KLNr Set Ok=0,R=^KO1(ORDNr,"F"),KLNr=$P(R,D) If $D(^KlachtI("O",ORDNr)) Do .Set KlachtId="" .For Set KlachtId=$O(^KlachtI("O",ORDNr,KlachtId)) Quit:KlachtId="" Do Quit:Ok ..Set R=^KlachtI("O",ORDNr,KlachtId) ..Quit:R'="R" ..Set R=^KlachtD(KlachtId) ..If $P(R,D)="K",$P(R,D,2)=KLNr Set Ok=1 Quit Ok ; ; Klachtenbehandeling KLACHT New R,OLNr,KlachtId,KlachtP,LevVw,IsPlusMi,Keys If $G(AutoOrd),'$G(AutoMb) Quit Set R=^KOD(KLNr,"F",ORDNr,1),LevVw=$P(R,D,7) Set IsPlusMi=$$ISPLUSMI^FLOW("O",ORDNr) If 'IsPlusMi,LevVw'="TPO",OrdTyp'="P" Do Quit:'OLNr .Set OLNr=100 .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Set R=^KOD(KLNr,"F",ORDNr,OLNr) If $P(R,D,3),$P(R,D,3)<0 Quit Set:IsPlusMi Keys="1*" For Do Quit:KlachtId'="-" .Set KlachtId=$P($$SELECT^KLACHTS("K",KLNr,,,$G(Keys)),D) .If KlachtId="-",$$^vhTXTPOP("KLACHT","NOKLACHT") Set KlachtId="" If KlachtId Do .Do:OrdTyp'="P" KREDPAR^KLACHT(ORDNr,.KlachtP) .Set KlachtP("RZTELEM",1)="O#"_ORDNr .Do EDIT^KLACHT(KlachtId,,.KlachtP) Else If OrdTyp="P" Do .Do PROF^KLACHT(KLNr,ORDNr,'$L(KlachtId)) Else Do KRED^KLACHT(KLNr,ORDNr,'$L(KlachtId)) Quit ; OPBON If $$ASKL^vhINP("FLOWORD","OPBON")'="J" Quit Quit:'$$CLOSED(ORDNr,1) If $O(^KOD(KLNr,"F",ORDNr,100))'="" Do FLOWORD^KF4 Set Input="-" Quit ; RPLKL Goto RPLKL^FLOW ; RPLPR New R,PR If $D(Detail) Set R=^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6))),PR=$P(R,D,2) Goto RPLPR^FLOW Quit ; PROJREF New R,PR If $D(Detail) Set R=^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6))),PR=$P(R,D,2) If PR Goto PROJREF^FLOWORD2 Quit ; TOELEV New TOENr Set Input="" Quit:'$D(Detail) Set TOENr=$$TOENR() Quit:'$G(TOENr) Set Goto="FTE^KTO30",Locals("TOENr")=TOENr,Locals("Goto")=Goto If $D(Extern) Set Locals("Extern")=Extern Set Input="-" Quit ; TOENR() New R,Rec,OLNr,TOENr Set Rec=^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6))) Set OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do .Set R=^KOD(KLNr,"F",ORDNr,OLNr) .If $P(R,D,27) Set TOENr($P(R,D,27))=$P(R,D,27) If $O(TOENr($O(TOENr(""))))="" Quit $O(TOENr("")) New DL,LD Set LD(2)="1;N+;L;8;;| \1;C;L;10;; | ;;$P(^KTO($P(^KTO1(X),D),X,1),D,2)\1;C;L;25;; | ;;$P(^KLE(^KL1($P(^KTO1(X),D)),0),D,2)\1;C;L;25;;;;$P(^KTO($P(^KTO1(X),D),X,1),D,10)" Set LD(1)="TOENr",LD(3)=20,LD(8)="Selekteer een toelevering" Set DL(1)="LD" Do RL^PROC1 Set LD(6)=1,R="" For Set R=$O(TOENr(R)) Quit:R="" If $P(Rec,D,27)=TOENr(R) Set LD(6)=R Quit Do WL^PROC For Do SL^PROC Quit:"\-\ENTER\"[(D_R_D) Quit $S(R="-":R,1:TOENr(@DL(1)@(6))) ; GWNODE(KLNr,ORDNr,OLNr) Quit $$GWNODE^FLOWORD2(KLNr,ORDNr,OLNr) ; KWNODE(KLNr,ORDNr,OLNr) Do KWNODE^FLOWORD2(KLNr,ORDNr,OLNr) Quit ; SWNODE(KLNr,ORDNr,OLNr) Do SWNODE^FLOWORD2(KLNr,ORDNr,OLNr) Quit ; MODRES(KLNr,ORDNr,OLNr,Negatief) Do MODRES^FLOWORD2(KLNr,ORDNr,OLNr,$G(Negatief)) Quit ; ; Herrekenen lijn LRECALC(KLNr,ORDNr,OLNr,Display,KortTyp) Do LRECALC^FLOWORD2(KLNr,ORDNr,OLNr,$G(Display),$G(KortTyp)) Quit ; ; Herrekenen lijn via menu MLRECALC(KLNr,ORDNr,OLNr,Display,KortTyp) New Rec,PRNr,TempRec Set (Rec,TempRec)=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(Rec,D,2) Quit:'PRNr If $P(Rec,D,26)'="*",$P(Rec,D,26)'="=" Kill TempRec Else Quit:'$$TXTPOP^FLOW("LRECALC") Set $P(Rec,D,26)="",^KOD(KLNr,"F",ORDNr,OLNr)=Rec Do LRECALC^FLOWORD2(KLNr,ORDNr,OLNr,$G(Display),$G(KortTyp)) If $D(TempRec) Do .Set Rec=^KOD(KLNr,"F",ORDNr,OLNr) .Quit:$L($P(Rec,D,26)) Quit:$P(Rec,D,26)=$P(TempRec,D,26) .Set $P(Rec,D,26)=$P(TempRec,D,26),^KOD(KLNr,"F",ORDNr,OLNr)=Rec .Do:Display EL^PROC Quit ; ; Herreken een order RECALC(ORDNr,Display,KortTyp) Do RECALC^FLOWORD2(ORDNr,$G(Display),$G(KortTyp)) Quit ; REFRESH If sRT=1 Write @F11,@F1 Xecute ^KOD(0,"F",0) If sRT<$P(UD,D) Xecute ^KOD(0,"F","UT") Do ^KF12 If sRT<($P(UD,D,2)+1) Do WL^PROC Do RESET^vhScherm Quit ; ; Call back voor lijsdefinitie CB(K,OLNr) New R Set IsSyncToe=$$ISSYNC^FLOWCHK(ORDNr,OLNr) Set R=^KOD(KLNr,"F",ORDNr,1),OrdTyp=$P(R,D,25) Set R=^KOD(KLNr,"F",ORDNr,OLNr) If $P($P(R,D,17),"#")="KF11" Quit 3 If $P(R,D,17)="KF5" Quit 2 If $P(R,D,2)'?4.7N Quit 1 Quit "" ; ; Ophalen detail FETCHDET New OLNr,Count Kill PrCount,Detail,@DL(1)@(7),@DL(1)@(9) Set OLNr=100,(Count,PrCount)=0 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do .Set Count=Count+1,Detail(Count)=OLNr If $P(^KOD(KLNr,"F",ORDNr,OLNr),D,2) Set PrCount=PrCount+1 .Set:UL'>$P(UD,D,2) UL=UL+1 Do PRCOUNT^FLOW(PrCount,"KOD") Quit ; PRINT(Data) New Munt,Quit Set Munt=$P(^KOD(KLNr,"F",ORDNr,1),D,18) Quit:'$$CHKKRED^FLOW2(ORDNr,1) If Munt="MTL" Do Quit:Quit .Set R=$$ASKL^vhINP("FLOWORD","PRINTMTL"),Quit=R'="S" .Quit:Quit .Do CLOSE,ADD^vhScherm(1,24),REFRESH .Set:$O(^KOD(KLNr,"F",ORDNr,100))="" Quit=1 Set Input="-" Set FP=USM*100+1 Write @F,@F1 Do SORT(KLNr,ORDNr),FETCHDET,WL^PROC Set ORDNrs=ORDNr Do EXTERN^DCPRINT("O",.ORDNrs,"","",1,.Data) Kill ^KOB(ORDNr,"F") Quit ; PRINTBON Set FP=USM*100+1 W @F,@F1 Do SORT(KLNr,ORDNr),FETCHDET,WL^PROC Do ^KF32CC Quit ; PRINTTOE New R,TOENr,OLNr,PRINTTOE Set R=^KOD(KLNr,"F",ORDNr,1),TOENr=$P(R,D,4) If TOENr,$$ISHALUX^FLOW("T",TOENr) Set TOENr(TOENr)="" Set OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do .Set R=^KOD(KLNr,"F",ORDNr,OLNr),TOENr=$P(R,D,27) .If TOENr,'$D(TOENr(TOENr)),$$ISHALUX^FLOW("T",TOENr) Set TOENr(TOENr)="" Do GETUSER^DEFAULTS(,"FLOWORD") Set TOENr="" For Set TOENr=$O(TOENr(TOENr)) Quit:TOENr="" Do PRINT^DCTOE(TOENr,,,,$G(PRINTTOE("Printer"),22)) Quit ; IsAventosOrder(ORDNr) ; Controleert of het een order is met aventosbakken N bl,ConsNr Set bl=##class(BL.MB.UGLYPicking.Aventosbak.Aventosbak).%New() Set Gevonden=0,OLNr="" For Set OLNr=$O(^ORDW("IO",ORDNr,OLNr)) Quit:OLNr=""!Gevonden Do . Set ConsNr=^ORDW("IO",ORDNr,OLNr),Gevonden=1 If 'Gevonden Quit 0 If bl.OrdHasAventos(ConsNr) Quit 1 Quit 0 PrintAventos(ORDNr) ;afdrukken van info aventosbakken van een order N bl,ConsNr Set bl=##class(BL.MB.UGLYPicking.Aventosbak.Aventosbak).%New() Set Gevonden=0,OLNr="" For Set OLNr=$O(^ORDW("IO",ORDNr,OLNr)) Quit:OLNr=""!Gevonden Do . Set ConsNr=^ORDW("IO",ORDNr,OLNr),Gevonden=1 Quit:'Gevonden Quit:'bl.OrdHasAventos(ConsNr) Set UpdateOK=$$^vhTXTPOP("SYSTEM","JANEEN","","Herberekenen aventosbakken?") If UpdateOK Do bl.BakkenInstellen(CONSNr) ;set bl.Debug=1 Do bl.AfdrukkenBakken(ConsNr,0) h 1 Do bl.AfdrukkenBakken(ConsNr,1) Do WARN^vhTXTPOP("Aventosinfo van order "_ORDNr_" en bon "_ConsNr_" afgedrukt op printer LEVBON_PS","") Quit KOSTEN New R,Line,PRNr,Aantal Quit:'$D(Detail) Set Line=Detail(@DL(1)@(6)),R=^KOD(KLNr,"F",ORDNr,Line),PRNr=$P(R,D,2),Aantal=$P(R,D,3) If Aantal<0,PRNr,$D(^KPR(PRNr,"J5810")) Do KOSTEN^FLOWORD2(R,"H") Quit ; MAIL New MailId,Refer Set Refer="ORD\"_ORDNr_"\R\" Set MailId=$$EXTERN^vhMAIL("ORD",ORDNr,"","","",Refer) Quit ; INIT(Screen) Set Screen=$G(Screen,1) Do INIT^FLOWORD2(Screen) Quit ; DETAIL(Screen) Set Screen=$G(Screen,1) Do DETAIL^FLOWORD2(Screen) Quit ; MENU Do CALL^vhMenu("FLOWORD") Quit ; SPEC Do CALLSPEC^vhMenu(AD(3)+AD(6)-1_";80","FLOWORDQCK","") Quit ; UNIEKLNR(KLNr,ORDNr) New OLUNr Set KLNr=$G(KLNr),ORDNr=$G(ORDNr) Set:'KLNr KLNr=$P(^KO1(ORDNr,"F"),D) Set OLUNr=$G(^KOD(KLNr,"F",ORDNr,4)) Set:'OLUNr OLUNr=1 Set ^KOD(KLNr,"F",ORDNr,4)=OLUNr+1 Quit 90+(OLUNr*10) ; ; Geef het unieke lijnnummer van een orderlijn GeefOrderLijnCode(KlantID,OrderID,OrderLijnID) New Rec,OrderLijnCode Set Rec=^KOD(KlantID,"F",OrderID,OrderLijnID),OrderLijnCode=$P(Rec,D,15) If 'OrderLijnCode Set OrderLijnCode=$$UNIEKLNR(KlantID,OrderID),$P(Rec,D,15)=OrderLijnCode,^KOD(KlantID,"F",OrderID,OrderLijnID)=Rec Quit OrderLijnCode ; EWMS(Prog) New EwmsLink,Closed Set EwmsLink=0 Do STORE^vhTERMINA() If Prog="M" Do .Set R=^KOD(KLNr,"F",ORDNr,1),Closed=$P(R,D,22) .If 'Closed Quit:'$$CLOSED(ORDNr,1) .Do VERWERK^EWORDS(KLNr,ORDNr,"SL") If Prog="S" Do .Do KLANT^EWORDST(KLNr) Do REFRESH^vhTERMINA() If '$D(^KOD(KLNr,"F",ORDNr)) Set Input="-" Else Do FETCHDET,ADD^vhScherm(1,24),REFRESH Quit ; %EWMS(ORDNr) New R,%wms,TotLines,WmsLines,KLNr,OLUNr,OLNr,PRNr,TOENr,FysStock,Aantal Set OLUNr="",(TotLines,WmsLines)=0,KLNr=$P(^KO1(ORDNr,"F"),D) For Set OLUNr=$O(^ORD("IU",ORDNr,OLUNr)) Quit:OLUNr="" Do .Set OLNr=^ORD("IU",ORDNr,OLUNr),R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3),TOENr=$P(R,D,27) .Quit:'PRNr Quit:TOENr .Set FysStock=$$GETSTOCK^PRODUKT4(PRNr,"F") .Set:Aantal>FysStock FysStock=$$GETSTOCK^PRODUKT4(PRNr,"FS") .Quit:Aantal>FysStock .Set TotLines=TotLines+1 Set:$D(^ORDW("IO",ORDNr,OLUNr)) WmsLines=WmsLines+1 Set %wms=$S(TotLines:WmsLines/TotLines*100,1:0) Quit %wms ; EXTERN(ORDNr) Do EXTERN^FLOWORD3(ORDNr) Quit ; ORDREF New %SC,I,sFL,IsOrgal,IsComm If $G(AutoOrd),$L($G(OrdRef)) Set K=OrdRef Kill OrdRef Else Do .If UR,$D(^KO1(UR)) Set sFL(1)=B(1) .Else For I=1:1:99 Set:$D(B(100+I)) $P(sFL(1),D,I)=B(100+I) .Set IsOrgal=$S('UR:0,'$D(^KO1(UR)):0,1:$$ISORGAL^FLOW("O",UR)) .Set IsComm=$S(IsOrgal:0,1:$S('UR:0,'$D(^KO1(UR)):0,1:1)) ; De commisions referentie steeds opvragen .If UR,$D(^KO1(UR)) Do ..Do EDIT^vhScherm("FLOWOREF","","","","","",3) .Else Do NIEUW^vhScherm("FLOWOREF","","","","","",3,"A") .If %SC Do ..Set K=$P(sFL(1),D,3) ..If K'=",",K'="-" Do ...If UR,$D(^KO1(UR)) Set B(1)=sFL(1) ...Else For I=1:1:99 Kill B(100+I) If $L($P(sFL(1),D,I)) Set B(100+I)=$P(sFL(1),D,I) ..Else Set K=$P(B(1),D,3) ..If 'IsProj,$D(^KO1(UR)),$G(AD(13))'="FLOWORDADP" Do DETAIL^FLOWORD2(1) .Else Set:K'="," K="-" Quit ; CHKLEVT(ORDNr) New R,KLNr,OrdDat,KlantId,Klant,Dagen,WeekBut,Weken,OLNr,PRNr,Week Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D),R=^KOD(KLNr,"F",ORDNr,1),OrdDat=$P(R,D,2) Set Dagen=$H-$$INTDATE^vhDTyp(OrdDat) Do:Dagen>0 . Set KlantId=^KK1(KLNr),R=^KKL(KlantId,0),Klant=KLNr_" "_$P(R,D,2) . Set Weken=Dagen+6\7,WeekBut=Weken_$S(Weken=1:" week",1:" weken") . Set Dagen=$S(Dagen=1:"gisteren",1:Dagen_" dagen terug") . Set Answer = $$^vhTXTPOP("FLOWORD","CHKLEVT","",WeekBut,$$EXTNUM^vhDTyp(ORDNr,0,".",0),Klant,OrdDat,Dagen) . Quit:Answer="B" . Do:Answer="W" WijzigLeverDataLijnPerLijn^FLOWORD4(KLNr,ORDNr,1) . Do:Answer="A" ASAP^FLOWORD4(KLNr,ORDNr) . .;Set OLNr=100 .;For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do .;.Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),Week=$P(R,D,25) .;.Do KWNODE(KLNr,ORDNr,OLNr) .;.Set Week=$$EXTDATE^vhDTyp($$CALCDATE^vhDTyp($$INTDATE^vhDTyp(Week,"DW"),"W",Weken),"DW"),$P(R,D,25)=Week .;.Set ^KOD(KLNr,"F",ORDNr,OLNr)=R .;.Do SWNODE(KLNr,ORDNr,OLNr) Quit ; ; Test halffabrikaten bij verwijderen order of lijn CHKHF(ORDNr,OLNr,BackGrnd) New R,KLNr,PRNr,ChkHF,KortText,LEVNr,TOENr,TLNr,TLUNr Set OLNr=$G(OLNr),BackGrnd=$G(BackGrnd) Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) If OLNr Do ; Orderlijn .;Quit:'$$ISHALUX^FLOWCHK("O",ORDNr,OLNr) .Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),TOENr=$P(R,D,27),TLNr=$P(R,D,28) .Quit:'PRNr Quit:'TOENr Quit:'TLNr .Set R=^KPR(PRNr,0),KortTxt=$P(R,D) .Set LEVNr=$P($G(^KTO1(TOENr)),D),TLUNr="" .Set:LEVNr R=$G(^KTO(LEVNr,TOENr,TLNr)),TLUNr=$P(R,D,15) .If $D(^HADPR("F",TOENr_";"_TLUNr,"T")) Do ; Aan een toelevering gekoppelde lijn ..Set ChkHF=$S(BackGrnd:1,1:$$^vhTXTPOP("FLOWORD","CHKHFDELLINETOENR","",KortTxt,$$EXTNUM^vhDTyp(TOENr,0,".",0))) .Else If $D(^HADPR("F",TOENr_";"_TLUNr,"K")) Do ; Reeds produktieklaar ..Set ChkHF=$S(BackGrnd:1,1:$$^vhTXTPOP("FLOWORD","CHKHFDELLINEKLAAR","",KortTxt)) .If '$G(ChkHF) Set ChkHF=$D(ChkHF) .Else Set:'BackGrnd ChkHF='$$ASK^vhWACHTW("MANAGER","","",0) Else Do ; Volledig order .Set OLNr=100 .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Set ChkHF=$$CHKHF(ORDNr,OLNr,1) Quit:ChkHF .Do:$G(ChkHF) ..Set ChkHF=$$^vhTXTPOP("FLOWORD","CHKHFDELORD","",$$EXTNUM^vhDTyp(ORDNr,0,".",0)) ..If '$G(ChkHF) Set ChkHF=$D(ChkHF) ..Else Set ChkHF='$$ASK^vhWACHTW("MANAGER","","",0) Quit $G(ChkHF) ; ; Geeft de verzendwijze, indien op transport ook de transporteur VerzendWijze(ORDNr,Input,MaxLenVerzW) New R,KLNr,PostCode,VerzendWijze Set VerzendWijze=$G(Input),R=$G(B(1)),KLNr=$P(R,D,6) Set:'KLNr KLNr=$G(B(106)) If $G(ORDNr),$D(^KO1(ORDNr)) Set KLNr=$P(^KO1(ORDNr,"F"),D),R=^KOD(KLNr,"F",ORDNr,1) Set:'$D(Input) Input=$P(R,D,7) Set PostCode=$P(^KKL(^KK1(KLNr),0),D,6) Set VerzendWijze=$$SHOW^KLVERZW(PostCode,KLNr,,Input) Set:VerzendWijze="" VerzendWijze=$P(R,D,7) If $G(MaxLenVerzW),$L(VerzendWijze)>MaxLenVerzW Do . Set MaxLenVerzW=MaxLenVerzW-3 . For Set VerzendWijze=$P(VerzendWijze,",",1,$L(VerzendWijze,",")-1) Quit:$L(VerzendWijze)'>MaxLenVerzW . Set VerzendWijze=VerzendWijze_"..." Set $P(VerzendWijze,"#",2)=$P(VerzendWijze,"#"),TransportLink=$P(R,D,12) If $L(TransportLink) Set VerzendWijze=$P(VerzendWijze,"#")_"#"_$$TRANSPORT(ORDNr,2) Quit VerzendWijze ; ; Geeft de tranporteur indien op transport ; Output zie TRANSPORTEUR^TRANSP TRANSPORT(ORDNr,Output) New VervRef,Transport,KLNr,VervRef Set KLNr=$P(^KO1(ORDNr,"F"),D) Set VervRef=$P($P(^KOD(KLNr,"F",ORDNr,1),D,12),";") ;Set VervRef=$P($$TranspLink(ORDNr),";") Set:$L(VervRef) Transport=$$TRANSPORTEUR^TRANSP(VervRef,$G(Output)) Quit $G(Transport) ; TranspLink(ORDNr) New Obj,TransportLink Set Obj=##Class(Flow.Order.Hoofding).%OpenId(ORDNr) Set:$IsObject(Obj) TransportLink=Obj.TransportLink Quit $G(TransportLink) ; ; Geeft aan of een order op transport zit CHKTRANS(ORDNr,DontAsk) New R,Ok,KLNr,VervRef,GroepNr,TranspDate Set Ok=1,KLNr=$P(^KO1(ORDNr,"F"),D),R=^KOD(KLNr,"F",ORDNr,1) Set VervRef=$P($P(R,D,12),";"),GroepNr=$P($P(R,D,12),";",2) Do:VervRef .Set R=$G(^TRANSP("D",VervRef)) .Quit:R="" .Set TranspDate=$$EXTDATE^vhDTyp($P(R,D,10)) .Set Ok=$S($G(DontAsk):1,1:$$^vhTXTPOP("FLOWORD","TRANSP","",ORDNr,$$TRANSPORT(ORDNr,1),TranspDate)) .Set Ok=0 .Do:Ok ##Class(BL.Flow.Cons.TransportFlow).DeleteOrder(VervRef,GroepNr,ORDNr) Quit Ok ; ; Ophalen van de lijn met het spiegelproduct van een bepaald product MirrorLine(KLNr,ORDNr,PRNr) New OLNr,MirrorPRNr Set MirrorPRNr=$$GetMirror^PRODUKT(PRNr) Do:MirrorPRNr . Set OLNr=100 . For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Quit:$P(^KOD(KLNr,"F",ORDNr,OLNr),D,2)=MirrorPRNr Quit $G(OLNr) ;