STRAN.SI

B2B katalog z atributi in pod-artikli

Iz prakse: Lontech.si – kako strukturirati izdelke z atributi (velikost, barva, moč) in pod-artikli s svojimi SKU.

← Vsi članki
Trgovine 9 min branja

Iz prakse: Lontech.si – kako strukturirati izdelke z atributi (velikost, barva, moč).

Problem: B2C katalog ne deluje za B2B

Klasični B2C katalog ima izdelek = ena vrstica v bazi. "Majica srednje rdeča" je en izdelek. Pri B2B distribuciji to ne deluje: en izdelek ima lahko 50 variant po velikosti, barvi, napetosti, materialu, vrsti certifikata. Vsaka kombinacija ima drug SKU, drugo zalogo, drugo ceno.

Pri Lontech.si (SIBO distribucija) smo gradili katalog z 5.000+ izdelki, kjer ima 60 % izdelkov 3–20 atributnih variant.

Arhitektura: izdelek + atributi + pod-artikli

Tabela `izdelki` (master)

id, ime, opis, kategorija_id, slika, brand_id, ...

Tabela `atributi` (definicije)

id, ime ("Velikost", "Barva", "Napetost"), tip (select, text, range)

Tabela `atributne_vrednosti`

id, atribut_id, vrednost ("XS", "S", "M", "L", "XL")

Tabela `pod_artikli` (variante)

id, izdelek_id, sku, cena, zaloga, dobaviteljska_koda

Tabela `pod_artikel_atributi`

pod_artikel_id, atributna_vrednost_id

Primer: tehnični izdelek

Recimo "Stikalo TIP A":

  • Izdelek: Stikalo TIP A
  • Atributi: Napetost (230V / 400V), Tok (10A / 16A / 25A), Število polov (1 / 2 / 3 / 4)
  • Pod-artikli: 2 × 3 × 4 = 24 variant. Vsak ima svoj SKU, zalogo, ceno.

Filtri v frontend-u

Uporabnik išče stikalo. Filtre lahko nastavi:

  • Napetost: ☑ 230V ☐ 400V
  • Tok: ☐ 10A ☑ 16A ☐ 25A
  • Število polov: ☑ 2 ☑ 3

Sistem vrne pod-artikle, ki ustrezajo VSEM kriterijem (intersection).

SQL query za filtriranje

SELECT DISTINCT pa.izdelek_id
FROM pod_artikli pa
INNER JOIN pod_artikel_atributi paa1 ON pa.id = paa1.pod_artikel_id
INNER JOIN pod_artikel_atributi paa2 ON pa.id = paa2.pod_artikel_id
WHERE paa1.atributna_vrednost_id IN (1, 2)  -- 230V (Napetost)
  AND paa2.atributna_vrednost_id IN (5)     -- 16A (Tok)
  AND pa.zaloga > 0;

Pri 5.000 izdelkih in 50.000 pod-artiklih takšen query mora biti optimiziran s pravilnimi indeksi.

B2B prijavna logika

V B2B katalogu pogosto:

  • Cene niso vidne brez prijave
  • Vsak B2B partner ima lasten cenik (popust po skupini ali individualno)
  • Naročilo gre v ERP kot predračun, ne kot avtomatska prodaja
  • Plačilo je po pogodbi (30 / 60 / 90 dnevni rok), ne kartično

Realne implementacije

  • Lontech.si: SIBO distribucija, atributni filtri, pod-artikli, ceniki po B2B skupini.
  • Akvonij.si: izdelki z atributi, lastnostmi, energijskimi nalepkami.
  • Shoppster.si / ideo.si: 30+ dobaviteljev, vsak s svojimi atributi.

Konkretni izzivi

1. Različen atributni nabor po kategoriji

Stikalo ima atribut "Napetost", majica ne. Hladilnik ima "Energijski razred", obleka ne. Atributi morajo biti povezani s kategorijo, ne globalno.

2. Sinonimi v vrednostih

Dobavitelj A piše "rdeča", dobavitelj B "rdec", dobavitelj C "RED". Sistem mora ti tri vrednosti obravnavati kot iste. Rešitev: tabela `atributne_vrednosti_sinonimi`.

3. Mejne vrednosti pri range filtrih

Pri filtru "Cena od – do" mora UI dovoliti drsnik z razumnimi koraki (5 €, 10 €, 50 €), ne le numerični input.

4. Performance pri velikih katalogih

Pri 50.000 pod-artiklih in kompleksnih filtrih SQL query lahko traja 2+ sekunde. Rešitev: pre-computed materialized views, Redis cache za pogoste filtre, Elasticsearch / Algolia za full-text iskanje.

Zaključek

B2B katalog z atributi in pod-artikli je arhitekturno bolj kompleksen kot B2C katalog, vendar je za distribucijska podjetja edina prava izbira. Brez te strukture se hitro znajdete v "trgovini s podvojenimi izdelki", kjer vsak SKU ima svoj produkt zapis – kar je nevzdržno pri 5.000+ izdelkih.

Imate vprašanje glede članka ali konkretnega primera?

Pošljite kratek opis svojega primera. Odgovorimo z realno usmeritvijo – tudi če ne potrebujete naših storitev.

Pokliči Povpraševanje