---
title: "Lagerhantering i webbshop"
type: "forum-thread"
url: "https://www.webforum.nu/amne/webbutveckling/183760-lagerhantering-i-webbshop"
topic: "Webbutveckling"
topic_url: "https://www.webforum.nu/amne/webbutveckling"
author: "MickeA.com"
published: "2010-06-10T08:41:12.000Z"
updated: "2010-07-18T18:21:05.000Z"
replies: 18
views: 983
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/webbutveckling/183760-lagerhantering-i-webbshop"
---

# Lagerhantering i webbshop

## #1 — MickeA.com, 2010-06-10T08:41Z

Tjena

Sitter och planerar lite inför en webbshop som jag ska bygga. Shoppen ska inkludera lagersaldo. Om saldot är \<= 0 så ska produkten inte gå att köpa. Det finns dock ett undantag, en produkt kan markeras/taggas som beställningsvara och då ska lagersaldot kunna vara negativt.

Hur löser man det här på bästa sätt? Har funderat fram och tilllbaka och tänker mig en extra tabell som innehåller:

```
ProduktId (INT)
Saldo (INT)
Uppdaterad (DATETIME)
```

När man är inne på en produkt så kollar man mot lagertabellen och räknar fram aktuellt lagersaldo med hjälp av *Saldo - (alla ordrar som innehåller produkten där orderdatum \>= datum för senaste saldouppd.)*.

Eller finns det andra, bättre sätt att hantera det här?

Tacksam för förslag!

Permalänk: https://www.webforum.nu/p/183760

## #2 — erciz, 2010-06-10T11:21Z

Som jag har förstått så är det bokföringsmässigt att föredra att man gör ett FIFO (First In-First Out) lager för att få rätt lagervärdering. Det är riktigt **svårt** databasmässigt att implementera.

Te.x. för en artikel, priset är varukostnaden.

```
Inköp 3st 75kr/st
Försäljning 2st 75kr/st
Inköp 3st 80kr/st
Försäljning 1st 75kr/st
Försäljning 1st 80kr/st
```

Och skulle andra försäljningen vara på 2st så ska ju lagervärdet minska med 75+80=155kr.

Tyvärr har jag inget bra förslag på data modell för det här problemet.

Permalänk: https://www.webforum.nu/p/2239908

## #3 — rhdf, 2010-06-10T11:25Z

på en av shopparna jag byggt så har jag nåt liknande ditt förslag
jag lagrar dock lagersaldo i produkt-tabellen (databasen såg ut så när jag fick ta över projektet) Sen när något läggs i varukorgen så "reserveras" ett exemplar. Detta genom att jag helt enkelt räknar ihop "antal i varukorg"+"antal i ej skickade orders"
Att jag räknar in varukorg(ar) beror på att vissa saker finns det ytterst få av och man vill slippa att 4 kunder lyckas beställa det sista exemplaret.

När man sen bekräftar en order så räknas lagersaldot om.

Problemet är spårbarhet, dvs OM det blir fel så är det lite knepigt att se när lagersaldot börjar skeva. Så man skulle kunna ha en tabell som håller ordning på alla butikens uppdateringar av saldot (påfyllning/justering)

Permalänk: https://www.webforum.nu/p/2239911

## #4 — erciz, 2010-06-10T11:49Z

Man kanske kan göra så att man har en tabell Inleverans, där man håller koll på leveranstyp (inleverans eller justering), har ett inleverans_id för att koppla artikeln till en inleverans, sen kör man en kolumn med order_id, med id till den order eller justering där artikeln är förbrukad. För att få lagersaldot blir det nåt liknande: 

```
SELECT COUNT(OrderId IS NULL) AS Aaldo FROM Inleverans WHERE ArtikelId = $id
```

Då har man full spårbarhet.

Såhär skulle tabellen Inleverans kunna se ut:

```
Id | ArtikelId | LeveransId | LeveransTyp | OrderId | OrderTyp
=============================================================
 1 |      4    |      6      |  Inköp      |    37   | Försäljning
 2 |      4    |      6      |  Inköp      |    2    | Justering
 3 |      5    |      2      |  Justering  |    38   | Försäljning
```

