Prod.Product,BL.EC.Common,PRGACNTs 1 %RegisteredObject 0 Fill offertelijn (TBX) via params : de Kenmerken-array (+ enkele properties) van oLijn worden ingevuld met de gegevens uit de array Params %Status Voorbereiden van een offertelijn (TBX) voor import in een order oLijn:Flow.Offerte.Lijn,NoSa:%String %Status Voorbereiden van een offertelijn (TBX) voor prijsberekening en controle Het GAData product wordt gegenereerd, maar NIET opgeslagen. Het KPR product wordt NIET gecreƫerd. De prijs, korttekst, langtekst, ... worden gesimuleerd en ingevuld in de offertelijn. Vult de Status van offertelijn in als er een fout opgetreden is oLijn:Flow.Offerte.Lijn,Taal:%String,NoSa:%String %Status Controle van een lijn (TBX) op prijs, levertermijn, aantal What : P = Prijzen, L = Levertermijn, A = Aantal oLijn:Flow.Offerte.Lijn,What:%String,Taal:%String,NoSa:%String %Status Zie ..GetProducts() %Status Genereren van het GAData Product en het KPR Product. Vult de Status van offertelijn in als er een fout opgetreden is Via de list lbProducts wordt ook de vermenigvuldigingsfactor meegegeven. format: $LB($LB(PRNr,Qty),...) vb. $LB($LB(7458,4),$LB(105215,1)) %Status 0 Do Quit $$$ERROR($$$GeneralError,$$$LCVT(lbError)) . Set lbError=$LB($$$errGADataNoKPRProd) ; "KPR Product not created" . $$$blFlowOfferte . Do %blFlowOfferte.SetStatus(oLijn,$$$OffStatAfgeleidProd,lbError) ; Else Do oLijn.ProductSetObjectId(PRNr) ; Save GAData.Product Set sc=GAProd.SaveClean() If $$$ISOK(sc) Do . Set GAProdID=GAProd.%Id() . Do ##class(Prod.Product).SetPropViaNr(PRNr,"GAProdID",GAProdID) ; ^KPR(PRNr,"G") --> 13e piece Set lbProducts=$LB($LB(oLijn.ProductGetObjectId(),1)) Quit $$$OK Quit:($$gprErrorInFullCalc) $$$ERROR($$$GeneralError,$$$LCVT(lbError)) gprErrorInFullCalc() ; Detect error and set to oLijn.Status Set:('$IsObject(GAProd))&&($G(lbError)="") lbError=$LB($$$errGADataNoProd) ; "GAData Product not created" If $L($G(lbError)) Do . $$$blFlowOfferte . Do %blFlowOfferte.SetStatus(oLijn,$$$OffStatAfgeleidProd,lbError) Quit ('$IsObject(GAProd)) ]]> PRNr 0 Maakt een GAData.Product object voor oLijn. Berekent en valideert de DataItems. Bij fouten wordt de melding via arErrs doorgegeven. Returns GAProd or "". 1 Prod.GAData.Product overbodig Quit blnValid gfcConvertValidPRToLB(arValidPR) ;New lbVPR,Key,DItem,tmpLB Set lbVPR="" Set Key="" For Set Key=$O(arValidPR(0,Key)) Quit:(Key="") Do . Set DItem=GAProd.DataItems.GetAt(Key) . Set lbVPR=lbVPR_$LB($LB(DItem.Code,DItem.Get("Oms"),DItem.Get("PRNr"))) ; ,DItem.Get("Kenm"))) . ;; Extented Error Info: . ;Set tmpLB=$LB(DItem.Code,DItem.Get("Oms"),DItem.Get("PRNr"),DItem.Get("Kenm")) . ;Set arValidPR("I",Key)=tmpLB . ;$$$DoLBDeleteAt(tmpLB,$$$liKenm) ; verwijderen van ListItem "Kenm", omdat deze te groot zou kunnen zijn. Enkel interessant voor debugging . ;Set lbVPR=lbVPR_$LB(tmpLB) . ;;Set msg=msg_$$$CRLF_"> "_$LG(tmpLB,$$$liOms)_" ("_$LG(tmpLB,$$$liCode)_") : PRNr="""_$LG(tmpLB,$$$liPRNr)_"""" Quit $LB("VPR")_lbVPR ]]> Maakt een GAData.Product object voor oLijn. Bij fouten wordt de melding via arErrs (node "BLD") doorgegeven. Returns GAProd or "". 1 Prod.GAData.Product voor import into Admin + calc vanuit Excel - CACHE02 : klasse BL.Prod.GAData.TBXLadeConvert --> voor import into (Dev-)Admin + calc vanuit Excel - routine BL.PR.GA.TB.tmpDev2.MAC --> voor berekening WSOrder */ gbtValuesToProduct #define PL blTBox.LookUp(KM,"DIC") ;New KM,arKenm Do gbtKenmToTempArray Set arKenm("TemplateCode")=GAProd.TemplateCode ; nodig voor blTBox.KMValuesToProduct() Set arKenm="ARRAY" Do:('$D(GAProd.LookUp("PLItem"))) GAProd.BuildLookUp($LB("ICode")) ; "PLItem" is onderdeel van BuildLU("ICode") Do gbtSetNietMeeItems($$$GetKenm("lstNietMee")) Do gbtFBevestNML Do gbtResetNMItemsBinnenlade ; Reling/boxside worden sowieso gemonteerd op een binnenlade ; Basis Input waarden to Product Set KM="" For Set KM=$O(arKenm(KM)) Quit:(KM="") Do:($L($G($$$PL))) GAProd.SetItemValByPL($$$PL,arKenm(KM)) Do GAProd.BuildLookUp($LB("PL")) ; Berekende waarden en kenmerkwaarden (verpakking) to Product Do blTBox.BWValuesToProduct(GAProd) Do blTBox.KMValuesToProduct(GAProd,"TBR",.arKenm) Quit gbtKenmToTempArray ;New DSCode,KFront,KRug,KBxs,lbDSCodes /* // Tijdelijke patch voor intivo inox RelingKleur - waarde in WSLijn moet aangepast worden van CR naar IN (added by WimV on 10/11/2011) If ($$$GetKenm("ItemDS")="II")&&($$$GetKenm("ItemRK")="CR") { Do oLijn.Kenmerken.SetAt("IN","ItemRK") } */ Set DSCode=$S($L($$$GetKenm("ItemDS")):$LG(blTBox.BTDep("TBDesign","TBDesignCode",$$$GetKenm("ItemDS")),1), 1:"") Set KFront=$S($L($$$GetKenm("ItemRK")):$LG(blTBox.BTDep("TBRelingKleur","TBFrontKleur",$$$GetKenm("ItemRK")),1), 1:"") Set KRug =$S($L($$$GetKenm("ItemDS")):$LG(blTBox.BTDep("TBDesign","TBRugKleur",dsID),1), 1:"") Set KBxs =$S($L($$$GetKenm("ItemKX")):$$$GetKenm("ItemKX"), $L($$$GetKenm("ItemDS")):$LG(blTBox.BTDep("TBDesign","TBBoxsideKleur",dsID),1), 1:"") Set arKenm("TBDesign") =$$$GetKenm("ItemDS") Set arKenm("TBDesignCode") =DSCode Set arKenm("LadeCode") =$$$GetKenm("ItemLT") Do gbtBTItemsLadeCode($$$GetKenm("ItemLT")) Set Klas=$G(arKenm("TBKlasse")) Set arKenm("TBFBevestiging")=$S(($G(arKenm("TBLadeType"))="B"):"Z", 1:$$$GetKenm("ItemFB")) Set arKenm("TBCBreedte") =$$$GetKenm("ItemCB") Set arKenm("TBWandDikte") =$$$GetKenm("ItemWD") Set arKenm("OpvullijstLi") =$S($$$GetKenm("ItemOPVL")["L":25, 1:0) Set arKenm("OpvullijstRe") =$S($$$GetKenm("ItemOPVL")["R":25, 1:0) Set arKenm("MinTolerantie") =blTBox.DFLMinTolerantie($$$GetKenm("ItemWD")) ; $S(+$$$GetKenm("ItemWD")=0:0, 1:1) Set arKenm("TBLadeDiepte") =$$$GetKenm("ItemLD") Set arKenm("TBDraagKracht") =$$$GetKenm("ItemDK") Set arKenm("TBBodemKleur") =$$$GetKenm("ItemKB") Set arKenm("TBRelingKleur") =$$$GetKenm("ItemRK") Set arKenm("TBFrontKleur") =KFront Set arKenm("TBLadeKleur") =$S($$$GetKenm("ItemKL")="BE":"BA", 1:$$$GetKenm("ItemKL")) Set arKenm("TBRugKleur") =KRug Set arKenm("TBBlumotion") =$$$GetKenm("ItemBM") Set arKenm("TBBoxSide") =$$$GetKenm("ItemBX") Set arKenm("TBBoxsideKleur")=KBxs ; $$$GetKenm("ItemKX") Set arKenm("TBVulstukKleur")=$$$GetKenm("ItemKV") Set arKenm("TBStabilisator")=$$$GetKenm("ItemSB") Set arKenm("TBStalenRug") =$$$GetKenm("ItemSR") Set:(arKenm("TBStalenRug")="") arKenm("TBStalenRug")="Z" Set arKenm("TBSPZijkant") =$P($$$GetKenm("ItemSPZK"),";",1) If ##class(TECH.StringUtils).Equals(Klas,##class(DOM.PM.enu.TBXKlas).SifonTypeBlum(),##class(DOM.PM.enu.TBXKlas).SifonType3()) { Set arKenm("SpoelbakZkLi")=$P($$$GetKenm("ItemSPZK"),";",2) Set arKenm("SpoelbakZkRe")=$P($$$GetKenm("ItemSPZK"),";",3) Set AantalUitsparingen=blTBox.SpoelbakUitsparingen(arKenm("LadeCode"),arKenm("TBSPZijkant"),Klas) If AantalUitsparingen>1 { Set arKenm("SpoelbakZkMi")=$P($$$GetKenm("ItemSPZK"),";",4) Set arKenm("SpoelbakBreedte1")=$P($$$GetKenm("ItemSPZK"),";",5) Set arKenm("SpoelbakBreedte2")=$P($$$GetKenm("ItemSPZK"),";",6) } Else { Set arKenm("SpoelbakBreedte1")=$P($$$GetKenm("ItemSPZK"),";",4) } } ElseIf Klas=##class(DOM.PM.enu.TBXKlas).Spoelbak() { #define SPZkOpMaat(%v) (%v?1(1"M".E,1"SI".E)) If $$$SPZkOpMaat(arKenm("TBSPZijkant")) { ; Spoelbak zijkant op maat Set arKenm("SpoelbakZkLi")=$P($$$GetKenm("ItemSPZK"),";",2) Set arKenm("SpoelbakZkRe")=$P($$$GetKenm("ItemSPZK"),";",3) Set arKenm("SpoelbakZkMi")=$P($$$GetKenm("ItemSPZK"),";",4) ; SpoelbakBreedte (SPBR) wordt berekend in Prod.BWValuesToProduct() } } ElseIf Klas=##class(DOM.PM.enu.TBXKlas).Sifon() { Set arKenm("SpoelbakZkLi")=$P($$$GetKenm("ItemSPZK"),";",2) Set arKenm("SpoelbakZkRe")=$P($$$GetKenm("ItemSPZK"),";",3) Set arKenm("SpoelbakZkMi")=$P($$$GetKenm("ItemSPZK"),";",4) Set SPBR=##class(BL.PR.GA.TandemBox).CalcBreedteSpoelbak(arKenm("TBSPZijkant"),0,0,DSCode) Set arKenm("SpoelbakBreedte")=SPBR ; deze moet ingevuld zijn voor dubbele sifonlade } If ($L($$$GetKenm("ItemVPK"))) Do . Set arKenm("Verpakking")=$$$GetKenm("ItemVPK") . Do:(##class(BL.PR.GA.TandemBox).NietMeeToepassen(arKenm("Verpakking"))="True")||(arKenm("Verpakking")="xxP") gbtUpdateNMItemsBulk ; Do:(arKenm("Verpakking")?1(1"C",1"P",1"Z",1"A")) gbtUpdateNMItemsBulk Set:($L($$$GetKenm("ItemBGRP"))) arKenm("TBBinnenGreep")=$$$GetKenm("ItemBGRP") Set:('$L($$$GetKenm("ItemBGRP"))) arKenm("TBBinnenGreep")=$S($$$GetKenm("ItemLT")?1(1"D/Z",1"C/Z"):"H",1:"") Set arKenm("TBFrontSteun") =$S($$$GetKenm("ItemFS")="":"A", 1:$$$GetKenm("ItemFS")) Set arKenm("TBMat") =$S($$$GetKenm("ItemASM")="":"0", 1:$$$GetKenm("ItemASM")) Set arKenm("TBDwarsVerdeling")=$$$GetKenm("ItemDWV") Set arKenm("OrgaluxProduct")=$$$GetKenm("ItemOLP") Do gbtExtrasFromGlobal() Quit gbtBTItemsLadeCode(LCodeID) ; Uit LadeCode volgen deze vijf properties: ; TBKlasse - TBGlijderType - TBLadeType - TBZijwand - TBRugHoogte ;New LCode,Key,TBVal Set LCode=##class(Prod.GAMeta.BT.LadeCode).%OpenId(LCodeID) Quit:('LCode) Set Key="" For Set TBVal=LCode.TBKenm.GetNext(.Key) Quit:(Key="") Do . Set arKenm(Key)=TBVal Set LCode="" ; Do LCode.%Close() Quit gbtSetNietMeeItems(pdlNietMee) Quit:(pdlNietMee="") Set lbNietMee="" Set:(pdlNietMee["NMCP" ) lbNietMee=lbNietMee_$LB("NMCorpusProfiel") Set:(pdlNietMee["NMRL" ) lbNietMee=lbNietMee_$LB("NMZijReling") Set:(pdlNietMee["NMAK" ) lbNietMee=lbNietMee_$LB("NMAfdekkap") Set:(pdlNietMee["NMBDS" ) lbNietMee=lbNietMee_$LB("NMBodemsteun") Set:(pdlNietMee["NMBMM" ) lbNietMee=lbNietMee_$LB("NMBlumoMeenemer") Set:(pdlNietMee["NMBMB" ) lbNietMee=lbNietMee_$LB("NMBlumoBehuizing") Set:(pdlNietMee["NMFB" ) lbNietMee=lbNietMee_$LB("NMFBevestiging") Set:(pdlNietMee["NMBS" ) lbNietMee=lbNietMee_$LB("NMBoxSide") Set:(pdlNietMee["NMOVL" ) lbNietMee=lbNietMee_$LB("NMOpvullijst") Set:(pdlNietMee["NMSPDL") lbNietMee=lbNietMee_$LB("NMSPDwarsLatjes") Set:(pdlNietMee["NMASM" ) lbNietMee=lbNietMee_$LB("NMAntislipmat") For i=1:1:$LL(lbNietMee) Set:(1) arKenm($LI(lbNietMee,i))=1 ; WEL Meeleveren ("WM...") Set lbWelMee="" Set:(pdlNietMee["WMCP" ) lbWelMee=lbWelMee_$LB("NMCorpusProfiel") Set:(pdlNietMee["WMRL" ) lbWelMee=lbWelMee_$LB("NMZijReling") Set:(pdlNietMee["WMAK" ) lbWelMee=lbWelMee_$LB("NMAfdekkap") Set:(pdlNietMee["WMBDS" ) lbWelMee=lbWelMee_$LB("NMBodemsteun") Set:(pdlNietMee["WMBMM" ) lbWelMee=lbWelMee_$LB("NMBlumoMeenemer") Set:(pdlNietMee["WMBMB" ) lbWelMee=lbWelMee_$LB("NMBlumoBehuizing") Set:(pdlNietMee["WMFB" ) lbWelMee=lbWelMee_$LB("NMFBevestiging") Set:(pdlNietMee["WMBS" ) lbWelMee=lbWelMee_$LB("NMBoxSide") Set:(pdlNietMee["WMOVL" ) lbWelMee=lbWelMee_$LB("NMOpvullijst") Set:(pdlNietMee["WMSPDL") lbWelMee=lbWelMee_$LB("NMSPDwarsLatjes") Set:(pdlNietMee["WMASM" ) lbWelMee=lbWelMee_$LB("NMAntislipmat") For i=1:1:$LL(lbWelMee) Set arKenm($LI(lbWelMee,i))=0 Quit gbtFBevestNML ; FrontBevestiging Niet MeeLeveren bij Lade (niet Binnenlade) ZONDER FB ! If (arKenm("TBFBevestiging")="NM") || ((arKenm("TBFBevestiging")="Z")&&(arKenm("TBLadeType")'="B")) Do . Set arKenm("TBFBevestiging")="S" . Set arKenm("NMFBevestiging")=1 Quit gbtUpdateNMItemsBulk Set NMKey="NM" For Set NMKey=$O(blTBox.LookUp(NMKey)) Quit:(NMKey'?1"NM".E) Do . Quit:(NMKey?1(1"NMBlumoBehuizing",1"NMAntislipmat")) . ;d WL^vhDBG($S('$D(arKenm(NMKey)):"Set "_NMKey_" =1", 1:"Val at "_NMKey_" is :"_$G(arKenm(NMKey)))) . Set:('$D(arKenm(NMKey))) arKenm(NMKey)=1 ;Do gbtResetNMItemsBinnenlade // de oproep is nu verhuisd naar gbtValueToProduct Quit gbtResetNMItemsBinnenlade ; Binnenlade kan NIET gemonteerd worden zonder Reling, dus NMZijReling terug op 0 zetten If ($G(arKenm("TBLadeType"))="B")&&($G(arKenm("TBBoxSide"))'="ZR") Do ; binnenlade met reling/boxside . Set arKenm("NMZijReling")=0 . Set arKenm("NMBoxSide")=0 Quit gbtExtrasFromGlobal() Quit:($G(sDomVERW)'="VHEPN") ; Only for safety Set:($G($$$GlobalKLData(0,sDomVERW,KLNrProd,"NMAK"))=1) arKenm("NMAfdekkap")=1 ; KLNrProd <--> WS.KLNummer Set:($G($$$GlobalKLData(0,sDomVERW,KLNrProd,"SR"))?1"V") arKenm("TBStalenRug")=$$$GlobalKLData(0,sDomVERW,KLNrProd,"SR") Set:($G($$$GlobalKLData(0,sDomVERW,KLNrProd,"MATKL1239"))="HA")&&($G(arKenm("TBBodemKleur"))="LGS") arKenm("PlaatMat")="HA" ; Bodems Keller gebruiken : "Halux Afgewerkt" i.p.v. "Halux Stroken" Quit ]]> De prijs, korttekst, langtekst, ... van het GAProduct worden gesimuleerd en ingevuld in de offertelijn oLijn:Flow.Offerte.Lijn,GAProd:Prod.GAData.Product,Taal:%String 1 %Status