BL.Derde.Kennis,Prod.Product 1 %RegisteredObject 1 lbRegio:%String,KlantID:%String,lbKlassificatie:%String,lbActionDomain:%String,lbCreationUser:%String,DateFrom:%Date,DateTo:%Date,MsgSearchStr:%String,lbSort:%String,SearchAutoShow:%String=$$$sasShowAll %String Sektor IN ("_$$ListToPieces^vhLib(lbRegio)_"))") Else If $G(KlantID)'="" Do . Do qseAddToWhereClause("(Klant="_KlantID_")") ;Klassificatie Do qseAddListToWhereClause($G(lbKlassificatie),"lbKlassificatie") ;Actiedomein Do qseAddListToWhereClause($G(lbActionDomain),"lbActionDomain") ;CreationUser Do qseAddListToWhereClause($G(lbCreationUser),"CreationUser",0) ;Dates Do:($G(DateFrom)'="") qseAddToWhereClause("(CreationDateAndTime>="_DateFrom_")") //CreationDateAndTime in $H format, bijv "68974,45879". Als we dag 68974 ook willen betrekken in onze resultaten dan moeten we kijken of de datum ligt onder 68974+1 Do:($G(DateTo)'="") qseAddToWhereClause("(CreationDateAndTime<"_(DateTo+1)_")") ;Msg If $G(MsgSearchStr)'="" Do . Set MsgSearchStr=$TR(MsgSearchStr,"?*","_%") . Set MsgSearchStr="%"_MsgSearchStr_"%" . Do qseAddToWhereClause("(LOWER(Msg) LIKE '%"_$ZCVT(MsgSearchStr,"L")_"%')") ;Only items with LinkForward="" Do qseAddToWhereClause("(LinkForward IS NULL)") ;Only items with AutoShow<>"asNotActive" If SearchAutoShow=$$$sasShowActiveOnly Do . Do qseAddToWhereClause("(AutoShow<>"""_$$$asNotActive_""")") Else If SearchAutoShow=$$$sasShowNotActiveOnly Do . Do qseAddToWhereClause("(AutoShow="""_$$$asNotActive_""")") Set:(WhereClause'="") SQL=SQL_$C(13,10)_WhereClause ; *** OrderBy Clause *** Set:($G(lbSort)'="") SQL=SQL_$C(13,10)_"ORDER BY "_$$ListToPieces^vhLib(lbSort) Quit SQL ;------------------------------------------------------------------------------------------ qseAddListToWhereClause(List,CheckName,DoListFind) Set DoListFind=$G(DoListFind,1) Set SubClause="" For Loop=1:1:$LL(List) Do . If DoListFind Do .. Set BoolCheck="($LISTFIND("_CheckName_",'"_$LI(List,Loop)_"')<>0)" . Else Do .. Set BoolCheck="("_CheckName_"="_$LI(List,Loop)_")" . If Loop=1 Do .. Set SubClause=BoolCheck . Else Do .. Set SubClause=SubClause_" OR "_BoolCheck Do:(SubClause'="") qseAddToWhereClause("("_SubClause_")") Quit qseAddToWhereClause(Statement) If WhereClause="" Do . Set WhereClause="WHERE "_Statement Else Do . Set WhereClause=WhereClause_" AND "_Statement Quit ]]> 1 %String 1 %String Reversed root -> GetLastKBID maw... Quit:(varErrStr'="") "" If '##class(Derde.Kennis.Kennis).%ExistsId(LastKB) Do Quit "" . Set varErrStr="Het kennisobject met ID '"_LastKB_"' bestaat niet." Set KBObj=##class(Derde.Kennis.Kennis).%OpenId(LastKB) If '$IsObject(KBObj) Do Quit "" . Set varErrStr="Kan geen instantie aan maken van kennisobject met ID '"_LastKB_"'." Quit KBObj.CreationDateAndTime ]]> 1 %String 1 lbKlassificatie 1 lbProducten,lbProductSelecties,SEP 1 lbKlassificatie:%String,EllipsisHeight:%Integer=0,Sep:%String=$C(13,10),QuoteChar:%String="",LongFull:%Boolean=1 %String 1 lbActionDomain:%String,EllipsisHeight:%Integer=0,Sep:%String=$C(13,10),QuoteChar:%String="",LongFull:%Boolean=1 %String 1 KlantNr:%String %String 1 KennisObjA:Derde.Kennis.Kennis,KennisObjB:Derde.Kennis.Kennis %String 1 FromKlantNr:%String,ToKlantNr:%String,UserID:%String %String "_ToKlantNr) . Else Do .. Set ErrStr="Fout tijdens opslaan kennisobject: "_$$ParseStatus^vhLib(Status) Quit "" ]]> 1 FromKlantNr:%String,ToKlantNr:%String,UserID:%String %String Recursieve method behorende tot ChangeKlantNr 1 KennisObj,FromKlantNr,ToKlantNr,LinkBackwardObj,UserID,varErrStr "_ToKlantNr) .. Do ..AddToLog(KennisObj.%Id(),$$$kbaCopyKlant,UserID,"Dest: "_CloneObj.%Id()_", KlNr "_FromKlantNr_"->"_ToKlantNr) . Else Do .. Set varErrStr="Fout tijdens opslaan kennisobject: "_$$ParseStatus^vhLib(Status) Quit CloneObj ]]> 1 KennisID:%String,Action:%String,UserID:%String,PropDiffs:%String="",Msg:%String="" 1 KennisID:%String 1 ValidFrom,ValidTo %Boolean "geldig tot" dan is het anker vervallen Quit:(Today>ValidTo) 1 ;Resterend: ("huidige datum" <= "geldig tot") EN ("huidige datum" >= "geldig van"), maw nog geldig Quit 0 ]]> ======================================================================================================================== METHODs FOR Revision ======================================================================================================================== 1 expression %String 1 expression %String ======================================================================================================================== QGetIDsToRevise ======================================================================================================================== %Query paUserID:%String,paSort:%String 1 0 %Status omgekeerd zoeken in logging . Set OrigUser=tmpRS.Data("CreationUser") . Set RevisionUser=OrigUser . ;Checken of deze gebruiker nog geldig is (actief), zoniet een geldige gebruiker terug krijgen . Set KlantNr=tmpRS.Data("Klant") . If '$D(aValidatedUser(RevisionUser,KlantNr)) Do .. Set aValidatedUser(RevisionUser,KlantNr)=##class(Res.InternePersoon).ValidateUser(RevisionUser,KlantNr) . Set RevisionUser=aValidatedUser(RevisionUser,KlantNr) . Quit:(FilterViaUser && (RevisionUser'=paUserID)) . Set KennisID=tmpRS.Data("ID") . Set IsRevised=0, EarlyQuit=0, HLastRevised=tmpRS.Data("CreationDateAndTime") . Set LogLoop="" . For Set LogLoop=$O(^Derde.Kennis.Kennis.Log(KennisID,LogLoop),-1) Quit:((LogLoop="") || EarlyQuit) Do .. Set lbLogLine=^Derde.Kennis.Kennis.Log(KennisID,LogLoop) .. Set Action=$LI(lbLogLine,$$$lpAction) .. Quit:('$$$IsReviseAction(Action)) .. Quit:($LI(lbLogLine,$$$lpUserID)'=RevisionUser) ;user moet gelijk zijn aan de 'RevisionUser' .. ;we checken de laatste 'revision' van de overeenkomstige user, indien te oud: toevoegen .. Set HLastRevised=$LI(lbLogLine,$$$lpDateTime) .. Set:(HLastRevised' 1 QGetIDsToReviseExecute 0 %Status 1 QGetIDsToReviseExecute 0 %Status ======================================================================================================================== QGetHistory ======================================================================================================================== %Query KennisID:%String 1 %Status 1 QGetHistoryExecute %Status 1 QGetHistoryExecute %Status ======================================================================================================================== QGetActions ======================================================================================================================== %Query KennisID:%String 1 %Status 1 QGetActionsExecute %Status 1 QGetActionsExecute %Status ==================================================================================================================== METHODs VOOR POPUP ==================================================================================================================== Aantal ankers voor een klant waar geen product aan gekoppeld is (gelijk $$$cpEmpty) 1 KLNr %Integer 'NA') AND (lbProducten IS NULL) AND (lbProductSelecties IS NULL)) Quit $G(Aantal,0) ]]> 1 PRNr %Integer 0) AND (LinkForward IS NULL) AND (AutoShow<>'NA')) Quit $G(Aantal,0) ]]> 1 ID:%String,User:%String,DocType:%String=$$$dtNone,DocRef:%String=$$$dtNone 1 lbIDs:%String,User:%String,DocType:%String=$$$dtNone,DocRef:%String=$$$dtNone 1 ID:%String,User:%String,DocType:%String=$$$dtNone,DocRef:%String=$$$dtNone %Boolean 1 ID:%String,User:%String,DocType:%String=$$$dtNone,DocRef:%String=$$$dtNone,ShownTime:%Integer=$$$stLast %String w $$LCVT^vhLib(##class(BL.Derde.Kennis.Kennis).GetIDsToPopup(3902,.e,$LB("DOC:LEVB"),,1023))_", error:"_e,! w $$LCVT^vhLib(##class(BL.Derde.Kennis.Kennis).GetIDsToPopup(3902,.e,$LB("DOC:LEVB"),$LB(9748,112015),1023,,,1,1)),e 1 %String weergeven Quit:('HasValidActionDomainsToCheck && 'HasInvalidActionDomain) 1 Quit:(HasInvalidActionDomain) 0 Quit HasValidActionDomain ;--------------------------------------------------------------------------------------------- gitpOkToPopup(KennisID,AutoShow,User,DocType,DocRef,varErrStr) ;Indien AutoShow=never, negatief sluiten Quit:(AutoShow=$$$asNever) 0 ;Indien AutoShow=always, positief sluiten Quit:(AutoShow=$$$asAlways) 1 ;Indien AutoShow=per order/levering/factuur, maar het doctype is niet order/lev/fact, dan niet tonen Quit:((AutoShow=$$$asPerOrderLevFactuur) && '(DocType=$$$dtOrder || DocType=$$$dtLevering || DocType=$$$dtFactuur)) 0 ;Kijken of deze recent getoond is Set HShown=..GetHShown(KennisID,User,DocType,DocRef) ;Indien HShown="" dan is deze popup niet eerder vertoond, nu doen Quit:(HShown="") 1 ;Indien AutoShow=Per order/levering of factuur en de zaak is reeds getoond (HShow<>""), niet tonen, ongeacht 'hoe lang' geleden Quit:(AutoShow=$$$asPerOrderLevFactuur) 0 Set DMJShown=$$EXTDATE^vhDTyp(HShown) Set DMJToday=$$EXTDATE^vhDTyp($H) /* Wekelijks/Maandelijks popup algo: 0: nu, 1: laatste, 2: voorlaatste, 3: voor-voorlaatste, []: popupperiode, {}: resetperiode (1) [0-----------------] 1 -> Show (1) [0-------1---------] -> (2) (2) (0-------1------------------------) 2 -> Show (3) (0-------1-----------2------------) -> (4) (4) (0-------1-----------2------------) 3 -> Show (5) (0-------1-----------2--------3---) -> Skip (6) */ ;Afhankelijk van de opgegeven autoshow-frequentie en de datum "laatst getoond" actie ondernemen If AutoShow=$$$asDaily Do ;Checken of anker dagelijks getoond moet worden . Set OkToPopup=(DMJToday'=DMJShown) ;Tonen indien vandaag nog niet getoond Else If (AutoShow=$$$asWeekly) || (AutoShow=$$$asMonthly) Do ;Checken of anker dagelijks/wekelijks moet getoond worden . If AutoShow=$$$asWeekly Do ;Afhankelijk van autoshow popup en resetperiode vastleggen (in werkdagen) .. Set PopupPeriode=5, ResetPeriode=40 . Else Do .. Set PopupPeriode=20, ResetPeriode=100 . ;Aantal werkdagen sedert laatste show berekenen . Set LastShownPeriode=$$DIFFDATE^vhDTyp(HShown,$H,"A") ;param "A" => werkdagen . ;Laatste popup recenter dan popupperiode? . If LastShownPeriode>PopupPeriode Do .. Set OkToPopup=1 ;(1) . Else Do ;(2) .. Set HPrevShow=..GetHShown(KennisID,User,DocType,DocRef,$$$stPrevious) .. If HPrevShow="" Do Quit ;Popup nog maar 1x getoond, niet tonen (zal duren tot (1) zich voordoet) ... Set OkToPopup=0 .. Set DMJPrevShow=$$EXTDATE^vhDTyp(HPrevShow) .. Set PrevShownPeriode=$$DIFFDATE^vhDTyp(HPrevShow,$H,"A") .. ;Voorlaatste popup recenter dan resetperiode? .. If PrevShownPeriode>ResetPeriode Do ... Set OkToPopup=1 ;(3) .. Else Do ;(4) ... Set HPrePrevShow=..GetHShown(KennisID,User,DocType,DocRef,$$$stPrePrevious) ... If HPrePrevShow="" Do Quit ;Popup nog maar 2x getoond, niet tonen (zal duren tot (3) zich voordoet) .... Set OkToPopup=0 ... Set DMJPrePrevShow=$$EXTDATE^vhDTyp(HPrePrevShow) ... Set PrePrevShownPeriode=$$DIFFDATE^vhDTyp(HPrePrevShow,$H,"A") ... ;Voor-voorlaatste popup recenter dan resetperiode? ... If PrePrevShownPeriode>ResetPeriode Do .... Set OkToPopup=1 ;(5) ... Else Do .... Set OkToPopup=0 ;(6) Else Do Quit 0 . Set varErrStr="Kennisobject '"_KennisID_"' heeft een onbekend autoshow-type: '"_AutoShow_"'." Quit OkToPopup ;--------------------------------------------------------------------------------------------- gitpHasValidProduct(CheckProd,lbKennisProduct,lbKennisProdSelMasks,lbKennisKlassificatie,lbCheckProduct) ;Controleren of er op product een controle moet uitgevoerd worden Quit:(CheckProd=$$$cpNoCheck) 1 ;Indien checkprod gelijk is aan empty dan keert de functie positief terug als er geen producten gekoppeld zijn aan het kennisanker Quit:(CheckProd=$$$cpEmpty) ((lbKennisProduct="") && (lbKennisProdSelMasks="") && (lbKennisKlassificatie="")) If (lbKennisProduct="") && (lbKennisProdSelMasks="") && (lbKennisKlassificatie="") Do . If CheckProd=$$$cpCheckAndEmpty Do .. Set HasValidProduct=1 . Else If lbCheckProduct="" Do .. Set HasValidProduct=1 . Else Do .. Set HasValidProduct=0 Else Do . If lbCheckProduct="" Do .. Set HasValidProduct=0 . Else If $$gitphvpProductMatches(lbKennisProduct,lbCheckProduct) Do .. Set HasValidProduct=1 . Else If $$gitphvpKlassificationMatches(lbKennisKlassificatie,lbCheckProduct) Do .. Set HasValidProduct=1 . Else If $$gitphvpProductSelMaskMatches(lbKennisProdSelMasks,lbCheckProduct) Do .. Set HasValidProduct=1 . Else Do .. Set HasValidProduct=0 Quit HasValidProduct ;-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- gitphvpProductMatches(lbKennisProduct,lbCheckProduct) Set ProductMatches=0 For Loop=1:1:$LL(lbKennisProduct) Do Quit:(ProductMatches) . If $LF(lbCheckProduct,$LI(lbKennisProduct,Loop)) Do .. Set ProductMatches=1 Quit ProductMatches gitphvpKlassificationMatches(lbKennisKlassificatie,lbCheckProduct) Set KlassificationMatches=0 For Loop=1:1:$LL(lbCheckProduct) Do Quit:(KlassificationMatches) . Set ProdNr=$LI(lbCheckProduct,Loop) . Quit:('##class(Prod.Product).%ExistsId(ProdNr)) . Set KKeyProd=$$Get^PRODUKT(ProdNr,$$$KlassificatieKey) . For SubLoop=1:1:3 Do Quit:(KlassificationMatches) .. Set KSortLevel=$$GETSORT^KLASS(KKeyProd,SubLoop) .. Set KKeyLevel=$$GETKEY^KLASS(KSortLevel) .. If $LF(lbKennisKlassificatie,KKeyLevel) Do ... Set KlassificationMatches=1 Quit KlassificationMatches gitphvpProductSelMaskMatches(lbKennisProdSelMasks,lbCheckProduct) Set ProductSelMaskMatches=0 For Loop=1:1:$LL(lbKennisProdSelMasks) Do Quit:(ProductSelMaskMatches) . Set ProdSelMask=$LI($LI(lbKennisProdSelMasks,Loop),1) //$LB item 1: mask . Set KeepChar=$LI($LI(lbKennisProdSelMasks,Loop),2) //item 2: keepchar . For SubLoop=1:1:$LL(lbCheckProduct) Do Quit:(ProductSelMaskMatches) .. Set ProdNr=$LI(lbCheckProduct,SubLoop) .. Quit:('##class(Prod.Product).%ExistsId(ProdNr)) .. Set KortTekst=$$Get^PRODUKT(ProdNr,$$$KortTekst) .. Set KortTekst=$ZCVT($ZSTRIP(KortTekst,"*P",,KeepChar),"U") .. If KortTekst?@ProdSelMask Do ... Set ProductSelMaskMatches=1 Quit ProductSelMaskMatches ]]> 1 Macrogebruik in volgende query: $$$asNotActive NA %SQLQuery paKlantNr:%String,paInclGeneral:%Boolean=0 'NA') ORDER BY CreationDateAndTime DESC]]> Macrogebruik in volgende query: $$$asNotActive NA %SQLQuery 'NA') ORDER BY CreationDateAndTime DESC]]> Macrogebruik in volgende query: $$$asNotActive NA %SQLQuery paHBeforeDate:%String Naam As KlantNaam,CreationDateAndTime,CreationUser,lbActionDomain,lbKlassificatie,lbProducten,lbProductSelectieMasks,Msg,ValidFromDate,ValidToDate,LinkForward,LinkBackward FROM Derde_Kennis.Kennis WHERE (LinkForward IS NULL) AND (AutoShow<>'NA') AND (CreationDateAndTime<:paHBeforeDate)]]>