Index: TECH/PubSub/EventSubscription.cls.xml =================================================================== diff -u -r734 -r1013 --- TECH/PubSub/EventSubscription.cls.xml (.../EventSubscription.cls.xml) (revision 734) +++ TECH/PubSub/EventSubscription.cls.xml (.../EventSubscription.cls.xml) (revision 1013) @@ -1,10 +1,10 @@ - + persistent 1 %Persistent -62116,43774.196373 +62196,29474.408014 0 @@ -20,6 +20,10 @@ %String + +EventType + + EventType:%String,RespondingClass:%String,RespondingMethod:%String 1 @@ -58,5 +62,5 @@ - + Index: Stat/OmzetProductMaand.cls.xml =================================================================== diff -u -r734 -r1013 --- Stat/OmzetProductMaand.cls.xml (.../OmzetProductMaand.cls.xml) (revision 734) +++ Stat/OmzetProductMaand.cls.xml (.../OmzetProductMaand.cls.xml) (revision 1013) @@ -1,155 +1,134 @@ - + Maandverkoop per klant en product per maand persistent VHOpslag %Library.Persistent -59689,28792.204953 -59689,28792.202065 +59217,79227.328 +58751,34470 - -1 -1 -Product,Maand - + +%Library.Date + -%Library.Date -1 - -0 - Set {*}=$ZDH($TR({Maand}_"01"," .",""),8) - -1 - +]]> + + +%Library.Float + + + + +%Library.Float + + + + +%Library.Float + + + + +%Library.Float + + + %Library.Integer - -0 - -%Library.Float -1 - -0 - Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},0,{Maand},12,2) - -1 - - %String - -0 %Library.Float - -0 - -%Library.Float -1 - -0 - Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},0,{Maand},12,4) - -1 - - %Library.Float - -0 - -%Library.Float -1 - -0 - Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},0,{Maand},12,3) - -1 - - %Library.Float - -0 Prod.Product - -0 %Library.Integer - -0 + + +Aantal stuks over KOM +%Library.Integer + + + +%Library.Date +1 + Set {*}=$ZDH($TR({Maand}_"01"," .",""),8) + +1 + + %Library.Float 1 - -0 Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},0,{Maand},12,1) 1 - - -Aantal stuks over KOM -%Library.Integer - -0 + +%Library.Float +1 + Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},0,{Maand},12,2) + +1 - -code -%Library.Date - - + +%Library.Float +1 + Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},0,{Maand},12,3) + +1 + - -code -%Library.Float - - + +%Library.Float +1 + Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},0,{Maand},12,4) + +1 + - -code -%Library.Float - - + +1 +1 +Product,Maand + - -code -%Library.Float - - - - -code -%Library.Float - - - %Library.CacheSQLStorage ^Stat.ProdMaandS @@ -158,7 +137,7 @@ ^KSTPR delimited -sub +Sub {Product} 1 @@ -167,7 +146,7 @@ 0 -sub +Sub {Maand} 1 @@ -198,5 +177,5 @@ - + Index: vhUnitTest/DOM/LEV/TestToeleveringAPI.cls.xml =================================================================== diff -u -r946 -r1013 --- vhUnitTest/DOM/LEV/TestToeleveringAPI.cls.xml (.../TestToeleveringAPI.cls.xml) (revision 946) +++ vhUnitTest/DOM/LEV/TestToeleveringAPI.cls.xml (.../TestToeleveringAPI.cls.xml) (revision 1013) @@ -1,23 +1,24 @@ - + do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","DOM.LEV.TestToeleveringAPI") 1 vhUnitTest.TestCase -62166,30336.953462 +62199,28191.974793 0 - + Index: TECH/Concurrency/TxScope.cls.xml =================================================================== diff -u -r946 -r1013 --- TECH/Concurrency/TxScope.cls.xml (.../TxScope.cls.xml) (revision 946) +++ TECH/Concurrency/TxScope.cls.xml (.../TxScope.cls.xml) (revision 1013) @@ -1,5 +1,5 @@ - + Koppeling van Transactie aan locks en aan het huidige proces. @@ -9,7 +9,7 @@ TECH.Error 1 %RegisteredObject -62171,42309.778488 +62193,29983.346026 62055,48616.45905 0 @@ -169,10 +169,8 @@ - + Index: vhUnitTest/APPS/PM/ProductOpOrderLijnIt.cls.xml =================================================================== diff -u -r995 -r1013 --- vhUnitTest/APPS/PM/ProductOpOrderLijnIt.cls.xml (.../ProductOpOrderLijnIt.cls.xml) (revision 995) +++ vhUnitTest/APPS/PM/ProductOpOrderLijnIt.cls.xml (.../ProductOpOrderLijnIt.cls.xml) (revision 1013) @@ -1,14 +1,14 @@ - + 1 vhUnitTest.TestCase -62173,56688.569734 +62199,39277.338417 0 -d ##class(vhUnitTest.Manager).RunTest(,"APPS.PM.DataMProduct") +d ##class(vhUnitTest.Manager).RunTest(,"APPS.PM.ProductOpOrderLijnIt") %Status - + Index: vhUnitTest/TECH/Concurrency/TestTransactie.cls.xml =================================================================== diff -u -r860 -r1013 --- vhUnitTest/TECH/Concurrency/TestTransactie.cls.xml (.../TestTransactie.cls.xml) (revision 860) +++ vhUnitTest/TECH/Concurrency/TestTransactie.cls.xml (.../TestTransactie.cls.xml) (revision 1013) @@ -1,13 +1,13 @@ - + do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","TECH.Concurrency.TestTransactie") Test locking door Transactie klasse. TECH.Concurrency,TECH.ExcHandling 1 AbstractTxTest -62130,42687.356023 +62192,62065.008311 62056,43801.347408 0 @@ -45,12 +45,17 @@ #define NotShared 0 Do ..VoorbeeldObject.%LockId(..VoorbeeldObject.%Id(), $$$NotShared) Do ..TxScope.RegistreerExclusiveLock(..VoorbeeldObject) + Quit:'($$$AssertTrue(..VoorbeeldObject.IsExclusiveLocked())) + set LockString = "^vhUnitTestA29.VoorbeeldPer7D3D("_..VoorbeeldObject.%Id()_")" + do $$$AssertTrue($data(^$LOCK(LockString))) Quit:'(..Assert1LockInTx(..TxScope, ..VoorbeeldObject, $$$NotShared)) Do ..TxScope.Commit() + do $$$AssertNotTrue($data(^$LOCK(LockString))) + Quit:'($$$AssertEquals(0, ..Transactie.GeefLocks().Count())) Quit:'($$$AssertNotTrue(..VoorbeeldObject.IsLocked())) ]]> @@ -196,5 +201,5 @@ ]]> - + Index: Stat/OmzetRegioMaand.cls.xml =================================================================== diff -u -r734 -r1013 --- Stat/OmzetRegioMaand.cls.xml (.../OmzetRegioMaand.cls.xml) (revision 734) +++ Stat/OmzetRegioMaand.cls.xml (.../OmzetRegioMaand.cls.xml) (revision 1013) @@ -1,11 +1,11 @@ - + persistent VHOpslag %Library.Persistent -59689,28789.021061 -59689,28789.018268 +59688,51577.20878 +59688,51577.205621 0 @@ -200,5 +200,5 @@ - + FishEye: Tag 1013 refers to a dead (removed) revision in file `vhUnitTest/BL/PPS/TBX/BatchMock.cls.xml'. FishEye: No comparison available. Pass `N' to diff? Index: zJCL/BS.mac.rou =================================================================== diff -u --- zJCL/BS.mac.rou (revision 0) +++ zJCL/BS.mac.rou (revision 1013) @@ -0,0 +1,11 @@ + + + + + set Global = "^PRBS(""IP"")" + for set Global = $Q(@Global) Quit:$QS(Global,1)'="IP" do + . Set MPRNr = $QS(Global,3) + . Set BSKey = $QS(Global,4) + . If '$D(^PRBS("BS",MPRNr,BSKey)) D + . . K @Global W Global_" "_$ZR,! + \ No newline at end of file Index: vhUnitTest/APPS/Halux/Planning/TestPlanningService.cls.xml =================================================================== diff -u -r995 -r1013 --- vhUnitTest/APPS/Halux/Planning/TestPlanningService.cls.xml (.../TestPlanningService.cls.xml) (revision 995) +++ vhUnitTest/APPS/Halux/Planning/TestPlanningService.cls.xml (.../TestPlanningService.cls.xml) (revision 1013) @@ -1,18 +1,19 @@ - + do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","APPS.Halux.Planning.TestPlanningService") 1 vhUnitTest.TestCase -62186,33133.173324 +62199,52388.135891 0 %Status @@ -37,9 +60,20 @@ @@ -266,6 +300,46 @@ Do $$$AssertEquals(Resultaat.Errors.Count(),1,"Er is 1 probleem") ]]> + + + + - + Index: Prod/Kenmerk/DataDefinitie/1.int.rou =================================================================== diff -u --- Prod/Kenmerk/DataDefinitie/1.int.rou (revision 0) +++ Prod/Kenmerk/DataDefinitie/1.int.rou (revision 1013) @@ -0,0 +1,896 @@ + ;Prod.Kenmerk.DataDefinitie.1 + ;(C)InterSystems, generated for class Prod.Kenmerk.DataDefinitie. Do NOT edit. 04/12/2011 02:26:14PM + ;;5DCE65CF0A1BF762;Prod.Kenmerk.DataDefinitie + Quit + ; + /* + */ + /* + Set MyLB=$$$LBDeleteAt(MyLB,5) ; Verouderde versie: correct, maar lagere performantie. + $$$DoLBDeleteAt(MyLB,5) + $$$DoLBDeleteAtIf(Cond,MyLB,5) + If (cond) $$$DoLBDeleteAt(MyLB,5) + */ +%AcquireLock(%this,locktype) n id,sc + s id=..%Id() QUIT:$g(id)="" $$Error^%apiOBJ(5812) + s sc=1 + i $g(locktype)="e" l +(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))):$zu(115,4) s:'$t sc=$$Error^%apiOBJ(5803) QUIT sc + i $g(locktype)="s" l +(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))#"S"):$zu(115,4) s:'$t sc=$$Error^%apiOBJ(5804) QUIT sc + QUIT $$Error^%apiOBJ(5806,locktype) +%BMEBuilt(bmeName) Quit 1 +%BuildIndices(idxlist) Set idxlist=$get(idxlist) QUIT 1 +%CheckUnique(idxlist) public { Set idxlist=$get(idxlist) QUIT $$Error^%apiOBJ(5758,"%Persistent::%CheckUnique") } +%ClassName(fullname) public { Quit $select($get(fullname,0):"Prod.Kenmerk.DataDefinitie",1:"DataDefinitie") } +%Close(%this) Quit ..%Close() +%Destruct(%this) public { Set oid=$zobjval(,0,,,,3) + If oid'="" { If $zobjval(,1,0,3,1)=3 { Do ..%ReleaseLock("s") } ElseIf $zobjval(,1,0,3,1)=4 { Do ..%ReleaseLock("e") } s $zobjoid($lg(oid,2),$lg(oid))="" } + Kill %objtxLIST(+%this),%objtxOIDASSIGNED(+%this),%objtxMODIFIED(+%this) + Quit 1 } +%ConstructClone(%this,deep,cloned) public { Set deep=$get(deep,0) Set object=%this + If $data(cloned(+object)) Do (cloned(+object)).%IncrementCount() Quit cloned(+object) + Set %this=$zobjnew("Prod.Kenmerk.DataDefinitie") + Set cloned(+object)=%this,cloned(+object,0)=object + s $zobjmod(,0)=1 + Set $zobjval(,1)=$zobjval(object,1),$zobjval(,2)=$zobjval(object,2),$zobjval(,4)=$zobjval(object,4) + Set $zobjval(,3)=$zobjval(object,3),$zobjval(,5)=$zobjval(object,5),$zobjval(,6)=$zobjval(object,6) + Set $zobjval(,7)=$zobjval(object,7),$zobjval(,8)=$zobjval(object,8),$zobjval(,9)=$zobjval(object,9) + Set $zobjval(,10)=$zobjval(object,10),$zobjval(,11)=$zobjval(object,11) + If deep>0 { + If object.Kenmerk'="" Set $zobjval(,6,0)=$zobjval(object,6,0).%ConstructClone(1,.cloned) If $zobjval(,6,0)'="" Do ($zobjval(,6,0)).%Close() + If object.Waarden'="" Set $zobjval(,9,0)=$zobjval(object,9,0).%ConstructClone(1,.cloned) If $zobjval(,9,0)'="" Do ($zobjval(,9,0)).%Close() + } Else { + If object.Waarden'="" Set $zobjval(,9,0)=$zobjval(object,9,0).%ConstructClone(0,.cloned) If $zobjval(,9,0)'="" Do ($zobjval(,9,0)).%Close() + } + Quit %this } +%Delete(oid,concurrency) public { Set oid=$get(oid),concurrency=$get(concurrency,-1) Quit:oid="" $$Error^%apiOBJ(5813) Set id=$lg(oid) Quit:id="" $$Error^%apiOBJ(5812) + If concurrency = -1 Set concurrency=$zu(115,10) + If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set class=$lg(oid,2) + If class="" { Set sc=##class(Prod.Kenmerk.DataDefinitie).%OnDetermineClass(oid,.class) Quit:('sc) sc Set oid=$s(oid="":"",1:$lb($lg(oid),class)) } Else { Set class=$s(class[".":class,$e(class)'="%":"User."_class,1:"%Library."_$e(class,2,$l(class))) } + If "Prod.Kenmerk.DataDefinitie"'=class Quit $zobjclassmethod(class,"%Delete",oid) + If +$g(%objtxSTATUS)=0 { Set traninit=1 k %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxOIDUNASSIGNED,%objtxMODIFIED k:'$TLevel %0CacheLock i '$zu(115,9) { s %objtxSTATUS=1 } else { s %objtxSTATUS=2 TStart } } Else { Set traninit=0 } + Set sc=##class(Prod.Kenmerk.DataDefinitie).%OnDelete(oid) g:('sc) %DeleteEnd + s oref=$zobjoid($lg(oid,2),$lg(oid)) + If $isobject(oref) { New %this Set %this=oref If %this.%Concurrency>2 { s sc=%this.%ReleaseLock($Select(%this.%Concurrency=3:"s",1:"e")) } i $g(%objtxSTATUS)=2 { s %objtxOIDUNASSIGNED(+oref)=oid,%objtxLIST(+oref)=oref s %objtxMODIFIED(+oref)=$zobjval(oref,0) } s $zobjmod(oref,0)=1 Set $zobjval(oref,0,,,,3)="" s $zobjoid($lg(oid,2),$lg(oid))="" } + Set sc=##class(Prod.Kenmerk.DataDefinitie).%DeleteData(id,concurrency) +%DeleteEnd If traninit { If (+sc) { i $g(%objtxSTATUS)=1 { k %objtxSTATUS } else { TCommit k %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxOIDUNASSIGNED,%objtxMODIFIED k:'$TLevel %0CacheLock } } Else { i $g(%objtxSTATUS)=2 { k %0CacheLock s sc=$select(+sc:$$%TRollBack^%occTransaction(),1:$$AppendStatus^%occSystem(sc,$$%TRollBack^%occTransaction())) } else { k %objtxSTATUS } } } + Quit sc } +%DeleteData(id,concurrency) QUIT:id="" $$Error^%apiOBJ(5812) + n %kp1,%kp2,extentlock,sc + s extentlock=0,sc="" + s %kp1=$piece(id,"||",1),%kp2=$piece(id,"||",2,3) + If concurrency { If '$tlevel { Kill %0CacheLock } If $i(%0CacheLock("Prod.Kenmerk.DataDefinitie"))>1000 { Lock +(^Prod.Ken.DataDefinitieD):$zu(115,4) Set extentlock=$test Lock:extentlock -(^Prod.Ken.DataDefinitieD) } If 'extentlock { Lock +(^Prod.Ken.DataDefinitieD(%kp1,%kp2)):$zu(115,4) } If '$test { QUIT $$Error^%apiOBJ(5803) }} + s:($d(^Prod.Ken.DataDefinitieD(%kp1,%kp2))) sc=1 + i (+sc) DO + . k ^Prod.Ken.DataDefinitieD(%kp1,%kp2) + If (concurrency) && ('extentlock) { Lock -(^Prod.Ken.DataDefinitieD(%kp1,%kp2)) } + QUIT $s(sc'="":sc,1:$$Error^%apiOBJ(5810)) +%DeleteExtent(concurrency,deletecount,instancecount) public { Set concurrency=$get(concurrency,-1) If concurrency = -1 Set concurrency=$zu(115,10) + If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set deletecount=0,instancecount=0 + Set sc=##class(Prod.Kenmerk.DataDefinitie).ExtentExecute(.qh) Quit:('sc) sc + For Set sc=##class(Prod.Kenmerk.DataDefinitie).ExtentFetch(.qh,.row,.atend) Quit:$select(row="":1,('sc):1,1:0) Set id=$listget(row) If id'="" Set sc=##class(Prod.Kenmerk.DataDefinitie).%Delete($listbuild(id),concurrency) Set instancecount=instancecount+1 Set:(+sc) deletecount=deletecount+1 Quit:atend + Do ##class(Prod.Kenmerk.DataDefinitie).ExtentClose(qh) + If instancecount = deletecount { Do ##class(Prod.Kenmerk.DataDefinitie).%PurgeIndices() } + Quit 1 } +%DeleteId(id,concurrency) public { Set concurrency=$get(concurrency,-1) Quit ##class(Prod.Kenmerk.DataDefinitie).%Delete($s(id="":"",1:$lb(id_"")),.concurrency) } +%DowngradeConcurrency(%this,concurrency) public { Set concurrency=$get(concurrency,0) If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set current=$zobjval(,1,0,3,1) + If concurrency>current Quit 1 + If current<3||(current=concurrency) Set:concurrency2 Set sc=..%AcquireLock($select(concurrency=3:"s",1:"e")) Quit:('sc) sc + Do ..%ReleaseLock($select(current=3:"s",1:"e")) + Set $zobjval(,1,0,3,1)=concurrency + Quit 1 } +%Exists(oid) Set oid=$get(oid) Quit ##class(Prod.Kenmerk.DataDefinitie).%ExistsId($lg(oid)) +%ExistsId(id) QUIT:$g(id)="" $$Error^%apiOBJ(5812) + n %kp1,%kp2 + s %kp1=$piece(id,"||",1),%kp2=$piece(id,"||",2,3) + i ($d(^Prod.Ken.DataDefinitieD(%kp1,%kp2))) Quit 1 + QUIT 0 +%Extends(isclass) public { Quit "~Prod.Kenmerk.DataDefinitie~TECH.Concurrency.VhPersistent~%Library.Persistent~%Library.RegisteredObject~"[("~"_$s(isclass[".":isclass,$e(isclass)'="%":"User."_isclass,1:"%Library."_$e(isclass,2,$l(isclass)))_"~") } +%GetParameter(paramname) public { Set paramname=$get(paramname) Quit $case(paramname,"DEFAULTCONCURRENCY":"$zu(115,10)","EXTENTSIZE":100000,"OBJJOURNAL":0,"PROPERTYVALIDATION":2,"READONLY":0,"SQLENABLED":1,"STORAGECOMPILERCLASS":"%Compiler.Storage.Cache",:"") } +%GetSwizzleObject(%this,force,oid) public { Set force=$get(force,0) Set oid="" If force=0 Set oid=(..%Oid()) Quit 1 + If force=2 Set sc=..%Save(1) Set:(+sc) oid=(..%Oid()) Quit sc + Set oid=(..%Oid()) Quit:oid'="" 1 + Set sc=..%Save(0) Set:(+sc) oid=..%Oid() + Quit sc } +%Id(%this) Quit $lg($zobjval(%this,0,,,,3)) +%IdSet(%this,id) public { Set oid=$s(id="":"",1:$lb(id_"","Prod.Kenmerk.DataDefinitie")) + If $zobjval(,0,,,,3)'="",$zobjval(,0,,,,3)'=oid Quit $$Error^%apiOBJ(5814) + Set $zobjval(,0,,,,3)=oid s $zobjoid($lg(oid,2),$lg(oid))=%this + Quit 1 } +%IncrementCount(%this) Quit ..%IncrementCount() +%IsA(isclass) public { Quit "~Prod.Kenmerk.DataDefinitie~TECH.Concurrency.VhPersistent~%Library.Persistent~%Library.RegisteredObject~"[("~"_$s(isclass[".":isclass,$e(isclass)'="%":"User."_isclass,1:"%Library."_$e(isclass,2,$l(isclass)))_"~") } +%IsModified(%this) public { Quit $zobjmod(,0) } +%KillExtent() n sc,subextent + s subextent="" f s subextent=$o(^oddMAP("Prod.Kenmerk.DataDefinitie","Z",subextent)) q:subextent="" s sc=$zobjclassmethod(subextent,"%KillExtent") + s sc=##class(Prod.Kenmerk.DataDefinitie).%PurgeIndices() q:('sc) sc + k ^Prod.Ken.DataDefinitieD + QUIT 1 +%Load(%this,id) public { Set sc=..%IdSet(id) Quit:('sc) sc + Set sc=..%LoadData(id) Quit:('sc) sc + Quit 1 } +%LoadData(%this,id) n sc + s sc="" + s $zobjval(,7,0,3,6)=$piece(id,"||",1),$zobjval(,5,0,3,5)=$piece(id,"||",2,3) + i $zobjval(,1,0,3,1)=4 l +(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))):$zu(115,4) i '$t QUIT $$Error^%apiOBJ(5803) + i $zobjval(,1,0,3,1)'=4,$zobjval(,1,0,3,1)>1 l +(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))#"S"):$zu(115,4) i '$t QUIT $$Error^%apiOBJ(5804) + i '$d(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))) s $zobjval(,4,0,3,4)="",$zobjval(,3,0,3,3)="",$zobjval(,8,0,3,7)="",$zobjval(,10,0,3,8)="",$zobjval(,11,0,3,9)="" + e DO + . n %s1 + . s sc=1 + . s %s1=$g(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))) + . s $zobjval(,8,0,3,7)=$lg(%s1,1),$zobjval(,10,0,3,8)=$lg(%s1,2),$zobjval(,11,0,3,9)=$lg(%s1,3),$zobjval(,4,0,3,4)=$lg(%s1,4),$zobjval(,3,0,3,3)=$lg(%s1,5) + i $zobjval(,1,0,3,1)=2 l -(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))#"SI") + QUIT $s(sc'="":sc,1:$$Error^%apiOBJ(5809)) +%LockId(%this,Id,Shared) public { If (Shared) { Set LockType = "s" } + Else { Set LockType = "e" } + Quit ..%AcquireLock(LockType) } +%New(initvalue) public { Quit ##class(Prod.Kenmerk.DataDefinitie).%New($get(initvalue)) +} +%Construct(%this,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) Set $zobjval(,1,0,3,1)=$zu(115,10),$zobjval(,2,0,3,2)=0,$zobjval(,4,0,3,4)="",$zobjval(,3,0,3,3)=0,$zobjval(,5,0,3,5)="",$zobjval(,6,0,3,5)="" + Set $zobjval(,7,0,3,6)="",$zobjval(,8,0,3,7)="",$zobjval(,9,0,3,7)="",$zobjval(,10,0,3,8)="",$zobjval(,11,0,3,9)="" + Set $zobjmod(,7)=0 + Quit ..%OnNew(.p1) +%NormalizeObject(%this) Set:$zobjval(,4,0,3,4)'="" $zobjval(,4,0,3,4)=(..FormuleNormalize($zobjval(,4,0,3,4))) + Set:$zobjval(,3,0,3,3)'="" $zobjval(,3,0,3,3)=(..InstanceVersionNormalize($zobjval(,3,0,3,3))) + Set:$zobjval(,7,0,3,6)'="" $zobjval(,7,0,3,6)=(..UnIDNormalize($zobjval(,7,0,3,6))) + Set:$zobjval(,10,0,3,8)'="" $zobjval(,10,0,3,8)=(..WijzigGebruikerNormalize($zobjval(,10,0,3,8))) + Quit 1 +%ObjectModified(%this) public { If $zobjmod(,0) Quit 1 + If $zobjval(,9,0,3,7)'="",..Waarden.%ObjectModified() Quit 1 + Quit 0 } +%Oid(%this) Quit $zobjval(%this,0,,,,3) +%OnAfterSave(%this,IsNew) Set IsNew=$get(IsNew,1) //w "Pre : "_$zobjval(,5,0,3,5),! + //DataIndex waarden verwijderen + Do ##class(Prod.Kenmerk.DataIndex).DeleteWaarden(%this.Kenmerk.Groep.Code,%this.Kenmerk.Kenmerk,$zobjval(,7,0,3,6)) ; %this.ProductGetObjectId()) + //DataIndex waarden opnieuw invullen (wordt apart gedaan om SaveStatus straks deftig te kunnen opvangen) + New Waarde, Key + Set Key="" + For Set Waarde=%this.Waarden.GetNext(.Key) Quit:Key="" Do + . Do ##class(Prod.Kenmerk.DataIndex).NewWaarde(%this.Kenmerk.Groep.Code,%this.Kenmerk.Kenmerk,$zobjval(,7,0,3,6),Waarde) + //De verschillende waarden in de vertalingstabel aanmaken + //Voorwaarden: Geen substitutie + New SaveOK,VTAKey,VTA //VertaalTransAbstract + Set (VTAKey,Key)="" + Set SaveOK=1 + For Set Waarde=%this.Waarden.GetNext(.Key) Quit:(('SaveOK)) Quit:Key="" Do + .For Set VTA=%this.Kenmerk.VertaalTransforms.GetNext(.VTAKey) Quit:(('SaveOK)) Quit:(VTAKey="") Do + ..If 'VTA.IsSubstitutie() Do //Enkel aanmaken wanneer geen substitutie + ...Set SaveOK=VTA.FWDCreateLanguageObjsViaVTList(Waarde) //Respectievelijke CreateLangObj's aanroepen + if SaveOK set SaveOK = ##class(TECH.Concurrency.VhPersistent)%this.%OnAfterSave(IsNew) + //w "After : "_$zobjval(,5,0,3,5),! + Quit SaveOK +%OnBeforeSave(%this,insert) public { Quit ##class(TECH.Concurrency.DbUtils).OnBeforeSave(%this, insert) +} +%OnDelete(Oid) ; + Do ##class(Prod.Kenmerk.DataIndex).DeleteWaarden($P($LG(Oid,1),"||",2),$P($LG(Oid,1),"||",3),$P($LG(Oid,1),"||",1)) + Quit 1 + ; ALTERNATIEVE METHODE + ; ============ ======= + ;New tmpThis + ;Set tmpThis=##class(Prod.Kenmerk.DataDefinitie).%OpenId(Oid) + ;Do:(tmpThis) ##class(Prod.Kenmerk.DataIndex).DeleteWaarden(tmpThis.Kenmerk.Groep.Code,tmpThis.Kenmerk.Kenmerk,tmpThis.UnID) + ;Do:(tmpThis) tmpThis.%Close() + ;Quit $$$OK + Quit "" +%OnDetermineClass(oid,class) n %o3,%o4,id,idclass + Set id=$lg($get(oid)) QUIT:id="" $$Error^%apiOBJ(5812) + Set %o4=$piece(id,"||",1),%o3=$piece(id,"||",2,3) + If (%o4="")||(%o3="") QUIT $$Error^%apiOBJ(5832,"Prod.Kenmerk.DataDefinitie",id) + s idclass=$g(^Prod.Ken.DataDefinitieD(%o4,%o3,0)) + i idclass="" s class="Prod.Kenmerk.DataDefinitie" Quit 1 + s class=$p(idclass,$e(idclass),$l(idclass,$e(idclass))-1) + s:class'["." class="User."_class + QUIT 1 +%OnNew(%this,initvalue) public { w ..Kenmerk,! + Quit "" } +%Open(oid,concurrency,sc) public { Set concurrency=$get(concurrency,-1),sc=$get(sc,1) If $lg($g(oid))="" Set sc = $$Error^%apiOBJ(5813) Quit "" + If concurrency = -1 Set concurrency=$zu(115,10) + If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Set sc = $$Error^%apiOBJ(5828) Quit "" + New %this Set class=$lg(oid,2) + If class="" { Set sc=##class(Prod.Kenmerk.DataDefinitie).%OnDetermineClass(oid,.class) Quit:('sc) "" Set oid=$s(oid="":"",1:$lb($lg(oid),class)) } Else { Set class=$s(class[".":class,$e(class)'="%":"User."_class,1:"%Library."_$e(class,2,$l(class))) } + If "Prod.Kenmerk.DataDefinitie"'=class Quit $zobjclassmethod(class,"%Open",oid,concurrency,.sc) + s %this=$zobjoid($lg(oid,2),$lg(oid)) + If %this'="" { If concurrency>$zobjval(,1,0,3,1) { Set sc=..%UpgradeConcurrency(concurrency) If ('sc) { Quit "" } } d %this.%IncrementCount() Quit %this } + Set %this=$zobjnew("Prod.Kenmerk.DataDefinitie") + Set $zobjval(,1,0,3,1)="",$zobjval(,1,0,3,1)=concurrency + Set $zobjval(,6,0,3,5)="",$zobjval(,9,0,3,7)="" + Set sc=..%Load($lg(oid)) If ('sc) Do ..%Close() Quit "" + Set $zobjval(,2,0,3,2)=0 + s $zobjmod(,0)=0 + Quit %this +} +%OpenId(id,concurrency,sc) public { Set concurrency=$get(concurrency,-1),sc=$get(sc,1) Quit ##class(Prod.Kenmerk.DataDefinitie).%Open($s(id="":"",1:$lb(id_"")),.concurrency,.sc) } +%PackageName() Quit "Prod.Kenmerk" +%PurgeIndices(idxlist) Set idxlist=$get(idxlist) QUIT 1 +%ReleaseLock(%this,locktype) n id,sc + s id=..%Id() QUIT:$g(id)="" $$Error^%apiOBJ(5812) + s sc=1 + i $g(locktype)="e" l -(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))) QUIT 1 + i $g(locktype)="s" l -(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))#"S") QUIT 1 + i $g(locktype)="si" l -(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),$zobjval(,5,0,3,5))#"SI") QUIT 1 + QUIT $$Error^%apiOBJ(5806,locktype) +%Reload(%this) public { If ..%Id()="" Quit $$Error^%apiOBJ(5813) + Set cur=$zobjval(,1,0,3,1),$zobjval(,1,0,3,1)=0 + Set $zobjval(,6,0,3,5)="",$zobjval(,9,0,3,7)="" + Set sc=..%Load(..%Id()) Set $zobjval(,1,0,3,1)=cur If ('sc) Do ..%Close() Quit "" + Set $zobjval(,2,0,3,2)=0 + s $zobjmod(,0)=0 + Quit 1 } +%RollBack(%this) public { If $data(%objtxMODIFIED(+%this)) s $zobjval(,0)=%objtxMODIFIED(+%this) + Quit 1 } +%Save(%this,related) public { Set related=$get(related,1) Set $ZTrap="%SaveERR" + New %objTX Set sc=1,traninit=0 + If $zobjval(,2,0,3,2) Set sc=..%AddToSaveSet(1) Quit:('sc) sc Set intRef=+%this,objValue=$get(%objTX(1,intRef,1)),sc=..%SerializeObject(.objValue,1) Set:(+sc) %objTX(1,intRef,1)=objValue Quit sc + If +$g(%objtxSTATUS)=0 { Set traninit=1 Kill %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxMODIFIED If '$zu(115,9) { Set %objtxSTATUS=1 } Else { Set %objtxSTATUS=2,%objtxLIST(+%this)="" TStart } } + Set sc=..%AddToSaveSet(related+2) If ('sc) ZTrap "SG" + Set intRef = $Order(%objTX(4,""),1,objRef) + While intRef '= "" { + If '$Data(%objTX(5,intRef)) { Set sc=objRef.%AddToSaveSet(related+2) Set %objTX(5,intRef) = objRef If ('sc) { ZTrap "SG" } } + Kill %objTX(4,intRef) + Set intRef = $Order(%objTX(4,""),1,objRef) + } + If '$data(%objTX(2)) s sc=1 GoTo %SaveCOMMIT + Set %objTX(3)=0,intRef="" For Set intRef=$order(%objTX(2,intRef)) Quit:intRef="" If '$data(%objTX(1,intRef,2)) Set %objTX(3,$increment(%objTX(3)))=%objTX(1,intRef) Kill %objTX(2,intRef) + For Quit:%objTX(3)<1 Set ptr=%objTX(3),objRef=%objTX(3,ptr),%objTX(3)=%objTX(3)-1 Kill %objTX(3,ptr) Set intRef=+objRef,objValue=$get(%objTX(1,intRef,1)),sc=objRef.%SerializeObject(.objValue) Do Set %objTX(1,intRef,1)=objValue Kill %objTX(1,intRef,3) s $zobjmod(objRef,0)=0 + . If ('sc) Kill:$g(%objtxSTATUS)=2 %objtxLIST(+objRef),%objtxMODIFIED(+objRef) ZTrap "SG" + . If $g(%objtxSTATUS)=2,objRef.%IsModified() s %objtxMODIFIED(+objRef)=$zobjval(objRef,0) + . Set intSucc="" For Set intSucc=$order(%objTX(1,intRef,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intRef,3,intSucc),%objTX(1,intSucc,2,intRef) If '$data(%objTX(1,intSucc,2)) Set %objTX(3,$increment(%objTX(3)))=%objTX(1,intSucc) Kill %objTX(2,intSucc) + For Set pserial=0 Do Quit:'pserial + . Set intRef="" For Set intRef=$order(%objTX(2,intRef)) Quit:intRef="" Set intPred="" For Set intPred=$order(%objTX(1,intRef,2,intPred)) Quit:intPred="" If %objTX(1,intPred,6)=1 Set objValue=$get(%objTX(1,intPred,1)),sc=(%objTX(1,intPred)).%SerializeObject(.objValue,1) If (+sc) Set pserial=1,%objTX(1,intPred,1)=objValue Do + . . Set intSucc="" For Set intSucc=$order(%objTX(1,intPred,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intPred,3,intSucc),%objTX(1,intSucc,2,intPred) If '$data(%objTX(1,intSucc,2)) Set %objTX(3,$i(%objTX(3)))=%objTX(1,intSucc) Kill %objTX(2,intSucc) + . . For Quit:%objTX(3)<1 Set ptr=%objTX(3),objSerialize=%objTX(3,ptr),%objTX(3)=%objTX(3)-1 Kill %objTX(3,ptr) Set intSerialize=+objSerialize,objValue=$get(%objTX(1,intSerialize,1)),sc=objSerialize.%SerializeObject(.objValue) Do Set %objTX(1,intSerialize,1)=objValue Kill %objTX(1,intSerialize,3) s $zobjmod(objSerialize,0)=0 + . . . If ('sc) Kill:$g(%objtxSTATUS)=2 %objtxLIST(+objSerialize),%objtxMODIFIED(+objSerialize) ZTrap "SG" + . . . If $g(%objtxSTATUS)=2,objSerialize.%IsModified() s %objtxMODIFIED(+objSerialize)=$zobjval(objSerialize,0) + . . . Set intSucc="" For Set intSucc=$order(%objTX(1,intSerialize,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intSerialize,3,intSucc),%objTX(1,intSucc,2,intSerialize) If '$data(%objTX(1,intSucc,2)) Set %objTX(3,$i(%objTX(3)))=%objTX(1,intSucc) Kill %objTX(2,intSucc) + If $data(%objTX(2))>2 Set sc=$$Error^%apiOBJ(5827) ZTrap "SG" +%SaveCOMMIT If traninit { If $g(%objtxSTATUS)=1 { Kill %objtxSTATUS } Else { TCommit Kill %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxMODIFIED Set sc=1 } } + s $zobjmod(,0)=0 Quit sc +%SaveERR Set $ZTrap="" If $extract($zerror,1,5)'="" Set sc=$$Error^%apiOBJ(5002,$ZE) + Set:traninit sc=$select(+sc:$$%TRollBack^%occTransaction(),1:$$AppendStatus^%occSystem(sc,$$%TRollBack^%occTransaction())) + Quit sc } +%SaveData(%this,id) n av1,idassigned,idclass,insert,lock,locku,sc + Set sc=1,id=..%Id() If id'="" { Set insert=0,idassigned=1 } Else { Set insert=1,idassigned=0 } + s idclass="" + Set lock=0,locku="" + s av1=%objOBJ(72) + i 'insert,'(($d(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),av1)))) s insert=1 + If insert DO + . i 'idassigned s id=$zobjval(,7,0,3,6)_"||"_%objOBJ(72) i 1 + . e i $s($zobjval(,7,0,3,6)'=$piece(id,"||",1):1,%objOBJ(72)'=$piece(id,"||",2,3):1,1:0) s sc=$$Error^%apiOBJ(5814) q + . i $zobjval(,1,0,3,1) l +(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),av1)):$zu(115,4) s lock=$t e s sc=$$Error^%apiOBJ(5803) q + . If $data(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),av1)) Set sc=$$Error^%apiOBJ(5805,"Prod.Kenmerk.DataDefinitie") Quit + . i 'idassigned s sc=..%IdSet(id) q:('sc) s:$g(%objtxSTATUS)=2 %objtxOIDASSIGNED(+%this)="" + . s ^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),av1)=$lb(%objOBJ(75),$zobjval(,10,0,3,8),$zobjval(,11,0,3,9),$zobjval(,4,0,3,4),$zobjval(,3,0,3,3)) + . i $zobjval(,1,0,3,1)=3 l +(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),av1)#"S") + . s:$zobjval(,1,0,3,1)=4 lock=0 + If 'insert DO + . n %a1 + . i $s($zobjval(,7,0,3,6)'=$piece(id,"||",1):1,%objOBJ(72)'=$piece(id,"||",2,3):1,1:0) s sc=$$Error^%apiOBJ(5814) q + . i $zobjval(,1,0,3,1) l +(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),av1)):$zu(115,4) s lock=$t e s sc=$$Error^%apiOBJ(5803) q + . s %a1=%objOBJ(72) + . s ^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),av1)=$lb(%objOBJ(75),$zobjval(,10,0,3,8),$zobjval(,11,0,3,9),$zobjval(,4,0,3,4),$zobjval(,3,0,3,3)) + i lock l -(^Prod.Ken.DataDefinitieD($zobjval(,7,0,3,6),av1)) + QUIT sc +%SerializeObject(%this,serial,partial) Set partial=$get(partial,0) New %objOBJ,sc,id + Set $Ztrap = "%SerializeObjectERR" + If $zobjval(,2,0,3,2) { Set partial = 1 } ElseIf ('partial) { Set $zobjval(,2,0,3,2) = 1 } + Set sc=..%ValidateObject() If ('sc) { Ztrap "SO" } + Set sc=..%NormalizeObject() If ('sc) { Ztrap "SO" } + If $zobjval(,6,0,3,5)'="" { Set:'$data(%objTX(1,+$zobjval(,6,0,3,5),1)) %objTX(1,+$zobjval(,6,0,3,5))=$zobjval(,6,0,3,5),%objTX(1,+$zobjval(,6,0,3,5),1)=..KenmerkGetObject(1),%objTX(1,+$zobjval(,6,0,3,5),6)=1 Set %objOBJ(72)=$lg(%objTX(1,+$zobjval(,6,0,3,5),1)),$zobjval(,5,0,3,5)=%objOBJ(72) } Else { Set %objOBJ(72)=$zobjval(,5,0,3,5) } + If %objOBJ(72)="" Quit $$Error^%apiOBJ(5659,"Kenmerk") + If $zobjval(,9,0,3,7)'="" { Set:'$data(%objTX(1,+$zobjval(,9,0,3,7),1)) %objTX(1,+$zobjval(,9,0,3,7))=$zobjval(,9,0,3,7),%objTX(1,+$zobjval(,9,0,3,7),1)=..WaardenGetObject(1),%objTX(1,+$zobjval(,9,0,3,7),6)=2 Set %objOBJ(75)=$lg(%objTX(1,+$zobjval(,9,0,3,7),1)),$zobjval(,8,0,3,7)=%objOBJ(75) } Else { Set %objOBJ(75)=$zobjval(,8,0,3,7) } + s:$g(%objtxSTATUS)=2 %objtxLIST(+%this)=%this + If 'partial { Set sc=..%OnBeforeSave(%objTX(1,+%this,4)) If ('sc) { Ztrap "SO" } } + Set id=$lg(serial),sc=..%SaveData(.id) If ('sc) { Ztrap "SO" } + If 'partial { Set sc=..%OnAfterSave(%objTX(1,+%this,4)) If ('sc) { Ztrap "SO" } } + Set serial=(..%Oid()) + If 'partial { Set $zobjval(,2,0,3,2) = 0 } + Quit sc +%SerializeObjectERR Set $ZTrap="" If $extract($zerror,1,5)'="" Set sc=$$Error^%apiOBJ(5002,$ZE) + If 'partial { Set $zobjval(,2,0,3,2) = 0 } + Quit sc +%AddToSaveSet(%this,depth,refresh,norecurseon) public { Set depth=$get(depth,3),refresh=$get(refresh,0),norecurseon=$get(norecurseon) If ($data(%objTX(1,+%this))) && ('refresh) Quit 1 + Set sc=1,intOref=+%this + If refresh { + Set intPoref=$order(%objTX(1,intOref,2,"")) + While intPoref'="" { Kill %objTX(1,intPoref,3,intOref),%objTX(1,intOref,2,intPoref) Set intPoref=$order(%objTX(1,intOref,2,intPoref)) } + } + Set serial=..%Oid(),%objTX(1,intOref)=%this,%objTX(1,intOref,1)=serial,%objTX(1,intOref,6)=1 If (serial '= "") && (depth<2) Quit 1 + Set %objTX(1,intOref,4)=$select(%objTX(1,intOref,1)="":1,##class(Prod.Kenmerk.DataDefinitie).%ExistsId($lg(%objTX(1,intOref,1))):0,1:1) + Set tDepth=$select(depth'=2:depth,1:1) + If $zobjval(,6,0,3,5)'="" { + If '$data(%objTX(1,+$zobjval(,6,0,3,5))) Set sc=..Kenmerk.%AddToSaveSet(tDepth) Quit:('sc) sc + Set intPoref=+$zobjval(,6,0,3,5) If $get(%objTX(1,intPoref,1))="" Set %objTX(1,intPoref,3,intOref)="",%objTX(1,intOref,2,intPoref)="" + } + If $zobjval(,9,0,3,7)'="" { + If '$data(%objTX(1,+$zobjval(,9,0,3,7))) Set sc=..Waarden.%AddToSaveSet(tDepth) Quit:('sc) sc + Set intPoref=+$zobjval(,9,0,3,7),%objTX(1,intPoref,3,intOref)="",%objTX(1,intOref,2,intPoref)="" + } + If ..%ObjectModified() Set %objTX(2,intOref)=1 +exit Quit sc } +%RemoveFromSaveSet(%this) public { + If '($data(%objTX(1,+%this))) Quit 1 + Set intRef=+%this + Set intSucc="" For Set intSucc=$order(%objTX(1,intRef,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intSucc,2,intRef) + Set intPred="" For Set intPred=$order(%objTX(1,intRef,2,intPred)) Quit:intPred="" Kill %objTX(1,intPred,3,intRef) + Kill %objTX(1,intRef),%objTX(2,intRef) + Quit 1 } +%SetModified(%this,value) public { s $zobjmod(,0)=value + Quit 1 } +%SortBegin(idxlist,excludeunique) Set idxlist=$get(idxlist),excludeunique=$get(excludeunique,0) QUIT 1 +%SortEnd(idxlist,commit) Set idxlist=$get(idxlist),commit=$get(commit,1) QUIT 1 +%UnlockId(Id,Shared) public { Set Object = ##class(Prod.Kenmerk.DataDefinitie).%OpenId(Id,0) + If (Shared) { Set LockType = "s" } + Else { Set LockType = "e" } + Quit Object.ReleaseLock(LockType) } +%UpgradeConcurrency(%this,concurrency) public { Set concurrency=$get(concurrency,0) If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set current=$zobjval(,1,0,3,1) + Quit:concurrencycurrent $zobjval(,1,0,3,1)=concurrency Quit 1 + Set sc=..%AcquireLock($select(concurrency=3:"s",1:"e")) Quit:('sc) sc + If current=3 Do ..%ReleaseLock("s") + Set $zobjval(,1,0,3,1)=concurrency + Quit 1 } +%ValidateObject(%this,force) Set force=$get(force,0) New iv + If $zobjval(,6,0,3,5)="",$zobjval(,5,0,3,5)="" Quit $$Error^%apiOBJ(5659,"Kenmerk") + If '(..%IsModified()) Quit 1 + If $zobjmod(,3) Set iv=$zobjval(,3,0,3,3) If iv'="" Set iv=(..InstanceVersionIsValid(iv)) Quit:('iv) iv + Set iv=$zobjval(,7,0,3,6) If iv="" Quit $$Error^%apiOBJ(5659,"UnID") + Quit 1 +zBuildDataDefinitionID(GroepID,UnID,Kenmerk) public { Quit UnID_"||"_GroepID_"||"_Kenmerk } +zCheckStatusCode(%this,StatusCode,Message) public { If ('StatusCode) { + Set $ECODE="`"_"1000:GeneralError"_"`"_Message_"`"_$$ParseStatus^vhLib(StatusCode)_"`" + } } +zCleanUp() [ SQLCODE ] public { New SQLCODE + ;---&sql(DELETE from Prod_Kenmerk.DataDefinitie AS Kenmerken where NOT EXISTS (SELECT 1 FROM Prod.Product WHERE ID = $piece(Kenmerken.UnID,".",1))) } + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %0o } + q +%0Ed1 s %mmmsqld(26)=%mmmsqld(2) + q +%0o n %mmmsqlc,%mmmsqld,%mmmsqlE,%mmmsqll,%mmmsqln,%mmmsqlp,%mmmsqlR,%mmmsqls,%mmmsqlt,%mmmsqlTS,%mmmsqlZ s $zt="%0err",$ze="" s:'$d(%0snrc) %0snrc=+$g(^%SYS("sql","sys","no filer referential checks")) s %mmmsqld(14)=0 s %mmmsqld(15)="" + s %mmmsqld(1)=1,%mmmsqld(5)=".",%mmmsqld(6)=1 + s SQLCODE=100 + s %mmmsqlTS=0 If $zu(115,1)=1,'$TLEVEL { TSTART s %mmmsqlTS=1 } + s %mmmsqlt(1)=$i(^mtemp0) + k ^mtemp0(%mmmsqlt(1),0) s ^mtemp0(%mmmsqlt(1),0)=$H_"^"_$J_"^"_$zu(67,11,$j)_"^"_$zu(67,12,$j)_"^"_$zu(67,15,$j)_"^"_$ZN_"^"_$zu(67,6,$j) + ; asl MOD# 2 + s %mmmsqld(3)="" +%0Bk1 s %mmmsqld(3)=$o(^Prod.Ken.DataDefinitieD(%mmmsqld(3))) + i %mmmsqld(3)="" g %0Bdun + s %mmmsqld(18)=$s(%mmmsqld(3)'="":%mmmsqld(3),1:-1E14) + i $l(%mmmsqld(18))>120||'$d(^mtemp0(%mmmsqlt(1),0,%mmmsqld(18)),%mmmsqld(8)) s %mmmsqld(8)="" d %0DMod s:$l(%mmmsqld(18))'>120 ^mtemp0(%mmmsqlt(1),0,%mmmsqld(18))=%mmmsqld(8) + i ''%mmmsqld(8) g %0Bk1 + s %mmmsqld(10)="" +%0Bk2 s %mmmsqld(10)=$o(^Prod.Ken.DataDefinitieD(%mmmsqld(3),%mmmsqld(10))) + i %mmmsqld(10)="" g %0Bk1 + s %mmmsqld(9)=(%mmmsqld(3))_"||"_(%mmmsqld(10)) + s %mmmsqld(21)=$$%getlock^Prod.Kenmerk.DataDefinitie.T1(%mmmsqld(9)) i '%mmmsqld(21) s SQLCODE=-110 g %0c + ; asl MOD# 3 + s %mmmsqld(11)=$lb(""_%mmmsqld(3)) + s %mmmsqld(3)=$p(%mmmsqld(9),"||"),%mmmsqld(10)=$p(%mmmsqld(9),"||",2,3) + i %mmmsqld(3)'="",%mmmsqld(10)'="",$d(^Prod.Ken.DataDefinitieD(%mmmsqld(3),%mmmsqld(10))) + e g %0Cdun + s %mmmsqld(12)=$lb(""_%mmmsqld(3)) + g:%mmmsqld(11)'=%mmmsqld(12) %0Cdun + d %delete^Prod.Kenmerk.DataDefinitie.T1(%mmmsqld(9),$c(0,1,0,0),'$g(%mmmsqlTS)) + i 'SQLCODE i $i(%mmmsqld(14)) +%0Cdun + d:%mmmsqld(21)=1 %ReleaseLock^Prod.Kenmerk.DataDefinitie.T1(%mmmsqld(9)) g:SQLCODE<0 %0c + g %0Bk2 +%0Bdun +%0Adun +%0c s %ROWCOUNT=+$g(%mmmsqld(14)) k ^mtemp0(%mmmsqlt(1)) TCOMMIT:$g(%mmmsqlTS)&&($zu(115,1)=1)&&(SQLCODE'<0) If $g(%mmmsqlTS)&&($zu(115,1)=1)&&(SQLCODE<0) { TROLLBACK s %ROWCOUNT=0} q +%0err s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) d:$g(%mmmsqld(21))=1 %ReleaseLock^Prod.Kenmerk.DataDefinitie.T1(%mmmsqld(9)) g %0c +%0DMod ; asl MOD# 4 + s %mmmsqld(7)=$s(%mmmsqld(3)="":"",%mmmsqld(5)="":"",%mmmsqld(6)="":"",1:$Piece(%mmmsqld(3),%mmmsqld(5),%mmmsqld(6))) + ; asl MOD# 5 + s %mmmsqld(2)=%mmmsqld(7) + s %mmmsqld(13)=$p(%mmmsqld(2),"||") + i %mmmsqld(2)'="",$d(^KPR(%mmmsqld(2))) + i '$t + e i '%mmmsqld(2) + e d %0Ed1 i 0 + i g %0Edun + s %mmmsqld(8)=1 q +%0Edun +%0Ddun + q +zCopyViaPRNr(FromPRNr,ToPRNr,lbGroepIDs,blnOverwrite,UserID,lbExcludeGroepIDs) public { Set blnOverwrite=$get(blnOverwrite,0) Set FromUnID=FromPRNr ; Uit te breiden if multiple + Set ToUnID=ToPRNr ; Uit te breiden if multiple + Quit ##class(Prod.Kenmerk.DataDefinitie).CopyViaUnID(FromUnID,ToUnID,.lbGroepIDs,.blnOverwrite,.UserID,.lbExcludeGroepIDs) } +zCopyViaUnID(FromUnID,ToUnID,lbGroepIDs,blnOverwrite,UserID,lbExcludeGroepIDs) [ DDefID,FromUnID,GroepID,KenmerkGroep,SQLCODE ] public { New DDefID,GroepID,KenmerkGroep,SQLCODE Set blnOverwrite=$get(blnOverwrite,0) + Quit:(FromUnID="")||(ToUnID="") $$Error^%apiOBJ(5001,"CopyViaUnID: FromUnID en ToUnID mogen niet leeg zijn") + Set sc=1 + If $G(lbGroepIDs)="" Set sc=$$cvpCopyGroep(FromUnID,ToUnID,"*",.lbExcludeGroepIDs) ; Alle groepen + Else Do + . For i=1:1:$LL(lbGroepIDs) Do Quit:(('sc)) + . . Set sc=$$cvpCopyGroep(FromUnID,ToUnID,$LG(lbGroepIDs,i)) ; Per groep + Quit sc +cvpCopyGroep(FromUnID,ToUnID,GroepID,lbExcludeGroepIDs) + Quit:(GroepID="") 1 + ; ToUnID : Delete previous values if blnOverwrite + If blnOverwrite Set sc=##class(Prod.Kenmerk.DataDefinitie).DeleteViaUnID(ToUnID,$LB(GroepID)) + Else If ##class(Prod.Kenmerk.DataDefinitie).Exists(ToUnID,GroepID) Set sc=$$Error^%apiOBJ(5001,"CopyViaUnID: Destination product is not empty (UnID="_ToUnID_")") + Quit:(('sc)) sc + ; Copy all kenmerken for this GroepID + ;---&sql(DECLARE crsCP CURSOR FOR + ;--- SELECT ID,Kenmerk->Groep INTO :DDefID,:KenmerkGroep FROM Prod_Kenmerk.DataDefinitie + ;--- WHERE (UnID=:FromUnID) AND ((Kenmerk->Groep = :GroepID) OR (:GroepID="*")) ) + ;--- ** SQL PUBLIC Variables: DDefID, FromUnID, GroepID, KenmerkGroep, SQLCODE + + ;---&sql(OPEN crsCP) + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %crsCP0o + Kill sc + ;---For &sql(FETCH crsCP) Quit:SQLCODE Do Quit:(('sc)) + ;--- ** SQL PUBLIC Variables: SQLCODE + For Do %0Fo Quit:SQLCODE Do Quit:(('sc)) + . If $LL($G(lbExcludeGroepIDs)) Quit:$LF(lbExcludeGroepIDs,KenmerkGroep) + . Set objFrom=##class(Prod.Kenmerk.DataDefinitie).%OpenId(DDefID) + . Set objNew=objFrom.%ConstructClone(0) + . Set objNew.UnID=ToUnID + . ;Do objNew.ProductSetObjectId(ToPRNr) + . Set objNew.WijzigTijdstip="" ; $zdt($H,4) + . Set:($L($G(UserID))) objNew.WijzigGebruiker=UserID + . Set sc=objNew.%Save() + . Set objFrom="" + . Set objNew="" + Set sc=$G(sc,$$Error^%apiOBJ(5001,"CopyViaUnID: Geen kenmerken voor dit product (UnID="_FromUnID_", GroepID="_GroepID_")")) + ;---&sql(CLOSE crsCP) + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %crsCP0c + Quit sc } + q +%crsCP0o s SQLCODE=$s($g(%crsCP0c):-101,1:0) q:SQLCODE'=0 s %crsCP0d(19)=0 s %crsCP0d(20)=0,%crsCP0d(21)="",%crsCP0d(22)=0,%crsCP0d(23)="" + s %crsCP0d(6)=$g(FromUnID),%crsCP0d(7)=$g(GroepID),%crsCP0d(8)=$g(GroepID),%crsCP0d(9)="*" + s %crsCP0c=1 q +%0Cfirst + ; asl MOD# 2 + s %crsCP0d(5)=%crsCP0d(6) + i %crsCP0d(5)="" g %0CBdun + s %crsCP0d(11)="" +%0CBk1 s %crsCP0d(11)=$o(^Prod.Ken.DataDefinitieD(%crsCP0d(5),%crsCP0d(11))) + i %crsCP0d(11)="" g %0CBdun + s DDefID=(%crsCP0d(5))_"||"_(%crsCP0d(11)) + g:$zu(115,2)=0 %0CBuncommitted i $zu(115,2)=1 l +^Prod.Ken.DataDefinitieD($p(DDefID,"||",1),$p(DDefID,"||",2,3))#"S":$zu(115,4) i $t { s %crsCP0d(20)=1,%crsCP0d(21)=$name(^Prod.Ken.DataDefinitieD($p(DDefID,"||",1),$p(DDefID,"||",2,3)))_"#""SI""" } else { s SQLCODE=-114,%msg="Unable to acquire shared lock on table Prod_Kenmerk.DataDefinitie for RowID value: "_DDefID q } + ; asl MOD# 3 + s %crsCP0d(13)=$lb(""_%crsCP0d(5)) + s %crsCP0d(5)=$p(DDefID,"||"),%crsCP0d(11)=$p(DDefID,"||",2,3) + i %crsCP0d(5)'="",%crsCP0d(11)'="",$d(^Prod.Ken.DataDefinitieD(%crsCP0d(5),%crsCP0d(11))) + e g %0CCdun + s %crsCP0d(14)=$lb(""_%crsCP0d(5)) + g:%crsCP0d(13)'=%crsCP0d(14) %0CCdun +%0CBuncommitted ; + s %crsCP0d(12)=%crsCP0d(11) + s %crsCP0d(15)=$p(%crsCP0d(12),"||"),%crsCP0d(16)=$p(%crsCP0d(12),"||",2) + i %crsCP0d(15)'="",%crsCP0d(16)'="",$d(^Prod.Ken.MetaDefinitieD(%crsCP0d(15),"MD",%crsCP0d(16))) + e s KenmerkGroep="",%crsCP0d(12)="" g %0CCp9 + s KenmerkGroep=$p(%crsCP0d(12),"||") +%0CCp9 + g:'(((KenmerkGroep'="")&(KenmerkGroep=%crsCP0d(7)))!(%crsCP0d(8)=%crsCP0d(9))) %0CCdun + g:$zu(115,2)=0 %0CCuncommitted i $zu(115,2)=1 l +^Prod.Ken.MetaDefinitieD($p(%crsCP0d(12),"||",1),"MD",$p(%crsCP0d(12),"||",2))#"S":$zu(115,4) i $t { s %crsCP0d(22)=1,%crsCP0d(23)=$name(^Prod.Ken.MetaDefinitieD($p(%crsCP0d(12),"||",1),"MD",$p(%crsCP0d(12),"||",2)))_"#""SI""" } else { s SQLCODE=-114,%msg="Unable to acquire shared lock on table Prod_Kenmerk.MetaDefinitie for RowID value: "_%crsCP0d(12) q } + ; asl MOD# 4 + s %crsCP0d(17)=$lb(""_KenmerkGroep) + s %crsCP0d(15)=$p(%crsCP0d(12),"||"),%crsCP0d(16)=$p(%crsCP0d(12),"||",2) + i %crsCP0d(15)'="",%crsCP0d(16)'="",$d(^Prod.Ken.MetaDefinitieD(%crsCP0d(15),"MD",%crsCP0d(16))) + e s KenmerkGroep="",%crsCP0d(12)="" g %0CDp3 + s KenmerkGroep=$p(%crsCP0d(12),"||") +%0CDp3 + s %crsCP0d(18)=$lb(""_KenmerkGroep) + g:%crsCP0d(17)'=%crsCP0d(18) %0CDdun +%0CCuncommitted ; + s:$g(SQLCODE)'<0 SQLCODE=0 s %ROWCOUNT=$i(%crsCP0d(19)) s %crsCP0c=10 q +%crsCP0f i '$g(%crsCP0c) { s SQLCODE=-102 q } i %crsCP0c=100 { s SQLCODE=100 q } s SQLCODE=0 + s $zt="%0Cerr" s $ze="" g %0Cfirst:%crsCP0c=1 +%0CDdun i $zu(115,2)=1,$g(%crsCP0d(22))=1 { l -@%crsCP0d(23) } +%0CCdun i $zu(115,2)=1,$g(%crsCP0d(20))=1 { l -@%crsCP0d(21) } + g %0CBk1 +%0CBdun +%0CAdun + s %ROWCOUNT=%crsCP0d(19),SQLCODE=100,%crsCP0c=100 q +%crsCP0c i '$g(%crsCP0c) { s SQLCODE=-102 q } s %ROWCOUNT=+$g(%crsCP0d(19)) + i $zu(115,2)=1,$g(%crsCP0d(20))=1 { l -@%crsCP0d(21) } i $zu(115,2)=1,$g(%crsCP0d(22))=1 { l -@%crsCP0d(23) } k %crsCP0c,%crsCP0d,%crsCP0E,%crsCP0l,%crsCP0n,%crsCP0R,%crsCP0Z s SQLCODE=0 q +%0Cerr s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) s %crsCP0c=100 q +%0Fo d %crsCP0f q:SQLCODE'=0 + q +zDeleteKM(GroepID,UnID,Kenmerk) public { Set sc=1 + Set:(##class(Prod.Kenmerk.DataDefinitie).%ExistsId(UnID_"||"_GroepID_"||"_Kenmerk)) sc=##class(Prod.Kenmerk.DataDefinitie).%DeleteId(UnID_"||"_GroepID_"||"_Kenmerk) + Quit sc } +zDeleteViaPRNr(PRNr,lbGroepIDs) public { Set UnID=$G(PRNr) + Quit ##class(Prod.Kenmerk.DataDefinitie).DeleteViaUnID(UnID,.lbGroepIDs) } +zDeleteViaPRNrVBA(PRNr,GroepIDs) public { Set UnID=$G(PRNr) + Set lbGroepIDs=$$PiecesToList^vhLib(GroepIDs,";") + Set sc=##class(Prod.Kenmerk.DataDefinitie).DeleteViaUnID(UnID,lbGroepIDs) + Quit $$ParseStatus^vhLib(sc) } +zDeleteViaUnID(UnID,lbGroepIDs) [ DDefID,GroepID,SQLCODE,UnID ] public { New DDefID,GroepID,SQLCODE + Quit:($G(UnID)="") 1 + Set lbGroepIDs=$G(lbGroepIDs) + Set:('$$IsList^vhLib(lbGroepIDs)) lbGroepIDs=$$PiecesToList^vhLib(lbGroepIDs,";") ; Added by WimV on 27/10/2009 (make VBA-compatible) + If $G(lbGroepIDs)="" Do dvpDeleteGroep(UnID,"*") + Else Do + . For i=1:1:$LL(lbGroepIDs) Do:($L($LG(lbGroepIDs,i))) dvpDeleteGroep(UnID,$LG(lbGroepIDs,i)) ; Per groep + Quit 1 +dvpDeleteGroep(UnID,GroepID) + ;New DDefID,SQLCODE + ;---&sql(DECLARE crsDP CURSOR FOR + ;--- SELECT ID INTO :DDefID FROM Prod_Kenmerk.DataDefinitie + ;--- WHERE (UnID=:UnID) AND ((Kenmerk->Groep = :GroepID) OR (:GroepID="*")) ) + ;--- ** SQL PUBLIC Variables: DDefID, GroepID, SQLCODE, UnID + + ;---&sql(OPEN crsDP) + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %crsDP0o + ;---For &sql(FETCH crsDP) Quit:SQLCODE Do ##class(Prod.Kenmerk.DataDefinitie).%DeleteId(DDefID) + ;--- ** SQL PUBLIC Variables: SQLCODE + For Do %0Ko Quit:SQLCODE Do ##class(Prod.Kenmerk.DataDefinitie).%DeleteId(DDefID) + ;---&sql(CLOSE crsDP) + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %crsDP0c + Quit } + q +%crsDP0o s SQLCODE=$s($g(%crsDP0c):-101,1:0) q:SQLCODE'=0 s %crsDP0d(18)=0 s %crsDP0d(19)=0,%crsDP0d(20)="",%crsDP0d(21)=0,%crsDP0d(22)="" + s %crsDP0d(4)=$g(UnID),%crsDP0d(6)=$g(GroepID),%crsDP0d(7)=$g(GroepID),%crsDP0d(8)="*" + s %crsDP0c=1 q +%0Hfirst + ; asl MOD# 2 + s %crsDP0d(3)=%crsDP0d(4) + i %crsDP0d(3)="" g %0HBdun + s %crsDP0d(10)="" +%0HBk1 s %crsDP0d(10)=$o(^Prod.Ken.DataDefinitieD(%crsDP0d(3),%crsDP0d(10))) + i %crsDP0d(10)="" g %0HBdun + s DDefID=(%crsDP0d(3))_"||"_(%crsDP0d(10)) + g:$zu(115,2)=0 %0HBuncommitted i $zu(115,2)=1 l +^Prod.Ken.DataDefinitieD($p(DDefID,"||",1),$p(DDefID,"||",2,3))#"S":$zu(115,4) i $t { s %crsDP0d(19)=1,%crsDP0d(20)=$name(^Prod.Ken.DataDefinitieD($p(DDefID,"||",1),$p(DDefID,"||",2,3)))_"#""SI""" } else { s SQLCODE=-114,%msg="Unable to acquire shared lock on table Prod_Kenmerk.DataDefinitie for RowID value: "_DDefID q } + ; asl MOD# 3 + s %crsDP0d(12)=$lb(""_%crsDP0d(3)) + s %crsDP0d(3)=$p(DDefID,"||"),%crsDP0d(10)=$p(DDefID,"||",2,3) + i %crsDP0d(3)'="",%crsDP0d(10)'="",$d(^Prod.Ken.DataDefinitieD(%crsDP0d(3),%crsDP0d(10))) + e g %0HCdun + s %crsDP0d(13)=$lb(""_%crsDP0d(3)) + g:%crsDP0d(12)'=%crsDP0d(13) %0HCdun +%0HBuncommitted ; + s %crsDP0d(11)=%crsDP0d(10) + s %crsDP0d(14)=$p(%crsDP0d(11),"||"),%crsDP0d(15)=$p(%crsDP0d(11),"||",2) + i %crsDP0d(14)'="",%crsDP0d(15)'="",$d(^Prod.Ken.MetaDefinitieD(%crsDP0d(14),"MD",%crsDP0d(15))) + e s %crsDP0d(5)="",%crsDP0d(11)="" g %0HCp9 + s %crsDP0d(5)=$p(%crsDP0d(11),"||") +%0HCp9 + g:'(((%crsDP0d(5)'="")&(%crsDP0d(5)=%crsDP0d(6)))!(%crsDP0d(7)=%crsDP0d(8))) %0HCdun + g:$zu(115,2)=0 %0HCuncommitted i $zu(115,2)=1 l +^Prod.Ken.MetaDefinitieD($p(%crsDP0d(11),"||",1),"MD",$p(%crsDP0d(11),"||",2))#"S":$zu(115,4) i $t { s %crsDP0d(21)=1,%crsDP0d(22)=$name(^Prod.Ken.MetaDefinitieD($p(%crsDP0d(11),"||",1),"MD",$p(%crsDP0d(11),"||",2)))_"#""SI""" } else { s SQLCODE=-114,%msg="Unable to acquire shared lock on table Prod_Kenmerk.MetaDefinitie for RowID value: "_%crsDP0d(11) q } + ; asl MOD# 4 + s %crsDP0d(16)=$lb(""_%crsDP0d(5)) + s %crsDP0d(14)=$p(%crsDP0d(11),"||"),%crsDP0d(15)=$p(%crsDP0d(11),"||",2) + i %crsDP0d(14)'="",%crsDP0d(15)'="",$d(^Prod.Ken.MetaDefinitieD(%crsDP0d(14),"MD",%crsDP0d(15))) + e s %crsDP0d(5)="",%crsDP0d(11)="" g %0HDp3 + s %crsDP0d(5)=$p(%crsDP0d(11),"||") +%0HDp3 + s %crsDP0d(17)=$lb(""_%crsDP0d(5)) + g:%crsDP0d(16)'=%crsDP0d(17) %0HDdun +%0HCuncommitted ; + s:$g(SQLCODE)'<0 SQLCODE=0 s %ROWCOUNT=$i(%crsDP0d(18)) s %crsDP0c=10 q +%crsDP0f i '$g(%crsDP0c) { s SQLCODE=-102 q } i %crsDP0c=100 { s SQLCODE=100 q } s SQLCODE=0 + s $zt="%0Herr" s $ze="" g %0Hfirst:%crsDP0c=1 +%0HDdun i $zu(115,2)=1,$g(%crsDP0d(21))=1 { l -@%crsDP0d(22) } +%0HCdun i $zu(115,2)=1,$g(%crsDP0d(19))=1 { l -@%crsDP0d(20) } + g %0HBk1 +%0HBdun +%0HAdun + s %ROWCOUNT=%crsDP0d(18),SQLCODE=100,%crsDP0c=100 q +%crsDP0c i '$g(%crsDP0c) { s SQLCODE=-102 q } s %ROWCOUNT=+$g(%crsDP0d(18)) + i $zu(115,2)=1,$g(%crsDP0d(19))=1 { l -@%crsDP0d(20) } i $zu(115,2)=1,$g(%crsDP0d(21))=1 { l -@%crsDP0d(22) } k %crsDP0c,%crsDP0d,%crsDP0E,%crsDP0l,%crsDP0n,%crsDP0R,%crsDP0Z s SQLCODE=0 q +%0Herr s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) s %crsDP0c=100 q +%0Ko d %crsDP0f q:SQLCODE'=0 + q +zExcelDataDefsAddOneVBA(Params) public { Set GroepID=$P(Params,"\",1) + Set UnID=$P(Params,"\",3) ; =PRNr + Set %arProductAdded(GroepID,UnID)="" + Quit ##class(Prod.Kenmerk.DataDefinitie).NewObjectViaList(.Params) } +zExcelDataDefsCleanUpVBA(GroepID,blnForceDelete) [ DDefID,GroepID,SQLCODE,UnID ] public { New DDefID,SQLCODE,UnID Set blnForceDelete=$get(blnForceDelete,0) Quit:(GroepID="") "" + If $D(%arProductAdded(GroepID))>1 Do + . ; Producten zijn reeds ge-update + Else Quit:(blnForceDelete=0) + ; Delete DataDefs if + ;---&sql(DECLARE crsDD CURSOR FOR SELECT ID , UnID + ;--- INTO :DDefID, UnID FROM Prod_Kenmerk.DataDefinitie WHERE (Kenmerk LIKE :GroepID || "||%")) + ;--- ** SQL PUBLIC Variables: DDefID, GroepID, SQLCODE, UnID + + ;---&sql(OPEN crsDD) + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %crsDD0o + ;---For &sql(FETCH crsDD) Quit:SQLCODE Do:($L(UnID)) + ;--- ** SQL PUBLIC Variables: SQLCODE + For Do %0Qo Quit:SQLCODE Do:($L(UnID)) + . Quit:($D(%arProductAdded(GroepID,UnID))) + . Quit:($ZCVT($E($LG(##class(Prod.Kenmerk.DataDefinitie).Get(GroepID,UnID,"Opties"),1),1,8),"U")="DYNAPLUG") ; Do not delete Kenmerk for this product (UnID), it's set by Dynaplug. + . Set sc=##class(Prod.Kenmerk.DataDefinitie).%DeleteId(DDefID) + . If (+sc) Set %arProductAdded("-"_GroepID,UnID,DDefID)="" + . Else Do + . . Set %arProductAdded("-"_GroepID,UnID,DDefID)=$$ParseStatus^vhLib(sc) + . . Set %arProductAdded("-"_GroepID_"-ERR",UnID)=1 + ;---&sql(CLOSE crsDD) + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %crsDD0c + Set PctJ=$$%J^vhRtn1() + Kill ^HULP("WV-TBX",PctJ) + Set ^HULP("WV-TBX",PctJ,"A")="Excel DataDefs CleanUp on "_$ZDT($H,4) + Merge ^HULP("WV-TBX",PctJ,"Log")=%arProductAdded + Kill ^HULP("WV-TBX",PctJ,"Log",GroepID) + ; Statistics of deleted DataDefs + Set msg="" + Set CntPR=0 + Set UnID="" + For Set UnID=$O(%arProductAdded("-"_GroepID,UnID)) Quit:(UnID="") Do + . Set CntPR=CntPR+1 + . Quit:(CntPR>10) + . If $G(%arProductAdded("-"_GroepID_"-ERR",UnID))=1 Do + . . Set msg=msg_"UnID="_UnID_" > " + . . Set iDD="" + . . For Set iDD=$O(%arProductAdded("-"_GroepID,UnID,iDD)) Quit:(iDD="") Do + . . . Set Status=$G(%arProductAdded("-"_GroepID,UnID,iDD)) + . . . Set msg=msg_iDD_$S($L(Status):": "_Status, 1:"")_" - " + . . Set msg=msg_" < "_$C(13,10) + . Else Do + . . Set msg=msg_"UnID="_UnID_$C(13,10) + Set:(CntPR>10) msg=msg_"..."_$C(13,10) + Set msg="Aantal PR niet ge-update : "_CntPR_" "_$C(13,10)_msg + Set msg=msg_$C(13,10) + Set:(CntPR>0) msg=msg_"De log van deze CleanUp is bewaard in de global "_($Name(^HULP("WV-TBX",PctJ)))_$C(13,10) + Set ^HULP("WV-TBX",PctJ,"B")=msg + Quit msg } + q +%0MCs1(s,e) [] PUBLIC { QUIT:s="" "33000E1E" s p="",q="" f n=1:1 { s c=$e(s,n) q:c="" If "_%"[c { s p=p_q_$s(c="%":".E",1:"1E"),q="" } Else { s:c=e n=n+1,c=$e(s,n) s p=p_$s(q="":"1""",1:"")_$s(c="""":"""""",1:c),q="""" }} QUIT p_q } +%crsDD0o s SQLCODE=$s($g(%crsDD0c):-101,1:0) q:SQLCODE'=0 s %crsDD0d(14)=0 s %crsDD0d(15)=0,%crsDD0d(16)="" + s %crsDD0d(6)=$g(GroepID),%crsDD0d(7)="||%" + s %crsDD0d(9)=$$%0MCs1($s(%crsDD0d(6)="":"",%crsDD0d(7)="":"",%crsDD0d(6)=$c(0):%crsDD0d(7),%crsDD0d(7)=$c(0):%crsDD0d(6),1:%crsDD0d(6)_%crsDD0d(7)),"") + s %crsDD0d(10)=$p($p($s(%crsDD0d(6)="":"",%crsDD0d(7)="":"",%crsDD0d(6)=$c(0):%crsDD0d(7),%crsDD0d(7)=$c(0):%crsDD0d(6),1:%crsDD0d(6)_%crsDD0d(7)),"%"),"_") + s %crsDD0c=1 q +%0Mfirst + ; asl MOD# 2 + s UnID="" +%0MBk1 s UnID=$o(^Prod.Ken.DataDefinitieD(UnID)) + i UnID="" g %0MBdun + s %crsDD0d(5)=%crsDD0d(10) + i %crsDD0d(5)'="",$d(^Prod.Ken.DataDefinitieD(UnID,%crsDD0d(5))) g %0MBg2 +%0MBk2 s %crsDD0d(5)=$o(^Prod.Ken.DataDefinitieD(UnID,%crsDD0d(5))) + i %crsDD0d(5)="" g %0MBk1 +%0MBg2 i (%crsDD0d(10)?1n.n),":"']%crsDD0d(5) g %0MBk1 + i '(%crsDD0d(10)=$e(%crsDD0d(5),1,$l(%crsDD0d(10)))) g:(%crsDD0d(10)?1n.n) %0MBk2 g %0MBk1 + i '(%crsDD0d(5)?@(%crsDD0d(9))) g %0MBk2 + s DDefID=(UnID)_"||"_(%crsDD0d(5)) + g:$zu(115,2)=0 %0MBuncommitted i $zu(115,2)=1 l +^Prod.Ken.DataDefinitieD($p(DDefID,"||",1),$p(DDefID,"||",2,3))#"S":$zu(115,4) i $t { s %crsDD0d(15)=1,%crsDD0d(16)=$name(^Prod.Ken.DataDefinitieD($p(DDefID,"||",1),$p(DDefID,"||",2,3)))_"#""SI""" } else { s SQLCODE=-114,%msg="Unable to acquire shared lock on table Prod_Kenmerk.DataDefinitie for RowID value: "_DDefID q } + ; asl MOD# 3 + s %crsDD0d(12)=$lb(""_%crsDD0d(5)) + s UnID=$p(DDefID,"||"),%crsDD0d(5)=$p(DDefID,"||",2,3) + i UnID'="",%crsDD0d(5)'="",$d(^Prod.Ken.DataDefinitieD(UnID,%crsDD0d(5))) + e g %0MCdun + s %crsDD0d(13)=$lb(""_%crsDD0d(5)) + g:%crsDD0d(12)'=%crsDD0d(13) %0MCdun +%0MBuncommitted ; + s:$g(SQLCODE)'<0 SQLCODE=0 s %ROWCOUNT=$i(%crsDD0d(14)) s %crsDD0c=10 q +%crsDD0f i '$g(%crsDD0c) { s SQLCODE=-102 q } i %crsDD0c=100 { s SQLCODE=100 q } s SQLCODE=0 + s $zt="%0Merr" s $ze="" g %0Mfirst:%crsDD0c=1 +%0MCdun i $zu(115,2)=1,$g(%crsDD0d(15))=1 { l -@%crsDD0d(16) } + g %0MBk2 +%0MBdun +%0MAdun + s %ROWCOUNT=%crsDD0d(14),SQLCODE=100,%crsDD0c=100 q +%crsDD0c i '$g(%crsDD0c) { s SQLCODE=-102 q } s %ROWCOUNT=+$g(%crsDD0d(14)) + i $zu(115,2)=1,$g(%crsDD0d(15))=1 { l -@%crsDD0d(16) } k %crsDD0c,%crsDD0d,%crsDD0E,%crsDD0l,%crsDD0n,%crsDD0R,%crsDD0Z s SQLCODE=0 q +%0Merr s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) s %crsDD0c=100 q +%0Qo d %crsDD0f q:SQLCODE'=0 + q +zExcelDataDefsResetCacheVBA(GroepID) public { Kill %arProductAdded(GroepID) + Quit } +zExists(UnID,GroepID) Set ID=$O(^Prod.Ken.DataDefinitieD(UnID,$G(GroepID))) + Quit:ID="" 0 + Quit:$G(GroepID)="" 1 + Quit $G(GroepID)=$P(ID,"||") +zGeefKenmerk(%this) public { Quit ..Kenmerk } +zGet(GroepID,UnID,Kenmerk) public { ; via Global : ^Prod.Ken.DataDefinitieD(UnID, "Groep||Kenmerk")=$LB($LB(KMWaarden)) + Quit $LG($G(^Prod.Ken.DataDefinitieD(UnID,GroepID_"||"_Kenmerk)),1) + // OF : + ; via Object property: + Set oKenmerk=##class(Prod.Kenmerk.DataDefinitie).%OpenId(UnID_"||"_GroepID_"||"_Kenmerk) + Quit:('$IsObject(oKenmerk)) "" + Set lbWaarden="" + For I=1:1:oKenmerk.Waarden.Count() Set lbWaarden=lbWaarden_$LB(oKenmerk.Waarden.GetAt(I)) + Quit lbWaarden + // OF : + ; via embedded SQL: + ; ... + Quit "" } +zGetFormule(GroepID,UnID,Kenmerk) public { ; via Object property: + Set oKenmerk=##class(Prod.Kenmerk.DataDefinitie).%OpenId(UnID_"||"_GroepID_"||"_Kenmerk) + Quit:('$IsObject(oKenmerk)) "" + Quit oKenmerk.Formule } +zGetFullURL(GroepID,UnID,Kenmerk,Taal,TextType,ToepasType) public { Quit:(GroepID="")||(UnID="")||(Kenmerk="") "" + Set objDD=##class(Prod.Kenmerk.DataDefinitie).%OpenId(UnID_"||"_GroepID_"||"_Kenmerk) + Quit:('$IsObject(objDD)) "" + Set DirCode=objDD.Kenmerk.GetVertalingsGroep() + Set Intern=objDD.Waarden.GetNext("") ; Intern is single value; idem als $LG(..Get(GroepID,UnID,Kenmerk),1) + Set objDD="" ; Close objDD + Set FullURL=##class(Res.VertalingLink).GetLinkVertaling(DirCode,Intern,TextType,Taal,,ToepasType) + Quit FullURL } +zGetLanguages(%this,Intern,Type) //Voorwaarden voor vroegtijdig verlaten (Intern mag leeg zijn, bijvoorbeeld bij een Label {Diepte}, of een andere sleutel bijv. '{CM}') + Quit:(Type="") "" + New LanguagesOK + Set LanguagesOK="" + New Loop,VertalingsGroep,Key,VTA //VertaalTransAbstract + Set VertalingsGroep=%this.Kenmerk.GetVertalingsGroep() + Set Key="" + For Set VTA=%this.Kenmerk.VertaalTransforms.GetNext(.Key) Quit:(Key="") Do + . For Loop=1:1:$L(VTA.VertalingsTypes,";") Do + .. Quit:($P(VTA.VertalingsTypes,";",Loop)'=Type) //Type controleren, ongelijk=verder for-lus uitvoeren + .. If VTA.IsSubstitutie() Do //-> SUBSTITUTIE vereist opstellen van taaldoorsnede + ... New Sleutels,AantalSleutels,SubLang,SleutelLoop,tmpSleutel + ... Set Sleutels=VTA.GetVertalingsSleutels(Type) + ... Set AantalSleutels=$LL(Sleutels) //Aantal te vertalen sleutels + ... Set SubLang="" + ... For SleutelLoop=1:1:AantalSleutels Do + .... Set tmpSleutel=$LI($LI(Sleutels,SleutelLoop),2) //Het eerste element bevat het type + .... If ##class(Res.VertalingAbstract).IsInternUniversal(tmpSleutel) Do //Wanneer sleutel vh type {%...} is dan is het een universele vertaling (groep %) + ..... Set SubLang=SubLang _ ##class(Res.VertalingAbstract).AvailableLanguages("%",tmpSleutel,Type) + .... Else Do + ..... Set SubLang=SubLang _ ##class(Res.VertalingAbstract).AvailableLanguages(VertalingsGroep,tmpSleutel,Type) + ... Set LanguagesOK=##class(Res.VertalingAbstract).GetLanguagesWithCountOK(SubLang,AantalSleutels) + .. Else Do //-> GEEN SUBSTITUTIE, gewoon languages opvragen + ... Set:(Intern'="") LanguagesOK=##class(Res.VertalingAbstract).AvailableLanguages(VertalingsGroep,Intern,Type) + Quit LanguagesOK + // ---< Pseudo-code >--- + // Loop doorheen vertalingstypes van MetaDef (array) + // . Loop doorheen elke VertalingsType (';' pieces) + // .. Als VertalingsType=Type Doe + // ... Als het om substitutie gaat + // .... Sleutels uitlezen + // .... Vertalingen van sleutels verkrijgen & samenvoegen + // .... Talen extraheren met correcte count + // ... Geen Substitutie + // .... Vertalingen van interne waarde verkrijgen + Quit "" +zNewObjectViaList(Params) Quit $$NewObjectViaList^Prod.Kenmerk.MetaDefinitie.LoadObjects ; (Params) +zNext(KenmerkUnID) public { quit $order(^Prod.Ken.DataDefinitieD(KenmerkUnID)) } +zOpenId(ID) public { Quit ##class(TECH.Concurrency.DbUtils).OpenId(ID, ##class(Prod.Kenmerk.DataDefinitie).%ClassName(1)) +} +zOpenIdVoorUpdate(ID,InstanceVersion,ControleerBijOpenen) public { Set InstanceVersion=$get(InstanceVersion),ControleerBijOpenen=$get(ControleerBijOpenen,1) Quit ##class(TECH.Concurrency.DbUtils).OpenIdVoorUpdate(ID, ##class(Prod.Kenmerk.DataDefinitie).%ClassName(1), InstanceVersion, ControleerBijOpenen) +} +zPrevious(KenmerkUnID) public { quit $order(^Prod.Ken.DataDefinitieD(KenmerkUnID),-1) } +zReleaseLock(%this,LockType) public { Set Status = ..%ReleaseLock(LockType) + Do ..CheckStatusCode(Status, "Lock kon niet worden gereleased voor object met %Id='" _ ..%Id() _ "' van klasse '" _ ##class(Prod.Kenmerk.DataDefinitie).%ClassName() _ "'!") + Quit Status } +zSave(%this) public { Quit ##class(TECH.Concurrency.DbUtils).Save(%this) +} +zSet(GroepID,UnID,Kenmerk,Values,Delimiter,UserID,Formule) Set Formule=$get(Formule) New oKenmerk,I,Status + /// Indien het kenmerk reeds bestaat wordt het oude eerst verwijderd + Set:(##class(Prod.Kenmerk.DataDefinitie).%ExistsId(UnID_"||"_GroepID_"||"_Kenmerk)) Status=##class(Prod.Kenmerk.DataDefinitie).%DeleteId(UnID_"||"_GroepID_"||"_Kenmerk) + ;Set oMetaKenmerk=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||"_Kenmerk) + ;Quit:'$isObject(oMetaKenmerk) 0 + ;Set oKenmerk.Kenmerk=oMetaKenmerk + Quit:('(##class(Prod.Kenmerk.MetaDefinitie).%ExistsId(GroepID_"||"_Kenmerk))) 0 + Set oKenmerk=##class(Prod.Kenmerk.DataDefinitie).%New() + Do oKenmerk.KenmerkSetObjectId(GroepID_"||"_Kenmerk) + Set oKenmerk.UnID=UnID + Set:$L(Formule) oKenmerk.Formule=Formule + ;Do oKenmerk.ProductSetObjectId(PRNr) + If $L($G(Delimiter)) Do ; Piece delimited + . For I=1:1:$L(Values,Delimiter) Do:$L($P(Values,Delimiter,I)) oKenmerk.Waarden.Insert($P(Values,Delimiter,I)) + Else If $$IsList^vhLib(Values) Do ; Listbuild + . For I=1:1:$LL(Values) Do:$L($LG(Values,I)) oKenmerk.Waarden.Insert($LI(Values,I)) + Else Do ;Single value + . Do:$L(Values) oKenmerk.Waarden.Insert(Values) + Quit:oKenmerk.Waarden.Count()=0 0 + Set oKenmerk.WijzigTijdstip=$zdt($H,4) + Set:$G(UserID) oKenmerk.WijzigGebruiker=UserID + Set Status=oKenmerk.%Save() + Quit Status +zVertaalConcatList(%this,LBX,ListSep,Taal,TextType,DoNotConvert2Html) Set Taal=$get(Taal,"N"),TextType=$get(TextType,"L") Quit:('..Kenmerk) "" + Quit ..Kenmerk.VertaalConcatList($G(LBX),$G(ListSep),Taal,TextType,.DoNotConvert2Html) + ;Quit $$VertaalConcatList^cspBasis.ProductList.tmpDev ; (LBX,ListSep,Taal,TextType) + Quit "" +zVertaalItem(%this,X,Taal,TextType,ClearCharEmpty,DoNotConvert2Html) Set Taal=$get(Taal,"N"),TextType=$get(TextType,"L"),ClearCharEmpty=$get(ClearCharEmpty,0) Quit:('..Kenmerk) "" + Quit ..Kenmerk.VertaalItem($G(X),.Taal,.TextType,.ClearEmptyChar,.DoNotConvert2Html) + ;Quit $$VertaalItem^cspBasis.ProductList.tmpDev ; (i,Taal,TextType,ClearEmptyChar) + ; Quit $$VertaalItem^Prod.Kenmerk.DataDefinitie.tmpDev ; (i,Taal,TextType,ClearEmptyChar) + Quit "" +zWaardenSortMultiVal(GroepID,Kenmerk) Quit $$WaardenSortMultiVal^Prod.Kenmerk.MetaDefinitie.LoadObjects ; (GroepID,Kenmerk) + Quit 1 +%ConcurrencyIsModified(%this) Quit $zobjmod(,1) +%ConcurrencyIsValid(value) public { Quit 1 } +%ConcurrencySetModified(%this,newvalue) public { Set $zobjmod(,1)=newvalue Quit 1 } +%IsInSaveIsModified(%this) Quit $zobjmod(,2) +%IsInSaveIsValid(value) public { Quit 1 } +%IsInSaveSetModified(%this,newvalue) public { Set $zobjmod(,2)=newvalue Quit 1 } +zFormuleDisplayToLogical(%val) Quit %val +zFormuleIsModified(%this) Quit $zobjmod(,4) +zFormuleIsValid(value) public { Quit 1 } +zFormuleIsValidDT(%val) Quit 1 +zFormuleLogicalToDisplay(%val) Quit %val +zFormuleNormalize(%val) Quit $e(%val,1,50) +zFormuleSetModified(%this,newvalue) public { Set $zobjmod(,4)=newvalue Quit 1 } +zInstanceVersionDisplayToLogica(%val) Quit $in(%val,"","") +zInstanceVersionIsModified(%this) Quit $zobjmod(,3) +zInstanceVersionIsValid(value) public { Quit $s(##class(Prod.Kenmerk.DataDefinitie).InstanceVersionIsValidDT(value):1,1:$$Error^%apiOBJ(5802,"Prod.Kenmerk.DataDefinitie.InstanceVersion")) } +zInstanceVersionIsValidDT(%val) Quit $isvalidnum(%val,0,,) +zInstanceVersionLogicalToDispla(%val) Quit %val +zInstanceVersionNormalize(%val) Quit %val\1 +zInstanceVersionSetModified(%this,newvalue) public { Set $zobjmod(,3)=newvalue Quit 1 } +zKenmerkGetObject(%this,force) public { Set force=$get(force,0) Quit:$zobjval(,6,0,3,5)="" $s($zobjval(,5,0,3,5)="":"",1:$lb($zobjval(,5,0,3,5)_"")) Quit:(+..Kenmerk.%GetSwizzleObject(force,.oid)) oid Quit "" + Quit "" } +zKenmerkGetObjectId(%this,force) public { Set force=$get(force,0) Quit $lg(..KenmerkGetObject(force)) } +zKenmerkGetSwizzled(%this) public { Set oid=$s($zobjval(,5,0,3,5)="":"",1:$lb($zobjval(,5,0,3,5)_"")) + Set oref=##class(Prod.Kenmerk.MetaDefinitie).%Open(oid) If oref="" Quit "" + Set $zobjval(,6,0,0,5)=oref,$zobjval(,5,0,0,5)="" + Set isusercount=''$g($zobjval(oref,0,,,,5)) Do oref.%Close() Set $zobjval(oref,0,,,,5)=isusercount + Quit oref } +zKenmerkIsModified(%this) Quit $zobjmod(,5) +zKenmerkIsValid(value) public { Quit 1 } +zKenmerkNewObject(%this) public { Set newobject=##class(Prod.Kenmerk.MetaDefinitie).%New("") If newobject="" Quit "" + Set ..Kenmerk=newobject + Set isusercount=''$get($zobjval(newobject,0,,,,5)) Do newobject.%Close() Set $zobjval(newobject,0,,,,5)=isusercount + Quit newobject } +zKenmerkSet(%this,newvalue) public { If newvalue'="",'$isobject(newvalue) Quit $$Error^%apiOBJ(5807,newvalue) + Set $zobjval(,6,0,3,5)=newvalue,$zobjval(,5,0,3,5)="" + Quit 1 } +zKenmerkSetModified(%this,newvalue) public { Set $zobjmod(,5)=newvalue Quit 1 } +zKenmerkSetObject(%this,newvalue) public { If $zobjval(,6,0,3,5)'="" Do ..KenmerkUnSwizzle(0) + Set $zobjval(,5,0,3,5)=$lg(newvalue),$zobjval(,6,0,3,5)="" + Quit 1 } +zKenmerkSetObjectId(%this,newid) public { Quit ..KenmerkSetObject($s(newid="":"",1:$lb(newid_""))) } +zKenmerkUnSwizzle(%this,force) public { Set force=$get(force,0) Quit:$zobjval(,6,0,3,5)="" 1 + Set modbit=$zobjmod(,5) + Set sc=..Kenmerk.%GetSwizzleObject(force,.newvalue) Quit:('sc) sc + Set $zobjval(,5,0,3,5)=$lg(newvalue),$zobjval(,6,0,3,5)="" + Set $zobjmod(,5)=modbit + Quit 1 } +zProductIsModified(%this) Quit $zobjmod(,0) +zProductSetModified(%this,newvalue) public { Set $zobjmod(,0)=newvalue Quit 1 } +zUnIDDisplayToLogical(%val) Quit %val +zUnIDIsModified(%this) Quit $zobjmod(,6) +zUnIDIsValid(value) public { Quit 1 } +zUnIDIsValidDT(%val) Quit 1 +zUnIDLogicalToDisplay(%val) Quit %val +zUnIDNormalize(%val) Quit $e(%val,1,50) +zUnIDSetModified(%this,newvalue) public { Set $zobjmod(,6)=newvalue Quit 1 } +zWaardenBuildValueArray(value,array) public { Quit ##class(%Library.ListOfDataTypes).BuildValueArray(value,.array) +} +zWaardenDisplayToLogical(%val) Quit %val +zWaardenGetObject(%this,force) public { Set force=$get(force,0) Quit:$zobjval(,9,0,3,7)="" $s($zobjval(,8,0,3,7)="":"",1:$lb($zobjval(,8,0,3,7)_"")) Quit:(+..Waarden.%GetSwizzleObject(force,.oid)) oid Quit "" + Quit "" } +zWaardenGetObjectId(%this,force) public { Set force=$get(force,0) Quit $lg(..WaardenGetObject(force)) } +zWaardenGetSwizzled(%this) public { Set oid=$s($zobjval(,8,0,3,7)="":"",1:$lb($zobjval(,8,0,3,7)_"")) + Set oref=##class(%Library.ListOfDataTypes).%Open(oid) If oref="" Quit "" + Set $zobjval(,9,0,0,7)=oref,$zobjval(,8,0,0,7)="" + Set isusercount=''$g($zobjval(oref,0,,,,5)) Do oref.%Close() Set $zobjval(oref,0,,,,5)=isusercount + Set oref.ElementType="Prod.Kenmerk.DataDefinitie:Waarden" + Do oref.%SetModified(0) + Quit oref } +zWaardenIsModified(%this) Quit $zobjmod(,7) +zWaardenIsValid(value) public { Quit 1 } +zWaardenIsValidDT(%val) Quit 1 +zWaardenLogicalToDisplay(%val) Quit %val +zWaardenNewObject(%this) public { Set newobject=##class(%Library.ListOfDataTypes).%New("") If newobject="" Quit "" + Set ..Waarden=newobject + Set isusercount=''$get($zobjval(newobject,0,,,,5)) Do newobject.%Close() Set $zobjval(newobject,0,,,,5)=isusercount + Set newobject.ElementType="Prod.Kenmerk.DataDefinitie:Waarden" + Do newobject.%SetModified(0) + Quit newobject } +zWaardenNormalize(%val) Quit $e(%val,1,10000) +zWaardenSet(%this,newvalue) public { If newvalue'="",'$isobject(newvalue) Quit $$Error^%apiOBJ(5807,newvalue) + Set $zobjval(,9,0,3,7)=newvalue,$zobjval(,8,0,3,7)="" + Quit 1 } +zWaardenSetModified(%this,newvalue) public { Set $zobjmod(,7)=newvalue Quit 1 } +zWijzigGebruikerDisplayToLogica(%val) Quit %val +zWijzigGebruikerIsModified(%this) Quit $zobjmod(,8) +zWijzigGebruikerIsValid(value) public { Quit 1 } +zWijzigGebruikerIsValidDT(%val) Quit 1 +zWijzigGebruikerLogicalToDispla(%val) Quit %val +zWijzigGebruikerNormalize(%val) Quit $e(%val,1,50) +zWijzigGebruikerSetModified(%this,newvalue) public { Set $zobjmod(,8)=newvalue Quit 1 } +zWijzigTijdstipDisplayToLogical(%val) Quit $s(%val="":"",1:$zdth(%val,3)) +zWijzigTijdstipIsModified(%this) Quit $zobjmod(,9) +zWijzigTijdstipIsValid(value) public { Quit 1 } +zWijzigTijdstipLogicalToDisplay(%val) Quit $s(%val="":"",1:$zdt(%val,3)) +zWijzigTijdstipLogicalToOdbc(%val) Quit $s(%val="":"",1:$zdt(%val,3)) +zWijzigTijdstipSetModified(%this,newvalue) public { Set $zobjmod(,9)=newvalue Quit 1 } \ No newline at end of file Index: WS/Web/OLParticulier/dto/Sessie.cls.xml =================================================================== diff -u -r913 -r1013 --- WS/Web/OLParticulier/dto/Sessie.cls.xml (.../Sessie.cls.xml) (revision 913) +++ WS/Web/OLParticulier/dto/Sessie.cls.xml (.../Sessie.cls.xml) (revision 1013) @@ -1,11 +1,11 @@ - + Verzorgt de mapping van sessie-ID op de relevante informatie die de context bepaalt, zoals de taal van de gebruiker. 1 %RegisteredObject,%XML.Adaptor -62137,49741.140546 +62196,35849.360445 61947,47947.614331 0 @@ -41,6 +41,10 @@ %Boolean + + +%String + - + Index: Stat/OmzetKlantMaand.cls.xml =================================================================== diff -u -r734 -r1013 --- Stat/OmzetKlantMaand.cls.xml (.../OmzetKlantMaand.cls.xml) (revision 734) +++ Stat/OmzetKlantMaand.cls.xml (.../OmzetKlantMaand.cls.xml) (revision 1013) @@ -1,5 +1,5 @@ - + Maandverkoop per klant en product per maand @@ -178,5 +178,5 @@ - + Index: vhUnitTest/APPS/PM/TestProductService.cls.xml =================================================================== diff -u -r995 -r1013 --- vhUnitTest/APPS/PM/TestProductService.cls.xml (.../TestProductService.cls.xml) (revision 995) +++ vhUnitTest/APPS/PM/TestProductService.cls.xml (.../TestProductService.cls.xml) (revision 1013) @@ -1,11 +1,11 @@ - + Do ##class(vhUnitTest.Manager).RunTest("","APPS.PM.TestProductService") 1 vhUnitTest.TestCase -62188,43172.836947 +62193,31085.770385 62159,61432.98957 0 @@ -142,7 +142,7 @@ Set Criteria=##class(APPS.PM.dto.ZoekCriteria).%New() Set Criteria.SoortProductID=##class(APPS.PM.enu.SoortProductID).Korttekst() - Set Criteria.GeleverdDoorLeveranciernr = Leverancier + Set Criteria.GeleverdDoorLeverancierNr = Leverancier Set Criteria.ExacteKorttekst = 0 Set Criteria.ProductID = Zoek @@ -159,7 +159,7 @@ Set Zoek = "" Set Criteria=##class(APPS.PM.dto.ZoekCriteria).%New() Set Criteria.SoortProductID=##class(APPS.PM.enu.SoortProductID).Korttekst() - Set Criteria.GeleverdDoorLeveranciernr = Leverancier + Set Criteria.GeleverdDoorLeverancierNr = Leverancier Set Criteria.ExacteKorttekst = 0 Set Criteria.ProductID = Zoek @@ -291,7 +291,7 @@ Set Zoek = "" Set Criteria=##class(APPS.PM.dto.ZoekCriteria).%New() Set Criteria.SoortProductID=##class(APPS.PM.enu.SoortProductID).Korttekst() - Set Criteria.GeleverdDoorLeveranciernr = Leverancier + Set Criteria.GeleverdDoorLeverancierNr = Leverancier Set Criteria.ExacteKorttekst = 0 Set Criteria.PRNrs = ##class(%ListOfDataTypes).%New() Do Criteria.PRNrs.Insert(597626) @@ -425,5 +425,5 @@ ]]> - + Index: vhUnitTest/APPS/common/GUI/TestDataGridService.cls.xml =================================================================== diff -u -r946 -r1013 --- vhUnitTest/APPS/common/GUI/TestDataGridService.cls.xml (.../TestDataGridService.cls.xml) (revision 946) +++ vhUnitTest/APPS/common/GUI/TestDataGridService.cls.xml (.../TestDataGridService.cls.xml) (revision 1013) @@ -1,11 +1,11 @@ - + do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","APPS.common.GUI.TestDataGridService") 1 vhUnitTest.TestCase -62161,48932.160296 +62195,30454.41115 0 @@ -21,6 +21,8 @@ Set KolomInfo1.IsZichtbaar = 1 Set KolomInfo1.Volgnummer = 1 Set KolomInfo1.KolomID = "Kolom1" + Set KolomInfo1.IsGroep = 1 + Set KolomInfo1.OuderGroepID = "OuderGroepID1" Do KolomInfoLijst.Lijst.Insert(KolomInfo1) @@ -29,6 +31,8 @@ Set KolomInfo2.IsZichtbaar = 0 Set KolomInfo2.Volgnummer = 2 Set KolomInfo2.KolomID = "Kolom2" + Set KolomInfo2.IsGroep = 0 + Set KolomInfo2.OuderGroepID = "OuderGroepID2" Do KolomInfoLijst.Lijst.Insert(KolomInfo2) @@ -43,13 +47,17 @@ Do $$$AssertEquals(KolomInfo1.IsZichtbaar,KolomInfoOpgehaald.IsZichtbaar,"De zichtbaarheid is gelijk") Do $$$AssertEquals(KolomInfo1.Volgnummer,KolomInfoOpgehaald.Volgnummer,"De volgnummer is gelijk") Do $$$AssertEquals(KolomInfo1.KolomID,KolomInfoOpgehaald.KolomID,"De kolomID is gelijk") + Do $$$AssertEquals(KolomInfo1.IsGroep,KolomInfoOpgehaald.IsGroep,"IsGroep is gelijk") + Do $$$AssertEquals(KolomInfo1.OuderGroepID,KolomInfoOpgehaald.OuderGroepID,"De OuderGroepID is gelijk") Set KolomInfoOpgehaald = KolomInfoLijstOpgehaald.Lijst.GetAt(2) Do $$$AssertEquals(KolomInfo2.Breedte,KolomInfoOpgehaald.Breedte,"De breedte is gelijk") Do $$$AssertEquals(KolomInfo2.IsZichtbaar,KolomInfoOpgehaald.IsZichtbaar,"De zichtbaarheid is gelijk") Do $$$AssertEquals(KolomInfo2.Volgnummer,KolomInfoOpgehaald.Volgnummer,"De volgnummer is gelijk") Do $$$AssertEquals(KolomInfo2.KolomID,KolomInfoOpgehaald.KolomID,"De kolomID is gelijk") + Do $$$AssertEquals(KolomInfo2.IsGroep,KolomInfoOpgehaald.IsGroep,"IsGroep is gelijk") + Do $$$AssertEquals(KolomInfo2.OuderGroepID,KolomInfoOpgehaald.OuderGroepID,"De OuderGroepID is gelijk") // Een nieuwe lijst opslaan, de oude wordt integraal vervangen @@ -60,6 +68,8 @@ Set KolomInfo1.IsZichtbaar = 1 Set KolomInfo1.Volgnummer = 1 Set KolomInfo1.KolomID = "Kolom1" + Set KolomInfo1.IsGroep = 1 + Set KolomInfo1.OuderGroepID = "OuderGroepID1" Do KolomInfoLijst.Lijst.Insert(KolomInfo1) @@ -86,5 +96,5 @@ ]]> - + Index: Prod/Kenmerk/MetaDefinitie.cls.xml =================================================================== diff -u -r995 -r1013 --- Prod/Kenmerk/MetaDefinitie.cls.xml (.../MetaDefinitie.cls.xml) (revision 995) +++ Prod/Kenmerk/MetaDefinitie.cls.xml (.../MetaDefinitie.cls.xml) (revision 1013) @@ -1,11 +1,11 @@ - + persistent %VHMacro 1 %Library.Persistent -62188,56568.315014 +62193,37120.171664 59275,52589.182 0 @@ -207,6 +207,7 @@ 0 %Library.Status - + Index: Stat/OmzetDagRegio.cls.xml =================================================================== diff -u -r734 -r1013 --- Stat/OmzetDagRegio.cls.xml (.../OmzetDagRegio.cls.xml) (revision 734) +++ Stat/OmzetDagRegio.cls.xml (.../OmzetDagRegio.cls.xml) (revision 1013) @@ -1,43 +1,35 @@ - + Omzet per dag en regio van de laatste 32 dagen persistent VHOpslag %Library.Persistent -59689,28787.98832 -59689,28787.987427 +59352,28118.53 +59352,28112.499 - -1 -Datum,Regio - - %Library.String - -0 %Library.Float - -0 %Library.Float - -0 %Library.Numeric - -0 + +1 +Datum,Regio + + %Library.CacheSQLStorage ^Stat.OmzetDagRegioS @@ -47,11 +39,13 @@ delimited {Datum} - + + {Regio} - + + "\" @@ -64,5 +58,5 @@ - + Index: Stat/OmzetProductKlantMaand.cls.xml =================================================================== diff -u -r734 -r1013 --- Stat/OmzetProductKlantMaand.cls.xml (.../OmzetProductKlantMaand.cls.xml) (revision 734) +++ Stat/OmzetProductKlantMaand.cls.xml (.../OmzetProductKlantMaand.cls.xml) (revision 1013) @@ -1,200 +1,187 @@ - + Maandverkoop per klant en product per maand persistent VHOpslag %Library.Persistent -59689,28791.117559 -59689,28791.114353 +59217,79368.218 +58751,34470 - -1 -1 -Product,Klant,Maand - + +1 +PRNr:Prod.Product,KLNr:Derde.Klant.Klant,RefDatum:%Date,Periode:%String,Piece:%Integer +%Float + -%Library.Date -1 - -0 - Set {*}=$ZDH($TR({Maand}_"01"," .",""),8) - -1 - +]]> + + +%Library.Date + + + + +%Library.Float + + + + +%Library.Float + + + + +%Library.Float + + + + +%Library.Float + + + %Library.Integer - -0 - -%Library.Float -1 - -0 - Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},{Klant},{Maand},12,2) - -1 - - - -Derde.Klant.Klant - -0 - - %String - -0 %Library.Float - -0 - -%Library.Float -1 - -0 - Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},{Klant},{Maand},12,4) - -1 - - %Library.Float - -0 - -%Library.Float -1 - -0 - Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},{Klant},{Maand},12,3) - -1 - - %Library.Float - -0 Prod.Product - -0 + +Derde.Klant.Klant + + %Library.Integer - -0 + + +Aantal stuks over KOM +%Library.Integer + + + +comment +body + + + + +%Library.Date +1 + Set {*}=$ZDH($TR({Maand}_"01"," .",""),8) + +1 + + %Library.Float 1 - -0 Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},{Klant},{Maand},12,1) 1 - - -Aantal stuks over KOM -%Library.Integer - -0 + +%Library.Float +1 + Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},{Klant},{Maand},12,2) + +1 - -1 -code -PRNr:Prod.Product,KLNr:Derde.Klant.Klant,RefDatum:%Date,Periode:%String,Piece:%Integer -%Float - - + +%Library.Float +1 + Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},{Klant},{Maand},12,3) + +1 + - -code -%Library.Date - - + +%Library.Float +1 + Set {*}=##class(Stat.OmzetProductKlantMaand).Cumul({Product},{Klant},{Maand},12,4) + +1 + - -code -%Library.Float - - + +1 +1 +Product,Klant,Maand + - -code -%Library.Float - - - - -code -%Library.Float - - - - -code -%Library.Float - - - %Library.CacheSQLStorage ^Stat.ProdMaandS data + ^KSTKL delimited -sub +Sub {Klant} 1 -sub +Sub {Product} 1 -sub +Sub {Maand} 1 @@ -225,5 +212,5 @@ - + Index: TECH/Concurrency/DbUtils.cls.xml =================================================================== diff -u -r946 -r1013 --- TECH/Concurrency/DbUtils.cls.xml (.../DbUtils.cls.xml) (revision 946) +++ TECH/Concurrency/DbUtils.cls.xml (.../DbUtils.cls.xml) (revision 1013) @@ -1,5 +1,5 @@ - + Utility methods voor open en save van objecten. @@ -8,7 +8,7 @@ TECH.Error 1 %RegisteredObject -62171,46545.583309 +62192,62293.713672 62007,44253.966022 0 @@ -25,7 +25,9 @@ If ('insert) { // Neem een exclusieve lock op het object + d WLIP^vhDBG(127,"%LockId "_Object_" ("_Object.%Id()_") [DbUtils.OnBeforeSave()]") Set StatusCode = Object.%LockId(Object.%Id(), 0) + If $$$ISERR(StatusCode) { $$$ThrowErrorStatus($$$errGeneralError,"Lock kon niet verkregen worden voor object met %Id='" _ Object.%Id() _ "' van klasse '" _ Object.%ClassName() _ "'!",StatusCode) } @@ -44,6 +46,7 @@ Else { // Release de zelf geplaatste lock voor de error + d WLIP^vhDBG(127,"%UnlockId "_Object_" ("_Object.%Id()_") [DbUtils]") Do Object.%UnlockId(Object.%Id(),0) Do ResultSet.Close() $$$ThrowError($$$errGeneralError,"De InstanceVersion van het te saven object met %Id='" _ Object.%Id() _ "' van klasse '" _ Object.%ClassName() _ "' werd niet gevonden in de databank!") @@ -52,9 +55,11 @@ If (Object.InstanceVersion < InstanceVersionDB) { // Release de zelf geplaatste lock voor de error - Do Object.%UnlockId(Object.%Id(),0) + d WLIP^vhDBG(127,"%UnlockId "_Object_" ("_Object.%Id()_") [DbUtils]") + set sc = Object.%UnlockId(Object.%Id(),0) + if 'sc $$$ThrowError($$$errGeneralError,"UnlockError") Do ResultSet.Close() - $$$ThrowError($$$errGeneralError,"Error: #5800 Object met ID '" _ Object.%Id() _ "' opslaan is mislukt: de huidige database versie is '" _ InstanceVersionDB _ "', maar de gebruikte bron-versie is '" _ Object.InstanceVersion _ "'.") + $$$ThrowError($$$errGeneralError,"Error: #5800 Object met ID '"_Object.%Id()_"' opslaan is mislukt: de huidige database versie is '"_InstanceVersionDB_"', maar de gebruikte bron-versie is '"_Object.InstanceVersion_"'.") } Do ResultSet.Close() } @@ -72,7 +77,10 @@ + + +StatusCode:%Status,Message:%String +1 + + - + Index: vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml =================================================================== diff -u -r995 -r1013 --- vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 995) +++ vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1013) @@ -1,12 +1,12 @@ - + JBL + 2011-02-28 do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","APPS.PM.TestKenmerkenService") 1 vhUnitTest.TestCase,TECH.Error.ErrorAdaptor -62188,58810.943384 +62194,61404.093567 62159,61432.841501 0 @@ -86,8 +86,6 @@ do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(2).IDs.MultipleNr,2,"MultipleNr 1 is in orde.") - ; [Review WV JBL Kenm] Property MultipleNr wordt niet uitgelezen. Is toch specifiek deze testmethod, hé ? - do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(2).Kenmerken.Count(),18,"Juiste aantal gedefineerde kenmerken ProductKenmerken2.") do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(2).Kenmerken.GetAt(1).KenmerkNaam,"ProductType","Kenmerknaam is correct ingevuld.") @@ -249,5 +247,5 @@ ]]> - + Index: TECH/Concurrency/Transactie.cls.xml =================================================================== diff -u -r946 -r1013 --- TECH/Concurrency/Transactie.cls.xml (.../Transactie.cls.xml) (revision 946) +++ TECH/Concurrency/Transactie.cls.xml (.../Transactie.cls.xml) (revision 1013) @@ -1,5 +1,5 @@ - + Deze klasse combineert transacties (die een rollback toelaten) en locks. @@ -16,7 +16,7 @@ TECH.Error 1 %RegisteredObject -62172,37960.86956 +62193,38568.078616 62005,45656.8048 0 @@ -166,7 +166,10 @@ ObjectLock:ObjectLock 1 @@ -206,5 +209,5 @@ ]]> - + Index: vhUnitTest/APPS/Halux/common/TestBatchService.cls.xml =================================================================== diff -u -r995 -r1013 --- vhUnitTest/APPS/Halux/common/TestBatchService.cls.xml (.../TestBatchService.cls.xml) (revision 995) +++ vhUnitTest/APPS/Halux/common/TestBatchService.cls.xml (.../TestBatchService.cls.xml) (revision 1013) @@ -1,16 +1,17 @@ - + do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","APPS.Halux.common.TestBatchService") 1 vhUnitTest.TestCase -62189,53939.421479 +62193,28995.786862 0 %Status %Status - + FishEye: Tag 1013 refers to a dead (removed) revision in file `vhUnitTest/BL/PPS/TBX/LeanBatch.cls.xml'. FishEye: No comparison available. Pass `N' to diff? Index: Stat/OmzetKlantProductMaand.cls.xml =================================================================== diff -u -r734 -r1013 --- Stat/OmzetKlantProductMaand.cls.xml (.../OmzetKlantProductMaand.cls.xml) (revision 734) +++ Stat/OmzetKlantProductMaand.cls.xml (.../OmzetKlantProductMaand.cls.xml) (revision 1013) @@ -1,18 +1,18 @@ - + Maandverkoop per klant en product per maand persistent VHOpslag %Library.Persistent -60051,51071.372142 +62196,53258.422284 58751,34470 0 1 -KLNr:Derde.Klant.Klant,PRNr:Prod.Product,RefDatum:%Date,Periode:%String,Piece:%Integer +KLNr:%Integer,PRNr:Prod.Product,RefDatum:%Date,Periode:%String,Piece:%Integer %Float 1 + +Query wordt gebruikt door PVH in een Excel dd 31-05-2005 + +Query VerschilOmzetProdGrp(VorigVan As %Date, VorigTot As %Date, HuidigVan As %Date, HuidigTot As %Date) As %Query(CONTAINID = 0, ROWSPEC = "KLNr:%Integer,Naam:%String,Tel1:%String,Straat:%String,Postkode:%String,Gemeente:%String,Taal:%String,Regio:%String,Aktiviteit:%String,Kwantiteit:%String,Kwaliteit:%String,NonAkt:%Integer,Vervallen:%Integer,AantalBezoeken:%String,LaatsteBezoek:%String,KlachtenJr:%Integer,KlachtenMnd:%Integer,Codex:%String,Uitz:%String,Trend:%String,VoBlum:%Float,VoHAL:%Float,VoTBX:%Float,VoGRP:%Float,VoRest:%Float,VoOL:%Float,HuBlum:%Float,HuHAL:%Float,HuTBX:%Float,HuGRP:%Float,HuRest:%Float,HuOL:%Float,VoMaBlum:%Float,VoMaHAL:%Float,VoMaTBX:%Float,VoMaGRP:%Float,VoMaRest:%Float,VoMaOL:%Float,HuMaBlum:%Float,HuMaHAL:%Float,HuMaTBX:%Float,HuMaGRP:%Float,HuMaRest:%Float,HuMaOL:%Float,CatalogusInfo:%String") [ SqlProc ] %Query -VorigVan,VorigTot,HuidigVan,HuidigTot,Regio +VorigVan:%Date,VorigTot:%Date,HuidigVan:%Date,HuidigTot:%Date +1 - + 1 - + %Status @@ -194,34 +241,88 @@ 0 %Status 0):$H-Vervallen,1:"") + Set HeeftUtz=$S($D(^KLPUTZ("N",KLNr))>1:"+",1:"") + Set AantalBezoeken=##class(BL.Derde.Agenda.Agenda).AantalBezoeken(KLNr,%HuidigVan,%HuidigTot) + Set LaatsteBezoek=##class(BL.Derde.Agenda.Agenda).LaatsteBezoek(KLNr) + If (LaatsteBezoek '= "") Set LaatsteBezoek=$zd(LaatsteBezoek,3) + Set AantalKlachtenJr=##class(Derde.Klacht).AantalKlachten("K",KLNr,%HuidigVan,%HuidigTot) + Set AantalKlachtenMnd=##class(Derde.Klacht).AantalKlachten("K",KLNr,%HuidigTotFD,%HuidigTot) + Set Trend=##class(BL.Derde.Klant.Main).OmzetTrend(KLNr) + Set Kwantitatief=$$DisplayKwantitatief^KLANT5(KLNr) + Set Kwantitatief=$LG(Kwantitatief,1)_" "_$LG(Kwantitatief,2) + Set Kwalitatief=$$DisplayKwalitatief^KLANT5(KLNr) + Set Kwalitatief=$LG(Kwalitatief,1)_" "_$LG(Kwalitatief,2) + Set Taal = $P(^KKL(%VOKLId,0),"\",9) + Set CatalogusInfo = ..GeefCatalogusInfo(KLNr) + Set Row=$LB(KLNr,Klant.Naam,Klant.Telefoon1,$P(LevAdr,"\",5),$P(LevAdr,"\",6),$P(LevAdr,"\",7),Taal,Klant.Sektor,Klant.Aktiviteit,Kwantitatief,Kwalitatief,Klant.CommNonActief,Vervallen,AantalBezoeken,LaatsteBezoek,AantalKlachtenJr,AantalKlachtenMnd,Klant.Prijsklasse,HeeftUtz,Trend) + + Set IOmzetVorigList = "" + Set IOmzetHuidigList = "" + Set IMargeVorigList = "" + Set IMargeHuidigList = "" + Set ProdGrp="" - For Set ProdGrp=$O(^RES("PRODUKT","PI","PRODUKTGROEP","D",ProdGrp)) Quit:ProdGrp="" Do - . Set VolgNr=$P(^RES("PRODUKT","PI","PRODUKTGROEP","D",ProdGrp),"`") - . ;w ProdGrp," ",VolgNr," Vo ",$G(SumVorig(ProdGrp))," Hu ",$G(SumHuidig(ProdGrp)),! - . Set $LI(VorigList,VolgNr)=$LG(VorigList,VolgNr)+$G(SumVorig(ProdGrp)) - . Set $LI(HuidigList,VolgNr)=$LG(HuidigList,VolgNr)+$G(SumHuidig(ProdGrp)) - Set Row=Row_VorigList_HuidigList - ;write $$ListToDelimited^vhLib(Row,";") + Set ProdGrp=$O(^RES("PRODUKT","PI","PRODUKTGROEP","D",ProdGrp)) + While (ProdGrp '= ""){ + Set VolgNr=$P(^RES("PRODUKT","PI","PRODUKTGROEP","D",ProdGrp),"`") + Set $LI(OmzetVorigList,VolgNr)=$LG(OmzetVorigList,VolgNr)+$G(SumOmzetVorig(ProdGrp)) + Set $LI(OmzetHuidigList,VolgNr)=$LG(OmzetHuidigList,VolgNr)+$G(SumOmzetHuidig(ProdGrp)) + Set $LI(MargeVorigList,VolgNr)=$LG(MargeVorigList,VolgNr)+$G(SumMargeVorig(ProdGrp)) + Set $LI(MargeHuidigList,VolgNr)=$LG(MargeHuidigList,VolgNr)+$G(SumMargeHuidig(ProdGrp)) + + /// Indicator + Set $LI(IOmzetVorigList,VolgNr)=$LG(IOmzetVorigList,VolgNr)+$G(IndicatorSumOmzetVorig(ProdGrp)) + Set $LI(IOmzetHuidigList,VolgNr)=$LG(IOmzetHuidigList,VolgNr)+$G(IndicatorSumOmzetHuidig(ProdGrp)) + Set $LI(IMargeVorigList,VolgNr)=$LG(IMargeVorigList,VolgNr)+$G(IndicatorSumMargeVorig(ProdGrp)) + Set $LI(IMargeHuidigList,VolgNr)=$LG(IMargeHuidigList,VolgNr)+$G(IndicatorSumMargeHuidig(ProdGrp)) + Set ProdGrp=$O(^RES("PRODUKT","PI","PRODUKTGROEP","D",ProdGrp)) + } + Set Row=Row_OmzetVorigList_OmzetHuidigList_MargeVorigList_MargeHuidigList + Set Row=Row_IOmzetVorigList_IOmzetHuidigList_IMargeVorigList_IMargeHuidigList + + Set Row=Row_$LB(CatalogusInfo) + Quit $$$OK ]]> @@ -232,11 +333,90 @@ VerschilOmzetProdGrpExecute %Status + + +JBL + 2011-04-13 +1 + + + + + +JBL + 2011-04-13 +1 +KorttekstPrefix:%String +1 + + + + + +JBL + 2011-04-13 +1 +KLNr:%Integer +%String + 0) ){ + Set CatalogusInfo = CatalogusInfo_KorttekstPrefix_"," + } + Set KorttekstPrefix = %CatalogusLijst.Next(KorttekstPrefix) + } + Quit CatalogusInfo +]]> + + %Library.CacheSQLStorage ^Stat.ProdMaandS @@ -286,5 +466,5 @@ - + Index: Prod/Kenmerk/DataDefinitie.cls.xml =================================================================== diff -u -r995 -r1013 --- Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 995) +++ Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1013) @@ -1,5 +1,5 @@ - + Vaste leggen van de kenmerken per product. @@ -11,7 +11,7 @@ %VHMacro 1 TECH.Concurrency.VhPersistent -62188,56950.044173 +62195,58599.151709 59232,54592 0 @@ -69,6 +69,8 @@ 0 %Library.Status + +Prod.Kenmerk.MetaDefinitie + + + Verwijderen van de DataIndex objecten @@ -691,12 +701,41 @@ Method om alle ingevulde waarden van een Definitie op te halen %Library.SQLQuery Groep:%String,Kenmerk:%String - SELECT DISTINCT Waarden - FROM Prod_Kenmerk.DataDefinitie - where Kenmerk = :Groep||"||"||:Kenmerk - ORDER BY Waarden + SELECT DISTINCT Waarde + FROM Prod_Kenmerk.DataIndex + where Kenmerk = :Kenmerk AND Groep = :Groep + ORDER BY Waarde + +1 +KenmerkUnID +%String + + + + +1 +KenmerkUnID +%String + + + + +locktype +1 +1 +%Status + + + %Library.CacheStorage ^Prod.Ken.DataDefinitieD @@ -725,8 +764,11 @@ InstanceVersion + +PrivateKenmerk + - + Index: vhUnitTest/APPS/Halux/Planning/TestResourceGebruikCalculator.cls.xml =================================================================== diff -u -r995 -r1013 --- vhUnitTest/APPS/Halux/Planning/TestResourceGebruikCalculator.cls.xml (.../TestResourceGebruikCalculator.cls.xml) (revision 995) +++ vhUnitTest/APPS/Halux/Planning/TestResourceGebruikCalculator.cls.xml (.../TestResourceGebruikCalculator.cls.xml) (revision 1013) @@ -1,18 +1,19 @@ - + do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","APPS.Halux.Planning.TestResourceGebruikCalculator") 1 vhUnitTest.TestCase -62178,30805.546235 +62199,33791.998023 0 %Status + +%Status + + + 0,"Het resourcegebruik van de ALUZaag is groter dan 0") Do $$$AssertTrue(ResourceGebruik.ALUOperator.Hoeveelheid > 0,"Het resourcegebruik van de ALUOperator is groter dan 0") + // De producten die berekend moeten worden zitten niet in deze toelevering. + // Dit is niet echt noodzakelijk omdat voor de berekening enkel een klantnummer nodig is. + Set Toelevering = ##class(DOM.DomeinContext).Instance().GeefToeleveringAPI().GeefToelevering(296195) + Set Batch = "" + Set Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(599536) - Set ActiviteitInfoTBX = ##class(APPS.Halux.Planning.impl.ActiviteitInfoTBX).%New(Product) + Set ActiviteitInfoTBX = ##class(APPS.Halux.Planning.impl.ActiviteitInfoTBX).%New(Toelevering, Batch, Product) Set ResourceGebruik = ActiviteitInfoTBX.GeefActiviteitInfoIterator().Next().ResourceGebruik Do $$$AssertTrue($IsObject(ResourceGebruik),"Voor een tbx met sifon wordt een tijd berekend") Set Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(595226) - Set ActiviteitInfoTBX = ##class(APPS.Halux.Planning.impl.ActiviteitInfoTBX).%New(Product) + Set ActiviteitInfoTBX = ##class(APPS.Halux.Planning.impl.ActiviteitInfoTBX).%New(Toelevering, Batch, Product) Set ResourceGebruik = ActiviteitInfoTBX.GeefActiviteitInfoIterator().Next().ResourceGebruik Do $$$AssertTrue($IsObject(ResourceGebruik),"Voor een tbx met spoelbak wordt een tijd berekend") Set Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(529744) - Set ActiviteitInfoTBX = ##class(APPS.Halux.Planning.impl.ActiviteitInfoTBX).%New(Product) + Set ActiviteitInfoTBX = ##class(APPS.Halux.Planning.impl.ActiviteitInfoTBX).%New(Toelevering, Batch, Product) Set ResourceGebruik = ActiviteitInfoTBX.GeefActiviteitInfoIterator().Next().ResourceGebruik Do $$$AssertTrue($IsObject(ResourceGebruik),"Voor een tbx met in te korten glas wordt een tijd berekend") Set Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(505552) - Set ActiviteitInfoTBX = ##class(APPS.Halux.Planning.impl.ActiviteitInfoTBX).%New(Product) + Set ActiviteitInfoTBX = ##class(APPS.Halux.Planning.impl.ActiviteitInfoTBX).%New(Toelevering, Batch, Product) Set ResourceGebruik = ActiviteitInfoTBX.GeefActiviteitInfoIterator().Next().ResourceGebruik Do $$$AssertTrue($IsObject(ResourceGebruik),"Voor een tbx met in te korten reling wordt een tijd berekend") ]]> @@ -107,5 +127,5 @@ ]]> - + Index: Stat/OmzetKlantProductMaand/1.int.rou =================================================================== diff -u --- Stat/OmzetKlantProductMaand/1.int.rou (revision 0) +++ Stat/OmzetKlantProductMaand/1.int.rou (revision 1013) @@ -0,0 +1,881 @@ + ;Stat.OmzetKlantProductMaand.1 + ;(C)InterSystems, generated for class Stat.OmzetKlantProductMaand. Do NOT edit. 04/14/2011 11:19:21AM + ;;3BB19951D2CFB173;Stat.OmzetKlantProductMaand + Quit + ; +%AcquireLock(%this,locktype) public { Set id=..%Id() Quit:$get(id)="" $$Error^%apiOBJ(5812) + If $get(locktype)="e" Quit:'$$%AcquireLock^Stat.OmzetKlantProductMaand.T1(id) $$Error^%apiOBJ(5803) Quit 1 + If $get(locktype)="s" Quit:'$$%AcquireLock^Stat.OmzetKlantProductMaand.T1(id,1) $$Error^%apiOBJ(5804) QUIT 1 + Quit $$Error^%apiOBJ(5806,locktype) } +%BMEBuilt(bmeName) Quit 1 +%BuildIndices(idxlist) public { Set idxlist=$get(idxlist) Quit $$%BuildIndices^Stat.OmzetKlantProductMaand.T1(idxlist) } +%CheckUnique(idxlist) public { Set idxlist=$get(idxlist) QUIT $$Error^%apiOBJ(5758,"%Persistent::%CheckUnique") } +%ClassName(fullname) public { Quit $select($get(fullname,0):"Stat.OmzetKlantProductMaand",1:"OmzetKlantProductMaand") } +%Close(%this) Quit ..%Close() +%Destruct(%this) public { Set oid=$zobjval(,0,,,,3) + If oid'="" { If $zobjval(,1,0,3,1)=3 { Do ..%ReleaseLock("s") } ElseIf $zobjval(,1,0,3,1)=4 { Do ..%ReleaseLock("e") } s $zobjoid($lg(oid,2),$lg(oid))="" } + Kill %objtxLIST(+%this),%objtxOIDASSIGNED(+%this),%objtxMODIFIED(+%this) + Quit 1 } +%ConstructClone(%this,deep,cloned) public { Set deep=$get(deep,0) Set object=%this + If $data(cloned(+object)) Do (cloned(+object)).%IncrementCount() Quit cloned(+object) + Set %this=$zobjnew("Stat.OmzetKlantProductMaand") + Set cloned(+object)=%this,cloned(+object,0)=object + s $zobjmod(,0)=1 + Set $zobjval(,1)=$zobjval(object,1),$zobjval(,2)=$zobjval(object,2),$zobjval(,3)=$zobjval(object,3) + Set $zobjval(,4)=$zobjval(object,4),$zobjval(,5)=$zobjval(object,5),$zobjval(,6)=$zobjval(object,6) + Set $zobjval(,7)=$zobjval(object,7),$zobjval(,8)=$zobjval(object,8),$zobjval(,9)=$zobjval(object,9) + Set $zobjval(,10)=$zobjval(object,10),$zobjval(,11)=$zobjval(object,11),$zobjval(,12)=$zobjval(object,12) + Set $zobjval(,13)=$zobjval(object,13) + If deep>0 { + If object.Klant'="" Set $zobjval(,5,0)=$zobjval(object,5,0).%ConstructClone(1,.cloned) If $zobjval(,5,0)'="" Do ($zobjval(,5,0)).%Close() + If object.Product'="" Set $zobjval(,11,0)=$zobjval(object,11,0).%ConstructClone(1,.cloned) If $zobjval(,11,0)'="" Do ($zobjval(,11,0)).%Close() + } + Quit %this } +%Delete(oid,concurrency) public { Set oid=$get(oid),concurrency=$get(concurrency,-1) Quit:oid="" $$Error^%apiOBJ(5813) Set id=$lg(oid) Quit:id="" $$Error^%apiOBJ(5812) + If concurrency = -1 Set concurrency=$zu(115,10) + If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set class=$lg(oid,2) + If class="" { Set class="Stat.OmzetKlantProductMaand",oid=$s(oid="":"",1:$lb($lg(oid),"Stat.OmzetKlantProductMaand")) } Else { Set class=$s(class[".":class,$e(class)'="%":"User."_class,1:"%Library."_$e(class,2,$l(class))) If "Stat.OmzetKlantProductMaand"'=class { Quit $zobjclassmethod(class,"%Delete",oid) } } + If +$g(%objtxSTATUS)=0 { Set traninit=1 k %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxOIDUNASSIGNED,%objtxMODIFIED k:'$TLevel %0CacheLock i '$zu(115,9) { s %objtxSTATUS=1 } else { s %objtxSTATUS=2 TStart } } Else { Set traninit=0 } + s oref=$zobjoid($lg(oid,2),$lg(oid)) + If $isobject(oref) { New %this Set %this=oref If %this.%Concurrency>2 { s sc=%this.%ReleaseLock($Select(%this.%Concurrency=3:"s",1:"e")) } i $g(%objtxSTATUS)=2 { s %objtxOIDUNASSIGNED(+oref)=oid,%objtxLIST(+oref)=oref s %objtxMODIFIED(+oref)=$zobjval(oref,0) } s $zobjmod(oref,0)=1 Set $zobjval(oref,0,,,,3)="" s $zobjoid($lg(oid,2),$lg(oid))="" } + Set sc=##class(Stat.OmzetKlantProductMaand).%DeleteData(id,concurrency) +%DeleteEnd If traninit { If (+sc) { i $g(%objtxSTATUS)=1 { k %objtxSTATUS } else { TCommit k %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxOIDUNASSIGNED,%objtxMODIFIED k:'$TLevel %0CacheLock } } Else { i $g(%objtxSTATUS)=2 { k %0CacheLock s sc=$select(+sc:$$%TRollBack^%occTransaction(),1:$$AppendStatus^%occSystem(sc,$$%TRollBack^%occTransaction())) } else { k %objtxSTATUS } } } + Quit sc } +%DeleteData(id,concurrency) QUIT:id="" $$Error^%apiOBJ(5812) n %sc s %sc=1 + i concurrency>1 i '$$%AcquireLock^Stat.OmzetKlantProductMaand.T1(id) QUIT $$Error^%apiOBJ(5803) + n %ROWID,SQLCODE + ;---&sql(DELETE FROM Stat.OmzetKlantProductMaand WHERE %ID=:id) + ;--- ** SQL PUBLIC Variables: SQLCODE, id + Do %0o + i SQLCODE s %sc=$$Error^%apiOBJ(5521,SQLCODE) + i concurrency>1 d %ReleaseLock^Stat.OmzetKlantProductMaand.T1(id) + QUIT %sc +%0o n %mmmsqlc,%mmmsqld,%mmmsqlE,%mmmsqll,%mmmsqln,%mmmsqlp,%mmmsqlR,%mmmsqls,%mmmsqlt,%mmmsqlTS,%mmmsqlZ s $zt="%0err",$ze="" s:'$d(%0snrc) %0snrc=+$g(^%SYS("sql","sys","no filer referential checks")) s %mmmsqld(6)=0 s %mmmsqld(7)="" + s %mmmsqld(2)=$g(id) + s SQLCODE=100 + s %mmmsqlTS=0 If $zu(115,1)=1,'$TLEVEL { TSTART s %mmmsqlTS=1 } + ; asl MOD# 2 + s %mmmsqld(1)=%mmmsqld(2) + s %mmmsqld(3)=$p(%mmmsqld(1),"||"),%mmmsqld(4)=$p(%mmmsqld(1),"||",2),%mmmsqld(5)=$p(%mmmsqld(1),"||",3) + i %mmmsqld(3)'="",$d(^KSTPR(%mmmsqld(3))) + i '$t + e i 1]]%mmmsqld(3) + i '$t,%mmmsqld(4)'="",$d(^KSTPR(%mmmsqld(3),%mmmsqld(4))) + i '$t + e i 1]]%mmmsqld(4) + i '$t,%mmmsqld(5)'="",$d(^KSTPR(%mmmsqld(3),%mmmsqld(4),%mmmsqld(5))) + i '$t + e i 1]]%mmmsqld(5) + i g %0Bdun + s %mmmsqld(12)=$$%getlock^Stat.OmzetKlantProductMaand.T1(%mmmsqld(1)) i '%mmmsqld(12) s SQLCODE=-110 g %0c + ; asl MOD# 3 + s %mmmsqld(3)=$p(%mmmsqld(1),"||"),%mmmsqld(4)=$p(%mmmsqld(1),"||",2),%mmmsqld(5)=$p(%mmmsqld(1),"||",3) + i %mmmsqld(3)'="",$d(^KSTPR(%mmmsqld(3))) + i '$t + e i 1]]%mmmsqld(3) + i '$t,%mmmsqld(4)'="",$d(^KSTPR(%mmmsqld(3),%mmmsqld(4))) + i '$t + e i 1]]%mmmsqld(4) + i '$t,%mmmsqld(5)'="",$d(^KSTPR(%mmmsqld(3),%mmmsqld(4),%mmmsqld(5))) + i '$t + e i 1]]%mmmsqld(5) + i g %0Cdun + d %delete^Stat.OmzetKlantProductMaand.T1(%mmmsqld(1),$c(0,1,0,0),'$g(%mmmsqlTS)) + i 'SQLCODE i $i(%mmmsqld(6)) +%0Cdun + d:%mmmsqld(12)=1 %ReleaseLock^Stat.OmzetKlantProductMaand.T1(%mmmsqld(1)) g:SQLCODE<0 %0c +%0Bdun +%0Adun +%0c s %ROWCOUNT=+$g(%mmmsqld(6)) TCOMMIT:$g(%mmmsqlTS)&&($zu(115,1)=1)&&(SQLCODE'<0) If $g(%mmmsqlTS)&&($zu(115,1)=1)&&(SQLCODE<0) { TROLLBACK s %ROWCOUNT=0} q +%0err s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) d:$g(%mmmsqld(12))=1 %ReleaseLock^Stat.OmzetKlantProductMaand.T1(%mmmsqld(1)) g %0c +%DeleteExtent(concurrency,deletecount,instancecount) public { Set concurrency=$get(concurrency,-1) If concurrency = -1 Set concurrency=$zu(115,10) + If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set deletecount=0,instancecount=0 + Set sc=##class(Stat.OmzetKlantProductMaand).ExtentExecute(.qh) Quit:('sc) sc + For Set sc=##class(Stat.OmzetKlantProductMaand).ExtentFetch(.qh,.row,.atend) Quit:$select(row="":1,('sc):1,1:0) Set id=$listget(row) If id'="" Set sc=##class(Stat.OmzetKlantProductMaand).%Delete($listbuild(id),concurrency) Set instancecount=instancecount+1 Set:(+sc) deletecount=deletecount+1 Quit:atend + Do ##class(Stat.OmzetKlantProductMaand).ExtentClose(qh) + If instancecount = deletecount { Do ##class(Stat.OmzetKlantProductMaand).%PurgeIndices() } + Quit 1 } +%DeleteId(id,concurrency) public { Set concurrency=$get(concurrency,-1) Quit ##class(Stat.OmzetKlantProductMaand).%Delete($s(id="":"",1:$lb(id_"")),.concurrency) } +%DowngradeConcurrency(%this,concurrency) public { Set concurrency=$get(concurrency,0) If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set current=$zobjval(,1,0,3,1) + If concurrency>current Quit 1 + If current<3||(current=concurrency) Set:concurrency2 Set sc=..%AcquireLock($select(concurrency=3:"s",1:"e")) Quit:('sc) sc + Do ..%ReleaseLock($select(current=3:"s",1:"e")) + Set $zobjval(,1,0,3,1)=concurrency + Quit 1 } +%Exists(oid) public { Set oref=##class(Stat.OmzetKlantProductMaand).%Open(oid,0) Quit:oref="" 0 + Quit 1 } +%ExistsId(id) public { Quit ##class(Stat.OmzetKlantProductMaand).%Exists($lb(id)) } +%Extends(isclass) public { Quit "~Stat.OmzetKlantProductMaand~%Library.Persistent~%Library.RegisteredObject~"[("~"_$s(isclass[".":isclass,$e(isclass)'="%":"User."_isclass,1:"%Library."_$e(isclass,2,$l(isclass)))_"~") } +%GetParameter(paramname) public { Set paramname=$get(paramname) Quit $case(paramname,"DEFAULTCONCURRENCY":"$zu(115,10)","EXTENTSIZE":100000,"OBJJOURNAL":0,"PROPERTYVALIDATION":2,"READONLY":0,"SQLENABLED":1,"STORAGECOMPILERCLASS":"%Compiler.Storage.CacheSQL",:"") } +%GetSwizzleObject(%this,force,oid) public { Set force=$get(force,0) Set oid="" If force=0 Set oid=(..%Oid()) Quit 1 + If force=2 Set sc=..%Save(1) Set:(+sc) oid=(..%Oid()) Quit sc + Set oid=(..%Oid()) Quit:oid'="" 1 + Set sc=..%Save(0) Set:(+sc) oid=..%Oid() + Quit sc } +%Id(%this) Quit $lg($zobjval(%this,0,,,,3)) +%IdSet(%this,id) public { Set oid=$s(id="":"",1:$lb(id_"","Stat.OmzetKlantProductMaand")) + If $zobjval(,0,,,,3)'="",$zobjval(,0,,,,3)'=oid Quit $$Error^%apiOBJ(5814) + Set $zobjval(,0,,,,3)=oid s $zobjoid($lg(oid,2),$lg(oid))=%this + Quit 1 } +%IncrementCount(%this) Quit ..%IncrementCount() +%IsA(isclass) public { Quit "~Stat.OmzetKlantProductMaand~%Library.Persistent~%Library.RegisteredObject~"[("~"_$s(isclass[".":isclass,$e(isclass)'="%":"User."_isclass,1:"%Library."_$e(isclass,2,$l(isclass)))_"~") } +%IsModified(%this) public { Quit $zobjmod(,0) } +%KillExtent() public { QUIT $$Error^%apiOBJ(5758,"%Persistent::%KillExtent") } +%Load(%this,id) public { Set sc=..%IdSet(id) Quit:('sc) sc + Set sc=..%LoadData(id) Quit:('sc) sc + Quit 1 } +%LoadData(%this,id) n %ROWID,%sc,SQLCODE + s %sc=$$Error^%apiOBJ(5809) + i $zobjval(,1,0,3,1)=4 i '$$%AcquireLock^Stat.OmzetKlantProductMaand.T1(id) QUIT $$Error^%apiOBJ(5803) + i $zobjval(,1,0,3,1)'=4,$zobjval(,1,0,3,1)>1 i '$$%AcquireLock^Stat.OmzetKlantProductMaand.T1(id,1) QUIT $$Error^%apiOBJ(5804) + ;---&sql(SELECT FaktuurLijnen,Klant,Maand,Marge,Omzet,OmzetLijstPrijs,Product,Stuks,StuksKOM + ;--- INTO :i%FaktuurLijnen,:i%Klant,:i%Maand,:i%Marge,:i%Omzet,:i%OmzetLijstPrijs,:i%Product,:i%Stuks,:i%StuksKOM + ;--- FROM Stat.OmzetKlantProductMaand + ;--- WHERE %ID=:id) + ;--- ** SQL PUBLIC Variables: SQLCODE, id + Do %0Bo + i SQLCODE s $zobjval(,3,0,3,3)="",$zobjval(,4,0,3,4)="",$zobjval(,6,0,3,5)="",$zobjval(,7,0,3,6)="",$zobjval(,8,0,3,7)="",$zobjval(,9,0,3,8)="",$zobjval(,10,0,3,9)="",$zobjval(,12,0,3,10)="",$zobjval(,13,0,3,11)="" + e d + . s %sc=1 + i $zobjval(,1,0,3,1)=2 d %ReleaseLock^Stat.OmzetKlantProductMaand.T1(id,1) + QUIT %sc +%0Bo n %mmmsqlc,%mmmsqld,%mmmsqlE,%mmmsqll,%mmmsqln,%mmmsqlp,%mmmsqlR,%mmmsqls,%mmmsqlt,%mmmsqlZ s $zt="%0Berr",$ze="" s %mmmsqld(22)=0,%mmmsqld(23)="" + s %mmmsqld(20)=$g(id) + s SQLCODE=100 + ; asl MOD# 2 + s %mmmsqld(19)=%mmmsqld(20) + s $zobjval(,10,0,3,9)=$p(%mmmsqld(19),"||"),$zobjval(,4,0,3,4)=$p(%mmmsqld(19),"||",2),$zobjval(,6,0,3,5)=$p(%mmmsqld(19),"||",3) + i $zobjval(,10,0,3,9)'="",$d(^KSTPR($zobjval(,10,0,3,9))) + i '$t + e i 1]]$zobjval(,10,0,3,9) + i '$t,$zobjval(,4,0,3,4)'="",$d(^KSTPR($zobjval(,10,0,3,9),$zobjval(,4,0,3,4))) + i '$t + e i 1]]$zobjval(,4,0,3,4) + i '$t,$zobjval(,6,0,3,5)'="",$d(^KSTPR($zobjval(,10,0,3,9),$zobjval(,4,0,3,4),$zobjval(,6,0,3,5))) + i '$t + e i 1]]$zobjval(,6,0,3,5) + i g %0BBdun + s %mmmsqld(28)=$g(^KSTPR($zobjval(,10,0,3,9),$zobjval(,4,0,3,4),$zobjval(,6,0,3,5))) + s $zobjval(,3,0,3,3)=$p(%mmmsqld(28),"\",2) s $zobjval(,7,0,3,6)=$p(%mmmsqld(28),"\",4) s $zobjval(,8,0,3,7)=$p(%mmmsqld(28),"\",3) s $zobjval(,9,0,3,8)=$p(%mmmsqld(28),"\",6) s $zobjval(,12,0,3,10)=$p(%mmmsqld(28),"\",1) s $zobjval(,13,0,3,11)=$p(%mmmsqld(28),"\",5) + g:$zu(115,2)=0 %0BBuncommitted i $zu(115,2)=1 l +^KSTPR($p(%mmmsqld(19),"||",1),$p(%mmmsqld(19),"||",2),$p(%mmmsqld(19),"||",3))#"S":$zu(115,4) i $t { s %mmmsqld(22)=1,%mmmsqld(23)=$name(^KSTPR($p(%mmmsqld(19),"||",1),$p(%mmmsqld(19),"||",2),$p(%mmmsqld(19),"||",3)))_"#""SI""" } else { s SQLCODE=-114,%msg="Unable to acquire shared lock on table Stat.OmzetKlantProductMaand for RowID value: "_%mmmsqld(19) q } + ; asl MOD# 3 + s $zobjval(,10,0,3,9)=$p(%mmmsqld(19),"||"),$zobjval(,4,0,3,4)=$p(%mmmsqld(19),"||",2),$zobjval(,6,0,3,5)=$p(%mmmsqld(19),"||",3) + i $zobjval(,10,0,3,9)'="",$d(^KSTPR($zobjval(,10,0,3,9))) + i '$t + e i 1]]$zobjval(,10,0,3,9) + i '$t,$zobjval(,4,0,3,4)'="",$d(^KSTPR($zobjval(,10,0,3,9),$zobjval(,4,0,3,4))) + i '$t + e i 1]]$zobjval(,4,0,3,4) + i '$t,$zobjval(,6,0,3,5)'="",$d(^KSTPR($zobjval(,10,0,3,9),$zobjval(,4,0,3,4),$zobjval(,6,0,3,5))) + i '$t + e i 1]]$zobjval(,6,0,3,5) + i g %0BCdun + s %mmmsqld(33)=$g(^KSTPR($zobjval(,10,0,3,9),$zobjval(,4,0,3,4),$zobjval(,6,0,3,5))) + s $zobjval(,3,0,3,3)=$p(%mmmsqld(33),"\",2) s $zobjval(,7,0,3,6)=$p(%mmmsqld(33),"\",4) s $zobjval(,8,0,3,7)=$p(%mmmsqld(33),"\",3) s $zobjval(,9,0,3,8)=$p(%mmmsqld(33),"\",6) s $zobjval(,12,0,3,10)=$p(%mmmsqld(33),"\",1) s $zobjval(,13,0,3,11)=$p(%mmmsqld(33),"\",5) +%0BBuncommitted ; + s SQLCODE=0 g %0Bc +%0BCdun i $zu(115,2)=1,$g(%mmmsqld(22))=1 { l -@%mmmsqld(23) } +%0BBdun +%0BAdun +%0Bc s %ROWCOUNT='SQLCODE i $zu(115,2)=1,$g(%mmmsqld(22))=1 { l -@%mmmsqld(23) } q +%0Berr s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) g %0Bc +%New(initvalue) public { Quit ##class(Stat.OmzetKlantProductMaand).%New($get(initvalue)) +} +%Construct(%this,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) Set $zobjval(,1,0,3,1)=$zu(115,10),$zobjval(,2,0,3,2)=0,$zobjval(,3,0,3,3)="",$zobjval(,4,0,3,4)="",$zobjval(,5,0,3,4)="",$zobjval(,6,0,3,5)="" + Set $zobjval(,7,0,3,6)="",$zobjval(,8,0,3,7)="",$zobjval(,9,0,3,8)="",$zobjval(,10,0,3,9)="",$zobjval(,11,0,3,9)="",$zobjval(,12,0,3,10)="" + Set $zobjval(,13,0,3,11)="" + Quit 1 +%NormalizeObject(%this) Set:$zobjval(,3,0,3,3)'="" $zobjval(,3,0,3,3)=(..FaktuurLijnenNormalize($zobjval(,3,0,3,3))) + Set:$zobjval(,6,0,3,5)'="" $zobjval(,6,0,3,5)=(..MaandNormalize($zobjval(,6,0,3,5))) + Set:$zobjval(,7,0,3,6)'="" $zobjval(,7,0,3,6)=(..MargeNormalize($zobjval(,7,0,3,6))) + Set:$zobjval(,8,0,3,7)'="" $zobjval(,8,0,3,7)=(..OmzetNormalize($zobjval(,8,0,3,7))) + Set:$zobjval(,9,0,3,8)'="" $zobjval(,9,0,3,8)=(..OmzetLijstPrijsNormalize($zobjval(,9,0,3,8))) + Set:$zobjval(,12,0,3,10)'="" $zobjval(,12,0,3,10)=(..StuksNormalize($zobjval(,12,0,3,10))) + Set:$zobjval(,13,0,3,11)'="" $zobjval(,13,0,3,11)=(..StuksKOMNormalize($zobjval(,13,0,3,11))) + Quit 1 +%ObjectModified(%this) public { Quit ''$zobjmod(,0) } +%Oid(%this) Quit $zobjval(%this,0,,,,3) +%Open(oid,concurrency,sc) public { Set concurrency=$get(concurrency,-1),sc=$get(sc,1) If $lg($g(oid))="" Set sc = $$Error^%apiOBJ(5813) Quit "" + If concurrency = -1 Set concurrency=$zu(115,10) + If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Set sc = $$Error^%apiOBJ(5828) Quit "" + New %this Set class=$lg(oid,2) + If class="" { Set class="Stat.OmzetKlantProductMaand",oid=$s(oid="":"",1:$lb($lg(oid),"Stat.OmzetKlantProductMaand")) } Else { Set class=$s(class[".":class,$e(class)'="%":"User."_class,1:"%Library."_$e(class,2,$l(class))) If "Stat.OmzetKlantProductMaand"'=class { Quit $zobjclassmethod(class,"%Open",oid,concurrency,.sc) } } + s %this=$zobjoid($lg(oid,2),$lg(oid)) + If %this'="" { If concurrency>$zobjval(,1,0,3,1) { Set sc=..%UpgradeConcurrency(concurrency) If ('sc) { Quit "" } } d %this.%IncrementCount() Quit %this } + Set %this=$zobjnew("Stat.OmzetKlantProductMaand") + Set $zobjval(,1,0,3,1)="",$zobjval(,1,0,3,1)=concurrency + Set $zobjval(,5,0,3,4)="",$zobjval(,11,0,3,9)="" + Set sc=..%Load($lg(oid)) If ('sc) Do ..%Close() Quit "" + Set $zobjval(,2,0,3,2)=0 + s $zobjmod(,0)=0 + Quit %this +} +%OpenId(id,concurrency,sc) public { Set concurrency=$get(concurrency,-1),sc=$get(sc,1) Quit ##class(Stat.OmzetKlantProductMaand).%Open($s(id="":"",1:$lb(id_"")),.concurrency,.sc) } +%PackageName() Quit "Stat" +%PurgeIndices(idxlist) public { Set idxlist=$get(idxlist) Quit $$%PurgeIndices^Stat.OmzetKlantProductMaand.T1(idxlist) } +%ReleaseLock(%this,locktype) public { Set id=..%Id() Quit:$get(id)="" $$Error^%apiOBJ(5812) + If $get(locktype)="e" Do %ReleaseLock^Stat.OmzetKlantProductMaand.T1(id) Quit 1 + If $get(locktype)="s" Do %ReleaseLock^Stat.OmzetKlantProductMaand.T1(id,1) Quit 1 + Quit $$Error^%apiOBJ(5806,locktype) } +%Reload(%this) public { If ..%Id()="" Quit $$Error^%apiOBJ(5813) + Set cur=$zobjval(,1,0,3,1),$zobjval(,1,0,3,1)=0 + Set $zobjval(,5,0,3,4)="",$zobjval(,11,0,3,9)="" + Set sc=..%Load(..%Id()) Set $zobjval(,1,0,3,1)=cur If ('sc) Do ..%Close() Quit "" + Set $zobjval(,2,0,3,2)=0 + s $zobjmod(,0)=0 + Quit 1 } +%RollBack(%this) public { If $data(%objtxMODIFIED(+%this)) s $zobjval(,0)=%objtxMODIFIED(+%this) + Quit 1 } +%Save(%this,related) public { Set related=$get(related,1) Set $ZTrap="%SaveERR" + New %objTX Set sc=1,traninit=0 + If $zobjval(,2,0,3,2) Set sc=..%AddToSaveSet(1) Quit:('sc) sc Set intRef=+%this,objValue=$get(%objTX(1,intRef,1)),sc=..%SerializeObject(.objValue,1) Set:(+sc) %objTX(1,intRef,1)=objValue Quit sc + If +$g(%objtxSTATUS)=0 { Set traninit=1 Kill %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxMODIFIED If '$zu(115,9) { Set %objtxSTATUS=1 } Else { Set %objtxSTATUS=2,%objtxLIST(+%this)="" TStart } } + Set sc=..%AddToSaveSet(related+2) If ('sc) ZTrap "SG" + Set intRef = $Order(%objTX(4,""),1,objRef) + While intRef '= "" { + If '$Data(%objTX(5,intRef)) { Set sc=objRef.%AddToSaveSet(related+2) Set %objTX(5,intRef) = objRef If ('sc) { ZTrap "SG" } } + Kill %objTX(4,intRef) + Set intRef = $Order(%objTX(4,""),1,objRef) + } + If '$data(%objTX(2)) s sc=1 GoTo %SaveCOMMIT + Set %objTX(3)=0,intRef="" For Set intRef=$order(%objTX(2,intRef)) Quit:intRef="" If '$data(%objTX(1,intRef,2)) Set %objTX(3,$increment(%objTX(3)))=%objTX(1,intRef) Kill %objTX(2,intRef) + For Quit:%objTX(3)<1 Set ptr=%objTX(3),objRef=%objTX(3,ptr),%objTX(3)=%objTX(3)-1 Kill %objTX(3,ptr) Set intRef=+objRef,objValue=$get(%objTX(1,intRef,1)),sc=objRef.%SerializeObject(.objValue) Do Set %objTX(1,intRef,1)=objValue Kill %objTX(1,intRef,3) s $zobjmod(objRef,0)=0 + . If ('sc) Kill:$g(%objtxSTATUS)=2 %objtxLIST(+objRef),%objtxMODIFIED(+objRef) ZTrap "SG" + . If $g(%objtxSTATUS)=2,objRef.%IsModified() s %objtxMODIFIED(+objRef)=$zobjval(objRef,0) + . Set intSucc="" For Set intSucc=$order(%objTX(1,intRef,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intRef,3,intSucc),%objTX(1,intSucc,2,intRef) If '$data(%objTX(1,intSucc,2)) Set %objTX(3,$increment(%objTX(3)))=%objTX(1,intSucc) Kill %objTX(2,intSucc) + For Set pserial=0 Do Quit:'pserial + . Set intRef="" For Set intRef=$order(%objTX(2,intRef)) Quit:intRef="" Set intPred="" For Set intPred=$order(%objTX(1,intRef,2,intPred)) Quit:intPred="" If %objTX(1,intPred,6)=1 Set objValue=$get(%objTX(1,intPred,1)),sc=(%objTX(1,intPred)).%SerializeObject(.objValue,1) If (+sc) Set pserial=1,%objTX(1,intPred,1)=objValue Do + . . Set intSucc="" For Set intSucc=$order(%objTX(1,intPred,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intPred,3,intSucc),%objTX(1,intSucc,2,intPred) If '$data(%objTX(1,intSucc,2)) Set %objTX(3,$i(%objTX(3)))=%objTX(1,intSucc) Kill %objTX(2,intSucc) + . . For Quit:%objTX(3)<1 Set ptr=%objTX(3),objSerialize=%objTX(3,ptr),%objTX(3)=%objTX(3)-1 Kill %objTX(3,ptr) Set intSerialize=+objSerialize,objValue=$get(%objTX(1,intSerialize,1)),sc=objSerialize.%SerializeObject(.objValue) Do Set %objTX(1,intSerialize,1)=objValue Kill %objTX(1,intSerialize,3) s $zobjmod(objSerialize,0)=0 + . . . If ('sc) Kill:$g(%objtxSTATUS)=2 %objtxLIST(+objSerialize),%objtxMODIFIED(+objSerialize) ZTrap "SG" + . . . If $g(%objtxSTATUS)=2,objSerialize.%IsModified() s %objtxMODIFIED(+objSerialize)=$zobjval(objSerialize,0) + . . . Set intSucc="" For Set intSucc=$order(%objTX(1,intSerialize,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intSerialize,3,intSucc),%objTX(1,intSucc,2,intSerialize) If '$data(%objTX(1,intSucc,2)) Set %objTX(3,$i(%objTX(3)))=%objTX(1,intSucc) Kill %objTX(2,intSucc) + If $data(%objTX(2))>2 Set sc=$$Error^%apiOBJ(5827) ZTrap "SG" +%SaveCOMMIT If traninit { If $g(%objtxSTATUS)=1 { Kill %objtxSTATUS } Else { TCommit Kill %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxMODIFIED Set sc=1 } } + s $zobjmod(,0)=0 Quit sc +%SaveERR Set $ZTrap="" If $extract($zerror,1,5)'="" Set sc=$$Error^%apiOBJ(5002,$ZE) + Set:traninit sc=$select(+sc:$$%TRollBack^%occTransaction(),1:$$AppendStatus^%occSystem(sc,$$%TRollBack^%occTransaction())) + Quit sc } +%SaveData(%this,id) s id=..%Id() i id="" QUIT ..%SaveDataInsert(id) + QUIT ..%SaveDataUpdate(id) +%SaveDataInsert(%this,id) n %ROWID,%sc,SQLCODE,lock,temp1 + Set lock=0,%sc=1 + ;---&sql(INSERT INTO Stat.OmzetKlantProductMaand(FaktuurLijnen,Klant,Maand,Marge,Omzet,OmzetLijstPrijs,Product,Stuks,StuksKOM) + ;--- VALUES (:i%FaktuurLijnen,:i%Klant,:i%Maand,:i%Marge,:i%Omzet,:i%OmzetLijstPrijs,:i%Product,:i%Stuks,:i%StuksKOM)) + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %0Do + i SQLCODE q $$Error^%apiOBJ(5521,SQLCODE_":"_$g(%msg)) + s id=%ROWID s %sc=..%IdSet(id) QUIT:('%sc) %sc + s:$g(%objtxSTATUS)=2 %objtxOIDASSIGNED(+%this)="" + If $zobjval(,1,0,3,1)=4 If '$$%AcquireLock^Stat.OmzetKlantProductMaand.T1(id) Quit $$Error^%apiOBJ(5803) + If $zobjval(,1,0,3,1)=3 If '$$%AcquireLock^Stat.OmzetKlantProductMaand.T1(id,1) Quit $$Error^%apiOBJ(5804) + i lock d %ReleaseLock^Stat.OmzetKlantProductMaand.T1(id) + QUIT %sc +%0Do n %i + s %i(3)=$g($zobjval(,3,0,3,3)),%i(5)=$g($zobjval(,4,0,3,4)),%i(6)=$g($zobjval(,6,0,3,5)),%i(7)=$g($zobjval(,7,0,3,6)),%i(9)=$g($zobjval(,8,0,3,7)),%i(11)=$g($zobjval(,9,0,3,8)),%i(12)=$g($zobjval(,10,0,3,9)),%i(13)=$g($zobjval(,12,0,3,10)),%i(15)=$g($zobjval(,13,0,3,11)) + s:'$d(%0snrc) %0snrc=+$g(^%SYS("sql","sys","no filer referential checks")) s %ROWID=$$%insert^Stat.OmzetKlantProductMaand.T1(.%i,$c(0,0,0,0)),%ROWCOUNT='SQLCODE q +%SaveDataUpdate(%this,id) n %ROWID,%sc,SQLCODE,lock,notexist,temp1 + Set lock=0,notexist=0,%sc=1 + i $zobjval(,1,0,3,1)>1 s lock=$$%AcquireLock^Stat.OmzetKlantProductMaand.T1(id) i 'lock s %sc=$$Error^%apiOBJ(5803) q %sc + ;---&sql(UPDATE Stat.OmzetKlantProductMaand SET FaktuurLijnen = :i%FaktuurLijnen, Klant = :i%Klant, Maand = :i%Maand, Marge = :i%Marge, Omzet = :i%Omzet, OmzetLijstPrijs = :i%OmzetLijstPrijs, Product = :i%Product, Stuks = :i%Stuks, StuksKOM = :i%StuksKOM WHERE %ID=:id) + ;--- ** SQL PUBLIC Variables: SQLCODE, id + Do %0Fo + If SQLCODE=100 { s notexist=1 } ElseIf SQLCODE { Set %sc=$$Error^%apiOBJ(5521,SQLCODE_":"_$g(%msg)) } + If notexist { If lock { Do %ReleaseLock^Stat.OmzetKlantProductMaand.T1(id) } Quit ..%SaveDataInsert(id) } + i lock d %ReleaseLock^Stat.OmzetKlantProductMaand.T1(id) + QUIT %sc +%0Fo n %mmmsqlc,%mmmsqld,%mmmsqlE,%mmmsqll,%mmmsqln,%mmmsqlp,%mmmsqlR,%mmmsqls,%mmmsqlt,%mmmsqlTS,%mmmsqlZ s $zt="%0Ferr",$ze="" s:'$d(%0snrc) %0snrc=+$g(^%SYS("sql","sys","no filer referential checks")) s %mmmsqld(21)=0 s %mmmsqld(22)="" + s %mmmsqld(2)=$g($zobjval(,3,0,3,3)),%mmmsqld(4)=$g($zobjval(,4,0,3,4)),%mmmsqld(6)=$g($zobjval(,6,0,3,5)),%mmmsqld(8)=$g($zobjval(,7,0,3,6)),%mmmsqld(10)=$g($zobjval(,8,0,3,7)),%mmmsqld(12)=$g($zobjval(,9,0,3,8)),%mmmsqld(14)=$g($zobjval(,10,0,3,9)),%mmmsqld(16)=$g($zobjval(,12,0,3,10)),%mmmsqld(18)=$g($zobjval(,13,0,3,11)),%mmmsqld(20)=$g(id) + n %data + s SQLCODE=100 + s %mmmsqlTS=0 If $zu(115,1)=1,'$TLEVEL { TSTART s %mmmsqlTS=1 } + ; asl MOD# 2 + s %mmmsqld(19)=%mmmsqld(20) + s %mmmsqld(13)=$p(%mmmsqld(19),"||"),%mmmsqld(3)=$p(%mmmsqld(19),"||",2),%mmmsqld(5)=$p(%mmmsqld(19),"||",3) + i %mmmsqld(13)'="",$d(^KSTPR(%mmmsqld(13))) + i '$t + e i 1]]%mmmsqld(13) + i '$t,%mmmsqld(3)'="",$d(^KSTPR(%mmmsqld(13),%mmmsqld(3))) + i '$t + e i 1]]%mmmsqld(3) + i '$t,%mmmsqld(5)'="",$d(^KSTPR(%mmmsqld(13),%mmmsqld(3),%mmmsqld(5))) + i '$t + e i 1]]%mmmsqld(5) + i g %0FBdun + s %mmmsqld(27)=$$%getlock^Stat.OmzetKlantProductMaand.T1(%mmmsqld(19)) i '%mmmsqld(27) s SQLCODE=-110 g %0Fc + ; asl MOD# 3 + s %mmmsqld(13)=$p(%mmmsqld(19),"||"),%mmmsqld(3)=$p(%mmmsqld(19),"||",2),%mmmsqld(5)=$p(%mmmsqld(19),"||",3) + i %mmmsqld(13)'="",$d(^KSTPR(%mmmsqld(13))) + i '$t + e i 1]]%mmmsqld(13) + i '$t,%mmmsqld(3)'="",$d(^KSTPR(%mmmsqld(13),%mmmsqld(3))) + i '$t + e i 1]]%mmmsqld(3) + i '$t,%mmmsqld(5)'="",$d(^KSTPR(%mmmsqld(13),%mmmsqld(3),%mmmsqld(5))) + i '$t + e i 1]]%mmmsqld(5) + i g %0FCdun + k %data + s %data(3)=$g(%mmmsqld(2)),%data(5)=$g(%mmmsqld(4)),%data(6)=$g(%mmmsqld(6)),%data(7)=$g(%mmmsqld(8)),%data(9)=$g(%mmmsqld(10)),%data(11)=$g(%mmmsqld(12)),%data(12)=$g(%mmmsqld(14)),%data(13)=$g(%mmmsqld(16)),%data(15)=$g(%mmmsqld(18)) + d %update^Stat.OmzetKlantProductMaand.T1(%mmmsqld(19),$c(0,1,0,0),.%data,,'$g(%mmmsqlTS)) + i 'SQLCODE i $i(%mmmsqld(21)) +%0FCdun + d:%mmmsqld(27)=1 %ReleaseLock^Stat.OmzetKlantProductMaand.T1(%mmmsqld(19)) g:SQLCODE<0 %0Fc +%0FBdun +%0FAdun +%0Fc s %ROWCOUNT=+$g(%mmmsqld(21)) TCOMMIT:$g(%mmmsqlTS)&&($zu(115,1)=1)&&(SQLCODE'<0) If $g(%mmmsqlTS)&&($zu(115,1)=1)&&(SQLCODE<0) { TROLLBACK s %ROWCOUNT=0} q +%0Ferr s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) d:$g(%mmmsqld(27))=1 %ReleaseLock^Stat.OmzetKlantProductMaand.T1(%mmmsqld(19)) g %0Fc +%SerializeObject(%this,serial,partial) Set partial=$get(partial,0) New %objOBJ,sc,id + Set $Ztrap = "%SerializeObjectERR" + If $zobjval(,2,0,3,2) { Set partial = 1 } ElseIf ('partial) { Set $zobjval(,2,0,3,2) = 1 } + Set sc=..%ValidateObject() If ('sc) { Ztrap "SO" } + Set sc=..%NormalizeObject() If ('sc) { Ztrap "SO" } + If $zobjval(,5,0,3,4)'="" { Set:'$data(%objTX(1,+$zobjval(,5,0,3,4),1)) %objTX(1,+$zobjval(,5,0,3,4))=$zobjval(,5,0,3,4),%objTX(1,+$zobjval(,5,0,3,4),1)=..KlantGetObject(1),%objTX(1,+$zobjval(,5,0,3,4),6)=1 Set %objOBJ(66)=$lg(%objTX(1,+$zobjval(,5,0,3,4),1)),$zobjval(,4,0,3,4)=%objOBJ(66) } Else { Set %objOBJ(66)=$zobjval(,4,0,3,4) } + If %objOBJ(66)="" Quit $$Error^%apiOBJ(5659,"Klant") + If $zobjval(,11,0,3,9)'="" { Set:'$data(%objTX(1,+$zobjval(,11,0,3,9),1)) %objTX(1,+$zobjval(,11,0,3,9))=$zobjval(,11,0,3,9),%objTX(1,+$zobjval(,11,0,3,9),1)=..ProductGetObject(1),%objTX(1,+$zobjval(,11,0,3,9),6)=1 Set %objOBJ(73)=$lg(%objTX(1,+$zobjval(,11,0,3,9),1)),$zobjval(,10,0,3,9)=%objOBJ(73) } Else { Set %objOBJ(73)=$zobjval(,10,0,3,9) } + If %objOBJ(73)="" Quit $$Error^%apiOBJ(5659,"Product") + s:$g(%objtxSTATUS)=2 %objtxLIST(+%this)=%this + Set id=$lg(serial),sc=..%SaveData(.id) If ('sc) { Ztrap "SO" } + Set serial=(..%Oid()) + If 'partial { Set $zobjval(,2,0,3,2) = 0 } + Quit sc +%SerializeObjectERR Set $ZTrap="" If $extract($zerror,1,5)'="" Set sc=$$Error^%apiOBJ(5002,$ZE) + If 'partial { Set $zobjval(,2,0,3,2) = 0 } + Quit sc +%AddToSaveSet(%this,depth,refresh,norecurseon) public { Set depth=$get(depth,3),refresh=$get(refresh,0),norecurseon=$get(norecurseon) If ($data(%objTX(1,+%this))) && ('refresh) Quit 1 + Set sc=1,intOref=+%this + If refresh { + Set intPoref=$order(%objTX(1,intOref,2,"")) + While intPoref'="" { Kill %objTX(1,intPoref,3,intOref),%objTX(1,intOref,2,intPoref) Set intPoref=$order(%objTX(1,intOref,2,intPoref)) } + } + Set serial=..%Oid(),%objTX(1,intOref)=%this,%objTX(1,intOref,1)=serial,%objTX(1,intOref,6)=1 If (serial '= "") && (depth<2) Quit 1 + Set tDepth=$select(depth'=2:depth,1:1) + If $zobjval(,5,0,3,4)'="" { + If '$data(%objTX(1,+$zobjval(,5,0,3,4))) Set sc=..Klant.%AddToSaveSet(tDepth) Quit:('sc) sc + Set intPoref=+$zobjval(,5,0,3,4) If $get(%objTX(1,intPoref,1))="" Set %objTX(1,intPoref,3,intOref)="",%objTX(1,intOref,2,intPoref)="" + } + If $zobjval(,11,0,3,9)'="" { + If '$data(%objTX(1,+$zobjval(,11,0,3,9))) Set sc=..Product.%AddToSaveSet(tDepth) Quit:('sc) sc + Set intPoref=+$zobjval(,11,0,3,9) If $get(%objTX(1,intPoref,1))="" Set %objTX(1,intPoref,3,intOref)="",%objTX(1,intOref,2,intPoref)="" + } + If ..%ObjectModified() Set %objTX(2,intOref)=1 +exit Quit sc } +%RemoveFromSaveSet(%this) public { + If '($data(%objTX(1,+%this))) Quit 1 + Set intRef=+%this + Set intSucc="" For Set intSucc=$order(%objTX(1,intRef,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intSucc,2,intRef) + Set intPred="" For Set intPred=$order(%objTX(1,intRef,2,intPred)) Quit:intPred="" Kill %objTX(1,intPred,3,intRef) + Kill %objTX(1,intRef),%objTX(2,intRef) + Quit 1 } +%SetModified(%this,value) public { s $zobjmod(,0)=value + Quit 1 } +%SortBegin(idxlist,excludeunique) public { Set idxlist=$get(idxlist),excludeunique=$get(excludeunique,0) QUIT 1 } +%SortEnd(idxlist,commit) public { Set idxlist=$get(idxlist),commit=$get(commit,1) QUIT 1 } +%UpgradeConcurrency(%this,concurrency) public { Set concurrency=$get(concurrency,0) If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set current=$zobjval(,1,0,3,1) + Quit:concurrencycurrent $zobjval(,1,0,3,1)=concurrency Quit 1 + Set sc=..%AcquireLock($select(concurrency=3:"s",1:"e")) Quit:('sc) sc + If current=3 Do ..%ReleaseLock("s") + Set $zobjval(,1,0,3,1)=concurrency + Quit 1 } +%ValidateObject(%this,force) Set force=$get(force,0) New iv + If $zobjval(,5,0,3,4)="",$zobjval(,4,0,3,4)="" Quit $$Error^%apiOBJ(5659,"Klant") + If $zobjval(,11,0,3,9)="",$zobjval(,10,0,3,9)="" Quit $$Error^%apiOBJ(5659,"Product") + If '(..%IsModified()) Quit 1 + If $zobjmod(,3) Set iv=$zobjval(,3,0,3,3) If iv'="" Set iv=(..FaktuurLijnenIsValid(iv)) Quit:('iv) iv + Set iv=$zobjval(,6,0,3,5) If iv="" Quit $$Error^%apiOBJ(5659,"Maand") + If $zobjmod(,6) Set iv=$zobjval(,7,0,3,6) If iv'="" Set iv=(..MargeIsValid(iv)) Quit:('iv) iv + If $zobjmod(,7) Set iv=$zobjval(,8,0,3,7) If iv'="" Set iv=(..OmzetIsValid(iv)) Quit:('iv) iv + If $zobjmod(,8) Set iv=$zobjval(,9,0,3,8) If iv'="" Set iv=(..OmzetLijstPrijsIsValid(iv)) Quit:('iv) iv + If $zobjmod(,10) Set iv=$zobjval(,12,0,3,10) If iv'="" Set iv=(..StuksIsValid(iv)) Quit:('iv) iv + If $zobjmod(,11) Set iv=$zobjval(,13,0,3,11) If iv'="" Set iv=(..StuksKOMIsValid(iv)) Quit:('iv) iv + Quit 1 +zCumul(KLNr,PRNr,RefDatum,Periode,Piece) New I,Cumul,Maand,Rec,Einde + Set:RefDatum'?1.N RefDatum=$ZDH($TR(RefDatum_"01"," .",""),8) ; Indien geen $H dan waarschijnlijk "YYYY.MM " formaat + Set Maand = $$CALCDATE^vhDTyp(RefDatum,"M",-Periode) + Set Maand=$TR($P($ZD(Maand,3),"-",1,2),"-",".")_" " + Set Einde=$TR($P($ZD(RefDatum,3),"-",1,2),"-",".")_" " + Set Cumul=0 + For Set Maand=$O(^KSTKL(KLNr,PRNr,Maand)) Quit:Maand=""!(Maand]Einde) Do + . Set Rec=^KSTKL(KLNr,PRNr,Maand) + . ;W Maand," ",Rec,! + . Set Cumul=Cumul+$P(Rec,"\",Piece) + Quit Cumul +zDatumGet(%this) Quit $ZDH($TR($zobjval(,6,0,3,5)_"01"," .",""),8) +zFaktuurLijnenCumul12Get(%this) Quit ##class(Stat.OmzetKlantProductMaand).Cumul(..Klant.%Id(),..Product.%Id(),$zobjval(,6,0,3,5),12,2) +zGeefCatalogusInfo(KLNr) Set CatalogusInfo = "" + Set KorttekstPrefix = "" + Set KorttekstPrefix = %CatalogusLijst.Next(KorttekstPrefix) + While(KorttekstPrefix '= ""){ + Set PRNrs = %CatalogusLijst.GetAt(KorttekstPrefix) + Set AantalGekregen = ##class(Stat.OmzetKlantProductMaand).HeeftCatalogusGekregen(KLNr,PRNrs) + If (AantalGekregen > 0){ + Set CatalogusInfo = CatalogusInfo_KorttekstPrefix_"," + } + Set KorttekstPrefix = %CatalogusLijst.Next(KorttekstPrefix) + } + Quit CatalogusInfo +zHeeftCatalogusGekregen(KLNr,PRNrsCatalogus) Set PRNrs = "" + For i=1:1:$ListLength(PRNrsCatalogus) { + Set PRNrs = PRNrs_$ListGet(PRNrsCatalogus,i) + If (i '= $ListLength(PRNrsCatalogus)) Set PRNrs = PRNrs_", " + } + Set Query = "SELECT Count(*) As AantalGekregen FROM Prod.VoorraadBeweging where Product IN ("_PRNrs_") AND actie = 'U' and DerdeNr = "_KLNr + set qHandler = $$ExecDynQuery^vhQUERYLIB(Query) + do qHandler.Next() + Set AantalGekregen = qHandler.Data("AantalGekregen") + Quit $G(AantalGekregen) +zMargeCumul12Get(%this) Quit ##class(Stat.OmzetKlantProductMaand).Cumul(..Klant.%Id(),..Product.%Id(),$zobjval(,6,0,3,5),12,4) +zOmzetCumul12Get(%this) Quit ##class(Stat.OmzetKlantProductMaand).Cumul(..Klant.%Id(),..Product.%Id(),$zobjval(,6,0,3,5),12,3) +zStuksCumul12Get(%this) Quit ##class(Stat.OmzetKlantProductMaand).Cumul(..Klant.%Id(),..Product.%Id(),$zobjval(,6,0,3,5),12,1) +zTest() Set result=##class(%Library.ResultSet).%New("Stat.OmzetKlantProductMaand:VerschilOmzetProdGrp") + Do result.Execute($$CALCDATE^vhDTyp($H,"M",-24),$$CALCDATE^vhDTyp($H,"M",-13),$$CALCDATE^vhDTyp($H,"M",-12),$$CALCDATE^vhDTyp($H,"M",-1)) + For Quit:'result.Next() Do + Set a = result.Data("KLNr") + //. Write result.Data("KLNr")," ", result.Data("Naam")," ", result.Data("Regio")," ", result.Data("Vervallen")," ", result.Data("Codex")," ", result.Data("Uitz") + //. write " voBlum:",result.Data("VoBlum")," huOL:",result.Data("HuOL"),! + Quit +zVerschilOmzetProdGrpExecute(qHandle,VorigVan,VorigTot,HuidigVan,HuidigTot) If (VorigVan["-") || (VorigVan["/") { + Set VorigVan = $zdh(VorigVan,3) + Set VorigTot = $zdh(VorigTot,3) + Set HuidigVan = $zdh(HuidigVan,3) + Set HuidigTot = $zdh(HuidigTot,3) + } + Set %VOKLId=0 + Set %VOVorigVan=$$EXTDATE^vhDTyp(VorigVan,"DM4")_" " + Set %VOVorigTot=$$EXTDATE^vhDTyp(VorigTot,"DM4")_" " + Set %VOHuidigVan=$$EXTDATE^vhDTyp(HuidigVan,"DM4")_" " + Set %VOHuidigTot=$$EXTDATE^vhDTyp(HuidigTot,"DM4")_" " + Set %HuidigVan=$$CALCDATE^vhDTyp(HuidigVan,"M","FD") + Set %HuidigTot=$$CALCDATE^vhDTyp(HuidigTot,"M","LD") + Set %HuidigTotFD=$$CALCDATE^vhDTyp(HuidigTot,"M","FD") + /// Indicator : 3 maand + /// Gelieve aan de klantproductanalyse naast de daalindicator ook een stijgindicator toe te voegen. + /// Eigenlijk gebeurt hier hetzelfde als bij daling. Als de klant negatief ingekleurd staat, + /// kan het alsnog zijn dat de trend de laatste maand-3maanden positief is. + /// Meer concreet: de indicator op 3-maand niveau moet de laatste drie volledige maanden + /// vergelijken met diezelfde maanden een jaar tevoren. + Set AantalMaandenIndicator = 3 + Set Indic = AantalMaandenIndicator - 1 + Set IVorigVan = $$CALCDATE^vhDTyp(VorigTot,"M",-Indic) + Set IVorigTot = VorigTot + Set IHuidigVan = $$CALCDATE^vhDTyp(HuidigTot,"M",-Indic) + Set IHuidigTot = HuidigTot + Set %VOIndicatorVorigVan=$$EXTDATE^vhDTyp(IVorigVan,"DM4")_" " + Set %VOIndicatorVorigTot=$$EXTDATE^vhDTyp(IVorigTot,"DM4")_" " + Set %VOIndicatorHuidigVan=$$EXTDATE^vhDTyp(IHuidigVan,"DM4")_" " + Set %VOIndicatorHuidigTot=$$EXTDATE^vhDTyp(IHuidigTot,"DM4")_" " + Set %IndicatorHuidigVan=$$CALCDATE^vhDTyp(IHuidigVan,"M","FD") + Set %IndicatorHuidigTot=$$CALCDATE^vhDTyp(IHuidigTot,"M","LD") + Set %IndicatorHuidigTotFD=$$CALCDATE^vhDTyp(IHuidigTot,"M","FD") + Quit 1 +zVerschilOmzetProdGrpClose(qHandle) Kill %VOKLId,%VORegion,%VOVorigVan,%VOVorigTot,%VOHuidigTot,%VOHuidigVan,%HuidigVan,%HuidigTot + Quit 1 +zVerschilOmzetProdGrpFetch(qHandle,Row,AtEnd) Set AtEnd=$get(AtEnd,0) Set D="\",U=";",Q="K" + Set %VOKLId=$O(^KKL(%VOKLId)) + //w %VOKLId,! + If %VOKLId="" Do Quit 1 + . Set Row="" + . Set AtEnd=1 + Else Do + . Set KLNr=$P(^KKL(%VOKLId,0),"\") + Kill SumOmzetVorig,SumOmzetHuidig,SumMargeHuidig,SumMargeVorig + Kill IndicatorSumOmzetVorig,IndicatorSumOmzetHuidig,IndicatorSumMargeVorig,IndicatorSumMargeHuidig ///Indicator + Set PRNr=0 + Set PRNr=$O(^KSTKL(KLNr,PRNr)) + While (PRNr '= ""){ + Set Vorig=$$KLANT^STAT(KLNr,PRNr,%VOVorigVan,%VOVorigTot,"3,4") + Set Huidig=$$KLANT^STAT(KLNr,PRNr,%VOHuidigVan,%VOHuidigTot,"3,4") + Set ProdGrp=$$gpvProdGrp^Prod.Product.KPRPropViaNr(PRNr) + Set:ProdGrp="" ProdGrp="REST" + Set SumOmzetVorig(ProdGrp)=$G(SumOmzetVorig(ProdGrp))+$P(Vorig,D,1) + Set SumOmzetHuidig(ProdGrp)=$G(SumOmzetHuidig(ProdGrp))+$P(Huidig,D,1) + Set SumMargeVorig(ProdGrp)=$G(SumMargeVorig(ProdGrp))+$P(Vorig,D,2) + Set SumMargeHuidig(ProdGrp)=$G(SumMargeHuidig(ProdGrp))+$P(Huidig,D,2) + ///Indicator + Set IndicatorVorig=$$KLANT^STAT(KLNr,PRNr,%VOIndicatorVorigVan,%VOIndicatorVorigTot,"3,4") + Set IndicatorHuidig=$$KLANT^STAT(KLNr,PRNr,%VOIndicatorHuidigVan,%VOIndicatorHuidigTot,"3,4") + Set IndicatorSumOmzetVorig(ProdGrp)=$G(IndicatorSumOmzetVorig(ProdGrp))+$P(IndicatorVorig,D,1) + Set IndicatorSumOmzetHuidig(ProdGrp)=$G(IndicatorSumOmzetHuidig(ProdGrp))+$P(IndicatorHuidig,D,1) + Set IndicatorSumMargeVorig(ProdGrp)=$G(IndicatorSumMargeVorig(ProdGrp))+$P(IndicatorVorig,D,2) + Set IndicatorSumMargeHuidig(ProdGrp)=$G(IndicatorSumMargeHuidig(ProdGrp))+$P(IndicatorHuidig,D,2) + Set PRNr=$O(^KSTKL(KLNr,PRNr)) + } + Set Klant=##class(Derde.Klant.Klant).%OpenId(KLNr) + Set LevAdr=$$DEFAULT^LEVADR(KLNr) + Set (OmzetHuidigList,OmzetVorigList,MargeVorigList,MargeHuidigList)="" + Set (IOmzetHuidigList,IOmzetVorigList,IVorigList,IHuidigList)="" ///Indicator + Set Vervallen=$P($$WAARDIG^KREDIET(KLNr,"D"),D,6) ; Aantal dagen vervallen fakturen + Set Vervallen=$S(Vervallen&&($H-Vervallen>0):$H-Vervallen,1:"") + Set HeeftUtz=$S($D(^KLPUTZ("N",KLNr))>1:"+",1:"") + Set AantalBezoeken=##class(BL.Derde.Agenda.Agenda).AantalBezoeken(KLNr,%HuidigVan,%HuidigTot) + Set LaatsteBezoek=##class(BL.Derde.Agenda.Agenda).LaatsteBezoek(KLNr) + If (LaatsteBezoek '= "") Set LaatsteBezoek=$zd(LaatsteBezoek,3) + Set AantalKlachtenJr=##class(Derde.Klacht).AantalKlachten("K",KLNr,%HuidigVan,%HuidigTot) + Set AantalKlachtenMnd=##class(Derde.Klacht).AantalKlachten("K",KLNr,%HuidigTotFD,%HuidigTot) + Set Trend=##class(BL.Derde.Klant.Main).OmzetTrend(KLNr) + Set Kwantitatief=$$DisplayKwantitatief^KLANT5(KLNr) + Set Kwantitatief=$LG(Kwantitatief,1)_" "_$LG(Kwantitatief,2) + Set Kwalitatief=$$DisplayKwalitatief^KLANT5(KLNr) + Set Kwalitatief=$LG(Kwalitatief,1)_" "_$LG(Kwalitatief,2) + Set Taal = $P(^KKL(%VOKLId,0),"\",9) + Do ##class(Stat.OmzetKlantProductMaand).ZoekPRNrsCatalogi() + Set CatalogusInfo = ##class(Stat.OmzetKlantProductMaand).GeefCatalogusInfo(KLNr) + Set Row=$LB(KLNr,Klant.Naam,Klant.Telefoon1,$P(LevAdr,"\",5),$P(LevAdr,"\",6),$P(LevAdr,"\",7),Taal,Klant.Sektor,Klant.Aktiviteit,Kwantitatief,Kwalitatief,Klant.CommNonActief,Vervallen,AantalBezoeken,LaatsteBezoek,AantalKlachtenJr,AantalKlachtenMnd,Klant.Prijsklasse,HeeftUtz,Trend) + Set ProdGrp="" + Set ProdGrp=$O(^RES("PRODUKT","PI","PRODUKTGROEP","D",ProdGrp)) + While (ProdGrp '= ""){ + Set VolgNr=$P(^RES("PRODUKT","PI","PRODUKTGROEP","D",ProdGrp),"`") + Set $LI(OmzetVorigList,VolgNr)=$LG(OmzetVorigList,VolgNr)+$G(SumOmzetVorig(ProdGrp)) + Set $LI(OmzetHuidigList,VolgNr)=$LG(OmzetHuidigList,VolgNr)+$G(SumOmzetHuidig(ProdGrp)) + Set $LI(MargeVorigList,VolgNr)=$LG(MargeVorigList,VolgNr)+$G(SumMargeVorig(ProdGrp)) + Set $LI(MargeHuidigList,VolgNr)=$LG(MargeHuidigList,VolgNr)+$G(SumMargeHuidig(ProdGrp)) + /// Indicator + Set $LI(IOmzetVorigList,VolgNr)=$LG(IOmzetVorigList,VolgNr)+$G(IndicatorSumOmzetVorig(ProdGrp)) + Set $LI(IOmzetHuidigList,VolgNr)=$LG(IOmzetHuidigList,VolgNr)+$G(IndicatorSumOmzetHuidig(ProdGrp)) + Set $LI(IMargeVorigList,VolgNr)=$LG(IMargeVorigList,VolgNr)+$G(IndicatorSumMargeVorig(ProdGrp)) + Set $LI(IMargeHuidigList,VolgNr)=$LG(IMargeHuidigList,VolgNr)+$G(IndicatorSumMargeHuidig(ProdGrp)) + Set ProdGrp=$O(^RES("PRODUKT","PI","PRODUKTGROEP","D",ProdGrp)) + } + Set Row=Row_OmzetVorigList_OmzetHuidigList_MargeVorigList_MargeHuidigList + /*Set IOmzetVorigList = OmzetVorigList + Set IOmzetHuidigList = OmzetHuidigList + Set IMargeVorigList = MargeVorigList + Set IMargeHuidigList = MargeHuidigList + */ + //Set Row=Row_OmzetVorigList_OmzetHuidigList_MargeVorigList_MargeHuidigList + Set Row=Row_IOmzetVorigList_IOmzetHuidigList_IMargeVorigList_IMargeHuidigList + Set Row=Row_$LB(CatalogusInfo) + Kill %CatalogusLijst + Kill IOmzetVorigList + Kill IOmzetHuidigList + Kill IMargeVorigList + Kill IMargeHuidigList + Quit 1 +zZoekPRNrsCatalogi() Set KorttekstPrefixen = ##class(%Library.ArrayOfDataTypes).%New() + Do KorttekstPrefixen.SetAt(1,"CVH.CA") + Do KorttekstPrefixen.SetAt(1,"CBL.CA") + Set ProductService = ##class(APPS.PM.ProductService).%New() + Set Criteria=##class(APPS.PM.dto.ZoekCriteria).%New() + Set Criteria.SoortProductID=##class(APPS.PM.enu.SoortProductID).Korttekst() + Set Criteria.ExacteKorttekst = 0 + Kill %CatalogusLijst + Set %CatalogusLijst = ##class(%Library.ArrayOfDataTypes).%New() + Set KorttekstPrefix = "" + Set KorttekstPrefix = KorttekstPrefixen.Next(KorttekstPrefix) + While(KorttekstPrefix '= ""){ + Set Criteria.ProductID = KorttekstPrefix + Set ProductenLijst = ProductService.ZoekProducten(Criteria).HerkendeProducten + For i=1:1:ProductenLijst.Count() + { + Set Korttekst = ProductenLijst.GetAt(i).Korttekst + Set PRNr = ProductenLijst.GetAt(i).PRNr + Set Jaar = $Extract(Korttekst,7,8) + Set PRNrs = %CatalogusLijst.GetAt(KorttekstPrefix_Jaar)_$LB(ProductenLijst.GetAt(i).PRNr) + Do %CatalogusLijst.SetAt(PRNrs,KorttekstPrefix_Jaar) + } + Set KorttekstPrefix = KorttekstPrefixen.Next(KorttekstPrefix) + } + Quit +%ConcurrencyIsModified(%this) Quit $zobjmod(,1) +%ConcurrencyIsValid(value) public { Quit 1 } +%ConcurrencySetModified(%this,newvalue) public { Set $zobjmod(,1)=newvalue Quit 1 } +%IsInSaveIsModified(%this) Quit $zobjmod(,2) +%IsInSaveIsValid(value) public { Quit 1 } +%IsInSaveSetModified(%this,newvalue) public { Set $zobjmod(,2)=newvalue Quit 1 } +zDatumDisplayToLogical(%val) Quit $s(%val="":"",1:$zdh(%val,,,5,80,20,,,"")) +zDatumIsModified(%this) Quit $zobjmod(,0) +zDatumIsValidDT(%val) Quit $isvalidnum(%val,0,,) +zDatumLogicalToDisplay(%val) Quit $s(%val="":"",1:$zd(%val,,,4)) +zDatumLogicalToOdbc(%val) Set %val=$get(%val) Quit $s(%val="":"",1:$zd(%val,3)) +zDatumNormalize(%val) Quit %val\1 +zDatumOdbcToLogical(%val) Set %val=$get(%val) Quit $s(%val="":"",1:$zdh(%val,3,,,,,,,"error: '"_%val_"' is an invalid date value")) +zDatumSetModified(%this,newvalue) public { Set $zobjmod(,0)=newvalue Quit 1 } +zFaktuurLijnenDisplayToLogical(%val) Quit $in(%val,"","") +zFaktuurLijnenIsModified(%this) Quit $zobjmod(,3) +zFaktuurLijnenIsValid(value) public { Quit $s(##class(Stat.OmzetKlantProductMaand).FaktuurLijnenIsValidDT(value):1,1:$$Error^%apiOBJ(5802,"Stat.OmzetKlantProductMaand.FaktuurLijnen")) } +zFaktuurLijnenIsValidDT(%val) Quit $isvalidnum(%val,0,,) +zFaktuurLijnenLogicalToDisplay(%val) Quit %val +zFaktuurLijnenNormalize(%val) Quit %val\1 +zFaktuurLijnenSetModified(%this,newvalue) public { Set $zobjmod(,3)=newvalue Quit 1 } +zFaktuurLijnenCumul12DisplayToL(%val) Quit $in(%val,"","") +zFaktuurLijnenCumul12IsModified(%this) Quit $zobjmod(,0) +zFaktuurLijnenCumul12IsValidDT(%val) Quit $isvalidnum(%val,,,) +zFaktuurLijnenCumul12LogicalToD(%val) Quit %val +zFaktuurLijnenCumul12Normalize(%val) Quit +%val +zFaktuurLijnenCumul12SetModifie(%this,newvalue) public { Set $zobjmod(,0)=newvalue Quit 1 } +zKlantGetObject(%this,force) public { Set force=$get(force,0) Quit:$zobjval(,5,0,3,4)="" $s($zobjval(,4,0,3,4)="":"",1:$lb($zobjval(,4,0,3,4)_"")) Quit:(+..Klant.%GetSwizzleObject(force,.oid)) oid Quit "" + Quit "" } +zKlantGetObjectId(%this,force) public { Set force=$get(force,0) Quit $lg(..KlantGetObject(force)) } +zKlantGetSwizzled(%this) public { Set oid=$s($zobjval(,4,0,3,4)="":"",1:$lb($zobjval(,4,0,3,4)_"")) + Set oref=##class(Derde.Klant.Klant).%Open(oid) If oref="" Quit "" + Set $zobjval(,5,0,0,4)=oref,$zobjval(,4,0,0,4)="" + Set isusercount=''$g($zobjval(oref,0,,,,5)) Do oref.%Close() Set $zobjval(oref,0,,,,5)=isusercount + Quit oref } +zKlantIsModified(%this) Quit $zobjmod(,4) +zKlantIsValid(value) public { Quit 1 } +zKlantNewObject(%this) public { Set newobject=##class(Derde.Klant.Klant).%New("") If newobject="" Quit "" + Set ..Klant=newobject + Set isusercount=''$get($zobjval(newobject,0,,,,5)) Do newobject.%Close() Set $zobjval(newobject,0,,,,5)=isusercount + Quit newobject } +zKlantSet(%this,newvalue) public { If newvalue'="",'$isobject(newvalue) Quit $$Error^%apiOBJ(5807,newvalue) + Set $zobjval(,5,0,3,4)=newvalue,$zobjval(,4,0,3,4)="" + Quit 1 } +zKlantSetModified(%this,newvalue) public { Set $zobjmod(,4)=newvalue Quit 1 } +zKlantSetObject(%this,newvalue) public { If $zobjval(,5,0,3,4)'="" Do ..KlantUnSwizzle(0) + Set $zobjval(,4,0,3,4)=$lg(newvalue),$zobjval(,5,0,3,4)="" + Quit 1 } +zKlantSetObjectId(%this,newid) public { Quit ..KlantSetObject($s(newid="":"",1:$lb(newid_""))) } +zKlantUnSwizzle(%this,force) public { Set force=$get(force,0) Quit:$zobjval(,5,0,3,4)="" 1 + Set modbit=$zobjmod(,4) + Set sc=..Klant.%GetSwizzleObject(force,.newvalue) Quit:('sc) sc + Set $zobjval(,4,0,3,4)=$lg(newvalue),$zobjval(,5,0,3,4)="" + Set $zobjmod(,4)=modbit + Quit 1 } +zMaandDisplayToLogical(%val) Quit %val +zMaandIsModified(%this) Quit $zobjmod(,5) +zMaandIsValid(value) public { Quit 1 } +zMaandIsValidDT(%val) Quit 1 +zMaandLogicalToDisplay(%val) Quit %val +zMaandNormalize(%val) Quit $e(%val,1,50) +zMaandSetModified(%this,newvalue) public { Set $zobjmod(,5)=newvalue Quit 1 } +zMargeDisplayToLogical(%val) Quit $in(%val,"","") +zMargeIsModified(%this) Quit $zobjmod(,6) +zMargeIsValid(value) public { Quit $s(##class(Stat.OmzetKlantProductMaand).MargeIsValidDT(value):1,1:$$Error^%apiOBJ(5802,"Stat.OmzetKlantProductMaand.Marge")) } +zMargeIsValidDT(%val) Quit $isvalidnum(%val,,,) +zMargeLogicalToDisplay(%val) Quit %val +zMargeNormalize(%val) Quit +%val +zMargeSetModified(%this,newvalue) public { Set $zobjmod(,6)=newvalue Quit 1 } +zMargeCumul12DisplayToLogical(%val) Quit $in(%val,"","") +zMargeCumul12IsModified(%this) Quit $zobjmod(,0) +zMargeCumul12IsValidDT(%val) Quit $isvalidnum(%val,,,) +zMargeCumul12LogicalToDisplay(%val) Quit %val +zMargeCumul12Normalize(%val) Quit +%val +zMargeCumul12SetModified(%this,newvalue) public { Set $zobjmod(,0)=newvalue Quit 1 } +zOmzetDisplayToLogical(%val) Quit $in(%val,"","") +zOmzetIsModified(%this) Quit $zobjmod(,7) +zOmzetIsValid(value) public { Quit $s(##class(Stat.OmzetKlantProductMaand).OmzetIsValidDT(value):1,1:$$Error^%apiOBJ(5802,"Stat.OmzetKlantProductMaand.Omzet")) } +zOmzetIsValidDT(%val) Quit $isvalidnum(%val,,,) +zOmzetLogicalToDisplay(%val) Quit %val +zOmzetNormalize(%val) Quit +%val +zOmzetSetModified(%this,newvalue) public { Set $zobjmod(,7)=newvalue Quit 1 } +zOmzetCumul12DisplayToLogical(%val) Quit $in(%val,"","") +zOmzetCumul12IsModified(%this) Quit $zobjmod(,0) +zOmzetCumul12IsValidDT(%val) Quit $isvalidnum(%val,,,) +zOmzetCumul12LogicalToDisplay(%val) Quit %val +zOmzetCumul12Normalize(%val) Quit +%val +zOmzetCumul12SetModified(%this,newvalue) public { Set $zobjmod(,0)=newvalue Quit 1 } +zOmzetLijstPrijsDisplayToLogica(%val) Quit $in(%val,"","") +zOmzetLijstPrijsIsModified(%this) Quit $zobjmod(,8) +zOmzetLijstPrijsIsValid(value) public { Quit $s(##class(Stat.OmzetKlantProductMaand).OmzetLijstPrijsIsValidDT(value):1,1:$$Error^%apiOBJ(5802,"Stat.OmzetKlantProductMaand.OmzetLijstPrijs")) } +zOmzetLijstPrijsIsValidDT(%val) Quit $isvalidnum(%val,,,) +zOmzetLijstPrijsLogicalToDispla(%val) Quit %val +zOmzetLijstPrijsNormalize(%val) Quit +%val +zOmzetLijstPrijsSetModified(%this,newvalue) public { Set $zobjmod(,8)=newvalue Quit 1 } +zProductGetObject(%this,force) public { Set force=$get(force,0) Quit:$zobjval(,11,0,3,9)="" $s($zobjval(,10,0,3,9)="":"",1:$lb($zobjval(,10,0,3,9)_"")) Quit:(+..Product.%GetSwizzleObject(force,.oid)) oid Quit "" + Quit "" } +zProductGetObjectId(%this,force) public { Set force=$get(force,0) Quit $lg(..ProductGetObject(force)) } +zProductGetSwizzled(%this) public { Set oid=$s($zobjval(,10,0,3,9)="":"",1:$lb($zobjval(,10,0,3,9)_"")) + Set oref=##class(Prod.Product).%Open(oid) If oref="" Quit "" + Set $zobjval(,11,0,0,9)=oref,$zobjval(,10,0,0,9)="" + Set isusercount=''$g($zobjval(oref,0,,,,5)) Do oref.%Close() Set $zobjval(oref,0,,,,5)=isusercount + Quit oref } +zProductIsModified(%this) Quit $zobjmod(,9) +zProductIsValid(value) public { Quit 1 } +zProductNewObject(%this) public { Set newobject=##class(Prod.Product).%New("") If newobject="" Quit "" + Set ..Product=newobject + Set isusercount=''$get($zobjval(newobject,0,,,,5)) Do newobject.%Close() Set $zobjval(newobject,0,,,,5)=isusercount + Quit newobject } +zProductSet(%this,newvalue) public { If newvalue'="",'$isobject(newvalue) Quit $$Error^%apiOBJ(5807,newvalue) + Set $zobjval(,11,0,3,9)=newvalue,$zobjval(,10,0,3,9)="" + Quit 1 } +zProductSetModified(%this,newvalue) public { Set $zobjmod(,9)=newvalue Quit 1 } +zProductSetObject(%this,newvalue) public { If $zobjval(,11,0,3,9)'="" Do ..ProductUnSwizzle(0) + Set $zobjval(,10,0,3,9)=$lg(newvalue),$zobjval(,11,0,3,9)="" + Quit 1 } +zProductSetObjectId(%this,newid) public { Quit ..ProductSetObject($s(newid="":"",1:$lb(newid_""))) } +zProductUnSwizzle(%this,force) public { Set force=$get(force,0) Quit:$zobjval(,11,0,3,9)="" 1 + Set modbit=$zobjmod(,9) + Set sc=..Product.%GetSwizzleObject(force,.newvalue) Quit:('sc) sc + Set $zobjval(,10,0,3,9)=$lg(newvalue),$zobjval(,11,0,3,9)="" + Set $zobjmod(,9)=modbit + Quit 1 } +zStuksDisplayToLogical(%val) Quit $in(%val,"","") +zStuksIsModified(%this) Quit $zobjmod(,10) +zStuksIsValid(value) public { Quit $s(##class(Stat.OmzetKlantProductMaand).StuksIsValidDT(value):1,1:$$Error^%apiOBJ(5802,"Stat.OmzetKlantProductMaand.Stuks")) } +zStuksIsValidDT(%val) Quit $isvalidnum(%val,0,,) +zStuksLogicalToDisplay(%val) Quit %val +zStuksNormalize(%val) Quit %val\1 +zStuksSetModified(%this,newvalue) public { Set $zobjmod(,10)=newvalue Quit 1 } +zStuksCumul12DisplayToLogical(%val) Quit $in(%val,"","") +zStuksCumul12IsModified(%this) Quit $zobjmod(,0) +zStuksCumul12IsValidDT(%val) Quit $isvalidnum(%val,,,) +zStuksCumul12LogicalToDisplay(%val) Quit %val +zStuksCumul12Normalize(%val) Quit +%val +zStuksCumul12SetModified(%this,newvalue) public { Set $zobjmod(,0)=newvalue Quit 1 } +zStuksKOMDisplayToLogical(%val) Quit $in(%val,"","") +zStuksKOMIsModified(%this) Quit $zobjmod(,11) +zStuksKOMIsValid(value) public { Quit $s(##class(Stat.OmzetKlantProductMaand).StuksKOMIsValidDT(value):1,1:$$Error^%apiOBJ(5802,"Stat.OmzetKlantProductMaand.StuksKOM")) } +zStuksKOMIsValidDT(%val) Quit $isvalidnum(%val,0,,) +zStuksKOMLogicalToDisplay(%val) Quit %val +zStuksKOMNormalize(%val) Quit %val\1 +zStuksKOMSetModified(%this,newvalue) public { Set $zobjmod(,11)=newvalue Quit 1 } +zExtentExecute(%qHandle) [ SQLCODE,array,c1 ] public { New SQLCODE,array,c1 + Set sc=1 + s %qHandle=$i(%objcn) + ;---&sql(DECLARE Q27 CURSOR FOR + ;--- SELECT ID FROM Stat.OmzetKlantProductMaand) + ;--- ** SQL PUBLIC Variables: SQLCODE + + ;---&sql(OPEN Q27) + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %Q270o + If SQLCODE Set sc=$$Error^%apiOBJ(5821,"SQLCODE = "_SQLCODE) + Quit sc } +zExtentClose(%qHandle) [ SQLCODE,array,c1 ] public { New SQLCODE,array,c1 + ;---&sql(CLOSE Q27) + ;--- ** SQL PUBLIC Variables: SQLCODE + Do %Q270c + Kill %objcsc(%qHandle),%objcsp(%qHandle),%objcss(%qHandle),%objcst(%qHandle),%objcsl(%qHandle),%objcsR(%qHandle),%objcsZ(%qHandle),%objcsd(%qHandle) + Quit $select('SQLCODE:1,1:$$Error^%apiOBJ(5521,SQLCODE_" "_$get(%msg))) } +zExtentFetch(%qHandle,Row,AtEnd) [ SQLCODE,array,c1 ] public { New SQLCODE,array,c1 Set AtEnd=$get(AtEnd,0) Set Row="",AtEnd=0 + ;---&sql(FETCH Q27 INTO :c1) + ;--- ** SQL PUBLIC Variables: SQLCODE, c1 + Do %0Lo + If 'SQLCODE { Set Row=$lb(c1) } Else { Set AtEnd=1 } + Quit $select('SQLCODE:1,SQLCODE=100:1,1:$$Error^%apiOBJ(5521,SQLCODE_" "_$get(%msg))) } +zExtentFetchODBC(%qHandle,array,%qacn,AtEnd,SQLCODE) [ SQLCODE,array,c1 ] public { New c1 Set AtEnd=$get(AtEnd,0) Quit:$get(%qacn)="" $$Error^%apiOBJ(6024) + Kill array(%qacn) + Set SQLCODE=0 + Set AtEnd=0 + ;---&sql(FETCH Q27 INTO :array(%qacn,1)) + ;--- ** SQL PUBLIC Variables: SQLCODE, array + Do %0Mo + If SQLCODE=100 { Set AtEnd=1 } ElseIf SQLCODE { Quit $$Error^%apiOBJ(5521,SQLCODE_":"_$get(%msg)) } + Quit 1 } +zExtentFetchRows(%qHandle,FetchCount,RowSet,ReturnCount,AtEnd) [ SQLCODE,array,c1 ] public { New SQLCODE,array,c1 Set FetchCount=$get(FetchCount,0) Set RowSet="",ReturnCount=0,AtEnd=0 + For { + ;---&sql(FETCH Q27 INTO :c1) + ;--- ** SQL PUBLIC Variables: SQLCODE, c1 + Do %0No + If 'SQLCODE { Set RowSet=RowSet_$lb(c1),ReturnCount=ReturnCount+1 Quit:(ReturnCount=FetchCount)||(($l(RowSet)+($l(RowSet)\ReturnCount))>24000) } Else { Set AtEnd=1 Quit } + } + Quit $select('SQLCODE:1,SQLCODE=100:1,1:$$Error^%apiOBJ(5521,SQLCODE_" "_$g(%msg))) } + q +%Q270o s SQLCODE=$s($g(%objcsc(%qHandle)):-101,1:0) q:SQLCODE'=0 s %objcsd(%qHandle,7)=0 s %objcsd(%qHandle,8)=0,%objcsd(%qHandle,9)="" + s %objcsc(%qHandle)=1 q +%0Hfirst + ; asl MOD# 2 + s %objcsd(%qHandle,3)="" +%0HBk1 s %objcsd(%qHandle,3)=$o(^KSTPR(%objcsd(%qHandle,3))) + i %objcsd(%qHandle,3)="" g %0HBdun + i 1]]%objcsd(%qHandle,3) g %0HBk1 + s %objcsd(%qHandle,4)="" +%0HBk2 s %objcsd(%qHandle,4)=$o(^KSTPR(%objcsd(%qHandle,3),%objcsd(%qHandle,4))) + i %objcsd(%qHandle,4)="" g %0HBk1 + i 1]]%objcsd(%qHandle,4) g %0HBk2 + s %objcsd(%qHandle,5)="" +%0HBk3 s %objcsd(%qHandle,5)=$o(^KSTPR(%objcsd(%qHandle,3),%objcsd(%qHandle,4),%objcsd(%qHandle,5))) + i %objcsd(%qHandle,5)="" g %0HBk2 + i 1]]%objcsd(%qHandle,5) g %0HBk3 + s %objcsd(%qHandle,1)=(%objcsd(%qHandle,3))_"||"_(%objcsd(%qHandle,4))_"||"_(%objcsd(%qHandle,5)) + s %objcsd(%qHandle,6)=%objcsd(%qHandle,1) + g:$zu(115,2)=0 %0HBuncommitted i $zu(115,2)=1 l +^KSTPR($p(%objcsd(%qHandle,1),"||",1),$p(%objcsd(%qHandle,1),"||",2),$p(%objcsd(%qHandle,1),"||",3))#"S":$zu(115,4) i $t { s %objcsd(%qHandle,8)=1,%objcsd(%qHandle,9)=$name(^KSTPR($p(%objcsd(%qHandle,1),"||",1),$p(%objcsd(%qHandle,1),"||",2),$p(%objcsd(%qHandle,1),"||",3)))_"#""SI""" } else { s SQLCODE=-114,%msg="Unable to acquire shared lock on table Stat.OmzetKlantProductMaand for RowID value: "_%objcsd(%qHandle,1) q } + ; asl MOD# 3 + s %objcsd(%qHandle,3)=$p(%objcsd(%qHandle,1),"||"),%objcsd(%qHandle,4)=$p(%objcsd(%qHandle,1),"||",2),%objcsd(%qHandle,5)=$p(%objcsd(%qHandle,1),"||",3) + i %objcsd(%qHandle,3)'="",$d(^KSTPR(%objcsd(%qHandle,3))) + i '$t + e i 1]]%objcsd(%qHandle,3) + i '$t,%objcsd(%qHandle,4)'="",$d(^KSTPR(%objcsd(%qHandle,3),%objcsd(%qHandle,4))) + i '$t + e i 1]]%objcsd(%qHandle,4) + i '$t,%objcsd(%qHandle,5)'="",$d(^KSTPR(%objcsd(%qHandle,3),%objcsd(%qHandle,4),%objcsd(%qHandle,5))) + i '$t + e i 1]]%objcsd(%qHandle,5) + i g %0HCdun + s %objcsd(%qHandle,6)=%objcsd(%qHandle,1) +%0HBuncommitted ; + s:$g(SQLCODE)'<0 SQLCODE=0 s %ROWCOUNT=$i(%objcsd(%qHandle,7)) s %objcsc(%qHandle)=10 q +%Q270f i '$g(%objcsc(%qHandle)) { s SQLCODE=-102 q } i %objcsc(%qHandle)=100 { s SQLCODE=100 q } s SQLCODE=0 + s $zt="%0Herr" s $ze="" g %0Hfirst:%objcsc(%qHandle)=1 +%0HCdun i $zu(115,2)=1,$g(%objcsd(%qHandle,8))=1 { l -@%objcsd(%qHandle,9) } + g %0HBk3 +%0HBdun +%0HAdun + s %ROWCOUNT=%objcsd(%qHandle,7),SQLCODE=100,%objcsc(%qHandle)=100 q +%Q270c i '$g(%objcsc(%qHandle)) { s SQLCODE=-102 q } s %ROWCOUNT=+$g(%objcsd(%qHandle,7)) + i $zu(115,2)=1,$g(%objcsd(%qHandle,8))=1 { l -@%objcsd(%qHandle,9) } k %objcsd(%qHandle),%objcsc(%qHandle) s SQLCODE=0 q +%0Herr s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) s %objcsc(%qHandle)=100 q +%0Lo d %Q270f q:SQLCODE'=0 + s c1=%objcsd(%qHandle,6) + q +%0Mo d %Q270f q:SQLCODE'=0 + s array(%qacn,1)=%objcsd(%qHandle,6) + q +%0No d %Q270f q:SQLCODE'=0 + s c1=%objcsd(%qHandle,6) + q +zExtentGetInfo(colinfo,parminfo,idinfo,%qHandle,extoption,extinfo) public { Set extoption=$get(extoption,0) s parminfo="" + s:'($d(^oddCOM("Stat.OmzetKlantProductMaand","q","Extent",21),clientinfo)#2)&&'$s($d(^(2),clientinfo)#2:$d(^oddCOM(clientinfo,"q","Extent",21),clientinfo)#2||($d(^oddDEF(clientinfo,"q","Extent",21),clientinfo)#2),1:$d(^oddDEF("Stat.OmzetKlantProductMaand","q","Extent",21),clientinfo)#2) clientinfo=$g(^%qCacheObjectKey(1,"q",21)) + Set:extoption extinfo=$s($d(^oddCOM("Stat.OmzetKlantProductMaand","q","Extent",38))#2:^(38),$d(^oddCOM($g(^(2),"Stat.OmzetKlantProductMaand"),"q","Extent",38))#2:^(38),1:$s($d(^oddDEF($g(^(2),"Stat.OmzetKlantProductMaand"),"q","Extent",38))#2:^(38),1:$g(^%qCacheObjectKey(1,"q",38)))) + If clientinfo'="" Set colinfo=$listget(clientinfo,1),parminfo=$listget(clientinfo,2),idinfo=$listget(clientinfo,3) Quit 1 + Set colinfo="",parminfo="",idinfo=$listbuild(0) + Set sc=$$externaltype^%apiOLE("%Library.CacheString",.exttypes,"0") + Quit:('sc) sc + s:'($d(^oddCOM("Stat.OmzetKlantProductMaand","q","Extent",23),names)#2)&&'$s($d(^(2),names)#2:$d(^oddCOM(names,"q","Extent",23),names)#2||($d(^oddDEF(names,"q","Extent",23),names)#2),1:$d(^oddDEF("Stat.OmzetKlantProductMaand","q","Extent",23),names)#2) names=$g(^%qCacheObjectKey(1,"q",23)) + s:'($d(^oddCOM("Stat.OmzetKlantProductMaand","q","Extent",22),captions)#2)&&'$s($d(^(2),captions)#2:$d(^oddCOM(captions,"q","Extent",22),captions)#2||($d(^oddDEF(captions,"q","Extent",22),captions)#2),1:$d(^oddDEF("Stat.OmzetKlantProductMaand","q","Extent",22),captions)#2) captions=$g(^%qCacheObjectKey(1,"q",22)) + For i=1:1:1 Set colinfo=colinfo_$listbuild($listbuild($listget(names,i),$piece(exttypes,",",i),$listget(captions,i))) + Set idinfo=$listbuild(1) + s ^oddCOM("Stat.OmzetKlantProductMaand","q","Extent",21)=$listbuild(colinfo,parminfo,idinfo) + Quit 1 } +zExtentGetODBCInfo(colinfo,parminfo,qHandle) public { Set version = $Select($Get(%protocol,31)>30:3,%protocol>14:2,1:1) + If $Get(^oddPROC("STAT","OMZETKLANTPRODUCTMAAND_EXTENT",21))'="" { Set sc = 1, metadata=$Select(version=3:^oddPROC("STAT","OMZETKLANTPRODUCTMAAND_EXTENT",12),1:^oddPROC("STAT","OMZETKLANTPRODUCTMAAND_EXTENT",12,version)) } + ElseIf $Data(^oddPROC("STAT","OMZETKLANTPRODUCTMAAND_EXTENT")) { Set sc = $$CompileSignature^%ourProcedure("STAT","OMZETKLANTPRODUCTMAAND_EXTENT",.metadata,.signature) } + Else { Set sc = $$Error^%apiOBJ(5068,"Stat.OmzetKlantProductMaand:Extent") } + If (+sc) { Set colcount=$li(metadata,2),cmdlen=colcount*$Case(version,3:9,2:9,1:7,:9),colinfo=$li(metadata,2,2+cmdlen),parmcount=$li(metadata,cmdlen+3),pmdlen=parmcount*$Case(version,3:6,:4),parminfo=$li(metadata,cmdlen+3,cmdlen+pmdlen+3) } + Quit sc } +zExtentPrepare(qHandle,statement,containid,optional) public { Set containid=$get(containid,0) Quit 1 } +zExtentSendODBC(qHandle,array,qacn,%qrc,piece,ColumnCount) public { +SPInnerLoop Set rc=##class(Stat.OmzetKlantProductMaand).ExtentFetchODBC(.qHandle,.array,qacn,,.%qrc) + If ('rc) { Do ProcessError^%ourProcedure(rc,%sqlcontext,.%qrc,.%msg) Do Logerr^%qserver(%qrc,"","SP",.%msg) } + If %qrc Set piece=0 Quit + For piece=1:1:ColumnCount { Goto:$zobjexport(array(qacn,piece),7) SPDone } + Goto SPInnerLoop +SPDone Quit } +zVerschilOmzetProdGrpFetchODBC(qHandle,array,qacn,AtEnd,SQLCODE) public { Set AtEnd=$get(AtEnd,0) Quit:$g(qacn)="" $$Error^%apiOBJ(6024) + Kill array(qacn) + Set SQLCODE=0,AtEnd=0,sc=##class(Stat.OmzetKlantProductMaand).VerschilOmzetProdGrpFetch(.qHandle,.Row,.AtEnd) + If ('sc) { Set SQLCODE=-400 Set:$isobject($g(%sqlcontext)) %sqlcontext.SQLCode=-400,%sqlcontext.Message=$g(%msg) Quit sc } + If Row="" Set SQLCODE=100 Set:$isobject($g(%sqlcontext)) %sqlcontext.SQLCode=100 Quit 1 + For cptr=1:1:$listlength(Row) Set array(qacn,cptr)=$listget(Row,cptr) + Quit 1 } +zVerschilOmzetProdGrpFetchRows(qHandle,FetchCount,RowSet,ReturnCount,AtEnd) public { Set FetchCount=$get(FetchCount,0) Set RowSet="",ReturnCount=0,AtEnd=0,sc=1 + For { + Set sc=##class(Stat.OmzetKlantProductMaand).VerschilOmzetProdGrpFetch(.qHandle,.Row,.AtEnd) + If Row'="",(+sc) Set RowSet=RowSet_Row,ReturnCount=ReturnCount+1 If (ReturnCount=FetchCount)||(($l(RowSet)+($l(RowSet)\ReturnCount))>24000)||$get(AtEnd) Quit + If ('sc) Quit + If Row="" Set AtEnd=1 Quit + } + Quit sc } +zVerschilOmzetProdGrpGetInfo(colinfo,parminfo,idinfo,qHandle,extoption,extinfo) public { Set extoption=$get(extoption,0) s:'($d(^oddCOM("Stat.OmzetKlantProductMaand","q","VerschilOmzetProdGrp",21),clientinfo)#2)&&'$s($d(^(2),clientinfo)#2:$d(^oddCOM(clientinfo,"q","VerschilOmzetProdGrp",21),clientinfo)#2||($d(^oddDEF(clientinfo,"q","VerschilOmzetProdGrp",21),clientinfo)#2),1:$d(^oddDEF("Stat.OmzetKlantProductMaand","q","VerschilOmzetProdGrp",21),clientinfo)#2) clientinfo=$g(^%qCacheObjectKey(1,"q",21)) + If clientinfo'="" Set colinfo=$listget(clientinfo,1),parminfo=$listget(clientinfo,2),idinfo=$listget(clientinfo,3),extent=$listget(clientinfo,4) Set:$Get(extoption) extinfo=$s($d(^oddCOM("Stat.OmzetKlantProductMaand","q","VerschilOmzetProdGrp",38))#2:^(38),$d(^oddCOM($g(^(2),"Stat.OmzetKlantProductMaand"),"q","VerschilOmzetProdGrp",38))#2:^(38),1:$s($d(^oddDEF($g(^(2),"Stat.OmzetKlantProductMaand"),"q","VerschilOmzetProdGrp",38))#2:^(38),1:$g(^%qCacheObjectKey(1,"q",38)))) Quit 1 + Quit $$GetInfo^%ourQuery("Stat.OmzetKlantProductMaand","VerschilOmzetProdGrp",.colinfo,.parminfo,.idinfo,.qHandle,extoption,.extinfo) } +zVerschilOmzetProdGrpGetODBCInf(colinfo,parminfo,qHandle) public { Set version = $Select($Get(%protocol,31)>30:3,%protocol>14:2,1:1) + If $Get(^oddPROC("STAT","OMZETKLANTPRODUCTMAAND_VERSCHILOMZETPRODGRP",21))'="" { Set sc = 1, metadata=$Select(version=3:^oddPROC("STAT","OMZETKLANTPRODUCTMAAND_VERSCHILOMZETPRODGRP",12),1:^oddPROC("STAT","OMZETKLANTPRODUCTMAAND_VERSCHILOMZETPRODGRP",12,version)) } + ElseIf $Data(^oddPROC("STAT","OMZETKLANTPRODUCTMAAND_VERSCHILOMZETPRODGRP")) { Set sc = $$CompileSignature^%ourProcedure("STAT","OMZETKLANTPRODUCTMAAND_VERSCHILOMZETPRODGRP",.metadata,.signature) } + Else { Set sc = $$Error^%apiOBJ(5068,"Stat.OmzetKlantProductMaand:VerschilOmzetProdGrp") } + If (+sc) { Set colcount=$li(metadata,2),cmdlen=colcount*$Case(version,3:9,2:9,1:7,:9),colinfo=$li(metadata,2,2+cmdlen),parmcount=$li(metadata,cmdlen+3),pmdlen=parmcount*$Case(version,3:6,:4),parminfo=$li(metadata,cmdlen+3,cmdlen+pmdlen+3) } + Quit sc } +zVerschilOmzetProdGrpPrepare(qHandle,statement,containid,optional) public { Set containid=$get(containid,0) Quit 1 } +zVerschilOmzetProdGrpSendODBC(qHandle,array,qacn,%qrc,piece,ColumnCount) public { +SPInnerLoop Set rc=##class(Stat.OmzetKlantProductMaand).VerschilOmzetProdGrpFetchODBC(.qHandle,.array,qacn,,.%qrc) + If ('rc) { Do ProcessError^%ourProcedure(rc,%sqlcontext,.%qrc,.%msg) Do Logerr^%qserver(%qrc,"","SP",.%msg) } + If %qrc Set piece=0 Quit + For piece=1:1:ColumnCount { Goto:$zobjexport(array(qacn,piece),7) SPDone } + Goto SPInnerLoop +SPDone Quit } \ No newline at end of file Index: TECH/Concurrency/VhPersistent.cls.xml =================================================================== diff -u -r946 -r1013 --- TECH/Concurrency/VhPersistent.cls.xml (.../VhPersistent.cls.xml) (revision 946) +++ TECH/Concurrency/VhPersistent.cls.xml (.../VhPersistent.cls.xml) (revision 1013) @@ -1,5 +1,5 @@ - + Persistence methods die via inheritance overgenomen worden. @@ -12,9 +12,10 @@ maar dat maakt het gradueel in gebruik nemen complexer. De VERSIONPROPERTY parameter zou hier niet kunnen staan. 1 +TECH.Error 1 %Persistent -62171,31995.080914 +62193,46982.364224 62013,59285.30253 0 @@ -88,9 +89,20 @@ %Status + + +StatusCode:%Status,Message:%String +1 + + - + Index: vhUnitTest/DOM/LEV/TestLeverancier.cls.xml =================================================================== diff -u --- vhUnitTest/DOM/LEV/TestLeverancier.cls.xml (revision 0) +++ vhUnitTest/DOM/LEV/TestLeverancier.cls.xml (revision 1013) @@ -0,0 +1,31 @@ + + + + +do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","DOM.LEV.TestLeverancier") +1 +vhUnitTest.TestCase +62196,35397.625551 +0 + + + + + + + Index: Stat/LevPerfOpenstaand.cls.xml =================================================================== diff -u --- Stat/LevPerfOpenstaand.cls.xml (revision 0) +++ Stat/LevPerfOpenstaand.cls.xml (revision 1013) @@ -0,0 +1,470 @@ + + + + +Leveringsperformatie logging. +Bij het op bon zetten wordt er gekeken of er een backorder wordt gekreëerd en hoe de stock op dat moment is. +Tevens wordt 's nachts de log entries aangemaakt om te late leveringen te registreren. + +De nachtelijke log entries worden verdicht tot één lijn bij het op bon zetten van de orderlijn. Dit verdichten gebeurt ook door de nachtelijke job. +Verwijderde orders worden ook verwijderd uit de leveringsperformantie door de nachtelijke job +persistent +VHopslag +%Library.Persistent +59284,43523.015 +59218,42417 + + +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +Order creator +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +Indien het order aan een KOM-bestelling gelinkt is of geweest is +Leeg : Niet KOM +T : Nog gelinkt aan toelevering +K : Niet meer gelinkt aan toelevering +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + + +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +Hoe het met de kredietlimiet gesteld is: + +Als de klant op Kode staat dan "K" +Als de klant geen kredietlimiet heeft dan leeg +Als de klant een kredietlimiet heeft en de openstaand krediet is kleiner dan "+" +Anders "-" (betekend kredietlimiet overschreden) +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + + + +Verschil van de gevraagdeleverdatum met de geleverdedatum +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +%Library.Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +Uniek orderlijnnr +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +Sys.cTimeStampDisp +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +De controle van de stock heeft 3 categoriëen (of strafpunten): +0 : Er is voldoende dynamische theoretische stock +1 : Er is onvoldoende dynamische theoretische stock excl. de toelevering van de laatste week +2 : Er is onvoldoende dynamische theoretische stock incl. de toelevering van de laatste week +5 : De toelevering is te laat +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +De controle van de stock heeft 3 categoriëen (of strafpunten): +0 : Er is voldoende dynamische theoretische stock +1 : Er is onvoldoende dynamische theoretische stock excl. de toelevering van de laatste week +2 : Er is onvoldoende dynamische theoretische stock incl. de toelevering van de laatste week +5 : De toelevering is te laat +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + + +%Library.Float +0 +1 + +0 +0 +0 +0 + Set {*}=##class(Prod.Product).GetPropViaNr({Product},"CifPPL")*{AantalOrder} + +1 +0 + + + + +Uniekheid index voor property StatDatum +0 +1 +1 +OrderNr,OLUNr +1 + + + +%Library.CacheSQLStorage + + + +^Stat.LevPerfOpenstaandS + +data +^LEVPERF + + +delimited + + + +"O" + + + + + + + +{OrderNr} + + + + + + + +{OLUNr} + + + + + +"\" +27 + + +"\" +14 + + +"\" +7 + + +"\" +28 + + +"\" +26 + + +"\" +20 + + +"\" +1 + + +"\" +2 + + +"\" +17 + + +"\" +18 + + +"\" +6 + + +"\" +8 + + +"\" +3 + + +"\" +21 + + +"\" +24 + + +"\" +22 + + +"\" +25 + + +"\" +23 + + +"\" +19 + + + + + + Index: vhLib/Macro.inc.rou =================================================================== diff -u -r909 -r1013 --- vhLib/Macro.inc.rou (.../Macro.inc.rou) (revision 909) +++ vhLib/Macro.inc.rou (.../Macro.inc.rou) (revision 1013) @@ -38,6 +38,7 @@ #define IsMethod(%cls,%mth) ($$$MethodID(%cls,%mth)>0) // String +#define Strip(%v) $ZSTRIP(%v,"<>CW") #define Trim(%v) $ZSTRIP(%v,"<>W") #define DePunc(%v) $TR($G(%v),",?;.:/=+-_&|'(!)~{}[]^`%$=<>""","") #define DeSpace(%v) $translate(%v," ","") Index: TECH/Concurrency/VhPersistent/1.int.rou =================================================================== diff -u --- TECH/Concurrency/VhPersistent/1.int.rou (revision 0) +++ TECH/Concurrency/VhPersistent/1.int.rou (revision 1013) @@ -0,0 +1,204 @@ + ;TECH.Concurrency.VhPersistent.1 + ;(C)InterSystems, generated for class TECH.Concurrency.VhPersistent. Do NOT edit. 04/11/2011 05:21:18PM + ;;0EA56A7654EEB1D5;TECH.Concurrency.VhPersistent + Quit + ; +%AcquireLock(%this,locktype) public { QUIT $$Error^%apiOBJ(5758,"%Persistent::%AcquireLock") } +%BMEBuilt(bmeName) Quit 1 +%BuildIndices(idxlist) public { Set idxlist=$get(idxlist) QUIT $$Error^%apiOBJ(5758,"%Persistent::%BuildIndices") } +%CheckUnique(idxlist) public { Set idxlist=$get(idxlist) QUIT $$Error^%apiOBJ(5758,"%Persistent::%CheckUnique") } +%ClassName(fullname) public { Quit $select($get(fullname,0):"TECH.Concurrency.VhPersistent",1:"VhPersistent") } +%Close(%this) Quit ..%Close() +%ConstructClone(%this,deep,cloned) public { Set deep=$get(deep,0) Quit "" } +%Delete(oid,concurrency) public { Set oid=$get(oid),concurrency=$get(concurrency,-1) Quit:oid="" $$Error^%apiOBJ(5813) Set id=$lg(oid) Quit:id="" $$Error^%apiOBJ(5812) + If concurrency = -1 Set concurrency=$zu(115,10) + If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set class=$lg(oid,2) + If class="" { Set class="TECH.Concurrency.VhPersistent",oid=$s(oid="":"",1:$lb($lg(oid),"TECH.Concurrency.VhPersistent")) } Else { Set class=$s(class[".":class,$e(class)'="%":"User."_class,1:"%Library."_$e(class,2,$l(class))) If "TECH.Concurrency.VhPersistent"'=class { Quit $zobjclassmethod(class,"%Delete",oid) } } + If +$g(%objtxSTATUS)=0 { Set traninit=1 k %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxOIDUNASSIGNED,%objtxMODIFIED k:'$TLevel %0CacheLock i '$zu(115,9) { s %objtxSTATUS=1 } else { s %objtxSTATUS=2 TStart } } Else { Set traninit=0 } + s oref=$zobjoid($lg(oid,2),$lg(oid)) + If $isobject(oref) { New %this Set %this=oref If %this.%Concurrency>2 { s sc=%this.%ReleaseLock($Select(%this.%Concurrency=3:"s",1:"e")) } i $g(%objtxSTATUS)=2 { s %objtxOIDUNASSIGNED(+oref)=oid,%objtxLIST(+oref)=oref s %objtxMODIFIED(+oref)=$zobjval(oref,0) } s $zobjmod(oref,0)=1 Set $zobjval(oref,0,,,,3)="" s $zobjoid($lg(oid,2),$lg(oid))="" } + Set sc=##class(TECH.Concurrency.VhPersistent).%DeleteData(id,concurrency) +%DeleteEnd If traninit { If (+sc) { i $g(%objtxSTATUS)=1 { k %objtxSTATUS } else { TCommit k %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxOIDUNASSIGNED,%objtxMODIFIED k:'$TLevel %0CacheLock } } Else { i $g(%objtxSTATUS)=2 { k %0CacheLock s sc=$select(+sc:$$%TRollBack^%occTransaction(),1:$$AppendStatus^%occSystem(sc,$$%TRollBack^%occTransaction())) } else { k %objtxSTATUS } } } + Quit sc } +%DeleteData(id,concurrency) public { QUIT $$Error^%apiOBJ(5758,"%Persistent::%DeleteData") } +%DeleteId(id,concurrency) public { Set concurrency=$get(concurrency,-1) Quit ##class(TECH.Concurrency.VhPersistent).%Delete($s(id="":"",1:$lb(id_"")),.concurrency) } +%DowngradeConcurrency(%this,concurrency) public { Set concurrency=$get(concurrency,0) If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set current=..%Concurrency + If concurrency>current Quit 1 + If current<3||(current=concurrency) Set:concurrency2 Set sc=..%AcquireLock($select(concurrency=3:"s",1:"e")) Quit:('sc) sc + Do ..%ReleaseLock($select(current=3:"s",1:"e")) + Set ..%Concurrency=concurrency + Quit 1 } +%Exists(oid) public { Set classname = $lg(oid,2) If classname="" Quit 0 + Set $ZTrap = "CatchExistsError" + If classname '= "TECH.Concurrency.VhPersistent" Quit $zobjclassmethod(classname,"%Exists",oid) + Set oref=##class(TECH.Concurrency.VhPersistent).%Open(oid,0) Quit:oref="" 0 + Quit 1 +CatchExistsError Set $ZTrap = "" + Quit 0 } +%ExistsId(id) public { Quit 0 } +%Extends(isclass) public { Quit "~TECH.Concurrency.VhPersistent~%Library.Persistent~%Library.RegisteredObject~"[("~"_$s(isclass[".":isclass,$e(isclass)'="%":"User."_isclass,1:"%Library."_$e(isclass,2,$l(isclass)))_"~") } +%GetParameter(paramname) public { Set paramname=$get(paramname) Quit $case(paramname,"DEFAULTCONCURRENCY":"$zu(115,10)","EXTENTSIZE":100000,"OBJJOURNAL":0,"PROPERTYVALIDATION":2,"READONLY":0,:"") } +%GetSwizzleObject(%this,force,oid) public { Set force=$get(force,0) Set oid="" If force=0 Set oid=(..%Oid()) Quit 1 + If force=2 Set sc=..%Save(1) Set:(+sc) oid=(..%Oid()) Quit sc + Set oid=(..%Oid()) Quit:oid'="" 1 + Set sc=..%Save(0) Set:(+sc) oid=..%Oid() + Quit sc } +%Id(%this) Quit $lg($zobjval(%this,0,,,,3)) +%IdSet(%this,id) public { Set oid=$s(id="":"",1:$lb(id_"","TECH.Concurrency.VhPersistent")) + If $zobjval(,0,,,,3)'="",$zobjval(,0,,,,3)'=oid Quit $$Error^%apiOBJ(5814) + Set $zobjval(,0,,,,3)=oid s $zobjoid($lg(oid,2),$lg(oid))=%this + Quit 1 } +%IncrementCount(%this) Quit ..%IncrementCount() +%IsA(isclass) public { Quit "~TECH.Concurrency.VhPersistent~%Library.Persistent~%Library.RegisteredObject~"[("~"_$s(isclass[".":isclass,$e(isclass)'="%":"User."_isclass,1:"%Library."_$e(isclass,2,$l(isclass)))_"~") } +%IsModified(%this) public { Quit $zobjmod(,0) } +%KillExtent() public { QUIT $$Error^%apiOBJ(5758,"%Persistent::%KillExtent") } +%Load(%this,id) public { Set sc=..%IdSet(id) Quit:('sc) sc + Set sc=..%LoadData(id) Quit:('sc) sc + Quit 1 } +%LoadData(%this,id) public { QUIT $$Error^%apiOBJ(5758,"%Persistent::%LoadData") } +%LockId(%this,Id,Shared) public { If (Shared) { Set LockType = "s" } + Else { Set LockType = "e" } + d WLIP^vhDBG(127, "%AcquireLock "_%this_" : "_..%Id()_" ("_LockType_") VhPersistent") + Quit ..%AcquireLock(LockType) } +%New(initvalue) public { Quit ##class(TECH.Concurrency.VhPersistent).%New($get(initvalue)) +} +%Construct(%this,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) Set $zobjval(,1,0,3,1)=$zu(115,10),$zobjval(,2,0,3,2)=0,$zobjval(,3,0,3,3)=0 + Quit 1 +%NormalizeObject(%this) Set:$zobjval(,3,0,3,3)'="" $zobjval(,3,0,3,3)=(..InstanceVersionNormalize($zobjval(,3,0,3,3))) + Quit 1 +%ObjectModified(%this) public { Quit ''$zobjmod(,0) } +%Oid(%this) Quit $zobjval(%this,0,,,,3) +%OnAfterSave(%this,insert) public { Quit ##class(TECH.Concurrency.DbUtils).OnAfterSave(%this, insert) +} +%OnBeforeSave(%this,insert) public { Quit ##class(TECH.Concurrency.DbUtils).OnBeforeSave(%this, insert) +} +%Open(oid,concurrency,sc) public { Set concurrency=$get(concurrency,-1),sc=$get(sc,1) If $lg($g(oid))="" Set sc = $$Error^%apiOBJ(5813) Quit "" + If concurrency = -1 Set concurrency=$zu(115,10) + If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Set sc = $$Error^%apiOBJ(5828) Quit "" + New %this Set class=$lg(oid,2) + If class="" { Set class="TECH.Concurrency.VhPersistent",oid=$s(oid="":"",1:$lb($lg(oid),"TECH.Concurrency.VhPersistent")) } Else { Set class=$s(class[".":class,$e(class)'="%":"User."_class,1:"%Library."_$e(class,2,$l(class))) If "TECH.Concurrency.VhPersistent"'=class { Quit $zobjclassmethod(class,"%Open",oid,concurrency,.sc) } } + Quit "" } +%OpenId(id,concurrency,sc) public { Set concurrency=$get(concurrency,-1),sc=$get(sc,1) Quit ##class(TECH.Concurrency.VhPersistent).%Open($s(id="":"",1:$lb(id_"")),.concurrency,.sc) } +%PackageName() Quit "TECH.Concurrency" +%PurgeIndices(idxlist) public { Set idxlist=$get(idxlist) QUIT $$Error^%apiOBJ(5758,"%Persistent::%PurgeIndices") } +%ReleaseLock(%this,locktype) public { QUIT $$Error^%apiOBJ(5758,"%Persistent::%ReleaseLock") } +%Reload(%this) public { If ..%Id()="" Quit $$Error^%apiOBJ(5813) + Set cur=..%Concurrency,..%Concurrency=0 + Set sc=..%Load(..%Id()) Set ..%Concurrency=cur If ('sc) Do ..%Close() Quit "" + Set $zobjval(,2,0,3,2)=0 + s $zobjmod(,0)=0 + Quit 1 } +%RollBack(%this) public { If $data(%objtxMODIFIED(+%this)) s $zobjval(,0)=%objtxMODIFIED(+%this) + Quit 1 } +%Save(%this,related) public { Set related=$get(related,1) Set $ZTrap="%SaveERR" + New %objTX Set sc=1,traninit=0 + If $zobjval(,2,0,3,2) Set sc=..%AddToSaveSet(1) Quit:('sc) sc Set intRef=+%this,objValue=$get(%objTX(1,intRef,1)),sc=..%SerializeObject(.objValue,1) Set:(+sc) %objTX(1,intRef,1)=objValue Quit sc + If +$g(%objtxSTATUS)=0 { Set traninit=1 Kill %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxMODIFIED If '$zu(115,9) { Set %objtxSTATUS=1 } Else { Set %objtxSTATUS=2,%objtxLIST(+%this)="" TStart } } + Set sc=..%AddToSaveSet(related+2) If ('sc) ZTrap "SG" + Set intRef = $Order(%objTX(4,""),1,objRef) + While intRef '= "" { + If '$Data(%objTX(5,intRef)) { Set sc=objRef.%AddToSaveSet(related+2) Set %objTX(5,intRef) = objRef If ('sc) { ZTrap "SG" } } + Kill %objTX(4,intRef) + Set intRef = $Order(%objTX(4,""),1,objRef) + } + If '$data(%objTX(2)) s sc=1 GoTo %SaveCOMMIT + Set %objTX(3)=0,intRef="" For Set intRef=$order(%objTX(2,intRef)) Quit:intRef="" If '$data(%objTX(1,intRef,2)) Set %objTX(3,$increment(%objTX(3)))=%objTX(1,intRef) Kill %objTX(2,intRef) + For Quit:%objTX(3)<1 Set ptr=%objTX(3),objRef=%objTX(3,ptr),%objTX(3)=%objTX(3)-1 Kill %objTX(3,ptr) Set intRef=+objRef,objValue=$get(%objTX(1,intRef,1)),sc=objRef.%SerializeObject(.objValue) Do Set %objTX(1,intRef,1)=objValue Kill %objTX(1,intRef,3) s $zobjmod(objRef,0)=0 + . If ('sc) Kill:$g(%objtxSTATUS)=2 %objtxLIST(+objRef),%objtxMODIFIED(+objRef) ZTrap "SG" + . If $g(%objtxSTATUS)=2,objRef.%IsModified() s %objtxMODIFIED(+objRef)=$zobjval(objRef,0) + . Set intSucc="" For Set intSucc=$order(%objTX(1,intRef,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intRef,3,intSucc),%objTX(1,intSucc,2,intRef) If '$data(%objTX(1,intSucc,2)) Set %objTX(3,$increment(%objTX(3)))=%objTX(1,intSucc) Kill %objTX(2,intSucc) + For Set pserial=0 Do Quit:'pserial + . Set intRef="" For Set intRef=$order(%objTX(2,intRef)) Quit:intRef="" Set intPred="" For Set intPred=$order(%objTX(1,intRef,2,intPred)) Quit:intPred="" If %objTX(1,intPred,6)=1 Set objValue=$get(%objTX(1,intPred,1)),sc=(%objTX(1,intPred)).%SerializeObject(.objValue,1) If (+sc) Set pserial=1,%objTX(1,intPred,1)=objValue Do + . . Set intSucc="" For Set intSucc=$order(%objTX(1,intPred,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intPred,3,intSucc),%objTX(1,intSucc,2,intPred) If '$data(%objTX(1,intSucc,2)) Set %objTX(3,$i(%objTX(3)))=%objTX(1,intSucc) Kill %objTX(2,intSucc) + . . For Quit:%objTX(3)<1 Set ptr=%objTX(3),objSerialize=%objTX(3,ptr),%objTX(3)=%objTX(3)-1 Kill %objTX(3,ptr) Set intSerialize=+objSerialize,objValue=$get(%objTX(1,intSerialize,1)),sc=objSerialize.%SerializeObject(.objValue) Do Set %objTX(1,intSerialize,1)=objValue Kill %objTX(1,intSerialize,3) s $zobjmod(objSerialize,0)=0 + . . . If ('sc) Kill:$g(%objtxSTATUS)=2 %objtxLIST(+objSerialize),%objtxMODIFIED(+objSerialize) ZTrap "SG" + . . . If $g(%objtxSTATUS)=2,objSerialize.%IsModified() s %objtxMODIFIED(+objSerialize)=$zobjval(objSerialize,0) + . . . Set intSucc="" For Set intSucc=$order(%objTX(1,intSerialize,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intSerialize,3,intSucc),%objTX(1,intSucc,2,intSerialize) If '$data(%objTX(1,intSucc,2)) Set %objTX(3,$i(%objTX(3)))=%objTX(1,intSucc) Kill %objTX(2,intSucc) + If $data(%objTX(2))>2 Set sc=$$Error^%apiOBJ(5827) ZTrap "SG" +%SaveCOMMIT If traninit { If $g(%objtxSTATUS)=1 { Kill %objtxSTATUS } Else { TCommit Kill %objtxSTATUS,%objtxLIST,%objtxOIDASSIGNED,%objtxMODIFIED Set sc=1 } } + s $zobjmod(,0)=0 Quit sc +%SaveERR Set $ZTrap="" If $extract($zerror,1,5)'="" Set sc=$$Error^%apiOBJ(5002,$ZE) + Set:traninit sc=$select(+sc:$$%TRollBack^%occTransaction(),1:$$AppendStatus^%occSystem(sc,$$%TRollBack^%occTransaction())) + Quit sc } +%SaveData(%this,id) public { QUIT $$Error^%apiOBJ(5758,"%Persistent::%SaveData") } +%SerializeObject(%this,serial,partial) Set partial=$get(partial,0) New %objOBJ,sc,id + Set $Ztrap = "%SerializeObjectERR" + Set sc=..%ValidateObject() If ('sc) { Ztrap "SO" } + Set sc=..%NormalizeObject() If ('sc) { Ztrap "SO" } + Quit sc +%SerializeObjectERR Set $ZTrap="" If $extract($zerror,1,5)'="" Set sc=$$Error^%apiOBJ(5002,$ZE) + Quit sc +%AddToSaveSet(%this,depth,refresh,norecurseon) public { Set depth=$get(depth,3),refresh=$get(refresh,0),norecurseon=$get(norecurseon) If ($data(%objTX(1,+%this))) && ('refresh) Quit 1 + Set sc=1,intOref=+%this + If refresh { + Set intPoref=$order(%objTX(1,intOref,2,"")) + While intPoref'="" { Kill %objTX(1,intPoref,3,intOref),%objTX(1,intOref,2,intPoref) Set intPoref=$order(%objTX(1,intOref,2,intPoref)) } + } + Set tDepth=$select(depth'=2:depth,1:1) + Set %objTX(2,intOref)=0 +exit Quit sc } +%RemoveFromSaveSet(%this) public { + If '($data(%objTX(1,+%this))) Quit 1 + Set intRef=+%this + Set intSucc="" For Set intSucc=$order(%objTX(1,intRef,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intSucc,2,intRef) + Set intPred="" For Set intPred=$order(%objTX(1,intRef,2,intPred)) Quit:intPred="" Kill %objTX(1,intPred,3,intRef) + Kill %objTX(1,intRef),%objTX(2,intRef) + Quit 1 } +%SetModified(%this,value) public { s $zobjmod(,0)=value + Quit 1 } +%SortBegin(idxlist,excludeunique) public { Set idxlist=$get(idxlist),excludeunique=$get(excludeunique,0) QUIT 1 } +%SortEnd(idxlist,commit) public { Set idxlist=$get(idxlist),commit=$get(commit,1) QUIT 1 } +%UnlockId(Id,Shared) public { Set Object = ##class(TECH.Concurrency.VhPersistent).%OpenId(Id,0) + If (Shared) { Set LockType = "s" } + Else { Set LockType = "e" } + Quit Object.ReleaseLock(LockType) } +%UpgradeConcurrency(%this,concurrency) public { Set concurrency=$get(concurrency,0) If (concurrency > 4) || (concurrency < 0) || (concurrency '= (concurrency\1)) Quit $$Error^%apiOBJ(5828) + Set current=..%Concurrency + Quit:concurrencycurrent ..%Concurrency=concurrency Quit 1 + Set sc=..%AcquireLock($select(concurrency=3:"s",1:"e")) Quit:('sc) sc + If current=3 Do ..%ReleaseLock("s") + Set ..%Concurrency=concurrency + Quit 1 } +%ValidateObject(%this,force) Set force=$get(force,0) New iv + If '(..%IsModified()) Quit 1 + If $zobjmod(,3) Set iv=..InstanceVersion If iv'="" Set iv=(..InstanceVersionIsValid(iv)) Quit:('iv) iv + Quit 1 +zCheckStatusCode(%this,StatusCode,Message) public { If ('StatusCode) { + Set $ECODE="`"_"1000:GeneralError"_"`"_Message_"`"_$$ParseStatus^vhLib(StatusCode)_"`" + } } +zOpenId(ID) public { Quit ##class(TECH.Concurrency.DbUtils).OpenId(ID, ##class(TECH.Concurrency.VhPersistent).%ClassName(1)) +} +zOpenIdVoorUpdate(ID,InstanceVersion,ControleerBijOpenen) public { Set InstanceVersion=$get(InstanceVersion),ControleerBijOpenen=$get(ControleerBijOpenen,1) Quit ##class(TECH.Concurrency.DbUtils).OpenIdVoorUpdate(ID, ##class(TECH.Concurrency.VhPersistent).%ClassName(1), InstanceVersion, ControleerBijOpenen) +} +zReleaseLock(%this,LockType) public { d WLIP^vhDBG(127, "%ReleaseLock "_..%Id()_" ("_LockType_") VhPersistent") + Set Status = ..%ReleaseLock(LockType) + d WLIP^vhDBG(127, "GlobalRef : "_$ZR) + d WLIP^vhDBG(127, "AFTER %ReleaseLock "_..%Id()_" ("_LockType_") VhPersistent") + Do ..CheckStatusCode(Status, "Lock kon niet worden gereleased voor object met %Id='" _ ..%Id() _ "' van klasse '" _ ..%ClassName() _ "'!") + Quit Status } +zSave(%this) public { Quit ##class(TECH.Concurrency.DbUtils).Save(%this) +} +%ConcurrencyIsModified(%this) Quit $zobjmod(,1) +%ConcurrencyIsValid(value) public { Quit 1 } +%ConcurrencySetModified(%this,newvalue) public { Set $zobjmod(,1)=newvalue Quit 1 } +%IsInSaveIsModified(%this) Quit $zobjmod(,2) +%IsInSaveIsValid(value) public { Quit 1 } +%IsInSaveSetModified(%this,newvalue) public { Set $zobjmod(,2)=newvalue Quit 1 } +zInstanceVersionDisplayToLogica(%val) Quit $in(%val,"","") +zInstanceVersionIsModified(%this) Quit $zobjmod(,3) +zInstanceVersionIsValid(value) public { Quit $s(##class(TECH.Concurrency.VhPersistent).InstanceVersionIsValidDT(value):1,1:$$Error^%apiOBJ(5802,"TECH.Concurrency.VhPersistent.InstanceVersion")) } +zInstanceVersionIsValidDT(%val) Quit $isvalidnum(%val,0,,) +zInstanceVersionLogicalToDispla(%val) Quit %val +zInstanceVersionNormalize(%val) Quit %val\1 +zInstanceVersionSetModified(%this,newvalue) public { Set $zobjmod(,3)=newvalue Quit 1 } +zExtentGetODBCInfo(colinfo,parminfo,qHandle) public { Set version = $Select($Get(%protocol,31)>30:3,%protocol>14:2,1:1) + If $Get(^oddPROC("TECH_CONCURRENCY","VHPERSISTENT_EXTENT",21))'="" { Set sc = 1, metadata=$Select(version=3:^oddPROC("TECH_CONCURRENCY","VHPERSISTENT_EXTENT",12),1:^oddPROC("TECH_CONCURRENCY","VHPERSISTENT_EXTENT",12,version)) } + ElseIf $Data(^oddPROC("TECH_CONCURRENCY","VHPERSISTENT_EXTENT")) { Set sc = $$CompileSignature^%ourProcedure("TECH_CONCURRENCY","VHPERSISTENT_EXTENT",.metadata,.signature) } + Else { Set sc = $$Error^%apiOBJ(5068,"TECH.Concurrency.VhPersistent:Extent") } + If (+sc) { Set colcount=$li(metadata,2),cmdlen=colcount*$Case(version,3:9,2:9,1:7,:9),colinfo=$li(metadata,2,2+cmdlen),parmcount=$li(metadata,cmdlen+3),pmdlen=parmcount*$Case(version,3:6,:4),parminfo=$li(metadata,cmdlen+3,cmdlen+pmdlen+3) } + Quit sc } +zExtentPrepare(qHandle,statement,containid,optional) public { Set containid=$get(containid,0) Quit 1 } \ No newline at end of file Index: Stat/LevPerfHist.cls.xml =================================================================== diff -u --- Stat/LevPerfHist.cls.xml (revision 0) +++ Stat/LevPerfHist.cls.xml (revision 1013) @@ -0,0 +1,613 @@ + + + + +Leveringsperformatie logging. +Bij het op bon zetten wordt er gekeken of er een backorder wordt gekreëerd en hoe de stock op dat moment is. +Tevens wordt 's nachts de log entries aangemaakt om te late leveringen te registreren. + +De nachtelijke log entries worden verdicht tot één lijn bij het op bon zetten van de orderlijn. Dit verdichten gebeurt ook door de nachtelijke job. +Verwijderde orders worden ook verwijderd uit de leveringsperformantie door de nachtelijke job +persistent +VHopslag +%Library.Persistent +59952,74640.174331 +59219,34346 +0 + + +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +Order creator +Res.InternePersoon +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Boolean +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +Indien het order aan een KOM-bestelling gelinkt is of geweest is +Leeg : Niet KOM +T : Nog gelinkt aan toelevering +K : Niet meer gelinkt aan toelevering +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + + +%Library.Boolean +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +Hoe het met de kredietlimiet gesteld is: + +Als de klant op Kode staat dan "K" +Als de klant geen kredietlimiet heeft dan leeg +Als de klant een kredietlimiet heeft en de openstaand krediet is kleiner dan "+" +Anders "-" (betekend kredietlimiet overschreden) +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + + + +Verschil van de gevraagdeleverdatum met de geleverdedatum +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +%Library.Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +Uniek orderlijnnr +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +%Library.Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + +Prod.Product +0 +0 + +0 +0 +0 +0 +0 +0 + + + +Sys.cTimeStampDisp +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +De controle van de stock heeft 3 categoriëen (of strafpunten): +0 : Er is voldoende dynamische theoretische stock +1 : Er is onvoldoende dynamische theoretische stock excl. de toelevering van de laatste week +2 : Er is onvoldoende dynamische theoretische stock incl. de toelevering van de laatste week +5 : De toelevering is te laat +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +De controle van de stock heeft 3 categoriëen (of strafpunten): +0 : Er is voldoende dynamische theoretische stock +1 : Er is onvoldoende dynamische theoretische stock excl. de toelevering van de laatste week +2 : Er is onvoldoende dynamische theoretische stock incl. de toelevering van de laatste week +5 : De toelevering is te laat +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.String +0 +0 + +0 +0 +0 +0 +0 +0 + + + + + +%Library.Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Date +0 +0 + +0 +0 +0 +0 +0 +0 + + + +%Library.Integer +0 +0 + +0 +0 +0 +0 +0 +0 + + + + +Property WaardeGeleverd As %Library.Float [ Calculated, SqlComputeCode = { Set {*}=##class(Prod.Product).GetPropViaNr({Product},"CifPPL")*{AantalGeleverd} +}, SqlComputed ]; +Property WaardeOrder As %Library.Float [ Calculated, SqlComputeCode = { Set {*}=##class(Prod.Product).GetPropViaNr({Product},"CifPPL")*{AantalOrder} +}, SqlComputed ]; +Uniekheid index voor property OrderDatum +0 +1 +1 +PickDatum,VolgNr +1 + + + +%Library.CacheSQLStorage + + + +^Stat.LevPerfHistS + +data +^LEVPERF + + +delimited + + + +"D" + + + + + + + +{PickDatum} + + + + + + + +{VolgNr} + + + + + +"\" +27 + + +"\" +13 + + +"\" +14 + + +"\" +7 + + +"\" +10 + + +"\" +9 + + +"\" +28 + + +"\" +26 + + +"\" +16 + + +"\" +20 + + +"\" +15 + + +"\" +1 + + +"\" +2 + + +"\" +17 + + +"\" +18 + + +"\" +5 + + +"\" +6 + + +"\" +4 + + +"\" +8 + + +"\" +3 + + +"\" +21 + + +"\" +24 + + +"\" +22 + + +"\" +25 + + +"\" +23 + + +"\" +19 + + +"\" +12 + + +"\" +11 + + + + + + Index: vhUnitTest/APPS/LEV/TestLeverancierBestand.cls.xml =================================================================== diff -u --- vhUnitTest/APPS/LEV/TestLeverancierBestand.cls.xml (revision 0) +++ vhUnitTest/APPS/LEV/TestLeverancierBestand.cls.xml (revision 1013) @@ -0,0 +1,75 @@ + + + + +JBL + 2011-04-18 +Do ##class(vhUnitTest.Manager).RunTest("/display=all","APPS.LEV.TestLeverancierBestand") +1 +vhUnitTest.TestCase +62199,57096.4966 +0 + + +%Status + + + + +%Status + + + + + + + + + + + + + Index: WS/Halux/Planning/Planningstool.cls.xml =================================================================== diff -u -r995 -r1013 --- WS/Halux/Planning/Planningstool.cls.xml (.../Planningstool.cls.xml) (revision 995) +++ WS/Halux/Planning/Planningstool.cls.xml (.../Planningstool.cls.xml) (revision 1013) @@ -1,10 +1,10 @@ - + TECH.Error 1 WS.WebService -62185,29623.478035 +62199,57683.800092 0 @@ -31,6 +31,14 @@ ]]> + +Dag:%Date,Categorie:APPS.Halux.Planning.enu.Categorie +TECH.XMLDataSet +1 + + + Van:%Date,Tot:%Date TECH.XMLDataSet @@ -62,6 +70,14 @@ ]]> + +ToeleveringNummer:%Integer +APPS.Halux.Planning.dto.ToeleveringDetail +1 + + + DataGridNaam:%String,Gebruiker:%String,KolomInfoLijst:APPS.common.GUI.dto.KolomInfoLijst 1 @@ -77,6 +93,14 @@ ]]> + +ToeleveringNummer:%Integer,AantalToeleveringen:%Integer,DrempelAantalProducten:%Integer +APPS.Halux.Planning.dto.SplitsToeleveringResultaat +1 + + + Gebruiker:%String,Opmerking:%String,Datum:%Date,ToeleveringNummers:%ListOfDataTypes APPS.Halux.Planning.dto.VerplaatsToeleveringenResultaat @@ -101,5 +125,5 @@ ]]> - +