Fast det blir många rader då det behövs, en ny rad för varje artikel, ingen kolumn för antal alltså.

Permalänk: https://www.webforum.nu/p/2239916

## #5 — MickeA.com, 2010-06-12T11:25Z

Jag lyckas inte förstå eller komma på hur jag ska lösa det här. Vill ju hålla det enkelt, men samtidigt måste det fungera på ett bra sätt. Jag tror att jag kör på något liknande rhdf's lösning, där jag kör saldo i produkttabellen.

Permalänk: https://www.webforum.nu/p/2240243

## #6 — MickeA.com, 2010-07-18T13:50Z

Har dykt på en liten issue nu mitt i arbetet. Jag har gjort så att man kan definera ett antal egenskaper (t.ex. XL, L, M, resp. Grön, Röd, Gul osv.) som man sedan kan koppla till varje produkt.

Nu behöver jag kunna hålla koll på lagersaldo för en enskild grundprodukt+egenskap. Det kan ju vara så att "T-shirt grön" kan finnas i 3 exemplar av Medium, 2 ex i Large osv. Hur löser jag det? Det lättaste bör ju vara att det skapas en artikel för varje grundprodukt+egenskap. Låt säg att man lägger upp en produkt som heter "T-Shirt Röd" som får artikelnummer "123456". Bockar man sedan i att den finns i storlekarna S, M, L så skapas produkterna "123456-1" , "123456-2", "123456-3".

På så sätt kan man då föra lager över varje enskild egenskap. Men hur löser jag det här på bästa sätt rent administrativt? Känner jag att målat in mig i ett hörn och kommer inte riktigt vidare i brist på idéer.

Tack!

Permalänk: https://www.webforum.nu/p/2243424

## #7 — erciz, 2010-07-18T14:10Z

Ja, det borde väl inte vara några problem att lägga in dem som olika artiklar. Förstår inte Vad det blir för problem rent administrativt, borde väl gå bra?

Permalänk: https://www.webforum.nu/p/2243429

## #8 — MickeA.com, 2010-07-18T14:24Z

Jo, jag är med på ungefär hur jag bör göra. Säg att man lägger till "T-Shirt Röd". Man anger ett pris, lagersaldo, osv. 

Sen bockar man i vilka storlekar som ska finnas. När man sedan sparar skapas x antal artiklar av produkten och dessa kan sedan hanteras enskilt, d.v.s. man kan ha olika pris för olika artiklar av samma produkt. Ska lägga till en kolumn "sub id" eller så i databasen, som börjar på 1 och tickar uppåt för varje produkt+egenskap man lägger till. Senare om man i shoppen går in på artikel "123456-1" så kan ev. andra produkter som heter "123456-x" hämtas.

Permalänk: https://www.webforum.nu/p/2243430

## #9 — erciz, 2010-07-18T15:03Z

Okej, jag förstår problemet.

Min tanke var att man helt enkelt lägger in "T-Shirt Röd M", "T-Shirt Röd L" osv. Men då måste man nog ändå gruppera dem när man visar dem. Tänkte inte på det.

Permalänk: https://www.webforum.nu/p/2243432

## #10 — MickeA.com, 2010-07-18T15:07Z

Precis, så här kommer det se ut som jag tänkt mig:

```
Kläder
   T-Shirt Röd
      123456-1   S   100:-
      123456-2   M   120:-
      123456-3   L   125:-
```

Det blir väl bra?

Permalänk: https://www.webforum.nu/p/2243434

## #11 — Lasp, 2010-07-18T15:20Z

På den tiden när jag byggde stora lager, var det viktigt att att ha leverantör och batch (tidpunkt) med. Då kan man ta ut rätt saker till rätt pris samt ha koll på lagersaldot i kostnader.
Varje produkt har ju även en hanterings och lagerkostnad om man skall vara noggrann säger Lasp

Permalänk: https://www.webforum.nu/p/2243436

## #12 — MickeA.com, 2010-07-18T15:25Z

