Vai al contenuto

COGV3A - Scheda ubicazioni articolo

Sorgente: cbl/cogv3a.cbl | Tipo: Programma interattivo GUI con griglia paginata | Program-ID: COGV3A

Menu:

  • Magazzino > Giacenze & Sottoscorta > Scheda ubicazioni articolo

Il programma e' anche richiamabile come sottoprogramma da altri moduli tramite il parametro cogv3a-called = "COGV3A-CALLED" (copybook utilcogv3a.cpy): in quel caso riceve merce e flag di dettaglio dal chiamante e apre direttamente la griglia.


Scopo

Consultazione delle ubicazioni di un articolo (o di un insieme di articoli) con le relative giacenze, ripartite per tipo di magazzino. Per una merce data il programma raccoglie in un file di transito indicizzato tutte le giacenze presenti nei magazzini principali, nei magazzini "commessa", nei magazzini secondari (esterni, cliente, fornitore), e le presenta in una griglia paginata. La granularita' dipende dalla gestione della merce:

  • articolo standard: una riga per magazzino con la quantita' di giacenza;
  • articolo a lotti: righe per lotto (dettaglio) o quantita' aggregata per magazzino (sintesi);
  • articolo a serial number (s/n): righe per singola matricola (dettaglio) o quantita' aggregata (sintesi).

La griglia confronta la "quantita'" ricostruita dai dettagli (lotti/matricole) con la "quantita' giacenza" contabile del saldo di magazzino, evidenziandone la differenza (t-gor-r-qta-dif). E' prevista una funzione di adeguamento giacenza (F5) che, per gli articoli gestiti a s/n, crea un documento di prima nota (via COGS26) per riallineare la giacenza contabile al numero effettivo di matricole.

E' una funzione principalmente di consultazione: aggiorna gli archivi solo tramite la creazione del documento di adeguamento.


Struttura del programma

Flusso principale

  1. Inizializzazione (apri): controllo abilitazione, z-99-init-program, lettura configurazione RNEWCONF (x99-confi), lettura dati azienda (rd-azi), apertura file (open-files). Se chiamato come sottoprogramma valorizza w-dc-called = "S" con merce e flag ricevuti. Imposta i tasti funzione (F3 conferma, F5 genera doc, F8 aiuto, F9 ricerca avanzata, Shift-F4 griglia, Shift-F5 export Excel), i pulsanti custom CTRL-S (salva impostazione), CTRL-F (cerca impostazione), F1 (tracking s/n), crea il menu contestuale della griglia (build-main-popup-grid-det) e prepara la griglia (z-prepara-tm-grid).
  2. Reset filtri (a4): inizializza tab-maschera, imposta i default, carica l'eventuale filtro predefinito (z-imppredf-carica-default). Se chiamato (w-dc-called = "S") salta direttamente alla richiesta di conferma.
  3. Accept dei filtri (a-tm-merce -> a-tm-ms-cod): serie di paragrafi con navigazione F2 (indietro) / F3 (conferma) / mouse (x-test-mouse) per: merce, filtro avanzato (selezione via COGS56), selezione multipla merci (via COGX40), fornitore, flag fornitore preferenziale, dettaglio lotti/s.n., tipo magazzino, codice magazzino, codice commessa, codice interlocutore anagrafico, codice magazzino secondario. La visibilita' dei campi dipende dal tipo magazzino selezionato.
  4. Richiesta conferma (a-richiesta-conferma): rivalida tutti i campi con x-imposta-conferma.
  5. Estrazione (a-leggi-dati -> z-grid-det-crea-transito): crea il file di transito della griglia e il transito ausiliario cogtrans2 (abilitazione magazzini), poi popola il transito secondo il criterio di filtro (vedi sotto).
  6. Griglia (a-grid-ini / a-grid): visualizzazione paginata (GRIDADMN / fscrol2). Gestisce F8 (dettaglio movimenti: COGV43 per magazzino principale, COGW54 per secondario), F1 (tracking s/n via COGV89), F5 (adeguamento giacenza), Shift-F4 (personalizzazione colonne), Shift-F5 (export Excel), menu pop-up contestuale (exception 151-199).
  7. Chiusura (fine / z-chiudi): chiude i file, cancella i transiti cogtrans2 e t-grid-det, distrugge il menu ed esce.

