Vai al contenuto

COGG12 - Esecuzione Stampe Clienti Potenziali

Panoramica

Programma di esecuzione delle stampe schede per clienti potenziali. Legge la definizione dalla tabella 34 di COGTABEL (configurata da COGG11), seleziona i clienti in base ai criteri impostati, li ordina tramite un file di transito e produce la stampa cartacea. Supporta filtro per intervallo cliente o selezione manuale di singoli clienti, ordinamento per codice o alfabetico, e inclusione facoltativa dell'ultimo appunto per ogni cliente.

Tipo: Report interattivo con selezione parametri, file di transito ordinato e stampa.

Posizioni nel menu

Menu Percorso
Contabilita' Clienti Potenziali > Stampe > Stampe Analitiche > Esecuzione
Contabilita' Clienti Potenziali > Stampe > Stampe Commerciali > Esecuzione

Struttura del programma

File e tabelle utilizzati

File/Tabella Modalita' Descrizione
FEURTAB (cogfiles) Input Tabella parametri generali e file aziendali
COGTABEL Input Tabella generica: tipo 34 per definizioni stampe (da COGG11)
COGPOTCL Input Valori delle informazioni per ogni cliente potenziale
COGDESPT Input Appunti/descrizioni dei clienti potenziali (per stampa ultimo appunto)
COGINFPT Input Anagrafica informazioni clienti potenziali
COGCLIPT Input Anagrafica clienti potenziali (dati anagrafici: nome, indirizzo, localita', CAP, provincia)
COGTRANS Transito File indicizzato temporaneo per ordinamento clienti selezionati
FLSTA Output File di stampa

File di transito (COGTRANS)

Definito inline nel programma. Ogni record contiene:

Campo Tipo Descrizione
trs-des x(40) Ragione sociale cliente
trs-cli 9(06) Codice cliente
trs-inf x(40) Informazione aggiuntiva (non usata in questa versione)

Chiavi alternative:

Chiave Composizione Uso
trs-chia1 trs-cli Accesso per codice cliente
trs-chia2 trs-des + trs-cli Ordine alfabetico per ragione sociale
trs-chia3 trs-inf + trs-chia1 Ordine per info + codice (usato in stampa con ordine C)
trs-chia4 trs-inf + trs-chia2 Ordine per info + alfabetico (usato in stampa con ordine A)

Il file viene creato in ext-tmp-dir con nome #$COGG12.{operatore} ed eliminato all'uscita (DELETE FILE cogtrans).

Copybook principali

Copybook Descrizione
cogtabel.cpy + cogdefst.cpy Record tabella generica e overlay definizione stampa
cogpotcl.cpy Record valori informazioni per cliente potenziale (ptc-tip, ptc-cli, ptc-inf-num, ptc-dati)
cogdespt.cpy Record appunti cliente potenziale (dpt-tip, dpt-cli, dpt-data, dpt-pro, dpt-des)
coginfpt.cpy Record informazioni (ipt-num, ipt-des, ipt-tip, ipt-lun, ipt-lun-dec, ipt-tab)
cogclipt.cpy Record anagrafico cliente potenziale (cpt-tip, cpt-cod, cpt-des, cpt-ind, cpt-cap, cpt-loc, cpt-pro)
cogazien.cpy Dati azienda corrente
utils21.cpy Utility COGS21 (selezione opzione)
utils54.cpy Utility COGS54 (gestione stampante)
utils60.cpy Utility COGS60 (selezione da lista con descrizione)
utilg04.cpy Utility COGG04 (gestione campo informazione)
utilgw02.cpy Utility GW02 (lookup cliente per nome)
utilgw04.cpy Utility GW04 (lookup informazione)
utilgw05.cpy Utility GW05 (lookup codice stampa)
utilu04.cpy Utility COGU04 (selezione singoli clienti)
wstato.cpy / wgrave.cpy / wopenf.cpy / wnscr.cpy Working storage standard
mmmask.cpy Init/exit programma standalone
WCONT.CPY / WCONT1.CPY Linkage section (interfaccia chiamante)
cogtabel.k01 Paragrafi accesso COGTABEL
cogpotcl.k01 Paragrafi accesso COGPOTCL
cogdespt.k01 Paragrafi accesso COGDESPT
coginfpt.k01 + coginfpt.k02 Paragrafi accesso COGINFPT (chiave primaria e secondaria seq.)
cogclipt.k01 + cogclipt.k02 Paragrafi accesso COGCLIPT (chiave primaria e secondaria alfabetica)

Chiamate a sottoprogrammi (CALL)

Programma Scopo
COGS21 Selezione opzione da lista (tipo selezione T/U, ordinamento C/A, flag appunto S/N)
COGS54 Gestione stampante (apertura, selezione, chiusura)
COGS60 Selezione tipo di selezione clienti (Per Gruppo / Singoli Clienti)
COGG04 Display e formattazione campo informazione tipizzato (modalita' V=visualizza, M=maschera)
COGU04 Selezione manuale singoli clienti potenziali (usato quando tm-sel-cli='S')
GW02 Lookup cliente per ragione sociale (F8 sui campi da/a cliente)
GW04 Lookup informazione (F8 sui campi selezione)
GW05 Lookup codice stampa (F8 sul codice stampa)

Logica di elaborazione

Strutture dati principali

tab-maschera: parametri raccolti dall'utente.

Campo Tipo Descrizione
tm-tip-ana x(01) Tipo anagrafica (default 'C' = cliente potenziale)
tm-cod 9(04) Codice stampa
tm-tit x(40) Titolo stampa (caricato da COGTABEL)
tm-jmp 9(02) Salto righe tra clienti
tm-tip-sel x(01) Tipo selezione: T (AND) o U (OR)
tm-ord x(01) Ordinamento: C=codice, A=alfabetico
tm-sel-cli x(01) Modalita' selezione clienti: spazio=per gruppo, S=singoli
tm-cli-da/a 9(06) Range codice cliente da/a
tm-des-da/a x(40) Range ragione sociale da/a (per ordinamento A)
tm-app x(01) S=includi ultimo appunto, N=no
tm-sel (1..4) array Criteri selezione: informazione + valore + tipo/lunghezza/tabella

tab-info: array fino a 200 elementi caricato da COGINFPT. Per ogni elemento: codice, descrizione, tipo, lunghezza, decimali, tabella, flag selezione (ti-sel S/N, caricato da COGTABEL tipo 3).

tab-clienti: array di 50 clienti (tc-cli + tc-des), non utilizzato nel flusso principale di questa versione.

Flusso di input (maschera mm-1, 16 righe x 80 col.)

  1. a-5: codice stampa (F8 -> GW05). Verifica esistenza in COGTABEL tipo 34. Chiama b-visua.
  2. a-15: tipo selezione T/U (COGS21). Valore precaricato da definizione.
  3. a-30..a-40: loop su 4 selezioni (accept informazione + valore tramite COGG04 modalita' 'A').
  4. a-50: tipo selezione clienti (COGS60: Per Gruppo / Singoli Clienti). Se 'S', chiama COGU04 per selezione manuale.
  5. a-55: ordinamento C/A (COGS21).
  6. a-60..a-70: range clienti da/a (solo se Per Gruppo). Lookup ragione sociale tramite GW02. Controllo da <= a.
  7. a-80: flag ultimo appunto S/N (COGS21).
  8. a-90: selezione stampante (COGS54). F3 avvia elaborazione.

Caricamento definizione (b-visua)

Scansiona COGTABEL (START not < su tipo 34 + codice stampa):

  • b1-load (wec-tip=1): carica titolo, salto righe, tipo selezione; visualizza in maschera.
  • b2-load (wec-tip=2): carica selezioni preimpostate; COGG04 in modalita' 'V' per display valore.
  • b3-src-sel (n-i volte): per ogni elemento di tab-info legge il corrispondente record tipo 3 da COGTABEL e imposta ti-sel='S' se trovato; incrementa n-sel (contatore informazioni selezionate).

Elaborazione clienti (c-elabora / e-elabora)

c-elabora (selezione Per Gruppo):

  1. Apre COGTRANS in output (verifica non in uso) poi riapre in I-O.
  2. START su COGCLIPT per codice (chiave primaria) o ragione sociale (chiave secondaria chia2) in base all'ordinamento.
  3. Loop rdnxt-cogclipt: controlla tipo anagrafica, range da/a.
  4. c1-select: per ogni selezione configurata (fino a 4), legge il valore del cliente da COGPOTCL e confronta con tm-sel-val. Logica AND (T) o OR (U) tramite flag fl-ok.
  5. Se fl-ok='S': scrive trs-rec in COGTRANS (con REWRITE su duplicati).

e-elabora (selezione Singoli Clienti):

  1. Apre COGTRANS, itera su array util-u04 (max 899 elementi, compilato da COGU04).
  2. Per ogni codice non zero: legge COGCLIPT e scrive in COGTRANS.

Stampa (d-stampa)

  1. Apre COGTRANS in I-O; START su trs-chia3 (ordine C) o trs-chia4 (ordine A).
  2. Loop READ NEXT COGTRANS -> legge COGCLIPT per dati anagrafici.
  3. Se tm-app='S': chiama d4-src-app (cerca ultimo appunto in COGDESPT con lettura PREVIOUS) per determinare la data dell'appunto piu' recente e il numero di righe (w-rig-app).
  4. Calcola fl-jmp ('S'/'N'): se le informazioni selezionate occupano meno della meta' della pagina disponibile, aggiunge una riga vuota tra ogni campo.
  5. Stampa intestazione cliente: ragione sociale (testa1), indirizzo (testa2), CAP/localita'/provincia (testa3).
  6. d2-fill-page: per ogni informazione con ti-sel='S', legge COGINFPT e COGPOTCL, formatta il valore tramite COGG04 modalita' 'M' e scrive la riga (rg-des: descrizione informazione; rg-info: valore formattato).
  7. d5-appunti (se tm-app='S'): legge le righe dell'appunto dalla data w-data-app in COGDESPT e le stampa.
  8. d3-fill-page: riempie le righe rimanenti fino a w-max-rig.
  9. Se nessun cliente e' stato stampato (ctr-pag=0), avvisa l'utente.
  10. Chiude COGTRANS; elimina il file.

Record di stampa

Struttura Contenuto
testa0 / testa0a Riga vuota (grafica bordo) / riga titolo stampa centrato
tes-fil-1/2/3 Separatori orizzontali (grafica box)
testa1 "Cliente : {ragione sociale}"
testa2 "Indirizzo: {indirizzo}"
testa3 "C.A.P. : {cap} Localita': {loc} Provincia: {pro}"
rigel "{descrizione informazione}: {valore}" (rg-des 29 car. + rg-info 88 car.)

Note tecniche

  • Maschera mm-1: 16 righe x 80 colonne, posizionata a riga 7 col 1 (rd-msk-pop).
  • File COGTRANS creato in ext-tmp-dir; nome univoco per operatore (wo-oper). Eliminato con DELETE FILE all'uscita (z-chiudi).
  • 5 file aziendali: COGTABEL (001), COGPOTCL (114), COGDESPT (115), COGINFPT (116), COGCLIPT (117).
  • La chiave secondaria di COGINFPT (k02) e' usata in a1-load-info per caricare le informazioni in sequenza (start su ipt-seq).
  • La lettura degli appunti in d4-src-app usa READ PREVIOUS su COGDESPT (accesso retroattivo per trovare l'ultimo appunto).
  • Valori informativi lunghi (> 47 caratteri): la riga rg-info usa sequenze di escape grafiche ('C17'...'CRE') per gestire il ritorno a capo in stampa.
  • CANCEL 'COGG04' e' eseguito in z-chiudi per liberare la memoria del sottoprogramma.
  • Relazione diretta con COGG11 (definizione modello) e COGG04 (gestione campo informazione).