COGMAA - Definizione giri di consegna¶
Panoramica¶
Programma interattivo GUI per la definizione dei "giri" di consegna (raggruppamenti di percorso/tentata vendita). Presenta una griglia editabile in cui ogni riga rappresenta un giro identificato da un codice, con la relativa descrizione e l'operatore assegnato. E' l'anagrafica di testata dei giri: qui si crea/modifica/elimina l'elenco dei codici giro, che vengono poi dettagliati per periodo (in un altro programma, COGMAB, richiamato con F6) e infine esplosi per giorno da COGMAC.
Lo stesso sorgente opera in due modalita': Aggiornamento (uso normale da menu, modalita' "A") e Selezione (quando e' richiamato da un altro programma tramite il parametro cogmaa-called, modalita' "S"): in selezione la griglia e' di sola lettura e serve a restituire al chiamante il codice giro scelto in cogmaa-out-cod.
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Magazzino | Uscite > Giri > Definizione giri |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema (numeratori/aziende) |
| COGGRTES | I-O | Testate giri: codice giro, descrizione, operatore assegnato (tabella gestita da questo programma) |
| COGGRPER | I-O | Dettaglio giri per periodo: cancellata a cascata quando si elimina un giro |
| PRNTOPER | Input | Anagrafica operatori (descrizione operatore assegnato al giro) |
La FD del programma e' generata da Screens (cogmaa.select / cogmaa.fd): i verbi di I/O usati nel sorgente (st-coggrtes-notmin, rdnxt-coggrtes, rd-coggrtes, wr-coggrtes, rwr-coggrtes, del-coggrtes, st-coggrper-notmin, rdnxt-coggrper, del-coggrper, rd-prntoper) confermano l'uso di COGGRTES, COGGRPER e PRNTOPER.
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| coggrtes.cpy | Layout record testata giri (grt-cod, grt-des, grt-operatore) |
| coggrper.cpy | Layout record dettaglio giri per periodo (grp-giro, grp-mese, ...) |
| cogfiles.cpy | FD di FEURTAB |
| cogmaa-01.scr | Screen section (generata da Screens) |
| cogmaa.decla / cogmaa.prc | Declaratives e procedure di I/O generate |
| wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy | Working storage standard (grave, no-scr, open-files, stato verbi) |
| cogazien.cpy | Dati azienda |
| wgrid.cpy / utilgdad.cpy | Gestione griglia editabile e personalizzazione colonne (GRIDADMN) |
| utilwp04.cpy | Interfaccia help operatore (WP04 / send-wp04) |
| utilu20.cpy | Interfaccia utility U20 |
| utilcogmaB.cpy | Interfaccia di chiamata a COGMAB (util-cogmab) |
| wcont.cpy / wcont1.cpy | Aree di linkage comuni (stringhe) |
| utilcogmaa.cpy | Parametri di ingresso/uscita del programma (util-cogmaa) |
| grave.cpy / mmmask.cpy / opengen.cpy / stato.cpy / stato1.cpy / winmsg.cpy | Copybook finali di procedura (gestione errori, maschera, apertura file, stato verbi, messaggi) |
| sendwp04.cpy | Routine di invio al modulo operatore WP04 |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Preparazione e personalizzazione (Shift-F4) della griglia editabile |
| COGMAB | Gestione dei dettagli del giro selezionato, richiamata con il pulsante custom "Gestione (F6)" |
WP04 (via send-wp04) |
Help/ricerca operatore da assegnare al giro (colonna operatore, tasto F8) |
Parametri di chiamata (util-cogmaa)¶
| Campo | Uso | Descrizione |
|---|---|---|
| cogmaa-caller | Input | Programma chiamante (se valorizzato attiva la modalita' Selezione) |
| cogmaa-called | Input | Deve valere COGMAA per attivare la modalita' Selezione |
| cogmaa-in-cod | Input | Codice giro in ingresso |
| cogmaa-out-cod | Output | Codice giro selezionato restituito al chiamante |
Logica di elaborazione¶
1. Inizializzazione (apri)¶
Imposta il nome programma per help e gestione errori, esegue il controllo abilitazione (ctr-abil), inizializza il programma (z-99-init-program), apre i file e legge i dati azienda. Se cogmaa-called = COGMAA con cogmaa-caller valorizzato, imposta il flag w-dc-called = "S" (modalita' Selezione) e prepara i tasti funzione di conseguenza: in Selezione sono attivi F3-selezione e F3-modifica, altrimenti F3-aggiorna. Carica la bitmap custom labodonto e crea il pulsante custom "Gestione (F6)" (eccezione k-f6). Prepara la griglia (z-prepara-tm-grid) e i controlli (z-costruisci-controlli) e imposta a-modalita a "S" (chiamato) o "A" (standalone).
2. Caricamento griglia (a4 / a10-loop)¶
Svuota la struttura tab-maschera e la griglia, poi scandisce COGGRTES dall'inizio (st-coggrtes-notmin + rdnxt-coggrtes) caricando fino a k-max-ele-tab = 500 righe. Per ogni testata giro valorizza codice (grt-cod, salvato anche in tm-cod-prec come valore originale per il confronto in fase di salvataggio), descrizione (grt-des) e operatore (grt-operatore); la descrizione operatore e' risolta leggendo PRNTOPER (rd-prntoper -> ptop-des). Al termine costruisce la struttura griglia (z-costruisci-tm-tab) e attiva i tasti funzione.
3. Interazione sulla griglia (a-grid / a-accept-grid)¶
Loop principale di accept sulla griglia editabile:
- ESC: gestione uscita (test-wesc);
- Shift-F4: personalizzazione colonne via GRIDADMN;
- F3: in modalita' chiamato commuta tra Selezione e Aggiornamento (chiedendo se salvare le modifiche pendenti); in modalita' standalone esegue a1-aggiorna e, se ok, esce;
- Invio: in modalita' Selezione restituisce tm-cod (i) in cogmaa-out-cod ed esce;
- Ctrl-A: aggiunge una riga vuota alla griglia (solo in Aggiornamento);
- Ctrl-E: elimina la riga corrente, previo controllo abilitazione (w-abi-del) e conferma;
- F6: se non chiamato e in Aggiornamento, legge la testata giro corrente e richiama COGMAB (util-cogmab, con cogmab-in-cod = tm-cod (i)) per la gestione dei dettagli.
Il tasto F8 sulla cella operatore attiva l'help operatore (send-wp04) che valorizza tm-ope-cod (i).
4. Salvataggio (a1-aggiorna / b-aggiorna)¶
a1-aggiorna esegue tutti i controlli riga (x-controlla-tm-tab-tutto); se validi, b-aggiorna scorre la griglia (tm-grid-dati-pnt righe) e, confrontando tm-cod con tm-cod-prec, decide l'operazione:
- tm-cod = spazi e tm-cod-prec valorizzato -> cancella (b3-cancella);
- tm-cod = tm-cod-prec e riga modificata -> modifica (b2-modifica);
- tm-cod-prec = spazi -> inserisci (b1-inserisci);
- tm-cod diverso da tm-cod-prec -> cancella e reinserisci.
b1-inserisci controlla l'eventuale codice gia' esistente (chiede conferma di sovrascrittura), poi scrive/riscrive la testata. b3-cancella elimina la testata (del-coggrtes) e a cascata tutti i dettagli COGGRPER con lo stesso giro (st-coggrper-notmin + loop del-coggrper fino a rottura di grp-giro).
5. Controlli di campo¶
x-controlla-tm-cod: codice obbligatorio se descrizione o operatore valorizzati; verifica codice non duplicato in griglia;x-controlla-tm-des: descrizione obbligatoria se codice o operatore valorizzati;x-controlla-tm-ope-cod: se operatore valorizzato, deve esistere in PRNTOPER, altrimenti errore.
6. Chiusura (fine / z-chiudi)¶
Chiude i file, chiude la finestra ed esce dal programma.
Note tecniche¶
- Doppia modalita':
w-dc-called/a-modalitadistinguono l'uso standalone (Aggiornamento) da quello come selettore di codice giro per un chiamante (Selezione); in Selezione la modifica righe e' inibita (z-event-tm-tab-epfallisce l'entry) e il pulsante F6 non e' disponibile. - Cancellazione a cascata: l'eliminazione di una testata giro (COGGRTES) rimuove anche tutti i relativi dettagli di periodo (COGGRPER), per evitare dettagli orfani.
- Chiave secondaria: nessuna chiave secondaria dichiarata manualmente; il programma usa solo le chiavi primarie di COGGRTES e COGGRPER.
- Commenti nei paragrafi: alcuni commenti residui parlano di "provincia"/"regione" (retaggio di copia da un programma anagrafico), ma la logica effettiva riguarda i giri di consegna.
- Bitmap/pulsante custom: la bitmap
labodontofornisce l'icona del pulsante "Gestione (F6)" (bitmap number 48).