COGP97 - Ristampa ordinata DDT per periodo¶
Panoramica¶
COGP97 e' un programma con maschera GUI di selezione che ristampa in blocco i DDT (documenti di trasporto) emessi in un periodo, potendoli ordinare per numero documento oppure per "giro" (sequenza di consegna dell'agente, funzione riservata alla gestione pasticcerie). La selezione dei documenti viene scaricata su un file di transito ordinato (COGTRANS), poi per ciascun record del transito viene richiamato COGV52 che esegue la stampa del singolo DDT. Viene lanciato da menu con l'area comune stringhe; l'operatore imposta periodo, ordinamento, cliente, tipo bolla ed eventuale agente, poi conferma con F3.
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Magazzino | Uscite > Bolle Accompagnatorie > Stampe > Ristampa ordinata ddt |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| COGTESBO | Indicizzato (input) | Testate bolle/DDT; scansione per data via chiave secondaria chia2 (st-cogtesbo-notmin-chia2), filtrando su tipo bolla, causale, cliente, periodo |
| COGTABEL | Indicizzato (input) | Tabelle di codifica; letta con euta-tipo = 15 sulla causale per verificare che il documento sia di tipo "Uscita/Cliente/con fattura" |
| COGDEST2 | Indicizzato (input) | Destinazioni con agente collegato (dst2-agente-1); usata per l'ordinamento per giro |
| COGGRDAY | Indicizzato (input) | Sequenze giro/giornata dell'agente; scansione via chiave secondaria chia2 per recuperare il numero di sequenza (grd-seq) nel giro |
| COGGEANA | Indicizzato (input) | Anagrafica generale; letta per la ragione sociale di cliente e agente |
| COGMOMAG | Indicizzato (input) | Movimenti bolla; usato in x6-pre-bolle per verificare le righe delle pre-bolle |
| COGANRAG | Indicizzato (input) | Raggruppamenti anagrafica merci; letto (chiave chia3, classe GP) per escludere pre-bolle con merci non trasformabili |
| COGTRANS | Indicizzato (transito temporaneo) | File di appoggio ordinato con i DDT selezionati (trs-rec), creato/svuotato e riletto per lanciare le stampe |
Il transito ha nome costruito in apri (#$COGP97. + operatore in ext-tmp-dir).
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| cogp97.select / cogp97.fd / cogp97.wrk / cogp97.prc / cogp97.decla | Componenti generati da Screens |
| cogp97-01.scr | Screen di selezione parametri |
| k-tipi-cogtabel.cpy | Costanti tipo per COGTABEL |
| cogazien.cpy | Dati azienda |
| utildlg.cpy | Area per dialog (parti commentate) |
| utilpsw005.cpy / utilpsw006.cpy | Aree per PSW005 (verifica stampabilita') e PSW006 (trasformazione pre-bolla) |
| utils52.cpy / utils54.cpy / utils65.cpy | Aree subroutine data, stampa, ricerca anagrafica |
| utilu78.cpy | Area per COGU78 (gestione documento, parti commentate) |
| utilncnf.cpy | Area per la lettura configurazioni RNEWCONF |
| utilgesdebug.cpy / gesdebug.cpy | Logging di procedura (GESLPRC) |
| utilu30b.cpy / utilv52.cpy | Aree di linkage per la chiamata a COGV52 |
| cogtesbo.k02 / coggrday.k02 / coganrag.k03 / cogtrans.k01 | Routine I/O su chiavi secondarie delle tabelle usate |
| wgrave / wnscr / wopenf / wstato / grave / mmmask / opengen / stato / stato1 / winmsg | Copybook standard |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| COGV52 | Stampa del singolo DDT (v52-called = 'COGV52-CALLED', bolla in v52-bolla); ritorna v52-fine-stampa = 'S' se l'operatore preme ESC per interrompere |
| COGS65W | Ricerca/validazione anagrafica cliente e agente |
| PSW005 | Verifica se il documento e' stampabile (operazione DOC-STAMPABILE), solo per gestione pasticcerie |
| PSW006 | Trasformazione pre-bolla in bolla senza stampa DDT (operazione CHIUDI-PREBOLLA), in x6-10-ok |
| GESLPRC | Consultazione del log di procedura a fine elaborazione (operazione CONSULTA-PROCEDURA) |
| RNEWCONF | Lettura configurazioni (gruppo abilita/gestione-pasticcerie e past/cau-bdc-trasformato) |
| DTPRG / PRGDT | Conversione data<->progressivo per impostare il default periodo nella gestione pasticcerie |
Sottoprogrammi commentati¶
COGU78 e DIALOGS sono presenti solo in blocchi commentati (vecchia logica di trasformazione pre-bolla con dialog interattivo), non attivi.
Logica di elaborazione¶
-
apri/main: inizializza programma e logging (gesdebug-*), legge la configurazione (x99-src-cfgvia RNEWCONF: flag gestione pasticcerie e causale bolla-di-consegna trasformata), costruisce il nome del transito, imposta tasti funzione e visualizza la maschera. -
a4e paragrafia-tm-*: selezione parametri. Data inizio/fine (a-tm-data-da,a-tm-data-a), ordinamento (a-tm-ordi:Nper numero,Gper giro), cliente (a-tm-cli-da), tipo bolla (a-tm-tipo-bolla:Ttutte,Nnon legate a ordine,Slegate a ordine) e agente/giro (a-tm-agente, abilitato solo se ordinamento per giro). In modalita' pasticceria il default ordinamento e'Gsul giorno successivo. -
a-richiesta-conferma: rivalida i campi e conferma con F3. -
Preparazione stampa: apre il log di procedura, ricrea il transito (
open outputpoiopen i-o). Se pasticceria e ordinamento per giro, eseguex6-pre-bolleper trasformare in automatico le pre-bolle valide (via PSW006). -
a-00-loop: scansione COGTESBO nel periodo. Filtra: tipo bollaI/D/B(escludendoBin pasticceria), filtro tipo bolla legata/non legata a ordine (tes-fl-ord), verifica causale su COGTABEL (Uscita/Cliente/con fattura), filtro cliente. In pasticceria applica anche il controllo PSW005 (documento stampabile). -
Scrittura sul transito (
wr-cogtrans/rwr-cogtrans): - ordinamento
N: chiavetrs-ordine= chiave documento; -
ordinamento
G: recupera destinazione (COGDEST2) e agente, cerca la sequenza nel giro (COGGRDAY suchia2) e componetrs-ordinecon la ragione sociale agente + sequenza; i DDT senza giro vanno contrs-ordinea spazi (ordinati prima). -
a-90/b-00-read: scansione del transito ordinato; per ogni record logga e chiama COGV52 per stampare il DDT (v52-bolla = trs-tes-chia3, 1 copia). Se COGV52 ritornav52-fine-stampa = 'S'(ESC), interrompe il ciclo. -
b-90/fine/z-chiudi: logga i conteggi, chiude il log, offre la consultazione del log via GESLPRC, e in pasticceria chiude il DB PSW005 (CHIUDI-DB).
Note tecniche¶
- La configurazione RNEWCONF letta e': gruppo
abilitachiavegestione-pasticcerie(vedi gestione-pasticcerie) e gruppopastchiavecau-bdc-trasformato. L'ordinamento per giro e la trasformazione pre-bolle sono attivi solo se la gestione pasticcerie e'S. - Il record del transito
COGTRANSe' stato allargato nel tempo:trs-ordineda 20 a 50 caratteri (26/05/2025) e aggiuntitrs-dst2-agente-1etrs-grd-seq(27/03/2025) per gestire l'ordinamento e il log per agente. - Il controllo di esclusione dei documenti "non stampabili" (PSW005) ha avuto storia alterna (commenti da 12/08/2025, 25/11/2025, 26/01/2026): allo stato del sorgente l'esclusione e' attiva.
- L'
accept pp ... before time 300dopo ogni stampa introduce una micro-pausa che consente l'intercettazione di eventi tra una stampa e la successiva. - La stampa vera e propria e' delegata interamente a COGV52; COGP97 e' quindi un orchestratore di selezione, ordinamento e ristampa in blocco.