COGP61 - Stampa Report Ritardi di Consegna
Panoramica
COGP61 e' un programma di stampa batch con maschera GUI di selezione parametri: produce il "Report Ritardi di Consegna" fornitore per fornitore, confrontando le consegne attese (righe ordine e loro schedulazione) con gli arrivi effettivi registrati nei movimenti di magazzino. Per ogni fornitore/gruppo merce classifica le quantita' in fasce di ritardo (regolare, 1-7 gg, 8-15 gg, 16-30 gg, oltre 30 gg, non consegnato) e calcola percentuali e un indice di puntualita' ("Punti"). Viene lanciato da menu ricevendo l'area comune stringhe; l'operatore imposta range fornitori e periodo, poi conferma con F3.
| Menu |
Percorso |
| Magazzino |
Entrate > Stampe > Stampa Ritardi di Consegna |
Struttura del programma
File e tabelle utilizzati
| File/Tabella |
Tipo |
Descrizione |
| COGTESOR |
Indicizzato (input) |
Testate ordini; scansione per fornitore (tor-tipo1 = 'F') e periodo tramite chiave tor-chi1 |
| COGRIGOR |
Indicizzato (input) |
Righe ordine; per ogni testata si leggono le righe (ror-*) con merce e quantita' ordinata |
| COGCONOR |
Indicizzato (input) |
Consegne programmate degli ordini; scansione su chiave secondaria cor-chia2 per verificare le consegne attese nel periodo |
| COGMOMAG |
Indicizzato (input) |
Movimenti di magazzino; individua gli arrivi effettivi legati all'ordine (arrivo effettivo) |
| COGGEANA |
Indicizzato (input) |
Anagrafica generale; letta per la ragione sociale del fornitore (tipo F) |
| COGTRANS |
Indicizzato (transito temporaneo) |
File di appoggio con i totali del report per fornitore/gruppo (trs-rec), creato e cancellato dal programma |
| COGTRANS1 |
Indicizzato (transito temporaneo) |
Transito consegne attese (trs1-rec), per merce/ordine/data |
| COGTRANS2 |
Indicizzato (transito temporaneo) |
Transito arrivi da magazzino (trs2-rec), per merce/ordine/data |
| FLSTA (flsta) |
File di stampa |
Canale di output del report (record riga) |
I tre transiti sono file su disco temporanei, con nome costruito in apri in ext-tmp-dir e suffisso operatore (#trsp61., #trs1p61., #trs2p61.); vengono cancellati in z-chiudi con delete file.
Copybook principali
| Copybook |
Descrizione |
| cogp61.select / cogp61.fd / cogp61.wrk / cogp61.prc / cogp61.decla |
Componenti generati da Screens per file, working e routine standard del programma |
| cogp61-01.scr |
Screen di selezione parametri |
| feurtab.fd / cogfiles.cpy |
Definizione file principali del gestionale |
| flsta.fd / flsta.cpy |
Definizione del file di stampa |
| cogazien.cpy |
Dati azienda (usa az-sys per lo share) |
| utils52.cpy / utils54.cpy / utils65.cpy |
Aree per le subroutine di campo data (S52), stampa (S54), ricerca anagrafica (S65) |
| utilu09.cpy |
Area per COGU09 (ricerca movimento magazzino legato a ordine) |
| wgrave / wnscr / wopenf / wstato / grave / mmmask / opengen / stato / stato1 / winmsg |
Copybook standard di errore, stato file, apertura e maschera |
| wcont.cpy / wcont1.cpy |
Aree di linkage comuni (stringhe) |
Chiamate a sottoprogrammi (CALL)
| Programma |
Scopo |
| COGS54 |
Gestione del dispositivo/parametri di stampa (posizione, larghezza, righe pagina s54-stm-lin); chiamata iniziale e finale (s54-after-print) |
| COGS65W |
Ricerca/validazione anagrafica fornitore sui campi "Da fornitore" e "A fornitore" |
| COGU09 |
Ricerca dei movimenti di magazzino collegati a una riga ordine (operazione cerca-magazzino) |
| DTPRG |
Conversione data in progressivo giornaliero per calcolare i giorni di ritardo (usato in calc_rit) |
Nota: nel sorgente la chiamata a COGU09 (paragrafi b3_loop/b3_out) risulta commentata/disattivata; il ramo attivo di produzione degli arrivi passa dai movimenti letti direttamente su COGMOMAG.
Logica di elaborazione
-
apri / main: inizializza il programma, carica lingua e dati azienda, apre i file, costruisce i nomi dei tre transiti temporanei, imposta i tasti funzione (F3 conferma, F8 calendario, F9 ricerca avanzata) e visualizza la maschera.
-
a4 e paragrafi a-tm-*: gestione della maschera di selezione. L'operatore inserisce fornitore da/a (a-tm-for-da, a-tm-for-a, validati contro COGGEANA in x-controlla-tm-for-*) e data inizio/fine periodo (a-tm-da-data, a-tm-a-data). I default sono anno corrente, dal 01/01 al 31/12.
-
a-richiesta-conferma: rivalida tutti i campi (x-imposta-conferma) e apre la finestra di conferma stampa via COGS54; alla pressione di F3 procede.
-
b_ini: prepara i tre transiti (open output per svuotarli, con controllo "Funzione gia' in uso" se lo stato non e' 00, poi riapertura i-o).
-
b_src / b1_loop / b2_loop: scansione ordini fornitore nel periodo. Per ogni testata (COGTESOR tipo F) legge le righe (COGRIGOR); per ogni riga cerca le consegne programmate (src_cons su COGCONOR) e le scrive nel transito consegne (fill_trs1/wr_trs1, crea_da_tor_cons, scan_cons). In b2_out/b3_loop recupera gli arrivi da magazzino e li accumula sul transito arrivi (fill_trs2/wr_trs2).
-
b1_out / b10_loop / b11_loop: scansione quasi parallela dei due transiti (consegne attese COGTRANS1 vs arrivi COGTRANS2) per merce/fornitore/ordine/data. Per ogni abbinamento calcola la quantita' consegnata e, tramite aggio_trs, aggiorna il transito report COGTRANS. La quantita' residua non consegnata su ordini chiusi (ri_chiu = 'C') confluisce nel "non consegnato" via bool_aggio.
-
calc_rit: per ogni quantita' calcola il ritardo come differenza tra progressivo data di arrivo effettivo (in_data_bis) e progressivo data attesa (in_data), usando DTPRG; classifica in regolare / 1-7 / 8-15 / 16-30 / oltre 30 gg. Se in_data_bis = '99999999' la quantita' e' "non consegnata".
-
calc_perc: calcola le percentuali per fascia e l'indice "Punti" (media pesata: regolare 1,0; 1-7gg 0,9; 8-15gg 0,8; 16-30gg 0,5; oltre 30gg 0,3).
-
c_ini / c_sta / c_loop: fase di stampa. Riapre i transiti in input, scandisce COGTRANS in ordine fornitore, stampa testata pagina (testa_pag), testata fornitore (testa), righe di dettaglio per gruppo (corpo) e totali/coda per fornitore (coda, totali). La gestione salto pagina e' in bool_new_pg3/5/15 calcolando sul numero righe pagina s54-stm-lin.
-
c_end / fine / z-chiudi: chiude la stampa (COGS54 con s54-after-print), chiude e cancella i tre transiti e termina.
Note tecniche
- Il programma appartiene a Entrate (Magazzino) e misura la puntualita' dei FORNITORI negli arrivi: nonostante la label parli genericamente di "consegne", il perimetro reale e' il confronto tra consegne programmate d'ordine di acquisto e arrivi effettivi a magazzino.
- Le righe di stampa usano caratteri semigrafici box-drawing (codepage estesa) per disegnare la griglia del report; l'output e' a larghezza fissa 80 colonne.
- Il codice usa massicciamente
GO TO e PERFORM ... THRU (stile legacy pre-conversione Win) e un flag di ritorno fl_exit con valori E (errore), F (fine/non trovato), X (trovato), gestito manualmente nelle routine di I/O sui transiti e sui file principali.
- Il flag
fl_controlli viene usato per saltare i controlli di stato al primo accesso (pattern ricorrente nelle routine start_*, rdnxt_*, rd_*, wr_*, rwr_*).
- L'indice di puntualita' ("Punti") e' l'unico dato aggregato di sintesi: piu' alto e' migliore la performance del fornitore.
- Non usa configurazioni RNEWCONF. Il ramo COGU09 e la finestra "SHARE di MS-DOS" sono presenti ma commentati (retaggio della versione DOS).