Vai al contenuto

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

  1. 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)
  2. Detect modalita' chiamata: se asn200-called = "ASN200-CALLED", popola w-dati-called con caller, sn, cliente, destinazione, modo ricerca, escludo-id-contratto
  3. Reset (a4): pulizia maschera, valori default tipo matricola/impianti/sottoimpianti in base al caller
  4. Pre-popolamento (callable): se chiamato da contesti specifici, carica automaticamente sn/cliente/destinazione e salta direttamente all'estrazione (a-ricarica-grid)
  5. 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)
  6. Conferma -> a-ricarica-grid: ricreazione transito COGTRANS con nome temporaneo univoco, chiamata a carica-file che sceglie la chiave ASNMATRI
  7. Griglia paginata (a-grid): gestione paging (Pg-Up/Pg-Dn), ordinamento dinamico per 32 colonne (Tipologia, Produttore, Marca, ..., Catasto, Chiave, Descrizione)
  8. 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
  9. 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