Scarico prodotti & Negozi divisi

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ciao a tutti,
visto che l'altro post è diventato una bibbia [Cit. By borgo :quote:] lo riapro sperando di non fare pasticci :)

Come dicevamo nell'altro post ho la necissita di effettuare uno scarico di quantità da un determinato magazzino, qui c'è stato "l'intoppo" perchè giustamente Borgo mi dice che forse è meglio suddividere i negozi...
A questo punto dando ragione a Borgo e suddividendo le tabelle siamo giunti a questa situazione :


ciao
ti posso dire come avrei fatto io.
ti schematizzo un esempio
tabella negozi
id_n |nome |... e altri dati del negozio se servono
tabella articoli
id_a | codice | nome | descrizione | .....
questa non so se ti serve
tabella operatori
id_o | nome | .....
tabella magazzino
id | id_n | id_a | um | quantita_tot

se ti serve potresti fare anche una
tabella movimenti
id | id_n | id_a | um | quantita_mov | data_mov | tipo_mov | id_o

secondo me facendo una cosa del genere, tramite <select> dinamiche e/o join, dovresti riuscire a gestire il magazzino in modo migliore (è più efficiente): carico/scarico per vendita/spostamento articoli da un negozio all'altro...
in questo modo (faccio solo un esempio) se i negozi passano da due a tre non hai problemi.

Quindi io ho creato le varie tabelle :

Codice:
CREATE TABLE IF NOT EXISTS `Articoli` (
  `CodiceInterno` int(11) NOT NULL DEFAULT '0',
  `Fornitore` varchar(50) DEFAULT NULL,
  `Codice` varchar(30) DEFAULT NULL,
  `Descrizione` varchar(200) DEFAULT NULL,
  `Reparto` varchar(4) DEFAULT NULL,
  `Codice a Barre` varchar(50) DEFAULT NULL,
  `UM` varchar(2) DEFAULT NULL,
  `Listino Fornitore` double DEFAULT '0',
  `IVA` tinyint(4) DEFAULT '0',
  `Acquisto` double DEFAULT '0',
  `Acquisto non ivato` double DEFAULT '0',
  `Vendita` double DEFAULT '0',
  `Vendita non ivato` double DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Codice:
CREATE TABLE IF NOT EXISTS `Magazzino` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_n` int(11) NOT NULL,
  `id_a` int(11) NOT NULL,
  `um` varchar(5) NOT NULL,
  `quantita_tot` varchar(5) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`),
  KEY `id_2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Codice:
CREATE TABLE IF NOT EXISTS `Movimenti` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_n` int(11) NOT NULL,
  `id_a` int(11) NOT NULL,
  `id_o` int(11) NOT NULL,
  `um` varchar(5) NOT NULL,
  `quantita_mov` varchar(5) NOT NULL,
  `data_mov` datetime NOT NULL,
  `causale` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Codice:
