Vai al contenuto

COGM16 — Ristampa trasferimento di magazzino

Campo Valore
Sorgente cbl/cogm16.cbl
Program-ID cogm16
Tipo Programma interattivo GUI (maschera singola, chiama la stampa)
Posizione menu Magazzino > Trasferimenti > Inserimento/gestione > Ristampa

Scopo

COGM16 permette di ristampare un documento di trasferimento di magazzino gia' registrato. L'operatore identifica il trasferimento tramite la chiave documento (magazzino, anno, tipo, numero); il programma verifica l'esistenza della testata e dei relativi movimenti, e delega la stampa vera e propria al modulo esterno COGP28M1.

Il tipo bolla e' fissato a 'T' (trasferimento): tm-tipo viene inizializzato a 'T' in a4 e non e' modificabile dall'operatore.

Una logica specifica gestisce il caso del trasferimento di entrata: se il documento indicato risulta un movimento di entrata (mag-entrusc = 'E'), COGM16 risale al documento di uscita corrispondente prima di stampare (vedi Ricerca del documento di uscita).


Struttura e flusso

Il programma e' costruito sul modello standard delle maschere Screen Designer: una main section con paragrafo di apertura apri, la sequenza di accept dei campi, e un blocco di conferma/elaborazione.

  1. Apertura (apri): z-99-init-program, controllo abilitazione (ctr-abil), lettura azienda (rd-azi), apertura file (open-files), attivazione tasti funzione (F3 conferma, F8 aiuto), lettura data di sistema (century-date), caricamento lingua (x-carica-lingua), impostazione titolo "Ristampa Trasferimenti" e costruzione controlli (z-costruisci-controlli).
  2. Reset maschera (a4): inizializza tab-maschera, forza tm-tipo = 'T', ricarica i controlli e attiva la conferma F3.
  3. Accept dei campi:
  4. a-tm-mag — Codice magazzino. Supporta l'aiuto F8 che richiama la ricerca magazzini (send-w36WIN036); il valore selezionato viene riportato in tm-mag. Validato da x-controlla-tm-mag.
  5. a-tm-anno — Anno documento. Gestito con supporto calendario/data tramite util-s52 (z-s52-tm-anno). Validato da x-controlla-tm-anno (obbligatorio, diverso da zero).
  6. a-tm-numero — Numero documento. Validato da x-controlla-tm-numero (obbligatorio, diverso da zero).
  7. Richiesta conferma (a-richiesta-conferma): x-imposta-conferma riesegue tutti i controlli di campo; se il complesso e' corretto la status bar segnala "Dati corretti", altrimenti "N" e si ritorna sul primo campo.
  8. Lettura testata (rd-cogtesbo su chiave tes-chia3): se il record non esiste viene emesso "Trasferimento non esistente!!" e si torna sul magazzino.
  9. Verifica movimenti (a60-read): scansione di COGMOMAG a partire dalla chiave documento; se non ci sono movimenti compatibili viene emesso "Trasferimento senza movimenti!!" (a60-err). Se il primo movimento e' di entrata (mag-entrusc = 'E') si esegue x1-src-usc.
  10. Conferma e stampa (a90): richiesta finale (acc-conf); alla conferma viene valorizzata la struttura util-p28 (magazzino/anno/tipo/numero) e chiamato COGP28M1 per la ristampa; al ritorno il modulo viene cancel-lato.
  11. Chiusura (fine / z-chiudi): z-close-files, chiusura della window, z-99-exit-program, exit program.

Ricerca del documento di uscita

Il paragrafo x1-src-usc gestisce il caso in cui il documento indicato sia un trasferimento di entrata. La chiave del documento di uscita corrispondente e' memorizzata negli ultimi 12 caratteri della descrizione della testata (tes-descr1, ridefinita da w-note: filler 38 + wn-key 12). Questa chiave viene spostata in tes-chia3 e riletta con rd-cogtesbo. Se il documento di uscita non e' piu' presente (stato not = '00') viene emesso "Trasferimento di entrata cancellato!!" con la chiave, e si ritorna al reset maschera (a4).

Nota sul flusso

La scansione COGMOMAG in a60-read usa read cogmomag next con perform cstato thru ex-cstato e alcuni go to di rottura chiave: e' codice storico (conversione GUI 2008) e non segue il pattern rdnxt/PERFORM UNTIL previsto dalle convenzioni attuali del progetto.


