#include %cspBuild #include vhLib.Macro #include %occInclude #include %Prod.Product #define NewRelease 0 #define MaxDiffPRS 0.80 TBXcalcIntivoDL(arLOG) ; arLOG als .local doorgeven Do TBXcalcPricesFromArray(.arLOG,"\\Notes01\Shared\W V\TbxIntivo_PRS.txt") Quit TBXcalcBXglas(arLOG) ; arLOG als .local doorgeven Do TBXcalcPricesFromArray(.arLOG,"\\Notes01\Shared\W V\TbxBXglas_PRS.txt") Quit TBXcalcBoxcover(arLOG) ; arLOG als .local doorgeven Do TBXcalcPricesFromArray(.arLOG,"\\Notes01\Shared\W V\TbxBoxcover_PRS.txt") Quit TBXcalcBoxcover2(arLOG) ; arLOG als .local doorgeven Do TBXcalcPricesFromArray(.arLOG,"\\Notes01\Shared\W V\TbxBoxcover2_PRS.txt") Quit TBXcalcDesignDC(arLOG) ; arLOG als .local doorgeven Do TBXcalcPricesFromArray(.arLOG,"\\Notes01\Shared\W V\TbxDesignDC_PRS.txt") Quit TBXcalcTiponDK(arLOG) ; arLOG als .local doorgeven Do TBXcalcPricesFromArray(.arLOG,"\\Notes01\Shared\W V\TbxTiponDK_PRS.txt") Quit TBXcalcSpoelbakDWV(arLOG) ; arLOG als .local doorgeven Do TBXcalcPricesFromArray(.arLOG,"\\Notes01\Shared\W V\TbxSpoelbakDWV_PRS.txt") Quit // Oproepen via: // d TBXcalcALL^WV2() TBXcalcALL() Kill arGlob Merge arGlob=^wvLogTBXintivo Do TBXcalcPricesFromArray(.arGlob,"\\Notes01\Shared\W V\TbxCheckPRS_ALLxx_On01_b.txt") d ArrayToTextWF^vhLib("arGlob","\\Notes01\Shared\W V\TbxCheckPRS_ALLxx_On01.txt") Quit TBXcalcPricesFromArray(arLOG,FName) ; arLOG als .local doorgeven New PRNr,txt New D,Q,U Set D="\",Q="K",U=";" Set PRNr="" For Set PRNr=$O(arLOG("PRS",PRNr)) Quit:(PRNr="") Do . Set GADataID=$G(arLOG("I-ID",PRNr)) . Quit:('GADataID) . Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) . Set blnOK=GAProd.ValidatePR(.arValidPR) . If 'blnOK Do . . Set txt=GAProd.ValidPRArrayToText(.arValidPR,1) . . w txt . . Do:(1) $$$PRSet($$$NONAktief,1) . . Set $LI(arLOG("AKT",(+$$$PRGet($$$NONAktief)),PRNr),1)="Hist: "_$J($$PROD^STAT(PRNr,0,"2008.04 ","2009.04 ",1),4)_" "_"NonAkt="_$$$PRGet($$$NONAktief) . Set $LI(arLOG("PRS",PRNr),3)=$J(GAProd.Cumuls("KPrijs"),0,4) . Set $LI(arLOG("PRS",PRNr),5)=+$J($LI(arLOG("PRS",PRNr),3)-$LI(arLOG("PRS",PRNr),1),0,2) . Set:('blnOK) $LI(arLOG("PRS",PRNr),12)=$P(txt,"Fouten bij de validatie van de producten (TBX): "_$$$CRLF,2) . w PRNr_" : "_$LI(arLOG("PRS",PRNr),3),! w $$ArrayToText^vhLib("arLOG(""AKT"")",.arLOG),! Do . New arLOg . Merge arLOg=arLOG("PRS") . d ArrayToTextWF^vhLib("arLOg",$G(FName,"\\Notes01\Shared\W V\TbxCompare_PRS.txt")) . Kill arLOg Quit TBXGetKlant(arA) New PRNr,KLNr,KLNaam Set PRNr="" For Set PRNr=$O(arA(PRNr)) Quit:(PRNr="") Do . Quit:($G(HistOnly,1))&&('+$$$Trim($$$TextBetween($LG(arA(PRNr),1),"Hist:","NonAkt"))) . Set KLNr=$O(^KSTPR(PRNr,0)) . Set KLNaam="" . Set:(KLNr) KLNaam=$P(^KKL(^KK1(KLNr),0),"\",2) . w "PRNr="_PRNr_" klant :"_KLNr_" ("_KLNaam_")",! Quit /* d ArrayToTextWF^vhLib("arLOG","\\Notes01\Shared\W V\TbxDesignBG_ALL_On01_AfterChanges.txt") d ArrayToTextWF^vhLib("arLOG","\\Notes01\Shared\W V\TbxDesignDC_ALL_On01_AfterChanges.txt") d ArrayToTextWF^vhLib("arLOG","\\Notes01\Shared\W V\TbxTiponDK_ALL_On01_AfterChanges.txt") */ CTU(blnBeforeUpgrade) Set blnBeforeUpgrade=$G(blnBeforeUpgrade,1) Do TBXcheckTemplateUpgrade(.blnBeforeUpgrade) w $$ArrayToText^vhLib("arLOG(""PRS"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""VAL"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""AKT"")",.arLOG),! If $G(blnBeforeUpgrade)=0 Do . Merge ^wvLogTBXcheckUpgrade("PRS")=arLOG("PRS") . Merge ^wvLogTBXcheckUpgrade("I-ID")=arLOG("I-ID") w $$ArrayToText^vhLib("arLOG(""ERR"")",.arLOG),! Quit CBG(blnCheckOnly) Do TBXchangeBoxsideGlas(.blnCheckOnly) w $$ArrayToText^vhLib("arLOG(""PRS"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""VAL"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""AKT"")",.arLOG),! If $G(blnCheckOnly,1)=0 Do . Merge ^wvLogTBXintivo("PRS")=arLOG("PRS") . Merge ^wvLogTBXintivo("I-ID")=arLOG("I-ID") w $$ArrayToText^vhLib("arLOG(""ERR"")",.arLOG),! Quit CBC(blnCheckOnly) Do TBXchangeBoxcoverIntivo2(.blnCheckOnly) w $$ArrayToText^vhLib("arLOG(""PRS"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""VAL"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""AKT"")",.arLOG),! If $G(blnCheckOnly,1)=0 Do . Merge ^wvLogTBXintivo("PRS")=arLOG("PRS") . Merge ^wvLogTBXintivo("I-ID")=arLOG("I-ID") w $$ArrayToText^vhLib("arLOG(""ERR"")",.arLOG),! Quit CDD(blnCheckOnly) Do TBXchangeDesignDesignCode(.blnCheckOnly) w $$ArrayToText^vhLib("arLOG(""PRS"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""VAL"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""AKT"")",.arLOG),! If $G(blnCheckOnly,1)=0 Do . Merge ^wvLogTBXintivo("PRS")=arLOG("PRS") . Merge ^wvLogTBXintivo("I-ID")=arLOG("I-ID") w $$ArrayToText^vhLib("arLOG(""ERR"")",.arLOG),! Quit CSD(blnCheckOnly) Do TBXchangeSpoelbakDWV(.blnCheckOnly) w $$ArrayToText^vhLib("arLOG(""PRS"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""VAL"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""AKT"")",.arLOG),! If $G(blnCheckOnly,1)=0 Do . Merge ^wvLogTBXintivo("PRS")=arLOG("PRS") . Merge ^wvLogTBXintivo("I-ID")=arLOG("I-ID") w $$ArrayToText^vhLib("arLOG(""ERR"")",.arLOG),! Quit /* CTO(blnCheckOnly) Do TBXchangeTiponDK(.blnCheckOnly) w $$ArrayToText^vhLib("arLOG(""PRS"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""VAL"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""AKT"")",.arLOG),! If $G(blnCheckOnly,1)=0 Do . Merge ^wvLogTBXintivo("PRS")=arLOG("PRS") . Merge ^wvLogTBXintivo("I-ID")=arLOG("I-ID") w $$ArrayToText^vhLib("arLOG(""ERR"")",.arLOG),! Quit */ ConfirmCheckOnly(blnCheckOnly) ; als .local doorgeven Quit:(blnCheckOnly) New RKey Write !,"!!! Data will be modified !!! Continue with changes [Y/N] ? " Read *RKey,!,! If $$$UCase($C(RKey))'?1(1"Y") Do . Set blnCheckOnly=1 . Write " --> Continue without changes... ",!,! Quit TBXcheckTemplateUpgrade(blnCheckOnly) // Verandert GEEN input-waarden voor TBX-laden, is bedoeld om controles uit te voeren bij het upgraden van de template (MetaDesigner) // Volgende properties/kenmerken worden aangepast in Prod.GAData.Product en in Prod.Kenmerk.DataDefinitie (Groep="TBX") : // NONE New PRNr,GADataID,Value,ParamID,km,GAProd,DummyPrice,CntProd,CntCalc Set blnCheckOnly=$G(blnCheckOnly,1) Set (CntProd,CntCalc)=0 Do ConfirmCheckOnly(.blnCheckOnly) Kill arLOG w "Preparing SQL ... ",! &sql(DECLARE crsTBXCTU cursor for SELECT item.Product->Product, item.Product INTO :PRNr, :GADataID FROM Prod_GAData.Item As item WHERE (item.product > 210000) AND (item.Label='CB') ORDER BY item.Product) &sql(OPEN crsTBXCTU) w "Fetching SQL records ... ",! For &sql(FETCH crsTBXCTU) Quit:SQLCODE Do ctuCheckPrices(.PRNr,.GADataID,blnCheckOnly) &sql(CLOSE crsTBXCTU) w !,"Total Products: "_CntProd_" #Calc: "_CntCalc,! Quit ctuCheckPrices(PRNr,GADataID,blnCheckOnly) w "Product : "_$G(PRNr)_" - "_$G(GADataID) Quit:($G(PRNr)'?4.7N)||(+$G(GADataID)'>0) Quit:('$D(^KPR(PRNr)))||($$$PRGet($$$NONAktief)=1) Quit:(($I(CntProd)#100)'=0) w " - Calc..."_CntProd_" :"_$I(CntCalc),! #if $$$Server="CACHE01" ;q:(PRNr'=437039) ; only use Testproduct on Cache01 #else ;q:(PRNr'?1(1"437383",1"437199")) ; only use Testproduct on Cache02 ;Set DummyPrice=1 #endif Set arLOG("I-ID",PRNr)=GADataID Set arLOG("PRS",PRNr)=$S($G(DummyPrice,0):$LB(999.99), 1:$LB($$$PRGet($$$PPLMTL))) Set $LI(arLOG("PRS",PRNr),10)="GADataID: "_GADataID ;Quit:(ParamValue'?1(1"BZ",1"BF")) ;Quit:(ParamValue'?1(1"BC")) If blnCheckOnly Do . Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) . Set $LI(arLOG("PRS",PRNr),2)=$J(GAProd.Cumuls("KPrijs"),0,4) . Set GAProd="" . Set $LI(arLOG("PRS",PRNr),5)=($LI(arLOG("PRS",PRNr),2)-$LI(arLOG("PRS",PRNr),1)) . Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),2), 0) ; '$$$NewRelease) // Modify Values ;Do TBXModifyKenmerk(PRNr, GADataID, "KV", , $Case(ParamValue, "BZ":"FZ", "BF":"FG", "BC":"FC" ,:"") , blnCheckOnly) ;Do TBXModifyKenmerk(PRNr, GADataID, "BS", ParamValue, "BG", blnCheckOnly) Quit:(blnCheckOnly) ; Testcase - do not modify Values YET // Recalc Prices Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) Set $LI(arLOG("PRS",PRNr),3)=$J(GAProd.Cumuls("KPrijs"),0,4) Set $LI(arLOG("PRS",PRNr),5)=+$J($LI(arLOG("PRS",PRNr),3)-$LI(arLOG("PRS",PRNr),1),0,2) Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),3), 0) Set GAProd="" Quit TBXchangeBoxsideGlas(blnCheckOnly) // Verandert de input-waarden voor TBX-laden, dit vanwege een wijziging voor BoxsideGlas BX = (BZ, BF of BC) // Volgende properties/kenmerken worden aangepast in Prod.GAData.Product en in Prod.Kenmerk.DataDefinitie (Groep="TBX") : // BX : BZ --> BG // KV : "" --> FZ // + // BX : BF --> BG // KV : "" --> FG // + // BX : BC --> BG // KV : "" --> FC New PRNr,GADataID,Value,ParamID,km,GAProd,DummyPrice Set blnCheckOnly=$G(blnCheckOnly,1) Do ConfirmCheckOnly(.blnCheckOnly) Kill arLOG w "Preparing SQL ... ",! &sql(DECLARE crsTBXBG cursor for SELECT item.Product->Product, item.Product , param.Parameters , param.ID INTO :PRNr, :GADataID, :Value, :ParamID FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product > 200) and (item.Label='BS') and (param.element_key='Val') and (param.Parameters in ('BZ','BF')) ORDER BY item.Product, param.Parameters) /* ; (param.Parameters in ('BZ','BF','BC')) WHERE (item.ID=Param.Item) and (item.product > 200) and (item.Label='BS') and (param.element_key='Val') and (param.Parameters in ('BZ','BF')) WHERE (item.ID=Param.Item) and (item.product < 90000) and (item.Label='BS') and (param.element_key='Val') and (param.Parameters in ('BC')) */ &sql(OPEN crsTBXBG) w "Fetching SQL records ... ",! For &sql(FETCH crsTBXBG) Quit:SQLCODE Do cbgModifyValues(.PRNr,.GADataID,blnCheckOnly,$G(Value)) &sql(CLOSE crsTBXBG) Quit cbgModifyValues(PRNr,GADataID,blnCheckOnly,ParamValue) w "Product : "_$G(PRNr)_" - "_$G(GADataID) Quit:($G(PRNr)'?4.7N)||(+$G(GADataID)'>0) Quit:('$D(^KPR(PRNr)))||($$$PRGet($$$NONAktief)=1) w " - BX="_ParamValue,! #if $$$Server="CACHE01" ;q:(PRNr'=437039) ; only use Testproduct on Cache01 #else ;q:(PRNr'?1(1"437383",1"437199")) ; only use Testproduct on Cache02 ;Set DummyPrice=1 #endif Set arLOG("I-ID",PRNr)=GADataID Set arLOG("PRS",PRNr)=$S($G(DummyPrice,0):$LB(999.99), 1:$LB($$$PRGet($$$PPLMTL))) Set $LI(arLOG("PRS",PRNr),10)="GADataID: "_GADataID Quit:(ParamValue'?1(1"BZ",1"BF")) ;Quit:(ParamValue'?1(1"BC")) If blnCheckOnly Do . Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) . Set $LI(arLOG("PRS",PRNr),2)=$J(GAProd.Cumuls("KPrijs"),0,4) . Set GAProd="" . Set $LI(arLOG("PRS",PRNr),5)=($LI(arLOG("PRS",PRNr),2)-$LI(arLOG("PRS",PRNr),1)) . Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),2), '$$$NewRelease) // Modify Values Do TBXModifyKenmerk(PRNr, GADataID, "KV", , $Case(ParamValue, "BZ":"FZ", "BF":"FG", "BC":"FC" ,:"") , blnCheckOnly) Do TBXModifyKenmerk(PRNr, GADataID, "BS", ParamValue, "BG", blnCheckOnly) Quit:(blnCheckOnly) ; Testcase - do not modify Values YET // Recalc Prices Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) Set $LI(arLOG("PRS",PRNr),3)=$J(GAProd.Cumuls("KPrijs"),0,4) Set $LI(arLOG("PRS",PRNr),5)=+$J($LI(arLOG("PRS",PRNr),3)-$LI(arLOG("PRS",PRNr),1),0,2) Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),3), 0) Set GAProd="" Quit TBXchangeBoxcoverIntivo2(blnCheckOnly) // Verandert de input-waarden voor TBX-laden, dit vanwege een wijziging voor Boxcover/cap BX = (BK, BC of BZ) // Volgende properties/kenmerken worden aangepast in Prod.GAData.Product en in Prod.Kenmerk.DataDefinitie (Groep="TBX") : // BX : BC --> COV // + // BX : BK --> CAP // + // BX : BZ --> COV // KV : ? --> ZV New PRNr,GADataID,Value,ParamID,km,GAProd,DummyPrice,DC Set blnCheckOnly=$G(blnCheckOnly,1) Do ConfirmCheckOnly(.blnCheckOnly) Kill arLOG w "Preparing SQL ... ",! &sql(DECLARE crsTBXBC2 cursor for SELECT item.Product->Product, item.Product , param.Parameters , param.ID INTO :PRNr, :GADataID, :Value, :ParamID FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product > 200000) and (item.Label='BS') and (param.element_key='Val') and (param.Parameters in ('BC','BK','BZ')) ORDER BY item.Product, param.Parameters) &sql(OPEN crsTBXBC2) w "Fetching SQL records ... ",! For &sql(FETCH crsTBXBC2) Quit:SQLCODE Do cbc2ModifyValues(.PRNr,.GADataID,blnCheckOnly,$G(Value)) &sql(CLOSE crsTBXBC2) Quit cbc2ModifyValues(PRNr,GADataID,blnCheckOnly,ParamValue) w "Product : "_$G(PRNr)_" - "_$G(GADataID) Quit:($G(PRNr)'?4.7N)||(+$G(GADataID)'>0) Quit:('$D(^KPR(PRNr)))||($$$PRGet($$$NONAktief)=1) w " - BX="_ParamValue,! #if $$$Server="CACHE01" ;q:(PRNr'=437039) ; only use Testproduct on Cache01 #else ;q:(PRNr'?1(1"437383",1"437199")) ; only use Testproduct on Cache02 ;Set DummyPrice=1 #endif Set arLOG("I-ID",PRNr)=GADataID Set arLOG("PRS",PRNr)=$S($G(DummyPrice,0):$LB(999.99), 1:$LB($$$PRGet($$$PPLMTL))) Set $LI(arLOG("PRS",PRNr),10)="GADataID: "_GADataID Set DC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DC"),1) Quit:(DC'?1(1"I")) Quit:(ParamValue'?1(1"BC",1"BK",1"BZ")) If blnCheckOnly Do . Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) . Set $LI(arLOG("PRS",PRNr),2)=$J(GAProd.Cumuls("KPrijs"),0,4) . Set GAProd="" . Set $LI(arLOG("PRS",PRNr),5)=($LI(arLOG("PRS",PRNr),2)-$LI(arLOG("PRS",PRNr),1)) . Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),2), '$$$NewRelease) // Modify Values Do TBXModifyKenmerk(PRNr, GADataID, "BS", , $Case(ParamValue, "BC":"COV", "BK":"CAP", "BZ":"COV" ,:"") , blnCheckOnly) Do:(ParamValue="BZ") TBXModifyKenmerk(PRNr, GADataID, "KV", , "ZV", blnCheckOnly) Quit:(blnCheckOnly) ; Testcase - do not modify Values YET // Recalc Prices Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) Set $LI(arLOG("PRS",PRNr),3)=$J(GAProd.Cumuls("KPrijs"),0,4) Set $LI(arLOG("PRS",PRNr),5)=+$J($LI(arLOG("PRS",PRNr),3)-$LI(arLOG("PRS",PRNr),1),0,2) Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),3), 0) Set GAProd="" Quit TBXchangeBoxcoverIntivo(blnCheckOnly) ; Moved to CommentBlock Quit TBXchangeDesignDesignCode(blnCheckOnly) // Verandert de input-waarden voor TBX-laden, dit vanwege een wijziging voor Design/DesignCode voor intivo (DC = A) // Volgende properties/kenmerken worden aangepast in Prod.GAData.Product en in Prod.Kenmerk.DataDefinitie (Groep="TBX") : // DC : A --> I // of // DC : A --> MA // DS : GI --> GMA New PRNr,GADataID,Value,ParamID,km,GAProd Set blnCheckOnly=$G(blnCheckOnly,1) Do ConfirmCheckOnly(.blnCheckOnly) Kill arLOG w "Preparing SQL ... ",! &sql(DECLARE crsTBXDD cursor for SELECT item.Product->Product, item.Product , param.Parameters , param.ID INTO :PRNr, :GADataID, :Value, :ParamID FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product > 200000) and (item.Label='DC') and (param.element_key='Val') and (param.Parameters = 'A') ORDER BY item.Product, param.Parameters) &sql(OPEN crsTBXDD) w "Fetching SQL records ... ",! For &sql(FETCH crsTBXDD) Quit:SQLCODE Do cddModifyValues(.PRNr,.GADataID,blnCheckOnly) &sql(CLOSE crsTBXDD) Quit cddModifyValues(PRNr,GADataID,blnCheckOnly) w "Product : "_$G(PRNr)_" - "_$G(GADataID) Quit:($G(PRNr)'?4.7N)||(+$G(GADataID)'>0) Quit:('$D(^KPR(PRNr)))||($$$PRGet($$$NONAktief)=1) w " --> GO. ",! #if $$$Server="CACHE01" ;q:(PRNr'=437039) ; only use Testproduct on Cache01 #else ;q:(PRNr'?1(1"437383",1"437199")) ; only use Testproduct on Cache02 #endif Set arLOG("I-ID",PRNr)=GADataID Set arLOG("PRS",PRNr)=$LB($$$PRGet($$$PPLMTL)) Set $LI(arLOG("PRS",PRNr),10)="GADataID: "_GADataID New LC,blnToMA Set LC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LC"),1) Set blnToMA=(LC?1(1"D",1"D/Z",1"B",1"B/Z")) If blnToMA=1 Do ; Quit . Set $LI(arLOG("PRS",PRNr),11)="blnToMA="_blnToMA If blnCheckOnly Do . Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) . Set $LI(arLOG("PRS",PRNr),2)=$J(GAProd.Cumuls("KPrijs"),0,4) . Set GAProd="" . Set $LI(arLOG("PRS",PRNr),5)=($LI(arLOG("PRS",PRNr),2)-$LI(arLOG("PRS",PRNr),1)) . Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),2), '$$$NewRelease) // Modify Values If blnToMA Do . Do TBXModifyKenmerk(PRNr, GADataID, "DC", "A", "MA", blnCheckOnly) . Do TBXModifyKenmerk(PRNr, GADataID, "DS", "GI", "GMA", blnCheckOnly) Else Do . Do TBXModifyKenmerk(PRNr, GADataID, "DC", "A", "I", blnCheckOnly) If 1 Do ; BoxCover + vulling . New BX,BxValue,BxPKey,BX2 . Do GetParamValueViaElement(GADataID,"BS","Val", .BxValue,.BxPKey) . w $G(BxPKey)_" - "_$G(BxValue),! . Quit:($G(BxPKey)'?1"PARAM".E) . Set BX=BxValue . ;Set BX2=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BS"),1) . Quit:(BX'?1(1"BRO8",1"DIA8",1"DFZ8",1"GRI8",1"KZ")) . If BX="KZ" Do . . Do TBXModifyKenmerk(PRNr, GADataID, "BS", "KZ", "BZ", blnCheckOnly) . . ;Do TBXModifyKenmerk(PRNr, GADataID, "KV", , BX , blnCheckOnly) . Else Do . . Do TBXModifyKenmerk(PRNr, GADataID, "KV", , BX , blnCheckOnly) . . Do TBXModifyKenmerk(PRNr, GADataID, "BS", BX, "BC", blnCheckOnly) If 1 Do ; Tipon . New BM,BmValue,BmPKey,BM2,LD,DK,NewDK . Do GetParamValueViaElement(GADataID,"BM","Val", .BmValue,.BmPKey) . w $G(BmPKey)_" - "_$G(BmValue),! . Quit:($G(BmPKey)'?1"PARAM".E) . Set BM=BmValue . ;Set BM2=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BM"),1) . Quit:(BM'="T") . Set LD=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD"),1) . Set DK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DK"),1) . Set NewDK=##class(BL.PR.GA.TandemBox).CheckDraagKracht(DK,LD,"T") . Quit:(NewDK="") . Do TBXModifyKenmerk(PRNr, GADataID, "DK", DK, NewDK, blnCheckOnly) Quit:(blnCheckOnly) ; Testcase - do not modify Values YET // Recalc Prices Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) Set $LI(arLOG("PRS",PRNr),3)=$J(GAProd.Cumuls("KPrijs"),0,4) Set $LI(arLOG("PRS",PRNr),5)=+$J($LI(arLOG("PRS",PRNr),3)-$LI(arLOG("PRS",PRNr),1),0,2) Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),3), 0) Set GAProd="" Quit TBXchangeSpoelbakDWV(blnCheckOnly) // Verandert de input-waarden voor TBX-laden, dit vanwege een wijziging voor Dwarsverdeling voor Spoelbak (DWV = 4) // Volgende properties/kenmerken worden aangepast in Prod.GAData.Product en in Prod.Kenmerk.DataDefinitie (Groep="TBX") : // DWV : 4 --> 4_sp als KLAS = SP2 // New PRNr,GADataID,Value,ParamID,km,GAProd Set blnCheckOnly=$G(blnCheckOnly,1) Do ConfirmCheckOnly(.blnCheckOnly) Kill arLOG w "Preparing SQL ... ",! &sql(DECLARE crsTBXDWV cursor for SELECT item.Product->Product, item.Product , param.Parameters , param.ID INTO :PRNr, :GADataID, :Value, :ParamID FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product > 100000) and (item.product < 300000) and (item.Label='DWV') and (param.element_key='Val') and (param.Parameters = '4') ORDER BY item.Product, param.Parameters) &sql(OPEN crsTBXDWV) w "Fetching SQL records ... ",! For &sql(FETCH crsTBXDWV) Quit:SQLCODE Do csdModifyValues(.PRNr,.GADataID,blnCheckOnly) &sql(CLOSE crsTBXDWV) Quit csdModifyValues(PRNr,GADataID,blnCheckOnly) w "Product : "_$G(PRNr)_" - "_$G(GADataID) Quit:($G(PRNr)'?4.7N)||(+$G(GADataID)'>0) Quit:('$D(^KPR(PRNr)))||($$$PRGet($$$NONAktief)=1) w " --> GO. ",! #if $$$Server="CACHE01" ;q:($LF($LB(338921,358399,358577,358578,421331,421333,421334,438638),PRNr)=0) ;q:(PRNr'=437039) ; only use Testproduct on Cache01 #else ;q:(PRNr'?1(1"573902",1"575160")) ; only use Testproduct on Cache02 #endif Set arLOG("I-ID",PRNr)=GADataID Set arLOG("PRS",PRNr)=$LB($$$PRGet($$$PPLMTL)) Set $LI(arLOG("PRS",PRNr),10)="GADataID: "_GADataID New LD,DWV,NewDWV Set KLAS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KLAS"),1) Set DWV=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DWV"),1) Set NewDWV="4_sp" If blnCheckOnly Do . Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) . Set $LI(arLOG("PRS",PRNr),2)=$J(GAProd.Cumuls("KPrijs"),0,4) . Set GAProd="" . Set $LI(arLOG("PRS",PRNr),5)=($LI(arLOG("PRS",PRNr),2)-$LI(arLOG("PRS",PRNr),1)) . Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),2), '$$$NewRelease) // Modify Values Do TBXModifyKenmerk(PRNr, GADataID, "DWV", DWV, NewDWV, blnCheckOnly) Quit:(blnCheckOnly) ; Testcase - do not modify Values YET // Recalc Prices Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) Set $LI(arLOG("PRS",PRNr),3)=$J(GAProd.Cumuls("KPrijs"),0,4) Set $LI(arLOG("PRS",PRNr),5)=+$J($LI(arLOG("PRS",PRNr),3)-$LI(arLOG("PRS",PRNr),1),0,2) Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),3), 0) Set GAProd="" Quit /* TBXchangeTiponDK(blnCheckOnly) // Verandert de input-waarden voor TBX-laden, dit vanwege een wijziging voor DraagKracht voor Tipon-glijder (BM = T) // Volgende properties/kenmerken worden aangepast in Prod.GAData.Product en in Prod.Kenmerk.DataDefinitie (Groep="TBX") : // DK : ? --> 20 als LD < 350 // DK : ? --> 30 als LD < 450 // DK : ? --> 50 als LD >= 450 New PRNr,GADataID,Value,ParamID,km,GAProd Set blnCheckOnly=$G(blnCheckOnly,1) Do ConfirmCheckOnly(.blnCheckOnly) Kill arLOG w "Preparing SQL ... ",! &sql(DECLARE crsTBXTO cursor for SELECT item.Product->Product, item.Product , param.Parameters , param.ID INTO :PRNr, :GADataID, :Value, :ParamID FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product > 200000) and (item.Label='BM') and (param.element_key='Val') and (param.Parameters = 'T') ORDER BY item.Product, param.Parameters) &sql(OPEN crsTBXTO) w "Fetching SQL records ... ",! For &sql(FETCH crsTBXTO) Quit:SQLCODE Do ctoModifyValues(.PRNr,.GADataID,blnCheckOnly) &sql(CLOSE crsTBXTO) Quit ctoModifyValues(PRNr,GADataID,blnCheckOnly) w "Product : "_$G(PRNr)_" - "_$G(GADataID) Quit:($G(PRNr)'?4.7N)||(+$G(GADataID)'>0) Quit:('$D(^KPR(PRNr)))||($$$PRGet($$$NONAktief)=1) w " --> GO. ",! #if $$$Server="CACHE01" ;q:(PRNr'=437039) ; only use Testproduct on Cache01 #else ;q:(PRNr'?1(1"437383",1"437199")) ; only use Testproduct on Cache02 #endif Set arLOG("I-ID",PRNr)=GADataID Set arLOG("PRS",PRNr)=$LB($$$PRGet($$$PPLMTL)) Set $LI(arLOG("PRS",PRNr),10)="GADataID: "_GADataID New LD,DK,NewDK Set LD=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD"),1) Set DK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DK"),1) Set NewDK=##class(BL.PR.GA.TandemBox).CheckDraagKracht(DK,LD,"T") If NewDK="" Do Quit . Set $LI(arLOG("PRS",PRNr),11)="DK : OK ("_LD_" - "_DK_"kg)" If blnCheckOnly Do . Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) . Set $LI(arLOG("PRS",PRNr),2)=$J(GAProd.Cumuls("KPrijs"),0,4) . Set GAProd="" . Set $LI(arLOG("PRS",PRNr),5)=($LI(arLOG("PRS",PRNr),2)-$LI(arLOG("PRS",PRNr),1)) . Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),2), '$$$NewRelease) // Modify Values Do TBXModifyKenmerk(PRNr, GADataID, "DK", DK, NewDK, blnCheckOnly) Quit:(blnCheckOnly) ; Testcase - do not modify Values YET // Recalc Prices Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GADataID) Set $LI(arLOG("PRS",PRNr),3)=$J(GAProd.Cumuls("KPrijs"),0,4) Set $LI(arLOG("PRS",PRNr),5)=+$J($LI(arLOG("PRS",PRNr),3)-$LI(arLOG("PRS",PRNr),1),0,2) Do:($$$MaxDiffPRS>0) TBXCheckMaxDiffPRS(PRNr, $$$MaxDiffPRS, $LI(arLOG("PRS",PRNr),1), $LI(arLOG("PRS",PRNr),3), 0) Set GAProd="" Quit */ /* CID(blnCheckOnly) Do TBXchangeIntivoDL(.blnCheckOnly) w $$ArrayToText^vhLib("arLOG(""PRS"")",.arLOG),! ;w $$ArrayToText^vhLib("arLOG(""VAL"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""ERR"")",.arLOG),! Quit CIW(blnCheckOnly) Do TBXchangeIntivoWI(.blnCheckOnly) w $$ArrayToText^vhLib("arLOG(""PRS"")",.arLOG),! ;w $$ArrayToText^vhLib("arLOG(""VAL"")",.arLOG),! w $$ArrayToText^vhLib("arLOG(""ERR"")",.arLOG),! Quit TBXchangeIntivoDL(blnCheckOnly) // Verandert de input-waarden voor TBX-laden, dit vanwege een wijziging voor Intivo (ladecode DL) // Volgende properties/kenmerken worden aangepast in Prod.GAData.Product en in Prod.Kenmerk.DataDefinitie (Groep="TBX") : // DC : L --> A // ZW : M --> L // FB : ? --> E // LC : D --> DL &sql(DECLARE crsTBXDL cursor for SELECT item.Product->Product, item.Product , param.Parameters , param.ID INTO :PRNr, :GADataID, :Value, :ParamID FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product > 200000) and (item.Label='DC') and (param.element_key='Val') and (param.Parameters = 'L') ORDER BY item.Product, param.Parameters) Quit cidModifyValues(PRNr,GADataID,blnCheckOnly) // Modify Values Do TBXModifyKenmerk(PRNr, GADataID, "DC", "L", "A" , blnCheckOnly) Do TBXModifyKenmerk(PRNr, GADataID, "ZW", "M", "L" , blnCheckOnly) Do TBXModifyKenmerk(PRNr, GADataID, "FB", , "E" , blnCheckOnly) Do TBXModifyKenmerk(PRNr, GADataID, "LC", "D", "DL", blnCheckOnly) Quit:(blnCheckOnly) ; Testcase - do not modify Values YET Quit TBXchangeIntivoWI(blnCheckOnly) // Verandert de input-waarden voor TBX-laden, dit vanwege een wijziging voor Intivo (ladekleur Wit --> Zijden Wit) // Volgende properties/kenmerken worden aangepast in Prod.GAData.Product en in Prod.Kenmerk.DataDefinitie (Groep="TBX") : // KL,KR,KF,RK,KX : WI --> SW // Niet wijzigen: KB (want KleurBodem is hout) // KSP (Kleur Spoelbak is Inox, maar is nvt.) &sql(DECLARE crsTBXWI cursor for SELECT item.Product->Product, item.Product , param.Parameters , param.ID INTO :PRNr, :GADataID, :Value, :ParamID FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product > 200000) and (item.Label='DS') and (param.element_key='Val') and (param.Parameters = 'WI') ORDER BY item.Product, param.Parameters) Quit ciwModifyValues(PRNr,GADataID,blnCheckOnly) // Modify Values For km="KL","KR","KF","RK","KX" Do TBXModifyKenmerk(PRNr, GADataID, km, "WI", "SW", blnCheckOnly) ;Do TBXModifyKenmerk(PRNr, GADataID, "KSP", "WI", "SW", blnCheckOnly) Quit:(blnCheckOnly) ; Testcase - do not modify Values YET Quit TBXchangeBoxcoverIntivo(blnCheckOnly) // Verandert de input-waarden voor TBX-laden, dit vanwege een wijziging voor BoxsideGlas (BX=FZ of FG) // Volgende properties/kenmerken worden aangepast in Prod.GAData.Product en in Prod.Kenmerk.DataDefinitie (Groep="TBX") : // BX : KZ --> BZ // + // BX : BRO8, DIA8, DFZ8, GRI8 --> BC // KV : "" --> BRO8, DIA8, DFZ8, GRI8 &sql(DECLARE crsTBXBC cursor for SELECT item.Product->Product, item.Product , param.Parameters , param.ID INTO :PRNr, :GADataID, :Value, :ParamID FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product > 200000) and (item.Label='BS') and (param.element_key='Val') and (param.Parameters in ('BRO8', 'DIA8', 'DFZ8', 'GRI8', 'KZ')) ORDER BY item.Product, param.Parameters) Quit cbcModifyValues(PRNr,GADataID,blnCheckOnly,ParamValue) Quit:(ParamValue'?1(1"BRO8",1"DIA8",1"DFZ8",1"GRI8",1"KZ")) // Modify Values If ParamValue="KZ" Do . Do TBXModifyKenmerk(PRNr, GADataID, "BS", "KZ", "BZ", blnCheckOnly) . ;Do TBXModifyKenmerk(PRNr, GADataID, "KV", , ParamValue , blnCheckOnly) Else Do . Do TBXModifyKenmerk(PRNr, GADataID, "KV", , ParamValue , blnCheckOnly) . Do TBXModifyKenmerk(PRNr, GADataID, "BS", ParamValue, "BC", blnCheckOnly) Quit:(blnCheckOnly) ; Testcase - do not modify Values YET Quit */ TBXCheckMaxDiffPRS(PRNr,MaxDiffPRS,Prs1,Prs2,SetNonAkt) Quit:(MaxDiffPRS'>0) If ($ZAbs(Prs2-Prs1)>MaxDiffPRS)&&(Prs1>0)&&(Prs2>0) Do . Do:($G(SetNonAkt)) $$$PRSet($$$NONAktief,1) . Set arLOG("ERR",PRNr,$I(arLOG("ERR",PRNr)))="Prijs Diff > "_$G(MaxDiffPRS)_" EUR : Product op NonAktief ("_($$$PRGet($$$NONAktief))_")" . Set $LI(arLOG("AKT",PRNr),1)="NonAkt="_$$$PRGet($$$NONAktief) Quit TBXModifyKenmerk(PRNr,GADataID, km, CheckValue,NewValue, blnCheckOnly) ;Quit:(km="KV")&&('$$$NewRelease) ; Voor BoxsideGlas en BoxCoverIntivo New ParamKey,ParamValue,msg &SQL(SELECT item.Code, param.Parameters INTO :ParamKey, :ParamValue FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product = :GADataID) and (item.Label=:km) and (param.element_key='Val') ) If ($G(ParamKey)="") Do Quit:(ParamKey="") . Set Result=##class(Prod.GAData.Product).SyncWithTempl(GADataID) . Set ParamKey=$$tmkGetParamKeyViaActief(GADataID,km) . Set ParamValue="#???#" . Quit:(ParamKey'="") . Set msg="ParamKey via Actief not found for "_km_" !" . w msg,! . Set arLOG("ERR",PRNr,$I(arLOG("ERR",PRNr)))=msg w PRNr," "_ParamKey," : ",$G(ParamValue),! Set arLOG("VAL",PRNr,km)=$LB($$$LCVT(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,km)), $G(^Prod.GAData.ProductD(GADataID,"I",ParamKey,"P","Val"))) If ($D(CheckValue))&&(ParamValue'=CheckValue) Do Quit . ;Quit:(ParamValue="")&&(km?1(1"KR",1"KF",1"RK",1"KX")) ; Voor TBXchangeIntivoWI() . Set msg="Param "_km_" does not match expected value !" . w msg,! . Set arLOG("ERR",PRNr,$I(arLOG("ERR",PRNr)))=msg Set:($G(blnCheckOnly)) arLOG("VAL",PRNr,km)=arLOG("VAL",PRNr,km)_$LB("--> "_NewValue) Quit:($G(blnCheckOnly)) ; Testcase - do not modify Values YET Set sc=##class(Prod.Kenmerk.DataDefinitie).Set("TBX",PRNr,km,NewValue) If $$$ISERR(sc) Do Quit . w "Set Kenm.DataDef : "_$$ParseStatus^vhLib(sc),! . Set arLOG("ERR",PRNr,$I(arLOG("ERR",PRNr)))="Set Kenm.DataDef : "_$$ParseStatus^vhLib(sc) Set ^Prod.GAData.ProductD(GADataID,"I",ParamKey,"P","Val")=NewValue Set arLOG("VAL",PRNr,km)=arLOG("VAL",PRNr,km)_$LB("||", NewValue) Quit tmkGetParamKeyViaActief(GADataID,km) // Bij nieuwe DataItems zal de elementKey='Val' nog niet aanwezig zijn. Dan geeft deze routine de ParamKey terug via elementKey='Actief' New ParamKey Do GetParamValueViaElement(GADataID,km,"Actief", ,.ParamKey) Quit $G(ParamKey) GetParamValueViaElement(GADataID,km,ElemKey,ParamValue,ParamKey) ; ParamValue en ParamKey als .local doorgeven // ElemKey : Val, Actief, &SQL(SELECT item.Code, param.Parameters INTO :ParamKey, :ParamValue FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product = :GADataID) and (item.Label=:km) and (param.element_key=:ElemKey) ) Quit /* ; Full SQL-statement &SQL(SELECT item.Product->Product, item.Product , param.Parameters , param.ID FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product > 200000) and (item.Label='DC') and (param.element_key='Val') and (param.Parameters = 'L') ORDER BY item.Product, param.Parameters ) SELECT item.Product->Product, item.Product , param.Parameters , param.ID, Param.Item, item.Label, item.Code FROM Prod_GAData.Item As item, Prod_GAData.Item_Parameters As param WHERE (item.ID=Param.Item) and (item.product = 231079) and (param.element_key='Val') and (item.Label in ('DC','ZW','LC','FB')) ) */ // ORGALUX MoveListItems OLML() New lbItems,md,lbResult d WLIP^vhDBG(97,"OL Move List items") Set md=##class(Prod.Kenmerk.MetaDefinitie).%OpenId("OL||Sleutel") Set lbItems=md.WaardenSortering Set itmFirst="" Set itmLast="" Set itmMoveTo="" ;Do MoveListItems^vhTools(.lbItems,itmFirst,itmLast,itmMoveTo,) Do MoveListItems^vhTools(.lbItems,"","","",) Do MoveListItems^vhTools(.lbItems,"","","",) Do MoveListItems^vhTools(.lbItems,"","","",) Do MoveListItems^vhTools(.lbItems,"","","",) Do MoveListItems^vhTools(.lbItems,"","","",) ;w "Result: new=" w "Result: new="_$LL(lbItems),! ; ,$$$LCVT(lbItems),! Set sc=md.WaardenSorteringSet(lbItems) Set sc=md.%Save() w "Obj MetaDef : Save result : "_$$ParseStatus^vhLib(sc) Set md="" Quit // TEST MoveListItems TML() New lbItems,itmFirst,itmLast,itmMoveTo,lbResult Set lbItems=$LB("a","b","c","d",2,"e","f","g","h","i") /* */ Set itmFirst="f" Set itmLast="h" Set itmMoveTo=$C(0)_2 /* * / Set itmFirst="" Set itmLast="" Set itmMoveTo="" /* */ W ! W "List lbItems="_$$$LCVT(lbItems),! W "Move items ("_itmFirst_" - "_itmLast_") to new position : after "_itmMoveTo,!,! ;Set lbResult=$$MoveListItems^vhTools(lbItems,itmFirst,itmLast,itmMoveTo,) ;w "Result: new="_$$$LCVT(lbResult),! Do MoveListItems^vhTools(.lbItems,itmFirst,itmLast,itmMoveTo,) w "Result: new="_$$$LCVT(lbItems),! Quit /* */ TWSO() s ws=##class(WS.TBX.DataIOWWWSoap).%New() ;s ws.HttpProxyServer="192.168.1.97" ;s ws.HttpProxyPort="8888" s wsord=##class(WS.TBX.Order).%New() s lb=ws.WSOrdToWWW(wsord,"","") w ws.SoapFault w "Succes:"_$$$LCVT($G(lb)) q /* */ ;