
Katalogi > Hintataulukot
Määritelmä
Missä sitä käytetään?
- Vuokrahinnastot — määritä
1 päivä 40 €,3 päivää 100 €,1 viikko 180 €ja niin edelleen - Myyntihinnoittelu — aseta listauksen suoramyyntihinta, halutessasi vertailuhinnan kanssa
- Kestotilaussuunnitelmat — määritä sitoutumisjakso, maksujakso ja automaattisen uusimisen rytmi
- Kampanja- ja kausihinnoittelu — liitä lisäksi päivämäärään sidottu hintataulukko, jonka rivit ovat ehdolla sen aikaikkunan sisällä (halvempi kampanjarivi valitaan oletuksen sijaan — katso kohta Hinnan ratkaisu)
- Varianttikohtaiset ohitukset — säädä kutakin hintariviä
rateMultiplier-kertoimella tietyille varianttiarvoille - Massahinnoittelu — ylläpidä yhtä jaettua taulukkoa ja liitä se moneen saman kategorian listaukseen
Hintataulukon malli
API:n palauttama jaettu oletushintataulukko näyttää tältä:catalogItemId on null jaetuissa taulukoissa, joita ei ole sidottu yhteen listaukseen, ja availabilityRange on null aina voimassa olevassa oletustaulukossa.
Yksi hintataulukko sisältää kolme toisistaan riippumatonta rivijoukkoa — varaus-, myynti- ja kestotilausrivit — joita ohjaavat bookingsEnabled, salesEnabled ja subscriptionsEnabled. Poista käytöstä ne tavat, joita et myy, jotta muokkausnäkymä pysyy selkeänä.
Jaettu vs. itsenäinen
link-catalog-item, unlink-catalog-items), jotta listauksella on selkeä tieto siitä, mitkä jaetut taulukot siihen pätevät.
Hintarivityypit
Hintataulukko sisältää kolme rivityyppiä, joista kukin ohjaa eri ostotapaa.Varaushintarivit
Käytetään, kun tilaus on vuokravaraus.Myyntihintarivit
Käytetään suorissa myyntitilauksissa.Kestotilaushintarivit
Käytetään kestotilaustyyppisissä tilauksissa. Katso koko laskutuksen elinkaari kohdasta Kestotilaukset.Varianttikohtainen hinnoittelu
Jos listauksella on variantteja, hintataulukossa voi olla vapaaehtoinenvariants-taulukko CatalogItemVariantPricingTable-merkintöjä. Kukin merkintä sitoo variantName-arvon ja yhden tai useamman values-arvon rateMultiplier-kertoimeen sekä rivikohtaisiin kertoimiin varaus-, myynti- ja kestotilausriveille.
CatalogItemVariantPricingTable-merkinnässä on seuraavat kentät:
basePricingRowId) ja soveltaa rateMultiplier-kerrointa (ja vapaaehtoista additionalRateMultiplier-kerrointa) kyseisen perusrivin hinnan päälle. Kerroin 1.0 vastaa perustasoa; 1.2 lisää 20 %; 0.8 antaa 20 % alennuksen.
Admin merkitsee jokaisen yhdistelmän, jolla on CatalogItemVariantPricingTable-merkintä, tekstillä ”Variant pricing” tekstin ”Base” sijaan.
Aloitettuihin jaksoihin perustuva hinnoittelu
Jokaisella varaushintarivillä ontimeBasis-kenttä, joka määrittää, miten kestoa lasketaan laskutusta varten. Tapoja on kaksi:
Miten ”Alkaen-hinnoittelu” -laskutus toimii
Hinnoittelumoottori tunnistaa jokaisen kalenterijakson, jota varaus koskettaa rivin omalla ruudukolla. Päiväyksikkö on aina keskiyöstä keskiyöhön, tuntiyksikkö tasatunnista tasatuntiin ja viikkoyksikkö alkaa asiakkaan määrittämästä viikon ensimmäisestä päivästä. Jokainen kosketettu jakso laskutetaan yhtenä yksikkönä — ellei hienojakoisempi hinta kata kyseisen jakson varattua osuutta halvemmalla. Moottori valitsee halvimman kelvollisen yhdistelmän rekursiivisesti. Esimerkki — päivä- ja viikkohinnat: 10 päivän varaus, joka alkaa torstaina, päivähinta 50 € ja viikkohinta 250 €:- Torstaista sunnuntaihin: 4 aloitettua päivää = 200 €
- Maanantaista seuraavaan sunnuntaihin: 1 aloitettu viikko = 250 €
- Yhteensä: 450 €
- Maanantai: 1 aloitettu päivä = 100 €
- Tiistai: 1 aloitettu päivä = 100 €
- Yhteensä: 200 € (2 kalenteripäivää)
”Alkaen-hinnoittelu” kiinteän keston paketeissa
Myös kiinteän keston varausrivit tukevattimeBasis-asetusta. Kalenteriin sidottu kiinteä paketti ankkuroi palautuspäivän kalenterijaksoon eikä tarkkaan noutoaikaan.
”2 päivää” -kiinteä paketti, joka noudetaan maanantaina klo 14.00:
- Kulunut aika (
rolling): palautus keskiviikkona klo 14.00 — tasan 48 tuntia myöhemmin - Aloitetut jaksot (
capped): palautus tiistaina viimeisimpään mahdolliseen palautusaikaan mennessä — varaus koskettaa maanantaita ja tiistaita, joten kaksi kalenteripäivää tulee katetuksi
Rajoitukset
- Tuntia lyhyemmät yksiköt laskuttavat aina kuluneen ajan mukaan.
timeBasis-asetus ei vaikuta riveihin, jotka käyttävät yksikköjäsecondstaiminutes. Ne voivat esiintyä vapaasti ”Alkaen-hinnoittelu”-taulukossa. - Kaikki taulukon kertoimeen perustuvat rivit jakavat saman
timeBasis-arvon. Admin valvoo tätä yhdellä ”Alkaen-hinnoittelu”-valintaruudulla, joka koskee kaikkia kelvollisia kertoimeen perustuvia rivejä. Kiinteän keston riveillä on kullakin oma itsenäinentimeBasis-asetuksensa. - Viikkohinnat käyttävät asiakkaan viikon aloituspäivää. Lauantai–sunnuntai-varaus lasketaan yhdeksi viikoksi, kun viikko alkaa maanantaista (molemmat päivät ovat samassa ma–su-viikossa), mutta kahdeksi viikoksi, kun viikko alkaa sunnuntaista.

