Vai al contenuto

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, esegue carica-dati che scorre CRMOPEXT (st-crmopext-notmin su cpx-tip = k-cpx-tip-scheda, rdnxt-crmopext fino a rottura tipo) caricando l'array in memoria tm-tab (max k-max-ele-tab = 50 righe) e aggiornando tm-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-dettaglio con 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 da w-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 in tm-ele-sav per 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 in tm-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 con acc-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), poi wr-crmopext (inserimento) o rwr-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 tipo cpx-tip = k-cpx-tip-scheda (valore "SK", definito in costanti-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) e GO TO estensivi per il dispatch degli accept e la navigazione col mouse (x-test-mouse).
  • Il paragrafo di controllo cancellazione c1-ctrl-canc non impone attualmente vincoli (imposta sempre c-ok = "S"): la cancellazione e' sempre consentita se l'abilitazione w-abi-del lo 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.