COGP60 - Stampa Anomalie di Fornitura
Panoramica
Programma di stampa batch con maschera GUI che produce il "Report Anomalie di
Fornitura": per un intervallo di fornitori e un intervallo di date, conta per ogni
fornitore il numero di consegne (carichi da fornitore) e le anomalie riscontrate,
raggruppate per codice/descrizione anomalia, con la relativa percentuale. Il calcolo
avviene in due fasi: prima aggrega i dati in un file di transito temporaneo
(COGTRANS), poi ne stampa il contenuto. Viene avviato dal menu ricevendo il gruppo
linkage stringhe.
| Menu |
Percorso |
| Magazzino |
Entrate > Stampe > Stampa Anomalie di Fornitura |
Struttura del programma
File e tabelle utilizzati
| File/Tabella |
Tipo |
Descrizione |
feurtab |
Indexed (via cogfiles.cpy) |
Contenitore delle tabelle COGE lette |
COGTESBO |
Indexed |
Testate documenti/bolle: scansione per data (tes-chia2/tes-data-r), filtrata su tipo bolla C, tipo cliente/fornitore F e codice fornitore (tes-nonno) |
COGGENER |
Indexed |
Tabella generica: righe di tipo AF (anomalie fornitura) collegate al documento (gnr-tip, gnr-parte-1/-2, gnr-des) |
COGGEANA |
Indexed |
Anagrafica generale: recupero nome fornitore (ana-nome, tipo F) sia in fase di calcolo sia nella validazione maschera |
COGTRANS |
Indexed (temporaneo) |
File di transito creato e distrutto dal programma: accumula i dati fornitore (tipo D) e i vettori anomalia (tipo V) |
flsta |
Stampa |
File di stampa (record riga) |
Copybook principali
| Copybook |
Descrizione |
cogfiles.cpy |
Layout record delle tabelle in feurtab |
cogp60.select / cogp60.fd / cogp60.wrk / cogp60.prc / cogp60.decla / cogp60-01.scr |
File generati da Screens per il programma |
cogazien.cpy |
Record azienda (az-sys, ecc.) |
utils52.cpy |
Area parametri subroutine data / calendario (S52) |
utils54.cpy |
Area parametri subroutine di stampa/conferma (S54) |
utils65.cpy |
Area parametri ricerca clienti/fornitori (S65) |
wstato / wopenf / wgrave / wnscr |
Copybook standard di stato/apertura/errori/schermo |
Chiamate a sottoprogrammi (CALL)
| Programma |
Scopo |
COGS54 |
Selezione stampante / conferma stampa (80 col) e chiusura post-stampa (s54-after-print); fornisce anche s54-stm-lin (righe per pagina) |
COGS65W |
Ricerca generalizzata fornitori per i campi "Da fornitore" e "A fornitore" |
Logica di elaborazione
apri: init programma, ctr-abil, lingua, rd-azi. Costruisce il nome del file
di transito temporaneo in ext-tmp-dir (#$trsp60.<operatore>, univoco per
operatore) e imposta fl_share in base al sistema operativo (az-sys = 'W').
Prepara la maschera "Report Anomalie di Fornitura".
a4 + a-tm-*: default di data (1/1 - 31/12 dell'anno corrente) e accept dei
campi maschera (tm-for-da, tm-for-a, tm-da-data, tm-a-data) con ricerca
S65 sui fornitori, calendario S52 sulle date, gestione mouse (x-test-mouse) ed
eccezioni. F3 porta a a-richiesta-conferma.
- Controlli campo (
x-controlla-tm-for-da/-for-a/-da-data/-a-data):
validazione fornitori su COGGEANA (tipo F), gestione estremi
"dall'inizio"/"alla fine", coerenza degli intervalli. x-imposta-conferma li
riesegue tutti.
a-richiesta-conferma: COGS54 per la scelta stampante (80 col); se F3, procede
alla fase di calcolo.
- Fase di calcolo (
b_ini → b_end):
b_ini: riapre COGTRANS in output (test "funzione gia' in uso"), poi in
i-o.
b_src/b_loop: scorre COGTESBO per data (start_tes/rdnxt_tes), filtra i
documenti (tipo bolla C, tipo F, fornitore nell'intervallo). Per ogni
consegna valida crea/aggiorna il record fornitore su COGTRANS (tipo D, via
nuovo_for/aggio_for, incrementando trs-consegne).
b_loop1: per ciascun documento scorre COGGENER cercando le righe AF
collegate (gnr-parte-1 = tes-chia3); ogni anomalia incrementa il contatore
anomalie del fornitore (record D) e il contatore del singolo vettore anomalia
(record V, chiave trs-cod-af = parte 2 di COGGENER, descrizione da
gnr-des).
b_end: chiude e riapre COGTRANS in input.
- Fase di stampa (
c_ini → c_end):
c_ini: se non ci sono dati avvisa e torna a a4; se ci sono consegne ma
nessuna anomalia chiede conferma all'operatore.
c_loop: scorre i record fornitore (tipo D) di COGTRANS, stampa la testata
di rottura fornitore (testa: consegne, anomalie, percentuale).
c_loop1: per ogni fornitore scorre i vettori anomalia (tipo V) e stampa
corpo (codice anomalia, descrizione, numero, percentuale sulle consegne).
Gestione salto pagina con bool_new_pg1/bool_new_pg5 (soglie basate su
s54-stm-lin).
c_end: COGS54 con s54-after-print.
fine/z-chiudi: z-close-files, chiusura e cancellazione del file
COGTRANS (delete file), chiusura finestra, z-99-exit-program, exit program.
Note tecniche
COGTRANS e' una tabella temporanea dichiarata manualmente nel sorgente
(SELECT esplicito nel file-control, FD e layout trs-rec nel file section):
non e' gestita da Screens. Il nome file (nome_trs) e' costruito in ext-tmp-dir
con suffisso operatore per garantire l'univocita' tra utenti concorrenti;
l'apertura iniziale in output funge da lock ("Funzione gia' in uso
dall'operatore").
- Il record di transito ha due tipi (campo
trs-tipo): D = riepilogo per
fornitore (consegne, totale anomalie), V = vettore per singola anomalia
(descrizione, conteggio).
- Le percentuali (
w_perc) sono calcolate come anomalie * 100 / consegne.
- Le routine di I/O su
COGTRANS/COGTESBO/COGGENER sono paragrafi dedicati
(start_*, rdnxt_*, rd_trs, wr_trs, rwr_trs) con gestione di stato 99
(retry) ed errore grave (grave).
- Presenti blocchi commentati legacy per la gestione dello SHARE di MS-DOS
(
opn_wind_for_dos, SYSTEM "SHARE"), non piu' attivi.
- L'etichetta di menu "Stampa Anomalie di Fornitura" corrisponde alla funzione
reale (report "Anomalie di Fornitura").