6

vendo liquori. quindi ho un inventario di bottiglie. finora ho un modello "InventoryUnit" che fa riferimento a product e line_item.Gestione inventario: come gestisco le unità di inventario vendute nel database?

  1. ogni flacone deve essere memorizzato come singolo oggetto InventoryUnit nel mio database?

  2. qual è la procedura migliore per ridurre il mio inventario? se vendo una bottiglia, distruggo un InventoryUnit? o dovrei semplicemente aggiungere una colonna di stato che può essere "venduta" o "in-stock"?

  3. Sono preoccupato per le prestazioni, Postgres può gestire centinaia di migliaia di oggetti InventoryUnit?

Apprezzerei molto l'aiuto su questo. scusate, io sono un frontend-guy, quindi faccio davvero schifo al database-modeling ...

+0

Che cosa è una "bottiglia" nel database. Come si distingue le bottiglie e quali informazioni è necessario rintracciare? –

+1

Consiglierei il metodo di Neil. Ho creato un modello chiamato "Transazioni" e registra il movimento da un modello all'altro. Diciamo che hai 100 bottiglie e poi ne vendi o ne perdi alcune. Quindi puoi avere un record di tutti i prodotti che acquisti o che vendi. Il sistema a cui stai pensando è molto simile a come funziona Quickbooks. Se capisci la contabilità, questo dovrebbe essere abbastanza facile. –

risposta

0

Ah questo è difficile a cui rispondere. Non c'è la modo corretto sebbene diversi modelli avranno conseguenze a seconda dell'utilizzo.

Se si sta monitorando un volume basso ma una scorta ad alta intensità di informazioni (ad esempio, aeroplani e parti) è possibile definire una voce per ogni articolo; Se stai modellando una massa di prodotti identici con un'identità vicina a zero (come sembra essere il tuo caso), vorrei concentrarmi sullo stato delle scorte. Tutto dipende da quanto profondamente vuoi monitorare il ciclo di vita dell'articolo.

Chiedetevi "vale la pena rintracciare questa istanza di una scatola di cracker, o posso semplicemente tenere traccia di quanto un pallet abbia influenzato il mio stock attuale?" Una stazione di servizio creerebbe un ingresso per ogni litro di carburante?

3

È necessario tenere traccia dell'inventario al livello più basso fungibile. In altre parole, quando sceglieresti una singola unità da uno scaffale, quali sono le informazioni più specifiche che devi conoscere per ottenere la cosa giusta.

Nel tuo esempio, non potevo semplicemente dire "Vai a prendere una bottiglia" o puoi portare del vino invece della vodka. Non posso nemmeno dire "Vai a prendere una bottiglia di vodka" perché potresti riportare Absolut quando voglio Ciroc. Infine, non posso dire "vai a prendere una bottiglia di Ciroc" perché potresti riportare la dimensione 1L quando volevo la dimensione 1.5L.

Potrei dire "Vai a prendere la terza bottiglia dal lato sinistro nella prima fila del caso inferiore di 1.5L Ciroc", ma sarebbe sciocco perché tutte le bottiglie da 1,5 litri di Ciroc sono uguali. (A parte il sapore;)).

Il punto giusto diventa la tua unità di stoccaggio (SKU). Per fortuna, quasi tutte le aziende del mondo hanno già risolto questo problema. Usa il numero UPC sotto il codice a barre come SKU.

Sulla base di questo, i vostri modelli sarebbe qualcosa di simile ...

InventoryOnHand 
- id:int 
- product_id:int 
- quantity:int 

Product 
- id:int 
- sku:string 
- name:string 

Si potrebbe quindi aumentare e diminuire la quantità InventoryOnHand come vanno le cose dentro e fuori di magazzino.

7

Uno. dovrebbe ogni singola bottiglia essere archiviata come un singolo oggetto InventoryUnit nel mio database?

Se è possibile venderli singolarmente, allora sì, altrimenti li rintraccia dalla cassa/scatola.

Due. qual è la migliore pratica per ridurre il mio inventario? se vendo una bottiglia, distruggo un InventoryUnit? o dovrei semplicemente aggiungere una colonna di stato che può essere "venduta" o "disponibile"?

Utilizzare i concetti di Posizioni e Movimenti (un movimento dovrebbe essere la propria entità). OpenERP ad esempio utilizza "posizioni virtuali" simili a questo.

Smash bottiglie? Spostalo dalla posizione di inventario alla posizione "danneggiata"
La bottiglia è scomparsa? Spostalo dall'inventario alla posizione "etere"
Hai trovato una bottiglia casuale? Spostalo da "etere" all'inventario
Hai venduto una bottiglia? Spostalo dall'inventario a "venduto"
Hai comprato una bottiglia? Spostalo dall'acquisto all'inventario

Tre. Sono preoccupato per le prestazioni, Postgres può gestire centinaia di migliaia di oggetti InventoryUnit?

Postgres può gestire centinaia di miliardi di oggetti. Normalizza correttamente. Utilizza piccoli tipi di dati. Utilizzare gli indici.

Alcune altre cose da tenere a mente:

  • Si potrebbe vendere qualcosa, e restituito, e si rimetterlo in inventario
  • Si potrebbe comprare qualcosa, ma non è giusto, in modo da si invia di nuovo al venditore
  • Si potrebbe vendere qualcosa che non possiedi (in consegna, o non ancora in inventario)
  • Si potrebbe avere qualcosa in inventario che non è attualmente in vendita.

Per l'inventario contabile, è inoltre necessario conteggiare le merci sulle spedizioni in entrata e in uscita di cui si è responsabili, in base allo stato FOB free-on-board.

è necessario contare merci prime (roba vinificazione fai da te?) E lavori in corso se si fanno/assemblare nulla, così come i costi di ordinazione, ecc

merci spedite non vengono conteggiati nel inventario contabile.

Problemi correlati