Criteri di estrazione (z-grid-det-crea-transito)

Il paragrafo instrada verso quattro modalita' alternative:

Condizione Paragrafo Descrizione
m-estrai-magazzino = "S" b3-estrazione-magazzino Estrazione partendo dal tipo di magazzino (scansione dei saldi)
tm-filtro-ava = "S" b1-filtro-ava Filtro avanzato: elabora l'elenco merci selezionato in tran-s56 (da COGS56)
tm-sel-multipla = "S" b2-sel-multipla Selezione multipla: elabora l'elenco merci in win159-t-sel (da COGX40)
tm-for <> zero c1-filtro-for Ricerca per fornitore: scansione COGMERFO, opzionale filtro "preferenziale" su COGCNDCF
altrimenti x-elabora-tm-merce Estrazione della singola merce indicata

Per ciascuna merce, x-elabora-tm-merce esegue sempre l'elaborazione "standard" (a1-articolo-std, saldi COGSLMAG per i principali, COGSLKEY per commesse e secondari) e, se la merce e' a lotti o a s/n, aggiunge il dettaglio con a2-articolo-lot (COGMERLT) o a3-articolo-sn (COGSNAGG).

Estrazione per magazzino (b3-estrazione-magazzino)

Selezionando un tipo di magazzino, per ciascun magazzino di quel tipo esegue la stessa elaborazione: giacenze dei principali (COGSLMAG, b3-estrazione-mag-tip-principale), commesse (COGSLKEY tipo "C", b3-estrazione-mag-tip-commessa), esterni (COGSLKEY tipo "M"/"E", b3-estrazione-mag-tip-esterno) e cliente/fornitore (COGSLKEY tipo "M", b3-estrazione-mag-tip-clifor); poi il dettaglio s/n per ubicazione (b3-estrai-sn-per-ubicazione) e lotti per ubicazione (b3-estrai-lotti-per-ubicazione).

Adeguamento giacenza (F5, b-adegua-giacenza)

Solo per articoli gestiti a s/n. Scandisce le righe della griglia (t-grid-det); per ogni riga con differenza tra quantita' matricole e giacenza contabile e merce a s/n, accumula in un transito tran-s26 (nome #$COGS26-<data>-<ora>) le righe da rettificare (segno E = carico, U = scarico) e chiama COGS26 per creare il documento di scarico o di carico che allinea la giacenza. La causale e il magazzino di appoggio dipendono dal tipo magazzino e dalle configurazioni RNEWCONF (CAUSALE-SCARICO-USC/CAUSALE-SCARICO-ENT, MAGAZZINO-FITTIZIO-SECONDARI).

Filtro restrizioni magazzino (gruppo aziende)

Se tm-cfg-gruppo-aziende = "S" (config ABILITA/GRUPPO-AZIENDE), ogni magazzino estratto viene filtrato in base all'abilitazione dell'operatore per l'azienda di gruppo. L'esito viene memorizzato in un transito ausiliario cogtrans2 (chiave = tipo+codice magazzino) per non ripetere il calcolo. La verifica passa da COGAZGRP (raccordo azienda di gruppo) e COGS0B (abilitazione operatore); per i magazzini secondari collegati a tecnici la catena arriva fino ad ASNVEICL/COGANAT2/ASNS21.


Tabelle e file

File principali

