#include vhLib.Macro
PRValidatePR() ; Parameters: DItem,ParamCheck="CheckPR"
New okPR
If ..Parameters.IsDefined(ParamCheck) Do
. Set okPR=(''DItem.Eval(ParamCheck))
Else Do
. ;Set okPR=(DItem.Get("PRNr")?2.6N) Quit
. New PRNr
. Set PRNr=DItem.Get("PRNr")
. Set okPR=(PRNr?2.6N)&&(##class(Prod.Product).%ExistsId(PRNr))
Quit:('okPR) okPR
; Else
If ..Code="PR1DIM" Do ; Check DimHF < PRLen
. Set okPR=(DItem.Get("DimHF")'>DItem.Get("PRLen"))
Quit okPR
GetKenmVal() ; Parameters: KenmNaam,PRNr,KenmGrp
; Storage: ^Prod.Ken.DataDefinitieD(PRNr, "Groep||Kenm")=$LB($LB(KMWaarden))
Quit:($G(KenmNaam)="") ""
New DItem
Set DItem=Self
Set:('$D(PRNr)) PRNr=DItem.Get("PRNr")
Set:('$D(KenmGrp)) KenmGrp=DItem.Get("KenmGrp")
Quit:(PRNr="") ""
; via Global value: (is afhankelijk van de Storage van het object)
Quit $LG($LG($G(^Prod.Ken.DataDefinitieD(PRNr, KenmGrp_"||"_KenmNaam)),1),1) ; Geeft de eerste waarde (indien Multiple Values, dan mogelijk probleem!)
// OF :
; via Object property:
New DataDef,KMVal
Set DataDef=##class(Prod.Kenmerk.DataDefinitie).%OpenId(PRNr_"||"_KenmGrp_"||"_KenmNaam)
Quit:('DataDef) ""
Set KMVal=DataDef.Waarden.GetNext("") ; Geeft de eerste waarde (indien Multiple Values, dan mogelijk probleem!)
Do:(DataDef) DataDef.%Close()
Quit KMVal
PRGetPRLen() ; Parameters: PRNr,DItem
Set:('$D(DItem)) DItem=Self
Set:('$D(PRNr)) PRNr=DItem.Get("PRNr")
Quit:('$IsValidNum(PRNr)) ""
Quit ##class(Prod.Product).GetPropViaNr(PRNr,"HFNettoLengte")
PRGetCifPPL() ; Parameters: PRNr,DItem
Set:('$D(DItem)) DItem=Self
Set:('$D(PRNr)) PRNr=DItem.Get("PRNr")
Quit:('$IsValidNum(PRNr)) ""
Quit ##class(Prod.Product).GetPropViaNr(PRNr,"CifPPL") ; +##class(Prod.Product).GetPropViaNr(PRNr,"CorFaktor")
; in commentaar gezet op 22/10/04 door WimV.
PRGetGewicht() ; Parameters: Type,PRNr,DItem
;Waarde Type = {N;T;B} ; Netto;Tarra;Bruto
Set:('$D(DItem)) DItem=Self
Set:('$D(PRNr)) PRNr=DItem.Get("PRNr")
Quit:('$IsValidNum(PRNr)) ""
Quit ##class(Prod.Product).GetPropViaNr(PRNr,$P("NettoGewicht;TarraGewicht;BrutoGewicht",";",$F("NTB",Type)-1))
PRGetKortTekst() ; Parameters: PRNr,DItem
Set:('$D(DItem)) DItem=Self
Set:('$D(PRNr)) PRNr=DItem.Get("PRNr")
Quit:(PRNr="") ""
;Quit ##class(Prod.Product).GetPropViaNr(PRNr,"KortTekst")
New list,i
For i=1:1:$L(PRNr,"\") Do ; multiple PRNr
. Set $P(list,"\",i)=##class(Prod.Product).GetPropViaNr($P(PRNr,"\",i),"KortTekst") ; _" ["_$P(PRNr,"\",i)_"]"
Quit list
PRGetLangTekst() ; Parameters: PRNr,DItem,Verkort
Set:('$D(DItem)) DItem=Self
Set:('$D(PRNr)) PRNr=DItem.Get("PRNr")
Quit:(PRNr="") ""
New Prod,txt
Set Prod=##class(Prod.Product).%OpenId(PRNr)
Quit:('Prod) ""
Set txt=Prod.OmschrijvingN1_" "_Prod.OmschrijvingN2
Do Prod.%Close()
Do:(Verkort) gltOmsAfkort(.txt)
Quit txt
gltOmsAfkort(txt)
#define TReplace(%f,%r) Set txt=$$REPLACE^vhRtn1(txt,%f,%r)
#define TReplaceIF(%c,%f,%r) Set:(%c) txt=$$REPLACE^vhRtn1(txt,%f,%r)
$$$TReplace(" "," ") ; DUBBELE Spaties verwijderen
$$$TReplace("rugwandhouder voor houten rugwand","houder vr houten rug")
$$$TReplace("Verhoogde houder","Hoge houder")
$$$TReplace("boxside","Boxside")
$$$TReplace("Stabilisator voor dubbelw. Boxside","Stabilisator")
$$$TReplace("bij gebruik dubbele","bij dubbele")
$$$TReplace("Verstelbare reling","reling")
$$$TReplace("Intraboxkap","Afdekkap")
$$$TReplace("Intra-tandembox","I/T-box")
$$$TReplace("Intra/Tandembox","I/T-box")
$$$TReplace("Tandem/Intrabox","T/I-box")
$$$TReplace("Tandembox","T-box")
$$$TReplace(" tandembox"," T-box")
$$$TReplace("Intrabox","I-box")
$$$TReplace(" intrabox"," I-box")
$$$TReplace("Blumotion","BM")
$$$TReplace(" voor "," vr ")
$$$TReplace(" links"," LI")
$$$TReplace(" rechts"," RE")
$$$TReplace("+rechts","+RE")
$$$TReplace("Verpakking","")
$$$TReplace("symmetrisch","symm.")
$$$TReplace("bedrukt","")
$$$TReplace("PLUS","")
Quit
PRGetOmsViaKenm() ; Parameters: lbKMArgs,Delim,DItem,KenmGrp
; De variabele "MetaArray" niet declareren !!!
Set:('$D(DItem)) DItem=Self
Set:('$D(KenmGrp)) KenmGrp=DItem.Get("KenmGrp")
Quit:($LL($G(lbKMArgs))=0) "" ; $LL() geeft een ERROR als lbKMArgs geen ListBuild is !
New arKenmEval,KenmLijst,txt,i,Kenm,KMVal,VTL
Set KenmLijst=DItem.Eval("Kenm")
Do gvkLBKenmToArray
Set txt=""
For i=1:1:$LL(lbKMArgs) Do
. Set VTL=$$gvkVertaalKenm($LI(lbKMArgs,i))
. Quit:(VTL="")
. Set txt=txt_$S(i>1:Delim,1:"")_VTL
Quit txt
gvkVertaalKenm(lbKMArg)
#define MarkInvers(%v) ""_%v_""
#define DItemGetKenmVal DItem.MetaItem.GetKenmVal(Kenm,DItem.Get("PRNr"),DItem.Get("KenmGrp"))
Set Kenm=$LG(lbKMArg,1)
Quit:(Kenm="") $LG(lbKMArg,2)
; Else :
Set KMVal=$S($LD(lbKMArg,2):$LI(lbKMArg,2), '$D(arKenmEval(Kenm)):$$$DItemGetKenmVal, 1:$G(arKenmEval(Kenm)))
New MDef,RetVTL
If $D(MetaArray(KenmGrp_"||"_Kenm)) Do
. Set MDef=MetaArray(KenmGrp_"||"_Kenm)
Else Do
. Set MDef=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(KenmGrp_"||"_Kenm)
. Set MetaArray(KenmGrp_"||"_Kenm)=MDef
Quit:('MDef) KMVal_" [?MetaDef:"_Kenm_"]"
; Else :
Set RetVTL=MDef.VertaalItem(KMVal,.Taal,"K",1)
Set:($G(%arInvers("DItem","FabrOms",Kenm))=1) RetVTL=$$$MarkInvers(RetVTL)
;Do MDef.%Close()
Quit RetVTL
gvkLBKenmToArray
; KenmLijst is een $LB() ==> omvormen tot een array
For i=1:1:$LL(KenmLijst) Do
. Set arKenmEval($LI($LI(KenmLijst,i),1))=$LI($LI(KenmLijst,i),2)
Quit
; w $$PRGetProductViaKenm^Prod.GAMeta.Item.tmpDev ; (KenmGrp,Kenm,DItem)
PRGetProductViaKenm() ; Parameters: KenmGrp,Kenm,DItem
#define CompTypeDFL "E"
#define KenmCombine "$COMB$"
;Quit ""
;Quit 87944
Set:('$D(DItem)) DItem=Self
Set:('$D(KenmGrp)) KenmGrp=DItem.Get("KenmGrp")
Set:('$D(Kenm)) Kenm=DItem.Get("Kenm")
New ArPR,ArKenmAll,ArKenm,i,FirstPR,CompType,lbKenmCombine
For i=2:1:$LL(Kenm) Do ; Beginnen bij tweede list-item, want eerste Kenm wordt gebruikt als startwaarde bij het opbouwen van SPAlle() array
. Set CompType=$LG($LI(Kenm,i),3,$$$CompTypeDFL)
. Set:(CompType="") CompType=$$$CompTypeDFL
. Set ArKenmAll(CompType,$LI($LI(Kenm,i),1))=$LI($LI(Kenm,i),2)
If $D(ArKenmAll("E",$$$KenmCombine)) Do
. Merge ArKenmAll("KN1",$$$KenmCombine)=ArKenmAll("E",$$$KenmCombine)
. Kill ArKenmAll("E",$$$KenmCombine)
; Lijst met PRNr's voorbereiden (?)
Merge:($D(ArAllePR)) ArPr=ArAllePR(KenmGrp)
; Lijst beperken via Exacte match:
Merge ArKenm=ArKenmAll($$$CompTypeDFL)
Do gpnPRLijstViaKenmerk(KenmGrp,"ArPR",.ArKenm,0 ,$LG($LG(Kenm,1),1),$LG($LG(Kenm,1),2))
Kill ArKenm
; Lijst beperken via multiple:
Merge ArKenm=ArKenmAll
Kill ArKenm($$$CompTypeDFL) ; alles behalve Exaxte match
Do:($D(ArKenm)) gpnPRLijstViaKenmerkMulti(KenmGrp,"ArPR",.ArKenm)
Kill ArKenm
;d DItem.Product.TTrace($$ArrayToText^vhLib("ArKenm"))
;d DItem.Product.TTrace("VOOR:"_$$ArrayToText^vhLib("ArPR"))
Do:($L($O(ArPR($O(ArPR("")))))) gnpBeperkViaActief ; meer dan één product gevonden
Set FirstPR=$O(ArPR(""))
Quit:(FirstPR="") ""
Quit $S($O(ArPR(FirstPR))="":FirstPR, 1:"(MP)"_$$gpnMultiPRNr)
gpnMultiPRNr()
New pr,list
Set (pr,list)=""
For Set pr=$O(ArPR(pr)) Quit:(pr="") Set list=list_"\"_pr
Set:($E(list,1)="\") $E(list,1)=""
Quit list
gnpBeperkViaActief
; Via het kenmerk "Actief" het juiste product zoeken
New ArPRfull,ArKenm2
Merge ArPRfull=ArPR
;Set ArKenm2("Actief")=DItem.Product.KlantGetObjectId()
Set ArKenm2("Actief")=$S($D(tmpKLNr):tmpKLNr, 1:DItem.Product.KlantGetObjectId())
Do gpnPRLijstViaKenmerk(KenmGrp,"ArPR",.ArKenm2,0)
;d DItem.Product.TTrace("NA klant:"_$$ArrayToText^vhLib("ArPR"))
If '($$$aHasSubNodes(ArPR)) Do
. Merge ArPR=ArPRfull
. Set ArKenm2("Actief")="A"
. Do gpnPRLijstViaKenmerk(KenmGrp,"ArPR",.ArKenm2,0)
. ;d DItem.Product.TTrace("NA ALLE:"_$$ArrayToText^vhLib("ArPR"))
Quit
gpnPRLijstViaKenmerk(GroepID,Ref,KenmerkArray,IncludeUndefs,StartKenm,StartWaarde)
New Kenm,i,objKenm
; Array opbouwen van alle producten
Do:('$D(@Ref)) ##class(Prod.Kenmerk.DataIndex).SPAlle(GroepID,Ref,$G(StartKenm),$G(StartWaarde))
; Array beperken voor ieder kenmerk van KenmerkArray
Set Kenm=""
For Set Kenm=$O(KenmerkArray(Kenm)) Quit:(Kenm="") Do
. Set objKenm=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||"_Kenm)
. ; - Beperking op waarde van de subnodes
. Set i=""
. For Set i=$O(KenmerkArray(Kenm,i)) Quit:(i="") Do gpnBeperk(KenmerkArray(Kenm,i))
. ; - Beperking op waarde van node (Kenm)
. If ($$$aHasData(KenmerkArray(Kenm))) Do gpnBeperk(KenmerkArray(Kenm))
. Do:(objKenm) objKenm.%Close()
Quit
gpnBeperk(KWaarde)
Do ##class(Prod.Kenmerk.DataIndex).SPBeperkExcl(GroepID,Kenm,KWaarde,Ref)
Quit
gpnPRLijstViaKenmerkMulti(GroepID,Ref,KenmerkArray)
; Loop through different types of MultiSelect/Beperk
Quit:('$D(@Ref))
New Kenm,i,objKenm,CompType,tmpAr
Set (CompType,Kenm)=""
For Set CompType=$O(KenmerkArray(CompType)) Quit:(CompType="") Do
. For Set Kenm=$O(KenmerkArray(CompType,Kenm)) Quit:(Kenm="") Do
.. If (Kenm=$$$KenmCombine) Do Quit
... Set lbKenmCombine=$LB(Kenm,KenmerkArray(CompType,Kenm),CompType) ; $LI(Kenm,i)
.. ; Else
.. Set objKenm=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||"_Kenm)
.. If ($$$aHasData(KenmerkArray(CompType,Kenm))) Do gpnBeperkMulti(KenmerkArray(CompType,Kenm))
.. Do:(objKenm) objKenm.%Close()
Do:($L($G(lbKenmCombine))) gpnBeperkCombine
Quit
gpnBeperkCombine
Do ##class(Prod.Kenmerk.DataIndex).SPBeperkMulti(.GroepID,$LI(lbKenmCombine,1),$LI(lbKenmCombine,2),.Ref,$LI(lbKenmCombine,3))
;Do xxSPBeperkMulti(.GroepID,$LI(lbKenmCombine,1),$LI(lbKenmCombine,2),.Ref,$LI(lbKenmCombine,3))
Quit
gpnBeperkMulti(KWaarde)
Do ##class(Prod.Kenmerk.DataIndex).SPBeperkMulti(.GroepID,.Kenm,KWaarde,.Ref,.CompType)
;Do xxSPBeperkMulti(.GroepID,.Kenm,KWaarde,.Ref,.CompType)
Quit
;Oproepen via: Do ##class(Prod.Kenmerk.DataIndex).SPBeperkMulti(Groep,Kenmerk,WaardeInput,Ref,CompareType)
xxSPBeperkMulti(Groep,Kenmerk,WaardeInput,Ref,CompareType)
xSPBeperkMulti
Quit:($G(Kenmerk)="")
If $G(WaardeInput)="" Kill @Ref Quit
New PRNr,KenmID,indexID,lbWaarden,i,blnCrit
Set KenmID="||"_Groep_"||"_Kenmerk
If Kenmerk=$$$KenmCombine Do
. Do bpmBeperkViaKenmCombine
Else Do
. Set PRNr=""
. For Set PRNr=$O(@Ref@(PRNr)) Quit:(PRNr="") Kill:('$$bpmMatchCriteria) @Ref@(PRNr)
Quit
bpmBeperkViaKenmCombine
New FCombi,j,iKM,lbKenm,arWdn,arFC,arFCX,lbCVal,Kenm,eval,tmpAr,m,k
Do
. Set FCombi=WaardeInput
. Set lbKenm=$$bpmCombiGetKenm
. Set FCombi=$$bpmTransformFCombi
. Kill arFCX
. Set PRNr=""
. For Set PRNr=$O(@Ref@(PRNr)) Quit:(PRNr="") Do
.. Do bpmCalcCombiValues
. ;w $$$ArrayTT("arFCX"),!
. Set LowestVal=$O(arFCX(""))
. Quit:(LowestVal="")
. Set PRNr=""
. For Set PRNr=$O(@Ref@(PRNr)) Quit:(PRNr="") Kill:('$D(arFCX(LowestVal,PRNr))) @Ref@(PRNr)
Quit
bpmTransformFCombi()
For j=1:1:$LL(lbKenm) Do
. Set KenmID(j)="||"_Groep_"||"_$LG(lbKenm,j)
. Set FCombi=$$$Replace(FCombi,"{"_$LG(lbKenm,j)_"}","($LI(lbCVal,"_j_"))")
Set FCombi="Set eval="_FCombi
Quit FCombi
bpmCombiGetKenm()
Quit:($F(FCombi,"{")=0) ""
New tmpLB,p,q,km
Set tmpLB=""
Set (p,q)=0
For Set p=$F(FCombi,"{",p) Quit:(p=0) Do
. Set q=q+1
. Set km=$P($P(FCombi,"{",q+1),"}")
. Set:($L($$$Trim(km))&&('$LF(tmpLB,km))) tmpLB=tmpLB_$LB(km)
Quit tmpLB
bpmCalcCombiValuesX(FCombi,PRNr) ; d bpmCalcCombiValuesX^Prod.GAMeta.Item.tmpDev(fc,PRNr)
Do bpmCalcCombiValues
Quit
bpmCalcCombiValues
; apply FCombi-function to all values from lbWaarden
Kill arWdn,arFC
Set arFC(1)=""
For j=1:1:$LL(lbKenm) Do
. Set arWdn(j)=$$bpmGetKemnWaarden(PRNr_KenmID(j)) ;w "km:"_j_" "_$LG(lbKenm,j)_" --> Wdn="_$$$LCVT(arWdn(j)),!
. Kill tmpAr
. Merge:($LL(arWdn(j))>1) tmpAr=arFC
. ; In de eerste reeks uitbreiden met j-de kenmerk waarden
. Set k=""
. For Set k=$O(arFC(k)) Quit:(k="") Set $LI(arFC(k),j)=$LG(arWdn(j),1)
. If $LL(arWdn(j))>1 Do
.. For m=2:1:$LL(arWdn(j)) Do
... Set k=""
... For Set k=$O(tmpAr(k)) Quit:(k="") Set arFC($O(arFC(""),-1)+1)=tmpAr(k)_$LB($LG(arWdn(j),m)) ; Set $LI(arFC(k),j)=$LG(arWdn(j),m)
; arFC(j) : elke node bevat een $LB(Kenm1_Waarde, Kenm2_Waarde, ...)
Quit:(arFC(1)="") ; Geen kenmerk/waarden aanwezig!
Set j=""
For Set j=$O(arFC(j)) Quit:(j="") Do
. Set lbCVal=$G(arFC(j))
. Set eval=""
. Xecute FCombi
. Set:($L(eval)) arFCX(eval,PRNr)=""
. ;Set:($L(eval)) arFCX(eval,PRNr,"TST")=arFC(j)
Quit
bpmCombineGetKenmX(FCombi) ; s lb=$$bpmCombineGetKenmX^Prod.GAMeta.Item.tmpDev(fc) w $$LCVT^vhLib(lb)
// !!! Test routine to call directly from Terminal !!!
// this is not used by the normal flow of the algoritme!
Set lbKenm=$$bpmCombiGetKenm
Set FCombi=$$bpmTransformFCombi
Quit lbKenm
bpmGetKemnWaarden(iID)
Quit:(iID="") ""
New lbWaarden
&SQL(SELECT Waarden INTO :lbWaarden FROM Prod_Kenmerk.DataDefinitie WHERE ID = :iID)
Quit $G(lbWaarden)
bpmMatchCriteria()
Set lbWaarden=$$bpmGetKemnWaarden(PRNr_KenmID) ; --> iID = 10560||TB||DraagKracht
Quit:(lbWaarden="") 0 ; Quit:(...) IncludeUndefs
Set blnCrit=0
Do @("bpmMatchCriteria"_CompareType)
Quit blnCrit
Quit ; 0 / 1
bpmMatchCriteriaGN ; Groter dan (of gelijk aan) --> Numeriek
If $LF(lbWaarden,WaardeInput)>0 Quit 1
For i=1:1:$LL(lbWaarden) Set:($LG(lbWaarden,i)>WaardeInput) blnCrit=1
Quit
bpmMatchCriteriaKN ; Kleiner dan (of gelijk aan) --> Numeriek
If $LF(lbWaarden,WaardeInput)>0 Quit 1
For i=1:1:$LL(lbWaarden) Set:($LG(lbWaarden,i)0) blnCrit=1
Quit
bpmMatchCriteriaE ; Exacte match
For i=1:1:$LL(lbWaarden) Set:($LG(lbWaarden,i)=WaardeInput) blnCrit=1
Quit
/*
// Copy these lines into the Caché Terminal to test the "GetProductViaKenm()" method.
s ClientIP="192.168.1.97"
s KenmGrp="TB"
Set Self=""
Set tmpKLNr=""
Set Kenm=$LB($LB("BasisType","LA"),$LB("tB",1),$LB("LiRe","LI"),$LB("Design","S"),$LB("Verpakking","I"),$LB("LadeDiepte",500),$LB("Kleur","MG"),$LB("DraagKracht",50),$LB("ZijwandHoogte","M"))
For i=1:1:$LL(Kenm) Set arKM($LI($LI(Kenm,i),1))=$LI($LI(Kenm,i),2)
zw arKM
m arKM2=arKM
s (Kenm,KM)="" f s KM=$O(arKM(KM)) q:KM="" s Kenm=Kenm_$LB($LB(KM,arKM(KM)))
w $$LCVT^vhLib(Kenm)
Set MItem=##class(Prod.GAMeta.ItemPR).%New()
s PRNrs=MItem.GetProductViaKenm(KenmGrp,Kenm) w PRNrs s PRNr=$RE($P($RE($P(PRNrs,"\",1)),")PM(",1)) s pl=$P(PRNrs,"(MP)",2)
w:($L(PRNr)) $$ArrayToText^vhLib($Na(^Prod.Ken.DataDefinitieD(PRNr)))
s pKenm="TB||Kleur"
s $LI(Kenm,4,4)=""
s $LI(Kenm,3,3)=""
s PRNrs=MItem.GetProductViaKenm(KenmGrp,Kenm) w PRNrs s PRNr=$RE($P($RE($P(PRNrs,"\",1)),")PM(",1)) s pl=$P(PRNrs,"(MP)",2)
f i=1:1:$L(pl,"\") w:($L($G(pKenm))) $$ArrayToText^vhLib($Na(^Prod.Ken.DataDefinitieD($P(pl,"\",i),pKenm))),!
r fc2
($CASE({Kleur}, "MG":1, "WI":2,"IN":3, :5)*10000)+{DraagKracht}
s CombCrit=$LB("$COMB$", fc2)
s Kenm=Kenm_$LB(CombCrit)
s PRNrs=MItem.GetProductViaKenm(KenmGrp,Kenm) w PRNrs s PRNr=$RE($P($RE($P(PRNrs,"\",1)),")PM(",1)) s pl=$P(PRNrs,"(MP)",2)
s $LI(Kenm,7,7)=$LB($LI(Kenm,7),$LB("DraagKracht",28,"GN"))
*/
/*
// Copy these lines into the Caché Terminal to test the "xxSPBeperkMulti()" method with $$$KenmCombine.
s Groep="TB"
r fc2
($CASE({Kleur}, "MG":1, "WI":2,"Ix":3, :4)*10000)+{LadeDiepte}
s fc=fc2
s lb=$$bpmCombineGetKenmX^Prod.GAMeta.Item.tmpDev(.fc) w $$LCVT^vhLib(lb)
k arFCX d bpmCalcCombiValuesX^Prod.GAMeta.Item.tmpDev(fc,30786) zw arFCX
*/
; class: Prod.GAMeta.EM.KostTijd
CopyObject() ; Parameters: CopyMode
#define InList(%v) $LF(lbCopyPropt,%v)>0
New NewKost,lbCopyPropt
Do cpoGetProptList
Set NewKost=##class(Prod.GAMeta.EM.KostTijd).%New()
Set:($$$InList("A")) NewKost.AParam=..AParam
Set:($$$InList("B")) NewKost.BParam=..BParam
Do:($$$InList("KP")) NewKost.KostPlaatsSetObjectId(..KostPlaatsGetObjectId())
;Set:($$$InList("KT")) NewKost.KostType=..KostType
Set:($$$InList("Min")) NewKost.Min=..Min
Set:($$$InList("M")) NewKost.Multiplicant=..Multiplicant
Set:($$$InList("O")) NewKost.Omschrijving=..Omschrijving
Set:($$$InList("R")) NewKost.Reductie=..Reductie
Set:($$$InList("V")) NewKost.VolgNr=..VolgNr
Quit NewKost
cpoGetProptList
; CopyProptList bevat alle properties (per propt. één Char.), die moeten gekopieerd worden:
; volledige lijst is: "A;B:KP;KT;Mi;Mu;O;R;V"
New CopyProptList,i
If CopyMode="FullCopy" Do ; Copy alle properties
. Set CopyProptList="A;B:KP;KT;Min;M;O;R;V"
Else If CopyMode="Empty" Do ; Geen properties invullen
. Set CopyProptList=""
Else Do ; CopyMode is onbekend.
. Set CopyProptList=""
Set lbCopyPropt=""
For i=1:1:$L(CopyProptList,";") Set lbCopyPropt=lbCopyPropt_$LB($P(CopyProptList,";",i))
Quit