Afspraken i.v.m. Posities van Beslag en Boringen:
  • Standaard zijn posities STEEDS gemeten van Links (X), van Boven (Y) en vanaf de Rug (Z)
  • AfstandRand is steeds relatief (t.o.v. de buitenrand van het profiel)
  • Negatieve posities zijn gemeten van de tegenovergestelde kant:
    | PosX < 0 ==> X = KD.Breedte - PosX
    | PosY < 0 ==> Y = KD.Hoogte - PosY
    | PosZ < 0 ==> Z = KD.ProfType.Dikte - PosZ
  • De negatieve posities zijn
    - te tonen als positieve waarden in de User Interface
    - op te slaan in Caché als negatieve waarden
    - in XML eveneens als negatieve waarden op te slaan met ev. een Attribute "omschrijving", bvb. "OMS=Van onderkant"
]]>
persistent Prod.GADef.AfgeleidDef 0 %Library.String 0 Bevat code van het TemplateKader-object indien het product opgebouwd is door een template. Prod.GADef.BT.TemplateBanco 0 Alle gegevens nodig voor de prijsberekening worden opgeslagen in deze array. De sleutel begint met A : Afmetingen (scherm 1) P : Profielen (scherm 2) V : Verbinders (scherm 3) D : Diverse (scherm 4) en wordt gevolgt met een volgnummer van 3 cijfers bv. A001 Een object is meestal (behalve de A's) gelinkt met Res.PI.BancoDtl, voor de prijszetting van de elementen. Enkele vaste sleutels: A001 : Hoogte A002 : Breedte A003 : Diepte Prod.GADef.emBanDtl array 0 Prod.GADef.emBanDtl 0 1 %Library.String 0 1 %Library.String 0 %String 0 %String %Library.String 0 %Library.String list 0 Welke type van Banco er gedefinieerd wordt %Library.String 0 Deze property wordt als $LISTBUILD gebruikt. %Library.String 0 Default: "Prod.GADef.TemplGeneral" (voor templates); "" (leeg voor finale objecten)]]> %Library.String 0 Res.PI.Toepas 0 ]]> %Library.String 0 %Library.TimeStamp 0 %Library.String Ophalen van het dossiernr indien het nog niet bestaat dan invullen code Property XMLStreamC As %Library.Stream [ Collection = characterstream, Transient ]; code IsNew:%Library.Boolean=1 %Library.Status code %Library.Status code initval:%Library.String %Library.Status code %Library.Status Berekenen van het aantal zaagsnedes, boringen of montagetijd. Vertrekkend van de reeds ingeven details en de vermenigvuldigingsfactoren in Res.PI.BancoDtl Optie : "Z" : Zaagsnedes = som van het aantal profielen "B" : Boringen = somproduct van het aantal koppelstukken/voeten met Res.PI.BancoDtl.BoorQty "M" : Montage = somproduct van het aantal koppelstukken/voeten met Res.PI.BancoDtl.MontageTijd "T" : Draadtappen = somproduct van het aantal koppelstukken/voeten met Res.PI.BancoDtl.DraadTapTijd "F" : Frees = somproduct van het aantal koppelstukken/voeten met Res.PI.BancoDtl.FreesTijd code Optie:%Library.String %Library.Float code %Library.List Onmiddellijke controle op de Breedte van het profiel code %Library.String 0) LMin=128 Set:($G(LMax)'>0) LMax=3000-(2*20) ; 20mm marge langs beide kanten Set:(%this.BreedteLMax) Ok="F;Maximale breedte kleiner dan "_LMax_"mm" Quit Ok ]]> Onmiddellijke controle op de Hoogte van het profiel code %Library.String 0) LMin=128 Set:($G(LMax)'>0) LMax=3000-(2*20) ; 20mm marge langs beide kanten Set:(%this.HoogteLMax) Ok="F;Maximale hoogte kleiner dan "_LMax_"mm" Quit Ok ]]> code ElementKey:%Library.String %Library.List Copy maken van KaderDeur in een nieuw object. Verschillende CopyModes: "FullCopy" (geen statics!) "FromTemplate" "FullAndStatic" "Empty" code CopyMode:%Library.String="FullCopy" Prod.GADef.Banco CD098, maar het gaat wel bijvoorbeeld over hetzelfde ;detail, behalve dat hun sortering is gewijzig) We houden dus een array bij op ID, wat normaliter hetzelfde ;blijft... New aCurrentResObjs,Key,ElementKey,tmpBancoDtl,tmpBancoDtlCopy Set Key="" For Set tmpBancoDtl=%this.BanDtl.GetNext(.Key) Quit:Key="" Do . Set aCurrentResObjs(tmpBancoDtl.BancoRes.%Id())=1 . Set tmpBancoDtlCopy=tmpBancoDtl.CopyObject($G(CopyMode)) . ;Voor statics willen we steeds de meest recente key hebben en niet degene die bij het object . ;bewaard is. Zo blijven we up-to-date met eventuele wijzigingen in sortering . If tmpBancoDtl.BancoRes.CalcType["S" Do .. Set ElementKey=tmpBancoDtl.BancoRes.GetElementKey() . Else Do .. Set ElementKey=Key . Do tmpBancoCopy.BanDtl.SetAt(tmpBancoDtlCopy,ElementKey) . Do tmpBancoDtlCopy.%Close() ;Statische elementen (normaal gezien alles uit de "C"-Groep) toevoegen in de kopie ("FullAndStatic"-Mode) If CopyMode="FullAndStatic" Do . New tmpStaticGroupsRS,tmpBancoDtlRES,ResID . Set tmpStaticGroupsRS=##class(%ResultSet).%New("Res.PI.BancoDtl:FetchStaticGroups") . Do tmpStaticGroupsRS.Execute(%this.HoofdGroep) . For Quit:'tmpStaticGroupsRS.Next() Do .. Set ResID=tmpStaticGroupsRS.Get("ID") .. ;Kijken of Static Group al niet reeds in de detailarray is opgenomen .. Quit:($D(aCurrentResObjs(ResID))) .. Set tmpBancoDtlRES=##class(Res.PI.BancoDtl).%OpenId(ResID) .. Set tmpBancoDtlCopy=tmpBancoDtlRES.ForceStaticToDtl(.Key) .. Do tmpBancoCopy.BanDtl.SetAt(tmpBancoDtlCopy,Key) .. Do tmpBancoDtlCopy.%Close() .. Do tmpBancoDtlRES.%Close() . Do tmpStaticGroupsRS.%Close() Quit tmpBancoCopy ]]> code MainKey:%Library.String,Omschrijving:%Library.String %Library.List 999 Do Set MaxKey=999 ;OVERRIDE WANNEER KEY TE GROOT WORDT . Set MaxKey=$Extract(MainKey,1,2) _ $Extract(1000+MaxKey,2,4) . Set tmpBancoDtl=##class(Prod.GADef.emBanDtl).%New() . Set tmpBancoDtl.Omschrijving=Omschrijving . Set tmpBancoDtl.EvalFormule=0 . Set tmpBancoDtl.EvalAantal=0 . Do tmpBancoDtl.BancoResSetObjectId(%this.SearchBancoRes(MaxKey)) . Do %this.BanDtl.SetAt(tmpBancoDtl,MaxKey) . Set ResultList=$LB(MaxKey) . Do tmpBancoDtl.%Close() Else Do . Set ResultList=$LB("C","Kritieke fout: bij het toevoegen van de nieuwe lijn kon geen unieke sleutel gemaakt worden!" _ $C(13,10) _ "Details: poging om lijn toe te voegen aan de (onbekende) groep '" _ $Get(MainKey) _ "'.") Quit ResultList cnbErrorHandler Set ResultList=$LB("C","Er is een onbekende fout opgetreden bij het toevoegen van een lijn aan de groep '"_ $Extract($Get(MainKey),1,2) _ "'!" _ $C(13,10) _ "Caché Error: " _ $ZError) Quit ResultList ]]> code ElementKey:%Library.String %Library.List code Formule:%Library.String %Library.Float Param1,..,Param5, zijn optioneel, en afhankelijk van de op te roepen routine.]]> code KDTemplateID:%Library.String,Param1:%Library.String,Param2:%Library.String,Param3:%Library.String,Param4:%Library.String,Param5:%Library.String 1 code CreateNewBanco:%Library.Boolean,TemplateItemID:%Library.String,ParamList:%Library.String,Aantal:%Library.Integer %Library.List code ElementKey:%Library.String %Library.List code ElementKey:%Library.String %Library.List Berekent het gewicht van de banco a.d.h. van de details (profielen, voeten en koppelstukken) code %Library.Float GenPRNr is een verplichte parameter.]]> code GenPRNr:%Library.Integer,QtyStaffel:%Library.String=1 code %Library.String Er wordt bepaald of de kostprijs moet HERberekend worden of niet.]]> code QtyStaffel:%Library.Integer=1,Munt:Res.Munt="",BldDtl:%Library.Boolean=0,ForceRecalc:%Library.Boolean=1 %Library.Float Is het aantal<10 dan is kost=1, anders is kost=2 s Staffel=QtyStaffel Set CalcID=%this.%Id() If (CalcID="") Do ; GADef Object bestaat nog niet . Set NeedToRecalc=1 Else If ##CLASS(Prod.GADef.KadPrijs).%ExistsId(CalcID) Do ; KadPrijs bestaat nog controleren of het de goede is . ; Open KadPrijsCalcDtl object . Set CalcObj=##CLASS(Prod.GADef.KadPrijs).%OpenId(CalcID) . Set WijzigTS=$S('%this.WijzigTijdStip:"0",1:$ZDATETIMEH(%this.WijzigTijdStip,3)) . Set CalcTS=$S('CalcObj.CalcTijdStip:"0",1:$ZDATETIMEH(CalcObj.CalcTijdStip,3)) .; w "KD: "_$$$TOSECONDS(WijzigTS)_" KP: "_$$$TOSECONDS(CalcTS),! . Set NeedToRecalc=($$kprTOSECONDS(CalcTS)<$$kprTOSECONDS(WijzigTS))!(CalcObj.Aantal'=QtyStaffel) . If BldDtl Do ; Indien het KadPrijs geen details bevat en er zijn details gevraagd dan herrekenen met details .. Set:'CalcObj.Details.GetNext("") NeedToRecalc=1 Else Do ; KadPrijs bestaat nog niet . Set CalcObj=##CLASS(Prod.GADef.KadPrijs).%New() . Do CalcObj.GADefProdSetObjectId(CalcID) . Set NeedToRecalc=1 Set:(ForceRecalc) NeedToRecalc=1 If NeedToRecalc Do . If CalcID Do ; Herekenen van de kostprijs en eventueel bijhouden van de details .. Do CalcObj.Details.Clear() .. Set KostPrijs=%this.KostPrijsCalc(QtyStaffel,$S(BldDtl:CalcObj,1:"")) .. Set CalcObj.TotaleKostPrijs=KostPrijs .. Set CalcObj.Aantal=QtyStaffel .. Set CalcObj.CalcTijdStip=$ZDATETIME($H,3) .. Set Ok=CalcObj.%Save() . Else Do ; GADef object bestaat nog niet .. Set KostPrijs=%this.KostPrijsCalc(QtyStaffel,"") Else Do . Set KostPrijs=CalcObj.TotaleKostPrijs Do:$G(CalcObj) CalcObj.%Close() ; Return KostPrijs If $L(Munt) Do . Set KostPrijs=Munt.NaarMunt(KostPrijs) Quit KostPrijs kprTOSECONDS(%Hdt) Quit $P(%Hdt,",")*3600*24+$P(%Hdt,",",2) ]]> code Staffel:%Library.Integer,caoKadPrijs:Prod.GADef.KadPrijs="" %Library.Float Formateer de langtekst van een product in de geselecteerde taal code Dit is een oproep van de method "KostPrijs" en het resultaat wordt vermenigvuldigd met vaste factor.]]> code QtyStaffel:%Library.Integer=1,Munt:Res.Munt="",BldDtl:%Library.Boolean=0,ForceRecalc:%Library.Boolean=0 %Library.Float Open Object voegt de nodige statische groepen toe aan de klasse 1 code ObjectID:%Library.String Prod.GADef.Banco CD098, maar het gaat wel bijvoorbeeld over hetzelfde ;detail, behalve dat hun sortering is gewijzig) We houden dus een array bij op ID, wat normaliter hetzelfde ;blijft... New aCurrentResObjs,Key,tmpBancoDtl Set Key="" For Set tmpBancoDtl=ReturnObj.BanDtl.GetNext(.Key) Quit:(Key="") Do . ;Enkel static groups verwerken . Quit:(tmpBancoDtl.BancoRes.CalcType'["S") . ;Detail onthouden via ID (dit is sorteer-onafhankelijk) . Set aCurrentResObjs(tmpBancoDtl.BancoRes.%Id())=tmpBancoDtl . ;Huidige entry in detail-array verwijderen, straks weer toevoegen . Do ReturnObj.BanDtl.RemoveAt(Key) ;Statische elementen (normaal gezien alles uit de "C"-Groep) toevoegen aan de array van BanDtls New tmpStaticGroupsRS,tmpBancoDtlRES, tmpBancoDtl,ResID Set tmpStaticGroupsRS=##class(%ResultSet).%New("Res.PI.BancoDtl:FetchStaticGroups") Do tmpStaticGroupsRS.Execute(ReturnObj.HoofdGroep) For Quit:'tmpStaticGroupsRS.Next() Do . Set ResID=tmpStaticGroupsRS.Get("ID") . ;Kijken of Static Group al niet reeds in de detailarray is opgenomen . If $D(aCurrentResObjs(ResID)) Do .. Set tmpBancoDtl=aCurrentResObjs(ResID) .. Set Key=tmpBancoDtl.BancoRes.GetElementKey() . Else Do .. Set tmpBancoDtlRES=##class(Res.PI.BancoDtl).%OpenId(ResID) .. Set tmpBancoDtl=tmpBancoDtlRES.ForceStaticToDtl(.Key) . Do ReturnObj.BanDtl.SetAt(tmpBancoDtl,Key) Quit ReturnObj ]]> Oppervlakte van een kaderdeur in m2 expression %Library.Float code MainKey:%Library.String %Library.List 1 code handle:%Library.Binary %Library.Status 1 code %Library.Status Caché niet meer mogelijk ;We houden een array bij van banco's en zoeken dit dan op... Set paBancoObject=aBanco(+paBancoObject) ;enkele vars set BancoArrORef=paBancoObject.BanDtl set BancoORef=paBancoObject set GetBancoKey=paBeginLetter Set tmpBancoKey=paBeginLetter Quit 1 ]]> 1 code %Library.Status 1 code handle:%Library.Binary %Library.Status 1 code %Library.Status Caché niet meer mogelijk ;We houden een array bij van banco's en zoeken dit dan op... Set paBancoORef=aBanco(+paBancoORef) ;enkele vars Set BancoArrORef=paBancoORef.BanDtl Set BasisRS=##class(%ResultSet).%New("Res.PI.BancoDtl:FilterBasisViaType") Do BasisRS.Execute(paType) Quit $$$OK ]]> 1 code %Library.Status 1 code handle:%Library.Binary %Library.Status 1 code %Library.Status Caché niet meer mogelijk ;We houden een array bij van banco's en zoeken dit dan op... Set paBancoORef=aBanco(+paBancoORef) ;enkele vars Set BancoArrORef=paBancoORef.BanDtl Set ProfielRS=##class(%ResultSet).%New("Res.PI.BancoDtl:FilterProfilesViaType") Do ProfielRS.Execute(paType) Quit $$$OK ]]> 1 code %Library.Status code %Library.List Opslaan van het object als een template om later gebruikt te worden bij kreatie van een product code Code:%Library.String,Omschrijving:%Library.String,KlantNr:%Library.String %Library.String code ElementKey:%Library.String Res.PI.BancoDtl code ElementKey:%Library.String %Library.String code SourceBanDtlKey:%Library.String,DestBanDtlKey:%Library.String %Library.List Oppervlakte van een kaderdeur in m2 expression %Library.Float Opties :
  • GAF : Full XML-beschrijving; i.e. met tag < PRODUCTEN >
  • GAO : met Omschrijving van de data in de XML-tags
  • .

    XSLURL : Toevoegen van de reference naar de XSL. Indien Leeg (""), tags worden weggelaten.
    Deze XML lijst wordt ook gebruikt als zaaglijst, daarom moeten de aantallen vermenigvuldigd kunnen worden met het aantal bestelde banco's
    ImagePath: het path naar de bancoimages (zonder filename!)]]> code DevObj:%Library.String,Taal:%Library.String,Opties:%Library.String,XSLURL:%Library.String ") . Do WRITE^XMLWRITE(DevObj,"") . Do WRITELN^XMLWRITE(DevObj) ;Optie "F" van ull, geeft de extra tag 'producten' Do:(Opties["GAF") BEGINTAG^XMLWRITE(DevObj,"PRODUCTEN") Do WRITELN^XMLWRITE(DevObj) ;MainTag: BancoStd Do BEGINTAG^XMLWRITE(DevObj,"PROD_BANCO_STD") Do WRITELN^XMLWRITE(DevObj) ;Extra's: DossierNr Do:$L(%this.Dossier) TAGWRITE^XMLWRITE(DevObj,"DOSSIERNR",%this.Dossier),WRITELN^XMLWRITE(DevObj) ;Groep Tag: B4, B5, ... Do TAGWRITE^XMLWRITE(DevObj,"TYPE",%this.HoofdGroep) Do WRITELN^XMLWRITE(DevObj) ;Gemonteerd (Half,...) Do TAGWRITE^XMLWRITE(DevObj,"GEMONTEERD",%this.Gemonteerd) Do WRITELN^XMLWRITE(DevObj) ;Toevoegen Templategegevens New tmpObj If ..AssocTemplate'=$$$NULLOREF Do . Do BEGINTAG^XMLWRITE(DevObj,"TEMPLATE") . Do TAGWRITE^XMLWRITE(DevObj,"OMSCHRIJVING","Verstek: "_..AssocTemplate.Verstek_", speciaal: "_..AssocTemplate.Speciaal) . Do TAGWRITE^XMLWRITE(DevObj,"CODE",..AssocTemplate.Type) . Do TAGWRITE^XMLWRITE(DevObj,"ImageFileName",..ImageFileName) . Do ENDTAG^XMLWRITE(DevObj,"TEMPLATE",1) ;SubTags: basis, profiel, koppelstukken & diversen Do xwBASIS Do xwPROFIEL Do xwKOPPEL Do xwDIV Do xwExtraData ;Afsluiten MainTag Do ENDTAG^XMLWRITE(DevObj,"PROD_BANCO_STD",1) ;Afsluiten eventuele extra tag 'producten' Do:(Opties["GAF") ENDTAG^XMLWRITE(DevObj,"PRODUCTEN") Quit ;-------------------------------------------------------------------------------------- ;XML Sub Routine: Basis afmetingen (extra parameters Hoogte, Breedte, Diepte, ...) ;-------------------------------------------------------------------------------------- xwBASIS New Key,SubKey,caBanDtl Set Key="AA000" Set SubKey=" " For Set caBanDtl=%this.BanDtl.GetNext(.Key) Quit:$E(Key)'="A" Quit:Key="" Do . If SubKey'=$E(Key,1,2) Do .. Do BEGINTAG^XMLWRITE(DevObj,"BASISSEN") .. Do TAGWRITE^XMLWRITE(DevObj,"OMSCHRIJVING",caBanDtl.BancoRes.GroepOmschrijving) .. Set SubKey=$E(Key,1,2) . Do BEGINTAG^XMLWRITE(DevObj,"BASIS",$$PARAMFILL^XMLWRITE("KEY",Key)) . Do TAGWRITE^XMLWRITE(DevObj,"OMSCHRIJVING",$$ConvertToHTML^vhRtn1(caBanDtl.Omschrijving)) . Do TAGWRITE^XMLWRITE(DevObj,"LABEL",caBanDtl.ProgLabel) . Do TAGWRITE^XMLWRITE(DevObj,"FORMULE",caBanDtl.Formule) . Do TAGWRITE^XMLWRITE(DevObj,"EVALFORMULE",caBanDtl.EvalFormule) . Do TAGWRITE^XMLWRITE(DevObj,"STRIPPEDBANCORES",$$xwStripID(caBanDtl.BancoResGetObjectId())) . Do TAGWRITE^XMLWRITE(DevObj,"OPTIES",caBanDtl.Opties) . Do ENDTAG^XMLWRITE(DevObj,"BASIS",1) . If SubKey'=$E(%this.BanDtl.Next(Key),1,2) Do .. Do ENDTAG^XMLWRITE(DevObj,"BASISSEN",1) Quit ;-------------------------------------------------------------------------------------- ;XML Sub Routine: Profielen ;-------------------------------------------------------------------------------------- xwPROFIEL New Key,SubKey,caBanDtl Set Key="BA000" Set SubKey=" " For Set caBanDtl=%this.BanDtl.GetNext(.Key) Quit:$E(Key)'="B" Quit:Key="" Do . If SubKey'=$E(Key,1,2) Do .. Do BEGINTAG^XMLWRITE(DevObj,"PROFIELEN") .. Do TAGWRITE^XMLWRITE(DevObj,"OMSCHRIJVING",caBanDtl.BancoRes.GroepOmschrijving) .. Set SubKey=$E(Key,1,2) . Do BEGINTAG^XMLWRITE(DevObj,"PROFIEL",$$PARAMFILL^XMLWRITE("KEY",Key)) . Do TAGWRITE^XMLWRITE(DevObj,"OMSCHRIJVING",$$ConvertToHTML^vhRtn1(caBanDtl.Omschrijving)) . Do TAGWRITE^XMLWRITE(DevObj,"FORMULE",caBanDtl.Formule) . Do TAGWRITE^XMLWRITE(DevObj,"EVALFORMULE",caBanDtl.EvalFormule) . Do TAGWRITE^XMLWRITE(DevObj,"AANTAL",caBanDtl.Aantal) . Do TAGWRITE^XMLWRITE(DevObj,"EVALAANTAL",caBanDtl.EvalAantal) . Do TAGWRITE^XMLWRITE(DevObj,"TOTAAL",caBanDtl.EvalFormule * caBanDtl.EvalAantal) . Do TAGWRITE^XMLWRITE(DevObj,"STRIPPEDBANCORES",$$xwStripID(caBanDtl.BancoResGetObjectId())) . Do TAGWRITE^XMLWRITE(DevObj,"CORPUSVERBINDERS",caBanDtl.EvalCorpusVerbinders) . Do TAGWRITE^XMLWRITE(DevObj,"KOPPELSTUK1",$$xwStripID(caBanDtl.KoppelStuk1GetObjectId())) . If caBanDtl.KoppelStuk1'="" Do .. Do TAGWRITE^XMLWRITE(DevObj,"KS1OPTIES",caBanDtl.KoppelStuk1.Opties) . Do TAGWRITE^XMLWRITE(DevObj,"KOPPELSTUK2",$$xwStripID(caBanDtl.KoppelStuk2GetObjectId())) . If caBanDtl.KoppelStuk2'="" Do .. Do TAGWRITE^XMLWRITE(DevObj,"KS2OPTIES",caBanDtl.KoppelStuk2.Opties) . Do TAGWRITE^XMLWRITE(DevObj,"OPTIES",caBanDtl.Opties) . Do ENDTAG^XMLWRITE(DevObj,"PROFIEL",1) . If SubKey'=$E(%this.BanDtl.Next(Key),1,2) Do .. Do ENDTAG^XMLWRITE(DevObj,"PROFIELEN",1) Quit ;-------------------------------------------------------------------------------------- ;XML Sub Routine: Voeten,verbinders en koppelstukken ;-------------------------------------------------------------------------------------- xwKOPPEL New Key,SubKey,caBanDtl Set Key="CA000" Set SubKey=" " For Set caBanDtl=%this.BanDtl.GetNext(.Key) Quit:"QRSTUVWXYZ"[$E(Key,2) Quit:Key="" Do . If SubKey'=$E(Key,1,2) Do .. Do BEGINTAG^XMLWRITE(DevObj,"KOPPELS") .. Do TAGWRITE^XMLWRITE(DevObj,"OMSCHRIJVING",caBanDtl.BancoRes.GroepOmschrijving) .. Set SubKey=$E(Key,1,2) . Do BEGINTAG^XMLWRITE(DevObj,"KOPPEL",$$PARAMFILL^XMLWRITE("KEY",Key)) . Do TAGWRITE^XMLWRITE(DevObj,"OMSCHRIJVING",$$ConvertToHTML^vhRtn1(caBanDtl.Omschrijving)) . Do TAGWRITE^XMLWRITE(DevObj,"AANTAL",caBanDtl.Aantal) . Do TAGWRITE^XMLWRITE(DevObj,"EVALAANTAL",caBanDtl.EvalAantal) . Do TAGWRITE^XMLWRITE(DevObj,"EENHEID",caBanDtl.BancoRes.Eenheid) . Do TAGWRITE^XMLWRITE(DevObj,"STRIPPEDBANCORES",$$xwStripID(caBanDtl.BancoResGetObjectId())) . Do TAGWRITE^XMLWRITE(DevObj,"OPTIES",caBanDtl.Opties) . Do ENDTAG^XMLWRITE(DevObj,"KOPPEL",1) . If SubKey'=$E(%this.BanDtl.Next(Key),1,2) Do .. Do ENDTAG^XMLWRITE(DevObj,"KOPPELS",1) Quit ;-------------------------------------------------------------------------------------- ;XML Sub Routine: Zagen, Boren, Montagetijd, ... ;-------------------------------------------------------------------------------------- xwDIV New Key,SubKey,caBanDtl Set Key="CQ000" Set SubKey=" " For Set caBanDtl=%this.BanDtl.GetNext(.Key) Quit:$E(Key)'="C" Quit:Key="" Do . If SubKey'=$E(Key,1,2) Do .. Do BEGINTAG^XMLWRITE(DevObj,"DIVERSEN") .. Do TAGWRITE^XMLWRITE(DevObj,"OMSCHRIJVING",caBanDtl.BancoRes.GroepOmschrijving) .. Set SubKey=$E(Key,1,2) . Do BEGINTAG^XMLWRITE(DevObj,"DIVERSE",$$PARAMFILL^XMLWRITE("KEY",Key)) . Do TAGWRITE^XMLWRITE(DevObj,"OMSCHRIJVING",$$ConvertToHTML^vhRtn1(caBanDtl.Omschrijving)) . Do TAGWRITE^XMLWRITE(DevObj,"AANTAL",caBanDtl.Aantal) . Do TAGWRITE^XMLWRITE(DevObj,"EVALAANTAL",caBanDtl.EvalAantal) . Do TAGWRITE^XMLWRITE(DevObj,"EENHEID",caBanDtl.BancoRes.Eenheid) . Do TAGWRITE^XMLWRITE(DevObj,"STRIPPEDBANCORES",$$xwStripID(caBanDtl.BancoResGetObjectId())) . Do TAGWRITE^XMLWRITE(DevObj,"OPTIES",caBanDtl.Opties) . Do ENDTAG^XMLWRITE(DevObj,"DIVERSE",1) . If SubKey'=$E(%this.BanDtl.Next(Key),1,2) Do .. Do ENDTAG^XMLWRITE(DevObj,"DIVERSEN",1) Quit ;-------------------------------------------------------------------------------------- ;XML Sub Routine: Extra Data ;-------------------------------------------------------------------------------------- xwExtraData Do TAGWRITE^XMLWRITE(DevObj,"EXTRASTR",%this.ExtraStr) Do TAGWRITE^XMLWRITE(DevObj,"PRODUCTOMSCHRIJVING",%this.ProductRefStr) Do WRITELN^XMLWRITE(DevObj) Quit ;-------------------------------------------------------------------------------------- ; StripID (bijv. 11||4B410 -> 4B410 ;-------------------------------------------------------------------------------------- xwStripID(paID) New tmpResult Set tmpResult=$E(paID,$L(##class(Res.PI.Definitie).IDViaNaam("BANCODTL"))+3,$L(paID)) Quit tmpResult ]]> Taal:%Library.String,Opties:%Library.String,XSLURL:%Library.String,CStreamParent:%Library.RegisteredObject 0 %Library.SQLQuery paMainKey,paBancoID:%String SELECT Max(Element_Key) FROM Prod_GADef.Banco_BanDtl WHERE (Left(Element_Key,2)=UPPER(:paMainKey)) AND (Banco=:paBancoID) %Library.Query paBancoObject,paBeginLetter:%String %Library.Query paType,paBancoORef:%String Bij het uitvoeren van deze query wordt een set teruggegeven met alle mogelijke profielen + een boolean die bepaalt of het profiel voorkomt in de banco. %Library.Query paType,paBancoORef:%String %Library.CacheStorage BancoDefaultData BanDtl subnode "BanDtl" "Banco" Aantal Breedte Diepte Dossier Gemonteerd Herstelling Hoogte Kostprijs Opmerking TemplateRoutine TemplateUsed Toepassing Verpakking WijzigTijdStip HoofdGroep CStream ExtraStr AssocTemplate ImageFileName ProductRefStr