• Non ci sono risultati.

GESTIONE AUTOMATICA DEL MAGAZZINO MERCI DI UNA PMI

N/A
N/A
Protected

Academic year: 2021

Condividi "GESTIONE AUTOMATICA DEL MAGAZZINO MERCI DI UNA PMI"

Copied!
11
0
0

Testo completo

(1)

1

UNIVERSITÀ DI PISA

Facoltà di Ingegneria

Laurea Specialistica in Ingegneria dell’Automazione

Tesi di laurea

GESTIONE AUTOMATICA DEL

MAGAZZINO MERCI DI UNA PMI

Candidato:

Iacopo Nucci Quagliano Balducci__________Firma______________

Relatore:

Aldo Balestrino_________________________Firma______________

Sessione di Laurea del 05/03/2007

Archivio tesi Laurea Specialistica in Ingegneria dell’Automazione: etd-12122006-160401

Anno accademico 2006/2007

(2)

2

RINGRAZIAMENTI

Dedico questa tesi a tutta la mia famiglia che durante tutto il percorso accademico mi ha

supportato e aiutato. Un ringraziamento speciale va a mia madre perché nei momenti più bui e

difficili mi ha sempre saputo consigliare e sostenere ricordandomi che Per aspera ad astra…

(3)

3

SOMMARIO

Il pacchetto software realizzato in questo lavoro è denominato Automa dei prelievi. Tale

pacchetto automatizza il processo decisionale relativo alla generazione delle liste di prelievo

all’interno del magazzino di una PMI calzaturiera. L’automa esamina una serie di ordini

cliente e decide quali siano idonei all’imballaggio, in base ad alcuni criteri predeterminati: la

data di scadenza dell’ordine, la disponibilità degli articoli nei vari magazzini, ecc. Identificati

quelli idonei per ciascuno ordine cliente, genera una lista di prelievo che specifica gli articoli

che i magazzinieri devono recuperare per preparare i colli per la spedizione.

Il presente lavoro di tesi è stato svolto in due fasi. Nella prima fase, si è analizzata la realtà

aziendale e, parallelamente, è stata effettuata anche una ricerca degli strumenti per lo sviluppo

dell’applicazione, aumentando e perfezionando la nostra necessaria formazione personale.

Nella seconda fase, è stata fatta l’attività di sviluppo vera e propria, con i relativi test per il

corretto funzionamento dell’automa.

Il motore logico che guida l’evoluzione del processo decisionale automatizzato è composto

da una rete di Petri ad alto livello. L’interfaccia grafica che si presenta all’operatore è stata

realizzata in linguaggio Java.

Nella fase finale del nostro lavoro di tesi, abbiamo messo a punto il corretto funzionamento

del pacchetto, effettuando vari test in collaborazione con una PMI calzaturiera toscana.

In quest’ultimo contesto specifico, l’introduzione dell’automa dei prelievi ha permesso di

aumentare la produttività del reparto magazzino, consentendo di ridurre gli errori di gestione e

di migliorare l’analisi della situazione degli ordini ancora da evadere.

ABSTRACT

This specific software is called Automa dei prelievi. This application automates the

decision process concerning picking lists for the warehouse of a medium Italian footwear

industry. This automaton examines a series of customer orders and decides which are suitable

for boxing, following certain predetermined criteria: expiration order date, articles availability

in various depots etc… After a careful analysis of different orders, the software generates a

picking list for the suitable ones and, therefore, gives warehouse workers precise instructions

for localizing goods and organizing expeditions.

The present thesis about Automa dei prelievi has been developed in two phases. During the

first, a specific industrial reality has been analyzed. At the same time, we did careful research

on the necessary instruments for expressing the possibilities of this software at their best. The

second phase concerns software development, through specific functioning tests.

The program logic flow, which guides the automated decision process evolution, consists

of a high level Petri net. The user graphical interface is in Java language.

In the final phase of the present thesis research, we proceeded with a practical test of our

original software in collaboration with a Italian footwear industry, located in Tuscany. Once

applied to a specific real context, Automa dei prelievi succeeded in increasing warehouse

productivity, reducing managing errors and improving customer orders analysis.

(4)

4

INDICE

