#include BL.EC.Common #include %occCommon blLeverTermijn(RefDate) ; instantieren van de verzendwijze en levertermijn ; RefDate is optional New KLNr,VerzendWijze,LandCode,PostCode,blVerzendWijze Set KLNr=%ECSession.KlantNr Set:$G(VerzendWijze)="" VerzendWijze=$$DEFAULT^KLVERZW(,KLNr) Set LandCode=$$LAND^vhRtn1(KLNr,"K") Set PostCode=$P(^KKL(^KK1(KLNr),0),"\",6) Set blVerzendWijze=##class(DOM.VKP.VerzendWijze).%New(KLNr,VerzendWijze,LandCode,PostCode) Quit ##class(DOM.VKP.LeveringsTermijn).%New(.RefDate,blVerzendWijze) AddToLog(Niveau, Groep, Actie, Detail) If $isObject($G(%ECSession)) Do . Set Logging=##class(Derde.EC.Logging).Create(,,%ECSession.%Id(),%ECSession.ToegangID,%ECSession.KlantNr,.Niveau,.Groep,.Actie,.Detail) Else Do . Set Logging=##class(Derde.EC.Logging).Create(,,,,,.Niveau,.Groep,.Actie,.Detail) Quit Logging AddErrorToLog(Groep, Actie, Error,Detail) Set Error = $$ParseStatus^vhLib(Error) If $isObject($G(%ECSession)) Do . Set Logging=##class(Derde.EC.Logging).Create(,,%ECSession.%Id(),%ECSession.ToegangID,%ECSession.KlantNr,$$$logGrpError,.Groep,.Actie,$G(Detail)_"~"_Error,$STACK($STACK-2,"PLACE")) . $$$blToegang . Set Body="SessionID: "_%ECSession.%Id() . Set Body=Body_$C(13)_"ToegangID: "_%ECSession.ToegangID . Set Body=Body_$C(13)_"Klant: "_%ECSession.KlantNr . Set oToegang=%blToegang.OpenID(%ECSession.ToegangID) . Set Body=Body_$C(13)_"User: "_oToegang.UserNaam Else Do . Set Logging=##class(Derde.EC.Logging).Create(,,,,,$$$logGrpError,.Groep,.Actie,$G(Detail)_"~"_Error,$STACK($STACK-2,"PLACE")) . Set Body="" ; Mail versturen van de fout Set Body=Body_$C(13)_"Groep: "_$G(Groep) Set Body=Body_$C(13)_"Actie: "_$G(Actie) Set Body=Body_$C(13)_"Detail: "_$G(Detail) Set Body=Body_$C(13)_"Error: "_Error Set Body=Body_$C(13,13)_"$ZError: "_$ZError Set:$G(%objlasterror)'="" Body=Body_$C(13)_"Object Last Error: "_$$ParseStatus^vhLib(%objlasterror) Set Body=Body_$C(13)_"$ECode: "_$ECode Set Body=Body_$C(13)_"Stack: " For EST=1:1:$ESTACK Set Body=Body_$C(13)_" "_$STACK($STACK-EST,"PLACE") Set Body=Body_$C(13)_$C(13)_"Device: "_$I_" Job: "_$J Set Body=Body_$C(13)_"Server: "_$ZU(110)_" NameSpace: "_$ZU(5) Set Body=Body_$C(13,10)_$C(13,10)_"Variabelen: " set Body=Body_$C(13,10)_$$GetVariabelen() Set From=$$$SystemMail("VHISIE") Set Subj="VHISIE - Error to Log" Set To=$lb(##class(TECH.Config.ConfigMgr).Instance().GetString("BL.EC.Common.MailErrorNaar")) Do ##class(vhLib.Logger).%New("Vhisie").ErrorMail(Actie,Body) Quit Logging GetVariabelen() new Variabel,Variabels,VariabelData set (Variabel,Variabels)="" for { set Variabel=$order(@Variabel) quit:Variabel="" continue:Variabel="Body" continue:Variabel="Logging" continue:Variabel="Detail" continue:Variabel="Variabel" continue:Variabel="VariabelData" continue:Variabel="Info" continue:Variabel="Exception" if $isobject($get(@Variabel)) { set VariabelData = $$ObjToText^vhLib(@Variabel) } else { set VariabelData = $get(@Variabel) } set Variabels = Variabels _ $C(13,10) _Variabel_" = " _ VariabelData } quit Variabels WebServiceTrap() ;Fout gebruiksvriendelijk maken en mailen naar van hoecke indien niet op development server Do MailTrap() ;Set Taal=$S($L($G(%Taal)):%Taal,$IsObject($G(%ECSession)):%ECSession.Taal,1:"E") ;Set $ZERROR=##class(Res.Vertaling).GetVertalingPlus($$$VertalingsGroep,"InternalErrorVH","O",Taal,,1) ;s $ETRAP="" Quit MailTrap() Quit:($ZError="ErrorHandled")&&$Quit "" Quit:($ZError="ErrorHandled") Set Body="$ZError: "_$ZError Set:$G(%objlasterror)'="" Body=Body_$C(13)_"Object Last Error: "_$$ParseStatus^vhLib(%objlasterror) Set Body=Body_$C(13)_"$ECode: "_$ECode Set Body=Body_$C(13)_"Stack: " For EST=1:1:$ESTACK Set Body=Body_$C(13)_" "_$STACK($STACK-EST,"PLACE") Set Body=Body_$C(13)_$C(13)_"Device: "_$I_" Job: "_$J Set Body=Body_$C(13)_"Server: "_$ZU(110)_" NameSpace: "_$ZU(5) Set From=$$$SystemMail("VHISIE") Set Subj="VHISIE - Errortrap "_$ZError Set To=$lb(##class(TECH.Config.ConfigMgr).Instance().GetString("BL.EC.Common.MailErrorNaar")) /* */ ; ORIG code - door PV Do AddErrorToLog^BL.EC.Common("FOUT", "$ZError", 1,$ZError) /* * / ; Uitgebreide code - door WimV [met de bedoeling om TIJDELIJK de mass-mail te vermijden] If $$$GETERRORCODE(%objlasterror)=$$$CSPTimeout Do . ; Do not send mail if error is a CSP-TimeOut ! . Set ^PVTempGeo(0,"LogWV",$Increment(^PVTempGeo(0,"LogWV")))=$LB(From,To,Subj,$ZDT($H,4)) . Set ^PVTempGeo(0,"LogWV",^PVTempGeo(0,"LogWV"),"Body")=Body . ;Set To=$LB("wv@vanhoecke.be") . ;Do SendMiniMail^vhLib(From,To,Subj,Body,,,,,) Else Do . Do SendMiniMail^vhLib(From,To,Subj,Body,,,,,) /* */ Set $ZError="ErrorHandled" Quit:$Quit "" Quit Zoek(Zoek,FromPage, FromLine, Dir, pxFetch,bl,RowMethod,PosList,SessionKey,Toegang,SubNode) New PageNode,DataNode,KeepCharOrig,KeepChar,I,LijnNr,ZoekPattern,OK,Value,Row,Page,PageLijn Set %FullText=1 Set PageNode=$G(SubNode,"F")_"P" Set DataNode=$G(SubNode,"F")_"D" Quit:(Zoek="")||(Zoek=$C(0)) $G(pxFetch) Set Zoek=$TR(Zoek," ","*") Set KeepCharOrig="@/.#+-",KeepChar="" For I=1:1:$L(KeepChar) Set:Zoek[$E(KeepCharOrig,I) KeepChar=KeepChar_$E(KeepCharOrig,I) Set Zoek=$ZSTRIP($ZCVT(Zoek,"U"),"*P",,KeepChar_"*?\") Set ZoekPattern=$$WildCardToPattern^vhLib(Zoek,1) Set KeepChar=KeepChar_$S(Zoek["\*":"*",1:"")_$S(Zoek["\?":"?",1:"") ; KeepChar uitbreiden met * of ? indien \* of \? voorkomt If $E(ZoekPattern,1,2)'=".E" Set ZoekPattern=".E"_ZoekPattern Set Dir=$S($G(Dir)=-1:-1,$G(Dir)="P":-1,1:1) Set LijnNr=$S($G(FromPage):$LG($G(^ECHULP(SessionKey,PageNode,FromPage)),1),1:0)+$G(FromLine,1) ; Bereken absolute lijn pos Set OK=0 For Set LijnNr=$O(^ECHULP(SessionKey,DataNode,LijnNr),Dir) Quit:LijnNr="" Do Quit:OK . Set Row=$zobjMethod(bl,RowMethod,^ECHULP(SessionKey,DataNode,LijnNr)) ; Listbuild zoals voor de DataSet . Quit:Row="" . Quit:$LG(Row)="" . Set PosList=$G(PosList($LG(Row))) . Quit:PosList="" . . For I=1:1:$LL(PosList) Do Quit:OK . . Set Value=$ZCVT($ZSTRIP($LG(Row,$LG(PosList,I)),"*P",,KeepChar),"U") . . X "Set OK=Value?"_ZoekPattern Quit:'LijnNr $g(pxFetch) ; Niet gevonden Set PageLijn="" For Page=1:1:$LG(^ECHULP(SessionKey,PageNode),2) Do Quit:PageLijn . Set:LijnNr<=$LG(^ECHULP(SessionKey,PageNode,Page),2) PageLijn=LijnNr-$LG(^ECHULP(SessionKey,PageNode,Page),1) Quit:'PageLijn $g(pxFetch) ; geen omzetting mag niet voorkomen Set:'$isObject($G(pxFetch)) pxFetch=##class(BL.EC.pxFetch).%New() Set pxFetch.ZoekPage=Page Set pxFetch.ZoekLijn=PageLijn Quit pxFetch ; SnapNewPage als .Local doorgeven CreatePages(SessionKey,LijnCnt,Toegang,SubNode,SnapNewPage) Set PageNode=$G(SubNode,"F")_"P" Set (PageCnt,Start,End)=0 For Quit:+End=+LijnCnt Do . Set Start=End . Set End=Start+$$$PageSize . If '$D(SnapNewPage(End)) Do ; Properen om te snappen . . If LijnCnt<=(End+$$$PageWindowPlus) Set End=LijnCnt . . Else If $O(SnapNewPage(End)),$O(SnapNewPage(End))'>(End+$$$PageWindowPlus) Set End=$O(SnapNewPage(End))-1 . . Else If $O(SnapNewPage(End),-1),$O(SnapNewPage(End),-1)'<(End+$$$PageWindowMin) Set End=$O(SnapNewPage(End),-1)-1 . Set:LijnCnt