CREATE TABLE IF NOT EXISTS `Negozi` (
  `id_n` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id negozi',
  `nome` varchar(100) NOT NULL,
  `ragione_sociale` varchar(100) NOT NULL,
  `indirizzo` varchar(100) NOT NULL,
  `cap` varchar(5) NOT NULL,
  `citta` varchar(40) NOT NULL,
  `provincia` varchar(2) NOT NULL,
  `telefono` varchar(10) NOT NULL,
  `fax` varchar(10) NOT NULL,
  `piva` varchar(11) NOT NULL,
  `cf` varchar(16) NOT NULL,
  `email` varchar(120) NOT NULL,
  PRIMARY KEY (`id_n`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Codice:
CREATE TABLE IF NOT EXISTS `Operatori` (
  `id_o` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(100) NOT NULL,
  `cognome` varchar(100) NOT NULL,
  `indirizzo` varchar(100) NOT NULL,
  `cap` varchar(5) NOT NULL,
  `citta` varchar(100) NOT NULL,
  `provincia` varchar(2) NOT NULL,
  `telefono` varchar(10) NOT NULL,
  `cellulare` varchar(10) NOT NULL,
  `username` varchar(100) NOT NULL,
  `password` varchar(100) NOT NULL,
  `email` varchar(120) NOT NULL,
  `cf` varchar(16) NOT NULL,
  PRIMARY KEY (`id_o`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Queste sono tutte le strutture...
 
ciao
non è che nella tabella articoli ti sia dimenticato l'id dell'articolo?
ci deve essesere una chiave che possa collagerlo alle latre tabelle, senza contare che i vari codici (CodiceInterno, Codice, codice a barre) dovrebbero essere unique, ad un codice deve corrispondere un articolo e viceversa.
altrimenti come si fa a fare i collegamenti?

p.s.
non usare nomi dei campi con gli spazi (es. codice a barre) ma usa l'underscore (es. codice_a_barre)
 
ciao
non è che nella tabella articoli ti sia dimenticato l'id dell'articolo?
ci deve essesere una chiave che possa collagerlo alle latre tabelle, senza contare che i vari codici (CodiceInterno, Codice, codice a barre) dovrebbero essere unique, ad un codice deve corrispondere un articolo e viceversa.
altrimenti come si fa a fare i collegamenti?

p.s.
non usare nomi dei campi con gli spazi (es. codice a barre) ma usa l'underscore (es. codice_a_barre)

hai ragione.. era un file vecchio aggiorno come li uso ora.

Per i file Unique, no problem per ora... Se fosse solo il barcode è UNIQUE il codice può essere uguale (si chiama codice di magazzino, per cui posso avere piu barcode su un codice magazzino...)
 
Ultima modifica:
Codice:
CREATE TABLE IF NOT EXISTS `Articoli` (
  `id_a` int(11) NOT NULL DEFAULT '0',
  `Fornitore` varchar(50) DEFAULT NULL,
  `Codice` varchar(30) DEFAULT NULL,
  `Descrizione` varchar(200) DEFAULT NULL,
  `Reparto` varchar(4) DEFAULT NULL,
  `Barcode` varchar(50) DEFAULT NULL,
  `UM` varchar(2) DEFAULT NULL,
  `Listino Fornitore` double DEFAULT '0',
  `IVA` tinyint(4) DEFAULT '0',
  `Acquisto` double DEFAULT '0',
  `Acquisto non ivato` double DEFAULT '0',
  `Vendita` double DEFAULT '0',
  `Vendita non ivato` double DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Codice:
CREATE TABLE IF NOT EXISTS `Magazzino` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_n` int(11) NOT NULL,
  `id_a` int(11) NOT NULL,
  `um` varchar(5) NOT NULL,
  `quantita_tot` varchar(5) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`),
  KEY `id_2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Codice:
CREATE TABLE IF NOT EXISTS `Movimenti` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_n` int(11) NOT NULL,
  `id_a` int(11) NOT NULL,
  `id_o` int(11) NOT NULL,
  `um` varchar(5) NOT NULL,
  `quantita_mov` varchar(5) NOT NULL,
  `data_mov` datetime NOT NULL,
  `causale` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Codice:
CREATE TABLE IF NOT EXISTS `Negozi` (
  `id_n` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id negozi',
  `nome` varchar(100) NOT NULL,
  `ragione_sociale` varchar(100) NOT NULL,
  `indirizzo` varchar(100) NOT NULL,
  `cap` varchar(5) NOT NULL,
  `citta` varchar(40) NOT NULL,
  `provincia` varchar(2) NOT NULL,
  `telefono` varchar(10) NOT NULL,
  `fax` varchar(10) NOT NULL,
  `piva` varchar(11) NOT NULL,
  `cf` varchar(16) NOT NULL,
  `email` varchar(120) NOT NULL,
  PRIMARY KEY (`id_n`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Codice:
CREATE TABLE IF NOT EXISTS `Operatori` (
  `id_o` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(100) NOT NULL,
  `cognome` varchar(100) NOT NULL,
  `indirizzo` varchar(100) NOT NULL,
  `cap` varchar(5) NOT NULL,
  `citta` varchar(100) NOT NULL,
  `provincia` varchar(2) NOT NULL,
  `telefono` varchar(10) NOT NULL,
  `cellulare` varchar(10) NOT NULL,
  `username` varchar(100) NOT NULL,
  `password` varchar(100) NOT NULL,
  `email` varchar(120) NOT NULL,
  `cf` varchar(16) NOT NULL,
  PRIMARY KEY (`id_o`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 

Discussioni simili