RINGRAZIAMENTI... 2 SOMMARIO ... 3 ABSTRACT ... 3 INDICE ... 4

INDICE DELLE FIGURE ... 8

INDICE DEI LISTATI ... 10

INTRODUZIONE ... 11

1. ANALISI DELLA REALTÀ AZIENDALE ... 12

1.1 PANORAMICA DELL’AZIENDA... 12

1.2 LE CINQUE CARATTERISTICHE IDENTIFICATIVE PER UNA CALZATURA... 12

1.3 ANAGRAFICA CLIENTI E CODIFICA ORDINI CLIENTI... 14

1.4 STRUTTURA DEI MAGAZZINI MERCI... 14

1.4.1 Magazzini produzione interna... 15

1.4.1.1 Magazzino P1 ... 16

1.4.1.2 Magazzino P2 ... 16

1.4.1.3 Magazzino P3 ... 16

1.4.2 Magazzini prodotto commercializzato ... 16

1.5 PREPARAZIONE DELLE SPEDIZIONI... 16

1.5.1 Liste di prelievo... 17

1.5.2 Generazione della liste di prelievo... 18

1.5.3 Criterio di scelta del cliente da evadere ... 19

1.5.3.1 Portafoglio ordini... 19

1.5.3.1.1 Elevato numero di informazioni da valutare... 21

1.5.3.1.1.1 Controllo di morosità... 21

1.5.3.1.1.2 Saturazione della capienza ubicazione magazzino P2 ... 21

1.5.3.1.1.3 Controllo se l’ordine è spedibile a saldo... 21

1.5.3.1.2 Valore della disponibilità delle paia del magazzino P1 fuorviante... 22

1.6 ANALISI DELL’INFRASTRUTTURA GESTIONALE E INFORMATICA... 22

1.6.1 Risorse umane ... 22

1.6.2 Infrastruttura informatica ... 22

2. IL GESTIONALE BMS... 23

2.1 TIME S.R.L: PROFILO AZIENDALE... 23

2.2 ARCHITETTURA DELL’ERP ESISTENTE... 24

2.3 DESCRIZIONE DEGLI STANDARD DI NOMENCLATURA UTILIZZATI... 26

2.3.1 Nomenclatura tabelle del database... 26

2.3.2 Nomenclatura dati... 27

2.3.3 Nomenclatura dei vincoli sulla tabella ... 28

2.3.4 Nomenclatura procedure e funzioni... 28

2.4 DESCRIZIONE DEL SISTEMA DI GESTIONE E MEMORIZZAZIONE DEL BMS... 29

2.4.1 Convenzione descrizione delle tabelle dati ... 29

2.4.2 Storicità di un dato... 29

2.4.3 Oid o chiave surrogata... 29

2.4.4 Gestione delle liste di prelievo ... 30

2.4.4.1 T_BLEVAO01: informazioni della lista di prelievo... 30

2.4.4.1.1 Stato della lista di prelievo ... 31

2.4.4.2 T_BLEVAO02: informazioni sulle calzature imballate... 32

2.4.5 Gestione generale dei documenti ... 33

2.4.6 Gestione ordini cliente ... 36

(5)

5

3. IL DATABASE ORACLE... 43

3.1 PREPARAZIONE DELL’AMBIENTE DI TEST... 43

3.1.1 Creazione del database e dell’istanza... 43

3.1.1.1 Prerequisiti ... 43

3.1.1.2 Procedura di creazione del database assistita... 43

3.1.1.3 Configurazione per il supporto al gestionale BMS ... 44

3.1.2 Importazione dei dati ... 45

3.2 LINGUAGGIO PL/SQL... 46

3.2.1 L’unità base: il blocco... 46

3.2.2 Blocchi con nome ... 47

3.2.2.1 Store procedure ... 47

3.2.2.2 Funzioni ... 48

3.2.2.3 Parametri di default... 49

3.2.2.4 Eliminazione di procedure e funzioni ... 49

3.2.3 Package ... 49

3.2.3.1 Specifica di un package ... 49

3.2.3.2 Corpo del package... 50

3.2.4 Cursori ... 51

3.2.4.1 Dichiarazione di un cursore ... 51

3.2.4.2 Apertura e chiusura di un cursore ... 51

3.2.4.3 Recupero di record dal cursore ... 51

