JS - SBH Web Guide del client web del gestionale SIGEA (sbh-web), generate dal repository adsw-next. JS1 SBH — accesso e novita' 1. Accesso La finestra dell'SBH Helper Se l'SBH Helper non risponde, prima di connettersi compare «Avvio dell'SBH Helper» : sbh-web prova ad avviarlo. Dopo qualche secondo, se non parte, propone Installa e Riprova ad avviarlo . Con Continua senza si entra lo stesso: mancano stampa diretta, cartelle, posta e terminalini. Nessuna schermata: su questo PC l'helper era gia' acceso, quindi la finestra non compare. La pagina di avvio Al centro Connetti . Sotto: Postazione : il nome con cui il server vede questo PC (dall'SBH Helper). L'icona lo copia. Server : quello predefinito del gateway, oppure uno scelto. Clic per cambiarlo. Connessioni salvate : i server usati spesso, con un nome. ✔ Verifica: la pagina mostra «Connetti» e la riga «Postazione». Il clic sul server apre Server di connessione : server e porta, fra quelli ammessi dal gateway. Ripristina predefinito torna a quello del gateway. ✔ Verifica: la finestra «Server di connessione» ha i campi Server e Porta. Connessioni salvate Nuova configurazione : nome, server, porta ed etichette (fino a 8, ognuna col suo colore). Salva questa connessione salva invece il server scelto sopra. Le etichette diventano filtri sopra l'elenco (qui solo «prova»). La ricerca trova per nome, server, prodotto, cliente o etichetta. Un clic sulla riga si collega; la matita modifica (F2), il cestino elimina. Le connessioni stanno nel browser. ✔ Verifica: tre connessioni salvate; il filtro «prova» ne mostra due. Login Utente e password del server SIGEA (massimo 12 caratteri). La password e' mascherata; l'occhio la mostra. Il primo accesso scarica i menu di tutti i moduli: 2-4 minuti. Poi restano nel browser. ✔ Verifica: il campo password e' di tipo password. 2. Dopo il login A sinistra il menu del modulo: in alto il modulo (clic per cambiarlo), la ricerca, poi Preferiti e Recenti del modulo, poi le funzioni. Se un modulo ha piu' versioni , il menu ne mostra una riga per versione. In fondo: modulo, versione e rilascio. Al centro il benvenuto: modulo, utente, uscita predefinita e i tasti utili. ✔ Verifica: il piede del menu dice «Menu B20». Scelta una voce, il pannello di avvio mostra il percorso, il logo del prodotto (eSIGEA o SIGEAdb) in alto a destra, i tipi di lavoro (Inserimento, Modifica, Interrogazione, Cancellazione), modalita', ruolo e uscita. Avvia (o Invio) apre la funzione. Dal menu, Tab porta il cursore nel pannello, sul tipo di lavoro scelto: si continua da tastiera. ✔ Verifica: quattro tipi di lavoro; dopo Tab il tipo scelto ha il fuoco. Dopo aver usato una funzione, compare fra i Recenti del modulo (anche nel benvenuto). La stella del pannello la mette fra i Preferiti . ✔ Verifica: la sezione Preferiti/Recenti del menu e' a video. 3. In una funzione In alto a destra, nella barra delle azioni, il percorso completo del menu (modulo › rami › funzione). Fra maschera e griglia, la presa coi tre puntini : si trascina per ridimensionare i pannelli. Nella barra in basso: tipo di lavoro, modalita', uscita e l' interruttore della vista . ✔ Verifica: il percorso nella barra contiene «Condizioni». L'interruttore della vista passa da Fedele (come il client, a coordinate) a Fedele con tasti a Moderna (a flusso: campi allineati, tendine «Scegli», lente accanto al campo). Un clic per vista. ✔ Verifica: dopo uno o piu' clic la maschera e' nella vista Moderna. F8 sul campo apre la Ricerca . Il filtro agisce sulle righe caricate; Altre righe chiede la pagina dopo. Il doppio clic su una riga la sceglie e la riporta nel campo. ✔ Verifica: dopo il doppio clic il campo Codice pagamento ha un valore. Il clic destro sulla maschera apre il menu con la sezione Sviluppo : il nome della maschera e Copia nome maschera (su un campo, anche il nome del campo). ✔ Verifica: il menu mostra «Copia nome maschera». Shift + clic destro su un campo apre l' ispettore : form, maschera, campo, posizione nel record, help e valore. Senza traffico verso il server. ✔ Verifica: l'ispettore si apre sul campo CODE-PAGA. 4. Schede delle sessioni Nella barra in basso c'e' una scheda per sessione. Si aggiunge col + (con login) o con Duplica dal clic destro sulla scheda (senza login). Ogni scheda mostra utente, modulo e slot ( #5 , #6 ). Passando sopra, il tooltip dice server, utente, modulo, slot e stato. L' icona del telefonino accanto allo slot (qui sulla scheda #5 ) indica la sessione a cui sono agganciati i terminalini RMH dell'SBH Helper. ✔ Verifica: due schede, il tooltip della seconda e' a video. F5 (ricarica della pagina) riprende tutte le sessioni , ognuna dove era: qui le due schede tornano sul menu, senza rifare il login. ✔ Verifica: dopo la ricarica le schede sono ancora due, col menu. 5. Opzioni utili Il pulsante ☰ in basso a sinistra apre le Opzioni , a gruppi. Sessione : SBH Helper (stato, stampante, terminalini), Servizi RMH (terminalini), Manuale in linea, Informazioni sulla sessione. Vista : Tutta la finestra, Tema scuro, Icone, Carattere, Barra dei comandi, Vista maschere. Impostazioni : Tasti funzione, Dati salvati nel browser . La voce Servizi RMH (terminalini) compare solo con un SBH Helper che li offre: spenta, sbh-web non li avvia. Dati salvati nel browser : quanto occupa sbh-web, per categoria (sessioni da riprendere, menu, maschere, guide, preferenze). Svuota cache libera spazio (il server rimanda i dati); Dimentica sessioni da riprendere cancella i rientri. ✔ Verifica: la finestra «Dati salvati nel browser» si apre dalle Opzioni. SBH Helper apre il pannello dell'helper: versione, Dispositivi (i terminalini RMH: ping, log, messaggi), Stampanti, Aggiorna. Qui i servizi RMH erano occupati da un'altra sessione (slot 5): Riprova li richiede per la sessione attiva. Senza helper, la voce propone di scaricarlo. Nessun terminalino era collegato: l'elenco dei dispositivi e' vuoto. Personalizzazione (icona in alto a destra della barra): «Stai personalizzando» sceglie il prodotto ( eSIGEA o SIGEAdb ). Superficie e tinta dello sfondo valgono per le sessioni di quel prodotto. Campi di input : sfondo, bordo e bordo al focus dei campi attivi, e dei campi disattivi e in sola lettura. Auto usa il colore del tema. Valgono per il modo chiaro o scuro in uso. ✔ Verifica: il pannello mostra la scelta del prodotto. JS2 SBH — avvio della sessione, login, schede, rientro e uscita 4. Opzioni › Informazioni sulla sessione Dal pulsante delle opzioni (le tre righe in basso a sinistra) › Informazioni sulla sessione : chi e' collegato, a quale server, con quale connessione, versione e catalogo. E' quello che si chiede a chi segnala un problema; Copia lo mette negli appunti in una volta. ✔ Verifica: la finestra mostra «Server (nodo)» e «Connessione n.». ✔ Verifica: «Postazione (client)» e' GUIDA-AVVIO , il nome scritto al §1: il nome client arriva davvero al server. ✔ Verifica: «Utente» e' valorizzato. 5. Piu' sessioni: le schede Ogni scheda della barra in basso e' una sessione completa , con la sua connessione al server: due schede sono due utenti collegati, indipendenti. Il tasto destro su una scheda apre il suo menu. ✔ Verifica: nel menu della scheda «Duplica» e «Chiudi la scheda» sono attivi. Duplica apre una connessione nuova con le stesse credenziali, senza rifare il login: le credenziali restano nella memoria della pagina, mai nel browser (vedi il §8: dopo una ricarica non ci sono piu' e la scheda nuova chiede il login). ✔ Verifica: compare una seconda scheda che entra da sola, senza richiesta di login, arriva al menu («UTENTE · menu») e diventa l'attiva. Affianca alla scheda attiva (dal menu di una scheda che non e' quella attiva) divide lo schermo fra due sessioni: per esempio un'interrogazione a sinistra e un inserimento a destra. Il clic in una delle due la rende attiva (tastiera e finestre vanno a lei). Separa , dallo stesso menu, torna a una sola. ✔ Verifica: con «Affianca» due sessioni sono a video insieme, ognuna col suo menu e piu' stretta. ✔ Verifica: con «Separa» ne resta a video una sola. Chiudi la scheda su una scheda connessa esce dalla sua sessione in modo ordinato e lo chiede prima, con una finestra dell'app e non con quella del browser. ✔ Verifica: «Chiudi la scheda» chiede «Chiudere la scheda?»; confermato, la scheda sparisce e resta la prima, col suo menu. Il + accanto alle schede apre una sessione nuova con il suo login (per entrare con un altro utente): la scheda nasce sulla pagina Connetti. Una scheda senza connessione si chiude subito, senza conferma, perche' non c'e' niente sul server da chiudere. ✔ Verifica: il «+» apre la scheda «Nuova sessione» con Connetti, e la prima resta connessa (pallino verde). ✔ Verifica: il menu della scheda nuova dice «Nessuna connessione aperta» e «Chiudi la scheda» la toglie subito. 6. Una funzione aperta Dal menu: modulo B20 , cerca «Condizioni», Condizioni pagamento , tipo di lavoro Interrogazione , Avvia . Con una funzione aperta il client protegge il lavoro: uscire a meta' troncherebbe il programma COBOL (file e transazioni non chiusi), quindi si esce solo dal menu. ✔ Verifica: la griglia ha le righe e il cursore e' sul Codice pagamento. ✔ Verifica: la scheda dice utente e form (non piu' «menu») e la barra mostra form e maschera in input. ✔ Verifica: il pulsante di uscita e' spento. ✔ Verifica: nel menu della scheda «Chiudi la scheda» e' spento, con «Prima chiudi la funzione e torna al menu». 7. Il rientro dopo una ricarica Ricaricare la pagina (F5), chiudere la scheda del browser e riaprire /sbh , o andare avanti e indietro, non perde la sessione: il gateway la tiene parcheggiata per qualche minuto, il browser rigioca quello che il server gli aveva mandato e si riaggancia. La funzione torna com'era, col campo in input. Per questo il browser non chiede piu' «Vuoi davvero uscire?»: non c'e' niente da perdere. ✔ Verifica: ricaricando, il browser non mostra nessun avviso. ✔ Verifica: la griglia torna con la stessa prima riga, il cursore sul Codice pagamento e nessuna attesa in corso. ✔ Verifica: dopo la ricarica c'e' una sola scheda (quella ripresa prende il posto della scheda vuota dell'avvio). 8. Uscire dalla pagina con la sessione aperta Andare altrove nell'applicazione (qui: Tutti i moduli in alto a sinistra › un modulo) con una sessione aperta non la abbandona in silenzio: l'app chiede cosa farne. Resta : si annulla la navigazione. Lascia in sospeso : si esce, le sessioni restano parcheggiate sul gateway e tornando su /sbh entro il tempo detto riprendono da dove erano, come dopo la ricarica del §7. Forza l'uscita (con una funzione aperta) o Chiudi le sessioni ed esci (dal menu): chiude tutte le connessioni. Con una funzione aperta la tronca a meta'. La guida prova Resta : «Lascia in sospeso» terminerebbe il giro con una sessione parcheggiata sul server, che il passo successivo dovrebbe riprendere; il rientro stesso e' gia' provato al §7. ✔ Verifica: compare «Uscire dalle sessioni?» e avverte che c'e' una funzione aperta. ✔ Verifica: i pulsanti sono «Resta», «Lascia in sospeso» e «Forza l'uscita». ✔ Verifica: il testo dice che le sessioni in sospeso riprendono «entro 15 minuti» (il tempo di rientro del gateway, SBH_RESUME_SECONDS , di default 900 secondi). ✔ Verifica: con «Resta» la finestra si chiude, si resta su /sbh e la funzione e' ancora a video. Tornati al menu col tasto Esci della funzione, l'uscita si riaccende. La sessione ripresa dopo la ricarica si puo' duplicare , ma con una differenza: le credenziali che servono a «Duplica» per entrare da sola stavano nella memoria della pagina, e la ricarica le ha cancellate (e' voluto: non si salvano nel browser). Il menu della scheda lo dice nel sottotitolo, «Nuova connessione: dopo una ricarica il login va rifatto». ✔ Verifica: di nuovo al menu, il pulsante di uscita e' attivo e la scheda dice «UTENTE · menu». ✔ Verifica: dopo il rientro «Duplica» e' attivo, con «dopo una ricarica il login va rifatto». La scheda nuova si collega da sola e arriva alla richiesta di login del server. La guida non entra (non conosce le credenziali: stanno in config/.env.sbh ) e chiude la scheda dal suo menu, con la conferma: l'uscita e' ordinata anche dalla richiesta di login (il client risponde Esci al server). ✔ Verifica: la seconda scheda mostra il login e dice «Accesso…», mentre la prima resta connessa. ✔ Verifica: «Chiudi la scheda» con la conferma la toglie e resta la prima, col suo menu. 9. L'uscita ordinata Dal menu, il pulsante di uscita in basso a destra (o Opzioni › Esci dalla sessione ) chiude la sessione in modo ordinato: il client dice al server che se ne va, il server chiude i suoi programmi e libera la connessione. La conferma e' una finestra dell'app. ✔ Verifica: l'uscita chiede «Chiudere la sessione?» con il pulsante «Chiudi la sessione». ✔ Verifica: confermato, la barra dice «Chiuso» e torna la pagina Connetti. ✔ Verifica: accanto a «Chiuso» non ci sono piu' nodo e numero della connessione finita. ✔ Verifica: nel browser non resta nessuna sessione da riprendere (nessuna voce sbh-web.sessione.* nel localStorage). Introduzione Come si apre una sessione del gestionale legacy dal client web, come si entra, come si lavora con piu' sessioni a schede, cosa succede se si ricarica la pagina e come si esce senza lasciare connessioni appese sul server. Percorso: http://localhost:4202/sbh › Connetti › Accedi ; per la funzione di prova B20 › Condizioni pagamento › Interrogazione . Rieseguire: cd frontend && npx playwright test --config=playwright.sbh.config.ts sbh-web-guida-avvio (con altre sessioni al lavoro, aggiungere --output=test-results/sbh-guida-avvio ). 42 verifiche, 18 schermate. Non crea dati: la funzione di prova e' aperta in interrogazione. Perche' uno spec Playwright e non un .cjs in e2e/guide/ . Le altre guide girano con uno script node e2e/guide/-guide.cjs contro l'ERP sulla 4200. Questa parla con un server SIGEA legacy vero, attraverso il gateway SBH, e ha bisogno di utente e password: li carica frontend/playwright.sbh.config.ts da config/.env.sbh (ignorato da git, non si legge e non si copia altrove). Lo script e' quindi frontend/e2e/sbh-web-guida-avvio.spec.ts , che usa quella config, la cache dei menu di e2e/sbh-web-accesso.ts ( SBH_STATO ) e lo stesso schema degli altri spec sbh-web. Ogni ✔ Verifica qui sotto e' un expect dello spec, nello stesso ordine. Prerequisiti: npm run sbh:leggero avviato (app sulla 4202, gateway sulla 5086), la VPN verso il server legacy. Viewport 1500x900. Lo spec chiude sempre la sessione in modo ordinato, anche se un passo fallisce: il server ha un numero massimo di connessioni e una sessione abbandonata resta occupata finche' il gateway non la chiude. JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti 1. Il pannello Opzioni Con il modulo e la voce scelti nel menu (la funzione non e' ancora avviata), il pulsante con le tre righe in fondo a sinistra apre il pannello verso l'alto , dentro la barra: e' quello che nel client legacy stava nei menu della finestra. Le voci sono divise in tre gruppi: Sessione (uscire, archivio stampe, manuale, informazioni), Vista (menu, tutta la finestra, stampa della schermata, strumenti della griglia, tema, carattere, trace) e Impostazioni (tasti funzione). Una voce che in quel momento non ha senso resta a video ma spenta, e sotto il nome dice perche': cosi' non si cerca una funzione che "non c'e'". A destra delle schede, con una funzione aperta, la barra dice che funzione sta girando : tipo di lavoro, Definitivo o Simulato (il simulato su fondo arancione), la stampante con cui e' partita (nome e tipo; segue il cambio chiesto dal programma con «Scegli la stampante») e il ruolo. Quando la barra non ha spazio (tante schede, finestra stretta, schermo diviso) diventano un pulsante compatto che apre verso l'alto un pannello con i dettagli. I tasti funzione non stanno piu' qui: sono nella barra dei comandi (§14). Form, maschera e campo li mostra F7 sul campo in input (la mini-guida del client legacy) o Maiusc + clic destro; il piede del pannello Opzioni lo ricorda. ✔ Verifica: il pannello ha i tre gruppi Sessione, Vista, Impostazioni, in quest'ordine. ✔ Verifica: dal menu Archivio stampe e' spento e dice «Solo mentre la funzione aspetta un input». ✔ Verifica: dal menu Stampa la schermata e' spento e dice «Nessuna funzione a video». ✔ Verifica: dal menu Esci dalla sessione e' attivo (dentro una funzione no, vedi §6). 10. Un documento nel visualizzatore Il visualizzatore mostra le stampe (PDF, HTML, testo impaginato in Courier a sei righe per pollice) e i file che il server manda. Per vederlo senza stampare niente, Griglia in XML mette l'XML della griglia delle condizioni fra i documenti, come l'export XML del client legacy: arriva una finestra a tutto schermo (per l'XML una pagina a tutta larghezza in carattere fisso; le stampe di testo restano fogli A4 e, se una riga e' piu' larga del foglio, il foglio scorre) con Stampa , Scarica , Apri in una nuova scheda e Affianca alle maschere . ✔ Verifica: il visualizzatore si intitola «20000DTB2-200 (XML)». ✔ Verifica: il documento contiene l'XML della griglia ( ). ✔ Verifica: l'XML e' una pagina a tutta larghezza (non un foglio A4) e le righe piu' lunghe della finestra si leggono scorrendo, non sono tagliate. 11. Affiancato alle maschere Affianca alle maschere sposta il documento nel pannello Documenti del §5: la funzione resta a sinistra e si continua a lavorare, la stampa a destra. Il pulsante Documenti porta il numero dei documenti ricevuti nella sessione. ✔ Verifica: il pannello a destra mostra lo stesso XML e il campo della funzione resta a video. ✔ Verifica: il pulsante Documenti porta il numero dei documenti ricevuti. ✔ Verifica: ricliccato Documenti, il pannello si chiude. 12. Tasti funzione Come la configurazione tasti del client legacy ( SbhKeyConfDlg ): quale tasto della tastiera fa Esci , Conferma , Guida e Cerca / Salto , fra F9, F10, F11, F12 ed Esc. Un tasto vale per un'azione sola: sceglierlo per un'altra le scambia. Qui il predefinito di Esci e' Esc ; «Come il client legacy» rimette Esci su F11. La scelta resta nel browser e si vede subito nel tasto Esci della barra dei comandi (il tooltip dice il tasto) e nel sottotitolo della voce. ✔ Verifica: messo Esci su F11, il tasto Esci della barra dei comandi dice «Esci · F11». ✔ Verifica: il sottotitolo di «Tasti funzione» nel pannello dice «Esci F11». ✔ Verifica: rimesso Esci su Esc, il tasto dice di nuovo «Esci · Esc» e la preferenza salvata e' quella di prima. 14. La barra dei comandi La toolbar del client legacy sopra le maschere ( TBR_FORM , SbhFormChildFrame.cpp:599 ): conferma, invio, esci; campo e pagina precedente/successiva; F1-F8; cerca (F9) e guida del campo; poi stampa, esporta, funzioni della griglia, manuale e informazioni. Ogni pulsante fa esattamente quello che fa il suo tasto e si accende solo se il campo in input lo ammette (nel legacy SbhFormRegion::UpdateCmd e ResolveCmd , SbhFormRegion.cpp:610-750 ); le funzioni del client si accendono come le loro voci nelle Opzioni. Il tooltip dice il nome e il tasto, con la rimappatura della §12 («Esci · Esc», o «Esci · F11»). Il clic non toglie il cursore al campo. I Maiusc+F e Rifiuta compaiono solo quando il campo li ammette; le etichette dei tasti sono fisse, come nel legacy (il COBOL non ne manda). Script: npx playwright test --config=playwright.sbh.config.ts sbh-web-barra-comandi ( frontend/e2e/sbh-web-barra-comandi.spec.ts ), su BE0 › Tabella I V A in interrogazione. Dove sta la sceglie l'utente dal menu ⋯ della barra, e resta nel browser ( sbh-web.barra-comandi , per tutte le schede di sessione): fissa in alto (il predefinito), fissa in basso , mobile (una finestrella da trascinare per la maniglia a sinistra, anche con le frecce; doppio clic la rimette in alto a destra; la X la chiude), segue il cursore (compatta, solo i tasti accesi, sotto il campo in input o sopra se sotto non c'e' posto: si sposta con un'animazione breve quando cambia il campo, niente animazione con «riduci movimento» del sistema). Spenta, si riaccende da Opzioni › Vista › Barra dei comandi o con Alt+Maiusc+B , e torna com'era. Sta sopra le maschere e le NEW-FORM, dentro lo schermo della sessione. ✔ Verifica: fissa in alto, sopra le maschere; Esci e Invio accesi, il tooltip di Esci dice «Esci · Esc». ✔ Verifica: aperto il menu ⋯, il cursore resta nel campo in input e «Fissa in alto» e' spuntata. ✔ Verifica: mobile, trascinata in basso a sinistra si sposta col puntatore e la posizione si ricorda nel browser; trascinata oltre il bordo si ferma dentro lo schermo della sessione; il cursore resta nel campo. ✔ Verifica: segue il cursore, compatta, accanto al campo in input senza coprirlo, solo tasti accesi. ✔ Verifica: Alt+Maiusc+B la spegne, la voce delle Opzioni dice «Spenta» e la riaccende com'era. ✔ Verifica: la X rossa della barra fa quello che fa Esc: la funzione si chiude e si torna al menu. 2. Manuale in linea Manuale in linea apre in una finestrella del browser accostata a destra (sempre la stessa, «sbh-manuale», che si riusa) la pagina del manuale della voce scelta nel menu , come la finestra del manuale del client legacy; senza una voce scelta apre la pagina iniziale. Se il browser blocca le finestre, si apre in una scheda. L'indirizzo lo costruisce manualUrl ( sbh-web/src/session/utils/menu-file.util.ts ): il modulo con la B che diventa E (B20 → E20), la versione se non e' 0000, la fase e le posizioni della voce nell'albero a due cifre, e il prodotto dal livello d'uso (SIGEA, eSIGEA, SIGEAdb). ✔ Verifica: con la voce scelta, sotto il nome della voce c'e' «Della funzione scelta nel menu». ✔ Verifica: la scheda nuova si apre su https://gsdoc.genesyssoftware.eu/page-function/E20…/1?prodotto=… . Sul server di prova e' la pagina «1.1.1.1 - Tabelle Generali: 1. Condizioni di Pagamento». ✔ Verifica: scelta la voce, il pannello Opzioni si chiude da solo. 3. Informazioni sulla sessione Nel legacy era «Informazioni su»: chi e' collegato, a quale server, con quale connessione, catalogo, livello d'uso, documentale e versione del client. Serve soprattutto quando si chiede aiuto: Copia mette tutto negli appunti, una riga per voce. ✔ Verifica: ci sono le righe Utente, Server (nodo), Porta, Connessione n., Catalogo, Livello d'uso. ✔ Verifica: Utente non e' vuoto (non «—»). ✔ Verifica: Connessione n. e' un numero. ✔ Verifica: Client comincia con «sbh-web». ✔ Verifica: Chiudi chiude la finestra. 4. Tema scuro Tema scuro e' un interruttore: cambia il tema di tutta l'applicazione (la stessa preferenza della luna nella barra in alto dell'ERP), non solo delle maschere. ✔ Verifica: acceso, la pagina passa al tema scuro (classe app-dark sulla pagina). ✔ Verifica: l'interruttore della voce e' acceso. ✔ Verifica: ricliccato, si torna al tema chiaro. 5. Documenti: il pannello affiancato Il pulsante Documenti della barra in basso apre a destra un pannello con le stampe e i file che il server manda durante la sessione, affiancato alle maschere: lo schermo si divide e il divisore si trascina (doppio clic lo rimette a meta'). Prima di qualunque stampa il pannello e' vuoto e lo dice. ✔ Verifica: il pannello dice «Le stampe della sessione compaiono qui.». ✔ Verifica: il pulsante Documenti resta premuto finche' il pannello e' aperto. ✔ Verifica: ricliccato, il pannello si chiude. 6. Dentro la funzione: Stampa la schermata Si sceglie Interrogazione e si avvia. Aperta la funzione il pannello cambia: si accendono le voci che lavorano sulla funzione a video (stampa, strumenti della griglia, archivio stampe) e si spegne Esci dalla sessione , perche' uscire con una funzione aperta la troncherebbe a meta' (il COBOL non chiude file e transazioni): prima si torna al menu con Esci. Stampa la schermata e' l'hardcopy del client legacy: stampa la funzione com'e' a video , e solo quella. Da printScreen ( sbh-web/src/session/components/sbh-session-page/sbh-session-page.component.ts ): mette la classe sbh-print-target sul contenitore della funzione e sbh-printing sulla pagina, poi chiama la finestra di stampa del browser; le regole @media print di sbh-cornice.component.ts nascondono tutto il resto (barra in alto, menu, barra in basso, pannelli) e allargano la funzione alla pagina. Chiusa la finestra di stampa ( afterprint ) le due classi si tolgono. Stampante, copie e formato si scelgono nella finestra del browser: la stampa silenziosa su una stampante di Windows del legacy da un browser non si puo' fare. Lo script non apre la finestra di stampa (bloccherebbe il browser di prova): verifica che la voce ci sia e sia attiva. ✔ Verifica: dentro la funzione Stampa la schermata e' attiva e dice «La funzione a video, com'e'». ✔ Verifica: dentro la funzione Archivio stampe e' attivo. ✔ Verifica: dentro la funzione Esci dalla sessione e' spento. 7. Trace del protocollo Trace del protocollo apre a destra il pannello con ogni frame scambiato col server: ◀ quello che arriva, ▶ quello che parte, · gli eventi (sessione aperta, chiusa, macro non gestite). Serve a capire cosa il programma chiede e cosa il client risponde, senza il log del client legacy. Il livello, in alto a sinistra, dice quanto scrivere e si ricorda nel browser: livello cosa scrive 0 niente: trace spento 1 solo gli eventi (sessione, errori, avvisi), nessun frame 2 anche una riga per frame: MCCB func=… subf=… optn=… retn=… name="…" dati=… sicb=… e i byte 3 anche il dump esadecimale di ogni frame: offset, 16 byte in esadecimale, gli stessi in testo Il trace scrive solo da quando e' acceso: per vedere l'avvio della funzione si accende dal menu, prima di avviare. La casella Filtra tiene le righe che contengono il testo (una macro, il nome di una maschera) e il contatore dice quante sono su quante; Scarica salva un .txt con le righe filtrate (come il 000.txt del log legacy) col nome sbh-trace-AAAAMMGG-hhmmss.txt in ora locale; il cestino svuota. Le righe lunghe vanno a capo dentro il pannello; il dump esadecimale, che a capo non si leggerebbe, scorre in orizzontale dentro la sua riga. ✔ Verifica: al livello 3 sotto le righe dei frame c'e' il dump esadecimale. ✔ Verifica: ci sono righe in arrivo (◀) e in partenza (▶). ✔ Verifica: nessuna riga esce a destra del pannello: le righe lunghe vanno a capo. ✔ Verifica: filtrando per il nome della griglia 20000DTB2-200 restano meno righe, tutte con quel nome, e il contatore dice «N / totale». ✔ Verifica: Scarica salva sbh-trace-AAAAMMGG-hhmmss.txt con la data di oggi e l'ora locale, e il file contiene solo le righe filtrate. ✔ Verifica: al livello 2, aprendo e chiudendo l'archivio stampe, compaiono righe func= senza dump. ✔ Verifica: al livello 1, la stessa apertura dell'archivio non scrive nessun frame. ✔ Verifica: al livello 0, svuotato, il pannello dice «Trace spento.». 8. Tutta la finestra Dopo il login al legacy la shell tiene solo la barra in alto col logo; Tutta la finestra toglie anche quella e la sessione prende tutta la finestra del browser (non lo schermo intero: le schede e la barra degli indirizzi di Chrome restano). Vale per tutte le schede di sessione. Si torna indietro con la stessa voce o col pulsante che compare nella barra in basso. ✔ Verifica: acceso, la barra in alto sparisce. ✔ Verifica: il pulsante «Tutta la finestra» della barra in basso resta premuto. ✔ Verifica: ricliccato quel pulsante, la barra in alto torna. 9. Archivio stampe L' archivio stampe (lo storico delle stampe sul server, SbhSpmSearchDlg del legacy) si apre solo mentre la funzione aspetta un input : le richieste viaggiano "a parte" rispetto alla maschera in attesa, e il server risponde senza che il programma si muova; chiuso l'archivio, la funzione riprende da dove era, col cursore sul campo. All'apertura il server manda l'elenco delle stampanti d'uscita che hanno stampe nello storico; si cerca per stampante d'uscita, utente (quello del login) e date di creazione (oggi, di partenza). Sulla ricerca di oggi non c'era niente: lo script allarga Creati dal a un anno fa e trova due flussi del registro IVA. ✔ Verifica: la stampante d'uscita e' gia' scelta: l'elenco e' arrivato dal server. ✔ Verifica: senza un flusso scelto Anteprima, Ristampa, Proroga 30 gg ed Elimina sono spenti. ✔ Verifica: allargata la data, la ricerca trova flussi, con titolo, uscita e formato (Testo). Un clic su un flusso lo sceglie e chiede al server i suoi documenti , che compaiono a destra con titolo, copie, ristampe, ultima stampa, email e identificativo. Con un flusso scelto si accendono i comandi in fondo: Anteprima (il flusso arriva nel visualizzatore del browser), Proroga 30 gg della conservazione ed Elimina (in due clic: il primo arma la conferma). Ristampa vuole anche la stampante del server , scelta nella tendina accanto (l'elenco arriva dal server). Le caselle a sinistra dei documenti scelgono quali documenti del flusso vedere in anteprima o ristampare; nessuna casella = tutto il flusso. La guida si ferma qui: anteprima, ristampa, proroga ed eliminazione agiscono sullo storico vero e non si provano. ✔ Verifica: cliccato un flusso, a destra c'e' «Documenti di (n)» con le righe dei documenti. ✔ Verifica: con il flusso scelto Anteprima, Proroga 30 gg ed Elimina sono attivi. ✔ Verifica: senza la stampante del server Ristampa resta spento. ✔ Verifica: la casella di un documento si spunta (un documento scelto). ✔ Verifica: l'elenco delle stampanti del server non e' vuoto, e sceltane una Ristampa si accende. ✔ Verifica: chiuso l'archivio, la funzione riprende col cursore sul codice pagamento. JS4 Griglie e analisi nel client web del legacy SBH 1. La griglia: righe che arrivano dal COBOL La griglia sotto la maschera non la disegna il client: le righe le crea il programma COBOL con INIT-MASK + PUT-SCREEN (maschera 20000DTB2-200 ), e il client le mostra con la griglia standard dell'ERP, RevoGrid. Le prime tre colonne (Cod., la matita, Descrizione) restano ferme quando si scorre a destra: sono le 24 rate (TC, GG dec, % Rata) a far scorrere la griglia. ✔ Verifica: la griglia mostra le condizioni mandate dal COBOL (codice e descrizione in ogni riga). ✔ Verifica: le intestazioni sono i titoli della maschera (Cod., Descrizione, TC_1, % Rata 1). 10. Dove si salvano le scelte Oggi tutto sta nel browser ( localStorage ), per postazione, come i file .cnf / .pvt del client legacy stavano sul PC: Scelta Chiave Chi la scrive larghezze trascinate, colonne nascoste, ordine delle colonne core-grid.colonne. la griglia comune ( core/src/grid/grid.component.ts ) viste salvate di pivot e grafico core-grid.analisi. LocalAnalysisStore ( core/src/grid/analysis/analysis-store.ts ) Configura la griglia (ordinamento, subtotali, funzioni) sbh-web.gridconf...
. SbhSessionService.setGridConf (sbh-web) Lo stateKey lo sceglie chi ospita la griglia; sbh-web usa sbh... (qui sbh.20000FTB2.20000DTB2-200.SYSTEM MANAGER ). Una griglia senza stateKey non ricorda le colonne, e le sue viste finiscono sotto un'impronta dei campi ( campi. ): stessa tabella, stesse viste. Le viste di pivot e grafico passano da un'interfaccia, GridAnalysisStore ( list / save / remove ), fornita col token GRID_ANALYSIS_STORE . Per portarle sul server , con le viste che seguono l'utente su ogni postazione e si possono condividere, basta fornire un'altra implementazione del token: la griglia e le due finestre non cambiano. Le scelte sulle colonne e la configurazione di sbh-web oggi non hanno un'interfaccia analoga. 2. Ordinare cliccando un'intestazione Un clic ordina crescente, il secondo decrescente, il terzo toglie l'ordinamento e rimette l'ordine in cui il COBOL ha mandato le righe. L'ordinamento e' del client: il COBOL non ne sa niente, e le righe che rilegge con GET-GRID restano le sue. La colonna ordinata si riconosce da un filetto di 2px col colore primario in fondo all'intestazione, con una freccina ▲/▼ all'estremita' dove c'e' spazio: a destra sulle colonne di testo, a sinistra su quelle allineate a destra (numeri, date), dove a destra c'e' il testo. Sta in fondo alla cella in posizione assoluta apposta: non occupa larghezza, quindi si vede anche sulle colonne «a filo» del contenuto, dove l'imbuto del filtro non ci sta piu' e si nasconde. Una colonna allineata a destra ✔ Verifica: un clic su «Cod.» ordina i codici dal piu' piccolo. ✔ Verifica: su «Cod.», colonna numerica stretta (45px) allineata a destra, il filetto di 2px attraversa tutta l'intestazione e la freccina sta nella meta' di sinistra. ✔ Verifica: un secondo clic inverte: in cima il codice piu' grande. Una colonna stretta allineata a sinistra ✔ Verifica: su «TC_1», larga 37px, il filetto attraversa tutta l'intestazione. ✔ Verifica: ordinando «TC_1» il filetto di «Cod.» sparisce: si ordina per una colonna alla volta. ✔ Verifica: su «Descrizione» il filetto e' largo quanto l'intestazione. ✔ Verifica: al terzo clic l'ordinamento si toglie e torna l'ordine del COBOL. 3. Filtri di colonna dal tasto destro sull'intestazione Il tasto destro su un'intestazione apre il menu della colonna (dal 2026-10-02): «Filtra…» apre il filtro di quella colonna (lo stesso dell'imbuto che compare passandoci sopra); nello stesso menu «Nascondi la colonna», «Raggruppa per questa colonna» e «Totale sotto», che sono le scelte dell'Analisi Avanzata. Sulle intestazioni a icona o a casella che il COBOL gestisce col tasto destro vince il COBOL, e il menu non si apre. Il pannello dice su cosa agisce, «su tutte le righe»: qui la griglia ha tutte le righe in mano, non c'e' un server a cui chiedere. Le condizioni sono quelle di RevoGrid (Uguale, Diverso, Inizia con, Contiene, Non contiene, vuoto / non vuoto) e si possono sommare con «Aggiungi condizione». ✔ Verifica: tasto destro › «Filtra…» su «Descrizione» apre il filtro della colonna, sotto l'intestazione. ✔ Verifica: «Contiene BANC» lascia solo le condizioni con BANC nella descrizione. La griglia filtrata ✔ Verifica: l'intestazione filtrata cambia colore e tiene l'imbuto acceso. ✔ Verifica: «Azzera» rimette tutte le righe. Una colonna stretta Sotto i 62px (Valuta, 55px) l'imbuto coprirebbe il titolo: resta al suo posto ma invisibile, e il filtro si apre dal tasto destro. ✔ Verifica: su «Valuta», colonna stretta, l'imbuto non si vede nemmeno passandoci sopra. ✔ Verifica: il tasto destro su «Valuta» apre il filtro accanto alla colonna, subito sotto l'intestazione. 4. Il menu del tasto destro su una cella Il tasto destro su una cella apre il menu della griglia: in testa le statistiche della selezione (quante celle, se sono numeri: somma, media, minimo e massimo; le stesse della barra di stato in fondo), poi Copia, Esporta, il sottomenu Analisi e gli Strumenti. Per selezionare piu' celle: clic sulla prima, Maiuscolo+clic sull'ultima. ✔ Verifica: con una sola cella selezionata il menu dice «1 cella». ✔ Verifica: tre celle di «% Rata 1» selezionate: il menu dice «3 celle — NUMERI» e la somma e' la loro. ✔ Verifica: Copia › Per Excel mette negli appunti le tre celle, una per riga. ✔ Verifica: Esporta offre CSV, Excel e PDF. ✔ Verifica: la finestra «Esporta in CSV» scarica un file .csv. ✔ Verifica: il sottomenu Analisi ha Pivot, Grafico e Analisi avanzata. 5. Colonne visibili e larghezze ricordate Strumenti › Colonne visibili accende e spegne le colonne; trascinando il bordo destro di un'intestazione si cambia la larghezza (una targhetta dice i pixel mentre si trascina, una riga tratteggiata dove finira' il bordo). Le scelte si ricordano nel browser per form, maschera e utente: dove, lo dice il § 10. Le colonne senza titolo compaiono nell'elenco col loro tooltip o come «(azioni)»: qui la matita. L'elenco si apre verso l'alto e scorre; quando il menu e' vicino al bordo destro (oltre larghezza − 720px , i tre livelli menu › Strumenti › Colonne visibili) i sottomenu si aprono verso sinistra, come nella schermata, e restano tutti dentro la finestra. ✔ Verifica: il sottomenu «Colonne visibili» si apre verso l'alto, non esce sotto la finestra e scorre. ✔ Verifica: nessuna voce senza nome: la colonna della matita si chiama col suo tooltip o «(azioni)». ✔ Verifica: tolta la spunta a «DescPag» la colonna sparisce dalla griglia. Le larghezze ✔ Verifica: trascinando il bordo destro «Descrizione» si stringe di 80px. ✔ Verifica: colonne nascoste e larghezze stanno nel browser sotto core-grid.colonne... . ✔ Verifica: uscendo e rientrando nella funzione «DescPag» resta nascosta. All'apertura il COBOL manda SET-GRID RESIZE-COL , cioe' «adatta le colonne al contenuto»: la griglia lo fa senza toccare le larghezze scelte a mano. Il pulsante «Adatta le colonne» degli Strumenti invece le dimentica apposta: e' il modo di dire «torna come prima». ✔ Verifica: rientrando, «Descrizione» resta stretta come l'ha lasciata il trascinamento, anche dopo l'adatta del COBOL. ✔ Verifica: rimessa la spunta, «DescPag» torna. 6. Opzioni › «Configura la griglia»: ordinamento e subtotali E' la configurazione del client legacy (il suo .cnf ): ordinamento fino a tre colonne, il subtotale a ogni cambio delle prime, le «Righe di totale» con una funzione per colonna (somma, media, conteggio, distinti, minimo, massimo). A differenza del clic sull'intestazione, questa passa per la griglia come la farebbe il COBOL con PUT-GRID AGGREGATE : le righe di totale non sono istanze e non tornano al COBOL. ✔ Verifica: ordinata per TC_1 con subtotale: a ogni cambio di TC_1 compare una riga di totale in grassetto su fondo grigio. ✔ Verifica: la riga di subtotale porta il conteggio dei codici del gruppo. ✔ Verifica: la riga di subtotale ha il fondo del totale su tutte le colonne della maschera, anche quella della matita. La colonna # (numero di riga della griglia comune) resta bianca: «Aperto». ✔ Verifica: la configurazione si ricorda nel browser ( sbh-web.gridconf.... ). ✔ Verifica: «Togli configurazione» torna all'ordine del COBOL, senza righe di totale, e dimentica la scelta. 7. Il pivot Dal tasto destro › Analisi › Pivot (o Opzioni › «Pivot della griglia»). Lavora sulle righe a video, coi filtri di colonna applicati, senza la colonna delle azioni e senza righe di totale; i numeri e le date sono veri, non il testo formattato. A sinistra i campi ( # numero, ≡ testo), da trascinare nelle quattro zone Righe, Colonne, Valori, Filtri; un clic su un campo lo mette nella zona piu' probabile. Righe, colonne, valori All'apertura propone una partenza: in Righe la colonna di testo con piu' valori diversi, in Valori la somma del numero piu' utile. Qui si costruisce «quante condizioni per tipo carta e decorrenza»: TC_1 in Righe, DecPag in Colonne, e sul chip del valore la funzione Conteggio. ✔ Verifica: il pivot parte da una proposta: righe = la colonna di testo piu' varia, valori = la somma di un numero. ✔ Verifica: trascinato TC_1 in Righe: una riga per ogni tipo carta (AB, BB, CN…). ✔ Verifica: trascinato DecPag in Colonne: una colonna per valore (0, 1, 2, 3) piu' il totale. ✔ Verifica: con «Conteggio» il totale generale e' il numero di righe analizzate. ✔ Verifica: «Mostra come: % del totale» porta il totale generale a 100. Ordine, primi N, calore e barre Nella barra dei comandi: A–Z / 123 ordina per etichetta o per valore, la freccia inverte, «Primi N» tiene i gruppi piu' grandi e mette il resto in «Altri». I numeri si leggono in tre modi: Calore (il fondo della cella piu' intenso dove il numero e' piu' grande, su una scala a radice perche' si vedano anche le differenze piccole), Barre (una barra da destra lunga quanto il valore rispetto al massimo della colonna), 123 (solo numeri). ✔ Verifica: ordinato per valore, decrescente, «Primi 5»: cinque tipi carta dal piu' usato, il resto in «Altri». ✔ Verifica: in modo «Calore» il fondo delle celle e' piu' intenso dove il numero e' piu' grande. ✔ Verifica: in modo «Barre» ogni cella ha una barra lunga quanto il valore rispetto al massimo. Gruppi apribili Con due campi in Righe il primo diventa un gruppo che si apre e si chiude (clic sull'etichetta, o i due pulsanti ⊕ ⊖ per tutti). ✔ Verifica: con due campi in Righe (TC_1 › Descrizione) i tipi carta diventano gruppi apribili. ✔ Verifica: «Chiudi tutti i gruppi» lascia solo i tipi carta. ✔ Verifica: «Apri tutti i gruppi» rimette le descrizioni sotto ogni tipo carta. Drill-down: le righe di una cella Un clic su una cella apre sotto il pivot le righe della griglia che la compongono, con tutte le colonne: e' il modo di passare dal numero ai casi. ✔ Verifica: un clic su una cella apre sotto le righe che la compongono, tante quante il conteggio. Filtro dei valori Un campo in Filtri non diventa ne' riga ne' colonna: serve a escludere dei valori. L'imbuto del chip apre l'elenco dei valori con «tutti» / «nessuno», e il chip conta quanti ne sono esclusi. ✔ Verifica: nel filtro DataDecPag, tolto «1»: il chip conta un valore escluso e il totale scende. Esportare e salvare la vista I due pulsanti a destra esportano il pivot com'e' a video in Excel ( .xlsx ) e CSV. Le viste salvate (in basso a sinistra) ricordano righe, colonne, valori, filtri e opzioni; ☆ la salva come predefinita, che si apre da sola la volta dopo. ✔ Verifica: i due pulsanti di export scaricano il pivot in .xlsx e in .csv. ✔ Verifica: salvata la vista «Guida griglie»: compare in «Viste salvate» e nel browser sotto core-grid.analisi... . ✔ Verifica: riaperto il pivot, la vista salvata rimette righe, colonne, valori e filtro. 8. Il grafico Dal pivot col pulsante Grafico (prima riga = etichette dell'asse, prima colonna = serie, stessi valori), dal tasto destro › Analisi › Grafico o da Opzioni › «Grafico della griglia». Otto tipi (Colonne, Barre, Linee, Aree, Torta, Ciambella, Polare, Radar), una o piu' serie, impilato, primi N con «Altri». In testa i numeri chiave : Totale (di tutte le righe), Media e Massimo/Minimo calcolati sulle etichette a video, senza «Altri» (per questo la media dice «su N etichette»); il Massimo porta la sua quota del totale. ✔ Verifica: «Grafico» dal pivot apre il grafico con le etichette del pivot: una per tipo carta. ✔ Verifica: la serie arriva dal pivot anche se e' un campo numerico: la tendina «Serie» dice DecPag. Asse e serie offrono tutti i campi, anche i numerici. ✔ Verifica: il filtro del pivot passa al grafico: Totale 130 come nel pivot (DataDecPag = 1 escluso), e nella barra il bottone «1 esclusi ×». ✔ Verifica: i numeri chiave: Totale, Media, Massimo (con la sua quota), Minimo. ✔ Verifica: un clic su «esclusi ×» toglie il filtro: il Totale torna a tutte le righe (133). Tipo, impilato, primi N ✔ Verifica: i tipi si scelgono con un clic: «Barre» diventa quello attivo. ✔ Verifica: «Impilato» mette le serie una sull'altra. ✔ Verifica: «Primi 5» con «Altri» acceso: cinque etichette piu' una che raccoglie il resto. Le righe di una barra, il PNG ✔ Verifica: un clic su una barra apre le righe che la compongono. ✔ Verifica: «PNG» scarica l'immagine del grafico. Ciambella e viste del grafico ✔ Verifica: cambiando tipo le righe della barra di prima si chiudono (valgono per la barra cliccata, non per il grafico nuovo). ✔ Verifica: «Ciambella» toglie la scelta delle serie (una torta ha un solo cerchio di valori). ✔ Verifica: anche il grafico salva le sue viste, accanto a quelle del pivot. ✔ Verifica: la × accanto a una vista la cancella, anche dal browser. 9. Opzioni › «Griglia in XML» L'export XML del client legacy: la griglia com'e' (tipi, titoli, una per riga con tutti i campi, anche l'id interno), aperta nel visualizzatore dei documenti della sessione in una pagina a tutta larghezza (non un foglio di stampa), da dove si stampa, si scarica o si affianca alle maschere. ✔ Verifica: «Griglia in XML» apre nel visualizzatore dei documenti l'XML della griglia, una per riga. ✔ Verifica: l'XML sta in una pagina a tutta larghezza, non in un foglio A4: le righe lunghe scorrono con la pagina. JS5 Il client web del legacy SBH — menu e maschere 1. Il modulo Il legacy ha un menu per modulo (B20 Amministrazione, B27 Ciclo Attivo, …). In testa al menu, a sinistra, c'e' la barra del modulo : icona, nome, codice e numero di funzioni. Il modulo si cambia in due modi, con gli stessi moduli e la stessa scelta. La lista a tendina. Un clic sulla barra (ovunque, tranne sui quadratini) o sulla freccia accanto ai quadratini apre, subito sotto la barra e larga quanto il pannello, la lista dei moduli: una riga per modulo con la sua icona, il codice, il nome e il numero di funzioni. Il modulo corrente ha il segno a sinistra, i moduli senza funzioni sono attenuati; un modulo con piu' versioni e' una riga sola, con le funzioni di tutte le versioni. Si usa da tastiera: Tasto Cosa fa clic sulla barra, oppure ↓ / ↑ con la barra a fuoco apre la lista, col fuoco sul modulo corrente ↑ ↓ modulo precedente / successivo (la lista scorre per tenerlo in vista) Home / Fine primo / ultimo modulo una lettera o piu' lettere di seguito il primo modulo il cui codice o nome comincia cosi' (premuta di nuovo, il successivo) INVIO (o Spazio), oppure clic sulla riga sceglie il modulo; la lista si chiude e il fuoco torna sulla barra Esc chiude la lista e torna sulla barra, senza chiedere di uscire dalla sessione Tab, o un clic fuori chiude la lista La griglia. I quadratini a destra della barra aprono «Scegli il modulo»: una carta per modulo col numero di funzioni, e una ricerca per codice o descrizione. Si scrive B20 e resta una carta sola. Serve quando i moduli sono tanti e si cerca per parola. ✔ Verifica: il dialog mostra una carta per ogni modulo del server (piu' di dieci). ✔ Verifica: scritto B20 nella ricerca restano solo le carte che lo contengono. ✔ Verifica: scelta la carta, in testa al menu c'e' «Amministrazione» con B20 e il numero di funzioni. ✔ Verifica: il piede del menu dice Menu B20 · vers. … · rel. … : e' la versione del file di menu scaricato dal server, quella da citare in una segnalazione. 10. Uscire dalla funzione, Preferiti e Recenti nel benvenuto Esc (o il tasto «Esc Esci» della barra) manda Esci al COBOL: ogni Esci fa risalire il programma di un passo, finche' si chiude e il server torna al menu (lo spec ne preme fino a sei). Cambiando modulo si arriva al benvenuto : utente, modulo, stampante predefinita e, sotto, i Preferiti e i Recenti , con l'icona del tipo di lavoro usato. I Recenti li scrive l'avvio di una voce; i Preferiti la stella. ✔ Verifica: dopo gli Esci il server e' di nuovo sul menu (pannello di avvio o benvenuto). ✔ Verifica: dal menu il pulsante Esci dalla sessione e' di nuovo acceso. ✔ Verifica: nel benvenuto di B10 la sezione Preferiti contiene B20 1.1.1.1 Condizioni Pagamento . ✔ Verifica: la sezione Recenti contiene la stessa voce. 11. Riaprire un preferito e chiudere la sessione Un clic su un preferito cambia modulo da solo e riapre il pannello di avvio della voce. Da li' la stella si toglie; l'Esci dalla sessione chiede conferma con una finestra del client, non del browser, perche' chiude la connessione col server. ✔ Verifica: il clic sul preferito riapre il pannello di «Condizioni Pagamento»… ✔ Verifica: …tornando da solo al modulo Amministrazione (B20). ✔ Verifica: e' scelto «Interrogazione», il tipo di lavoro con cui la voce era stata messa nei Preferiti (la lente nella riga del benvenuto), non il primo tipo della voce. ✔ Verifica: cliccata di nuovo, la stella si spegne (vuota). ✔ Verifica: Esci dalla sessione apre «Chiudere la sessione?» con «La connessione col server SIGEA si chiude. Per rientrare servira' di nuovo il login.» ✔ Verifica: «Chiudi la sessione» porta lo stato a «Chiuso». Il tipo ricordato vale solo se la voce lo ammette ancora: se nel frattempo il menu del server non lo abilita piu', il pannello torna al predefinito della voce. 12. Quello che questa voce non mostra Due cose richieste a questa guida non si vedono su Condizioni pagamento in interrogazione, e quindi qui non hanno una riga ✔: scriverla senza averla vista sarebbe una verifica finta. Messaggi del COBOL. Il client ne ha tre forme: la finestra che aspetta un tasto (conoscitivo, attenzione, errore, grave, decisionale: sbh-message.component.ts , con OK e i tasti proposti dal programma), il toast che sparisce da solo per le informazioni ( sbh-toast ), e la nota rossa in basso per l'errore del campo ( getScreen().error ). Provati su questa voce: codice 0 , codice inesistente 99998 , F3, F6, F12 e F4 sul campo Convalida (che apre la finestra «Simulazione condizione di pagamento») — il COBOL non manda nessun messaggio. L'unico messaggio a video e' quello del client in §11. Per provarli serve una voce che scrive (Inserimento), che questa guida non usa per non toccare i dati del server. Etichette-pulsante e voce «premuta». Un'etichetta con un trigger nel legacy e' un pulsante grigio ( mask__text--btn ), e un'etichetta in REVERSE e' la voce in cui ci si trova, disegnata come pulsante premuto ( mask__text--pressed , sbh-mask.component.ts:257-259 ; il caso d'origine e' IACLI50D). La maschera 20000FTB2 non ha etichette con trigger ne' in REVERSE (contate dallo prove fatte scrivendo la guida: zero). 2. L'albero del menu e la ricerca L'albero e' quello del client legacy: ogni voce ha il suo numero accanto (1.1, 1.10, 2.1…), perche' nel gestionale le funzioni si chiamano per numero al telefono. La casella «Cerca nel menu» accetta testo o numero: scritta la parola, l'albero mostra solo i rami che portano a una voce che la contiene, gia' aperti, con la parola evidenziata. Il menu si usa tutto da tastiera, come l'albero del client legacy. Arrivati sul menu — anche tornando da una funzione — la voce dell'ultima funzione avviata e' gia' scelta, con i rami aperti fino a lei e il fuoco sopra: non serve cliccare. Poi: Tasto Cosa fa ↑ ↓ voce sopra / sotto fra quelle visibili; su una funzione il pannello di avvio la mostra subito → apre il ramo; se e' gia' aperto va alla prima voce dentro ← chiude il ramo; su una voce interna torna al ramo che la contiene Home Fine prima / ultima voce visibile Invio su un ramo lo apre o lo chiude; su una funzione la avvia con le scelte del pannello (come il doppio clic) Spazio sceglie la funzione e porta il fuoco sui tipi di lavoro del pannello cifre vanno alla voce con quel numero ( 1 2 di seguito = voce 12), come nel legacy * apre tutti i rami allo stesso livello Le lettere restano del pannello di avvio ( I M R C E S scelgono il tipo di lavoro), ESC e i tasti funzione restano del programma. Con una funzione aperta il menu e' in consultazione: ci si muove, ma Invio non avvia nulla. Col mouse vale lo stesso del legacy ( SbhMenuView.cpp:2208-2231 ): un clic su una funzione la sceglie e apre il pannello di avvio; il doppio clic la avvia subito con le scelte che il pannello ha in quel momento (tipo di lavoro proposto o gia' scelto, modalita', ruolo e stampante ricordati), senza passare da Avvia . Se la voce non puo' partire (nessun dispositivo compatibile) resta il pannello, che dice perche'. Il doppio clic su un ramo lo apre o lo chiude; in consultazione non avvia nulla. ✔ Verifica: doppio clic su «1.1.1.1 Condizioni Pagamento» e la funzione parte in Inserimento, Definitiva, sull'uscita predefinita, senza fermarsi sul pannello. ✔ Verifica: tornati al menu da una funzione, senza toccare il mouse, ↓ e ↑ muovono il fuoco a partire dalla voce appena usata. ✔ Verifica: Invio su una funzione la fa partire senza passare dal pulsante Avvia . ✔ Verifica: accanto a ogni voce c'e' il suo numero. ✔ Verifica: sopra l'albero c'e' il titolo «Funzioni». ✔ Verifica: scritto «Condizioni», il titolo diventa «Risultati». ✔ Verifica: la parola e' evidenziata in ogni voce trovata (almeno tre: Tabelle, Stampa, Export). ✔ Verifica: i rami sono aperti fino a «1 Condizioni Pagamento», senza dover cliccare i padri. 3. Il pannello di avvio Nel client legacy una voce si avvia con una finestrella di opzioni; qui la scelta della voce apre al centro il pannello di avvio , che mette in fila le tre decisioni da prendere prima che il server parta: il tipo di lavoro, la modalita', l'uscita. In alto il percorso della voce nel menu, in basso il riepilogo di quello che partira'. Invio o Avvia fanno partire la funzione. ✔ Verifica: il percorso in alto e' B20 › 1.1 Parametri base › 1.1.1 Tabelle Generali › 1.1.1.1 Condizioni Pagamento . ✔ Verifica: il titolo e' «Condizioni Pagamento», col numero 1.1.1.1 davanti. ✔ Verifica: i tipi di lavoro sono quattro (Inserimento, Modifica, Interrogazione, Cancellazione), ognuno con la sua lettera ( I M R C ): sono quelli che la voce abilita, non tutti e sei. ✔ Verifica: sotto «Interrogazione» il suggerimento e' «Consulta i dati», su una riga come le altre carte. ✔ Verifica: all'apertura e' scelto il primo, Inserimento: la voce non dichiara un tipo predefinito (nessuna etichetta «predefinito») e il client fa come il legacy, prende il primo abilitato. ✔ Verifica: in Modalita' non c'e' la scelta Definitiva/Simulata: la voce ammette solo la definitiva, e una scelta con una sola risposta non si mostra… ✔ Verifica: …al suo posto c'e' scritto «Solo definitiva: la funzione aggiorna gli archivi»: la voce lo dichiara nel menu (tipo elaborazione 0 , come UpdateTipoElab in SbhMenuView.cpp:1059-1077 ), il client non lo deduce. Sulle voci che ammettono tutte e due le modalita' la scelta c'e', con la simulata proposta. (La schermata 04 e' di prima: mostra ancora i due pulsanti con «Simulata» spenta.) ✔ Verifica: in Uscita c'e' l'elenco dei dispositivi del server (DUMPR, HOLD, SYSPR, …) col protocollo a destra. ✔ Verifica: e' scelta la stampante predefinita della sessione (SYSPR), con l'etichetta «PREDEFINITA». ✔ Verifica: cliccato «Interrogazione», il riepilogo in basso dice «Interrogazione»… ✔ Verifica: …«Definitiva» e l'uscita ( Testo su SYSPR ). Il ruolo (ALL, SYSADMN, SYSADMNA) compare solo quando l'utente ne ha piu' di uno; l'ultimo scelto si ricorda. 4. La stella dei Preferiti e il libro del manuale Accanto al titolo ci sono due icone. La stella mette la voce nei Preferiti: si ricordano nel browser e compaiono nel benvenuto (§10), anche per voci di altri moduli. Il libro apre il manuale in linea della funzione in una finestrella a parte accostata a destra, come la finestra del manuale del client legacy. ✔ Verifica: cliccata la stella, e' piena e colorata ( aria-pressed vero). ✔ Verifica: l'icona e' quella della stella piena, non il contorno. ✔ Verifica: il libro punta alla pagina della funzione, non alla home del sito: https://gsdoc.genesyssoftware.eu/page-function/E2001010101000000/1?prodotto=SIGEAdb (https: il sito rimanda li' anche chi chiede http). Si legge cosi': modulo E20 (la B iniziale diventa E), fase 01 , poi due cifre per ogni livello del percorso 1.1.1.1 completate a dodici ( 010101010000 ), e il prodotto dal livello SIGEA che il server dichiara al login ( 5… = SIGEAdb). Lo spec controlla l'indirizzo senza aprire il sito. ✔ Verifica: il link si apre in una scheda nuova ( target="_blank" ). 5. La maschera a video Avvia : il server manda la maschera e il client la disegna come il legacy, a colonne e righe di caratteri. Il menu si ritira in un pulsante «Menu» nella barra in basso, per lasciare lo spazio alla maschera. Il campo in input — quello che il COBOL sta aspettando — ha il bordo colorato e il focus; gli altri sono grigi e non si possono toccare, perche' nel legacy si scrive solo dove il programma chiede. I tasti funzione validi per quel campo stanno nella barra dei comandi in alto (accesi quelli ammessi): cambiano a ogni campo, perche' li dichiara il COBOL campo per campo. La barra in basso dice che funzione sta girando : il tipo di lavoro (con la sua icona), Definitivo o Simulato (il simulato su fondo arancione, per non scambiarlo), la stampante con cui la funzione e' partita (nome e tipo, per esempio PDF01 PDF ; se il programma la cambia con la finestra «Scegli la stampante», la barra si aggiorna) e il ruolo, se c'e'. Sono le scelte fatte nel pannello di avvio: restano anche dopo una ricarica della pagina. Sul menu gli indicatori non ci sono: le scelte correnti le mostra il pannello di avvio. Se la barra e' stretta (tante schede, finestra piccola, schermo diviso) gli indicatori si raccolgono in un pulsante compatto (l'icona del tipo di lavoro, SIM se simulato): il clic apre verso l'alto un pannello con tutti i dettagli. F7 sul campo in input mostra la mini-guida come il client legacy: form, maschera, campo, i tasti ammessi e il trigger del campo, con il codice della barra di stato di SBH (per esempio -N0702 BEA31 : segno, numerico, cifre e decimali, poi le lettere dei tasti). Resta accesa e segue il campo mentre ci si sposta; F7 di nuovo la spegne. Non manda niente al server: nel legacy F7 non e' un tasto del COBOL. La stessa scheda, per qualunque item, si apre con Maiusc + clic destro. ✔ Verifica: il campo «Codice pagamento» ha il focus appena la maschera arriva. ✔ Verifica: ha il bordo del campo in input… ✔ Verifica: …e gli altri campi (per esempio «Convalida») no. ✔ Verifica: la barra in basso dice la modalita' della funzione in corso (Definitivo o Simulato). ✔ Verifica: F7 sul campo apre la mini-guida con il form 20000FTB2 … ✔ Verifica: …e i tasti del campo, fra cui Esc Esci . ✔ Verifica: F7 di nuovo la spegne. ✔ Verifica: sotto la testata la griglia delle condizioni e' piena (1 CONTANTI, 2 RIMESSA DIRETTA, …), con la matita di riga. ✔ Verifica: il menu e' ridotto al pulsante «Menu» nella barra. ✔ Verifica: il pulsante di spegnimento (Esci dalla sessione) e' spento: dentro una funzione non si esce, si troncherebbe il programma a meta'. Esc in una maschera non chiude una finestra del browser: e' il tasto Esci del COBOL, e lo manda al server. Per questo i dialog del client (guida, ricerca) si chiudono con la X . 6. F10 — la guida del campo Un campo con la guida ha un piccolo angolo colorato in basso a destra. F10 apre la guida: titolo del campo, testo di help e, se ci sono, i valori ammessi da scegliere. Il testo arriva dai file di help che il client ha gia' scaricato, quindi aprire e chiudere la guida non manda niente al server. ✔ Verifica: il campo «Codice pagamento» ha l'angolo della guida. ✔ Verifica: F10 apre il dialog con il titolo «Codice pagamento». ✔ Verifica: il testo e' l'help del campo: «I codici a partire dal 99.900 sono riservati GENESYS…». ✔ Verifica: la X chiude la guida. ✔ Verifica: chiusa la guida senza scegliere, il cursore torna sul campo «Codice pagamento», come nel legacy: si riprende a scrivere senza cliccare. ✔ Verifica: il campo resta com'era, vuoto e ancora in input. 7. F8 — la ricerca F8 sul codice chiede al COBOL la sua ricerca: il server risponde con una FIND-GRID e il client la apre come finestra di ricerca. Il server manda le righe una pagina alla volta (qui dieci); la casella in alto filtra solo le righe gia' arrivate, perche' il filtro vero l'ha gia' fatto il COBOL col valore del campo. Mentre carica Finche' il server manda le righe la finestra e' aperta ma vuota, con lo spinner: si capisce che il tasto e' stato preso e che si sta aspettando il server, non il client. Per fotografarlo lo spec trattiene per un momento le risposte del server sul WebSocket (non le altera, le ritarda). ✔ Verifica: al centro c'e' lo spinner con «Ricerca in corso…». ✔ Verifica: «Conferma selezione» e' spento finche' le righe non ci sono. La prima pagina ✔ Verifica: arrivate le righe, in basso a sinistra c'e' «10 righe caricate». ✔ Verifica: «Altre righe» e' acceso: il server ha detto che ce ne sono altre. ✔ Verifica: in fondo alla griglia non c'e' scritto «fine elenco»: il conteggio lo da' solo il piede della finestra, perche' la griglia non sa quante pagine ha ancora il server. Altre righe «Altre righe» (o Pag. giu') chiede la pagina successiva. Le righe gia' caricate restano a video, ferme e sbiadite, con lo spinner sopra: non si perde il punto in cui si era. ✔ Verifica: sopra le righe ferme c'e' lo spinner con «Carico altre righe…». ✔ Verifica: arrivata la pagina, il conteggio dice «20 righe caricate»: la seconda pagina si accoda. La scelta torna al COBOL Dopo «Altre righe» la selezione va sulla prima riga nuova (103): una freccia giu' la porta sulla 104, Invio conferma. La scelta torna al COBOL come risposta alla ricerca, e il programma continua da solo: legge la condizione e porta il cursore al campo successivo. ✔ Verifica: il codice scelto (104) e' nel campo «Codice pagamento». ✔ Verifica: il COBOL ha caricato la testata e il campo in input ora e' «Convalida». ✔ Verifica: accanto ai codici compaiono le descrizioni in blu («Dalla data della fattura», «Non attiva», «Normale»): il client le prende dalla guida del campo, senza chiederle al server. ✔ Verifica: la barra dei tasti e' cambiata in F4 F12 Conferma Esc Esci , quelli del nuovo campo. 8. Opzioni › Carattere di maschere e griglie Le maschere del legacy sono pensate per 80 colonne: su uno schermo grande possono essere piccole. Il pulsante con le tre righe in basso a sinistra apre le Opzioni ; «Carattere di maschere e griglie» ha tre pulsanti, − A + . Il carattere scala tutta la maschera (campi, righe, testi) e la griglia, e si ricorda nel browser per le sessioni successive. «A» torna alla misura normale. ✔ Verifica: all'apertura l'opzione dice «100%». ✔ Verifica: due clic su + e dice «120%». ✔ Verifica: il campo «Codice pagamento» e' piu' largo di prima. ✔ Verifica: anche le righe della griglia sono piu' alte. ✔ Verifica: «A» riporta il campo esattamente alla larghezza di partenza. 9. Il menu in consultazione durante la funzione Con una funzione aperta il menu non sparisce: il pulsante «Menu» nella barra lo riapre sopra la maschera, per guardare dove si e' o cercare la prossima voce. Non si puo' pero' avviare niente: il server sta eseguendo un programma e il legacy ne esegue uno per volta per sessione. ✔ Verifica: in testa al menu c'e' l'avviso «Funzione in corso: menu in consultazione». ✔ Verifica: le voci sono spente (grigie, non avviabili). ✔ Verifica: un secondo clic su «Menu» lo richiude.