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.)¶
- a-5: codice stampa (F8 -> GW05). Verifica esistenza in COGTABEL tipo 34. Chiama b-visua.
- a-15: tipo selezione T/U (COGS21). Valore precaricato da definizione.
- a-30..a-40: loop su 4 selezioni (accept informazione + valore tramite COGG04 modalita' 'A').
- a-50: tipo selezione clienti (COGS60: Per Gruppo / Singoli Clienti). Se 'S', chiama COGU04 per selezione manuale.
- a-55: ordinamento C/A (COGS21).
- a-60..a-70: range clienti da/a (solo se Per Gruppo). Lookup ragione sociale tramite GW02. Controllo da <= a.
- a-80: flag ultimo appunto S/N (COGS21).
- 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):
- Apre COGTRANS in output (verifica non in uso) poi riapre in I-O.
- START su COGCLIPT per codice (chiave primaria) o ragione sociale (chiave secondaria chia2) in base all'ordinamento.
- Loop rdnxt-cogclipt: controlla tipo anagrafica, range da/a.
- 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.
- Se fl-ok='S': scrive trs-rec in COGTRANS (con REWRITE su duplicati).
e-elabora (selezione Singoli Clienti):
- Apre COGTRANS, itera su array util-u04 (max 899 elementi, compilato da COGU04).
- Per ogni codice non zero: legge COGCLIPT e scrive in COGTRANS.
Stampa (d-stampa)¶
- Apre COGTRANS in I-O; START su trs-chia3 (ordine C) o trs-chia4 (ordine A).
- Loop READ NEXT COGTRANS -> legge COGCLIPT per dati anagrafici.
- 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).
- Calcola fl-jmp ('S'/'N'): se le informazioni selezionate occupano meno della meta' della pagina disponibile, aggiunge una riga vuota tra ogni campo.
- Stampa intestazione cliente: ragione sociale (testa1), indirizzo (testa2), CAP/localita'/provincia (testa3).
- 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).
- d5-appunti (se tm-app='S'): legge le righe dell'appunto dalla data w-data-app in COGDESPT e le stampa.
- d3-fill-page: riempie le righe rimanenti fino a w-max-rig.
- Se nessun cliente e' stato stampato (ctr-pag=0), avvisa l'utente.
- 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).