#Include BL.Derde.Kennis.AutoRes #include BL.Derde.KlantSpecifiek #include BL.Derde.LevSpecifiek NieuweProductOrderlijn G VerwerkProduct ; MODULE REGISTREREN PRODUKTLIJNEN ORDERS (BEP. PROD.) T1 ;DIT IS EEN 8-PRODUKT IN EEN NORMAAL ORDER ! T2 ;WENST U HIERVAN EEN KLANTGEBONDEN ORDER TE MAKEN T3 ;.[] = ja [] = neen ; OpmMuntNietToegelaten S MSG="MUNT KLANT NIET TOEGELATEN VOOR "_UOU G ToonOpmerkingEnExit OpmMuntProductVeschillend S MSG="MUNT PRODUKT NIET GELIJK AAN MUNT "_UOU G ToonOpmerkingEnExit OpmProductInGebruik S MSG="PRODUKT IN GEBRUIK" G ToonOpmerkingEnExit OpmProductZonderMunt S MSG="GEEN MUNTKODE VOOR DIT PRODUKT" G ToonOpmerkingEnExit OpmToevoegenNietStock S MSG="Toevoegen van dit niet-stock product zonder praktische voorraad~met bouwstenen aan een gesloten order is niet mogelijk.~Gelieve hiertoe een nieuw order aan te maken." G PopOpmerking OpmGrootVerpakking S MSG="GEEN GROOTVERPAKKING VOOR DIT PRODUKT" G ToonOpmerkingEnExit OpmNormaalGeen8Producten S MSG="EEN NORMAAL ORDER MAG GEEN 8-PRODUKTEN BEVATTEN" G ToonOpmerkingEnExit OpmAfroepEnkelStock S MSG="EEN AFROEP ORDER MAG ENKEL STOCKPRODUKTEN BEVATTEN" G ToonOpmerkingEnExit OpmContractGeenStock S MSG="EEN CONTRACT ORDER MAG GEEN STOCKPRODUKTEN BEVATTEN" G ToonOpmerkingEnExit OpmKlantgebondenEnkel8Producten S MSG="EEN KLANTGEBONDEN ORDER KAN ENKEL 8-PRODUKTEN BEVATTEN" G ToonOpmerkingEnExit OpmNietStockZonderVoorraad S MSG="NIET-STOCK PRODUKT ZONDER PRAKTISCHE VOORRAAD -[] = hernemen" G ToonOpmerking OpmGeen7Producten S MSG="EEN ORDER MAG GEEN 7-PRODUKTEN BEVATTEN" G ToonOpmerkingEnExit OpmEnkelOrgalux S MSG="EEN ORGALUX ORDER MAG ENKEL ORGALUX-PRODUKTEN BEVATTEN" G ToonOpmerkingEnExit OpmGeenOrgalux S MSG="EEN NIET-ORGALUX ORDER MAG GEEN ORGALUX-PRODUKTEN BEVATTEN" G ToonOpmerkingEnExit ToonOpmerkingEnExit S SW12=1,FP=2401+F60 W @F,@F2," ",@F4,MSG," [] = ok ",@F5,@F0 R K G Exit ToonOpmerking S FP=2401+F60 W @F,@F2," ",@F4,MSG," [] = ok ",@F5,@F0 R K Q PopOpmerking Do WARN^vhTXTPOP(MSG,"") S K="" G Exit ; VerwerkProduct N BackGrnd,PraStock,VWTYP,ProdGeg,CorLevT,CIFPPL,Contract,WeekDag,WekenVH2Klant,Warn,MinLeverDag Do:$D(^ORDW("IO",ORDNr)) . Set Warn="Aandacht!`Order "_$$EXTNUM^vhLib.DataTypes(ORDNr,0,".T",0)_"is reeds verzonden naar het WMS." . Set Warn=Warn_"`De toegevoegde lijn(en) moet u afzonderlijk verwerken" . Set Warn=Warn_"`of het order eerst uit het WMS verwijderen en daarna" . Set Warn=Warn_"`als één geheel terug door sturen." . Do WARN^vhTXTPOP(Warn,"") I $D(Aantal),$D(Prijs),$D(Korting1),$D(Korting2),$D(LevTerm) S BackGrnd=1 E K Aantal,Prijs,Korting1,Korting2,LevTerm S BackGrnd=0 K A S SW25=1,SW12=0,Q15="^(""W 0.0""_UOR_UOD_$J(UR,6,0)_$J(UZ,3,0))" S X=@("^"_Q_UGL_"(KC,US,UR,1)") S WeekDag=$$EXTDATE^vhLib.DataTypes(,"DWN"),UOD=$TR($$EXTDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes($P(X,D,2)),"DS"),D,"") S UOR=$P("R\O",D,$P(X,D,17)+1),UVM=$P(X,D,18) S UAF=$P(X,D,22),UTYP=$P(X,D,25),VWTYP=$P(X,D,29) I 'UAF G OpmMuntNietToegelaten:'$$CHKMUNT^FLOW(UVM) I UTYP="L" S K="-" G Exit G SelectProduct:K="." I K?4.7N,$D(^KPR(K)) S PR=K G ZoekVervangProduct S K=K_" " I '$D(@("^"_Q_"PR1(K)")) S K=$$SELECT^PRODUKT6("","",K,"","NODO;NOKP",,,,KC,1) S:'K K="-" G Exit:K="-" S PR=K G ZoekVervangProduct S PR=$P(@("^"_Q_"PR1(K)"),D,1) G ZoekVervangProduct SelectProduct N CheckKs D ^Flow.SelecteerProduct G Exit:K="-" S CheckKs=1 ZoekVervangProduct I '$G(MoederB),'$G(LogNr) D .N PROld,VervangProd .S PROld=PR,(PR,K)=$$CheckVervangProduct^FLOWPROD(PR,KC,.VervangProd) .I 'PR,$G(VervangProd) S (PR,K)=$P(VervangProd,";") Set:$P(VervangProd,";",2) Mirror=$P(VervangProd,";",2) .K:PR'=PROld Prijs,Korting1,Korting2 I 'K S K="-" G Exit I UTYP="L" S K="-" G Exit I UTYP="T",'$D(^KPR(PR,15)) S K=$$^vhTXTPOP("FLOW","HFNODATA","",$P(^KPR(PR,0),D)) G:K=1 Exit S R=$P(^KPR(PR,0),D,3) I $L(R),R'?4.7N D G Exit:K="-" .N PROld .S PROld=PR,R="S K=$$GENERATE^"_R_"(KC,PR)" .X R .S PR=K S:K=PROld!'K K="-" S R=$P(^KPR(PR,0),D,23) I R="K",KC'=$$$KlantHalux S R=$P(^KPR(PR,0),D),R=$$^vhTXTPOP("FLOWORD","VERKKIND","",R) G Exit:'R I $E(R)="H",KC'=$$$KlantHalux S R=$P(^KPR(PR,0),D),R=$$^vhTXTPOP("FLOWORD","VERKHALFFABR","",R) G Exit:'R I '$L($G(EDIORDNr)) S R=##class(CHUI.Derde.Kennis.Kennis).KlantProductUnRead(KC,PR,$LB($$$adOrderVerwerkingIngave),1,"ORD",ORDNr) G Exit:R="ANNULEER" G TestOrgaluxIndienGesloten:UTYP="C"!(UTYP="A") G TestOrgaluxIndienGesloten:$G(Aantal)<0 AfnameContract If $L($P($G(ContrLns),U,2)) Set R=ContrLns Else Set R=$$Zoek^Flow.Order.ControleContracten($G(Aantal)),NoChkVp='$$ControleerVerpakking(R) Goto AfnameAfroep:R="",Exit:R="-" Set ContrLns=R If $P(ContrLns,U,2)["\TST" Do Goto TestOrgaluxIndienGesloten .If $L(ContrLns,"\TST")=2 Kill ContrLns,NoChkVp Quit .Set $P(ContrLns,U,1,2)=$P(ContrLns,U) If $G(CumContr),ContrLns'["\TST" Do .New I,ORDNr,OLNr,TotStock,Prijs .Set TotStock=0 .For I=2:1 Set R=$P(ContrLns,U,I) Quit:'R Do ..Set ORDNr=$P(R,D),OLNr=$P(R,D,2) ..If $P(^KOD(KC,"F",ORDNr,OLNr),D,27) Set $P(R,D,4)="KOM" ..Else Do ...Set $P(R,D,4)="STK",TotStock=TotStock+$P(R,D,3) ...Set Prijs=$P(^KOD(KC,"F",ORDNr,OLNr),D,6),ContrLns(Prijs)=$G(ContrLns(Prijs))+$P(R,D,3) ..Set $P(ContrLns,U,I)=R .Set ContrLns=ContrLns_";\\\TST" S SW12=1,ULSV=UL K UZ S Q15="^(""W 0.0""_UOR_UOD_$J(UR,6,0)_$J((UVN-100),3,0))" S (R,Contract)=$P(ContrLns,U,2),$P(ContrLns,U,1,2)=$P(ContrLns,U) K:$P(ContrLns,U,2)="" ContrLns,NoChkVp G Afname^Flow.Order.AfnameContract AfnameAfroep S R=$$Zoek^Flow.Order.ControleAfroepOrders() G TestOrgaluxIndienGesloten:R="",Exit:R="-" S SW12=1,ULSV=UL K UZ S Q15="^(""W 0.0""_UOR_UOD_$J(UR,6,0)_$J((UVN-100),3,0))" G Afname^Flow.Order.AfnameAfroepOrder TestOrgaluxIndienGesloten G LockProduct:'UAF N IsOrgal,OrgalPr,LAFA S IsOrgal=$$ISORGAL^FLOW("O",UR) S OrgalPr=$E($$SORTKEY^PRODUKT(PR,1),3,4)="OL" I IsOrgal,'OrgalPr G OpmEnkelOrgalux I 'IsOrgal,OrgalPr G OpmGeenOrgalux LockProduct L (@("^"_Q_UGL_"(KC,US,UR)"),@("^"_Q_"PR(PR)")):2 E G OpmProductInGebruik New Product,AantalInStocktoeleveringen #dim Product As DOM.PM.Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(PR) Set UA=0 Set X=@("^"_Q_"PR(PR,0)") Set PB = Product.GeefBTWCode() Set PY=$P(X,D,17) Set PC=Product.GeefKorttekst() Set PST=##class(BL.Legacy.Stock).GeefFysischeStockMinReservaties(PR) Set AantalInStocktoeleveringen = ##class(BL.Legacy.Stock).GeefAantalInStocktoeleveringen(PR) Set X=@("^"_Q_"PR(PR,1)") Set:KB<1 PB=0 Set UE=$P(X,D,12) Set PSN=$P(X,D,20) Set ULT="" G Exit:'$$IsCommAkt^PRODUKT2(PR,KC) Set UE="" ; Eeenheid op leeg omdat in ^KPR daar de controlestatus zit CW 11.02.09 S X=@("^"_Q_"PR(PR,2)"),PRE=$P(X,D,9),PID=Product.GeefIdentNr(),PraStock=##class(BL.Legacy.Stock).GeefPraktischeStock(PR) I 'PSN,UAF,PraStock<1,$P($O(^PRBS("BS",PR,"KIND")),".")="KIND" G OpmToevoegenNietStock I 'PSN,UAF,PraStock<1 D OpmNietStockZonderVoorraad G SelectProduct:K="-" I 'BackGrnd D ProductIdentificatie ;G OpmGeen7Producten:$E(PID)=7 Set IsToevoegingSpiegelProduct = $D(Mirror) I UTYP'="T",'$G(MoederB),'$L($G(EDIORDNr)) S R=$$CHKSOPR^FLOW(KC,PR,"order",BackGrnd,IsToevoegingSpiegelProduct) G Exit:'R I R>999 S PR=R G ZoekVervangProduct I KC'=$$$KlantHalux,$G(CheckKs),$$IsKSKlant(KC),'$$ISPROD^KS(PR),'$$ISHALUX^PRODUKT2(PR),$E($$SORTKEY^PRODUKT(PR),3,4)'="DE" G Exit:'$$TXTPOP^KS("NOKSPROD","",0,1) ;,Exit:'$$ASK^vhWACHTW("MANAGER",,,0) I $E(PID)=8&(UTYP="") D G Exit:K="-" I K="" S FP=2103 W @F,@F1 .I BackGrnd D ProductIdentificatie .S FP=2103 W @F,$P($T(T1),U,2) .I D_$$GETALG^DEFAULTS("KF0","8PRODKLANTGEB")_D[(D_KC_D) S K="." .E S R="K\22\3\"_$P($T(T2),U,2)_"\"""_$P($T(T3),U,2)_"""\1\\""-.""[K" D R0^cA100 .Q:"-"[K .K B S UTYP=$S(UTYP="":"K",1:""),B(1)=@("^"_Q_UGL_"(KC,US,UR,1)"),$P(B(1),D,25)=UTYP,^(1)=B(1) .S U2="",X=100 F S X=$O(@("^"_Q_UGL_"(0,US,X)")) Q:X'?.N S U2=^(X) I $P(U2,U,16)=125 Q .I U2="" K B Q .S (K,U3)=UTYP I $L($P(U2,U,8)) S U3="S U3="_$P(U2,U,8) X U3 .S FP=$P(U2,U,5)*100+$P(U2,U,6) W @F,$J("",$P(U2,U,9)),$J("",$P(U2,U,13)) .W @F,U3 .S U2="",X=100 F S X=$O(@("^"_Q_UGL_"(0,US,X)")) Q:X'?.N S U2=^(X) I $P(U2,U,16)="UR" Q .I U2="" K B Q .S FP=$P(U2,U,5)*100+$P(U2,U,6)+$L(UR) W @F," " .I $L(K) W @F,@FMTB,@FMTK,$P("\s\c\a\k\m\p\t",D,$F("SCAKMPT",K)),@FMTb,@FMTk .K B I $E(PID)=8,UTYP="" G OpmNormaalGeen8Producten I 'PSN,UTYP="A" G OpmAfroepEnkelStock ;I PSN,UTYP="C" G OpmContractGeenStock ;I $E(PID)'=8,UTYP="K" G OpmKlantgebondenEnkel8Producten S X=$N(@("^"_Q_"PR(PR,""J"")")) S X=^(X),PLL=$P(X,D,7),UMC=$P(X,D,17) G OpmGrootVerpakking:'$P(X,D,16),OpmProductZonderMunt:"I"[UMC I $L(UAF) G OpmMuntProductVeschillend:KV="MTL"&(UMC'=UVM) S CorLevT=0 S:'PSN CorLevT=$P(^KLE(^KL1($P(X,D)),2),D,16) S WekenVH2Klant=1 S:$P(X,D)=$$$LevAdditek WekenVH2Klant=0 ; Additek I WeekDag'=1,'PSN,PLL=1,$P(X,D)=$$$LevBlum,$E(PID)'=7 S PLL=2 S R=$$KLANTPR^KPRIJS(KC,PR) S UEP=$P(R,D,1),UMC=$P(R,D,2),(AFA,LAFA)=$P(R,D,3),PLP=$P(R,D,4),PK1=$P(R,D,5),PK2=$P(R,D,6),KKD=$P(R,D,7) S PKP=$P(R,D,8),UPAR=$P(R,D,9),USP=$P(R,D,10),AFE=$P(R,D,11),CIFPPL=$P(R,D,13) I $D(Prijs) Do .S:$L($P(Prijs,D,2)) USP=$P(Prijs,D,2),AFA=$E(USP),AFE=$P("1\100\1000",D,$F("EHM",AFA)-1) .S Prijs=$P(Prijs,D) .I $G(NoRecalc)="=" .E I KKN S:+Prijs'=+PLP Korting1=$J(1-(Prijs/PLP)*100,0,1),Korting2="" .E I $L(Prijs),+Prijs'=+UEP S Korting1=$J(1-(Prijs/PLP)*100,0,1),Korting2="" .S:$L(Prijs) UEP=Prijs S:$L(Korting1) PK1=Korting1 S:$L(Korting2) PK2=Korting2 Else Do G Exit:R="A" . New OffRef . S R=$$SelGeldigeOfferte^FLOWOFF3(KC,PR,UEP,UMC,AFA) . I $L(R),+UEP=+$P(R,D,4) Q . S OffRef=$P(R,D,8) . Q:OffRef="" . S R=@OffRef,UEP=$P(R,D,6),PK1=$P($P(R,D,7),"#"),PK2=$P($P(R,D,7),"#",2),USP=$P(R,D,21),NoRecalc="=" I '$G(NoChkPrs),"\C\P\"'[(D_$$PRIJSKL^KLANT(KC,PR)_D),'$$CHKPRIJS^KPRIJS(PR,PLP,UEP,AFE,UPAR,CIFPPL,$$BepaalWachtwoord(UTYP,UEP,CIFPPL),,60,120,$S(UTYP="M":"V",UTYP="P":"V",1:"ALV"),KC) G Exit S ULT=$$INTDATE^vhLib.DataTypes(%WK,"DW")+(CorLevT*7) D:'PSN .I 'PLL,WeekDag<3 ; Producten zonder levertermijn leveren zelfde week t.e.m. dinsdag .E S ULT=ULT+(PLL+WekenVH2Klant*7) S ULT=$$EXTDATE^vhLib.DataTypes(ULT,"DW") I $L($G(LevTerm)) S ULT=LevTerm K DefLevT E D:BackGrnd ProductIdentificatie S BackGrnd=0 I $D(DefLevT),$$INTDATE^vhLib.DataTypes(DefLevT,"DW")>$$INTDATE^vhLib.DataTypes(ULT,"DW") S ULT=DefLevT Set PLP = $J(PLP,1,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) Set UEP = $J(UEP,1,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) // Vraag de leverdatum, indien nog geen leverdatum vanop de moederbon gekregen, of // indien die niet gelijk is aan de vroegst mogelijke leverdatum volgens het leveradres. If $G(MBLevT),MBLevT'<$$CALCDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(ULT,"DW"),"W","FD") Set ULT=MBLevT I '$G(DefLeverDag) S DefLeverDag=$S(ULT?5N:ULT,1:$$GetLeverDagOrder^FLOW3(KC,UR,PR,,1)) Set MinLeverDag=$$GetLeverDag^FLOW3(KC,PR,,1) If $G(Aantal)'<0,ULT