COGP07 — Stampa quantita' trasportate per vettore¶
| Campo | Valore |
|---|---|
| Sorgente | cbl/cogp07.cbl |
| Program-ID | cogp07 |
| Tipo | Programma GUI di stampa (report) |
| Posizione menu | Vendite > Stampe > Q.ta Trasportate x Vettore |
Scopo¶
COGP07 produce una stampa (report a caratteri, larghezza 132 colonne) delle
quantita' trasportate raggruppate per vettore. Per il periodo e i filtri
indicati dall'operatore scandisce i movimenti di magazzino relativi a bolle di
vendita (documenti di tipo I/D), ne recupera il vettore dalla testata
documento e stampa, ordinate per vettore e per cliente, le righe di bolla con
il relativo quantitativo, totalizzando la quantita' movimentata per ciascun
vettore.
L'operatore imposta tramite maschera i filtri:
- Vettore da / a (codice vettore, tabella generalizzata COGTABEL tipo 47).
- Cliente da / a (anagrafica clienti COGGEANA tipo
C). - Data partenza / arrivo (intervallo obbligatorio; deve appartenere allo stesso anno).
I filtri sono a intervallo aperto: vettore/cliente 0 significa
"dall'inizio" / "alla fine".
Struttura / Flusso¶
Il programma e' organizzato in una fase interattiva di raccolta parametri e in
una elaborazione basata su un SORT con input procedure e
output procedure.
- Inizializzazione (
main/apri): controllo abilitazione (ctr-abil),z-99-init-program, caricamento lingua (x-carica-lingua), lettura azienda (rd-azi), apertura file (open-files), impostazione tasti funzione previsti (F1 configura, F3 conferma, F8 aiuto/calendario, F9 ricerca avanzata), lettura divisa di conto (get-divisa-conto) e costruzione della maschera (rd-msk-pop,z-costruisci-controlli). - Default parametri (
a4): periodo predefinito 01/01–31/12 dell'anno di sistema. - Accept dei campi (paragrafi
a-tm-vet-da,a-tm-vet-a,a-tm-cli-da,a-tm-cli-a,a-tm-data-da,a-tm-data-a): ogni campo ha una routine di controllo dedicata (x-controlla-...) che valida il valore, ne carica la descrizione e colora il controllo (verde/rosso). L'aiuto sui vettori usaCOGE18(F8), la ricerca clienti usaCOGS65W, l'accept data usa il calendarioCOGS52W(F8). - Conferma (
a-richiesta-conferma):x-imposta-confermariverifica tutti i campi; se tutto e' valido si apre la maschera di scelta stampante/anteprima tramiteCOGS54. Alla conferma (f3) parte ilSORT flsort. - Input procedure (
elabora): estrazione e rilascio al sort dei record. - Output procedure (
stampa): lettura ordinata dal sort, gestione delle rotture e scrittura del report. - Chiusura (
fine/z-chiudi):z-close-files, chiusura window,z-99-exit-program,exit program.
File di ordinamento (SORT)¶
Il record di sort recsort e' dichiarato manualmente nel sorgente (sd flsort,
assegnato a SORT). Chiave di ordinamento ascendente:
s-vet-cod s-cli s-bolla s-merce
Campi principali del record: s-vet-cod (codice vettore), s-vet
(descrizione vettore), s-cli (cliente), s-bolla (magazzino/anno/tipo/numero
documento), s-merce (gruppo/sottogruppo/codice), s-data, s-qta.
Input procedure — elabora¶
- Scandisce l'anagrafica clienti COGGEANA per tipo
C(st-coggeana-notmin+rdnxt-coggeana); se non trova clienti emette l'avviso "CLIENTI NON RINTRACCIATI, CONTROLLARE". - Per ogni cliente accede a COGMOMAG per la chiave 4
(
st-cogmomag-notmin-chia4, filtro sumag-tipocf = 'C'emag-nonno = ana-cod), scorrendo conrdnxt-cogmomag. - Filtri sulle righe:
- tipo bolla
mag-tipob1=IoD(bolle/documenti di vendita); - data movimento (
mag-aa3/mm3/gg3) compresa nell'intervallotm-data-da…tm-data-a(se entrambe le date sono zero il filtro data e' disattivato); - cliente effettivo (
mag-nonno, oppuremag-padre/mag-figliose valorizzati) compreso nell'intervallo cliente; - vettore (
tes-vet) compreso nell'intervallo vettore. - Per ogni riga legge la testata COGTESBO (
rd-cogtesbo, chiave3 magazzino/anno/tipo/numero) per ricavare vettore e tipo trasporto: sono ammessi solo documenti contes-cura = 'V'o spazio;tes-vettore1fornisce la descrizione vettore,tes-vetil codice. - I valori validi vengono travasati nel record
recsorted emessi conrelease recsort; un contatore (n-release) conta i record rilasciati per il calcolo della percentuale di avanzamento.
Output procedure — stampa¶
Legge in sequenza dal sort (return flsort) e gestisce le rotture:
- Rottura vettore (
wr-vet): al cambio dis-vetchiude il vettore precedente scrivendo la riga di riempimento (rig-fil) e il totale (rig-totcontot-vet), quindi stampa l'intestazione del nuovo vettore (tes-vettore) e azzera il totalizzatore. - Rottura cliente (
wr-cli): al cambio dis-clilegge COGGEANA (tipoC) e stampa la riga cliente (tes-clicon codice e nome). - Riga di dettaglio (
rigel): documento, data, codice merce (gruppo/sottogruppo/codice), descrizione merce (da COGMERCI,rd-cogmerci) e quantita' (rg-qta). - Testata di pagina (
testa/testa1,testa2,testa3): titolo, data di stampa, intervallo date, numero pagina; il salto pagina e' governato dal contatore righectr-rigrispetto alle righe stampabili (s54-stm-lin). Se la stampante e' spenta/inattiva viene mostrato il messaggio bloccante "STAMPANTE SPENTA O INATTIVA, CONTROLLARE". - Chiusura report (
st-90): riga di riempimento e totale dell'ultimo vettore.
Al termine (ex-stampa) viene richiamato COGS54 con s54-after-print = "S"
per chiudere la stampa.
File e tabelle principali¶
| File logico | Record | Accesso | Uso |
|---|---|---|---|
| COGMOMAG | mag-recz |
Input (chiave 4) | Righe movimenti di magazzino delle bolle di vendita; scan per cliente (mag-tipocf/mag-nonno), filtro tipo bolla (mag-tipob1) e data (mag-aa3/mm3/gg3) |
| COGTESBO | tes-rec |
Input (chiave 3) | Testate documento: vettore (tes-vet, tes-vettore1) e tipo trasporto (tes-cura) |
| COGGEANA | ana-rec |
Input | Anagrafica clienti (tipo C) e vettori (tipo F, per il nome sul controllo); campi ana-cod, ana-nome |
| COGTABEL | euta-rec |
Input | Tabella generalizzata; validazione vettore su euta-tipo = 47 (k-euta-tipo-vettori), euta-codr |
| COGMERCI | mer-rec |
Input | Anagrafica merci per la descrizione (mer-descr); chiave gruppo/sottogruppo/codice |
| FEURTAB | — | Input | Tabella file Eurosystem (apertura standard) |
| FLSTA | — | — | Gestione stato/stampante (copybook flsta) |
| FLSORT | recsort |
SORT | File di ordinamento temporaneo (dichiarato nel sorgente) |
I record e le routine di accesso (rd-, st-, rdnxt-) delle tabelle
COGTABEL, COGMERCI, COGGEANA, COGTESBO, COGMOMAG provengono dai copybook
generati da Screens (.select, .fd, .k01); la chiave secondaria 5 di
COGMOMAG e' inclusa manualmente a fine procedure division
(copy "cogmomag.k05") in aggiunta alla chiave primaria generata da Screens.
La chiave 4 usata dalla scansione (st-cogmomag-notmin-chia4) e' definita nel
record mag-recz (gruppo mag-chia4).
Copybook principali¶
Screen Designer (in cbl/screens/)¶
| Copybook | Contenuto |
|---|---|
cogp07.select |
SELECT dei file (COGTABEL, COGMERCI, COGGEANA, COGTESBO, COGMOMAG) |
cogp07.fd |
FD dei file gestiti |
cogp07.wrk |
Working storage della maschera |
cogp07.decla |
Declaratives |
cogp07.prc |
Routine di apertura/chiusura, aiuti, colori, lingua, accept data |
cogp07-01.scr |
Maschera dei parametri |
Strutture dati e utility (in cpy/)¶
| Copybook | Contenuto |
|---|---|
feurtab.fd / cogfiles.cpy |
FD tabella file Eurosystem |
flsta.fd / flsta.cpy |
Gestione stato/stampante |
cogazien.cpy |
Dati azienda |
k-u10.cpy |
Costanti COGU10 |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
wcont.cpy / wcont1.cpy |
Aree stringhe in linkage |
utils52.cpy |
Interfaccia COGS52 (calendario) |
utils54.cpy |
Interfaccia COGS54 (scelta stampante/anteprima) |
utils65.cpy |
Interfaccia COGS65 (ricerca anagrafiche) |
utilu10.cpy |
Interfaccia COGU10 (divisa/importi) |
utile18.cpy |
Interfaccia COGE18 (aiuto vettori) |
grave.cpy / mmmask.cpy / opengen.cpy / stato.cpy / stato1.cpy / winmsg.cpy |
Routine standard di programma GUI |
getdcont.cpy |
Routine get-divisa-conto (chiama COGU10W) |
cogmomag.k05 |
Chiave secondaria 5 di COGMOMAG (inclusa manualmente) |
Sottoprogrammi chiamati (CALL)¶
| Programma | Sorgente | Scopo |
|---|---|---|
| COGE18 | cbl/coge18.cbl |
Aiuto/ricerca vettore (F8 sui campi vettore da/a) |
| COGS65W | cbl/cogs65w.cbl |
Ricerca anagrafica cliente (accept clienti da/a) |
| COGS52W | cbl/cogs52.cbl (var. W) |
Calendario / edit data (accept e visualizzazione date) |
| COGS54 | cbl/cogs54.cbl |
Gestione stampa: scelta stampante/anteprima e chiusura stampa (s54-after-print) |
| COGU10W | cbl/cogu10w.cbl |
Divisa di conto per data (via getdcont.cpy) |
| READLNG | — | Caricamento etichette/messaggi in lingua (in cogp07.prc) |
Note¶
- I vettori sono validati due volte: come elemento della tabella
generalizzata COGTABEL (
euta-tipo = 47) e come anagrafica COGGEANA di tipoF(fornitore), da cui si preleva il nome mostrato in maschera. In stampa il nome vettore usato per il raggruppamento e' invece la descrizione liberates-vettore1presente sulla testata del documento. - Sono elaborati solo i documenti con tipo trasporto
tes-curauguale aV(in cura del venditore) o vuoto. - L'intervallo date e' obbligatorio e deve ricadere nello stesso anno solare
(controllo
tm-aa-da = tm-aa-ainx-controlla-tm-data-a). - Il programma segue le convenzioni COBOL legacy del gestionale (uso di
GO TO,PERFORM ... THRUeSORTcon input/output procedure); non e' stato riscritto secondo le convenzioni piu' recenti descritte inCLAUDE.md. - Il periodo di default proposto in maschera e' l'intero anno solare corrente (01/01–31/12).