BL.EC.Common 1 %RegisteredObject 0 Zie method CalcOfferteMatrix() Geeft als resultaat van de berekening de NettoPrijs terug. 1 TemplateLijn:%String,pdlItems:%String,pdlItemValues:%String,ForceNoSa:%String %String arMatrix("IN","Dim")=$LB(Dim1,Dim2,Dim3) ; moet steeds 3 dimensies zijn (uitbreidbaar indien routine recursief) arMatrix("IN","Prm",Dim1,"Val")=$LB(,,...,) ; values in $LB() arMatrix("IN","Prm",Dim2,"Val")=$LB(,,...,) ; values in $LB() arMatrix("IN","Prm",Dim3,"Val")=$LB(,,...,) ; values in $LB() OF (directe lijst): arMatrix("IN","LST",1,"ItemLT")=D arMatrix("IN","LST",1,"ItemBX")=DR arMatrix("IN","LST",1,"ItemDK")=80 arMatrix("IN","LST",2,"ItemLT")=M/Z arMatrix("IN","LST",2,"ItemBX")=ZR arMatrix("IN","LST",2,"ItemDK")=50 Oproepen via: w ##class(BL.EC.EDI).CalcOfferteMatrix(oLijn,.arMatrix,$G(FileN)) d ArrayToTextWF^vhLib("arMatrix(""OUT"",""PRM"")","c:\Temp\TBox Neves calcMatrix.txt") d ArrayToTabDelim^vhLib(.arMatrix,"c:\Temp\TBox Neves calcMatrix002.txt")]]> 1 %Status calculation . Do %blFlowOfferte.SimulateLijn(oLijn,"N") ; ..SimulateAll() . d:($L(oLijn.Status)) WL^vhDBG("oLijn.Status = "_$$$LCVT(oLijn.Status)) . ; Get Prijs and store into array . Set arMatrix("OUT","LST",lnI,"Prijs")=oLijn.NettoEPrijs . Set:($D(arDim)) arMatrix("OUT","PRM",arListItem(arDim(1)),arListItem(arDim(2)),arListItem(arDim(3)))=oLijn.NettoEPrijs . Set:($D(arDim)) arMatrix("OUT","DBG",arListItem(arDim(1)),arListItem(arDim(2)),arListItem(arDim(3)))=$LB(lnI,oLijn.NettoEPrijs) . w !,$J(lnI,2)_". "_"Prijs = "_oLijn.NettoEPrijs,! ;d WL^vhDBG($$ArrayToText^vhLib("arMatrix",.arMatrix)) Do:($L($G(FilePath))) comOutputToFile() Quit $$$OK comOutputToFile() ;New arConfig Set FilePath=$G(FilePath,"c:\Temp\TBox calcMatrix001.txt") Kill arMtrx ;Merge arMtrx("PRM")=arMatrix("OUT","PRM") Merge arMtrx("DBG")=arMatrix("OUT","DBG") Set arConfig("HDR"," ","LT","LD","CB")=$LB("i","Prs") Set arConfig("REF")="Mtrx" d ArrayToTabDelim^vhLib(.arMtrx,FilePath,,.arConfig) Quit comClearOffData() Do oLijn.GenerischProductSetObjectId("") Set oLijn.NettoEPrijs="" Set oLijn.BrutoEPrijs="" Set oLijn.Korting1="" Set oLijn.Korting2="" Set oLijn.GrootteOrde="" Do oLijn.Kenmerken.RemoveAt("PPL") Set oLijn.KortTekst="" Set oLijn.LangTekst="" Quit comSetCustomKenm() ; Hier kunnen specifieke kenmerken (uitzonderingen) toegevoegd/gewijzigd worden: ; Enkel te gebruiken wanneer de regels niet via arMatrix("IN","Prm",...,"Xtra") kunnen vastgelegd worden. ; Zie ook "comListAddExtraKM(,)" // Voorbeeld: ;Set arListItem("ItemXX")="???" Quit comSetParamValues() Set (km,km2)="" For Set km=$O(arListItem(km)) Quit:(km="") Do:($D(arListItem(km))) . Do oLijn.Kenmerken.SetAt(arListItem(km), km) . For Set km2=$O(arListItem(km,"X",km2)) Quit:(km2="") Do:($D(arListItem(km,"X",km2))) .. Do oLijn.Kenmerken.SetAt(arListItem(km,"X",km2), km2) Quit comSetMatrixDfl() Do comSetMatrixDfl^BL.EC.EDI.tmpDev(.arMatrix) /* // Example : // ========= // KLANT 4485 - NEVES Set arMatrix("IN","Dim")=$LB("ItemLT","ItemLD","ItemCB") ; !!! VOLGORDE is BELANGRIJK voor de matrix !!! ; LadeType Set arMatrix("IN","Prm","ItemLT","Val")=$LB("M") ; $LB("M","D") ; $LB("M","D") Set arMatrix("IN","Prm","ItemLT","Xtra","D","ItemBX")="ER" ; LadeDiepte Set arMatrix("IN","Prm","ItemLD","Val")=$LB(450,500,600) ; $LB(270,350,400,450,500,600) Set arMatrix("IN","Prm","ItemLD","Xtra",600,"ItemDK")=50 ; CorpusBreedte Set arMatrix("IN","Prm","ItemCB","Val")=$LB(250,300,900) ; $LB(250,300,350,400,450,500,550,600,650,700,750,800,850,900) Quit */ comMatrixToList() Kill arList Kill tmpAr Set (i,j,k)="" ;Set lbDims=arMatrix("IN","Dim") ;Set Dim1=$LI(lbDims,1) ;Set Dim2=$LI(lbDims,2) ;Set Dim3=$LI(lbDims,3) Set Dim1=arDim(1) Set Dim2=arDim(2) Set Dim3=arDim(3) Set lbDimV1=arMatrix("IN","Prm",Dim1,"Val") Set lbDimV2=arMatrix("IN","Prm",Dim2,"Val") Set lbDimV3=arMatrix("IN","Prm",Dim3,"Val") For i=1:1:$LL(lbDimV1) Do . Set tmpAr(Dim1)=$LG(lbDimV1,i) . Do comListAddExtraKM(Dim1,$LG(lbDimV1,i)) . For j=1:1:$LL(lbDimV2) Do . . Set tmpAr(Dim2)=$LG(lbDimV2,j) . . Do comListAddExtraKM(Dim2,$LG(lbDimV2,j)) . . For k=1:1:$LL(lbDimV3) Do . . . Set tmpAr(Dim3)=$LG(lbDimV3,k) . . . Do comListAddExtraKM(Dim3,$LG(lbDimV3,k)) . . . Merge arList($Increment(arList))=tmpAr ;d WL^vhDBG($$$ArrayTT("arList",.arList)) Merge arMatrix("IN","LST")=arList Quit comListAddExtraKM(pDim,KMVal) Kill arXtra(pDim) Kill tmpAr(pDim,"X") Quit:('$D(arMatrix("IN","Prm",pDim,"Xtra",KMVal))) Set km="" For Set km=$O(arMatrix("IN","Prm",pDim,"Xtra",KMVal,km)) Quit:(km="") Do . ; Indien km een evalute is, moet EXEC^vhRes opgeroepen worden . Set tmpAr(pDim,"X",km)=arMatrix("IN","Prm",pDim,"Xtra",KMVal,km) Quit ]]> Bepaalt het leveringsadres voor dit WSOrder. Dit door te vergelijken met gekende adres(sen) van de klant (KLNr). Geeft Adres of "" (leeg) terug. 1 WSOrd:WS.TBX.Order,KLNr:%String Flow.Offerte.Adres Omzetten van WSOrder data naar Offerte.Hoofding+Lijnen Geeft als resultaat offerte hoofding terug. De Kenmerken en enkele properties zijn reeds ingevuld, maar de producten (GAData+KPR) zijn nog NIET berekend. 1 FromServer,WSOrdID Flow.Offerte.Hoofding WSOrd) ;d WLIP^vhDBG(97,"WSOrd "_$G(WSOrd)) Quit:('$IsObject(WSOrd)) "" $$$blFlowOfferte Set KLNr=$$wsoKLNrFromOrder(.sDomVERW) Set oHfd=%blFlowOfferte.Create() ; incl ID toekennen Set oHfd.Oorsprong="TBX" Set oHfd.CreatieTijdStip=$S($$$Trim(WSOrd.SubmitTS)="":$H, 1:$ZDTH(WSOrd.SubmitTS,3)) ;Set oHfd.Datum=$H Set oHfd.Referentie=$S($G(sDomVERW)="":"ERROR !!! ", sDomVERW="HFLE":$$$KLNaamHFLE, sDomVERW'="VHEPN":WSOrd.KLNaam, 1:WSOrd.Commissie) Set oHfd.CommReferentie=$S($G(sDomVERW)="":"ERROR !!! ", sDomVERW'="VHEPN":WSOrd.Commissie, 1:"") Set oHfd.Commentaar=$$wsoCommentFromOrder Do oHfd.KlantSetObjectId(KLNr) ; controle op KLNr ??? Set oHfd.LeveringsAdres=$S(sDomVERW="VHEPN":..SelectAdresFromWS(WSOrd,KLNr), 1:"") Set sc=%blFlowOfferte.Save() ; oHfd.%Save() ;d WL^vhDBG("OffHoofd saved: "_$$ParseStatus^vhLib(sc)) Quit:($$$ISERR(sc)) "" Do wsoConvertWSOrdToArray Set arData("KLT","KLNummer")=KLNr ; oHfd.KlantGetObjectId() ; Build Lijnen Set i="" For Set WSLn=WSOrd.Lijnen.GetNext(.i) Quit:(i="") Do Quit:($$$ISERR(sc)) . Do wsoConvertWSLijnToArray . Set Qty=$G(arData("LN","AANT")) . Set oLijn=%blFlowOfferte.InsertLijnAfgeleidProduct(,,"TBX",+Qty,.arData) . Set:('$IsObject(oLijn)) sc=$$$ERROR($$$GeneralError,"oLijn not created") . Quit:($$$ISERR(sc)) . Set oLijn.Hoofding=oHfd . Set sc=oLijn.%Save() Set:('$$$ISERR(sc)) sc=%blFlowOfferte.Save() If $$$ISERR(sc) Do . ;Set Status=$$$errCreateWithText(..#errNoSave,$$ParseStatus^vhLib(sc)) . Set oHfd="" . Set OffID="" Else Do . Set OffID=oHfd.%Id() Quit oHfd ; OffID wsoOpenWSOrder If FromServer="WWW" Do . ; Call WebService to retrieve WSOrder . Set WSOrd="" Else Do . ; retrieve from local namespace . If $IsObject(WSOrdID) Do Quit .. Set WSOrd=WSOrdID . Else Do .. Set WSOrd=##class(WS.TBX.Order).%OpenId(WSOrdID) Quit wsoKLNrFromOrder(sDomVERW) ; sDomVERW als .local doorgeven Set lbDomLU=##class(WS.TBX.Order).DomainLookUp(WSOrd.WebDomain,$LB("VERW","KLNR")) Set sDomVERW=$LG(lbDomLU,1) Set sDomKLNr=$LG(lbDomLU,2) Quit +$S(sDomVERW'="VHEPN":sDomKLNr, 1:WSOrd.KLNummer) wsoCommentFromOrder() ; Extract EDI ref via volgende lijn: ; w EDIRef=$$$TextBetween(oHfd.Commentaar,"TBX-EDI-nr: ",$$$CRLF) Set txt="Levertijd: "_WSOrd.LeverTijd Set txt=txt_$$$CRLF_"TBX-EDI-nr: "_WSOrd.OrderNr ; $S($L(WSOrd.%Id()):WSOrd.%Id(), 1:WSOrd.mID) Set:($L(WSOrd.Opmerking1)) txt=txt_$$$CRLF_"Opmerking: "_$$$CRLF_WSOrd.Opmerking1_$$$CRLF Set KL=oHfd.Klant Quit:('$IsObject(KL)) txt ;Set:($D(arCmp)) txt=txt_$$$CRLF_"KlantData" Set:(WSOrd.KLStraatNrBus'=KL.StraatNrBus) txt=txt_$$$CRLF_"Straat: "_WSOrd.KLStraatNrBus Set:(WSOrd.PostNr'=KL.Postnummer ) txt=txt_$$$CRLF_"PostNr: "_WSOrd.KLPostNr Set:(WSOrd.WoonPlaats'=KL.Woonplaats ) txt=txt_$$$CRLF_"WoonPlaats: "_WSOrd.KLWoonPlaats Set:(WSOrd.Telefoon'=KL.Telefoon1 ) txt=txt_$$$CRLF_"Telefoon: "_WSOrd.KLTelefoon Set:(WSOrd.Fax'=KL.Telefax ) txt=txt_$$$CRLF_"Fax: "_WSOrd.KLFax Set:(WSOrd.EMail'=KL.EmailAdres ) txt=txt_$$$CRLF_"EMail: "_WSOrd.KLEMail Kill KL Quit txt wsoConvertWSOrdToArray Kill arData ; Start with clean array Do WSOrd.DataArrayFromWS(.arData,0) Quit wsoConvertWSLijnToArray Kill arData("LN") ; kill data from previous Lijn(en) Do WSLn.DataArrayFromWSLn(.tmpAr) Merge arData("LN")=tmpAr Quit ]]> Ophalen van de edi bestanden op de shared van de gebruiker 1 KlantNr 0 Controle: Is dit een file voor deze klant? 1 Rec 0 %Library.CacheStorage ^BL.EC.EDID EDIDefaultData ^BL.EC.EDID ^BL.EC.EDII ^BL.EC.EDIS listnode %%CLASSNAME