Do ##class(APPS.common.KlantKost.impl.TransportKostCalculator).%New().BerekenKostenPerKlant(2011,8) Overzicht: http://wiki.vanhoecke.be/ICT_Development/Knowledge_Base/Verkoper_en_Blum_consulent/Klantkosten 1 APPS.common.KlantKost.impl.KostCalculator %ArrayOfObjects %ArrayOfDataTypes %ArrayOfDataTypes %ArrayOfDataTypes DOM.TRANSP.TransportAPI %Integer 100 Eens systeem twee maand in werking is veranderen naar 20 dagen 1 1 %Status 1 Jaar:%Integer,Maand:%Integer 0){ Do ..MaakDoorgerekendKostItem(Klant,Factuur.GeefFactuurDatum(),Factuur.GeefPortKosten(),Factuur.GeefID()) } #dim BonIt As TECH.ListIterator = Factuur.GeefBonIterator() While BonIt.HasNext() { #dim Bon As DOM.VKP.Bon = BonIt.Next() /// Retours niet mee rekenen in transportkosten #dim Verzendwijze As DOM.VKP.enu.VerzendWijze = Bon.GeefVerzendwijze() If (Bon.GeefTotaalAantalProducten() >= 0){ If (Verzendwijze = ##class(DOM.VKP.enu.VerzendWijze).Expediteur()) { /// Onderscheid maken tussen klanten waar kosten per rit worden gerekend. Set FactorRit = ..GeefFactorWaardeRitTransport(Klant.GeefID(),Datum) /// Per rit If (FactorRit '= -1){ Do ..ArrayMetVervoerRefPerRit.SetAt(Datum,Datum) } } If (..TransportApi.IsBulkTransport(Verzendwijze)) { Do ..VulOpBulkTransporten(Klant.GeefID(),Factuur,Bon) } ElseIf (..TransportApi.IsLosTransport(Verzendwijze)){ #dim Transport As DOM.TRANSP.Levering = Bon.GeefLevering() Try{ If $IsObject(Transport) && '..HeeftGLSTransportKostItem(Klant,Bon,Transport){ Do ..UniekTransportenVoorKlant.SetAt(Bon.GeefVerzendwijze(),Transport.GeefCode()) } }Catch (e){ #dim Exception As TECH.Exceptions.Exception = ##class(TECH.ExceptionHandler).Catch() If Exception.ToString() [ "geen GSL Transport KostItem" { Do ##class(vhLib.Logger).%New("TransportKostCalculator").Info("Berekeningen","KlantID: "_Klant.GeefID()_" "_$C(13,10)_Exception.ToString()) }Else{ Do ##class(TECH.ExceptionHandler).Rethrow(Exception) } } }ElseIf (..TransportApi.IsPostTransport(Verzendwijze)){ Do ..MaakPostKostItem(Klant.GeefID(),Datum,Verzendwijze,Bon) } } } }Catch{ Set Exception = ##class(TECH.ExceptionHandler).Catch() Do ##class(vhLib.Logger).%New("TransportKostCalculator").Warning("Berekeningen","KlantID: "_Klant.GeefID()_", FactuurID: "_Factuur.GeefID()_" "_$C(13,10)_Exception.ToString()) } } Do ..VulOpLosTransporten(Klant.GeefID()) Do ..CreeerBulkTransporten(Klant.GeefID()) Do ..CreeerRitTransporten(Klant.GeefID()) Do ..CreeerLosTransporten(Klant.GeefID()) } Catch (Excep){ Set Exception = ##class(TECH.ExceptionHandler).Catch() Do ##class(vhLib.Logger).%New("TransportKostCalculator").Warning("Berekeningen","KlantID: "_Klant.GeefID()_" "_$C(13,10)_Exception.ToString()) } } ]]> Klant:DOM.VKP.VanHoeckeKlant,Bon:DOM.VKP.Bon,Transport:DOM.TRANSP.Levering 1 %Boolean 1 %Date KlantID:DOM.VKP.VanHoeckeKlantID,BonID:%String,LeveringDatum:%Date 1 APPS.common.KlantKost.impl.data.GLSTransportKostItem = ? AND Datum <= ?" #dim ResultSet As %ResultSet = $$ExecDynQuery^vhLib.Query(Query,$LB(KlantNr,BonID,MinDate,MaxDate)) If ResultSet.Next(){ Set GLSItem = ##class(APPS.common.KlantKost.impl.data.GLSTransportKostItem).OpenId(ResultSet.Data("ID")) } Quit GLSItem ]]> PartijID:DOM.common.PartijID 1 OD, OD1, OD2, OD3, OD5 PartijID:DOM.common.PartijID,Factuur:DOM.VKP.Factuur,Bon:DOM.VKP.Bon 1 PartijID:DOM.common.PartijID 1 PartijID:DOM.common.PartijID 1 PartijID:DOM.common.PartijID 1 PartijID:DOM.common.PartijID,Transporteur:DOM.TRANSP.enu.Transporteur,VerpakkingEenheidType:DOM.TRANSP.enu.VerpakkingEenheidType,Datum:%Date,Verzendwijze:DOM.VKP.enu.VerzendWijze,Aantal:%Integer 1 PartijID:DOM.common.PartijID,Datum:%Date,TotaalVerkoopOpDag:%Float,VerzendWijze:DOM.VKP.enu.VerzendWijze,Info:%String 1 0){ Set FactorVast = ..GeefFactorBulkTransport(Datum, VerzendWijze,"Vast") Set FactorProcentVerkoop = ..GeefFactorBulkTransport(Datum, VerzendWijze,"Procent") Set Kost = FactorVast + (TotaalVerkoopOpDag * FactorProcentVerkoop) #dim KlantID As DOM.VKP.VanHoeckeKlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantNummerVoorPartijID(PartijID) Set KostItem = ##class(APPS.common.KlantKost.impl.data.BulkTransportKostItem).%New(Datum,KlantID,Kost,TotaalVerkoopOpDag,VerzendWijze) Do KostItem.Save() } ]]> PartijID:DOM.common.PartijID,Datum:%Date,VervoerRef:%String 1 Klant:DOM.VKP.VanHoeckeKlant,Datum:%Date,Kost:%Double,FactuurID:%String 1 PartijID:DOM.common.PartijID,Datum:%Date,Verzendwijze:DOM.VKP.enu.VerzendWijze,Bon:DOM.VKP.Bon 1 Verwijderen van de kosten van dat specifiek jaar en maand voor alle klanten. Jaar:%Integer,Maand:%Integer PartijID:DOM.common.PartijID,Datum:%Date,Transporteur:DOM.TRANSP.enu.Transporteur,VerpakkingEenheidType:DOM.TRANSP.enu.VerpakkingEenheidType 1 %Double Factor waarde opzoeken voor specifiek land FactorNaam : Colli / Pallet / Rit FactorNaam:%String,Datum:%Date 1 %Float Factor waarde opzoeken voor specifiek land FactorNaam : Colli / Pallet / Rit FactorNaam:%String,Datum:%Date 1 %Float FactorWaarde voor Bulk via TTC opzoeken, SoortKost="Vast","Procent" Datum:%Date,VerzendWijze:DOM.VKP.enu.VerzendWijze,SoortKost:%String %Float PartijID:DOM.common.PartijID,Datum:%Date 1 %Float Datum:%Date,PartijID:DOM.common.PartijID,Verzendwijze:DOM.VKP.enu.VerzendWijze,Gewicht:%Double 1 MeervoudigeFactor:APPS.common.KlantKost.impl.data.MeervoudigeFactor,FactorNaam:%String,Datum:%Date 1 %CacheString