Kertoimeen perustuva varaushinnoittelu ja Alkaen-hinnoittelu-valintaruutu

Kiinteän hinnoittelurivin kestovaihtoehdot
Hinnan ratkaisu
availabilityRange määrittää, mitkä taulukot ovat ehdolla varaukseen — se ei anna taulukolle etusijaa. Taulukkokohtaista prioriteetti- tai ohituskenttää ei ole. Kun hinta lasketaan:
Kaikki hinnoittelulaskennat suoritetaan sijainnin aikavyöhykkeellä. Päivä- ja viikkorajat, weekdays-rajoitukset ja timeOfDayRange-ikkunat arvioidaan sijainnin paikallisen kellon mukaan — ei UTC:n eikä asiakkaan aikavyöhykkeen. Paikallisen keskiyön tuntumassa oleva varaus kohdistuu oikeaan paikalliseen päivään, ja kesäaikasiirtymät hoidetaan kalenterilaskennalla sijainnin aikavyöhykkeellä.
- Kerää aktiiviset taulukot. Taulukko on aktiivinen, kun sillä ei ole
availabilityRange-arvoa tai sen aikaväli menee päällekkäin varauspäivien kanssa. Oletustaulukko (ei aikaväliä) on siten aina aktiivinen yhdessä minkä tahansa päivämäärään sidotun taulukon kanssa, jonka ikkunaan varaus osuu. - Kokoa rivit. Kaikki aktiivisten taulukoiden käytössä olevat rivit kootaan yhteen ehdokasjoukkoon. Moottori ei valitse ensin yhtä ”voittavaa” taulukkoa — eri taulukoiden rivit kilpailevat suoraan.
- Valitse rivi tai rivit.
- Kertoimeen perustuvat (dynaamiset) varaukset — miten joukko ratkaistaan, riippuu sen rivien aikaperustasta. Katso Kertoimeen perustuva hinnoittelu, jossa kulku on kuvattu kokonaan, sekä Pisin mahtuva rivi vs. halvin kokonaisuus alla — perustat käyttävät aidosti eri algoritmia, ja ero ratkaisee, voiko ylihinnoiteltu pitkä rivi jäädä valitsematta. Molemmissa rivin
weekdays-,timeOfDayRange- jaavailabilityRange-rajoitusten on läpäistävä ennen kuin rivi kelpaa osuudelle, ja loppuosa täytetään lyhyemmillä riveillä ja lisäaikasäännöillä. - Kiinteähintaiset varaukset — asiakas valitsee tietyn hintarivin (esimerkiksi
1 päivä 40 €) ja kyseisen rivin hintaa käytetään sellaisenaan.
- Kertoimeen perustuvat (dynaamiset) varaukset — miten joukko ratkaistaan, riippuu sen rivien aikaperustasta. Katso Kertoimeen perustuva hinnoittelu, jossa kulku on kuvattu kokonaan, sekä Pisin mahtuva rivi vs. halvin kokonaisuus alla — perustat käyttävät aidosti eri algoritmia, ja ero ratkaisee, voiko ylihinnoiteltu pitkä rivi jäädä valitsematta. Molemmissa rivin
- Sovella varianttikertoimia. Jos jokin
CatalogItemVariantPricingTable-merkintä vastaa valittua varianttiarvojen yhdistelmää, kerro rivin osuus rivitason kertoimella (ja taulukkotasonrateMultiplier-kertoimella). - Palauta summat. Päätepisteet
…/rate-based-priceja…/fixed-pricepalauttavatpriceBreakdown-erittelyn sekätotalPrice-summan, jossa kukin osuus on eritelty verkkokauppaa ja tilausyhteenvetoa varten.
Pisin mahtuva rivi vs. halvin kokonaisuus
Kertoimeen perustuva hinnan ratkaisu ei ole yksi algoritmi. Kumpi niistä ajetaan, määräytyy joukossa olevien kertoimeen perustuvien rivien aikaperustan mukaan. Kulunut aika (rolling, oletus) — pisin mahtuva ensin. Moottori kulkee varauksen läpi sen alusta. Joka askeleella se ottaa pisimmän rivin, joka vielä mahtuu jäljellä olevaan aikaan, etenee kyseisen rivin keston verran ja toistaa. Hinta ratkaisee vain saman kestoisten rivien välisen tasatilanteen. Moottori ei koskaan vertaa pitkää riviä lyhyempien rivien kokonaisuuteen, joten:
- Viikkorivi voittaa seitsemän päivän varauksen hinnasta riippumatta — vaikka se olisi hinnoiteltu seitsemää päiväriviä kalliimmaksi.
- Kaksi 1 päivän riviä hintaan 100 € ja 150 € ratkeavat 100 euroon, koska niillä on sama kesto.
- 1 päivän rivi hintaan 150 € ja 12 tunnin rivi hintaan 10 € ratkeavat päiväriviin, koska se on pidempi.
capped) — halvin kokonaisuus. Moottori käsittelee sen sijaan kalenterijaksoja. Jokaisesta varauksen koskettamasta jaksosta se laskuttaa joko yhden kyseisen jakson yksikön tai varatun osuuden halvemman hienojakoisemman kokonaisuuden — kumpi tulee halvemmaksi — ja vertaa vaihtoehtoja rekursiivisesti taulukon kaikilla tarkkuustasoilla.
Täällä hinta ratkaisee myös kestojen välillä: seitsemää aloitettua päivää kalliimmaksi hinnoiteltu viikkorivi häviää päiväriveille.
Taulukoiden soveltaminen listauksiin ja kokoelmiin
Jaettu hintataulukko liitetään listaukseen omilla päätepisteillään:POST /pricing-tables/pricing-table/:pricingTableId/link-catalog-item— liitä yksi listausDELETE /pricing-tables/pricing-table/:pricingTableId/unlink-catalog-items— poista liitokset kerrallaPOST /pricing-tables/add-pricing-table-to-catalog-item— erotteleva unioni neljälle liitostavalle:mode = 'link'— liitä olemassa olevaan jaettuun taulukkoonmode = 'create'— luo uusi itsenäinen taulukko suoraanmode = 'sharedToShared'— korvaa yksi jaettu liitos toisellamode = 'sharedToStandalone'— haaroita jaettu taulukko itsenäiseksi listauksellamode = 'standaloneToShared'/'standaloneUpdate'— vaihda omistajuutta tai nimeä paikallaan
listCatalogItems ja liittämällä taulukko kuhunkin listaukseen.
Keskeiset ominaisuudet (hintataulukko)
Suhteet
Liitetty yhteen tai useampaan listaukseen
Liitetty yhteen tai useampaan listaukseen
Sisältää varaus-, myynti- ja kestotilausrivit
Sisältää varaus-, myynti- ja kestotilausrivit
Lisää varianttihinnoittelun listauksen varianttien päälle
Lisää varianttihinnoittelun listauksen varianttien päälle
Arvioidaan listauksen ostotapaa vasten kassalla
Arvioidaan listauksen ostotapaa vasten kassalla
…/rate-based-price tai …/fixed-price loppusumman laskemiseksi.Elinkaari
Luonti
POST /pricing-tables/ kentällä label ja (jaetuissa taulukoissa) isDefault: true. Uudet taulukot alkavat tyhjillä rivitaulukoilla.Itsenäinen vai jaettu?
Itsenäinen vai jaettu?
Voinko tehdä päivämäärään sidotusta taulukosta oletuksen?
Voinko tehdä päivämäärään sidotusta taulukosta oletuksen?
availabilityRange = null, voivat olla isDefault = true (Adminin käyttöliittymä valvoo tätä; malli sallii merkinnän, mutta liitoslogiikka ohittaa päivämäärään sidotut taulukot oletusta ratkaistessaan).Rivien lisäys
/pricing-table/:id/row, …/sales-row, …/subscription-row). Lisää varianttikohtaisia ohituksia päätepisteellä /pricing-table/:id/variant-pricing-table.Liittäminen listaukseen
add-pricing-table-to-catalog-item oikealla mode-arvolla. Listauksen Hinnoittelu-välilehti näyttää liitetyt taulukot sivupalkissa ja antaa luoda uusia suoraan.Varianttikohtainen ohitus
CatalogItemVariantPricingTable-lohko niille varianttiarvoille, jotka tarvitsevat eri hinnoittelun.Kampanjointi tai korvaaminen
Poisto
DELETE /pricing-tables/delete-table/:pricingTableId. Jaetun taulukon poistaminen irrottaa sen jokaisesta listauksesta.Usein kysytyt kysymykset
Voiko yhdellä listauksella olla useita hintataulukoita?
Voiko yhdellä listauksella olla useita hintataulukoita?
availabilityRange päättää, mitkä taulukot ovat ehdolla, ei sitä, kumpi voittaa.Mistä vuokra-ajan hinta tulee?
Mistä vuokra-ajan hinta tulee?
Miten toteutan 20 %:n viikonloppukampanjan?
Miten toteutan 20 %:n viikonloppukampanjan?
availabilityRange kattaa viikonlopun ja jonka rivit on hinnoiteltu 20 % oletusta halvemmiksi, ja liitä se kyseisiin listauksiin. Koska kampanjarivit ovat halvempia ja kattavat samat kestot, moottori valitsee ne ikkunan sisällä ja palaa sen jälkeen oletukseen.Tämä toimii nimenomaan siksi, että kampanja on halvempi — katso seuraavasta kysymyksestä korkeampi hinnoittelu.Miksi korkeampi kausi- tai juhlapyhähintani ei mene läpi?
Miksi korkeampi kausi- tai juhlapyhähintani ei mene läpi?
availabilityRange sulkemaan nuo päivät pois, jotta vain korkeampi rivi kattaa ne.Mikä ero on rolling-hinnoittelulla ja Alkaen-hinnoittelulla?
Mikä ero on rolling-hinnoittelulla ja Alkaen-hinnoittelulla?
capped) laskee jokaisen varauksen koskettaman kalenterijakson. ”Päivä” on keskiyöstä keskiyöhön. Sama varaus maanantaista klo 14.00 keskiviikkoon klo 14.00 koskettaa maanantaita, tiistaita ja keskiviikkoa — 3 aloitettua päivää.Käytä ”Alkaen-hinnoittelu”-tapaa, kun veloitat kalenteripäivittäin (kuten pysäköintihallit tai hotelliyöt). Käytä rolling-tapaa, kun veloitat tarkan kuluneen ajan mukaan (kuten tuntipohjaisessa laitevuokrauksessa).Voivatko hinnat vaihdella asiakassegmentin mukaan?
Voivatko hinnat vaihdella asiakassegmentin mukaan?
Mitä aikavyöhykettä hinnoittelumoottori käyttää?
Mitä aikavyöhykettä hinnoittelumoottori käyttää?
Hinnoitellaanko olemassa olevat tilaukset uudelleen, kun muokkaan taulukkoa?
Hinnoitellaanko olemassa olevat tilaukset uudelleen, kun muokkaan taulukkoa?
Mikä ero on vastauksen kentillä priceContribution ja totalPrice?
Mikä ero on vastauksen kentillä priceContribution ja totalPrice?
priceContribution on se, mitä yksi rivi lisäsi summaan; totalPrice on kaikkien moottorin valitsemien rivien summa (perusrivi + lisäaikarivit + varianttikertoimet).Kehittäjän viite
Hintataulukot näkyvät API:ssa nimelläpricing-tables.