Vai al contenuto

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.

  1. 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).
  2. Default parametri (a4): periodo predefinito 01/01–31/12 dell'anno di sistema.
  3. 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 usa COGE18 (F8), la ricerca clienti usa COGS65W, l'accept data usa il calendario COGS52W (F8).
  4. Conferma (a-richiesta-conferma): x-imposta-conferma riverifica tutti i campi; se tutto e' valido si apre la maschera di scelta stampante/anteprima tramite COGS54. Alla conferma (f3) parte il SORT flsort.
  5. Input procedure (elabora): estrazione e rilascio al sort dei record.
  6. Output procedure (stampa): lettura ordinata dal sort, gestione delle rotture e scrittura del report.
  7. 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 su mag-tipocf = 'C' e mag-nonno = ana-cod), scorrendo con rdnxt-cogmomag.
  • Filtri sulle righe:
  • tipo bolla mag-tipob1 = I o D (bolle/documenti di vendita);
  • data movimento (mag-aa3/mm3/gg3) compresa nell'intervallo tm-data-datm-data-a (se entrambe le date sono zero il filtro data e' disattivato);
  • cliente effettivo (mag-nonno, oppure mag-padre/mag-figlio se 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 con tes-cura = 'V' o spazio; tes-vettore1 fornisce la descrizione vettore, tes-vet il codice.
  • I valori validi vengono travasati nel record recsort ed emessi con release 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 di s-vet chiude il vettore precedente scrivendo la riga di riempimento (rig-fil) e il totale (rig-tot con tot-vet), quindi stampa l'intestazione del nuovo vettore (tes-vettore) e azzera il totalizzatore.
  • Rottura cliente (wr-cli): al cambio di s-cli legge COGGEANA (tipo C) e stampa la riga cliente (tes-cli con 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 righe ctr-rig rispetto 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 tipo F (fornitore), da cui si preleva il nome mostrato in maschera. In stampa il nome vettore usato per il raggruppamento e' invece la descrizione libera tes-vettore1 presente sulla testata del documento.
  • Sono elaborati solo i documenti con tipo trasporto tes-cura uguale a V (in cura del venditore) o vuoto.
  • L'intervallo date e' obbligatorio e deve ricadere nello stesso anno solare (controllo tm-aa-da = tm-aa-a in x-controlla-tm-data-a).
  • Il programma segue le convenzioni COBOL legacy del gestionale (uso di GO TO, PERFORM ... THRU e SORT con input/output procedure); non e' stato riscritto secondo le convenzioni piu' recenti descritte in CLAUDE.md.
  • Il periodo di default proposto in maschera e' l'intero anno solare corrente (01/01–31/12).