Vai al contenuto

COGQ31 - Reparti Produttivi (orario standard)

Scopo

Manutenzione della tabella degli orari di lavoro standard per ogni reparto produttivo. La tabella e' memorizzata su CLCTABEL con tipo = 01 e contiene, per ciascun magazzino/reparto, le ore settimanali totali e la suddivisione su lunedi-domenica. Il programma puo' essere usato in modalita' selezione da altri programmi che devono scegliere un reparto.

Magazzino > Produzione > Cicli di Lavorazione > Archivi > Tabelle > Reparti Produttivi

File e tabelle

File Tipo Descrizione
FEURTAB Parametri File parametri ambiente
CLCTABEL Indicizzato I/O Tabella orari reparto, chiave cta-tipo + cta-cod. Tipo usato: 01
COGMERCI Indicizzato Input Anagrafica merci/magazzini per validare il codice (filtro magz-tipo = "M")

Copybook

File e select

  • feurtab.fd, cogq31.select, cogq31.fd, cogfiles.cpy

Working-storage

  • cogq31.wrk (generata da Screens)
  • wstato.cpy, wgrave.cpy, wgrid.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy
  • utilgdad.cpy, utilu20.cpy, utilw36.cpy

Screen

  • cogq31-01.scr (form con griglia di dettaglio)

Linkage

  • wcont.cpy, wcont1.cpy

Procedure

  • cogq31.decla, cogq31.prc
  • stato1.cpy, stato.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, utilgrid.cpy, sendw36.cpy

CALL

Programma Descrizione
GRIDADMN Gestione griglia (Prepara, Add-Record, Modify-Record, Svuota-Tutto, amministrazione)
COGW36 Aiuto magazzino (via sendw36.cpy)
Sotto-routine COGS52/S68/S93/S95/U10 Gestione campi tipici da screens (date, merci, ecc.) - richiamate dalle z-carica-*

Logica di elaborazione

  1. Inizializzazione (apri):
  2. Apertura file, lettura azienda.
  3. Se invocato con w-dc-called = "S" (modalita' selezione), abilita i tf di selezione.
  4. Prepara la griglia con GRIDADMN "Prepara".
  5. Caricamento tabella (a10, a10-loop):
  6. Initialize record cta-rec, cta-tipo = 01, cta-cod = spaces, start notmin.
  7. Loop su rdnxt-clctabel, salta quando cta-tipo <> 01 o massimo elementi (k-max-ele-tab = 900).
  8. Per ogni elemento legge cogmagaz con magz-tipo = 'M' per recuperare la descrizione.
  9. Costruzione griglia (z-costruisci-grid):
  10. "Svuota-Tutto" e poi cicla su tm-righe (1..tm-pnt) con Add-Record.
  11. Ciclo principale (a-grid, a-accept-grid):
  12. Gestisce eventi della griglia: doppio click/Invio = modifica, Shift+F4 = amministrazione, Ctrl+A = inserimento, Ctrl+E = cancellazione.
  13. F3 alterna modalita' selezione/aggiornamento quando il programma e' chiamato.
  14. Modifica riga (a-riga-dettaglio -> a-tm-cod, a-tm-ore, a-tm-day-ore1..7):
  15. In inserimento i campi sono editabili partendo dal codice; in modifica il codice e' bloccato e si entra dal primo campo modificabile.
  16. Tasto F2 torna al campo precedente, F3 conferma la riga (a-riga-dettaglio-fine).
  17. Validazione di ciascun campo in x-controlla-tm-* (max 24 ore per giorno, codice presente in COGMERCI, no duplicati con x-controlla-duplicati).
  18. Conferma riga (a-riga-dettaglio-fine):
  19. Controllo che almeno un giorno della settimana abbia ore > 0.
  20. In inserimento usa wr-clctabel, in modifica rwr-clctabel.
  21. Aggiorna la griglia con GRIDADMN "Add-Record" o "Modify-Record".
  22. Cancellazione (c-cancella):
  23. Rilegge il record con lock, del-clctabel e shift in memoria delle righe successive.

Struttura dati in memoria

tab-maschera:
  tm-pnt                          PIC 9(04)         numero righe caricate
  tm-righe occurs 900:
    tm-cod        PIC X(01)       codice magazzino/reparto
    tm-des        PIC X(40)       descrizione (da COGMAGAZ)
    tm-ore        PIC 9(02)V99    ore settimanali totali
    tm-week:
      tm-day-ore1..7 PIC 9(02)V99 ore lunedi..domenica

Mapping con CLCTABEL: cta-cod, cta-ore, cta-week (vettore 7 elementi). Il programma usa tm-ele-sav (1000 byte) per il rollback della modifica.

Note tecniche

  • Codice GUI a screens, con tasti funzione gestiti tramite copybook cogq31.prc e utilgrid.cpy.
  • Il programma e' anche utility di selezione: richiamato passando stringhe con w-dc-called = "S" mostra la griglia in sola lettura, su F3/Invio restituisce il codice scelto.
  • x-controlla-duplicati cicla su tutta la tm-righe (anche oltre tm-pnt): non e' un bug perche' gli elementi non popolati hanno tm-cod = spaces come l'altro, ma puo' generare falsi positivi se si inserisce un codice spazio (gia' impedito dal controllo precedente).
  • L'orario settimanale (tm-ore) e' un campo informativo a se' stante, non viene ricalcolato automaticamente dalla somma dei giorni.