ASN200 - Consultazione Impianti / Matricole
Intestazione
| Campo |
Valore |
| Programma |
ASN200 |
| Titolo |
Consultazione Impianti - Matricole |
| Modulo |
Assist 2.0 - Visualizzazioni |
| Posizione menu |
Assist 2.0 > Operativo > Visualizzazioni > Impianti - Matricole |
| Sorgente |
cbl/asn200.cbl (~4.528 righe) |
| Tipo |
Programma interattivo single-form con griglia paginata + file di transito + multi-modalita' callable |
Scopo e logica generale
ASN200 e' il principale programma di consultazione e ricerca matricole (impianti, sotto-impianti, matricole singole) del modulo Assist. Combina molteplici filtri di selezione, scegliendo dinamicamente la chiave di accesso piu' efficiente al file ASNMATRI (8 chiavi alternative) e arricchendo i dati con cliente, modello, marca, padre, ecc.
E' usato in 3 modalita':
- Standalone: dal menu, l'utente puo' modificare le matricole (F3 -> ASN030)
- Callable da contesti specifici (selezione): programmi come ASN030, ASNS02, ASN510, ASN542, ASN110, ASN610, ASN620, ASN008, ASN140, ASN515, ASN220, ASN050 lo invocano per far selezionare una matricola; al rientro restituisce
asn200-id
- Callable per filtraggio specifico: con
asn200-modo-ricerca-matricola (T/I/M) per restringere a tutte/impianti/matricole singole
Usa un file di transito COGTRANS come buffer paginato per la griglia.
Flusso principale
- Apri: apertura file, configurazione
assist / gestione-scheda-matricole, caricamento bitmap custom (assist + avvisi), creazione 5 push button (F5 Nuova, F8 Interventi, F7 Impianto, S-F6 Distinta, S-F7 InsDBase)
- Detect modalita' chiamata: se
asn200-called = "ASN200-CALLED", popola w-dati-called con caller, sn, cliente, destinazione, modo ricerca, escludo-id-contratto
- Reset (
a4): pulizia maschera, valori default tipo matricola/impianti/sottoimpianti in base al caller
- Pre-popolamento (callable): se chiamato da contesti specifici, carica automaticamente sn/cliente/destinazione e salta direttamente all'estrazione (
a-ricarica-grid)
- Accept filtri: 16+ accept sequenziali (tipologia, produttore, marca, modello, cliente, num.inv., tecnico, portale catasto/chiave, destinazione, sn, matricola, generiche, impianti, sottoimpianti, matricole-singole, tipo-mat, da-garanzia, a-garanzia, validita', estr-dbase)
- Conferma ->
a-ricarica-grid: ricreazione transito COGTRANS con nome temporaneo univoco, chiamata a carica-file che sceglie la chiave ASNMATRI
- Griglia paginata (
a-grid): gestione paging (Pg-Up/Pg-Dn), ordinamento dinamico per 32 colonne (Tipologia, Produttore, Marca, ..., Catasto, Chiave, Descrizione)
- Azioni da griglia: F3=ASN030 modifica, F5=ASN030 nuovo, F8=ASN230 interventi matricola, F7=ASN049 vista impianto, F6=CRM030 scheda, S-F6/S-F7=ASN03B distinta base
- Invio (callable): ritorna
asn200-id = tmr-id (i) al chiamante
File e tabelle acceduti
| File |
Record |
Modalita' |
Uso |
| ASNMATRI |
amtr-rec |
Input |
Anagrafica matricole. Acceduto su 8 chiavi alternative (k02..k08) in base ai filtri attivi |
| ASNMATR2 |
amtr2-rec |
Input |
Estensione matricole: usato per ricerca su portale catasto (k02) e portale chiave (k03) |
| ASNMODEL |
amod-rec |
Input |
Modelli: nome, descrizione |
| ASNMARCH |
amrc-rec |
Input |
Marche: descrizione |
| ASNPRODU |
aprd-rec |
Input |
Produttori: descrizione |
| ASNMTRLK |
amlk-rec |
Input |
Materiali matricola: ricerca padre (k02) |
| ASNCNMTR |
acnm-rec |
Input |
Matricole sotto contratto: filtro escludo-id-contratto (k02) |
| COGGEANA |
ana-rec |
Input |
Anagrafica clienti: descrizione cliente |
| COGRIFER |
rif-rec |
Input |
Tecnici (rif-tip = 'C') |
| COGTRANS |
trs-rec |
I-O |
File di transito locale, buffer paginazione griglia. Chiave primaria + chiave secondaria su ordinamento |
Chiavi secondarie utilizzate
| Copybook |
Tabella |
Scopo |
asnmatri.k02 |
ASNMATRI |
Serial number |
asnmatri.k04 |
ASNMATRI |
Cliente |
asnmatri.k05 |
ASNMATRI |
Produttore |
asnmatri.k06 |
ASNMATRI |
Marca |
asnmatri.k07 |
ASNMATRI |
Modello |
asnmatri.k08 |
ASNMATRI |
Tipologia |
asnmatr2.k02 |
ASNMATR2 |
Portale catasto |
asnmatr2.k03 |
ASNMATR2 |
Portale chiave |
asnmodel.k02 |
ASNMODEL |
Nome modello |
asnmtrlk.k02 |
ASNMTRLK |
Padre/figli matricole |
asncnmtr.k02 |
ASNCNMTR |
Esclusione matricole gia' in contratto |
cogtrans.k01, cogtrans.k02 |
COGTRANS |
Primaria + ordinamento dinamico (filler-x 80 + filler-y 12 byte) |
Programmi chiamati (CALL)
| Programma |
Scopo |
| ASN010 |
Lookup tipo matricola (F8 su tipologia) |
| ASN011 |
Lookup produttore (F8) |
| ASN012 |
Lookup marca (F8) |
| ASN013 |
Lookup modello (F8) |
| ASN030 |
Gestione matricola: nuovo (F5), modifica (F3 in modalita' standalone) |
| ASN03B |
Distinta base matricola (S-F6 / S-F7) |
| ASN049 |
Vista impianto (F7) - mostra gerarchia padri/figli |
| ASN230 |
Storico interventi matricola (F8) |
| CRM030 |
Scheda CRM matricola/modello (F6) |
| W92 (sendw92) |
Lookup destinazione cliente |
| COGS65W |
Lookup cliente (utils65) |
| COGG32 |
Lookup tecnico generico (call-g32-tecnico) |
| GESSTR |
Preparazione ricerca per contenuto sul serial number (caso *xyz) |
| GRIDADMN |
Personalizzazione griglia (S-F4) |
| DIALOGS |
Dialogo F6 quando ci sono entrambe le schede CRM (matricola + modello) |
| RNEWCONF |
Caricamento configurazione (x99-confi) |
Parametri di interfaccia (util-asn200)
| Campo |
Direzione |
Uso |
asn200-called |
Input |
Se = "ASN200-CALLED" attiva modalita' richiamata |
asn200-caller |
Input |
Codice programma chiamante; influisce su pre-popolamento e behavior griglia |
asn200-in-sn |
Input |
Serial number da pre-impostare |
asn200-cli-ass |
Input |
Cliente assistito da pre-impostare |
asn200-estr-generiche |
Input |
Pre-imposta il flag estrazione generiche |
asn200-modo-ricerca-matricola |
Input |
T = tutte, I = solo impianti+sottoimpianti, M = solo matricole singole |
asn200-amtr-dst |
Input |
Destinazione (tip + idx) da pre-impostare |
asn200-escludo-id-contratto |
Input |
ID contratto: esclude matricole gia' in quel contratto (filtro ASNCNMTR) |
asn200-id |
Output |
ID matricola selezionata (su Invio in modalita' selezione) |
Parametri di configurazione (RNEWCONF)
| Gruppo |
Parametro |
Variabile interna |
Tipo |
Effetto |
assist |
gestione-scheda-matricole |
tm-cfg-gest-scheda-matr |
x(01) |
Se "S", abilita F6 = apre scheda CRM matricola/modello |
Tasti funzione
| Tasto |
Contesto |
Funzione |
| F1 |
Filtri |
Configurazione (apre x99-confi in modifica) |
| F3 |
Filtri |
Conferma -> ricarica griglia |
| F3 |
Griglia |
Apre ASN030 in modifica (solo se non chiamato dai contesti specifici) |
| F5 |
Griglia |
Nuova matricola via ASN030 (modalita' inserimento) |
| F6 |
Griglia |
Scheda CRM matricola (tmr-amtr-cod-nom) o modello (tmr-amod-cod-nom) o dialog di scelta |
| F7 |
Griglia |
Vista impianto via ASN049 |
| F8 |
Griglia |
Interventi matricola via ASN230 |
| F8 |
Filtri |
Lookup contestuali (ASN010/011/012/013, COGG32, W92) |
| F9 |
Filtri |
Ricerca avanzata |
| Invio |
Griglia |
Ritorna asn200-id al chiamante (callable) |
| Pg-Up / Pg-Dn |
Griglia |
Pagina precedente/successiva (la griglia e' paginata) |
| S-F4 |
Griglia |
GRIDADMN config colonne |
| S-F5 |
Griglia |
Esporta in Excel |
| S-F6 |
Griglia |
Distinta base via ASN03B (se tmr-fl-dbase = "S") |
| S-F7 |
Griglia |
Inserisce matricola in distinta base via ASN03B (se tmr-fl-dbase = "N") |
| Click intestazione |
Griglia |
Cambia ordinamento (32 chiavi di ordinamento, da gcn-r-1 a gcn-r-32) |
| ESC |
Vari |
Esce |
Logica di selezione chiave ASNMATRI (carica-file)
Sceglie la chiave secondaria piu' specifica disponibile in base ai filtri:
| Filtro attivo |
Chiave usata |
tm-portale-catasto |
ASNMATR2 chia2 |
tm-portale-chiave |
ASNMATR2 chia3 |
tm-matricola (ID) |
ASNMATRI chia1 (primaria) |
tm-amtr-tip |
ASNMATRI chia8 (tipologia) |
tm-amtr-produttore |
ASNMATRI chia5 (produttore) |
tm-amtr-marca |
ASNMATRI chia6 (marca) |
tm-modello |
ASNMATRI chia7 (modello) |
tm-ana-cod-c |
ASNMATRI chia4 (cliente) |
tm-amtr-sn puro (no *) |
ASNMATRI chia2 (serial number) |
| Nessuno specifico |
ASNMATRI chia1 (full scan) |
Su ciascun record poi vengono applicati i filtri aggiuntivi (gli altri criteri non usati come chiave) come filtri post-lettura.
Se tm-estr-generiche = 'S', in coda viene eseguito anche tratta-chia4-bis con w-ana-cod-c = 0 per includere le matricole non assegnate a cliente.
Ricerca serial number "contenuto" (*xyz)
Se tm-amtr-sn inizia con *, viene attivata la modalita' ricerca per contenuto: chiamata a GESSTR con operazione CERCA-PREPARA per costruire una tabella di "righe da matchare" sul serial number. Il match avviene poi sui record letti via chiave alternativa.
Pattern architetturali
- Single-form filtri + griglia paginata: la griglia non carica tutto in memoria, ma usa il file di transito come buffer con paginazione Pg-Up/Pg-Dn (vedi
utilpggr.cpy, dtab.cpy, fscrol2.cpy)
- Chiave dinamica su file principale: scelta automatica della chiave secondaria piu' efficiente in base al filtro
- Modalita' multipla callable: comportamento differenziato per ~12 programmi chiamanti diversi (logica nelle sezioni
if w-dc-caller = 'ASN030' or w-dc-caller = 'ASN510' or ...)
- Ordinamento dinamico in griglia: il click sulla colonna ricarica il transito (
a-ricarica-grid) con ordinamento diverso costruito in trs-chia2
- Bitmap custom + push button con bitmap per evidenziare le azioni piu' frequenti
- Pre-popolamento contesto-aware: in base al caller, pre-imposta sn, cliente, modo ricerca
Limiti tecnici
| Elemento |
Limite |
Costante |
| Righe per pagina griglia |
100 |
k-max-ele-tab |
| Lunghezza descrizione matricola |
300 caratteri |
trs-amtr-des |
Note tecniche
- Il file di transito ha nome variabile basato su
ext-tmp-dir + #$ + program-id + ext-pid + orasis + caller + . + operatore per evitare collisioni in caso di apertura multipla
- L'opzione PBUG-1969 (08/04/2024) ha aggiunto
function upper-case sui serial number prima del confronto con w-amtr-sn-da/w-amtr-sn-a per evitare di scartare matricole con caratteri minuscoli nel serial
- I marker temporali nel sorgente (
080713, 130417, 180418, 210420, 181219, 250915, 290916, 040817, 230919, 230119, 051016, 290125) identificano modifiche e nuovi campi
- I campi
trs-amtr-cod-nom e trs-amod-cod-nom collegano la matricola a un nominativo CRM (usato per F6)
- Il flag
tmr-fl-dbase indica se la matricola e' in distinta base (gestione ASN03B)
- Le accentate nei commenti sono in ISO-8859-1