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¶
- 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 valorizzaw-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). - Reset filtri (
a4): inizializzatab-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. - 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. - Richiesta conferma (
a-richiesta-conferma): rivalida tutti i campi conx-imposta-conferma. - Estrazione (
a-leggi-dati->z-grid-det-crea-transito): crea il file di transito della griglia e il transito ausiliariocogtrans2(abilitazione magazzini), poi popola il transito secondo il criterio di filtro (vedi sotto). - 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). - Chiusura (
fine/z-chiudi): chiude i file, cancella i transiticogtrans2et-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 dacogtrans.k03con 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-uscitie' 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).