3.2.4.4 Attributi di un cursore... 52

3.2.4.5 Scorrimento nei cursori con i cicli ... 52

3.2.4.5.1 Ciclo semplice ... 52

3.2.4.5.2 Ciclo while... 53

3.2.4.5.3 Ciclo for... 53

4. PANORAMICA DELL’AUTOMA DEI PRELIEVI ... 54

4.1 OBBIETTIVI... 54

4.1.1 Solvibilità del cliente... 54

4.1.2 Priorità di consegna clienti importanti... 54

4.1.3 Aumentare la produttività del reparto magazzino ... 54

4.1.4 Ridurre i tempi di spedizione ... 54

4.1.5 Eliminare l’errore nella scelta dell’ordine cliente da imballare ... 55

4.1.6 Aumentare l’efficienza delle spedizioni... 55

4.1.7 Eliminare ordini clienti “abbandonati”... 55

4.2 SCHEMA GENERALE DELL’ARCHITETTURA SOFTWARE... 55

5. RETI DI PETRI ... 57 5.1 RETI DI PETRI P/T ... 57 5.1.1 Concetti di base... 57 5.1.1.1 Sequenza ... 58 5.1.1.2 Conflitto... 58 5.1.1.3 Concorrenza ... 59

5.2 RETI DI PETRI AD ALTO LIVELLO O “COLORATE”... 59

5.3 TOOL DI SVILUPPO RENEW (REFERENCE NET WORKSHOP) ... 60

5.3.1 Lo stato dell’arte e la scelta del tool di sviluppo ... 60

5.3.2 Presentazione del tool ... 60

5.3.3 Installazione del tool ... 61

5.3.3.1 Prerequisiti ... 61

5.3.3.2 Installazione di base... 61

5.3.4 Reference Nets... 61

5.3.4.1 Gli elementi base di una rete... 61

5.3.4.1.1 Archi ... 62

5.3.4.1.2 Posti ... 62

(6)

6

5.3.5.1 Espressioni di inizializzazione e tipizzazione di un posto ... 62

5.3.5.2 Blocco dichiarazione... 62

5.3.5.3 Inscrizioni delle transizioni... 63

5.3.5.3.1 Inscrizione di guardia ... 63

5.3.5.3.2 Inscrizione di azione ... 63

5.3.5.4 Invocazione di funzioni... 63

5.3.5.5 Tuple e liste... 64

5.3.5.6 Transizioni manuali ... 64

5.3.5.7 Creare oggetti net reference ... 64

5.3.5.8 Canali di comunicazione... 65

5.3.6 Configurazioni e trucchi di sviluppo... 67

5.3.6.1 Configurazione a tempo di esecuzione ... 67

5.3.6.2 Configurazione permanente ... 67

6. IMPLEMENTAZIONE DELL’AUTOMA DEI PRELIEVI ... 68

6.1 FASI DELL’EVOLUZIONE DELL’AUTOMA DEI PRELIEVI... 68

6.2 FASE 1:IMPOSTAZIONE DEI PARAMETRI E INIZIALIZZAZIONE... 68

6.2.1 Panoramica interfaccia Java ... 68

6.2.1.1 Convenzioni per il codice Java ... 69

6.2.1.2 Struttura base della interfaccia grafica... 69

6.2.1.3 Documentazione interattiva ... 70

6.2.2 Schermata inserimento dei parametri ... 71

6.2.2.1 Classe Query ... 72

6.2.2.1.1 Query() ... 73

6.2.2.1.2 ArrayList eseguiQuery(String ps_query)... 73

6.2.2.1.3 ArrayList preparaRisultato(ResultSet rs)... 74

6.2.2.1.4 Vector getNextRow( ResultSet rs,ResultSetMetaData rsmd )... 74

6.2.2.2 Classe Connect... 75

6.2.2.2.1 Connect(String ps_dbUrl,String ps_User, String ps_Passwd)... 75

6.2.2.3 Gestione dell’eccezioni... 75

6.2.2.3.1 Eccezione... 76

6.2.2.3.2 FormEccezione ... 76

6.2.2.4 Evento click sul pulsante Genera ... 77

6.2.2.4.1 Recupero input utente e controllo di correttezza ... 79

