Transsmart erbjuder kostnadsprognoser baserade på de transportavtal som en kund har med en eller flera transportörer. I takt med att antalet anslutna transportörer har ökat, har även de olika typerna av avtal som används gjort det. För att effektivt kunna beräkna transportkostnader utvecklade vi tariffmotorn. Den här artikeln förklarar hur motorn fungerar och hur kunder kan konfigurera och underhålla sina egna priser.
Sections in this article:
Processbeskrivning
Diagrammet nedan visar hur processen för prisberäkning är uppbyggd.
Schematisk översikt av Transsmarts process för prisberäkning:
Under denna process beräknas eller prognostiseras transportkostnader. Det gör det också möjligt att jämföra prognostiserade kostnader med faktiska kostnader. Eftersom fraktkostnader och tilläggsavgifter visas separat är det möjligt att analysera hela uppdelningen av det totala priset.
Grundläggande konfiguration
Följande tabeller ingår i processen för prisberäkning:
| Previous table name (<2022) | Current table name |
| Client-carrier | Client Carriers |
| Zone Lookup | Zones |
| Weight Determination Lookup | Buy Weights |
| Sales Weight Determination Lookup | Sell Weights |
| Tariff Determination [DEV] | Buy Rates |
| Sales Tariff Determination [DEV] | Sell Rates |
| Sales Margins [DEV] | Sell Margins |
Endast Buy Rates, Sell Rates och Sell Margins kan konfigureras av kunder. Alla andra tabeller kan endast hanteras av en nShift-anställd.
Huvudfokus ligger på tabellen Buy Rates. För att ge en helhetsförståelse av systemet förklaras dock alla tabeller kortfattat i avsnittet Övriga tabeller.
Buy Rates
Tabellen Buy Rates är grunden för tariffmotorn. Till skillnad från den tidigare lösningen, där endast en enda matchande tariff rad användes, utvärderar motorn nu alla tillämpliga rader och summerar dem för att fastställa det slutliga priset. Detta gör det möjligt för regler som definieras på collo-, paket- eller sändningsnivå att alla bidra till beräkningen.
Följande avsnitt förklarar kolumnerna i tabellen Buy Rates, följt av exempel.
| # | Element | Mandatory | Description |
| 1 | Identity | N | Detta fält innehåller postens unika databas-ID. Om du laddar ner befintliga poster kommer det att vara ifyllt. Om du vill ladda upp och skriva över befintliga poster måste detta fält förbli ifyllt. Om du vill lägga till nya rader ska du se till att detta fält är tomt. |
| 2 | customerId | N | I denna kolumn kan alla värden i kundhierarkin användas: customer_id, group_id och organisation_id |
| 3 | costcenter | N | Om ett kostnadsställe har olika priser kan detta konfigureras genom att fylla i denna kolumn |
| 4 | level | Y | Priser kan anges på olika nivåer: COLLO, PACKAGE och SHIPMENT. Beroende på detta värde beräknas priserna på olika sätt. Se nedan för en förklaring av skillnaderna mellan varje nivå |
| 5 | carrier | Y | Transportören måste anges här |
| 6 | serviceLevelTime | N | Serviceleveltime kan anges här om olika priser gäller för olika serviceleveltime-värden |
| 7 | serviceLevelOther | N | Servicelevelother kan anges här om olika priser gäller för olika servicelevelother-värden |
| 8 | packageType | N | Pakettypen kan anges här om olika priser gäller för olika pakettyper |
| 9 | carrierAccountno | N | Transportörens kontonummer kan anges här om olika priser gäller för olika kontonummer |
| 10 | inbound | N | Det kan anges här om priserna gäller för inkommande sändningar. Som standard är detta inställt på ”0”, vilket innebär en utgående sändning |
| 11 | zone | N | Zonen kan anges här om olika priser gäller för olika zoner |
| 12 | minTotalWeight | N | Den minsta totalvikten i KG för den angivna nivån (#3) anges här. Den kan anges med upp till 3 decimaler |
| 13 | maxTotalWeight | N | Den maximala totalvikten i KG för den angivna nivån (#3) anges här. Den kan anges med upp till 3 decimaler |
| 14 | minLength | N | Den minsta längden i CM för varje collo anges här. Vid sändningar med flera colli kontrolleras varje collo separat. Den kan anges med upp till 3 decimaler |
| 15 | maxLength | N | Den maximala längden i CM för varje collo anges här. Vid sändningar med flera colli kontrolleras varje collo separat. Den kan anges med upp till 3 decimaler |
| 16 | minWidth | N | Den minsta bredden i CM för varje collo anges här. Vid sändningar med flera colli kontrolleras varje collo separat. Den kan anges med upp till 3 decimaler |
| 17 | maxWidth | N | Den maximala bredden i CM för varje collo anges här. Vid sändningar med flera colli kontrolleras varje collo separat. Den kan anges med upp till 3 decimaler |
| 18 | minHeight | N | Den minsta höjden i CM för varje collo anges här. Vid sändningar med flera colli kontrolleras varje collo separat. Den kan anges med upp till 3 decimaler |
| 19 | maxHeight | N | Den maximala höjden i CM för varje collo anges här. Vid sändningar med flera colli kontrolleras varje collo separat. Den kan anges med upp till 3 decimaler |
| 20 | minConveyDimension | N | Den minsta dimensionen för nivån (collo, paket, sändning) i CM anges här. Detta beräknas genom att addera längd + 2*bredd + 2*höjd. Den kan anges med upp till 3 decimaler |
| 21 | maxConveyDimension | N | Den maximala dimensionen för nivån (collo, paket, sändning) i CM anges här. Detta beräknas genom att addera längd + 2*bredd + 2*höjd. Den kan anges med upp till 3 decimaler |
| 22 | minLoadmeter | N | Den minsta lastmetern för sändningen, paketet eller collo anges här. Den kan anges med upp till 3 decimaler |
| 23 | maxLoadmeter | N | Den maximala lastmetern för sändningen, paketet eller collo anges här. Den kan anges med upp till 3 decimaler |
| 24 | minVolume | N | Den minsta volymen för nivån (collo, paket, sändning) i CM3 anges här. Vid sändningar med flera colli kontrolleras varje collo separat. Den kan anges med upp till 3 decimaler |
| 25 | maxVolume | N | Den maximala volymen för nivån (collo, paket, sändning) i CM3 anges här. Vid sändningar med flera colli kontrolleras varje collo separat. Den kan anges med upp till 3 decimaler |
| 26 | minValue | N | Det minsta kommersiella värdet för sändningen, paketet eller collo anges här. Den kan anges med upp till 3 decimaler |
| 27 | maxValue | N | Det maximala kommersiella värdet för sändningen, paketet eller collo anges här. Den kan anges med upp till 3 decimaler |
| 28 | colloQuantityFrom | N | Det minsta antalet colli kan anges här |
| 29 | colloQuantityTo | N | Det maximala antalet colli kan anges här |
| 30 | calcType | Y | Metoden som ska användas för att beräkna priset anges här. Se nedan under ”Calculation Type” för ytterligare information |
| 31 | queryType | N | Metoden som ska användas för att beräkna priset anges här. Se nedan under ”Query Type” för ytterligare information |
| 32 | tariffValue | Y | Det faktiska priset anges här. Detta kan vara ett fast pris, en procentsats eller ett KG-pris. Det kan anges med upp till 4 decimaler |
| 33 | currency | Y | Valutan som används anges här |
| 34 | chargeGroup | N | Den avgiftsgrupp som ska användas anges här. Se nedan under ”Charge Group” för ytterligare information |
| 35 | chargeType | N | Den avgiftstyp som ska användas anges här. Se nedan under ”Charge Type” för ytterligare information |
| 36 | boundaryType | N | I detta element kan ytterligare begränsningar anges som behöver beaktas, såsom COLLOWEIGHT, PALLETWEIGHT eller LOADMETER |
| 37 | boundaryMin | N | Om en begränsning anges i element #25 anger denna parameter minimivärdet för denna. Den kan anges med upp till 3 decimaler |
| 38 | boundaryMax | N | Om en begränsning anges i element #25 anger denna parameter maximivärdet för denna. Den kan anges med upp till 3 decimaler |
| 39 | validFrom | Y | Startdatumet för när priset är giltigt anges här |
| 40 | validUntil | Y | Slutdatumet för när priset är giltigt anges här |
Calculation Type
| # | Calculation Type | Level | Description |
| 1 | BASE |
Shipment Collo Package |
Med denna typ anges ett fast pris för den specifika raden. Det kan anges med upp till 4 decimaler |
| 2 | PIECE |
Shipment Collo Package |
Med denna typ anges ett pris per collo. Formeln som används är relevant amount*tariffValue. Det kan anges med upp till 4 decimaler |
| 3 | KG |
Shipment Collo Package |
Detta möjliggör ett pris per KG. Baserat på tabellen Buy Weights används antingen den beräknade vikten eller bruttovikten (den högsta av dessa) och, om inställt, används en avrundningsfaktor. Det är viktigt att sätta queryType till STAFFEL. Denna beräkningstyp leder i regel alltid till flera prisresultat eftersom en skala vanligtvis tillämpas för olika vikter och dessutom läggs ett KG-pris till: om en sändning väger 73,26 kommer det att finnas ett resultat för BASE-prisskalan 70,01 till 9999,00 kg och ett resultat för KG – STAFFEL-raden 70,01 till 9999,00 kg. Formeln som används är tariffValue (euro per kg)*amount kg. Det kan anges med upp till 4 decimaler |
| 4 | PERCENT_VALUE | Shipment | På detta sätt beräknas en procentsats i relation till sändningens kommersiella värde. Metoden för att ange en procentsats är 0,01 motsvarar 1 %. Procentsatsen kan anges med upp till 3 decimaler |
| 5 | PERCENT_SERVICE | Shipment | Denna beräkningstyp använder liknande funktionalitet som PERCENT_VALUE, men då läggs en procentsats av inköpsvärdet till. Ett exempel på denna typ är ett bränsletillägg och/eller ett överstorlekstillägg. Procentsatsen kan anges med upp till 3 decimaler |
| 6 | LOADMETER |
Shipment Package Collo |
På detta sätt används de beräknade lastmetrarna för att fastställa transportkostnaderna. |
| 7 | VOLUME |
Shipment Package Collo |
På detta sätt används den beräknade volymen för att fastställa transportkostnaderna. |
| 8 | MINIMUM |
Shipment Collo Package |
Med denna typ kan ett minimiresultat anges i kombination med den angivna chargeGroup. |
| 9 | MAXIMUM |
Shipment Collo Package |
Med denna typ kan ett maximalt resultat anges i kombination med den angivna chargeGroup. |
| 10 | MIN_PRICE_PIECE | Shipment | Denna beräkningstyp kan användas för att ange ett minimipris för en hel sändning. |
Query Type
Parametern Query Type krävs för att beräkna vissa undantag. Den är som standard inställd på SINGLE, men två andra värden kan också användas:
- OR
- STAFFEL
OR
Använd OR för tilläggsavgifter där en sändning eller collo kontrolleras mot flera gränsvärden, såsom:
- Total weight
- Total length
- Total width
- Total height
- Total convey_dimension
Om något av dessa gränsvärden överskrids tillämpas tilläggsavgiften. Ett exempel på detta är PostNL:s transportbandstillägg.
STAFFEL
Använd STAFFEL för KG-baserade avtal som innehåller flera viktsteg. Detta gör det möjligt att addera flera prisnivåer.
Exempel: DHL Express prisstruktur:
- Grundpris upp till 10 kg
- Ytterligare steg (10–30 kg, 30–70 kg, 70–200 kg, 200–2500 kg)
Med STAFFEL adderas grundpriset och det tillämpliga stegpriset för att ge det slutliga priset.
Charge Group
Det finns två charge groups: SHIPPING och SURCHARGE.
- SHIPPING täcker de grundläggande transportkostnaderna.
- SURCHARGE täcker extra avgifter såsom bränsle, tull eller överstorleksavgifter.
Charge Groups kan specificeras ytterligare med hjälp av Charge Types.
Charge Type
Varje rad i tariffmotorn innehåller också en Charge Type, som anger den exakta kostnadskomponenten. Dessa komponenter hanteras i tabellen Generics .
Hitta ett exempel på tabellen Fuel Rates här.
Övriga tabeller
Client Carriers
Möjliga parametrar i tabellen Client Carriers:
I tabellen Client Carriers definieras kund- och transportörsparametrar. För prisberäkning är följande parametrar relevanta:
SHOWRATES: Avgör vilka priser som visas i onlineplattformen och API:t.
- BUY – visar endast inköpspriser
- SELL – visar endast försäljningspriser
- BUYSELL – visar både inköps- och försäljningspriser
USERATES: Anger om inköpspriser (BUY) eller försäljningspriser (SELL) ska användas vid tillämpning av CHEAPEST-logik (val av det billigaste transportalternativet). Ett av dessa måste väljas.
TARIFFLOOKUP: Definierar källan för prisberäkning.
- ENGINE – använder tariffmotorn (krävs för att tariffmotorn ska fungera)
- NONE – inga priser beräknas
-
CARRIER – hämtar priser direkt från transportören, om tillgängligt
TARIFF_LEVEL: Anger hierarkinivån där inköpspriser (BUY) beräknas. Detta är användbart för kunder med underkontostrukturer och används för att ange på vilken nivå priserna beräknas:
- customer_id
- group_id
-
organisation_id
SALES_TARIFF_LEVEL: Samma funktion som TARIFF_LEVEL, men tillämpad på försäljningspriser.
CALC_SALES_MARGINS: När detta är inställt på ACTUAL aktiveras omberäkning av priser baserat på inköpsfakturor.
Zones
Tabellen Zones fastställer leveranszonen för varje bokning. En zon kan definieras på flera nivåer:
- Carrier
- Customer
- Collection country
- Serviceleveltime
- Servicelevelother
- Cost center
- Eller valfri kombination av dessa
Den resulterande zonen används i prisberäkningen, eftersom olika zoner kan ha olika priser.
Buy Weights
Tabellen Buy Weights definierar vilken vikt som ska användas i prisberäkningen. Eftersom sändningar kan innehålla både tunga och skrymmande varor är bruttovikten inte alltid rätt grund.
När faktorer för volymvikt och/eller lastmetervikt tillämpas beräknar systemet tre typer av vikt – brutto, volym och lastmeter – och använder det högsta värdet.
Tänk på att vissa prisstrukturer (till exempel de som baseras på antal colli) kanske inte är beroende av vikt, så denna tabell påverkar inte alltid beräkningen.
Viktregler kan anges på olika nivåer:
- Carrier
- Customer
- Collection country
- Serviceleveltime
- Servicelevelother
- Cost center
- Packagetype
- Eller kombinationer av dessa
Sell Weights
Tabellen Sell Weights fungerar på samma sätt som Buy Weights men används för försäljningspriser och/eller marginaler.