COGM84 - Controllo Giacenza / Scorta Minima
Panoramica
Programma interattivo GUI per il calcolo del sottoscorta e la generazione del report "Stampa Controllo Scorte". Confronta la giacenza fisica di un intervallo di articoli con la scorta minima: se inferiore, calcola il riordino (scorta massima - giacenza). Supporta quattro tipi di elaborazione: solo calcolo (C), calcolo+stampa (E), solo stampa su transito temporaneo (S), ristampa da archivio esistente (P). I risultati vengono scritti nei file di transito TRAN-V21/TRBN-V21 e nell'archivio definitivo COGRIORD (per i tipi C ed E). Il campo prezzo nell'archivio di riordino non viene valorizzato (delegato a COGO70).
Tipo: Programma interattivo GUI con stampa.
| Menu |
Percorso |
| Magazzino |
Giacenze & Sottoscorta > Scorte > Controllo Giac./Scorta Min. |
Struttura del programma
File e tabelle utilizzati
| File/Tabella |
Tipo |
Descrizione |
| FEURTAB (cogfiles) |
Input |
Tabella parametri generali |
| File gestiti da cogm84.select |
I-O |
File principali (COGMERCI, COGSLMAG, COGRIORD, ecc.) |
| TRAN-V21 |
I-O (temp/arc) |
File transito riordino (path costruito su ext-arc-dir) |
| TRBN-V21 |
I-O (temp/arc) |
File transito riordino binario (path costruito su ext-arc-dir) |
| FLSTA |
I-O |
File stato |
Costruzione path file transito
TRAN-V21: ext-arc-dir + slash + '#$COGV21.ARC'
TRBN-V21: ext-arc-dir + slash + '#$BOGV21.ARC'
Per il tipo elaborazione "S" (solo stampa transitoria), i nomi vengono cambiati dal paragrafo cambia-nomi in modo che non sovrascrivano l'archivio permanente.
Copybook principali
| Copybook |
Descrizione |
| cogm84.select |
SELECT per i file del programma |
| cogm84.fd |
File description |
| cogm84.wrk |
Working storage generata da Screens |
| cogm84-01.scr |
Screen section della maschera |
| cogm84.decla |
Declaratives (file: tran-v21, trbn-v21, flsta) |
| cogm84.prc |
Procedure generate da Screens |
| cogfiles.cpy |
Record FEURTAB |
| k-personal.cpy |
Costanti personalizzazione cliente |
| k-u10.cpy |
Costanti divisa |
| wgrave.cpy |
Errori gravi |
| wnscr.cpy |
Gestione schermata |
| wopenf.cpy |
Apertura file |
| wstato.cpy |
Stato operazioni |
| cogazien.cpy |
Dati azienda |
| utile35.cpy |
Utility E35 |
| utilw06.cpy |
Utility stampa (W06) |
| utilw36.cpy |
Utility ricerca magazzino (W36) |
| utils52.cpy |
Utility date (COGS52) |
| UTILS54.CPY |
Utility S54 |
| UTILU16.CPY |
Utility U16 (range merce) |
| UTILU10.CPY |
Utility divisa (COGU10) |
| UTILS50.CPY |
Utility S50 |
| utils68.cpy |
Utility ricerca merce (COGS68) |
| utilncnf.cpy |
Lettura configurazione (RNEWCONF) |
| util021.cpy |
Area linkage COG021 (stampa dettaglio) |
| utils01f.cpy |
Area linkage COGS01F |
| wcont.cpy / wcont1.cpy |
Area comunicazione chiamante |
Variabili principali della maschera (tab-maschera)
| Campo |
Tipo |
Descrizione |
| tm-mag |
X(01) |
Codice magazzino |
| tm-mag-des |
X(30) |
Descrizione magazzino (display) |
| tm-ela |
X(01) |
Tipo elaborazione: C/E/S/P |
| tm-merce-da |
X(09) |
Codice merce iniziale (gru+sot+cod) |
| tm-merce-da-des |
X(30) |
Descrizione merce iniziale (display) |
| tm-merce-a |
X(09) |
Codice merce finale |
| tm-merce-a-des |
X(30) |
Descrizione merce finale (display) |
Configurazione (tm-cfg)
| Campo |
Tipo |
Descrizione |
| tm-cfg-scorte-per-magazzino |
X(01) |
"S" = usa giacenza per magazzino specifico; altro = giacenza totale |
Variabili di elaborazione chiave
| Variabile |
Tipo |
Descrizione |
| w-giacenza-fisica |
S9(08)v999 |
Giacenza fisica articolo corrente |
| w-riordino |
9(08)v999 |
Quantita' calcolata di riordino |
| fl-calcolo-ok |
X(01) |
"S" se il calcolo e' andato a buon fine |
| w-cur-id |
X(04) "STGC" |
Identificativo corrente per COG021 |
| c-confezione |
9(08) |
Numero confezioni (per arrotondamento) |
| w-mer-sco-min |
9(06)v999 |
Scorta minima letta da COGMERCI |
| w-mer-sco-max |
9(06)v999 |
Scorta massima letta da COGMERCI |
Record stampa (rigel)
| Campo |
Tipo |
Descrizione |
| rg-merce |
X(50) |
Codice + descrizione articolo |
| rg-giacenza |
PIC ------9,999 |
Giacenza (negativa se sotto zero) |
| rg-sco-min |
PIC zzzzzzz,zzz |
Scorta minima |
| rg-sco-max |
PIC zzzzzzz,zzz |
Scorta massima |
| rg-riordino |
PIC zzzzzz,zzz |
Quantita' di riordino |
Chiamate a sottoprogrammi (CALL)
| Programma |
Scopo |
| COGS68 |
Ricerca merce (campi da/a) |
| COGS52 |
Gestione calendario/date |
| COGU10 |
Recupero divisa conto (get-divisa-conto) |
| COGS54 |
Utility S54 |
| COGU16W |
Range merce (UTILU16; cancellato con cancel a chiusura) |
| COGS50 |
Utility S50 (chiuso con fl-opn='C' a fine programma) |
| COG021 |
Stampa dettaglio (F1 - "det stampa") con id "STGC" |
| RNEWCONF |
Lettura configurazione (x99-confi) |
Flusso di elaborazione
1. Inizializzazione (apri)
ctr-abil per abilitazione
z-99-init-program
x-carica-lingua, rd-azi, open-files
x99-confi: legge RNEWCONF per tm-cfg-scorte-per-magazzino
- Costruisce path TRAN-V21 e TRBN-V21 (su ext-arc-dir)
- Imposta tasti funzione presenti (F1 det-stampa, F3 conferma, F8 aiuto/calendario, F9 ricerca avanzata)
get-divisa-conto
- Prepara controlli S68 per da/a merce
- a-tm-mag: accept magazzino; F8 ->
send-w36; F1 -> COG021; F3 -> a-richiesta-conferma; valida magazzino
- a-tm-ela: accept tipo elaborazione via COGS60 (opzioni C/E/S/P); F3 ->
a-richiesta-conferma
- a-tm-merce-da: accept range merce iniziale via COGS68+UTILU16; F3 ->
a-richiesta-conferma
- a-tm-merce-a: accept range merce finale; visibile solo se abilitato; F3 ->
a-richiesta-conferma
- a-richiesta-conferma: valida tutti i campi;
acc-conf per conferma utente
3. Elaborazione (evaluate tm-ela)
WHEN "C": esegui-calcolo
WHEN "E": esegui-calcolo; se ok -> d-stampa
WHEN "S": cambia-nomi; esegui-calcolo; se ok -> d-stampa; cancella file transito
WHEN "P": d-stampa (ristampa da archivio esistente)
4. Calcolo (esegui-calcolo)
- Apre TRAN-V21 e TRBN-V21
- Scorre COGMERCI nell'intervallo tm-merce-da / tm-merce-a
- Per ogni merce:
- Legge giacenza fisica dal saldo magazzino (COGSLMAG):
- Se
tm-cfg-scorte-per-magazzino = "S": usa saldo del magazzino tm-mag
- Altrimenti: usa giacenza totale
- Legge
mer-sco-min e mer-sco-max da COGMERCI
- Se giacenza < scorta minima:
w-riordino = w-mer-sco-max - w-giacenza-fisica
- Se
c-confezione > 0: arrotonda per multiplo di confezione
- Scrive record in TRAN-V21 e TRBN-V21
- Imposta
fl-calcolo-ok = "S" se completato senza errori
5. Stampa (d-stampa ... ex-d)
- Apre TRAN-V21 in lettura
- Stampa intestazione con data e nome azienda
- Per ogni record in TRAN-V21 con riordino > 0: formatta riga
rigel e scrive su report
- Chiude TRAN-V21
- Richiama la routine di stampa (utilw06 / stampante configurata)
6. Cambio nomi per tipo "S" (cambia-nomi)
- Rinomina i path di TRAN-V21 e TRBN-V21 in nomi temporanei
- Cosi' il calcolo tipo "S" non sovrascrive l'archivio permanente
- I file temporanei vengono cancellati dopo la stampa
7. Chiusura (fine -> z-chiudi)
z-close-files
cancel 'COGU16W'
- COGS50 con fl-opn='C' (chiusura)
close window w-sv-cur-prg
z-99-exit-program
Note tecniche
- La variabile
w-cur-id = "STGC" ("stampa giacenza") e' passata a COG021 per la stampa del dettaglio (F1).
- Il campo RIO-CURRENCY dell'archivio COGRIORD non viene valorizzato da questo programma: il commento nel sorgente dice esplicitamente che sara' valorizzato da COGO70 se necessario.
w-siz-merce = 42: larghezza campo merce nella riga di stampa.
- La tolleranza confezione: se
c-confezione > 0, la quantita' di riordino viene arrotondata al multiplo di confezione per eccesso.
- UTILU16 (
COGU16W) gestisce il range di merce; viene cancellato con cancel 'COGU16W' alla chiusura.
- Il tipo elaborazione "P" (ristampa) non apre ne' modifica TRAN-V21: usa direttamente l'archivio permanente COGRIORD per la stampa.