Vai al contenuto

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.

Posizione nel menu

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

  1. 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.

  2. 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.

  3. a-richiesta-conferma: rivalida tutti i campi (x-imposta-conferma) e apre la finestra di conferma stampa via COGS54; alla pressione di F3 procede.

  4. 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).

  5. 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).

  6. 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.

  7. 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".

  8. 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).

  9. 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.

  10. 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).