CRM027 - Gestione operazioni esterne¶
Sorgente: cbl/crm027.cbl | Program-ID: CRM027 | Tipo: Programma interattivo GUI (gestione tabella a griglia)
Menu: CRM > Archivi > Operazioni esterne
Scopo¶
Definisce le "operazioni esterne" richiamabili dalla scheda di un nominativo CRM: comandi del sistema operativo (apertura file, esecuzione programmi/URL, ecc.) parametrizzati con i dati del nominativo. Per ciascuna operazione l'operatore indica una descrizione, il comando da eseguire e gli eventuali parametri.
La maschera e' composta da un'area di dettaglio (Descrizione, Comando, Parametri) e da una griglia con l'elenco delle operazioni. Il codice numerico e' assegnato automaticamente in inserimento (progressivo tm-max-cod). Il programma opera in due modalita' alternate con F3: "S"elezione (sola lettura) e "A"ggiornamento (inserimento/modifica/cancellazione riga).
Le operazioni sono memorizzate come record "scheda" (tipo costante k-cpx-tip-scheda) sull'archivio delle operazioni esterne CRM (record prefisso cpx-), lo stesso archivio dei clienti potenziali definito in costanti-clipot.cpy.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri file aziendali (cogfiles.cpy) |
| CRMOPEXT | ISAM | I-O | Operazioni esterne CRM (record cpx-rec; chiave primaria cpx-tip+cpx-cod; campi cpx-des, cpx-cmd, cpx-par); i record trattati hanno cpx-tip = k-cpx-tip-scheda (valore "SK"). Verbi generati: rd-crmopext-lk, st-crmopext-notmin, rdnxt-crmopext, wr-crmopext, rwr-crmopext, del-crmopext |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
crm027.select, crm027.fd, crm027.wrk, crm027-01.scr, crm027.prc, crm027.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
costanti-clipot.cpy |
Costanti e record clienti potenziali / operazioni esterne (cpx-rec, k-cpx-tip-scheda) |
opensave.def |
Definizioni per la finestra di dialogo apri/salva file (C$OPENSAVEBOX) |
l-copiaf.cpy, u-copiaf.cpy |
Working-storage e linkage per COPIAF (verifica esistenza file) |
wstato.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wgrid.cpy, cogazien.cpy |
Working storage standard + dati azienda + gestione griglia |
utilgdad.cpy |
Linkage GRIDADMN (amministrazione griglia) |
wcont.cpy, wcont1.cpy |
Linkage standard (stringhe) |
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy |
Copybook di fine procedure |
utilgrid.cpy |
Routine di gestione griglia generate |
Logica¶
Struttura goto-driven (paragrafi a* per gli accept, x-*/z-* per servizi). Flusso principale:
- apri: init programma,
x-carica-lingua,rd-azi,open-files; abilita i tasti F3 (aggiorna), F8 (aiuto), Invio (modifica), Shift+F4 (griglia), Ctrl+A (aggiungi), Ctrl+E (elimina); carica la bitmap custom "file" e crea il pulsante F7 "Trova file" (k-f7-trova-file);z-prepara-tm-grid,z-costruisci-controlli. Parte in modalita' "A". - a4 / a-inizio-dati: azzera
tab-maschera, eseguecarica-datiche scorre CRMOPEXT (st-crmopext-notminsucpx-tip = k-cpx-tip-scheda,rdnxt-crmopextfino a rottura tipo) caricando l'array in memoriatm-tab(maxk-max-ele-tab= 50 righe) e aggiornandotm-max-cod; costruisce la griglia. - a-grid / a-accept-grid: accept sulla griglia. Esc esce; doppio click / Invio equivale a Invio; Shift+F4 apre GRIDADMN. F3 alterna modalita' S/A. In modalita' A: Invio ->
a-riga-dettagliocon operazione "M"; Ctrl+A -> nuova riga (operazione "I",add 1 to tm-pnt); Ctrl+E -> conferma e cancellazione riga (c-cancella+ compattazione array). Le abilitazioni sono controllate daw-abi-agg/w-abi-ins/w-abi-del. - a-riga-dettaglio: entra nell'area di dettaglio; in modifica ("M") rilegge il record in lock (
rd-crmopext-lk), in inserimento imposta il puntatore. Salva la copia della riga intm-ele-savper l'eventuale annullamento. - a-tm-des / a-tm-cmd / a-tm-par: accept dei tre campi. La descrizione e' obbligatoria (salvo il valore "-", riga separatore). Sul campo Comando il pulsante F7 richiama
C$OPENSAVEBOX(finestra apri file) e forza il path minuscolo intm-cmd; il comando viene validato via COPIAF (l-copiaf-ope = "fileinfo") che verifica l'esistenza del file. - a-riga-dettaglio-fine:
x-imposta-conferma(rivalida tutti i campi), conferma conacc-conf-custom; in inserimento assegna il nuovo codice (add 1 to tm-max-cod); aggiorna la griglia via GRIDADMN ("Add-Record"/"Modify-Record"); infine scrive su CRMOPEXT: rilegge in lock per stabilire se il record esiste (correggendo eventualmente l'operazione I/M), poiwr-crmopext(inserimento) orwr-crmopext(modifica). - c-cancella: rilegge in lock e
del-crmopext. - fine / z-chiudi:
z-close-files, chiude la window,z-99-exit-program,exit program.
CALL¶
| Programma | Scopo |
|---|---|
GRIDADMN |
Amministrazione/riempimento griglia (via utilgdad.cpy) |
COPIAF |
Verifica esistenza del file/comando indicato (fileinfo) |
C$OPENSAVEBOX |
Finestra di dialogo "Apri file" per selezionare il comando (F7) |
Note¶
- Il record CRMOPEXT (
cpx-rec) e' discriminato dal tipocpx-tip = k-cpx-tip-scheda(valore"SK", definito incostanti-clipot.cpy): e' la costante che isola le "operazioni esterne da scheda nominativo" dagli altri record eventualmente presenti nello stesso archivio. - Codice puramente in stile legacy:
PERFORM ... THRU(es.carica-dati thru ex-carica-dati,c-cancella thru ex-c) eGO TOestensivi per il dispatch degli accept e la navigazione col mouse (x-test-mouse). - Il paragrafo di controllo cancellazione
c1-ctrl-cancnon impone attualmente vincoli (imposta semprec-ok = "S"): la cancellazione e' sempre consentita se l'abilitazionew-abi-dello permette. - Le operazioni con descrizione "-" fungono da separatori: per queste il comando non e' obbligatorio (controllo saltato in
x-controlla-tm-cmd). - La griglia in memoria e' limitata a 50 righe (
k-max-ele-tab); superato il limite in caricamento viene emesso un messaggio e il caricamento si interrompe.