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.
Menu¶
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.cpyutilgdad.cpy,utilu20.cpy,utilw36.cpy
Screen¶
cogq31-01.scr(form con griglia di dettaglio)
Linkage¶
wcont.cpy,wcont1.cpy
Procedure¶
cogq31.decla,cogq31.prcstato1.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¶
- Inizializzazione (
apri): - Apertura file, lettura azienda.
- Se invocato con
w-dc-called = "S"(modalita' selezione), abilita i tf di selezione. - Prepara la griglia con
GRIDADMN "Prepara". - Caricamento tabella (
a10,a10-loop): - Initialize record
cta-rec,cta-tipo = 01,cta-cod = spaces, startnotmin. - Loop su
rdnxt-clctabel, salta quandocta-tipo <> 01o massimo elementi (k-max-ele-tab = 900). - Per ogni elemento legge
cogmagazconmagz-tipo = 'M'per recuperare la descrizione. - Costruzione griglia (
z-costruisci-grid): - "Svuota-Tutto" e poi cicla su
tm-righe (1..tm-pnt)conAdd-Record. - Ciclo principale (
a-grid,a-accept-grid): - Gestisce eventi della griglia: doppio click/Invio = modifica, Shift+F4 = amministrazione, Ctrl+A = inserimento, Ctrl+E = cancellazione.
- F3 alterna modalita' selezione/aggiornamento quando il programma e' chiamato.
- Modifica riga (
a-riga-dettaglio->a-tm-cod,a-tm-ore,a-tm-day-ore1..7): - In inserimento i campi sono editabili partendo dal codice; in modifica il codice e' bloccato e si entra dal primo campo modificabile.
- Tasto F2 torna al campo precedente, F3 conferma la riga (
a-riga-dettaglio-fine). - Validazione di ciascun campo in
x-controlla-tm-*(max 24 ore per giorno, codice presente in COGMERCI, no duplicati conx-controlla-duplicati). - Conferma riga (
a-riga-dettaglio-fine): - Controllo che almeno un giorno della settimana abbia ore > 0.
- In inserimento usa
wr-clctabel, in modificarwr-clctabel. - Aggiorna la griglia con
GRIDADMN "Add-Record"o"Modify-Record". - Cancellazione (
c-cancella): - Rilegge il record con lock,
del-clctabele 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.prceutilgrid.cpy. - Il programma e' anche utility di selezione: richiamato passando
stringheconw-dc-called = "S"mostra la griglia in sola lettura, su F3/Invio restituisce il codice scelto. x-controlla-duplicaticicla su tutta latm-righe(anche oltretm-pnt): non e' un bug perche' gli elementi non popolati hannotm-cod = spacescome 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.