Vai al contenuto

COGA04 - Reparti Cassa (stampa)

Panoramica

Programma di stampa che produce l'elenco dei Reparti Cassa dalla tabella COGTABEL (euta-tipo = 50). Presenta la finestra di selezione stampante tramite COGS54, poi scorre i record e genera un report paginato con codice e descrizione di ogni reparto.

Posizione nel menu

Menu Percorso
Magazzino Archivi & Tabelle > Tabelle > Stampe > Reparti Cassa

Struttura del programma

File e tabelle utilizzati

File/Tabella Tipo Descrizione
FEURTAB Input Tabella di sistema
COGTABEL Input Tabella generica — legge tipo 50 (reparti cassa)
COGAZIEN Input Anagrafica azienda (aperto nel file-control, chiuso in fine)
FLSTA Output File di stampa (report)

Campi COGTABEL utilizzati

Per i reparti cassa (euta-tipo = 50):

Campo Descrizione
euta-tipo Tipo tabella (50 = reparti cassa)
euta-cod Codice reparto (stampato in r1co)
euta-descr Descrizione reparto (stampata in r1desc)

Nota: il programma usa euta-cod e euta-descr (campi generici) anziche' il redefines euta-rep-dati, dato che stampa solo codice e descrizione.

Copybook principali

Copybook Descrizione
coga04.select SELECT dei file
coga04.fd File Description
coga04.wrk Working storage generata
coga04.decla Declaratives
coga04.prc Procedure generate (open/close/read)
coga04-01.scr Screen section
feurtab.fd SELECT tabella di sistema
flsta.fd SELECT file di stampa
flsta.cpy FD file di stampa
cogfiles.cpy FD record FEURTAB
utils54.cpy Interfaccia COGS54 (gestione stampante)
wstato.cpy / wgrave.cpy / wopenf.cpy / wnscr.cpy Copybook standard
wcont.cpy / wcont1.cpy Linkage standard

Chiamate a sottoprogrammi (CALL)

Programma Scopo
COGS54 Gestione selezione stampante e anteprima; chiamato due volte: prima della stampa (selezione) e dopo la stampa (chiusura con s54-after-print = "S")

Variabili chiave

Variabile Tipo Descrizione
ctrri 99 Contatore righe stampate nella pagina corrente (inizializzato a 90 per forzare intestazione alla prima riga)
ctrpa 9(04) Contatore pagine (parte da 1)
k-chr-stampa 78 Costante 78 — identificativo formato stampa per COGS54
riga0 x(80) Buffer riga di stampa

Righe di stampa

Record Contenuto
rint1 Intestazione: titolo "STAMPA REPARTI CASSA", data, numero pagina
rint2 Sottointestazione colonne: "CODICE" e "DESCRIZIONE REPARTO CASSA"
rint3 Riga separatrice (caratteri "=")
rdet1 Riga dettaglio: r1co (codice, pic z(5)) e r1desc (descrizione, pic x(40))

Flusso operativo

1. Inizializzazione (apri)

  • Inizializza il programma, controlla abilitazioni, apre i file
  • Recupera la data di sistema e la formatta nell'intestazione (r1dabog, r1dabom, r1daboa)

2. Selezione stampante (a222)

  • Chiama COGS54 per presentare la finestra di selezione stampante
  • Se ESC o F2: esce dal programma
  • Se F3: procede con la stampa

3. Posizionamento (a010 -> a015)

  • Si posiziona su COGTABEL con euta-tipo = 50 e euta-codr = 0 (st-cogtabel-notmin)
  • Legge il primo record (rdnxt-cogtabel)
  • Se non ci sono record o il tipo non corrisponde: mostra messaggio "NESSUN REPARTO CASSA" e chiude

4. Ciclo di stampa (a030 -> a040)

  • Per ogni record con euta-tipo = 50:
    • Compone la riga di dettaglio (rdet1) con codice e descrizione
    • Chiama il paragrafo stampa che gestisce automaticamente il salto pagina e l'intestazione
  • La paginazione e' gestita confrontando ctrri con (s54-stm-lin - 12): se la pagina e' piena, esegue intesta

5. Intestazione pagina (intesta)

  • Scrive l'intestazione (rint1) con titolo, data e numero pagina
  • Chiama cs1-print per gestione eventi di stampa (eventuale annullamento con ESC)
  • Scrive le sottointestazioni (rint2, rint3) e una riga vuota
  • Incrementa il contatore pagine, azzera il contatore righe a 8
  • La prima pagina usa "after zero" (nessun salto), le successive usano "after page"

6. Chiusura (a100 -> fine)

  • Scrive un salto pagina finale
  • Chiama COGS54 con s54-after-print = "S" per la chiusura del report (anteprima/invio a stampante)
  • Chiude COGTABEL e COGAZIEN
  • Esce dal programma

Note tecniche

  • Il programma usa PERFORM ... THRU per i paragrafi stampa (stampa thru ex-stampa) e intesta (intesta thru ex-intesta).
  • Il contatore righe ctrri e' inizializzato a 90 (valore superiore al massimo righe per pagina) per forzare la stampa dell'intestazione al primo record.
  • Il campo euta-cod viene usato direttamente (non il redefines euta-codr) perche' il programma stampa il codice generico senza necessita' di interpretazione numerica.