6.2.2.4.2 Inizializzazione delle struttura dati ... 79

6.2.2.4.3 Salvataggio dei parametri di dialogo ... 80

6.2.2.4.4 Lancio dell’ambiente Renew ... 81

6.2.2.5 Dettagli sull’inizializzazione delle strutture dati... 81

6.3 FASE 2:ELABORAZIONE E GENERAZIONE DELLE LISTE DI PRELIEVO... 83

6.3.1 Sezione di inizializzazione... 83

6.3.2 Sezione logiche di controllo ... 85

6.3.2.1 Controllo della saturazione della capienza dell’ubicazione del cliente... 85

6.3.2.1.1 Native Dynamic SQL ... 87

6.3.2.2 Controllo se l’ordine è a saldo ... 88

6.3.2.2.1 Disponibilità magazzino P1 ... 90

6.3.2.2.1.1 Gestione delle priorità delle spedizioni ... 90

6.3.2.2.1.2 Implementazione dell’attribuzione articoli “classici”... 91

6.3.2.2.1.3 SP_DISP_P1_RIGA: calcolo della quantità ancora da evadere ... 93

6.3.2.2.2 Disponibilità magazzino P3 ... 94

6.3.3 Sezione creazione liste di prelievo ... 96

6.3.4 Sezione fine elaborazione... 99

6.4 FASE 3:VISUALIZZAZIONE E ANALISI DEI RISULTATI... 100

6.4.1 Scheda Risultati della finestra Generazione liste di prelievo ... 100

6.4.1.1 Ordini rifiutati con informazioni sul saldo... 102

6.4.1.2 Ordini rifiutati con informazioni saturazione... 103

6.4.1.3 Attribuzione del “classico” ... 103

6.4.1.4 La classe IFrameTabella ... 105

6.4.1.4.1 Ordinamento del contenuto delle colonne ... 106

(7)

7

6.4.1.4.1.2 Costruttore SortFilterModel(TableModel m) ... 107

6.4.1.4.1.3 void sort(int c) ... 108

6.4.1.4.1.4 public Object getValueAt(int r, int c) ... 109

6.4.1.4.1.5 boolean isCellEditable(int r, int c)... 110

6.4.1.4.1.6 void setValueAt(Object aValue, int r, int c) ... 110

6.4.1.4.2 Colorazione alternata delle righe per una migliore leggibilità... 111

6.4.1.4.3 Formattazione dei dati in maniera corretta ... 112

6.4.2 La finestra Liste di prelievo generate... 113

6.4.3 Eliminazione dei dati dell’elaborazione corrente ... 113

CONCLUSIONI ... 115

(8)

8

INDICE DELLE FIGURE

Fig. 1 Veduta esterna della Balducci s.p.a... 12

Fig. 2 Esempi di modelli di calzature ... 13

Fig. 3 Una forma per calzature ... 13

Fig. 4 Numerata cartone 6A ... 14

Fig. 5 Esempi di suole ... 14

Fig. 6 Schema dei magazzini produzione interna... 15

Fig. 7 Un’ubicazione del magazzino P2... 16

Fig. 8 Fasi del magazzino merci... 17

Fig. 9 Codice a barre della calzatura ... 17

Fig. 10 Esempio di lista di prelievo... 18

Fig. 11 Generazione di una lista di prelievo tramite BMS ... 18

Fig. 12 Portafoglio ordini: schermata di lancio ... 19

Fig. 13 Portafoglio ordini: schermata risultato ... 20

Fig. 14 Logo BMS... 24

Fig. 15 Architettura BMS... 25

Fig. 16 Esempio di storicità... 30

Fig. 17 Campi tabella T_BLEVAO01... 31

Fig. 18 Tabella T_BLEVAO02 ... 33

Fig. 19 Esempio di memorizzazioni delle letture ottiche ... 33

Fig. 20 Tabella LGMOVMAG... 35

Fig. 21 Schema tabelle per la gestione degli ordini cliente ... 36

Fig. 22 Tabella LGORCLRI... 37

Fig. 23 Esempio di associazione a un movimento di magazzino ... 37

Fig. 24 Tabella BLMOVMAG ... 38

Fig. 25 Esempio di ordine di produzione OP ... 39

