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).
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).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), poiclose+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.- 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. a-fine-dati— controllo complessivo dei dati (x-controlla-dati); se ok, mostra clessidra "Estrazione dati in corso" ed esegueelaborache popola il file di transito COGTRANS.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 ada4.a-grid— ciclo di gestione griglia: paginazione avanti/indietro (pg-after-pg-dwn/pg-after-pg-upsu COGTRANS), personalizzazione colonne (Shift+F4 → GRIDADMN), export Excel (Shift+F5 →z-esporta-paged-grid), stampa (F9 →stampa). Uscita con ESC →a-grid-fine→a4.fine/z-chiudi— chiusura file,closeedelete filedel 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-coggener → elabora-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-1 → tor-chia, rd-cogtesor) e applica i filtri residui:
- per tipo
'2'scarta l'ordine se COGU09 (operazionecerca-magazzino) trova gia' un documento di magazzino collegato; - estrazione per data ordine (
tm-estraz-per = 'O'): scarta setor-datdecorrfuori dall'intervallotm-da-data/tm-a-data; - estrazione per data consegna (
tm-estraz-per = 'C'):cerca-consegnacerca su COGCONOR (chiave 2cor-chia2percor-o-testa) una consegna concor-datacompresa nell'intervallo; scarta se non trovata; - filtro cliente (
tm-cli=tor-clifordell'ordine di partenza); - filtro fornitore/cliente di consegna (
tm-for=tor-clifordell'ordine collegatognr-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-chia3 → tes-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 inopen outputina4funge 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 concopy "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.