ORDERT ;Order routines [ 04/23/2002 10:21 AM ] d ^cA604 w $$CHECK(4423,1385,25) q ;Aantal : Aantal gewenste stuks ;Week : Leverweek (optioneel) ;Test : Lijst van karakters waarop getest moet worden, volgorde is belangrijk ; C=Contract,A=Afroep,V=Verpakking,B=minBestelhoeveelheid, ; K=Klantgebonden,W=Week,P=Prijsverschil,N=Nieuw produkt,S=Stock ; H=NonAktief,F=Offerte,D=Dynamische stock ;Return : Welke soort waarde wordt teruggeven. ; K=Kodes,S=Korte tekst,L=Lange tekst ; L=Lange tekst geeft maar een probleem,Kode en Korte geeft meerdere CHECK(PRNr,KLNr,Aantal,Week,Test,Return) New I,Key,Probl,W,ORDNr,RecJ,CAantal If '$L($G(Test)) Set Test="COAFVBKPNSDH"_$S($L($G(Week)):"W",1:"") If '$L($G(Return)) Set Return="L" Set (RecJ,Probl)="" Set Key=$O(^KPR(PRNr,"J")) Set:$E(Key)="J" RecJ=^(Key) For I=1:1:$L(Test) Do @("CHECK"_$E(Test,I)) Quit:Return="L"&$L(Probl) Quit:Probl="" "" Quit:Return="K" Probl Quit:Return="L" $P($T(@("TC"_Probl)),";",3) Set Return="" For I=1:1:$L(Probl) Set Return=Return_","_$P($T(@("TC"_$E(Probl,I))),";",2) Quit $E(Return,2,99) CHECKC ; Contractorders Set W="W" For Set W=$O(^KPR(PRNr,W)) Quit:$E(W)'="W" Do Quit:Probl["C" .Quit:$E(W,9)'="R" .Set ORDNr=$E(W,18,23) .Quit:'$D(^KOD(KLNr,"F",ORDNr)) .Quit:$P(^KOD(KLNr,"F",ORDNr,1),D,25)'="C" .Set Probl=Probl_"C" Quit CHECKO ; Contractorders aantal Quit:'Aantal Set W="W",CAantal=0 For Set W=$O(^KPR(PRNr,W)) Quit:$E(W)'="W" Do .Quit:$E(W,9)'="R" .Set ORDNr=$E(W,18,23),OLNr=$TR($E(W,24,26)," ","")+100 .Quit:'$D(^KOD(KLNr,"F",ORDNr)) .Quit:$P(^KOD(KLNr,"F",ORDNr,1),D,25)'="C" .Set CAantal=CAantal+$P(^KOD(KLNr,"F",ORDNr,OLNr),D,3) If CAantal,Aantal>CAantal Set Probl=Probl_"O" Quit CHECKA ; Afroep Set W="W" For Set W=$O(^KPR(PRNr,W)) Quit:$E(W)'="W" Do Quit:Probl["A" .Quit:$E(W,9)'="R" .Set ORDNr=$E(W,18,23) .Quit:'$D(^KOD(KLNr,"F",ORDNr)) .Quit:$P(^KOD(KLNr,"F",ORDNr,1),D,25)'="A" .Set Probl=Probl_"A" Quit CHECKF ; Offertes prijsverschil Set OffNr="",LijnNr="" For Set OffNr=$O(^KOFKLP(PRNr,OffNr)) Quit:OffNr="" Do .For Set LijnNr=$O(^KOFKLP(PRNr,OffNr,LijnNr)) Quit:LijnNr="" Do ..Quit:$P(^KOFKLP(PRNr,OffNr,LijnNr),D,1)'=KLNr ..If $P($G(^KOFKL(KLNr,"F",OffNr,LijnNr)),D,2)'=PRNr Kill ^KOFKLP(PRNr,OffNr,LijnNr) Quit ; Offertelijn bestaat niet meer ..If $P(^KOFKL(KLNr,"F",OffNr,1),D,16) Quit:$$INTDATE^vhDTyp($P(^KOFKL(KLNr,"F",OffNr,1),D,16),"DK")+10<$H ; Geldigheidsdatum 10 dagen ..Else Quit:$$INTDATE^vhDTyp($P(^KOFKL(KLNr,"F",OffNr,1),D,2),"DK")+92<$H ; Kreatiedatum + 3 maanden ..Set PrijsO=$P(^KOFKL(KLNr,"F",OffNr,LijnNr),D,6) ..Set PrijsH=$P($$KLANTPR^KPRIJS(KLNr,PRNr),D,1) ..Set:+PrijsO'=+PrijsH Probl=Probl_"F",LijnNr="Z",OffNr="Z" Quit CHECKV ; Verpakking New Test Quit:'Aantal Quit:'$L(RecJ) Quit:$P(RecJ,D,13)=1 Set Test=Aantal#$P(RecJ,D,16) Set:$P(RecJ,D,15) Test=Aantal#$P(RecJ,D,15) Set:$P(RecJ,D,14) Test=Aantal#$P(RecJ,D,14) Set:Test Probl=Probl_"V" Quit CHECKB ; minBestelhoeveelheid Quit:'Aantal Quit:'$L(RecJ) Quit:$P(^KPR(PRNr,1),D,20) Quit:$$CHECK(PRNr,KLNr,Aantal,,"C","K")="C" Set:Aantal<$P(RecJ,D,6) Probl=Probl_"B" Quit CHECKH ; NON-Aktief New VKP Quit:'$P(^KPR(PRNr,1),D,25) Set Probl=Probl_"H" Quit CHECKN ;Nieuw Set:'$D(^KSTKL(KLNr,PRNr)) Probl=Probl_"N" Quit CHECKP ;Prijsverschil Quit:'$D(^KSTKL(KLNr,PRNr,0)) Quit:$$ISKLANT^KS(KLNr) Set P1=+$P(^KSTKL(KLNr,PRNr,0),D,2) Set P2=$$KLANTPR^KPRIJS(KLNr,PRNr) Set:$S(P1>+P2:P1-P2,1:P2-P1)>$S($$MUNT^vhRtn1($P(P2,D,2),1)="BEF":1,1:.1) Probl=Probl_"P" Quit CHECKK ; Klantgebonden Quit:Probl["C" Set:$E($P(^KPR(PRNr,2),D,25))="8" Probl=Probl_"K" Quit CHECKS ;Stock (Fysisch en praktisch) Quit:'Aantal Quit:'$P(^KPR(PRNr,1),D,20) If Aantal>$$GETSTOCK^PRODUKT4(PRNr,"F") Set Probl=Probl_"S" Quit ;If Aantal'<$$GETSTOCK^PRODUKT4(PRNr,"P") Set Probl=Probl_"Q" ; Pracktische stock is vervangen door Dynamische stock Quit CHECKD ;Dynamische stock (Theoretisch) New R,GewGemWv,LevTerm,BufferW,Week Quit:'$P(^KPR(PRNr,1),D,20) ; Niet voor NIET STOCK Set R=$O(^KPR(PRNr,"J")) Quit:$E(R)'="J" Set R=^KPR(PRNr,R),LevTerm=$P(R,D,7),R=^KPR(PRNr,1),GewGemWv=$P(R,D,21),BufferW=$P(R,D,17) Set Week=$$EXTDATE^vhDTyp(LevTerm+BufferW*7+$H,"DW") If GewGemWv*(LevTerm+BufferW)'<($$DYNSTOCK^PRODUKT4(PRNr,"T",Week)-Aantal) Set Probl=Probl_"D" Quit TCC ;Contract;Produkt aanwezig in contract order TCO ;#>Contracten;Onvoldoende aantal in contracten TCA ;Afroep;Produkt aanwezig in afroep order TCF ;Offerte;Prijsverschil tov. offerte TCV ;Verpakking;Aantal geen veelvoud van de verpakking TCB ;MinBestel;Aantal kleiner dan de minimumbestelhoeveelheid TCK ;Klantgebonden;Dit is een klantgebonden produkt TCP ;Prijsverschil;Huidige prijs verschilt met laatste aankoop TCN ;Nieuw;Nieuw produkt voor deze klant TCW ;Leverweek;Leverweek te klein TCS ;FysStock;Onvoldoende fysische stock TCQ ;PraktStock;Onvoldoende praktische stock TCD ;TheoStock(Dyn);Onvoldoende dynamisch theoretische stock TCH ;NON-Aktief;NON-Aktief