Vai al contenuto

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-modalita distinguono 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-ep fallisce 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 labodonto fornisce l'icona del pulsante "Gestione (F6)" (bitmap number 48).