WijzigOrderlijnInput G VerwerkInput ;MODULE WIJZIGEN ORDERLIJNEN PRODUKTEN - levering per dag (OPVRAGEN GEGEVENS) [ 11/27/2003 9:56 AM ] BerekenVerlies S K=1 I "\C\P\"'[(D_$$PRIJSKL^KLANT(KC,PR)_D) S K=$$CHKPRIJS^KPRIJS(PR,PLP,UEP,1,1,CIFP,$$BepaalWachtwoord^Flow.Order.NieuweProductOrderlijn(UTYP,UEP,CIFP),2452,60,120,$S(UTYP="M":"V",UTYP="P":"V",1:"ALV"),KC) S K=$P("-\",D,K+1) I UEP'PPS G GeefAantal Q BepaalBestelimpuls N %SC,Impuls,MinAfn D NIEUW^vhScherm("KPBI","","","","","",3) S K=$S('%SC:"-",'MinAfn:Impuls,UA#MinAfn:"-",1:Impuls) Q C1 S FP=2454 W @F,@F2,"[] = ",$$EXTDATE^vhLib.DataTypes(ULT) Q C2 S FP=2454 W @F,@F2,"of kort% [] = ok" Q C3 S FP=2454 W @F,@F2,"[] = ",$$EXTDATE^vhLib.DataTypes(ULTT) Q C4 S FP=2454 W @F,@F2,"[] = ",+UA Q Q IsKSKlant(KLNr) New KlantID #dim KlantID As DOM.VKP.VanHoeckeKlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) Quit '(##class(DOM.DomeinContext).Instance().GeefKlantTypeAPI().IsIndustriePoolKlant(KlantID)) VerwerkInput N KlOLNr,Faktor,PERSTUK,OldAant,OLUNr,MirrorLine,UitVerkoop Set UitVerkoop=$P(^KPR(PR,0),D,6) Set:UitVerkoop>$H UitVerkoop="" S OldAant=$P(U2,D,3),OLUNr=$P(U2,D,15),U26=$P(U2,D,26),KlOLNr=$P(U2,D,35),Faktor=$P(U2,D,36) S:'Faktor Faktor=1 S UEPS=UEP,PK1S=PK1,PK2S=PK2 G Contract29:"LBW"'[SWLPA,Contract:SWLPA="B" I '$L(ULTT) S K=ULT,ULTT=ULT IngaveLeverdag S K=$G(AutoInp) I K="" Do WijzigLeverData^FLOWORD4(KC,UR,,$LB(UVN),.lbResult) Set K = $LG($LG(lbResult,1),2) G Exit:K=",",Exit:K="-" I K?5N S ULT=K E S:$L(K) ULT=%INT I 'PSN,$P(U2,D,27),K?2N1"/"2N D I 'OK G IngaveLeverdag:'$L($G(AutoInp)) S K=ULT .S LLW=$$INTDATE^vhLib.DataTypes($P(^KTO($P(^KTO1($P(U2,D,27)),D),$P(U2,D,27),$P($P(U2,D,28),";")),D,25),"DW") .S KLW=$$INTDATE^vhLib.DataTypes(K,"DW") .S OK=$S(KLW<$$NEXTWEEK(LLW):0,1:1) Contract I UTYP="C" S R="K\23\54\MAX LEV\C3\8" D Input G IngaveLeverdag:K="-",Exit:K="," I $L(K) S ULTT=K D VALDATE^vhLib.DataTypes(K,"DK") G Contract:'%TC S (K,ULTT)=%INT I UTYP="C",$L(ULTT) S K=ULT,ULT=ULTT,ULTT=K I SWLPA="W" S FP=2313+F60 W @F," ",@F,$$EXTDATE^vhLib.DataTypes(ULT) Contract29 F FP=2339,2439 W @F,@F2 G IngaveAantal:"PW"'[SWLPA IngaveVerkoopprijs New AantalInputCharacters #dim AantalInputCharacters As %Integer = 13 S R="K\23\54\VERK PR\C2\"_AantalInputCharacters_"\\" D Input I $E(K,$L(K))="%" G IngaveVerkoopprijs:+K>100,IngaveVerkoopprijs:'(+K?.N!(+K?.N1"."1N)!(+K?1"-".N)!(+K?1"-".N1"."1N)) E I K'="-",K'="",K'?.N,K'?.N1"."1.6N G IngaveVerkoopprijs G Exit:K="-"&(SWLPA="P"),VerwerkInput:K="-" I K="," S K="-" G Exit IngaveVerkoopprijs31 G IngaveAantal:'$L(K) S (PK1,PK2)="" I K["%" S UEP=PLP*(100-K)/100 S UEP=$J(UEP,1,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()),PK1=+K G IngaveVerkoopprijs312 S UEP=K S:PLP PK1=1-(UEP/PLP)*100 S UEP=$J(UEP,1,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) IngaveVerkoopprijs312 D BerekenVerlies I K="-" S UEP=UEPS,PK1=PK1S,PK2=PK2S G Contract29 S FP=2164 W:SWLPA="W" @F,@F2 I PK1 W:SWLPA="W" $J(PK1,4,1)," %" I 'PLP,UEP S U26="*" I SWLPA="W" S FP=2264 W @F,@F2,UEP," ",UMC,"/",AFA IngaveAantal S UA=$P(U2,D,3) G IngaveAantal35:"AW"'[SWLPA IngaveAantal33 D GeefAantal G Exit:K="-"&(SWLPA="A"),Contract29:K="-",Exit:K=",",IngaveAantal35:K="" S UA=K,PERSTUK=$P(X,D,13),PGV=$P(X,D,16) G IngaveAantal35:'PGV S PNV=$P(X,D,15),PKV=$P(X,D,14) S:'PNV PNV=PGV S:'PKV PKV=PNV G IngaveAantal35:PERSTUK=1,IngaveAantal35:'(UA#PGV),IngaveAantal35:'(UA#PGV#PNV) S GR=UA#PGV#PNV#PKV G IngaveAantal35:'GR I GR,PERSTUK=-1 G IngaveAantal35:$$WWNooitPerStuk^FLOW2(PR) S UA=$P(U2,D,3) G IngaveAantal33 S OGR=UA-GR,BGR=OGR+PKV,FP=2339 W @F,OGR S FP=2354 W @F,@F2,"AANTAL : ",UA S FP=2439 W @F,BGR D GeefAantal G Exit:K="-"&(SWLPA="A"),Contract29:K="-",Exit:K="," I $L(K) S UA=K IngaveAantal35 I UTYP="C","BW"[SWLPA D BepaalBestelimpuls G Exit:K="-"&(SWLPA="B"),IngaveAantal:K="-",Exit:K="," G WijzigToelevering:'$P(KlOLNr,".",2) I UA#Faktor G WijzigToelevering:$$^vhTXTPOP("FLOWORD","FAKTEDIGR","",UA,Faktor,""""_PC_"""") S K="-" G Exit I SWLPA["A",UA'=$P(U2,D,3),$$^vhTXTPOP("FLOWORD","MODEDIGR","","het aantal",PC,$E(PC,1,10)) D G Exit .D MODEDIGR^FLOWORD6(KC,UR,UVN,UA,ULT),WL^PROC,^KFTOT I SWLPA["L",ULT'=$P(U2,D,25),$$^vhTXTPOP("FLOWORD","MODEDIGR","","de levertermijn",PC,$E(PC,1,10)) D G Exit .D MODEDIGR^FLOWORD6(KC,UR,UVN,,ULT),WL^PROC WijzigToelevering K LC S TR=$P(U2,D,27),TUZ=$P($P(U2,D,28),";") I TR D .S LC=$P(@("^"_Q_"TO1(TR)"),D,1),X=@("^"_Q_"TO(LC,TR,1)") .S UTD=$TR($$EXTDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes($P(X,D,2)),"DS"),D,"") D KWNODE^FLOWORD(KC,UR,UVN) G WijzigLeverweekToelevering:UA=$P(U2,D,3) G WijzigLeverweekToelevering:'TR WijzigAantalToelevering L (@("^"_Q_UGL_"(KC,US,UR)"),@("^"_Q_"TO(LC,TR)")):2 E S FP=2403+F60 W @F,@F2,@F4,"TOELEVERING "_TR_" IS IN GEBRUIK [] = OK ",@F5,@F0 R K G WijzigAantalToelevering Do KWNODE^FLOWTOE(LC,TR,TUZ) S X=@("^"_Q_"TO(LC,TR,TUZ)"),^(TUZ)=$P(X,D,1,2)_D_UA_D_$P(X,D,4,8)_D_($J($P(X,D,9)/$P(X,D,3)*UA,0,2))_D_($J($P(X,D,10)/$P(X,D,3)*UA,0,2))_D_$P(X,D,11,15)_D_($J($P(X,D,16)/$P(X,D,3)*UA,0,2))_D_$P(X,D,17,99) Do SWNODE^FLOWTOE(LC,TR,TUZ) Do ProductToeleveringLijnGewijzigd^FLOWTOE2(LC,TR,TUZ,##class(DOM.AKP.enu.ProductToeleveringLijnWijzigingType).Aantal()) I $D(@("^"_Q_"TO(0,3)")) S TRLC=TR D @^(3) WijzigLeverweekToelevering G WijzigOrderlijn:'TR!(ULT=$P(U2,D,25)) S:'$D(LC) LC=$P(@("^"_Q_"TO1(TR)"),D,1) I '$D(@("^"_Q_"TOK(LC,TR,TUZ)")) S X=$P(@("^"_Q_"TO(LC,TR,TUZ)"),D,25),@("^"_Q_"TOK(LC,TR,TUZ)")=X_D_X_D_0_D_UR_D_UVN_D WijzigOrderlijn S UN=$P(U2,D,9) S:KV="MTL" UN=$J(UN*UPAR/LPAR,1,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) S UTOT=UTOT-UN,X=@("^"_Q_UGL_"(KC,US,UR,1)"),UN=$J(UEP/AFE*UA,1,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) I KKN S:PLP UEP=$P(U2,D,6) S UN=$J(UEP*(100-PK1)/100*(100-PK2)/100*UA/AFE,1,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) S UBE=$J(UEP/AFE*UA,1,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()),UK="" S:PK1 UK=$J(PK1,4,1) S:PK2 UK=UK_" "_$J(PK2,4,1) S:$D(OspWk) ULTT=OspWk S:U26="" U26=$$U26(KC,PR,UEP,UA,ULT,SWLPA) S R=@("^"_Q_UGL_"(KC,US,UR,UVN)") If $P(R,D,3)>0,UA'>0 Do ProductOrderLijnAnnulatie^FLOWORD2(KC, UR, UVN) If $P(R,D,3)'>0,UA>0 Do ProductOrderLijnAnnulatie^FLOWORD2(KC, UR, UVN) S U2=$P(U2,D,1,2)_D_UA_D_$P(U2,D,4,5)_D_UEP_D_PK1_"#"_PK2_D_$P(U2,D,8)_D_UN_D_UN_D_$P(U2,D,11,15)_D_UBE_D_$P(U2,D,17,24)_D_ULT_D_U26_D_$P(U2,D,27,28)_D_ULTT_D_$P(U2,D,30,99) S @("^"_Q_UGL_"(KC,US,UR,UVN)")=U2 D SWNODE^FLOWORD(KC,UR,UVN) If $P(R,D,3)>0,UA>0 Do ProductOrderLijnWijzigingen(KC, UR, UVN, ($P(R,D,3)'=UA), ($P(R,D,6)'=UEP), ($P(R,D,25)'=ULT)) If $P(R,D,3)<0,UA<0 Do ProductOrderLijnWijzigingen(KC, UR, UVN, ($P(R,D,3)'=UA), ($P(R,D,6)'=UEP), ($P(R,D,25)'=ULT)) If $P(R,D,3)>0,UA'>0 Do ProductOrderLijnGemaakt^FLOWORD2(KC, UR, UVN) If $P(R,D,3)'>0,UA>0 Do ProductOrderLijnGemaakt^FLOWORD2(KC, UR, UVN) Do:OldAant'=UA . New OldMirrorAantal . Set MirrorLine=$$MirrorLine^FLOWORD(KC,UR,PR) . Quit:'MirrorLine . Quit:'$$ModMirror^PRODUKT(PR,UA) . Do KWNODE^FLOWORD(KC,UR,MirrorLine) . Set R=^KOD(KC,"F",UR,MirrorLine),OldMirrorAantal=$P(R,D,3) . If OldMirrorAantal>0,UA'>0 Do ProductOrderLijnAnnulatie^FLOWORD2(KC, UR, MirrorLine) . If OldMirrorAantal'>0,UA>0 Do ProductOrderLijnAnnulatie^FLOWORD2(KC, UR, MirrorLine) . Set UTOT=UTOT-$P(R,D,9) . Set $P(R,D,9)=$J($P(R,D,9)/$P(R,D,3)*UA,0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) . Set $P(R,D,10)=$J($P(R,D,10)/$P(R,D,3)*UA,0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) . Set $P(R,D,16)=$J($P(R,D,16)/$P(R,D,3)*UA,0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) . Set $P(R,D,3)=UA,^KOD(KC,"F",UR,MirrorLine)=R . Set UTOT=UTOT+$P(R,D,9) . Do SWNODE^FLOWORD(KC,UR,MirrorLine),WL^PROC . If OldMirrorAantal>0,UA>0 Do ProductOrderLijnGewijzigd^FLOWORD2(KC,UR,MirrorLine,##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Aantal()) . If OldMirrorAantal<0,UA<0 Do ProductOrderLijnGewijzigd^FLOWORD2(KC,UR,MirrorLine,##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Aantal()) . If OldMirrorAantal>0,UA'>0 Do ProductOrderLijnGemaakt^FLOWORD2(KC, UR, MirrorLine) . If OldMirrorAantal'>0,UA>0 Do ProductOrderLijnGemaakt^FLOWORD2(KC, UR, MirrorLine) S:KV="MTL" UN=$J(UN*UPAR/LPAR,1,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) S UTOT=UTOT+UN D SHOWTOT^KFTOT(UTOT) I OldAant'=UA,$$IsActiefOrder^HADOPV(UR,OLUNr) D ModOrderMailToHalux^FLOWORD3("MA",KC,UR,TR,PR,OldAant,UA) Exit S:K="," K="-" K LC,TR,TUZ,GR,BGR,OGR,AFA,AFE,AFR,AFRR,UMC,UPAR,MSG,PST,PPS,PC,PR,PLP,CIFP,PID,PRE,PSN,PY,PK1,PK2,PK1S,PK2S,PGV,PVN,PKV,S,UTD K Q15,Q16,UA,UE,UK,UEP,UEPS,UBE,UOD,UOR,ULT,ULTT,U26,X,SWLPA,TRLC,UTYP,%TC,%INT,%EXT,OK,LLW,KLW,OspWk L @("^"_Q_UGL_"(KC,US,UR)") Q ; NEXTWEEK(LevWeek) New NextWeek F D Q:'NextWeek .S NextWeek=1 .For I=LevWeek-2:1:LevWeek+2 I '$D(@("^"_Q_"BA(""VP"",I)")) S NextWeek=0 Q .S:NextWeek LevWeek=LevWeek+7 Q LevWeek ; DEFAULT(K,lbPRNrs,Text,WzgBeloofd,DefLeverdag) New %TC,%INT,%EXT,lbLeverdagen,Leverdag,lbExtraButtons New DatumVereist Set Text=$G(Text,"Voor alle lijnen") Set WzgBeloofd = $G(WzgBeloofd,0) // WzgBeloofd --> staat op indien beloofd wordt gewijzigd If WzgBeloofd Set lbExtraButtons = $LB($LB("","Geen belofte meer")) Else Set lbExtraButtons = $LB($LB("Asap","Zo snel mogelijk")) Set lbExtraButtons = $G(lbExtraButtons) Set DatumVereist = 'WzgBeloofd ; Leverdag If K="L" Do Quit K . Set lbLeverdagen=$$GetLeverDagen^FLOWORD5(KLNr,ORDNr) . Set lbPRNrs=$G(lbPRNrs,$$GetPRNrs^FLOWORD5(KLNr,ORDNr)) . Set (DefLeverdag,K)=$G(DefLeverdag) . Set:DefLeverdag="" (DefLeverdag,K)=$$VroegstMogelijkeLeverDag^FLOW3(KLNr,lbPRNrs) . Set:DefLeverdag K=$$GetLeverDag^FLOW3(KLNr,,DefLeverdag,,lbLeverdagen,Text,lbExtraButtons) . Quit:K="Asap" . Do STORE^vhTERMINA() . Do:K="?" . . Set Leverdag=$$EXTDATE^vhLib.DataTypes(DefLeverdag) . . For Do Quit:%TC . . . Set K=$$ASKL^vhINP("FLOWORD","LEVERDAG"),%TC=1 . . . Quit:((WzgBeloofd)&&(K="")) . . . Do VALDATE^vhLib.DataTypes(K,"DK",$H) . . . Do:K . . . . If '$$ISARBDAG^vhRtn2(%INT),'$$^vhTXTPOP("FLOW","NOARBDAG","",%EXT) Set %TC=0 . . . . Else Set K=%INT . Set K=$S(K:K,1:$S(DatumVereist:"-",1:"")) . If ('WzgBeloofd),(K'="-"),$$IsBeloofd^FLOWORD4(ORDNr,KLNr),(K'=$$GetBeloofdeDatumInt^FLOWORD4(ORDNr,KLNr)),('$$^vhTXTPOP("FLOW","BELOOFD","",$$EXTDATE^vhLib.DataTypes(K,"DK"))) S K="-" . Do REFRESH^vhTERMINA() Quit "-" ; U26(KLNr,PRNr,VerkPr,Aantal,LevTerm,ModItem) New R,U26,BrutoPr,KlantID,Klant #dim KlantID As DOM.VKP.VanHoeckeKlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) #dim Klant As DOM.VKP.Klant = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefKlant(KlantID) If ModItem'="P",$$IsKSKlant(KLNr),$$ISPROD^KS(PRNr) Set U26="" Else If ModItem'="P",$$HeeftUitz^KORTING(KLNr,PRNr,"N") Set U26="" Else Do .If '$D(KlMunt)!'$D(IsHandel) New KlMunt,IsHandel Do INITKL .Set R=^KOD(KLNr,"F",ORDNr,1),OrdDat=$P(R,D,2),BrutoPr=$P(R,D,27) .Set R=$$KORTPC^KORTING(KLNr,PRNr,"N",OrdDat,Aantal,LevTerm) .Set Korting1=$P(R,D),Korting2=$P(R,D,2) .Set R=$$PROD^KPRIJS(PRNr,Korting1,Korting2,KlMunt,BrutoPr,IsHandel,,,,,Klant.GeefBusinessType()) .If 'BrutoPr,+$P(R,D)=+VerkPr Set U26="" .Else If BrutoPr,+$P(R,D,4)=+VerkPr Set U26="" .Else Set U26="*" Quit U26 ; INITKL New sFL Do FETCHKL^UTILI(KLNr,"sFL") Set KlMunt=$P(sFL(0),D,11) If KlMunt="" Set KlMunt=$$FADEF^vhRtn1() Set IsHandel=$$IsHandel^KLANT5(KLNr) Quit Input S R7="K'[D&(K'?.E1C.E)" S:$P(R,D,8)'="" R7=R7_"&("_$P(R,D,8)_")" S:$P(R,D,7)'="" R7=R7_"&("_$P($T(@$P(R,D,7))," ",2,99)_")" S R2=$P(R,D,2),R3=$P(R,D,3),R4=$P(R,D,4),R5=$P(R,D,5),R6=$P(R,D,6) S R0=$L(R4)+R3+3 S FP=R2*100+R3+F60 W @F W:R3<4 @F1 W @F2,R4," : " I R5'="" W:R5["""" !,?2,@R5 D:R5'["""" @R5 InputC S FP=R2*100+R0+F60 W @F,@F2 W $E("........................................",1,R6),@F,@F0 R K W @F2 I $L(K)'>R6,@R7 S @$P(R,D,1)=K E G InputC S FP=$P(R,D,9)*100+($P(R,D,10)*1) I FP W @F,$J("",R6),@F,K K R,R0,R2,R3,R4,R5,R6,R7 Q ; Event bij het wijzigen van een orderlijn ProductOrderLijnWijzigingen(KlantID, OrderID, OrderLijnID, WijzigAantal, WijzigPrijs, WijzigLeverdatum) New WijzigingTypes Set WijzigingTypes = ##class(DOM.VKP.impl.ProductOrderLijnWijzigingTypes).%New() Do:$G(WijzigAantal) WijzigingTypes.Insert(##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Aantal()) Do:$G(WijzigPrijs) WijzigingTypes.Insert(##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Prijs()) Do:$G(WijzigLeverdatum) WijzigingTypes.Insert(##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Leverdatum()) If (WijzigingTypes.Count() > 0) { Do ProductOrderLijnWijzigingen^FLOWORD2(KlantID, OrderID, OrderLijnID, WijzigingTypes) } Quit