FLOWPROD ;Toelevering, offerte, order, bon (algemene productroutine) [ 12/08/2003 11:19 AM ] ; CheckVervangProduct(PRNr,KLNr,VervangProd) New I,R,LD,Producten,VervangProduct,Count,VervPRNr,Datum,Aantal,Input Set VervangProduct=##class(BL.Prod.Search).GetVervangProductIfFirstTime(PRNr,KLNr) Do:$LL(VervangProduct) . Do STORE^vhTERMINA() . Set Count=0 . For I=1:1:$LL(VervangProduct) Do . . Set R=$LI(VervangProduct,I),VervPRNr=$LI(R),Datum=$LI(R,2),Aantal=$LI(R,3) . . Set Count=Count+1,Producten(Count)=D_VervPRNr_D_Datum_D_Aantal . Do INIT^vhLIST("FLOW","NEWPROD",.LD) . Set R=LD("POS"),$P(R,";")=$P(R,";")-(Count\2),$P(R,";",3)=$P(R,";")+Count-1,LD("POS")=R . Do WRITE^vhLIST(.LD) . For Set Input=$$SCROLL^vhLIST(.LD) Do Quit:Input="-" Quit:Input="ENTER" . . If Input="-" Set PRNr="" . . Else If Input=" " Set $P(Producten(LD("SELECT")),D)='$P(Producten(LD("SELECT")),D) Do LINE^vhLIST(.LD,LD("SELECT")) . . Else If Input="ENTER" Do . . . Set VervangProd="" . . . For I=1:1 Quit:'$D(Producten(I)) Set:$P(Producten(I),D) VervangProd=VervangProd_";"_$P(Producten(I),D,2) . . . Set $E(VervangProd)="" . . . If VervangProd="" Kill VervangProd . . . Else Set PRNr="" . Do REFRESH^vhTERMINA() Quit PRNr ; Controle uitverkoop bij orderingave ; het aantal uitverkocht mag de praktische voorraad niet overschrijden --> melding gebruiker ; indien alles uitverkocht mail naar stockbeheerder CheckUitVerkoop(ORDNr) New R,KLNr,OLNr,PRNr,Aantal,UitVerkoop,PraStock,Mail,SortKey,Count,LD Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D),OLNr=100 For { Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3) Continue:'PRNr Set UitVerkoop=$P(^KPR(PRNr,0),D,6) Continue:'UitVerkoop Continue:UitVerkoop>$H ; Uitverkoop nog niet gestart Set PraStock=$$GETSTOCK^PRODUKT4(PRNr,"P")+Aantal ; zichzelf terug bijtellen Continue:AantalPraStock Set Count=Count+1,UitVerkoop(Count)=Mail(SortKey) } If $D(UitVerkoop) { Set UitVerkoop="Van Volgend"_$S(Count=1:"",1:"e")_" product"_$S(Count=1:"",1:"en")_" in uitverkoop is het\gevraagde aantal groter dan de praktische stock." Do STORE^vhTERMINA() Do INIT^vhLIST("FLOW","CHKUITVERKOOP",.LD) Set R=LD("POS") Set $P(R,";")=$P(R,";")-(Count\2) Set $P(R,";",3)=$P(R,";",3)+Count-(Count\2) Set LD("POS")=R Set $P(LD("SET"),"`")=R Do WRITE^vhLIST(.LD),SCROLL^vhLIST(.LD) Do REFRESH^vhTERMINA() } ; Mail uitverkoop Kill UitVerkoop Set SortKey="",Count=0 For { Set SortKey=$O(Mail(SortKey)) Quit:SortKey="" Set R=Mail(SortKey),Aantal=$P(R,D,2),PraStock=$P(R,D,3) Set Count=Count+1,UitVerkoop(Count)=Mail(SortKey) } If $D(UitVerkoop) { New From,To,Subject,strmBody,Status,RerouteTo Set From=$$USERNAME^vhUSER(,"@") Set To=$$USERNAME^vhUSER(##class(TECH.Config.ConfigMgr).Instance().GetString("FLOWPROD_UitverkoopMailTo"),"@",1) Set RerouteTo = ##class(TECH.Config.ConfigMgr).Instance().GetString("FLOWPROD_RerouteUitverkoopMailTo") Set:(RerouteTo'="") To=RerouteTo Set Subject="Poging tot uitverkoop" Set strmBody=$$GetHTML(.UitVerkoop,KLNr,ORDNr) Set Status=$$SendMiniMail^vhLib(From,To,Subject,strmBody,1,1) } } Quit GetHTML(UitVerkoop,KLNr,ORDNr) New R,strmBody,Count,PRNr,Aantal,PraStock #define fmtBeginHtml "" #define fmtBeginTable "" #define fmtEndTable "
" #define fmtEndHtml "" Set strmBody=##class(%GlobalCharacterStream).%New() Do strmBody.Write($$$fmtBeginHtml) Do strmBody.Write("Klant: "_KLNr_" "_$P(^KKL(^KK1(KLNr),0),D,2)) Do strmBody.Write("
") Do strmBody.Write("Order: "_ORDNr_" - "_$P(^KOD(KLNr,"F",ORDNr,1),D,2)) Do strmBody.Write("
") Do strmBody.Write("
") Do strmBody.Write($$$fmtBeginTable) Do strmBody.Write("Korttekst") Do strmBody.Write("Aantal") Do strmBody.Write("Pra. stock") For Count=1:1 { Quit:'$D(UitVerkoop(Count)) Set R=UitVerkoop(Count) Set PRNr=$P(R,D),Aantal=$P(R,D,2),PraStock=$P(R,D,3) Do strmBody.Write("") Do strmBody.Write(""_" "_$P(^KPR(PRNr,0),D)_"") Do strmBody.Write(""_$S(Aantal'>PraStock:"",1:"")_$$EXTNUM^vhLib.DataTypes(Aantal,0,".",0)_"") Do strmBody.Write(""_$$EXTNUM^vhLib.DataTypes(PraStock,0,".",0)_"") Do strmBody.Write("") } Do strmBody.Write($$$fmtEndTable) Do strmBody.Write($$$fmtEndHtml) Quit strmBody