COMET simula la gestione degli acquisti, delle venditi e della produzione di un'azienda di body care.
Gli utenti DB saranno:
- DB Comet
- Cliente
- Fornitore
- Acquisto
- Vendita
- Supervisore_Produzione
- Produzione
La possibilità di inserire dati in una tabella prevede anche la possibilità di lettura/modifica della stessa.
Da capire se inserire procedure per la modifica.
Utente DB con ruolo DB Comet può:
-
inserire/modificare dipendente
- nessun vincolo
-
inserire/modificare Formula
- la formula non deve essere calendarizzata nel futuro
- il prodotto deve esistere
-
inserire/modificare Formula_MateriaPrima
- la formula non deve essere calendarizzata nel futuro
-
inserire/modificare Linea
- nessun vincolo
Utente DB con ruolo Cliente può:
La necessità di produrre prodotti va gestita lato Vendita.
-
inserire Vendita
-
inserire Dettaglio_Vendita
-
modificare Dettaglio_Vendita
- può modificare l'ordine solo se in stato RICEVUTO
- il prodotto indicato deve esistere
-
annullare Vendita
- può annullare l'odine solo se in stato RICEVUTO
Utente DB con ruolo Fornitore può:
-
inserire Azienda_MateriaPrima
-
modificare Azienda_MateriaPrima
- (modifica i parametri QuantitaProdotto, QuantitaMinimaDaAcquistare, PrezzoProdotto)
Utente DB con ruolo Supervisore Produzione che può:
- inserire turno
- da verificare che sia compatibile con le assenze
- dipendente è già impegnato in altro turno nel periodo di tempo desiderato
- inserire calendarioproduzione
- da verificare che linea non sia già occupata
- le materie prime a disposizione siano presenti (incrociare tabella Acquisto con Calendarioproduzione)
- leggere formula
- inserire assenze
- non deve essere impegnato in un turno nel periodo desisderato
- leggere la differenza tra CalendarioProduzione e Vendita
Utente DB con ruolo Produzione può:
- inserire Eventoproduzione
- inserire assenze
- non deve essere impegnato in un turno nel periodo desisderato
- leggere turni
Utente DB con ruolo Acquisto può:
modificare insert e tabella in quanto referenzia i prodotti finiti, mentre deve referenziare le materie prima.
- inserire Azienda
- inserire Acquisto
- rispettare quantità minima acquistabile presente in Azienda_MateriaPrima
- annullare acquisto
- solo se questo è in stato RICEVUTO
- leggere Azienda_MateriaPrima (listino)
- leggere Azienda
- leggere Calendarioproduzione
- inserire MateriaPrima
- inserire Assenza
Utente DB con ruolo Vendita può:
- leggere Vendita (e verifica la disponibilià del prodotto finito)
- inserire Azienda
- inserire ProdottoFinito
- inserire assenze
Generare gli acquisti delle materie prime a partire dal calendario produzione.
Ad ogni modifica, va verificato se la formula è calendarizzata nel futuro. Se è calendarizzata, va eseguita un'eccezione.
All'inserimento lo stato dell'acquisto deve essere RICEVUTO.
Ad ogni inserimento/modifica, va verificato se DataConsegna >= DataOrdine.
Ad ogni modifica, va verificato se DataConsegna >= DataOrdine.
Ad ogni modifica, va verificato se DataConsegna >= DataOrdine.
Ad ogni modifica, va verificato se StatoOrdine = 'RICEVUTO', altrimenti non è possibile procedere con la modifica.
Alla modifica o all'inserimento di un turno, verificare se un utente ha già un turno programmato nella data indicata.
Alla modifica o all'inserimento di un turno, verificare che un turno non abbia durata maggiore alle 8 ore.
Alla modifica o all'inserimento di un turno, verificare che il turno non capiti in periodo dove il dipendente è assente (verifica tabella Assenza).
All'inserimento o alla modifica, verificare se la linea non è già occupata nel periodo di tempo indicato.
All'inserimento o alla modifica, verificare se le materie prime necessarie siano presenti. Potremmo inserire un dato nella tabella Azienda_MateriaPrima GIORNICONSEGNAPREVISTA che ci permette di capire se la materia prima è mancante ed è possibile da acquistare e ricevere prima della data di produzione indicata.
- inventario materie prime
- inventario prodotti finiti
Da rivedere DDL tabella in quanto risulta essere diversa rispetto alle altre relazioni (vedi primary e foreign key).
E' stata aggiunta la colonna CostoUnitario in modo da calcolare il costo totale della Vendita a partire dalla quantità inserita dal cliente.
Indipendente da CalendarioProduzione. Un dipendente dovrà lavorare il giono X dalle YY alle ZZ, la mansione sarà indefinita.
I turni saranno inseriti dai supervisori della produzione tenendo conto delle assenze registrate per il dipendente.
Al momento nessun dipendente ha lo stesso turno, da verificare se possibile dedicare del tempo per sistemare questa problematica
(nel caso si riesca a trovare una soluzione andare a modificare anche il diagramma ER e relazionale)
DataFineProduzione potrebbe non essere rispettata.
Cosa succede se si vuole produrre il triplo della quantità che una formula permette?
Pertanto, va calcolato all'interno della stored procedure che permetterà di inserire una nuova riga.
Ad esempio, ho una formula che produce 3000 pezzi di un prodotto.
Si vogliono produrre 9000 pezzi di quel prodotto, come si procede?
Durante l'inserimento di una riga in CalendarioProduzione, l'utente inserirà solo la DataInizioProduzione.
Così facendo la DataFineProduzione sarà calcolata a partire dai dati sopra scritti: se DataInizioProduzione=2024-06-28 09:00 e il TempoPreparazione di una Formula è 3 ore, allora DataFineProduzione è = 2024-06-28 18:00