"
#define endPar Set Text=Text_""
#define labelFmt(%txt) Set Text=Text_""_%txt_" : "
#define valueFmt(%txt) Set Text=Text_""_%txt_""
#define highlightFmt(%txt) Set Text=Text_""_%txt_""
#define break Set Text=Text_"
"
Set oProd=##class(Prod.Product).%OpenId(PRNr)
Quit:'$isObject(oProd) ""
$$$blData
Set pxProductDtl=##class(pxProductDtl).Create(PRNr,oProd.KortTekst,$LG(%blData.FavorietElement(PRNr,1,1),1))
Do ..ProductDetailPrijs(oProd,%ECSession.KlantNr,pxProductDtl,1)
s %ClientIP="192.168.1.15"
Set Text=""
If ..NotKSProduct(PRNr) $$$highlightFmt("*** geen KS product ***") $$$break
$$$break
$$$beginPar
$$$labelFmt($$$Translate("Verpakking"))
Set GrootVpk=oProd.Prijs.GrootVerpakking
Set NormVpk=oProd.Prijs.NormaleVerpakking
$$$valueFmt($S(GrootVpk=1:$$$Translate("PerStuk"),1:$$FormatNumber^vhLib("#.##0",GrootVpk)))
If NormVpk,(GrootVpk'=NormVpk) $$$valueFmt(" & "_$S(NormVpk=1:$$$Translate("PerStuk"),1:$$FormatNumber^vhLib("#.##0",NormVpk)))
$$$endPar
; Levertermijn
$$$beginPar
$$$labelFmt($$$Translate("Levertermijn"))
Set Stock=oProd.StockNietStock
If Stock Do ; Stock
. $$$valueFmt($$$Translate("Voorraad"))
Else Do ; Niet stock
. If oProd.GenType["TBX",oProd.Prijs.LeveringsTermijn=0 Do ; Tandembox
. . $$$valueFmt($$$Translate("MaatWerk")_", "_$$$Translate("72 uur"))
. Else Do ; Niet stock
. . $$$valueFmt((oProd.Prijs.LeveringsTermijn+1)_" "_$$$Translate($S((oProd.Prijs.LeveringsTermijn+1)=1:"week",1:"weken")))
. . $$$endPar
. . $$$beginPar
. . $$$labelFmt($$$Translate("MinBestel"))
. . $$$valueFmt($$FormatNumber^vhLib("#.##0",oProd.Prijs.MinimumBestelhoeveelheid)_" "_$$$Translate("st."))
$$$endPar
Set pxProductDtl.Beschrijving=Text
Set MinVerpakking=oProd.Prijs.KleinVerpakking
Set:'MinVerpakking MinVerpakking=oProd.Prijs.NormaleVerpakking
Set:'MinVerpakking MinVerpakking=oProd.Prijs.GrootVerpakking
Set:'MinVerpakking MinVerpakking=1
Set pxProductDtl.Veelvoud=MinVerpakking
If Stock Do
. Set pxProductDtl.MinAantal=1
. Set pxProductDtl.VeelvoudVerplicht=oProd.Prijs.VerkoopPerStuk=-1
. Set:pxProductDtl.VeelvoudVerplicht pxProductDtl.MinAantal=MinVerpakking
Else Do
. Set pxProductDtl.VeelvoudVerplicht=1
. Set pxProductDtl.MinAantal=oProd.Prijs.MinimumBestelhoeveelheid
Set pxProductDtl.MaxAantal=99999 ; Dit zou eigenlijk product afhankelijk moeten zijn
Quit pxProductDtl
}
Method ProductDetail(PRNr, ImageTypes)
{
#define LinkFmt(%tekst,%def)""_%tekst_" ("_%def_")"
Set oProd=##class(Prod.Product).%OpenId(PRNr)
Quit:'$isObject(oProd) ""
$$$blData
Set pxProductDtl=##class(pxProductDtl).Create(PRNr,oProd.KortTekst,$LG(%blData.FavorietElement(PRNr,1,1),1))
Do ..ProductDetailBeschrijving(oProd,%ECSession.KlantNr,pxProductDtl,.ImageTypes)
Do ..ProductDetailPrijs(oProd,%ECSession.KlantNr,pxProductDtl)
Quit pxProductDtl
}
/// Productomschrijving, productsleutels
Method ProductDetailBeschrijving(oProd, KLNr, pxProductDtl, ImageTypes)
{
#define beginPar ;Set Text=Text
;#define beginPar Set Text=Text_""
;#define endPar Set Text=Text_"
"
#define endPar Set Text=Text_"
"
#define labelFmt(%txt) Set Text=Text_""_%txt_" : "
#define valueFmt(%txt) Set Text=Text_""_%txt_""
#define break Set Text=Text_"
"
Set Text=""
Set KortTekst=oProd.KortTekst
If $E(KortTekst,1,2)="OL" Do ..ProductDetailOrgalux(oProd,pxProductDtl) ; Orgalux
Else If $P($G(^KPR(oProd.%Id(),0)),"\",3)?4.7N Do ; afgeleid product
. Do ..AfgeleideImage(oProd,pxProductDtl)
Else Do ; beslag producten
. Do ..ProductLinks(oProd,pxProductDtl) ; beslag producten
Set:$G(Text)="" Text=$LG(..ProductElements(oProd.%Id(),KLNr),4)
; Verpakking
$$$break
$$$beginPar
$$$labelFmt($$$Translate("Verpakking"))
Set GrootVpk=oProd.Prijs.GrootVerpakking
Set NormVpk=oProd.Prijs.NormaleVerpakking
$$$valueFmt($S(GrootVpk=1:$$$Translate("PerStuk"),1:$$FormatNumber^vhLib("#.##0",GrootVpk)))
If NormVpk,(GrootVpk'=NormVpk) $$$valueFmt(" & "_$S(NormVpk=1:$$$Translate("PerStuk"),1:$$FormatNumber^vhLib("#.##0",NormVpk)))
$$$endPar
; Levertermijn
$$$beginPar
$$$labelFmt($$$Translate("Levertermijn"))
Set Stock=oProd.StockNietStock
If Stock Do ; Stock
. $$$valueFmt($$$Translate("Voorraad"))
Else Do ; Niet stock
. If oProd.GenType["TBX",oProd.Prijs.LeveringsTermijn=0 Do ; Tandembox
. . $$$valueFmt($$$Translate("MaatWerk")_", "_$$$Translate("72 uur"))
. Else Do ; Niet stock
. . $$$valueFmt((oProd.Prijs.LeveringsTermijn+1)_" "_$$$Translate($S((oProd.Prijs.LeveringsTermijn+1)=1:"week",1:"weken")))
. . $$$endPar
. . $$$beginPar
. . $$$labelFmt($$$Translate("MinBestel"))?
. . $$$valueFmt($$FormatNumber^vhLib("#.##0",oProd.Prijs.MinimumBestelhoeveelheid)_" "_$$$Translate("st."))
$$$endPar
Set pxProductDtl.Beschrijving=Text
;Kenmerken
Do ..ProductDetailKenmerken(oProd,pxProductDtl)
}
/// Afgeleiede product
/// D ##class(BL.EC.Product).%New().AfgeleideImage()
Method AfgeleideImage(oProd, pxProductDtl, ImageTypes)
{
;Set %ClientIP="192.168.1.15"
;Set %Taal="N"
;Set PRNr=153401
;Set PRNr=196656
;Set oProd=##class(Prod.Product).%OpenId(PRNr)
;Set pxProductDtl=##class(pxProductDtl).Create(PRNr,oProd.KortTekst,"")
Set StartPad="//res.vanhoecke.be/TBX/"
Quit:$P(oProd.GenType,"\")'="TBX" ; allen voor TBX
For Key="KLAS","RH","LT","BS" Set C(Key)=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",oProd.%Id(),Key)) ;d WL^vhDBG(Key_": "_C(Key))
Set ImgCode=C("KLAS")_""_C("RH")_""_$CASE(C("BS"),"ER":"DR","DR":"DR","ZR":"",:"BS")_$S(C("BS")="ZR":"",1:"")_$S(C("LT")="B":"ZIF",1:"")
Set ImgCode=C("KLAS")_""_C("RH")_""_$CASE(C("BS"),"ZR":"",:"BS")_$S(C("BS")="ZR":"",1:"")_$S(C("LT")="B":"ZIF",1:"")
Set TFile="http:"_$ZCVT(StartPad_ImgCode_".swf","O","URL")
Set pxLnk=##class(pxProductLink).Create($$$Translate("PB"),$$$Translate("PB"),"Extensie","PB")
Do pxLnk.AddThumbnailURL(TFile)
Do pxLnk.AddDocLink("Web","SWF",TFile)
Set Ok=pxProductDtl.Links.Insert(pxLnk)
;Do pxProductDtl.XMLExport()
}
/// D ##class(BL.EC.Product).%New().ProductLinks()
Method ProductLinks(oProd, pxProductDtl)
{
Set StartPad="//res.vanhoecke.be/"
Set Taal=%ECSession.Taal
;Haal een lijst op adhv $LB van functietypes (volgorde belangrijk)
Set rsLinks=##class(%psResultSet).%New("Res.ImageLink:QGetLinksViaID")
Set rsImg=##class(%psResultSet).%New("Res.ImageLink:GetViaFunctieTypes")
Do rsImg.Execute("PR",oProd.%Id(),$LB("PB","AG","CA"),Taal)
For Quit:'rsImg.Next() Do
. Set Omschrijving=$$$Translate(rsImg.Data("FunctieType"))
. Set pxLnk=##class(pxProductLink).Create(Omschrijving,Omschrijving,"Extensie",rsImg.Data("FunctieType"))
. Do rsLinks.Execute(rsImg.Data("%ID"),rsImg.Data("FunctieType"),$LB("T","W","P","*"),$LB("PDF","JPG","EPS","*"),Taal)
. For Quit:'rsLinks.Next() Do
.. ;VisueelType controleren
.. If rsLinks.Data("VisueelType")="T" Do ;THUMBNAIL!
... Do ##class(Res.ImageLink).GetFiles(StartPad,rsImg.Data("%ID"),"T","/",.TFiles)
... Set I=""
... For Set I=$O(TFiles(I)) quit:I="" Do
.... Do pxLnk.AddThumbnailURL("http:"_$ZCVT(TFiles(I),"O","URL"))
.. Else If rsLinks.Data("VisueelType")="W" Do ;WEB-LINKS
... Do ##class(Res.ImageLink).GetFiles(StartPad,rsImg.Data("%ID"),"W","/",.WFiles)
... Set I=""
... For Set I=$O(WFiles(I)) quit:I="" Do
.... Do pxLnk.AddDocLink("Web",rsLinks.Data("Extensie"),"http:"_$ZCVT(WFiles(I),"O","URL"))
.. Else If rsLinks.Data("VisueelType")="P" Do ;PRINT-LINKS
... Set oLink=##class(Res.ImageLink).GetFileObject(rsImg.Data("%ID"),"P")
... Quit:'$isObject(oLink)
... Set FileSizeFormatted=oLink.FileSizeFormatted()
... Set oImage=##class(Res.ImageLink).%OpenId(rsImg.Data("%ID"))
... Set NrOfPagesFormatted=$S(rsLinks.Data("Extensie")="EPS":"",$IsObject(oImage):oImage.NrOfPagesFormatted(Taal),1:"")
... Set ExtraInfo=FileSizeFormatted
... Set:((FileSizeFormatted'="") && (NrOfPagesFormatted'="")) ExtraInfo=ExtraInfo_", "
... Set ExtraInfo=ExtraInfo_NrOfPagesFormatted
... Do ##class(Res.ImageLink).GetFiles(StartPad,rsImg.Data("%ID"),"P","/",.WFiles)
... Set I=""
... For Set I=$O(WFiles(I)) quit:I="" Do
.... Do pxLnk.AddDocLink("Print",rsLinks.Data("Extensie")_$S(ExtraInfo="":"",1:" ("_ExtraInfo_")"),"http:"_$ZCVT(WFiles(I),"O","URL"))
. Set Ok=pxProductDtl.Links.Insert(pxLnk)
}
Method ProductDetailOrgalux(oProd, pxProductDtl)
{
Set Big=##class(cspBasis.ProductList).DataDefValueURL("N","OL",oProd.%Id(),"Sleutel","LI")
Set Image=##class(cspBasis.ProductList).DataDefValueURL("N","OL",oProd.%Id(),"Sleutel","LB")
Quit:Image=""
Set:Big="" Big=Image
Set $P(Image,"/",1,$S($ZCVT($zu(5),"U")="ADMIN1":3,1:5))="http://res.vanhoecke.be/OLProdCat"
Set $P(Big,"/",1,$S($ZCVT($zu(5),"U")="ADMIN1":3,1:5))="http://res.vanhoecke.be/OLProdCat"
Set pxLnk=##class(pxProductLink).Create($$$Translate("PB"),$$$Translate("PB"),"Extensie","PB")
Do pxLnk.AddThumbnailURL(Image)
Do pxLnk.AddDocLink("Web","JPG",Big)
Set Ok=pxProductDtl.Links.Insert(pxLnk)
Set Big=##class(cspBasis.ProductList).DataDefValueURL("N","OL",oProd.%Id(),"InfoSleutel","LI")
Quit:Big=""
Set $P(Big,"/",1,$S($ZCVT($zu(5),"U")="ADMIN1":3,1:5))="http://res.vanhoecke.be/OLProdCat"
Set pxLnk=##class(pxProductLink).Create($$$Translate("PB"),$$$Translate("PB"),"Extensie","PB")
Do pxLnk.AddThumbnailURL(Big)
Do pxLnk.AddDocLink("Web","JPG",Big)
Set Ok=pxProductDtl.Links.Insert(pxLnk)
}
/// Prijs
Method ProductDetailPrijs(oProd, KLNr, pxProductDtl, AlignLeft) [ ProcedureBlock = 0 ]
{
#define labelFmt(%txt) Set Text=Text_""_%txt_"
"
#define valueFmt(%txt,%AlignLeft) Set Text=Text_""_%txt_"
"
#define break Set Text=Text_"
"
New Q,D,U,KlantId,NetBrutP,R,Text
Quit:'KLNr ""
Set PRNr=oProd.%Id()
Set Q="K",U=";",D="\"
Set Text=""
; Prijs
Set PrijsRec=$$KLANTPR^KPRIJS(KLNr,PRNr,%ECSession.NoSa)
Set List=$LB($P(PrijsRec,"\",1),,$P(PrijsRec,"\",2))
Set:$E($P(PrijsRec,"\",3))="H" $LI(List,2)="H"
Set KlantId=^KK1(KLNr)
Set R=^KKL(KlantId,2),NetBrutP=$P(R,D,5)
If NetBrutP Do ; Brutoprijs
. ; TO DO
Else Do ; Nettoprijs
. $$$valueFmt($$FormatNumber^vhLib("#.##0,00",$S(%ECSession.Opties[$$$opNoPrice:99.99,1:+$P(PrijsRec,"\",1)))_" EUR"_$S($P(PrijsRec,"\",3)="H":"%",1:""),AlignLeft)
Set pxProductDtl.Prijs=Text
}
Method ProductDetailKenmerken(oProd, pxProductDtl)
{
;#define tabDefine Set Text=Text_""
;#define tabEnd Set Text=Text_""
#define kenmerk(%Kenmerk,%Value) ""_%Kenmerk_":"_%Value_"
"
#define subGroep(%Groep) ""_%Groep_"
"
#define Groep(%Groep) ""_%Groep_"
"
Set Query="Prod.Kenmerk.DataDefinitie:LijstPerProductToelatenEC"
Set Result=##class(%psResultSet).%New(Query)
Set Status=Result.Execute(oProd.%Id())
Set Count=0
Kill MemSubGroep
Set:(pxProductDtl.Beschrijving'="") pxProductDtl.Beschrijving=pxProductDtl.Beschrijving_"
"
Kill FirstKenmerk
For Quit:('Result.Next()) Do
. Set Select=1,ID=Result.Get("ID"),KenmerkNaam=Result.Get("KenmerkNaam")
. Set Waarden=$$LCVTSimple^vhLib(Result.Get("Waarden"),"`"),SubGroep=Result.Get("SubGroep")
. Set:'$D(FirstKenmerk) pxProductDtl.Beschrijving=pxProductDtl.Beschrijving_$$$Groep($$$Translate("Kenmerk"))
. Set FirstKenmerk=1
. If $D(MemSubGroep),MemSubGroep'=SubGroep Do
. . Set pxProductDtl.Beschrijving=pxProductDtl.Beschrijving_$$$subGroep(SubGroep) //"
"_
. Set MemSubGroep=SubGroep
. For I=1:1:$L(Waarden,"`") Do
. . Quit:$P(Waarden,"`",I)=""
. . Set pxProductDtl.Beschrijving=pxProductDtl.Beschrijving_$$$kenmerk(KenmerkNaam,$P(Waarden,"`",I))
. . Set (Select,ID,KenmerkNaam,KenmerkVolgNr)=""
}
Method PrijsElements(PRNr, KLNr) [ ProcedureBlock = 0 ]
{
New Q,D,U
Set Q="K",U=";",D="\"
If %ECSession.Opties'[$$$opNoPrice Do
. Set PrijsRec=$$KLANTPR^KPRIJS(KLNr,PRNr,%ECSession.NoSa)
. Set List=$LB(+$P(PrijsRec,"\",1),,$P(PrijsRec,"\",2))
. Set:$E($P(PrijsRec,"\",3))="H" $LI(List,2)="H"
Else Do
. Set List=$LB($$$NoPrice,,"EUR")
Quit List
}
/// als Optie["LevTermMinB" dan wordt de levertermijn en minbestelhoeveelheid toegevoegd aan de compact en full tekst
/// als Optie["ShowProdRef" dan wordt de pakketgegevens ipv de korttekst getoond
/// als Optie["NoKlantProd" dan worden de pakketgegevens niet verwerkt
Method ProductElements(PRNr, KLNr, TekstAfter As %String, Optie As %String)
{
Set PakketRef=""
If $D(^KPR(PRNr)) Do
. Set (Naam,KortTekst)=$P($G(^KPR(PRNr,0)),"\")
. Set IdentNr=$P($G(^KPR(PRNr,2)),"\",25)
. ;Set:$LF(%ECSession.Toegang,$$$opHasProdRef) PakketRef=$$DISP^PAKKET(%ECSession.KlantNr,PRNr,";",80) ; Ophalen van product referenties voor een bep. klant en product
. Set:$G(Optie)'["NoKlantProd" PakketRef=$$DISP^PAKKET(%ECSession.KlantNr,PRNr,";",80) ; Ophalen van product referenties voor een bep. klant en product
Else If $D(^KPRO(PRNr)) Do
. Set (Naam,KortTekst)=$P($G(^KPRO(PRNr,0)),"\")
. Set IdentNr=$P($G(^KPRO(PRNr,2)),"\",25)
If $G(Optie)["ShowProdRef",$L(PakketRef),PakketRef'[";" Do
. Set Naam=PakketRef
. Set PakketRef=""
Else Do
. Set KortTekst=""
Set TCompact=""
If $L(KortTekst) Do
. Set TCompact=""_$$$Translate("OnsProdRef")_" : "_KortTekst
If $L(PakketRef) Do
. Set TCompact=""_$$$Translate("UwProdRef")_" : "_PakketRef
Set:..NotKSProduct(PRNr) TCompact=TCompact_"*** geen KS product ***"
If $G(Optie)="LevTermMinB" Do
. Set LevTermijn=$$$PRGet($$$LeveringsTermijn)+1
. Set MinBestel=$$$PRGet($$$MinimumBestelHoeveelheid)
. Set:$L(TCompact) TCompact=TCompact_"
"
. Set TCompact=TCompact_""_$$$Translate("LevTermijn")_" : "_LevTermijn_" "_$$$Translate("weken")
. Set TCompact=TCompact_", "_$$$Translate("MinBestel")_" : "_$fn(MinBestel,".")_" "_$$$Translate("st.")
Set TFull=TCompact
Set LangTekst=##class(Prod.ProductTekst).GetOmschrijvingViaPRNr(PRNr,%ECSession.Taal,"
",1) ; incl kleur
Set:LangTekst'="" TFull=TFull_$S($L(TFull)&&$L(LangTekst):"
",1:"")_LangTekst
Set TFull=TFull_"
"_$$$Translate("Identnr")_" : "_IdentNr
Set:$G(TekstAfter)'="" TFull=TFull_$S($L(TFull)&&$L(LangTekst):"
",1:"")_TekstAfter
Quit $LB(PRNr,Naam,TCompact,TFull)
}
Method NotKSProduct(PRNr) [ ProcedureBlock = 0 ]
{
$$$InitOldLocals
Quit ($LF(%ECSession.Opties,$$$opIsKS)||$LF(%ECSession.Opties,$$$opIsHandel))&&$LF(%ECSession.Opties,$$$opAllowAllProd)&&'$$ISPROD^KS(PRNr)&&'$L($$$PRGet($$$GenProduct))
}
Method GetProductOms(PRNr, KLNr, MetPakket)
{
Set Result=""
If $D(^KPR(PRNr)) Do
. Set PakketRef=$S($G(MetPakketRef):$$DISP^PAKKET(KLNr,PRNr,";",80),1:"") ; Ophalen van product referenties voor een bep. klant en product
. If $L(PakketRef) Set Result=Result_"~"_"Uw ref: "_PakketRef
Else Do
. Set Result=$$$Translate(..#ProductBestaatNiet)
If $L(Oms) Set Result=Result_"~"_Oms
Set:$E(Result)="~" $E(Result)=""
Quit Result
}
/// Week in $H formaat
Method VoorraadStatus(PRNr As %Integer, Aantal As %Integer, Week As %Date, ReedsInOrder) [ ProcedureBlock = 0 ]
{
$$$InitOldLocals
Set FysStock=$$GETSTOCK^PRODUKT4(PRNr,"F")
;d WL^vhDBG("FysStock"_FysStock)
If $G(Aantal),FysStock