File logico Accesso Descrizione
FEURTAB Input Tabella di sistema (feurtab.fd)
COGTABEL Input Tabelle generiche (causali bolla tipo k-euta-tipo-causale-bolla)
COGMERCI Input Anagrafica merci (flag lotti mer-lotti, flag s/n mer-fl-sn, descrizione)
BOGMERCI Input Alias di COGMERCI (COPY con mer-/cogmerci -> ber-/bogmerci): letto per la sottoscorta minima ber-sco-min
COGGEANA Input Anagrafica generale (clienti/fornitori)
COGMAGAZ Input Anagrafica magazzini (descrizione magazzino principale)
COGMAGPE Input Magazzini secondari / conto deposito (descrizione, anagrafica collegata)
COGTESBO Input Testate bolle/documenti (per data documento, causale, provenienza)
COGMOMAG Input Movimenti di magazzino (righe documento, ricerca prezzo acquisto e magazzino di uscita)
COGSLMAG Input Saldi magazzini principali (giacenza per merce/magazzino) - chiave secondaria .k02 per magazzino
COGSLKEY Input Saldi magazzini "chiave" (commesse tipo "C", secondari tipo "M") - chiave secondaria .k02
COGTESCM Input Testate commesse (descrizione breve commessa)
COGMERFO Input Merce-fornitore (ricerca per fornitore) - chiave secondaria .k02 per fornitore
COGCNDCF Input Condizioni cliente/fornitore (fornitore preferenziale, condizione "FP")
COGMATRI Input Anagrafica matricole (ubicazione della matricola padre/provenienza)
COGMTUSC Input Matricole uscite (bolla di uscita di una matricola)
COGMERLT Input Lotti merce (giacenze a lotti, stato "A" attivo) - chiave secondaria .k03 per stato
COGSNAGG Input Movimenti/giacenze serial number aggiornati - chiavi secondarie .k02 (merce), .k04, .k05
COGANAT2 Input Anagrafica tecnici / veicoli (filtro restrizioni magazzino)
COGAZGRP Input Raccordo aziende di gruppo - chiavi secondarie .k02 (cliente), .k03 (fornitore)
ASNVEICL Input Veicoli assistenza (magazzino secondario collegato a tecnico)

File di transito (temporanei, indicizzati)

File logico Nome fisico Descrizione
t-grid-det <tmp>/... (nome univoco per operatore) Transito principale della griglia: merce, tipo magazzino/secondario, magazzino, lotto/matricola, quantita', quantita' giacenza, differenza, sottoscorta minima, dati acquisto/provenienza (COPY da cogtrans.k03 con replacing)
cogtrans2 #$cogv3a_abi_<data><ora>.<oper> Transito abilitazione magazzini (tipo+codice magazzino -> flag abilitato) per il filtro gruppo aziende
tran-s56 #$COGS56.<oper> Elenco merci selezionate dal filtro avanzato (prodotto da COGS56)
tran-s26 #$COGS26-<data>-<ora> Righe di adeguamento giacenza passate a COGS26 (external FD)
win159-t-sel <tmp>/win159-sel-<oper> Elenco merci della selezione multipla (prodotto da COGX40)
exp-grid line sequential Export Excel della griglia (Shift-F5)

COPY incluse

Working-Storage

cogv3a.wrk, cogv3a.imppredf-wrk, k-tipi-cogtabel.cpy, cogv3a.tm (in tab-maschera), wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utilcogw54.cpy, utils65.cpy, utils66.cpy, utils68.cpy, utils93.cpy, utilu10.cpy, utilu20.cpy, utilu35w.cpy, utilcogx40.cpy, utilimppredf.cpy, utilgesdate.cpy, utilcogs0b.cpy, utilasns21.cpy, utils26.cpy, utils52.cpy, utils56.cpy, utilu07.cpy, utilncnf.cpy

File-Control / File Section (generate da Screens)

cogv3a.select, cogv3a.fd, feurtab.fd, cogfiles.cpy, tran-s56.fd/tran-s56.cpy, tran-s26.fd/tran-s26.cpy (external), win159-t-sel.fd/.cpy. Il transito cogtrans2 e' dichiarato manualmente nel sorgente (SELECT + FD + record trs2-rec).

Linkage

wcont.cpy, utilv43.cpy, utilv89.cpy, wcont1.cpy, utilcogv3a.cpy (interfaccia di chiamata: caller, called, merce, flag dettaglio)

Screen / Declaratives (generate da Screens)

cogv3a-01.scr, cogv3a.decla

Procedure Division

grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, call-u35.cpy, cogv3a.prc, cogv3a.imppredf, e le chiavi secondarie aggiunte manualmente: cogslmag.k02, cogmerlt.k03, cogslkey.k02, cogsnagg.k02, cogsnagg.k04, cogsnagg.k05, cogmerfo.k02, cogtran2.k01, cogazgrp.k02, cogazgrp.k03, tran-s56.k01, tran-s26.k01, win159-t-sel.k01, e cogtrans.k03 con replacing verso t-grid-det/t-gor-r-.


