Gå til innholdet

Historikk: NoAs arkitektur og XAL

NoA Ignite designet og bygget løsningen, og frontend står på NoAs rammeverk Adapt.

Denne siden samler det som beskriver løsningen slik den ble designet, før Business Central erstattet XAL. Mye av logikken gjelder fortsatt, men systemnavnene er byttet ut. Rammene om XAL har rød bakgrunn på tavla og er ikke gjeldende.

Kilde: området «NoA - Arkitektur» og rammen «XAL orders». De røde XAL-rammene er ikke lest i detalj.

flowchart LR
    U[Bruker] -- "ber om side" --> FA[Fastly]
    FA --> CF[Cloudflare: gullfunn.no<br/>Svelte og Astro]
    CF --> PA[Pages og frontend-API]
    PA --> DD[Datadog]
    PA --> GA[Google Analytics]
    PA --> AD[Azure AD B2C]
    PA --> CH[Channable]
    PA --> WO[Cloudflare Workers<br/>Adapt API]
    WO <--> OM[Omnium]
    SA[Sanity] --> WO
    WO --> PAY[Klarna, Vipps, nShift]
    PAY <--> OM
    OM --> SA
    OM --> BS[Bluestone]
    OM --> VP[VisionPoint]
    OM --> XAL[XAL]
    OM --> ENG[Voyado Engage]
    OM --> ELE[Voyado Elevate]
    OM --> KI[Kindly]
    OM --> BC[Business Central]
    SA --> ELE
    ELE --> PA
    KI --> PA
    XAL --> BS
    VP --> BS
    SY[Sylvsmidja og andre] --> BS
    BC <--> VP
    BC --> BS

Handlevogn, utsjekk og ordre (NoAs design)

Section titled “Handlevogn, utsjekk og ordre (NoAs design)”

I handlevognen kan kunden legge inn kupong eller rabattkode, og velge mellom Click & Reserve og nettordre. For Click & Reserve velger kunden en butikk med varen på lager. Nettordre går til Klarna Checkout (i dag Kustom Checkout, etter at Kustom kjøpte Klarna Checkout) med mottaker (egen adresse for gaver), fraktmetode fra nShift (hjemlevering, hentested eller henting i butikk) og betaling (Klarna, Vipps eller iGive).

To krav sto åpne. Nettordre over 1 500 kr skulle ikke tillates for hjemlevering, men regelen ble aldri innført. Den henger trolig sammen med problemene med Posten for noen år siden, da mange pakker forsvant, særlig rundt jul, eller med ship from store. Problemet med tapte pakker er i hovedsak borte. Det var også uklart om Omnium støtter iGive. I dag leser Omnium iGive som brukt gavekort, og på nett går iGive via Nets i Kustom Checkout.

Nettordren skulle allokeres til XAL hvis varen var på lager der, og ellers til første butikk med varen. Etter at XAL eller butikken hadde sendt, ble betalingen capturet i Klarna eller Vipps, kunden fikk sporingsnummer, lageret ble oppdatert, og ordren ble synket til VisionPoint og Voyado.

Click & Reserve-ordren skulle synkes til VisionPoint, hentes og betales i butikk, synkes tilbake til Omnium og deretter til Voyado.

Kunden logger inn på Min side og returnerer hele ordren eller enkeltlinjer. Gifteringer og graverte produkter kan ikke returneres. Frakten bookes med myBring som mottakerbestilt retur, og fraktkostnaden trekkes fra refusjonen. Frontend registrerer returen i Omnium med riktig beløp. XAL ble varslet og meldte fra når returen var ferdig, og uten XAL skulle returen håndteres i Omnium. Omnium refunderer via riktig betalingsleverandør.

I butikk henter VisionPoint ordren fra Omnium og starter returflyten der, og oppdaterer lageret i Omnium.

  • Ordre fra nettbutikken synkes til VisionPoint, og ordre fra VisionPoint synkes til Omnium, slik at Omnium har alle ordre.
  • Alle ordre og returer fra Omnium synkes til Voyado.
  • «Retailor API» lager produktfeed til Engage og produkt-, ordre- og innholdsfeed til Elevate. Retailor API er det samme som Adapt API: GraphQL-laget som henter data fra Azure, Omnium og Sanity.

XAL-integrasjonen gikk via XML-filer på Azure Blob Storage (kalt FTP på tavla). Mønsteret ble avviklet sammen med XAL og brukes ikke mot andre systemer.

Hendelse Mekanisme
Produkt aktiveres i Omnium Webhook lager «New Product XML». XAL leser filen og aktiverer produktet
Lager XAL lager XML for aktive produkter med beholdning. XML-API-et oppdaterer lager i Omnium (/api/Inventory/AddMany) på lageret «XAL Warehouse»
Ny nettordre Webhook lager «New order XML». XAL oppretter ordren, booker frakt ut fra Omniums fraktinfo og ferdigstiller
Ordre ferdig XAL lager «Complete order XML» med sporingsnummer. Omnium settes til Completed (/api/Orders/{orderId}/UpdateStatus), capturer betalingen og varsler kunden
Retur Webhook lager «Returned order XML». XAL oppdaterer ordren

«Simplified architecture» viser en eldre versjon uten BC: Logic som produktdatabase, «Lager Kristiansand» (NCs lager) som sender lagerbeholdning til Omnium, og Kustom som checkout.