Vai al contenuto

COGO39 — Visualizzazione consegne dirette

Intestazione

Campo Valore
Sorgente cbl/cogo39.cbl
Program-ID cogo39
Tipo Programma interattivo con maschera e griglia spaginata
Posizione menu Ordini > Clienti > Visualizzazioni > Consegne Dirette

Scopo

COGO39 estrae e visualizza in griglia le consegne dirette, cioe' i collegamenti registrati in COGGENER con tipo 'CD' tra ordini di provenienza (cliente) e ordini di destinazione (fornitore). Il programma legge i riferimenti COGGENER, risolve le testate ordine collegate su COGTESOR e produce un elenco con:

  • riferimento e data decorrenza dell'ordine di partenza (parte-1 del collegamento) piu' anagrafica cliente;
  • riferimento e data decorrenza dell'eventuale ordine collegato (parte-2 del collegamento) piu' anagrafica fornitore;
  • per il tipo estrazione "evase" ('3'), i documenti di magazzino (bolle) collegati in entrata e in uscita, risolti tramite COGU09 su COGTESBO.

L'utente filtra per intervallo di date, tipo consegna (aperte/evase/tutte), criterio di estrazione (per data ordine o per data consegna), cliente e cliente di consegna. Il risultato e' mostrato in una griglia paginata, esportabile in Excel e stampabile.


Struttura / Flusso