Den här shoppen ingår i ett föreningssystem och ska vara välidgt basic. Det enda som skiljer min shop från det enklast tänkbara är just hantering av lagersaldo och det har visat sig vara mer avancerat än jag någonsin kunnat föreställa mig :)

Men jag tror att jag är hemma med min lösning ovan!

Permalänk: https://www.webforum.nu/p/2243438

## #13 — erciz, 2010-07-18T15:29Z

> **[Lasp skrev:](https://www.webforum.nu/p/1511013)**
>
> På den tiden när jag byggde stora lager, var det viktigt att att ha leverantör och batch (tidpunkt) med. Då kan man ta ut rätt saker till rätt pris samt ha koll på lagersaldot i kostnader.
> Varje produkt har ju även en hanterings och lagerkostnad om man skall vara noggrann säger Lasp

Japp, jag håller med. Det var det jag påpekade med ett FIFO-lager. Men jag vet inte riktigt hur man ska designa tabellerna på att bra sett för FIFO med varukostnaden inräknad. Det är ju ganska svårt att få ut varukostnaden med SQL, eller har du någon bra databas-design för det?

Man kan ju ha en tabell med alla köpta produkter, antal och tidpunkt. Sen har man en tabell med alla inköp: antal, leverantör, varukostnad, tidpunkt... Hur gör man då för att få ut varukostnaden för en köpt produkt enligt FIFO?

Permalänk: https://www.webforum.nu/p/2243439

## #14 — MickeA.com, 2010-07-18T16:38Z

Nu har jag fullständig koll på det här, ska bygga om databasen lite så att det blir något i stil med det här:

```
Kategori
  ID
  Namn
  Beskrivning

Produkt
  ID
  Parent (Kategori.ID)
  Namn (t.ex. T-Shirt, Röd)
  Beskrivning
  Artikelnummer
  Bild
  Kostnad
  Beställningsvara (ja/nej)
 
Produktegenskap
  ID
  Parent (Produkt.ID)
  Namn (t.ex. XL)
  Lagersaldo
```

Varje produkt kommer alltså bestå av X antal artiklar och det måste finnas minst 1 artikel kopplat till en produkt för att det ska visas. När man går in på en produkt visas alla olika egenskaper (artiklar) i en rullista.

Permalänk: https://www.webforum.nu/p/2243447

## #15 — GunnarD, 2010-07-18T16:46Z

Man kanske skulle kunna bygga så här:

Produkt
\- Id
\- Namn
\- Beskrivning
\- TypId
\- StorlekId
\- FärgId
\- Lager
\- Kostnad

Storlek
\- Id
\- Storlek (ex. S, M, L ...)

FärgId
\- Id
\- Färg

TypId
\- Id
\- Typ (ex. T-Shirt ....)

Då kan man enkelt plocka ut ex. röda t-shirts.

Permalänk: https://www.webforum.nu/p/2243451

## #16 — MickeA.com, 2010-07-18T16:48Z

> **[GunnarD skrev:](https://www.webforum.nu/p/1511029)**
>
> /red: glöm det, tänkte fel :(

Ja, du gjorde nog det :)

Permalänk: https://www.webforum.nu/p/2243452

## #17 — GunnarD, 2010-07-18T16:52Z

Nu har jag tänk till lite bättre och ändrat igen :)

Permalänk: https://www.webforum.nu/p/2243454

## #18 — MickeA.com, 2010-07-18T18:07Z

Det är ungefär sådär jag har det nu, problemet blir fortfarande lagerhållning (lagersaldo). Eller förstår jag inte hur du tänker?

Permalänk: https://www.webforum.nu/p/2243464

## #19 — GunnarD, 2010-07-18T18:21Z

Produkt -\> Lager anger hur många som finns i lager och minskas när man säljer Produkten.

Om ett köp inte går igenom så ökar man den.

För att klara beställningsvara, lägg till en kolumn bestvara.

Permalänk: https://www.webforum.nu/p/2243467

---

Tråden på webben: https://www.webforum.nu/amne/webbutveckling/183760-lagerhantering-i-webbshop
