XML-versie van OL ProductList vhLib.Macro %CSP.Page 0 text/xml UTF-8 /csp/OLProdCat/ProdKenmXML.csp 0 0 1 0 %Status 0) . ;Set:(blnNewGroup)&&('blnFirstPR) sc=writer.EndElement() ; PRODUCTEN . Set:(blnNewGroup)&&('blnFirstPR) sc=writer.EndElement() ; SUBGRP . Set:(blnNewGroup) sc=writer.Element("SUBGRP") . ;Set:(blnNewGroup) sc=writer.WriteAttribute("oms",$$$Replace(ProdGHeader," & "," & ")) . ;Set:(blnNewGroup) sc=writer.Element("PRODUCTEN") . Do opgBuildProdXML . Set blnFirstPR=0 */ Set i="" For Set i=$O(ArPR(i)) Quit:(i="") Do . Do opgPreparePRValues(1) . Quit:($G(BSVal("PRT","K"))="")||($G(BSVal("SBT","K"))="") . Set blnNewGroup=($L(ProdGHeader)>0) . ;Set:(blnNewGroup)&&('blnFirstPR) sc=writer.EndElement() ; PRODUCTEN . Set:(blnNewGroup)&&('blnFirstPR) sc=writer.EndElement() ; SUBGRP . If (blnWithHG)&&('blnFirstPR)&&($$opgIsNewHoofdGroep()) Do . . ;Set sc=writer.EndElement() ; SUBGROEPEN . . Set sc=writer.EndElement() ; HOOFDGRP . . Set:($G(blnWithHG)) sc=writer.Element("HOOFDGRP") . . ;Set:($G(blnWithHG)) sc=writer.WriteAttribute("oms","Text") . . ;Set sc=writer.Element("SUBGROEPEN") . Set:(blnNewGroup) sc=writer.Element("SUBGRP") . ;Set:(blnNewGroup) sc=writer.WriteAttribute("oms",$$$Replace(ProdGHeader," & "," & ")) . ;Set:(blnNewGroup) sc=writer.Element("PRODUCTEN") . Set j="" . For Set j=$O(ArPR(i,j)) Quit:(j="") Do . . Do opgBuildProdXML(j) . . Set:(blnWithHG) PrevHG=BSVal("PRT","Kenm") . . Set blnFirstPR=0 ;Set:('blnFirstPR) sc=writer.EndElement() ; PRODUCTEN Set:('blnFirstPR) sc=writer.EndElement() ; SUBGRP ;Set sc=writer.EndElement() ; SUBGROEPEN Set:($G(blnWithHG)) sc=writer.EndElement() ; HOOFDGRP Set:(blnWithComment) sc=writer.EndElement() ; DOCUMENT Set:(blnWithComment) sc=writer.Write("]]]]> ") Set sc=writer.EndRootElement() ; DOCUMENT If $$$ISERR(sc) Do $system.OBJ.DisplayError(sc) Quit Quit opgIsNewHoofdGroep() Quit:('blnNewGroup) 0 Quit ($G(BSVal("PRT","Kenm"))'=$G(PrevHG)) opgPreparePRValues(j) // j=optionele parameter: indien <> "", dan automatische het eerste element van ArPR(i,j) Set:($G(j)="") j=$O(ArPR(i,"")) Set:(j="") j=1 Kill BSVal ;d WL^vhDBG($$$LCVT($LB(GroepID,$G(ArPR(i,j)),"ProductType"))) Set BSVal("PRT","Kenm")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get(GroepID,$G(ArPR(i,j)),"ProductType"),1) Set BSVal("SBT","Kenm")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get(GroepID,$G(ArPR(i,j)),"SubType"),1) ;Set BSVal("SLT","Kenm")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get(GroepID,$G(ArPR(i,j)),"Sleutel"),1) Set BSVal("BRD","Kenm")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get(GroepID,$G(ArPR(i,j)),"Breedte"),1) Set BSVal("DPT","Kenm")=$$LCVTSimple^vhLib(##class(Prod.Kenmerk.DataDefinitie).Get(GroepID,$G(ArPR(i,j)),"Diepte"),";") Set BSVal("WDD","Kenm")=$$LCVTSimple^vhLib(##class(Prod.Kenmerk.DataDefinitie).Get(GroepID,$G(ArPR(i,j)),"WandDikte"),";") Set BSVal("KLR","Kenm")=$$LCVTSimple^vhLib(##class(Prod.Kenmerk.DataDefinitie).Get(GroepID,$G(ArPR(i,j)),"Kleur"),";") Set BSVal("PRT","K")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,$G(ArPR(i,j)),"ProductType","K","1") Set BSVal("SBT","K")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,$G(ArPR(i,j)),"SubType","K","1") Set BSVal("SLT","O")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,$G(ArPR(i,j)),"Sleutel","O","1") Set BSVal("BRD","K")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,$G(ArPR(i,j)),"Breedte","K","1") Set BSVal("DPT","K")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,$G(ArPR(i,j)),"Diepte","K","*") Set BSVal("VRS","K")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,$G(ArPR(i,j)),"Vereist","K","*") Set BSVal("BOW","K")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,$G(ArPR(i,j)),"BOWeten","K","*") Set BSVal("DYN","K")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,$G(ArPR(i,j)),"DynSpace","K","*") Set CntVRS=$LL(BSVal("VRS","K")) Set CntVRSExtra=CntVRS+$LL(BSVal("BRD","K"))+$LL(BSVal("DPT","K")) ; Breedte en Diepte vallen onder de vereisten Set CntBOW=$LL(BSVal("BOW","K")) Set CntDynS=$LL(BSVal("DYN","K")) Set lblDynSpace=$G(MetaArray("DynSpace","VTL"),"DynS-L") ; URL's ' Set BSVal("SLT","LB")=##class(cspBasis.ProductList).DataDefValueURL(Taal,GroepID,$G(ArPR(i,j)),"Sleutel","LB") Set BSVal("SLT","LI")=##class(cspBasis.ProductList).DataDefValueURL(Taal,GroepID,$G(ArPR(i,j)),"Sleutel","LI") ;Set BSVal("SLT","LI")=##class(cspBasis.ProductList).FitImage(##class(cspBasis.ProductList).DataDefValueURL(Taal,GroepID,$G(ArPR(i,j)),"Sleutel","LI")) ;Set BSVal("INF","LI")=##class(cspBasis.ProductList).FitImage(##class(cspBasis.ProductList).DataDefValueURL(Taal,GroepID,$G(ArPR(i,j)),"InfoSleutel","LI")) Set BSVal("INF","LI")=##class(cspBasis.ProductList).DataDefValueURL(Taal,GroepID,$G(ArPR(i,j)),"InfoSleutel","LI") Set BSVal("DYN","LB")=##class(cspBasis.ProductList).DataDefValueListURL(Taal,GroepID,$G(ArPR(i,j)),"DynSpace","LB","*") Set BSVal("DYN","LI")=##class(cspBasis.ProductList).DataDefValueListURL(Taal,GroepID,$G(ArPR(i,j)),"DynSpace","LI","*") Set BSVal("DYN","LX")=##class(cspBasis.ProductList).DataDefValueListURL(Taal,GroepID,$G(ArPR(i,j)),"DynSpace","LX","*",,"FOP") ; Hoofding voor de groepering Set ProdGHeader=$S(##class(cspBasis.ProductList).UseProdHeader(GroepID,.ArPR,i):$LG(BSVal("SBT","K"),1), 1:"") If $L(ProdGHeader), $L($G(ArPR(i,j,"NDX"))) Do . If ArPR(i,j,"NDX")'=PrevHeadNDX Do .. Set jj=0 .. Set PrevHeadNDX=ArPR(i,j,"NDX") . ;Set ProdGHeader=ArPR(i,j,"NDX")_"."_$INCREMENT(jj)_" "_ProdGHeader Quit opgBuildProdXML(j) // j=optionele parameter: indien <> "", dan enkel ArPR(i,j) als product tonen, anders groeperen (GROEPDATA) over ArPR(i,*) Set sc=writer.Element("PRODUCT") ;BSVal("PRT","Kenm") Do:($L($G(BSVal("PRT","Kenm")))) opgWriteElem("HOOFDGROEP",BSVal("PRT","Kenm"),$LB("oms"_Taal,$LG(BSVal("PRT","K"),1))) Do:($L($G(BSVal("SBT","Kenm")))) opgWriteElem("SUBGROEP",BSVal("SBT","Kenm"),$LB("oms"_Taal,$LG(BSVal("SBT","K"),1))) ;Do:($L($G(BSVal("SLT","Kenm")))) opgWriteElem("SLEUTEL",BSVal("SLT","Kenm")) Do:($L($G(BSVal("BRD","Kenm")))) opgWriteElem("BREEDTE",BSVal("BRD","Kenm")) Do:($L($G(BSVal("DPT","Kenm")))) opgWriteElem("DIEPTE",BSVal("DPT","Kenm")) For iDynS=1:1:CntDynS Do . Do opgWriteElem("DYNSPACE",$LG(BSVal("DYN","K"),iDynS, ""),$LB("src",($LG(BSVal("DYN",$S(blnDynSSVG:"LX",1:"LB")),iDynS, "")))) Set ImgVTLType="LB" ; $S(blnImgLarge:"LI", 1:"LB") Do:($L($G(BSVal("SLT",ImgVTLType)))) opgWriteElem("FOTO_KL","",$LB("src",$G(BSVal("SLT",ImgVTLType)))) Set ImgVTLType="LI" Do:($L($G(BSVal("SLT",ImgVTLType)))) opgWriteElem("FOTO_GR","",$LB("src",$G(BSVal("SLT",ImgVTLType)))) Do:($L($G(BSVal("INF","LI")))) opgWriteElem("LINK","",$LB("src",$G(BSVal("SLT",ImgVTLType)))) Do opgWriteElem("OMSCHR",$LG(BSVal("SLT","O"),1),,1) ; VEREISTEN If (CntVRSExtra>0) Do . Set sc=writer.Element("VEREISTEN") . Do:($L($G(BSVal("BRD","K")))) opgWriteElem("ITEM",$G(MetaArray("Breedte","VTL"),"BRD-L")_": "_$LG(BSVal("BRD","K"),1)) . Do:($L($G(BSVal("DPT","K")))) opgWriteElem("ITEM",$G(MetaArray("Diepte","VTL"),"DPT-L")_": "_$$LCVTSimple^vhLib(BSVal("DPT","K")," / ")) . For iVrs=1:1:CntVRS Do opgWriteElem("ITEM",$LI(BSVal("VRS","K"),iVrs),,1) . Set sc=writer.EndElement() ; VEREISTEN ; TIPS If (CntBOW>0) Do . Set sc=writer.Element("TIPS") . For iBow=1:1:CntBOW Do opgWriteElem("ITEM",$LI(BSVal("BOW","K"),iBow),,1) . Set sc=writer.EndElement() ; TIPS ; GROEPDATA // If ($G(j)="") Do ; j is not specified, groepeer over alle ArPR(i,*) ;Set sc=writer.Element("GROEPDATA") ;Set j="" ;For Set j=$O(ArPR(i,j)) Quit:(j="") Do Do . ;// Loop through products with same Basis . Set PRNr=ArPR(i,j) . If PRNr?4.6N Do .. Set PRLB=##class(cspBasis.ProductList).GetKortTekstEnPrijs(PRNr) .. Set CKortTxt=$E($LG(PRLB,1),4,11) .. ;Set CPrijs=##class(cspBasis.ProductList).EindGebruikersPrijs($LG(PRLB,2),LandCode) .. Set CPrijsBE=##class(cspBasis.ProductList).EindGebruikersPrijs($LG(PRLB,2),"BE") .. Set CPrijsNL=##class(cspBasis.ProductList).EindGebruikersPrijs($LG(PRLB,2),"NL") . Kill XTVal . Set XTVal("WDD","K")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,PRNr,"WandDikte","K","*","-") . Set XTVal("KLR","K")=##class(cspBasis.ProductList).DataDefValueList(Taal,GroepID,PRNr,"Kleur","K","*") . ; XML tags . ;Set sc=writer.Element("DATA") . Do:(blnShowPRNr) opgWriteElem("PRNR",$G(PRNr)) . ;Do:($L($G(XTVal("WDD","K")))) opgWriteElem("WANDDIKTE_DISP",$LG(XTVal("WDD","K"),1)) . ;Do:($L($G(XTVal("KLR","K")))) opgWriteElem("KLEUR_DISP",$LG(XTVal("KLR","K"),1)) . Do:($L($G(BSVal("WDD","Kenm")))) opgWriteElem("WANDDIKTE",BSVal("WDD","Kenm"),$LB("oms"_Taal,$LG(XTVal("WDD","K"),1))) . Do:($L($G(BSVal("KLR","Kenm")))) opgWriteElem("KLEUR",BSVal("KLR","Kenm"),$LB("oms"_Taal,$LG(XTVal("KLR","K"),1))) . Do opgWriteElem("CODE",$G(CKortTxt)) . ;Do opgWriteElem("CPRIJS",$S($G(CPrijs)>0:CPrijs, 1:""),$LB("munt","EUR")) . Do opgWriteElem("CPRIJS_BE",$S($G(CPrijsBE)>0:CPrijsBE, 1:""),$LB("munt","EUR")) . Do:(Taal="N") opgWriteElem("CPRIJS_NL",$S($G(CPrijsNL)>0:CPrijsNL, 1:""),$LB("munt","EUR")) . ;Set sc=writer.EndElement() ; DATA ;Set sc=writer.EndElement() ; GROEPDATA Set sc=writer.EndElement() ; PRODUCT Quit opgWriteElem2(tag,value,lbAttrib01,blnCData) Set sc=writer.Element(tag) Set:($L($G(lbAttrib01))) sc=writer.WriteAttribute($LG(lbAttrib01,1),$LG(lbAttrib01,2)) Set sc=writer.Write(value) Set sc=writer.EndElement() Quit opgWriteElem(tag,value,lbAttrib01,blnCData) #If ($ZCVT($ZUTIL(110),"U")="CACHE01")||(($ZCVT($ZUTIL(110),"U")="CACHE02")&&($ZCVT($ZUTIL(67,6,$J),"U")="JRNL-ADMIN1")) #define FindStr "/ORGALUX/OLProdCat/" #Else #define FindStr "http://cache01/ORGALUX/OLProdCat/" #EndIf #define cDomOL(%v) $$$Replace(%v,$$$FindStr,"http://www.orgalux.com/ProdCat/") #define cFileOL(%v) $$$Replace(%v,$$$FindStr,"\\cache01\c$\inetpub\wwwroot\ORGALUX\OLProdCat\") #define cShareOL(%v) $$$Replace(%v,$$$FindStr,"\\cache01\ORGALUX\OLProdCat\") Set sc=writer.Element(tag) Set:($L($G(lbAttrib01))) sc=writer.WriteAttribute($LG(lbAttrib01,1),$$$cDomOL($LG(lbAttrib01,2))) ;Set:($L($G(lbAttrib01))) sc=writer.WriteAttribute($LG(lbAttrib01,1),$$$cShareOL($LG(lbAttrib01,2))) ;Set:($L($G(lbAttrib01))) sc=writer.WriteAttribute($LG(lbAttrib01,1),$TR($$$cFileOL($LG(lbAttrib01,2)),"/","\")) ;Set:($L($G(lbAttrib01))) sc=writer.WriteAttribute($LG(lbAttrib01,1),$$$cFileOL($LG(lbAttrib01,2))) If $G(blnCData) Do . Do opgReplaceHTMLTags(.value) /* . Set sc=writer.WriteCData(value) Else Do . Set sc=writer.Write(value) */ Set sc=writer.WriteChars(value) Set sc=writer.EndElement() Quit opgReplaceHTMLTags(str) ; str als .local doorgeven For Quit:(str'?.E1"<".E.1">") Do . Set sTag=$$$TextBetween(str,"<",">") . Set str=$$$Replace(str,"<"_sTag_">","") Quit opgConvertDynSpace(src) Quit $$$cDomOL(src) ]]>