COGL63 - Consultazione giacenze/valore magazzino alla data¶
Sorgente: cbl/cogl63.cbl | Tipo: Programma interattivo GUI con tab-control e griglia paginata | Program-ID: COGL63
Menu:
- Magazzino > Controllo Magazzino > Consultazione Valore Magazzino
Origine dichiarata nel commento di testata: ricavato da SKVIS2.
Scopo¶
Consultazione, per un magazzino e a una data scelta, della giacenza di ogni articolo e del suo valore. La valorizzazione avviene con due criteri paralleli: PUA (prezzo ultimo acquisto) e PMA (prezzo medio acquisto), entrambi ottenuti chiamando COGL61 alla data di valorizzazione; il valore e' prezzo x giacenza, espresso nella divisa del conto.
Il programma e' organizzato in un tab-control a due pagine (Filtri / Risultati) con una griglia read-only. Nel flusso di consultazione standard non aggiorna nulla: costruisce un file di transito indicizzato temporaneo (t-grid-det) che alimenta la griglia, esportabile in Excel. Solo con operatore privilegiato wo-oper = 777 espone funzioni di scrittura: aggiornamento della quantita' di rimanenza da Excel, consolidamento rapido delle rimanenze, correzione del consolidato e generazione di un documento di ripristino tramite prima nota (COGS26).
Il titolo di menu "Consultazione Valore Magazzino" e' piu' ristretto della funzione reale, che include anche la giacenza alla data e le funzioni operative gated su operatore 777.
Struttura del programma¶
Flusso principale¶
- Inizializzazione (
apri):z-99-init-program,ctr-abil, caricamento configurazione debug (gesdebug-loadconf),rd-azi,open-files. Abilita i tasti funzione (F7 filtra, F8 aiuto, Shift-F4 griglia, Shift-F5 esporta Excel) e i pulsanti custom CTRL-S (salva impostazione), CTRL-F (cerca impostazione), Shift-F6 (importa da Excel). Prepara la griglia (z-prepara-tm-grid,x-trova-col-num-grid-det). - Reset filtri (
a4): defaulttm-mag-tipo = "I",tm-data-gia = datasis,tm-data-val = datasis,tm-mag-cod = az-main-mag; ordinamento predefinito per colonna merce; carica l'eventuale filtro di default salvato. - Pagina Filtri (
a-pag-filtrie accept in sequenza): data giacenze, data valorizzazione, flag "data precisa?", anno consolidato per confronto rimanenze, tipo magazzino, codice magazzino. Navigazione F2/F3/mouse viaz-99-exception-form. - Validazione (
a-controlla-filtri):x-imposta-conferma; poi ricava la divisa del conto chiamando COGU10 ope "GetDivisaConto" sutm-data-gia->w-currency-conto. - Pagina Risultati (
a-pag-risultati->a-leggi-dati): apre/crea/riordina il transitot-grid-det. - Griglia (
a-grid): loop principale. Shift-F4 (GRIDADMN), Shift-F5 (export Excel), Shift-F6 (import Excel), menu pop-up (funzioni 151-199); conwo-oper = 777: F6 aggiornamento qta rimanenza, F7 correzione magazzino vuoto, F5 consolidamento rapido + documento di ripristino. - Chiusura (
fine/z-chiudi):cancel "COGU31",cancel "COGL61", chiude i file, chiude ed elimina il transitot-grid-det, distrugge il menu,exit program.
Calcolo giacenza e valore (z-grid-det-crea-transito / x-inserimento-t-rec)¶
z-grid-det-crea-transito scorre COGMERCI (solo mer-classe = "M"), salta gli articoli con map-fl-gia = "N" (da COGMERAP) e per ciascuno chiama x-inserimento-t-rec, che e' il cuore del calcolo:
- Giacenza: se
tm-data-gia = datasislegge la giacenza registrata su COGSLMAG (msal-qta); altrimenti la ricalcola alla data chiamando COGU31 (u31-merce/u31-data/u31-mag->u31-qta). - Prezzi: chiama COGL61 con
cogl61-data = tm-data-val,cogl61-in-prezacq = "S",cogl61-in-pma = "S",cogl61-in-sede = az-main-mag,cogl61-data-precisa = tm-fl-data-val-precisa-> ottiene PUA (out-prezacq) e PMA (out-pma) con le relative date, convertiti in divisa conto via COGU10W. - Valori:
val-pua = pua x qtaeval-pma = pma x qta, arrotondati via COGU10 ope "Arrotonda". - Confronto rimanenze: se
tm-anno-rim > 0e la colonna qta-rim e' visibile, legge il consolidato da COGMEMOR (mav-qta-rim) e calcola la differenzat-gor-r-q-dif-qr = qta - qta-rim, impostando il flag di differenzat-gor-r-fl-diff.
File di transito temporanei¶
| File logico | Nome fisico | Descrizione |
|---|---|---|
| t-grid-det | nome dinamico (w-nome-t-grid-det, libreria di transito Screens) |
Transito indicizzato dati griglia (record t-gor-r-rec); creato all'apertura risultati, cancellato in z-chiudi |
| tran-s26 | <tmp>/#<program-id><oper><data><ora> |
Transito movimenti per la prima nota di adeguamento (solo funzioni 777); creato output -> i-o, cancellato con delete file a fine consolidamento |
| cogpa9-t-dati | prodotto da COGPA9 | Dati importati da Excel (aperto input, chiuso in i-importa-excel) |
| exp-grid | line sequential | Export della griglia in Excel |
Tabelle e file¶
| File logico | Accesso | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella Eurotab standard |
| COGPA9-T-DATI | Input | Temporaneo con i dati importati da Excel (prodotto da COGPA9) |
| COGTABEL | Input | Tabelle di configurazione / decodifica |
| COGMERCI | Input | Anagrafica articoli; scansione principale, filtro classe = "M" |
| COGGEANA | Input | Anagrafica generale (descrizioni articolo) |
| COGMAGAZ | Input | Anagrafica magazzini; validazione tm-mag-cod (chiave tipo "M") |
| COGSLMAG | Input | Saldi / giacenze correnti per magazzino (msal-qta), usati se la data = oggi |
| COGMERAP | Input | Parametri articolo per magazzino; flag gestione giacenza map-fl-gia |
| COGMEMOR | I-O | Consolidato rimanenze annuali per merce/anno/mag; lettura per confronto e scrittura nelle funzioni 777 |
| COGRACMC | Input | Raccordo codici merce; risolve il codice avanzato -> codice interno nell'import Excel |
| t-grid-det | I-O (temp) | Transito indicizzato dati griglia; chiavi alternate .chia2 e .chia3 (per merce), da cogtrans.k03 con replacing |
| exp-grid | Output | Export griglia in Excel |
| tran-s26 | I-O (temp) | Transito movimenti per la p.n. di adeguamento (solo funzioni 777) |
COPY incluse¶
Working-Storage generate da Screens¶
cogl63.wrk, cogl63.imppredf-wrk, cogl63.tm (campi modificabili della maschera), cogl63-01.scr (screen section)
Utility Working-Storage¶
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy (GRIDADMN), utils26.cpy (COGS26), utils52.cpy (date), utils65.cpy, utils68.cpy, utils93.cpy/utils95.cpy, utilu10.cpy (valori monetari), utilu20.cpy, utilimppredf.cpy (impostazioni predefinite / filtri salvati), utilu31.cpy (COGU31 giacenza alla data), utilcogl61.cpy (COGL61 prezzi), utilcogpa9.cpy (COGPA9 import Excel), utilncnf.cpy (incluso ma non usato), utilgesdate.cpy (GESDATE), utilgesdebug.cpy, k-modelli-ie-i-cogl63.cpy (costanti mappatura campi import)
Linkage¶
wcont.cpy, wcont1.cpy
Procedure Division¶
cogtrans.k03 (verbi transito, con replacing verso t-grid-det/t-gor-r-), grave.cpy, mmmask.cpy (programma standalone), opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, gesdebug, tran-s26.k01, cogl63.prc, cogl63.imppredf. Le .prc/.decla/.tm/.select/.fd/.scr/.wrk sono generate da Screens.
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| COGU10 | Divisa del conto ("GetDivisaConto") e arrotondamento ("Arrotonda") |
| COGU10W | Edit / arrotondamento monetario con divisa (PUA, PMA, valori) |
| COGU31 | Calcolo giacenza alla data (cancellato in chiusura) |
| COGL61 | Calcolo prezzo acquisto (PUA) e prezzo medio acquisto (PMA) alla data - motore della valorizzazione (cancellato in chiusura) |
| COGS26 | Generazione prima nota di magazzino dal transito tran-s26 (adeguamento / ripristino, solo 777) |
| COGPA9 | Import dati da Excel (produce cogpa9-t-dati) |
| GESDATE | Utility calcolo / info date (giorno settimana, somma giorni) per posizionare le p.n. su giorni lavorativi |
| GRIDADMN | Amministrazione / preparazione colonne della griglia |
| W$MENU | Menu pop-up contestuale sulla griglia (right-click) |
Nessun gestore tabella tipo Y*: le tabelle sono gestite tramite i verbi rd-/st-/rdnxt-/wr-/rwr- generati da Screens.
Configurazioni RNEWCONF¶
Non presenti. Il sorgente non contiene alcun paragrafo x99-confi/x99-src-cfg, nessuna CALL "RNEWCONF" e nessuna assegnazione a ncnf-gruppo/ncnf-chiave. Il copybook utilncnf.cpy e' incluso in working-storage ma non usato. L'unica "configurazione" letta e' quella del debug (gesdebug-loadconf), che popola w-tm-cfg-debug-doc (filtro su un singolo articolo in debug). Il magazzino e la causale di default provengono da cogazien (az-main-mag, az-cau-pno).
Note tecniche¶
- Operatore privilegiato: le funzioni di scrittura (consolidamento, adeguamento, correzione, aggiornamento qta rimanenza) sono tutte gated su
wo-oper = 777; non e' il classicok-personalma un controllo sull'operatore corrente, a protezione di operazioni delicate. - Valorizzazione doppia: PUA (prezzo ultimo acquisto) e PMA (prezzo medio acquisto), da COGL61, con opzione "data precisa" (
tm-fl-data-val-precisa) che modula la ricerca prezzo; valori espressi nella divisa del conto (w-currency-conto). - Consolidamento rimanenze (
c-consolidamento-rapido): scrive su COGMEMOR (aggiornamav-qta-rim/mav-val-rime i campi del mese 12) e genera due p.n. simmetriche via COGS26 - compensazione a dicembre dell'anno e ripristino a gennaio dell'anno successivo - evitando sabato/domenica con GESDATE. - Import Excel: modello "I-COGL63" via COGPA9; i campi importati sono risolti verso il codice merce interno tramite COGRACMC.
- Giacenza alla data: se la data richiesta e' oggi si usa il saldo corrente COGSLMAG, altrimenti si ricalcola a ritroso con COGU31.
- Marcatori
*>DOC:: nessuno presente nel sorgente. - Dimensione sorgente: circa 2.066 righe (
cbl/cogl63.cbl). Programma standalone GUI (usammmask.cpy), derivato da SKVIS2.