CALL a sottoprogrammi

Programma Scopo
RNEWCONF Lettura configurazioni
GRIDADMN Gestione e personalizzazione della griglia paginata
COGS65W Ricerca/help anagrafica fornitore e interlocutore
COGS66W Accept/help codice magazzino e magazzino secondario
COGS68W Ricerca/help merce (entry point z-s68-*)
COGS56 Selezione avanzata merci (produce il transito tran-s56)
COGX40 Selezione multipla merci (produce il transito win159-t-sel)
COGU35 Accept/validazione codice commessa (via call-u35.cpy)
COGU07 Ricerca padre/provenienza nella catena serial number (cerca-primo-padre, cerca-padre-origine)
COGS26 Creazione documento di adeguamento giacenza (carico/scarico s/n)
COGV43 Dettaglio movimenti di magazzino (magazzino principale, F8)
COGW54 Dettaglio movimenti magazzino secondario (F8)
COGV89 Tracking serial number (F1)
COGS0B Verifica abilitazione operatore per azienda di gruppo
ASNS21 Ricerca fornitore associato al tecnico (filtro restrizioni magazzino)
W$MENU Attivazione del menu pop-up contestuale della griglia

Configurazioni RNEWCONF

Lette in x99-confi (pacchetto "C", 4 chiavi):

Gruppo Chiave Campo Descrizione
MAGAZZINO MAGAZZINO-FITTIZIO-SECONDARI tm-cfg-mag-appoggio-ms Magazzino fittizio di appoggio dei secondari: i suoi movimenti/giacenze vengono esclusi dall'estrazione
CONTO-LAV CAUSALE-SCARICO-USC tm-cfg-cau-uscita Causale di scarico usata nell'adeguamento giacenza (segno U)
CONTO-LAV CAUSALE-SCARICO-ENT tm-cfg-cau-entrata Causale di carico usata nell'adeguamento giacenza (segno E)
ABILITA GRUPPO-AZIENDE tm-cfg-gruppo-aziende Abilita il filtro sulle restrizioni magazzino per azienda di gruppo (transito cogtrans2)

Note tecniche

  • Doppia natura: la stessa COGV3A funziona sia come voce di menu standalone sia come sottoprogramma richiamato con cogv3a-called = "COGV3A-CALLED"; in modalita' chiamata riceve la merce dal chiamante, apre subito la griglia e in chiusura non torna al reset filtri.
  • File di transito principale: la griglia lavora su t-grid-det, generato da cogtrans.k03 con replacing (trs- -> t-gor-r-). Il record accumula sia la quantita' ricostruita dai dettagli (t-gor-r-qta) sia la giacenza contabile del saldo (t-gor-r-qta-gia) e la differenza (t-gor-r-qta-dif), che e' il dato chiave per individuare disallineamenti tra dettaglio lotti/matricole e saldo.
  • Lotti e serial number: la modalita' dettaglio/sintesi e' controllata da tm-lotti-sn. Per i s/n il programma naviga la catena di provenienza (COGU07 + COGMATRI) per riportare ubicazione, documento e prezzo di acquisto della matricola originale, e puo' calcolare il prezzo di acquisto sintetico (m-calcola-t-gor-r-pn-acq-su-sn) solo se abilitata la visualizzazione del valore acquisto (w-abi-val-acq = "S").
  • Verifica s/n usciti (F6, solo operatore 777): m-verifica-usciti e' un giro di debug che scandisce COGSNAGG all'indietro cercando matricole uscite da un magazzino diverso da quello di ubicazione.
  • Restrizioni magazzino (gruppo aziende): quando attivo, ogni magazzino viene valutato una sola volta e l'esito e' cachato nel transito cogtrans2; la catena include COGAZGRP, COGS0B e, per i magazzini di tecnici, ASNVEICL/COGANAT2/ASNS21.
  • Impostazioni predefinite: i filtri possono essere salvati e ricaricati (pulsanti CTRL-S / CTRL-F, copybook cogv3a.imppredf).
  • Dimensione sorgente: circa 4.010 righe (cbl/cogv3a.cbl).