Fig. 26 Schema tabelle per la gestione ordini produzione... 40

Fig. 27 Tabella PRORPRRI ... 41

Fig. 28 Tabella PROPXORC... 42

Fig. 29 Assistente alla configurazione del database ... 43

Fig. 30 Parametri di inizializzazione ... 44

Fig. 31 Enterprise manager console ... 45

Fig. 32 Creazione di un utente... 46

Fig. 33 Architettura software automa dei prelievi ... 56

Fig. 34 Elementi costitutivi di un rete di petri ... 57

Fig. 35 Esempio di una rete di petri... 57

Fig. 36 Postset e preset ... 58

Fig. 37 Esempio di evoluzione di una rete di Petri... 58

Fig. 38 Sequenza ... 58

Fig. 39 Conflitto ... 58

Fig. 40 Concorrenza ... 59

Fig. 41 Esempio di rete ad alto livello... 59

Fig. 42 Renew Toolbox ... 61

Fig. 43 Elementi di un rete ... 62

Fig. 44 Inizializzazione di un posto... 62

Fig. 45 Blocco dichiarazione... 63

Fig. 46 Inscrizione di azione ... 63

(9)

9

Fig. 48 Rete che crea un’istanza di un'altra rete ... 64

Fig. 49 Rete othernet allocata... 64

Fig. 50 Canale sincrono all’interno di una rete... 65

Fig. 51 Rete mittente ... 65

Fig. 52 Rete destinatario bag ... 65

Fig. 53 Configurazione a tempo di esecuzione... 66

Fig. 54 Struttura di una applicazione MDI ... 69

Fig. 55 Documentazione interattiva del codice Java ... 70

Fig. 56 Finestra inserimento parametri... 71

Fig. 57 Esempio di un form per le eccezioni ... 77

Fig. 58 Controllo correttezza parametri... 79

Fig. 59 Tabella LGGALP... 83

Fig. 60 Rete di Petri dell’automa dei prelievi... 84

Fig. 61 Tabella LGGALPIMPE ... 93

Fig. 62 Tabella LGGALPCRE ... 99

Fig. 63 Finestra di dialogo fine elaborazione rete diPetri... 99

Fig. 64 Schermata di riepilogo dei risultati di una elaborazione ... 100

Fig. 65 Dettaglio ordini che hanno saturato l’ubicazione... 101

Fig. 66 Dettagli sugli ordini a saldo ... 101

Fig. 67 Ordini rifiutati con dettagli sul saldo... 102

Fig. 68 Ordini rifiutati con dettaglio sulla saturazione dell’ubicazione... 103

Fig. 69 Dettagli sull’attribuzione del “classico”... 103

Fig. 70 Esempio di JTable... 106

Fig. 71 Valori dopo l’ordinamento ... 109

(10)

10

INDICE DEI LISTATI

Listato 1 Blocco PL/SQL minimo ... 47

Listato 2 Blocco PL/SQL completo... 47

Listato 3 Dichiarazione store procedure... 48

Listato 4 Dichiarazione funzione PL/SQL ... 48

Listato 5 Esempio specifica di un package... 50

Listato 6 Esempio di un corpo di un package... 50

Listato 7 Esempio dichiarazione di un cursore... 51

Listato 8 Esempio di ciclo semplice ... 52

Listato 9 Esempio di ciclo while ... 53

Listato 10 Esempio di ciclo for ... 53

Listato 11 Funzione iniz_jcb_pcstag() ... 72

Listato 12 Query() ... 73

Listato 13 ArrayList eseguiQuery(String ps_query) ... 73

Listato 14 ArrayList preparaRisultato(ResultSet rs) ... 74

Listato 15 Vector getNextRow( ResultSet rs,ResultSetMetaData rsmd) ... 75

Listato 16 Connect(String ps_dbUrl,String ps_User, String ps_Passwd)... 75

Listato 17 Classe Eccezione ... 76

Listato 18 Costruttore FormEccezione ... 76

Listato 19 Pressione sul pulsante genera: jb_generaActionPerformed... 79

Listato 20 Store procedure sp_main ... 82

Listato 21 Esempio di una Native Dynamic SQL ... 88

Listato 22 Cursore degli ordini per l’attribuzione del classico ... 91

