Modula — Configurazione e manutenzione magazzino automatico verticale¶
Area funzionale: Magazzino / Modula Programmi documentati: 11 | Righe totali analizzate: 11.765
Indice¶
- Tabelle
- Attivazione e importazioni
- Controllo e trasferimenti
- Sincronizzazione DB frontiera
- Flusso integrato
- File principali
- Tabella riepilogativa
1. Tabelle¶
COGB61 — Tabella confezioni¶
File: /programmi/eurocoge/cbl/cogb61.cbl (985 righe)
Gestisce la tabella delle confezioni (tipo TC su COGTABEL), usate per classificare le merci nel Modula. Due modalita': aggiornamento (CRUD) e selezione (ritorna codice+descrizione al chiamante).
File: COGTABEL (euta- tipo "TC"). CALL: GRIDADMN, W$MENU.
COGB62 — Tabella tipi scomparto¶
File: /programmi/eurocoge/cbl/cogb62.cbl (980 righe)
Gestisce la tabella tipi scomparto (tipo TS su COGTABEL), che definiscono le tipologie di vano/cassetto del magazzino verticale. Priorita' obbligatoria e univoca. Struttura analoga a COGB61.
File: COGTABEL (euta- tipo "TS"). CALL: GRIDADMN, W$MENU.
COGB63 — Confezioni/scomparti/aree per merce¶
File: /programmi/eurocoge/cbl/cogb63.cbl (1.210 righe)
Associa a ciascuna merce i codici confezione, tipo scomparto o area con quantita' e priorita'. Tabella ponte tra anagrafica merce e classificazione logistica del Modula, memorizzata in COGMDLCS.
Parametri: Merce, tipo (C=Confezione, S=Scomparto, A=Area).
Logica: 1. Legge da COGTABEL i record del tipo selezionato (TC/TS/TA) 2. Per ogni codice, legge associazione merce/codice da COGMDLCS 3. Griglia editabile: quantita' (per C/S) e priorita' (per A) 4. Aggiornamento: scrive/riscrive COGMDLCS + flag sync su COGMERA2
File: COGMERCI (mer-), COGTABEL (euta- TC/TS/TA), COGMDLCS (mds-), COGMERA2 (ma2-). CALL: GRIDADMN, COGS68W, W$MENU.
2. Attivazione e importazioni¶
COGD50 — Attivazione articoli per Modula¶
File: /programmi/eurocoge/cbl/cogd50.cbl (844 righe)
Attiva o disattiva il flag mer-modula su singole merci. Quando attivato, trasferisce la giacenza iniziale al Modula tramite COGD53. Funzioni di estrazione massiva articoli e giacenze.
Logica:
1. Accept merce, mostra stato flag Modula
2. Se attivazione: passa-giacenza trasferisce giacenza corrente via COGD53
3. Se merce a lotti: cicla tutti i lotti aperti del magazzino Modula
4. F7 estrazione massiva: F5=articoli (COGUA9), F8=articoli no-Modula, F9=giacenze
Configurazione (RNEWCONF sezione SISTMGA001): path scambio, magazzini assistito/eccedenze, UM merce.
File: COGMERCI (mer-), COGSLMAG (msal-), COGMERLT (mlt-). CALL: COGD53, COGUA9, RNEWCONF, DIALOGS.
COGD59 — Importazione riordino da Modula¶
File: /programmi/eurocoge/cbl/cogd59.cbl (696 righe)
Importa da file Modula (.EXP, pipe-delimited) giacenze e scorte minime per generare proposte di riordino in COGRIORD.
Logica:
1. Apre COGRIORD in output (svuotamento)
2. Per ogni riga: parsing "|", estrazione codice/giacenza/scorta minima
3. Aggiorna mer-sco-min e imposta mer-modula = "S"
4. Se giacenza < scorta minima: calcola quantita' riordino, cerca fornitore preferenziale in COGCNDCF
5. Scrive record riordino
File: COGMERCI (mer-), COGSLMAG (msal-), COGRIORD (rio-), COGCNDCF (cnd-). CALL: RNEWCONF, COPIAF, ESTRXLS.
COGD81 — Importazione scorta minima¶
File: /programmi/eurocoge/cbl/cogd81.cbl (619 righe)
Importa da file Modula (.EXP) i valori di scorta minima e aggiorna mer-sco-min su COGMERCI, solo per merci gia' marcate Modula.
File: COGMERCI (mer-). CALL: RNEWCONF, COPIAF, ESTRXLS.
COGD75 — Importazione scorta massima¶
File: /programmi/eurocoge/cbl/cogd75.cbl (648 righe)
Importa da file Modula (.EXP) i valori di scorta massima e aggiorna mer-sco-max su COGMERCI. Segnala merci non mappate a Modula senza escluderle.
File: COGMERCI (mer-). CALL: RNEWCONF, COPIAF, ESTRXLS.
3. Controllo e trasferimenti¶
COGD60 — Controllo quadratura Coge-Modula¶
File: /programmi/eurocoge/cbl/cogd60.cbl (1.414 righe)
Controllo di quadratura tra quantita' registrate nel gestionale e quelle comunicate al Modula, per merce e intervallo date. Griglia con filtro solo errori e dettaglio riga.
Logica:
1. Cicla COGMDRIG (righe movimenti Modula) in ordine decrescente, filtrando per merce/date
2. Per ogni riga: legge testata COGMDTES, calcola trs-qta-modula (sommando qta evasa e trasferita, con segno per LP/LV)
3. Cerca corrispondenze lato Coge: se BdP legge COGRIGBP, altrimenti COGMOMAG → trs-qta-coge
4. Tratta importazioni carico (COGIMPCA) nell'intervallo date
5. Griglia con F5=tutti/solo errati, F6=dettaglio (WIN124)
File: COGMERCI (mer-), COGMDRIG (mdr-), COGMDTES (mdt-), COGIMPCA (mpc-), COGRIGBP (rbp-), COGMOMAG (mag-). CALL: GRIDADMN, WIN124.
COGD68 — Carico da magazzino eccedenze¶
File: /programmi/eurocoge/cbl/cogd68.cbl (1.688 righe)
Trasferimento merci dal magazzino eccedenze al magazzino Modula. Griglia con calcolo automatico quantita' da trasferire (fino a scorta massima), generazione bolle (uscita da eccedenze + entrata in Modula) con invio a COGD53.
Logica:
1. Legge configurazione: magazzino eccedenze, causali, tipi operazione
2. Cicla saldi magazzino eccedenze (COGSLMAG chiave 2, giacenza > 0)
3. Per ogni merce: calcola quantita' suggerita = min(sco-max - gia-modula, gia-ecced)
4. Griglia con flag trasferimento modificabile; F5/F6=seleziona/deseleziona tutto
5. Registrazione: genera 2 bolle (uscita eccedenze + entrata Modula) via COGS25/COGU12
6. Invio a COGD53 per comunicazione al Modula
File: COGMERCI (mer-), COGSLMAG (msal-), COGMAGAZ (magz-), COGTESBO (tes-), COGMOMAG (mag-), COGTABEL (euta- tipo 35). CALL: COGD53, COGD69, COGS25, COGU10W, COGU12, COGL61, RNEWCONF, GRIDADMN.
4. Sincronizzazione DB frontiera¶
DFNM01 — Esportazione articoli verso Modula (DB frontiera)¶
File: /programmi/eurocoge/cbl/dfnm01.cbl (1.632 righe)
Sincronizza le anagrafiche articoli dal gestionale verso il DB frontiera di Modula (tabella DFMERCIPREST e tabelle collegate). Viene invocato dallo scheduler KPN (via AGLANCIO) o puo' girare come batch autonomo.
Filtro articoli da esportare:
- Merci con almeno un'associazione di tipo "A" (Area) in COGMDLCS
- Data/ora ultima modifica (ma2-da-data/time su COGMERA2) >= data/ora ultimo run (DFSEMAFORO)
Semaforo: DFSEMAFORO (tabella IMPARTICOLI) — salva data/ora dell'ultima esecuzione; aggiornata all'avvio del processo (non a fine) per non perdere modifiche concorrenti.
Logica per articolo — caso NUOVO (non presente in DFMERCIPREST):
1. INSERT su DFMERCIPREST (chiave: codice avanzato da COGRACMC)
2. INSERT su IMPARTICOLI (descrizione + UM)
3. aggiorna-impscoarticoli — per ogni scomparto (tipo "S" in COGMDLCS): insert o update su IMPSCOARTICOLI e tabella di lavoro IMPARTSCOWRK
4. aggiorna-impconfart — per ogni confezione (tipo "C" in COGMDLCS): insert o update su IMPCONFART e IMPARTCONFWRK
5. aggiorna-impartaree — delete+insert su IMPARTAREE per tutte le aree (tipo "A")
Logica per articolo — caso MODIFICA (presente in DFMERCIPREST):
1. UPDATE DFMERCIPREST se descrizione o codice avanzato cambiati
2. inser-imparticoli — update (o insert) su IMPARTICOLI solo se descrizione cambiata
3. inser-impartsost — INSERT su IMPARTSOST (record sostituzione vecchio→nuovo CMA) solo se codice avanzato cambiato
4. aggiorna-impscoarticoli — eseguito solo per nuovi abbinamenti: esporta se lo specchio (IMPARTSCOWRK) e' assente o ha qta = 0; se lo specchio ha qta > 0 aggiorna solo lo specchio senza esportare, per non sovrascrivere scomparti configurati su Modula
5. aggiorna-impconfart — sempre eseguito
6. aggiorna-impartaree — sempre eseguito (delete+insert)
Configurazione (RNEWCONF sezione MODULA/dbfront): stringa connessione DB frontiera (3 slot), log level, email segnalazioni.
File sorgente: COGMERCI (mer-), COGMERA2 (ma2-), COGMDLCS (mds-), COGRACMC (rcm-). File destinazione DB frontiera: DFMERCIPREST (df-mpr-), IMPARTICOLI (art-), IMPSCOARTICOLI (cap-), IMPCONFART (conf-), IMPARTAREE (ara-), IMPARTSOST (sost-), IMPARTCONFWRK (cnf-wrk-), IMPARTSCOWRK (sco-wrk-), DFSEMAFORO (df-smf-). CALL: COGU10, GESSTR, RNEWCONF, SWGETS.
DFNM03 — Aggiornamento stato liste da export Modula¶
File: /programmi/eurocoge/cbl/dfnm03.cbl (1.049 righe)
Sincronizza lo stato delle liste Modula dal DB frontiera verso il gestionale. Legge i record di EXPORDTES/EXPORDDET (scritti da Modula con l'esito di elaborazione delle liste) e aggiorna le corrispondenti testate COGMDTES e righe COGMDRIG. Viene invocato dallo scheduler KPN (via AGLANCIO) o come batch autonomo.
Nota importante: DFNM03 non crea liste nel gestionale. Le liste esistono gia' (create da altri programmi che le inviano a Modula). DFNM03 si limita a riportare nel gestionale lo stato di avanzamento comunicato da Modula.
Selezione record da processare:
Il cursore principale seleziona da EXPORDTES i soli record con e-ordt-agg-area = ' ' (non ancora acquisiti dal gestionale). Al termine di un'elaborazione completa (stato COMPL) il flag viene messo a "A" per non rielaborare lo stesso record nei cicli successivi. In caso di stato intermedio (EXE) o anomalo, il flag non viene impostato, quindi la lista verra' riprocessata ad ogni giro.
Logica per stato lista (paragrafo c1-aggiorna):
e-ordt-stato |
Aggiornamento COGMDTES |
Refresh qta evase COGMDRIG |
e-ordt-agg-area |
|---|---|---|---|
"EXE" (in corso) |
mdt-stato="A", mdt-fl-ela="E" |
Si' (via c1a-refresh-qta-righe) |
Non impostato (resta ' ') |
diverso da "COMPL" |
mdt-stato="A", mdt-fl-ela="X" |
No | Non impostato (resta ' ') |
"COMPL" (completa, tutte righe "C") |
mdt-stato="E", mdt-fl-ela="C" |
Si' (via c1a-refresh-qta-righe) |
"A" (acquisita) |
"COMPL" (completa, righe con stato != "C") |
mdt-stato="X", mdt-fl-ela="C" |
Si' (via c1a-refresh-qta-righe) |
"A" (acquisita) |
Paragrafo c1a-refresh-qta-righe (pattern azzera-e-risomma):
1. Azzera mdr-qta-evasa su tutte le righe COGMDRIG della lista; traccia w-max-mdr-riga per eventuali insert.
2. Rilegge EXPORDDET filtrato per e-ordd-id = e-ordt-id.
3. Per ogni riga di dettaglio richiama c11-agg-qtaeva che:
- risolve articolo via COGRACMC
- cerca la riga COGMDRIG corrispondente per merce + lotto e somma e-ordd-qtae a mdr-qta-evasa
- se la combinazione articolo/lotto non esiste in COGMDRIG, inserisce una nuova riga usando w-max-mdr-riga + 1.
Il pattern "azzera e risomma" e' corretto perche' c11-agg-qtaeva opera in add: ad ogni esecuzione di DFNM03 le qta evase vengono ricostruite integralmente da EXPORDDET, evitando duplicazioni.
Refresh in stato EXE:
Dal momento in cui una lista passa a EXE, DFNM03 aggiorna le qta evase su COGMDRIG ad ogni ciclo, senza marcare il record come acquisito. Questo consente agli operatori di vedere situazioni parziali progressive man mano che Modula avanza nell'elaborazione. L'acquisizione definitiva (set e-ordt-agg-area = "A") avviene solo quando Modula porta la lista in COMPL.
Verifica extra per liste di prelievo da BDP:
Se la lista e' di tipo mdt-tip = "LP" e causale mdt-causale = "BP" (lista di prelievo generata da BDP), al completamento viene eseguito c12-verifica-bdp che segnala nel log le righe con qta evasa diversa dalla qta richiesta. Questo controllo viene eseguito solo nel ramo COMPL, non nel ramo EXE (in stato intermedio le differenze sono normali e genererebbero falsi positivi).
Configurazione (RNEWCONF sezione MODULA/dbfront): stringa connessione DB frontiera AGLANCIO (3 slot), log level, email segnalazioni, limite record/errori per processo (via ARPSTPRC).
File sorgente DB frontiera: EXPORDTES (e-ordt-), EXPORDDET (e-ordd-), DFSEMAFORO (df-smf-), ARPSTPRC (a-stpr-). File destinazione gestionale: COGMDTES (mdt-), COGMDRIG (mdr-), COGRACMC (rcm-). CALL: COGU10, GESDEBUG, RNEWCONF, POSTA, SWGETS.
5. Flusso integrato¶
CONFIGURAZIONE:
├── COGB61 (tabella confezioni → COGTABEL tipo TC)
├── COGB62 (tabella tipi scomparto → COGTABEL tipo TS)
└── COGB63 (associazione merce-confezione/scomparto/area → COGMDLCS)
ATTIVAZIONE:
└── COGD50 (flag mer-modula + giacenza iniziale via COGD53)
├── Singola merce: trasferisce giacenza
└── Massiva: COGUA9 (articoli) o ciclo giacenze
IMPORTAZIONI DA MODULA (file .EXP):
├── COGD59 (riordino → aggiorna scorta min + genera COGRIORD)
├── COGD81 (scorta minima → aggiorna mer-sco-min)
└── COGD75 (scorta massima → aggiorna mer-sco-max)
TRASFERIMENTI:
└── COGD68 (da mag. eccedenze a mag. Modula)
├── Genera 2 bolle (uscita + entrata)
└── Invio a COGD53 (comunicazione al Modula)
CONTROLLO:
└── COGD60 (quadratura Coge vs Modula)
└── Confronta COGMOMAG/COGRIGBP vs COGMDRIG/COGIMPCA
SINCRONIZZAZIONE DB FRONTIERA:
├── DFNM01 (esportazione articoli → DFMERCIPREST + tabelle IMP*)
│ ├── Nuovo articolo: INSERT dfmerciprest + imparticoli + scomparti + confezioni + aree
│ └── Modifica: UPDATE dfmerciprest + imparticoli/sostituzione (se variati) + scomparti (solo nuovi) + confezioni + aree
└── DFNM03 (aggiornamento stato liste ← EXPORDTES/EXPORDDET)
├── Stato EXE: refresh qta evase COGMDRIG (parziali, lista non ancora acquisita)
├── Stato COMPL: aggiornamento finale mdt-stato + refresh qta evase + marcatura acquisizione
└── Liste LP/BP: verifica quadratura qta evase vs qta BDP (solo a COMPL)
ABILITAZIONE AUTOMATICA (versamento da menu'):
Permette di versare articoli non ancora abilitati a Modula senza passare
da COGD50. L'abilitazione avviene al momento del versamento con conferma
operatore e verifica sincrona dell'acquisizione da parte di Modula.
└── COGD53DF (se tm-cfg-modula-db-frontiera="S")
├── Conferma operatore per ogni articolo non abilitato
├── Abilitazione mer-modula + esportazione via DFNM01
└── Attesa acquisizione (polling su IMPARTICOLI, bloccante)
Nota: COGD53/COGD53DF (integrazione Modula — comunicazione ERP↔Modula) sono documentati in flussi/moduli-servizio.md.
6. File principali¶
| File | Prefisso | Descrizione |
|---|---|---|
| COGMDLCS | mds- | Associazione merce-confezione/scomparto/area (tipo+merce+codice) |
| COGMDRIG | mdr- | Righe movimenti Modula (qta evasa, trasferita, tipo LP/LV) |
| COGMDTES | mdt- | Testate movimenti Modula (doc, causale, tipo, data) |
| COGIMPCA | mpc- | Importazioni carico da Modula |
| COGRIORD | rio- | Proposte di riordino generate da importazione |
| DFSEMAFORO | df-smf- | Semaforo sincronizzazioni: data/ora ultimo run per tabella |
| EXPORDTES | e-ordt- | DB frontiera: testate liste in uscita da Modula (stato + flag agg-area) |
| EXPORDDET | e-ordd- | DB frontiera: dettaglio righe liste con qta evasa per articolo/lotto |
| ARPSTPRC | a-stpr- | Stato processi AGLANCIO (limiti record/errori, log procedura) |
| DFMERCIPREST | df-mpr- | DB frontiera Modula: anagrafica articoli esportata |
| IMPARTICOLI | art- | DB frontiera: articoli da importare su Modula |
| IMPSCOARTICOLI | cap- | DB frontiera: scomparti per articolo |
| IMPCONFART | conf- | DB frontiera: confezioni per articolo |
| IMPARTAREE | ara- | DB frontiera: aree per articolo |
| IMPARTSOST | sost- | DB frontiera: sostituzioni codice avanzato (vecchio→nuovo) |
7. Tabella riepilogativa¶
| # | Programma | Righe | Tipo | Funzione |
|---|---|---|---|---|
| 1 | COGB61 | 985 | Tabella | Confezioni Modula (tipo TC su COGTABEL) |
| 2 | COGB62 | 980 | Tabella | Tipi scomparto Modula (tipo TS su COGTABEL) |
| 3 | COGB63 | 1.210 | Tabella | Associazione confezioni/scomparti/aree per merce (COGMDLCS) |
| 4 | COGD50 | 844 | Operativo | Attivazione articoli su Modula + estrazione massiva |
| 5 | COGD59 | 696 | Batch | Importazione riordino da Modula (.EXP → COGRIORD) |
| 6 | COGD81 | 619 | Batch | Importazione scorta minima da Modula |
| 7 | COGD75 | 648 | Batch | Importazione scorta massima da Modula |
| 8 | COGD60 | 1.414 | Controllo | Quadratura Coge-Modula per merce/periodo |
| 9 | COGD68 | 1.688 | Operativo | Carico da magazzino eccedenze a Modula con generazione bolle |
| 10 | DFNM01 | 1.632 | Batch/KPN | Esportazione articoli verso DB frontiera Modula (DFMERCIPREST + IMP*) |
| 11 | DFNM03 | 1.049 | Batch/KPN | Aggiornamento stato liste da DB frontiera Modula (EXPORDTES/EXPORDDET → COGMDTES/COGMDRIG), con refresh qta evase anche in stato EXE |
| TOTALE | 11.765 |