PRGACNTs,BL.EC.Common BL.Lib.BaseObj 0 75 %String %Library.String 1 1 %Library.String 1 1 %Library.String array %Library.String 1 1 %Library.Integer %Library.String 1 1 METHODS ======= Method Initialize() : Updated by WimV on 02/02/2010 The new implementation uses the FilterDC on the BT-Items, to build the lookups (BTExtent + BTDep + ...) Therefore this method requires that the DesignCode (DC) is known The DC can be passed directly by Param DC, or can be calculated from Design DS If called without arguments, then the DC must already be set in the property blTBox.DC DC:%String,DS:%String="" 1 0) ;New i Kill BTExtent(ClassN) For i=1:1:$LL(lbIDs) Set BTExtent(ClassN,"Val",$LI(lbIDs,i))=$LB(i,$LG(lbOms,i)) Set BTExtent(ClassN)=lbIDs Quit */ ]]> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | LOOK UP TABLES | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= %Library.List Vult de Multi-dimensional property "Lookup" in 1 Bouwt de lookup array: ===== == ====== ===== BTExtent("TBDesign")=$LB("G","W",...) BTExtent("TBGlijderType")=$LB("E","V") ... 1 0) . . . Set lbIDs=lbIDs_$LB(rs.Data("ItemCode")) Set BTExtent(ClassN,"Val",rs.Data("ItemCode"))=$LB(rs.Data("VolgNr"),rs.Data("Omschrijving"),rs.Data("ID")) ; ,rs.Get("FilterDC")) . . . ;Set lbIDs=lbIDs_$LB(rs.Data("ID")) Set BTExtent(ClassN,"Val",rs.Data("ID"))=$LB(rs.Data("VolgNr"),rs.Data("Omschrijving"),rs.Data("ItemCode")) ; ,rs.Get("FilterDC")) . Else Do . . For Quit:('rs.Next()) Set lbIDs=lbIDs_$LB(rs.Data("ID")) Set BTExtent(ClassN,"Val",rs.Data("ID"))=$LB(rs.Data("VolgNr"),rs.Data("Omschrijving")) . Do rs.%Close() . Set rs="" . Set BTExtent(ClassN)=lbIDs Quit ]]> , , )=$LB() BTDep("TBDesign","BTGlijderType","G")=$LB("E","V") ,"W")=$LB("V") , ... BTDep("TBDesign","BTZijwand","G")=$LB("N","M","K") ,"W")=$LB("N","M") , ... BTDep("TBDesign","BTRugHoogte","G")=$LB("N","M","K","C","B","D") ,"W")=$LB("N","M","B","D") , ... ...]]> 1 "_$S($L(SourceVal):$$$LCVT($G(BTDep(Source,Target,SourceVal))),1:"")) Quit ]]> Vult de Multi-dimensional property "SpecTabs" in. "SpecTabs" zijn Speciale Tabellen die extra beperkingen opleggen aan bepaalde kenmerken. 1 Zie ..BuildLookupLCode() method 1 1 Oproepen via Do ##class(BL.PR.GA.TandemBox).BuildLCodeArray(.arLC) 1 1 Vult de Multi-dimensional property "Lookup" aan. 1 Bouwt een array op van de TBDesign-elementen met de BeperkTemplateCode. Adh. hiervan wordt bepaald of een gekozen design bij één of meerdere templates voorkomt. 1 1 Geeft een lijst terug van de toegelaten waarden (lbIDs), die beperkt zijn door de waarde van andere BTItems. Target : is het BTItem waarvan de toegelaten IDs gevraagd wordt arValues : [optioneel] array van andere BTItems. Deze leggen de beperking(en) op de gevraagde lijst. Indien de (volledige) array niet gedefinieerd is, dan wordt de ..BTValues array-property gebruikt PrepareLUs : 0/1 (Boolean, default=1) als de LookUps nog niet voorbereid zijn, BTExtent en BTDep opbouwen. Target:%Library.String,arValues:%Library.String,PrepareLUs:%Library.Boolean 1 %Library.List 1 #define ValFromArray(%v) $G(arValues(%v)) #define ValFromBLObj(%v) ..BTValues.GetAt(%v) Quit:($$bpiPrepareLU=0) "" ;New lbIDs,BeperkBT Set lbIDs=..BTExtent(Target) Set BeperkBT="" For Set BeperkBT=$O(..BTExtent(Target,"Dep",BeperkBT)) Quit:(BeperkBT="") Do . Set BeperkVal=$S($$$UseArray:$$$ValFromArray(BeperkBT), 1:$$$ValFromBLObj(BeperkBT)) . Quit:(BeperkVal="") . Set lbIDs=$$bpiCommonItems(lbIDs, ..BTDep(BeperkBT,Target,BeperkVal)) Quit lbIDs bpiCommonItems(lbOne,lbTwo) ; Berekent de doorsnede van de listbuild (= gemeenschappelijke items) ;New i,tmpLB Set tmpLB="" For i=1:1:$LL(lbOne) Set:($LF(lbTwo,$LI(lbOne,i))>0) tmpLB=tmpLB_$LB($LI(lbOne,i)) Quit tmpLB bpiPrepareLU() ; Geeft 0 terug als BTExtent en BTDep niet ingevuld zijn en ook niet mogen opgebouwd worden. Anders 1. ;New BTDep,BTExtent If $D(..BTExtent(Target)) Do . ; Already prepared Else If $G(PrepareLUs,1) Do . Do ..BuildBTExtent(.BTExtent) . Merge ..BTExtent=BTExtent Else Quit 0 If $D(..BTDep) Do . ; Already prepared Else If $G(PrepareLUs,1) Do . Merge:('$D(BTExtent)) BTExtent=..BTExtent . Do ..BuildBTDepend(.BTDep,.BTExtent) . Merge ..BTDep=BTDep Else Quit 0 Quit 1 ]]> 1 KLNr:%String 1 %Library.String 1 KLNr:%String,sDomVERW 1 %Library.String Returns %String: "True", "False" of "ASK" 1 Verpakking:%String 1 %String 1 blnBinnenLade:%Boolean=0 1 %List "*", the returned $LB() contains the default values Defaults = $LB( KL , KB , KR , KX , KV , DC ) ]]> 1 1 %List Fills the empty properties (KL,KB,RK,KX,KX,KV,DC) from TBXLade (new structure) with default values NOTE : this method should be placed in BL.Prod.GAData.TBXLade 1 TBXLade:%RegisteredObject 1 %Status =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | BEREKENDE WAARDEN | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1 CB:%Library.Float,WD:%Library.Float,OPVLLI:%Library.Float,OPVLRE:%Library.Float,MTIB:%Library.Float %Library.Float 1 WD:%Library.String %Float 0 , dan CB als buitenmaat opgegeven, dan MinTolerantie 1mm toepassen ]]> 1 WSLn:WS.TBX.EM.OrderLijn 1 %Float spID moet reeds omgerekend zijn van ItemCode naar ItemID ! 1 spID:%String,IB:%Float,AftrekLadeProf:%Float=..#AftrekLadeProfDFL,DC:%String 1 %Float 0) objSP.Parameters.GetAt("SPBR") Quit:(+$G(IB)=0) 0 Set BrSP=IB-AftrekLadeProf-objSP.Parameters.GetAt("ZKLI")-objSP.Parameters.GetAt("ZKRE") Quit $S(BrSP>0:BrSP, 1:0) ]]> Parameters: - IB verplicht - SPZLI - SPBR - SPZRE : als 2 van de drie opgegeven, dan wordt de derde berekend; indien slechts 1 van de 3, dan worden de 2 andere berekend (symmetrische situatie) De waarden worden teruggegeven via de parameters zelf, dus als .local doorgeven. 1 1 %Status 0)&&($G(SPBR)>0)&&($G(SPZRE)>0) $S(SPBR=$$spmCalcSPBreedte():$$$OK, 1:$$$ERROR($$$GeneralError,"SPB op Maat : ongeldige maten voor SPZK en SPBR.")) ; Mogelijke berekeningen: If ($G(SPZLI)'>0)&&($G(SPZRE)'>0) Do ; Symmetrisch, SPBR is specified . Set SPZLI=$$spmCalcSPZijkant(SPBR) . Set SPZRE=SPZLI Else If ($G(SPZLI)>0)&&($G(SPZRE)>0) Set SPBR=$$spmCalcSPBreedte() Else If ($G(SPBR)>0)&&($G(SPZLI)>0) Set SPZRE=$$spmCalcSPZijkant(SPBR,SPZLI) Else If ($G(SPBR)>0)&&($G(SPZRE)>0) Set SPZLI=$$spmCalcSPZijkant(SPBR,SPZRE) Else If ($G(SPZLI)>0) Do ; Symmetrisch, SPZRE en SPBR te berekenen . Set SPZRE=SPZLI . Set SPBR=$$spmCalcSPBreedte() Else If ($G(SPZRE)>0) Do ; Symmetrisch, SPZLI en SPBR te berekenen . Set SPZLI=SPZRE . Set SPBR=$$spmCalcSPBreedte() Quit $$$OK spmCalcSPBreedte() Set BrSP=IB-AftrekLadeProf-SPZLI-SPZRE Quit $S(BrSP>0:BrSP, 1:0) spmCalcSPZijkant(SPBR,SPZK) If $G(SPZK)>0 Do . Set BrZK=(IB-AftrekLadeProf-SPBR)-SPZK Else Do ; Symmetrisch . Set BrZK=(IB-AftrekLadeProf-SPBR)/2 Quit $S(BrZK>0:BrZK, 1:0) ]]> blnBX:%Library.Boolean=0,VoorkeurID:%Library.String 1 %Library.String 0) VoorkeurID Quit:(blnBX=1)&&($LF(lbIDs,$$$BX1)>0) $$$BX1 Quit:(blnBX=1)&&($LF(lbIDs,$$$BX2)>0) $$$BX2 Quit $LI(lbIDs,1) ]]> Geeft de (gebruikers)code van het ORGALUX product terug 1 PRNr:%String 1 %String Geeft de Klasse vertrekkende van de LadeCode Bijvoorbeeld : voor LC = "MY/Z" geeft Klasse = "SY" voor LC = "DLS2" geeft Klasse = "SP2" 1 LadeCode:%String 1 %String Geeft de RugHoogte vertrekkende van de LadeCode Bijvoorbeeld : voor LC = "MY/Z" geeft RugHoogte = "M" voor LC = "DLS2" geeft RugHoogte = "D" 1 LadeCode:%String 1 %String Geeft de hoogte van de binnenzijwand van een spoelbaklade. Later kan deze waarde eventueel als input-waarde gegeven worden, i.p.v. berekend (bvb indien keuze tussen meerdere hoogtes mogelijk) 1 LadeCode:%String,DC:%String,SPZK:%String="" 1 %String Geeft aantal uitsparingen in een spoelbaklade of sifonlade terug. De parameter Klasse als .local doorgeven om het soort lade te kennen 1 1 %String Geeft de wikkel-lengte voor een tandembox-lade in Probox verpakking 1 DesignCode:%String,IsBinnenlade:%Boolean,LadeHoogte:%String,LadeBreedte:%Float 1 %List Geeft de wikkel-diepte voor een tandembox-lade in Probox verpakking 1 LadeDiepte:%Integer 1 %Float Geeft het volume-aandeel voor een tandembox-lade in Probox verpakking 1 DesignCode:%String,IsBinnenlade:%Boolean,LadeDiepte:%Integer,LadeHoogte:%String,LadeBreedte:%Float 1 %Float Geeft de enumeratie van LadeVariant voor de DesignCode (S, I, B, F, MA). 1 DesignCode:%String 1 DOM.PM.enu.LadeVariant Geeft de DesignCode (S, I, B, F, MA) voor de gegeven DS. 1 dsID:%String 1 %String S" : Bij voorkeur F-design, anders S-design of andere. "S>F" : Bij voorkeur S-design, anders F-design of andere. code : DesignCode ("S", "F" of "B"), dan enkel het design dat exact overeenkomt. ]]> LadeKleurID:%String,BeperkDesignCode:%String="" 1 %Library.String S" Do . ; Eerst enkel F-design zoeken . For i=1:1:$L(dsIDs,";") Do Quit:(dsID'="") . . Set:($LG(..BTDep("TBDesign","TBDesignCode",$P(dsIDs,";",i)),1)="F") dsID=$P(dsIDs,";",i) . ; Indien niet gevonden, dan gewoon de eerste nemen . Set:(dsID="") dsID=$P(dsIDs,";",1) Else If BeperkDesignCode="S>F" Do . ; Eerst enkel S-design zoeken . For i=1:1:$L(dsIDs,";") Do Quit:(dsID'="") . . Set:($LG(..BTDep("TBDesign","TBDesignCode",$P(dsIDs,";",i)),1)="S") dsID=$P(dsIDs,";",i) . ; Indien niet gevonden, dan gewoon de eerste nemen . Set:(dsID="") dsID=$P(dsIDs,";",1) Else Do . For i=1:1:$L(dsIDs,";") Do Quit:(dsID'="") . . Set:($LG($G(..BTDep("TBDesign","TBDesignCode",$P(dsIDs,";",i))),1)=BeperkDesignCode) dsID=$P(dsIDs,";",i) Quit dsID ]]> Geeft Template-Codes terug die mogelijk zijn voor het gegeven Design dsID:%String 1 %Library.String Conversie van LadeCode en BoxSide 1 LadeCode,BoxSide,Design,BinnenGreep,SPZK 1 1) LC=$$$Replace(LC,"Y","Y2") ; Vorige opbouw van de imagecode. Deze gaf problemen voor klasse=SY2, want ladecode is reeds een "2" vlak na de "Y" Quit DC_LC_$S($L(BS):"_"_BS, 1:"")_$S(SifonQty>1:"_x2",1:"") ]]> Geeft de ImageURL voor de foto van de lade terug (berekening via BL.Prod.ImageLink) Toepassing = "WEB" of "MAKOVA" LadeCode is verplicht BoxSide of reling : indien "" dan wordt de default Boxside/Reling voor deze LadeCode gekozen Design is belangrijk voor Intivo BinnenGeep is optioneel, belangrijk voor Inschuifelement bij binnenladen DL/Z en CL/Z SPZK is belangrijk voor dubbele sifonlade 1 Toepassing:%String,LadeCode:%String,BoxSide:%String,Design:%String,BinnenGreep:%String,SPZK:%String 1 deze defaulting nodig ]]> 1 LadeCode:%String,Design:%String %String Geeft een $LB() terug. [formaat: $LB(key,value,key2,value2, ...) ] In WS.TBX.OrderLijn wordt de LB omgezet naar een %ArrayOfStrings. 1 WSOrdLn:WS.TBX.EM.OrderLijn,lbArgs:%List 0 %List 520) #define Vertaal(%v) ##class(Res.Vertaling).GetVertalingPlus("TBW",%v,"L",actTaal,,1) ;#defin isBulkVPK_old (WSLn.ItemVPK?1(1"P",1"C",1"O")) Quit:('$G(WSOrdLn)) New WSLn,actTaal,DC,SPZKpc1,BlumotionVTL,SPZijkantVTL,SPZijkantVTL2,tmpLB,Klasse Set WSLn=WSOrdLn Set actTaal=$G(Taal,"N") Set DC=WSLn.ItemDC Set SPZKpc1=$P(WSLn.ItemSPZK,";",1) Set Klasse=..KLASFromLC(WSLn.ItemLT) ; WSLn.ItemLT bevat de LadeCode Do . If WSLn.ItemBM?1(1"I",1"v") Set BlumotionVTL="" . Else If WSLn.ItemBM="T" Set BlumotionVTL=##class(cspBasis.GAProdTBox).WebTextValue("BM_T",actTaal,"L")_$S($$$TipOnSynchro:"+SYNCHRO",1:"") . Else If WSLn.ItemBM?1(1"Z",1"") Set BlumotionVTL=##class(cspBasis.GAProdTBox).WebTextValue("BM_Z",actTaal,"L")_" blumotion" . Else Set BlumotionVTL=##class(Prod.GAMeta.BT.TBBlumotion).TaalAfhOmsClass("",WSLn.ItemBM,actTaal,,,DC) . . Set SPZijkantVTL2="" . If SPZKpc1="" Set SPZijkantVTL="" . Else If Klasse="SY2" Set SPZijkantVTL=$Select($piece(WSLn.ItemSPZK,";",1)?1(1"S",1"B",1"M."):##class(cspBasis.GAProdTBox).WebTextValue("SPUitsparingen_1",actTaal,"L"),1:##class(cspBasis.GAProdTBox).WebTextValue("SPUitsparingen_2",actTaal,"L")) . Else If SPZKpc1="M" Set SPZijkantVTL=##class(cspBasis.GAProdTBox).WebTextValue("SPZijstukken",actTaal,"L")_" (mm) "_$$$Replace($P(WSLn.ItemSPZK,";",2,3),";","_") . Else If SPZKpc1?1(1"SI01") Do . . Set SPZijkantVTL=##class(cspBasis.GAProdTBox).WebTextValue("SifonRugstukken",actTaal,"L")_" (mm) "_$$$Replace($P(WSLn.ItemSPZK,";",2,3),";","_") . Else If SPZKpc1?1(1"SI03") Do . . Set SPZijkantVTL=$$$FCase(##class(Prod.GAMeta.BT.TBSPZijkant).TaalAfhOmsClass("",SPZKpc1,actTaal,,,DC))_" "_$$$Replace($P(WSLn.ItemSPZK,";",2,3),";","_") . Else If SPZKpc1?1(1"SI01.x2",1"SI03.x2") Do . . Set SPZijkantVTL=$$$FCase(##class(Prod.GAMeta.BT.TBSPZijkant).TaalAfhOmsClass("",SPZKpc1,actTaal,,,DC)) . . Set SPZijkantVTL2=##class(cspBasis.GAProdTBox).WebTextValue("SifonRugstukken",actTaal,"L")_" (mm) "_$$$Replace($P(WSLn.ItemSPZK,";",2,4),";","_") . Else Do . . Set SPZijkantVTL=$$$FCase(##class(Prod.GAMeta.BT.TBSPZijkant).TaalAfhOmsClass("",SPZKpc1,actTaal,,,DC)) . . Set ActieTeksten=WSLn.GeefActieTeksten(actTaal) . Set tmpLB="" Set:(WSLn.ItemSTDL=$$$tbxCodeStdLade) tmpLB=tmpLB_$LB("STD",$$$Vertaal("StdLade")) ; ##class(cspBasis.GAProdTBox).WebTextValue("StdLade",actTaal,"L")) Set:($L($$$Trim(WSLn.KlantRef)) ) tmpLB=tmpLB_$LB("KLREF",##class(cspBasis.GAProdTBox).WebTextValue("UwRef",actTaal,"L")_": "_WSLn.KlantRef) Set:($L(WSLn.ItemSPZK)) tmpLB=tmpLB_$LB("SPZK",SPZijkantVTL) Set:($L(SPZijkantVTL2)) tmpLB=tmpLB_$LB("SPZK2",SPZijkantVTL2) Set:(WSLn.ItemBM'="I" ) tmpLB=tmpLB_$LB("BM",BlumotionVTL) Set:($$$SPBzonderMat ) tmpLB=tmpLB_$LB("ASM" ,$$$FCase(##class(cspBasis.GAProdTBox).WebTextValue("GeenMat",actTaal,"L"))) Set:(WSLn.ItemASM?1A ) tmpLB=tmpLB_$LB("ASM", $$$FCase(##class(Prod.GAMeta.BT.TBMat).TaalAfhOmsClass("",WSLn.ItemASM,actTaal,,,DC))) Set:($$$BGRPcond ) tmpLB=tmpLB_$LB("BGRP",$$$FCase(##class(Prod.GAMeta.BT.TBBinnenGreep).TaalAfhOmsClass("",WSLn.ItemBGRP,actTaal,,,DC))) Set:(WSLn.ItemOLP>0 ) tmpLB=tmpLB_$LB("OLP","Orgalux: "_##class(BL.PR.GA.TandemBox).CalcOLProdCode(WSLn.ItemOLP)) Set:(WSLn.ItemSB>0 ) tmpLB=tmpLB_$LB("SB",##class(cspBasis.GAProdTBox).WebTextValue("Stabilisator",actTaal,"L")) Set:($$$FScond ) tmpLB=tmpLB_$LB("FS", $$$FCase(##class(Prod.GAMeta.BT.TBFrontSteun).TaalAfhOmsClass("",WSLn.ItemFS,actTaal,,,DC)) ) ; ##class(cspBasis.GAProdTBox).WebTextValue("Frontsteun",actTaal,"L")_": "_WSLn.ItemFS) Set:($$$DWVcond ) tmpLB=tmpLB_$LB("DWV", $$$FCase(##class(Prod.GAMeta.BT.TBDwarsVerdeling).TaalAfhOmsClass("",WSLn.ItemDWV,actTaal,,,DC)) ) ; ##class(cspBasis.GAProdTBox).WebTextValue("Dwarsverdeling",actTaal,"L")_": "_WSLn.ItemDWV) Set:($L(WSLn.ItemOPVL)) tmpLB=tmpLB_$LB("OPVL",##class(cspBasis.GAProdTBox).WebTextValue("Opvullijst",actTaal,"L")_": "_WSLn.ItemOPVL) Set:($$$isBulkVPK ) tmpLB=tmpLB_$LB("VPK",##class(cspBasis.GAProdTBox).WebTextValue("VerpakBulk",actTaal,"L")_" - "_##class(cspBasis.GAProdTBox).WebTextValue("VPK_"_WSLn.ItemVPK_"_kort",actTaal,"L")) Set:($IsObject(ActieTeksten)) tmpLB=tmpLB_$LB("ACTIE",ActieTeksten.GetNext("")) ; Moet uitgebreid worden naar alle acties, te overlopen met een iterator (added by WimV on 21/12/2010) Quit tmpLB ]]> Geeft een $LB() met de leverweken terug s lbWk=##class(BL.PR.GA.TandemBox).GetLeverWeken("N") w $$ListToCRLF^vhLib(lbWk),! 1 Taal:%String="N",KLNr:%String="?",VerpakkingType:%String="S" %List =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | Methods for Prod.GAData/GAMeta | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1 1 1 0 als KLAS="SP", maar "SP" niet meer in gebruik. Bij nieuwe spoelbakken ("SP2") is AftrekLadeProf=0 . If SPZLI_SPBR_SPZRE="" Do . . Set objSP=##class(Prod.GAMeta.BT.TBSPZijkant).OpenViaItemCode(SPZK,DC) . . Quit:('$IsObject(objSP)) . . Set:(SPZLI'>0) SPZLI=objSP.Parameters.GetAt("ZKLI") . . Set:(SPBR'>0) SPBR=objSP.Parameters.GetAt("SPBR") . . Set:(SPZRE'>0) SPZRE=objSP.Parameters.GetAt("ZKRE") . Set scSPBR=..CalcSPBreedtesOpMaat(IB,.SPZLI,.SPBR,.SPZRE,AftrekLP) . If $$$ISERR(scSPBR) Do WL^vhDBG("SpoelbakBreedte fout in berekening : "_$$ParseStatus^vhLib(scSPBR)) . If $$$ISERR(scSPBR) Set X=YYY ; Calculation must trigger an ERROR . Do bwvAddToDataItem("SPZLI",SPZLI) . Do bwvAddToDataItem("SPBR",SPBR) . Do bwvAddToDataItem("SPZRE",SPZRE) Else If (KLAS="SY2")&&($L(SPZK))&&($G(SifonQty)<2) Do . // Nieuwe SifonLade (type 2), spoelbakBreedte controleren op correcte afmetingen . Set SPZLI=$G(Product.LookUp("PL","SPZLI")) . Set SPBR=$G(Product.LookUp("PL","SPBR1")) . Set SPZRE=$G(Product.LookUp("PL","SPZRE")) . Set AftrekLP=0 . Set scSPBR=..CalcSPBreedtesOpMaat(IB,.SPZLI,.SPBR,.SPZRE,AftrekLP) . If $$$ISERR(scSPBR) Do WL^vhDBG("Sifonlade type 2 : uitsparingBreedte fout in berekening : "_$$ParseStatus^vhLib(scSPBR)) . If $$$ISERR(scSPBR) Set X=YYY ; Calculation must trigger an ERROR // Sifonlade D-hoogte heeft steeds B-rug (geldt ook voor C-hoogte) If (KLAS="SY")&&(RH?1(1"D",1"C",1"G")) Do ; If LC?1(1"DY",1"DY/Z",1"DLY",1"DLY/Z",1"CLY",1"CLY/Z",1"CMY",1"CMY/Z") Do . Quit:($L($G(Product.LookUp("PL","RSTL")))) . Set BT="RSTL" ; TBRugStukVerlaagd . Set BTVal="B" . Do bwvAddToDataItem(BT,BTVal) If KLAS?1(1"SP2",1"SY2") Do . Set RSTL=$G(Product.LookUp("PL","RSTL")) . Set BinnenZijwandVolgtRSTL=0 ; conditioneel, afhankelijk van de UI (bvb Antaro BS2) . If ($L(RSTL))&&(BinnenZijwandVolgtRSTL) Do . . Do bwvAddToDataItem("SPZBINHOOGTE",RSTL) . Else Do . . Set BT="SPZBINHOOGTE" ; SpoelbakZwBinHoogte . . Set BTVal=..CalcSPZijwandHoogte(LC,DC,SPZK) . . Do bwvAddToDataItem(BT,BTVal) . . . . ; Rugstuk Verlaagd invullen als de verhoogde binnenzijwand niet gelijk aan de verhoogde ladezijwand . . If BTVal'=RH Do . . . Set SPZBINHOOGTE=BTVal . . . Set BT="RSTL" ; TBRugStukVerlaagd . . . Set BTVal=SPZBINHOOGTE . . . Do bwvAddToDataItem(BT,BTVal) Set BT="KSP" ; TBSpoelbakKleur Set KSP=$G(Product.LookUp("PL","RK")) ; $$$PLp("TBRelingKleur") Set BTVal=$S((KSP="WI")||(KSP="CR"):"IN",(KSP="AL")||(KSP="SA"):"MG",1:KSP) Do bwvAddToDataItem(BT,BTVal) Set BT="IsSR" ; IsStalenRug Set BTVal=$S($G(Product.LookUp("PL","SR"))="Z":0, 1:1) ; $G(Product.LookUp("PL","SPZK"))'?1(1"S",1"B",1"S2",1"B2"):0, 1:1) ; $$$PLp("TBStalenRug") Do bwvAddToDataItem(BT,BTVal) // DEPRECATED - is nooit echt gebruikt, enkel in development. ;Set BT="FD" ; Frontdesign ;Set BTVal=$S($G(Product.LookUp("PL","LT"))="L":"",$G(Product.LookUp("PL","DC"))="I":"I", 1:"S") ;Do Product.SetItemValByPL(BT,BTVal) ;Do bwvAddToDataItem(BT,BTVal) Set BT="Staffel" Set BTVal=$$bwvCalcStaffel(..Qty) Do bwvAddToDataItem(BT,BTVal) Set BT="PRO" ; IsPRO Set VPK=$G(Product.LookUp("PL","VERPAK")) ; $$$PLp("Verpakking") Set BTVal=$S(VPK?1(1"P",1"I",1"A",1"C",1"O",1"B",1"X",1"Y"):1, 1:0) Do bwvAddToDataItem(BT,BTVal) Do Product.BuildLookUp($LB("PL")) Quit bwvCalcStaffel(Qty) Quit $S(Qty<10:1,Qty>50:Qty,1:Qty\10*10) ;Qty tussen 1 en 50 in stappen van 10 bwvAddToDataItem(PL,BTVal) Do:($L(PL)&&$L(BTVal)) Product.SetItemValByPL(PL,BTVal) Quit ]]> Berekent de Verpakkingskenmerken en vult de waarden in de INPUT data-items van Product in. arValuesSrc : bepaalt uit welke bron de KenmerkWaarden gehaald worden. - BL : [default] haalt waarden uit BL-object : ..BTValues.GetAt(kenm) - PROD : haalt waarden uit data-items van Product - ARRAY : arValuesSrc bevat subnodes voor de nodige waarden - "" : hoofdnode is leeg; indien subnode dan ARRAY, anders BL [default] 0 0) $LI(lbEmpty,Pos)="" ; KMNaam wissen For i=1:1:$LL(lbEmpty) Set:($L($LI(lbEmpty,i))) lbData=lbData_$LB($LB($LI(lbEmpty,i),"")) ; toevoegen indien niet leeg Quit ]]> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | BTValues bewerkingen | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Vult de Waarde v/e BT-item in ..BTValues in + bepaalt de beperkingen op de hiervan afhankelijke ListItems (i.e. gekoppelde Popup's via BeperkGUI) De array BTValues bevat de mogelijke waarden van deze gekoppelde ListItems ("I"-subnode) en eventueel gewijzigde waarde van BT-items ("V"-subnode) ten gevolge van PropagatieType Structuur van BTUpdates: (als .local doorgeven) BTUpdates("I","TBFrontSteun")=$LB(1,0) BTUpdates("I","TBBoxSide")="ZR" ... BTUpdates("V","TBFrontSteun")=0 BTUpdates("V","TBGlijderType")="V" ... 0 $$$MaxLoop) Quit:(Source="")||('$D(BTDep(Source))) Set:('$D(Val)) Val=..BTValues.GetAt(Source) ;W !,$J("",4*(CntLoop-1))_"BEGIN Restrict with "_Source_" = "_Val_" (Loop:"_CntLoop_") PT:"_PropagatieType,! ;d WL^vhDBG($J("",4*(CntLoop-1))_"BEGIN Restrict with "_Source_" = "_Val_" (Loop:"_CntLoop_") PT:"_PropagatieType) New SourceDep,Target,tmpDep,i,TargetVal New lbIDs,BeperkBT,BeperkVal,BeperkLB Set Target="" Kill tmpDep For Set Target=$O(BTDep(Source,Target)) Quit:(Target="") Do . Set tmpDep($LF(lbClasses,Target))=Target ; tmpDep bevat een gesorteerde lijst van de Targets volgens prioriteit in ;d WL^vhDBG("$O(BTDep(Source,Target))="_$O(BTDep(Source,Target))_" tmpDep: "_$$ArrayToText^vhLib("tmpDep")) Set i="" For Set i=$O(tmpDep(i)) Quit:(i="") Do . Set Target=tmpDep(i) . Quit:(Target=BTNaam) ; Initieel aangepaste BeperkBT (door BTValueSet()) . Set TargetVal=$G(tmpValues(Target)) . Do bvsBeperkIDs . ;w $J("",4*(CntLoop-1))_"beperking op "_Target_" Items:"_$$LCVT^vhLib(lbIDs)_" Orig TargetVal:"_TargetVal ,! . ;d WL^vhDBG($J("",4*(CntLoop-1))_"beperking op "_Target_" Items:"_$$LCVT^vhLib(lbIDs)_" Orig TargetVal:"_TargetVal) . Set BTUpdates("I",Target)=lbIDs . If $$bvsValueUpdated Do .. Set BTUpdates("V",Target)=TargetVal .. Set tmpValues(Target)=TargetVal .. Do bvsRestrictBT(Target,TargetVal,CntLoop+1) Quit bvsBeperkIDs Set lbIDs=BTExtent(Target) Set BeperkBT="" ;d:($D(MApplication)) WL^vhDBG($$ArrayToText^vhLib("BTDep")) For Set BeperkBT=$O(BTExtent(Target,"Dep",BeperkBT)) Quit:(BeperkBT="") Do . Set BeperkVal=$G(tmpValues(BeperkBT)) . Quit:(BeperkVal="") . ;d:($D(MApplication)) WL^vhDBG("B "_BeperkBT_" "_Target_" "_BeperkVal) . Set BeperkLB=BTDep(BeperkBT,Target,BeperkVal) . Set lbIDs=$$bvsCommonItems(lbIDs,BeperkLB) Quit bvsCommonItems(lbOne,lbTwo) New i,tmpLB Set tmpLB="" For i=1:1:$LL(lbOne) Set:($LF(lbTwo,$LI(lbOne,i))>0) tmpLB=tmpLB_$LB($LI(lbOne,i)) Quit tmpLB bvsValueUpdated() Quit $CASE(PropagatieType, $$$ptEmpty:$$bvsValueUpdatedEMPTY, $$$ptAll:$$bvsValueUpdatedALL, :0) bvsValueUpdatedEMPTY() If $L(TargetVal)&&($LF(lbIDs,TargetVal)=0) Do Quit 1 . Set TargetVal="" Else Quit 0 Quit 0 bvsValueUpdatedALL() If ($LL(lbIDs)=1)&&(TargetVal'=$LI(lbIDs,1)) Do Quit 1 . Set TargetVal=$LI(lbIDs,1) Else If $L(TargetVal)&&($LF(lbIDs,TargetVal)=0) Do Quit 1 . Set TargetVal="" Else Quit 0 Quit 0 ]]> SepID is de string tussen het ID en de Oms (bvb.: "WS - Wit std"); Als SepID="0", dan geen ID vooraan. ]]> BTNaam:%Library.String,lbIDs:%Library.List,SepID:%Library.String=" - " 1 %Library.String 1 1 %String 1 DK:%String,LD:%String,BM:%String 1 %String =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | (Verpakkings)kenmerken bewerkingen | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Filtert KenmerkArray op kenmerken: dwz. alleen kenmerken van de groep worden 1 KMSpecs:%String,KMDefaults:%String 1 %String GroepID:%String,Kenmerk:%String,lbNegeerKM:%List 0 %Library.List Bij IncludeUndefs=1 worden producten waarbij een kenmerk niet gedefinieerd is (lees: niet van toepassing is), toch opgenomen in de lijst.]]> 1 0 ]]> 1 %Library.List KenmerkArray als .Local doorgeven.]]> 1 1 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | Import/Export from external sources | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Uitleg: zie ..BuildFromWSNew() Het BL-TBox object moet reeds geïnstantieerd en geïnitialiseerd zijn. Daarom steeds via de method ..BuildFromWSNew() oproepen. WS:WS.TBX.Order,Opties:%Library.String 0 Maakt de TBox-producten aan vertrekkende van het WS-object. Dit WS-object kan data bevatten voor meerdere TBox'en. Opties: PRS=0/1/B ; SAV=0/1 ; KPR=0/1 Dit is een class-method, in tegenstelling tot "BuildFromWS()". 1 WSOrd:WS.TBX.Order,Opties:%Library.String 0 Gaat de consistenties van WSOrd.Lijnen na. Als er inconsistenties zijn, worden deze teruggegeven via de array "arErrs". 1 WSOrd:WS.TBX.Order,arErrs:%String,Taal:%String="N" 0 %Boolean Omzetten van WSOrder data naar Offerte.Hoofding+Lijnen Geeft als resultaat $LB(OffID,"") terug De Kenmerken en enkele properties zijn reeds ingevuld, maar de producten (GAData+KPR) zijn nog NIET berekend. 1 WSOrder:%String,Opties:%String,ClientAddress:%String 1 %List WSOrdToWWW stuurt een WS.TBX.Order object naar de server. Deze bewaart het order, zodat het later kan geopend worden via de TBoxWeb applicatie. blnUpdate=0 : wordt steeds als nieuw object bewaard, krijgt dus nieuw ID (mID) blnUpdate=1 : bestaand order (mID) wordt overschreven Geeft als resultaat terug : $LB(wsID, KLNr, qsREF, FullUrl, Taal, sc) 1 WSOrder:WS.TBX.Order,MsgNoAccess:%String="",Opties:%String,blnUpdate:%Boolean=1 1 %List Verwijderen van een WS.TBX.Order op de WWW-server. Geeft als resultaat terug : 1 of 0 1 WSOrderID:%String 1 %String Opvragen van het WS.TBX.Order object van de WWW-server. Geeft als resultaat terug : WS.TBX.Order object of "" 1 WSOrderID:%String 1 WS.TBX.Order Aanpassen van een property-waarde van het WS.TBX.Order object op de WWW-server. Geeft als resultaat terug : status "" (succes) of ErrorMsg 1 WSOrderID:%String,ProptName:%String,ProptValue:%String 1 %String