COGV33 - Inserimento/Gestione Inventario¶
Sorgente: cbl/cogv33.cbl | Tipo: Programma interattivo GUI con griglia paginata | Program-ID: COGV33
Menu:
- Magazzino > Inventario > Inserimento/Gestione
Scopo¶
Gestione dell'archivio inventario (commento di testata: "Gestione archivio inventario"). Consente di ricostruire e visualizzare, per un magazzino e a una data, l'elenco delle merci con la quantita' di inventario (rilevata/modificabile) accanto alla giacenza calcolata (contabile). Da qui l'operatore puo':
- inizializzare/ricreare l'archivio inventario (COGINVEN) a partire dall'anagrafica merci e dai movimenti (
a3-agg-inv); - modificare in griglia la quantita' rilevata e il p.m.a. (prezzo medio d'acquisto);
- importare le quantita' rilevate da magazzino automatico / Modula (F7), da terminalino MEMOWAND (COGS08) o da tablet locazioni;
- generare la prima nota di adeguamento giacenza (F5) che pareggia giacenza e inventario;
- consultare movimenti e locazioni della merce (F8, S-F6, S-F7 per la gestione tablet).
Struttura del programma¶
Flusso principale¶
- Inizializzazione (
apri): apertura file, recupero divisa di conto (COGU10), lettura configurazione (x99-confi), pulsanti custom (F7 importa mag.aut, S-F6 locazioni, F3 adeguamento riga, S-F7 check giacenze), apertura archivio di transitoCOGINVTR(copia dell'inventario storicizzato) e file di log#$invent.txt. - Parametri (
a-tm-mag,a-tm-ini,a-tm-canc,a-tm-data,a-tm-ord,a-tm-solo-diff): magazzino, flag "ricreo archivio", modalita' dati precedenti, data elaborazione, ordinamento, filtro "solo differenze". - Ricreazione archivio (
a-fine-dati->a3-agg-inv): se richiesto, ricostruisce COGINVEN. - Caricamento griglia (
carica-tab/z-costruisci-tm-tab): riempie la griglia paginata scandendo l'anagrafica merci (o i codici alternativi/avanzati) e leggendo per ogni merce il record COGINVEN. - Griglia (
a-grid): modifica quantita'/p.m.a., generazione documenti, import, consultazioni.
Ricreazione inventario (a3-agg-inv)¶
Scandisce tutta l'anagrafica COGMERCI; per ogni merce con flag giacenza attivo (COGMERAP map-fl-gia), non classe, non imballo cliente:
- crea/aggiorna il record COGINVEN per magazzino+merce;
- calcola la giacenza alla data (
tm-data) partendo dal consolidato mensile COGMEMOR (tm-aa-ult/tm-mm-ult, letto inx2-src-data-consda COGTABEL tipo 57) e applicando i movimenti COGMOMAG (chiave.k03) fino atm-data, escludendo merci a consumo, causali senza riferimento giacenza (COGTABEL tipo 15,euta-cb-con-gia) e produzione di conto lavoro; - imposta
inv-gia(giacenza calcolata); in base atm-cancimposta la quantita' inventario:I=invariata,A=azzerata,G=uguale alla giacenza. Per le merci a serial number con giacenza significativa la quantita' non e' azzerata ma posta uguale alla giacenza (TASK-537, segnalata a video).
Gli errori (testate/causali mancanti) sono scritti nel file di log; a fine elaborazione, se presenti, viene proposto di aprirlo (OPENFILE).
Adeguamento giacenza (a2-agg-gia, F5 / F3 per singola riga)¶
Crea la prima nota di adeguamento (documenti di prima nota ogni ~200 movimenti) con quantita' pari alla differenza tra inventario e giacenza calcolata. La valorizzazione (prezzo/listino) e' chiesta tramite COGV33P. Richiede che az-cau-pno e az-to-pno siano configurati.
Import quantita' rilevate¶
- F7 (
a4-importa-mag-aut): chiama COGF25 (interfaccia magazzino automatico) e legge il transito#$COGF25.<oper>aggiornandoinv-qta. - MEMOWAND (
send-scr-m): chiede via COGS08 (programma COGV33C) se recepire i dati dal terminalino, legge il file sequenzialemwseq.<oper>, risolve EAN via COGMERCI/COGBARCO. - Terminalino U60 (
carica-dati-lettore, personalizzazione Sgarbi): leggeOUTIDX-U60e riempie l'inventario (fill-inventario-con-qta-da-terminalino).
Gestione tablet / locazioni (config locazioni/gestione-tablet)¶
- F3 (
k-f3-genera-riga): adeguamento per la singola riga della griglia; - S-F6: chiama WMSW02 (visualizzazione giacenze per locazione);
- S-F7: chiama WMSW04 (confronto movimenti magazzino / APP dalla data ultimo inventario, ricavata in
cerca-data-inventcercando l'ultima prima nota tipo "P" causaleaz-cau-pno); - F8: chiama COGV43 (movimenti merce).
Tabelle e file¶
| File logico | Accesso | Descrizione |
|---|---|---|
| FEURTAB | Indexed | Tabella di sistema |
| COGINVEN | Indexed, dynamic (k02) | Archivio inventario (qta inventario, giacenza) |
| COGINVTR | Input | Inventario storicizzato/di transito (copia) |
| COGMERCI | Indexed, dynamic (k02 EAN, k03) | Anagrafica merci |
| COGMERAP | Indexed | Anagrafica merci agg. (flag giacenza, supporto, raggruppamenti) |
| COGRACMC | Indexed (k02) | Codici alternativi/avanzati merce (ordinamento A/L) |
| COGMOMAG | Indexed, dynamic (k03 mag+merce+data) | Movimenti magazzino (calcolo giacenza) |
| COGMEMOR | Indexed | Consolidato mensile giacenza (saldo di partenza) |
| COGTESBO | Indexed | Testate bolle (data ultimo inventario, testate movimenti) |
| COGTABEL | Indexed | Tabelle: tipo 15 (causali, cb-con-gia), tipo 57 (data consolidato) |
| COGMAGAZ | Indexed | Anagrafica magazzini (descrizione, tipo) |
| COGBARCO | Indexed | Codici a barre (risoluzione EAN da terminalino) |
| COGLAVOR | Indexed (k07) | Lotti di lavorazione (conto lavoro, letto con prefisso w-cla-k7-) |
| COGGENER | Indexed | Legami generici (lotti "LP" conto lavoro) |
| COGINVTR / SALINVEN | copia | Salvataggio inventario con data (INVmmgg.sav) alla chiusura se tm-canc = "T" |
| TRAN-F25 | Input (temp) | Transito import magazzino automatico (#$COGF25.<oper>) |
| OUTIDX-U60 | Indexed (temp) | Transito import terminalino U60 |
| INPFIL (MEMOWAND) | Line seq (temp) | File sequenziale terminalino (mwseq.<oper>) |
| LOGERR | Line seq (temp) | Log errori elaborazione (#$invent.txt) |
| LOGLAV | Line seq (temp) | Log conto lavoro (#$COGV33.TXT) |
COPY incluse¶
Working-Storage / File¶
feurtab.fd, cogv33.select, cogv33.fd, cogfiles.cpy, coginvtr.fd, coginvtr.cpy, tran-f25.fd, tran-f25.cpy, outidx-u60.cpy, cogv33.wrk, k-personal.cpy, coglavor.cpy (con replacing cla- -> w-cla-k7-), wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utilf25.cpy, utilcogl61.cpy, utilcogl62.cpy, utilcogv33p.cpy, utilcogx40.cpy, utils25.cpy, utils52.cpy, utils68.cpy, utils91.cpy, utilu10.cpy, utilu12.cpy, utilu20.cpy, utilu60.cpy, utilw36.cpy, utilwmsw01.cpy, utilwmsw02.cpy, utilwmsw04.cpy, utilncnf.cpy, utilopenfile.cpy
Linkage / Screen¶
wcont.cpy, utils01.cpy, utils08.cpy, utilv43.cpy, wcont1.cpy, cogv33-01.scr
Procedure Division¶
cogv33.decla, grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cogv33.prc, dtab.cpy, fscrol2.cpy, sendw36.cpy, cogmerci.k02, cogmerci.k03, cogracmc.k02, cogmomag.k03, coglavor.k07, coginven.k02, cogmerlt.k03, cogmerlt.k05, outidx-u60.k01
Le chiavi secondarie sono incluse manualmente in coda alla procedure division.
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione/personalizzazione griglia inventario |
| RNEWCONF | Lettura configurazioni |
| COGU10 / COGU10W | Divisa di conto, edit/accept valori p.m.a. e p.u.a. |
| COGL61 | Calcolo p.m.a. e prezzo di acquisto merce alla data |
| COGL62 | Aggiornamento p.m.a. dopo la modifica in griglia |
| COGS08 | Richiesta recepimento dati da terminalino MEMOWAND (schermata COGV33C) |
| COGS25 | Numerazione documenti di prima nota (adeguamento) |
| COGF25 | Import inventario da magazzino automatico |
| COGV33P | Scelta valorizzazione prima nota di adeguamento |
| COGX40 | Ricerca/posizionamento su merce nella griglia |
| COGV43 | Visualizzazione movimenti merce (F8) |
| WMSW02 | Visualizzazione giacenze per locazione (S-F6, gestione tablet) |
| WMSW04 | Confronto movimenti magazzino/APP dalla data ultimo inventario (S-F7) |
| COGS01 / COGS91 | Chiusura (finalizzata in z-chiudi) |
| OPENFILE | Apertura del file di log errori |
| C$COPY | Salvataggio dell'archivio inventario di transito con data |
Send W36 (send-w36, F8 sui filtri) fornisce l'help magazzino.
Configurazioni RNEWCONF¶
Lette in x99-confi (pacchetto "C", 5 chiavi):
| Gruppo | Chiave | Destinazione | Descrizione |
|---|---|---|---|
| PROGCOGV33 | euta-c042-acc-pma | tm-cfg-acc-pma |
Abilita l'editing del p.m.a. in griglia (colonne pma/valuta visibili) |
| colori | colonna-griglia-modificabile | tm-cfg-colore-mod |
Colore delle colonne editabili (qta, pma) |
| progcogv33 | escludi-merci-cancellate | tm-cfg-escludi-canc |
Esclude dalla griglia le merci cancellate (mer-val = "C") |
| progcogv33 | movimentazione-lotti | tm-cfg-mov-lotti |
Gestione movimentazione lotti |
| locazioni | gestione-tablet | tm-cfg-gestione-tablet |
Abilita gestione tablet/locazioni: pulsanti F3 riga, S-F6 (WMSW02), S-F7 (WMSW04) e data ultimo inventario |
Note tecniche¶
- Inventario vs giacenza:
inv-qta(rilevata/modificabile) einv-gia(calcolata contabilmente alla data) sono i due valori chiave; la prima nota di adeguamento pareggia la differenza. - Ordinamento multiplo: la scansione anagrafica avviene per codice (
C), descrizione, codice alternativo (L) o codice avanzato (A); i paragrafirn-start/sn-read/rd-fill-t-keyinstradano su COGMERCI o COGRACMC secondotm-ord. La paginazione usafscrol2.cpy. - Filtro "solo differenze" (config tablet,
tm-solo-diff): mostra solo le merci con quantita' inventario diversa dalla giacenza (o entrambe negative). - Calcolo giacenza alla data: parte dal consolidato mensile (COGMEMOR) del mese
tm-aa-ult/tm-mm-ultricavato dalla data consolidato (COGTABEL tipo 57) e somma/sottrae i movimenti COGMOMAG fino atm-data, con esclusioni per causale (COGTABEL tipo 15) e conto lavoro. - Salvataggio storico: se
tm-canc = "T"alla chiusura l'archivio inventario di transito viene copiato inINVmmgg.sav(C$COPY) e COGINVTR eliminato. - k-max-ele-tab = 900: dimensione massima elementi per pagina della griglia.