File e tabelle principali

Archivio Record Chiave usata Accesso Scopo
COGTESBO tes-rec tes-chia3 = tes-mag + tes-anno + tes-tipob + tes-bolla3 Lettura Testata del documento di trasferimento
COGMOMAG record mag-... mag-chiap = mag-mag1 + mag-anno + mag-tipob1 + mag-bolla1 Start/Read next Movimenti di magazzino del documento; il flag mag-entrusc distingue entrata ('E') / uscita
COGMAGAZ magz-rec magz-tipo = "M" + magz-cod Lettura Anagrafica magazzini (validazione del codice magazzino)
FEURTAB fil-chia1 (via cogfiles.cpy) fil-chia1 Lettura Tabella nomi file Eurosystem

I nomi dei campi chiave usati nel sorgente sono verificati nelle rispettive copybook: cogtesbo.cpy (tes-chia3, tes-mag, tes-anno, tes-tipob, tes-bolla3, tes-descr1), cogmomag.cpy (mag-chiap, mag-mag1, mag-anno, mag-tipob1, mag-bolla1, mag-entrusc), cogmagaz.cpy (magz-rec, magz-tipo, magz-cod).

Le strutture di lavoro tab-maschera (tm-mag, tm-anno, tm-tipo, tm-numero) e util-p28 (p28-mag, p28-ann, p28-tip, p28-num) sono dichiarate localmente nel sorgente.


Copybook principali

Screen Designer (generate)

Copybook Contenuto
cogm16.select SELECT dei file (include cogmagaz.fd, cogtesbo.fd, cogmomag.fd)
cogm16.fd FD dei file (COGMAGAZ, COGTESBO, COGMOMAG)
cogm16.wrk Working storage della maschera
cogm16.decla Declaratives
cogm16-01.scr Maschera principale
cogm16.prc Paragrafi generati (read routine rd-cogtesbo/rd-cogmagaz, controlli, gestione lingua e calendario)

Strutture dati e utility

Copybook Contenuto
feurtab.fd SELECT di FEURTAB
cogfiles.cpy FD/record di FEURTAB
cogazien.cpy Dati azienda
utilw36.cpy Struttura util-w36 per la ricerca magazzini (WIN036)
utils52.cpy Struttura util-s52 per calendario/data (COGS52W)
sendw36.cpy Paragrafo send-w36 (chiamata a WIN036)
wstato.cpy / wgrave.cpy / wopenf.cpy / wnscr.cpy Working storage comuni (stato file, gestione errori gravi, apertura, schermo)
wcont.cpy / wcont1.cpy Area di linkage stringhe (parametri comuni di menu)
grave.cpy / mmmask.cpy / opengen.cpy / stato.cpy / stato1.cpy / winmsg.cpy Copybook standard di fine procedure division

Sottoprogrammi chiamati (CALL)

Programma Chiamato da Scopo
COGP28M1 a90 (main) Stampa/ristampa del documento di trasferimento (riceve stringhe e util-p28); cancel-lato al ritorno
WIN036 send-w36 (sendw36.cpy) Finestra di ricerca/aiuto magazzini (aiuto F8 sul campo magazzino)
COGS52W cogm16.prc Gestione data/calendario del campo anno (util-s52)
READLNG cogm16.prc Caricamento etichette multilingua della maschera

Nota: COGP28M1 e' un modulo esterno compilato (variante della famiglia di stampa COGP28); il sorgente non e' presente in cbl/ come cogp28m1.cbl. La chiamata e la struttura parametri util-p28 sono verificate nel sorgente di COGM16.


Note

  • Il tipo bolla e' vincolato a 'T' (trasferimento) e non e' esposto all'operatore.
  • Il magazzino inserito e' validato contro COGMAGAZ (magz-tipo = "M"); se inesistente viene bloccato con "Magazzino inesistente".
  • Anno e numero sono campi obbligatori (controllo = zero).
  • La gestione mouse (x-test-mouse) instrada il focus sui campi in base a event-control-id (k-id-tm-mag, k-id-tm-anno, k-id-tm-numero).
  • Programma di conversione GUI storica (2008): contiene ancora costrutti go to e perform ... thru non piu' conformi alle convenzioni attuali del progetto; da trattare con cautela in caso di manutenzione.