Listato 23 Query per codice vettore di spedizione ... 97

Listato 24 Query per riepilogo dell’attribuzione del commercializzato ... 105

Listato 25 Creazione di una JTable ... 106

Listato 26 Impostazione del modello della Jtable... 107

Listato 27 SortFilterModel(TableModel m) ... 108

Listato 28 Void sort(int c) ... 108

Listato 29 Oggetto Row ... 109

Listato 30 GetValueAt(int r, int c)... 109

Listato 31 Boolean isCellEditable(int r, int c) ... 110

Listato 32 Void setValueAt(Object aValue, int r, int c) ... 110

Listato 33 Listener degli eventi del mouse... 110

Listato 34 Render per la colorazione alternata delle celle ... 111

Listato 35 Formattazione dei numero decimali ... 112

(11)

11

INTRODUZIONE

Obbiettivo di questo lavoro è l’automatizzazione del processo decisionale inerente alla

preparazione delle spedizioni all’interno del magazzino di una PMI calzaturiera. Per poter

attuare ciò è stato sviluppato un pacchetto software denominato Automa dei prelievi.

Per poter raggiungere tale obbiettivo è stato necessario possedere sia conoscenze inerenti al

prodotto trattato e al processo aziendale in questione sia nozioni informatiche per la

realizzazione del pacchetto software.

È stato quindi necessario un periodo di analisi e formazione per poter comprendere la

realtà aziendale sulla quale andare a lavorare. Le conoscenze iniziali, infatti, inerenti al

mondo delle calzature erano molto superficiali. È stato necessario un approfondimento ad

ampio spettro sui vari aspetti gestionali e produttivi dell’azienda andando, ovviamente, a

focalizzare l’attenzione sull’organizzazione logistica del magazzino merci.

Per quanto riguarda le conoscenze informatiche pregresse coprivano sufficientemente

solamente la parte riguardante le nozioni basilari su un database relazionale e sul linguaggio

SQL. Queste conoscenze sono state acquisite grazie agli studi condotti nella laurea in

ingegneria informatica. È stato, però, necessario uno studio aggiuntivo del linguaggio

PL/SQL, del linguaggio Java e delle reti di Petri.

All’interno dell’azienda prima dell’introduzione dell’automa dei prelievi, era presente un

gestionale che assisteva l’operatore del magazzino nella generazione delle liste di prelievo. La

lista di prelievo è un elenco degli articoli da imballare per un determinato ordine cliente. Le

informazioni fornite dal gestionale erano, però, insufficienti, caotiche, imprecise e creavano

onere nella preparazione dei colli e, cosa più importante, causavano numerosi e reiterati errori

da parte dell’operatore.

Il gestionale, inoltre, non dava nessun ausilio per l’ottimizzazione della scelta degli ordini

da imballare come la gestione delle priorità nelle spedizioni o altro di cui approfondiremo nel

capitolo 1.

Riferimenti

Documenti correlati

Da un paradigma disciplinare che circoscrive i concetti rilevanti di questo tema, si costruisce un percorso suddiviso in diverse tappe d’apprendimento, che hanno lo scopo di

Fornire i modelli di riferimento per una gestione integrata dei flussi logistici sulla supply chain Inquadrare le soluzioni gestionali per migliorare la competitività della supply

Piano di sicurezza aziendale Procedura di gestione delle merci Procedure di carico e scarico merci (bolle) Procedure di gestione scorte di magazzino Schemi di disposizione

QUALI FARMACI E DISPOSITIVI PER LE EMERGENZE IN STUDIO

–la quantità alla fine dell’esercizio eccede quella dell’inizio: •fino a concorrenza della quantità di inizio esercizio si valorizza con il costo a quella data,

Easyfatt ti permette di gestire rapidamente ogni tipo di fattura compilandola in pochi clic,.. richiamando anagrafiche, inserendo voci e gestendo agilmente aliquote

Focalizzare tecniche e soluzioni gestionali per migliorare le prestazioni della supply chain Fornire gli strumenti operativi di analisi, pianificazione e gestione delle

Il numero massimo di livelli di stoccaggio (NL) del magazzino è funzione dell’altezza massima di sollevamento delle forche del carrello ovvero dell’altezza utile