Il programma segue il pattern standard delle maschere con griglia spaginata (subroutine COGS52/COGS60/COGS65, gestione GRIDADMN, spaginamento fscrol2.cpy/utilpggr.cpy).

  1. apri — init programma (z-99-init-program), controllo abilitazione, lettura azienda, apertura file. Costruisce il nome del file di transito temporaneo COGTRANS come <ext-tmp-dir>/#$cogo39.<wo-oper><wo-parametro>. Attiva i tasti funzione previsti: F3 conferma, Shift+F4 personalizzazione griglia, Shift+F5 esporta Excel, F8 calendario, F9 stampa, F9 ricerca avanzata. Prepara la griglia (z-prepara-tm-grid, z-gridadmn-prepara).
  2. a4 — (re)inizializza il file di transito COGTRANS: close + open output (verifica che la funzione non sia gia' in uso da altro operatore, altrimenti messaggio bloccante e uscita), poi close + open i-o. Svuota la griglia, imposta i valori di default dei filtri: estrazione per data ordine (tm-estraz-per = 'O'), tipo consegna '1' (aperte), intervallo dal 01/01 al 31/12 dell'anno corrente.
  3. Accept dei campi filtro (a-tm-da-data, a-tm-a-data, a-tm-estraz-per, a-tm-tipo-cons, a-tm-cli, a-tm-for) — ciascuno con la propria routine di aiuto, la subroutine di gestione controllo (COGS52 per le date, COGS60 per le combo, COGS65W per cliente/fornitore) e il controllo di validita' con colorazione del campo. Navigazione con F2 (indietro), F3 (conferma → a-fine-dati), gestione mouse (x-test-mouse) ed evento ESC.
  4. a-fine-dati — controllo complessivo dei dati (x-controlla-dati); se ok, mostra clessidra "Estrazione dati in corso" ed esegue elabora che popola il file di transito COGTRANS.
  5. a-grid-ini / carica-tab — carica la prima pagina di righe dal transito nella griglia (z-costruisci-grid); se nessun record trovato mostra "Nessun ordine trovato!!" e torna ad a4.
  6. a-grid — ciclo di gestione griglia: paginazione avanti/indietro (pg-after-pg-dwn/pg-after-pg-up su COGTRANS), personalizzazione colonne (Shift+F4 → GRIDADMN), export Excel (Shift+F5 → z-esporta-paged-grid), stampa (F9 → stampa). Uscita con ESC → a-grid-finea4.
  7. fine / z-chiudi — chiusura file, close e delete file del transito COGTRANS, z-99-exit-program, goback.

Elaborazione estrazione (elabora)

Scandisce COGGENER a partire dai record con gnr-tip = 'CD' (st-coggener-notmin + rdnxt-coggener, rottura quando gnr-tip cambia). Per ogni record (tratta-coggenerelabora-coggener) applica il filtro tipo consegna (tm-tipo-cons):

  • '1' (aperte): solo collegamenti senza parte-2 (gnr-parte-2 = spaces);
  • '2' (evase): solo collegamenti con parte-2 valorizzata;
  • '3' (tutte).

In elabora-coggener legge la testata ordine di partenza (gnr-parte-1tor-chia, rd-cogtesor) e applica i filtri residui:

  • per tipo '2' scarta l'ordine se COGU09 (operazione cerca-magazzino) trova gia' un documento di magazzino collegato;
  • estrazione per data ordine (tm-estraz-per = 'O'): scarta se tor-datdecorr fuori dall'intervallo tm-da-data/tm-a-data;
  • estrazione per data consegna (tm-estraz-per = 'C'): cerca-consegna cerca su COGCONOR (chiave 2 cor-chia2 per cor-o-testa) una consegna con cor-data compresa nell'intervallo; scarta se non trovata;
  • filtro cliente (tm-cli = tor-clifor dell'ordine di partenza);
  • filtro fornitore/cliente di consegna (tm-for = tor-clifor dell'ordine collegato gnr-parte-2).

I record superati vengono scritti su COGTRANS (scrivi-cogtrans): salva chiave/chiave2 dell'ordine di partenza (trs-chia1/trs-chia2) e, se presente, dell'ordine collegato (trs-chia1-f/trs-chia2-f).

Riempimento griglia (x-riempi-grid-record)

Per ogni riga del transito compone il record griglia risolvendo le anagrafiche con rd-coggeana (tipo 'C' cliente, 'F' fornitore) e formattando la data decorrenza. Se tm-tipo-cons = '3' interroga COGU09 (operazione cerca-magazzino) sia sull'ordine di partenza sia su quello collegato per ricavare i documenti di magazzino (bolle) in uscita ed entrata, risolvendone la data via COGTESBO (rd-cogtesbo, tes-chia3tes-gg/tes-mm/tes-aa).

Stampa (stampa)

Configura la stampa via COGS54 (132 colonne), poi scandisce l'intero COGTRANS (st-cogtrans-notmin da low-values + rdnxt-cogtrans) producendo, per ogni consegna, una riga per l'ordine di partenza (rigel), una per l'eventuale ordine collegato e una riga vuota di separazione. Gestisce testata (stampa-testa, con intestazione azienda, titolo "STAMPA CONSEGNE DIRETTE", data e paginazione) e salto pagina su superamento righe (s54-stm-lin - 6).


File e tabelle principali

File logico Record / chiave Modalita' Uso
FEURTAB Input Tabella file Eurosystem (apertura standard)
COGGENER gnr-rec (chiave1); campi gnr-tip, gnr-parte-1, gnr-parte-2 Input Riferimenti collegamenti consegne dirette (tipo 'CD')
COGTESOR tor-rec; chiave1 tor-chia, chiave2 tor-chi1; campi tor-datdecorr, tor-clifor Input Testate ordini clienti/fornitori collegati
COGCONOR cor-rec; chiave2 cor-chia2 (cor-o-testa); campo cor-data Input Consegne ordini (filtro estrazione "per data consegna")
COGGEANA ana-rec; chiave1 ana-chia (ana-tipo+ana-cod); campo ana-nome Input Anagrafica clienti/fornitori per le descrizioni
COGTESBO tes-rec; chiave tes-chia3; campi tes-gg/tes-mm/tes-aa Input Testate documenti di magazzino (data bolla per tipo estrazione '3')
COGTRANS trs-rec; chiave1 trs-chia1, chiave2 trs-chia2 I-O (transito) File indicizzato temporaneo, dichiarato manualmente nel sorgente; cancellato a fine programma
FLSTA File di stato/lock (gestito nelle declaratives)

Il record COGTRANS (trs-rec) e' definito inline nel sorgente (non da copybook): contiene chiave/chiave2 dell'ordine di partenza (trs-chia1/trs-chia2), dell'ordine collegato (trs-chia1-f/trs-chia2-f) e i riferimenti ai documenti di magazzino in entrata/uscita (trs-tes-chia3-e/trs-tes-data-e, trs-tes-chia3-u/trs-tes-data-u).


Copybook principali

Screen Designer (in cbl/screens/)

Copybook Contenuto
cogo39-01.scr Maschera principale (griglia e-tm-tab, campi filtro)
cogo39.select SELECT dei file (transito exp-grid per export)
cogo39.fd FD dei file gestiti da Screens
cogo39.wrk Working storage maschera
cogo39.decla Declaratives (feurtab, coggeana, cogtesbo, cogtesor, cogconor, coggener)
cogo39.prc Procedure generate (routine S52/S60/S65, colori, export, chiusura)

Strutture dati / FD

Copybook Contenuto
feurtab.fd / cogfiles.cpy FD tabella file Eurosystem
flsta.fd / flsta.cpy FD e record file di stato/lock
cogtrans.k01 Routine di I/O sul transito COGTRANS (incluso manualmente)
cogconor.k02 Routine di I/O per chiave 2 di COGCONOR (inclusa manualmente)
cogazien.cpy Dati azienda
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy Working storage comuni
wcont.cpy / wcont1.cpy Aree di linkage (stringhe)

Utility e griglia

Copybook Contenuto
wgrid.cpy / utilgdad.cpy / utilpggr.cpy / fscrol2.cpy Gestione griglia GRIDADMN e spaginamento
utils52.cpy Interfaccia COGS52 (calendario/date)
utils54.cpy Interfaccia COGS54 (stampa)
utils65.cpy Interfaccia COGS65W (ricerca cliente/fornitore)
utilu09.cpy Interfaccia COGU09 (documento di magazzino collegato all'ordine)
grave.cpy / winmsg.cpy / opengen.cpy / stato.cpy / stato1.cpy Routine comuni (errori, messaggi, apertura, stato)
mmmask.cpy Framework maschera (z-99-init-program/z-99-exit-program)
dtab.cpy Gestione tabelle/date

Sottoprogrammi chiamati (CALL)

Programma Scopo
GRIDADMN Preparazione, personalizzazione e riempimento della griglia (Prepara, Add-Record, Svuota)
COGS65W Gestione campo di ricerca cliente (z-s65-tm-cli) e cliente di consegna/fornitore (z-s65-tm-for)
COGU09 Operazione cerca-magazzino: individua il documento di magazzino collegato a un ordine (bolla entrata/uscita)
COGS54 Configurazione e gestione stampa (formato 132 colonne)

Le subroutine COGS52 (calendario) e COGS60 (combo tipo/estrazione) sono invocate tramite le routine z-s52-*/z-s60-* incluse in cogo39.prc.


Note

  • Il file COGTRANS e' un file di transito temporaneo per operatore: il nome fisico include wo-oper/wo-parametro, l'apertura in open output in a4 funge da lock (se fallisce, la funzione risulta gia' in uso da altro operatore) e a fine elaborazione il file viene chiuso e cancellato (delete file cogtrans).
  • La chiave secondaria di COGCONOR (cor-chia2) e' usata per risalire dalle consegne all'ordine (cor-o-testa); la relativa routine e' inclusa manualmente con copy "cogconor.k02" a fine procedure division, come previsto per le chiavi secondarie non generate da Screens.
  • Il tipo estrazione '3' (tutte) arricchisce ogni riga con i documenti di magazzino in entrata e uscita risolti via COGU09 + COGTESBO; per i tipi '1' e '2' queste colonne restano vuote.
  • Il programma non modifica dati permanenti: e' una visualizzazione/stampa in sola lettura sugli archivi ordini/consegne/anagrafiche; l'unico file scritto e' il transito temporaneo.