Vai al contenuto

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

  1. 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).
  2. Reset filtri (a4): default tm-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.
  3. Pagina Filtri (a-pag-filtri e accept in sequenza): data giacenze, data valorizzazione, flag "data precisa?", anno consolidato per confronto rimanenze, tipo magazzino, codice magazzino. Navigazione F2/F3/mouse via z-99-exception-form.
  4. Validazione (a-controlla-filtri): x-imposta-conferma; poi ricava la divisa del conto chiamando COGU10 ope "GetDivisaConto" su tm-data-gia -> w-currency-conto.
  5. Pagina Risultati (a-pag-risultati -> a-leggi-dati): apre/crea/riordina il transito t-grid-det.
  6. Griglia (a-grid): loop principale. Shift-F4 (GRIDADMN), Shift-F5 (export Excel), Shift-F6 (import Excel), menu pop-up (funzioni 151-199); con wo-oper = 777: F6 aggiornamento qta rimanenza, F7 correzione magazzino vuoto, F5 consolidamento rapido + documento di ripristino.
  7. Chiusura (fine / z-chiudi): cancel "COGU31", cancel "COGL61", chiude i file, chiude ed elimina il transito t-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 = datasis legge 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 qta e val-pma = pma x qta, arrotondati via COGU10 ope "Arrotonda".
  • Confronto rimanenze: se tm-anno-rim > 0 e la colonna qta-rim e' visibile, legge il consolidato da COGMEMOR (mav-qta-rim) e calcola la differenza t-gor-r-q-dif-qr = qta - qta-rim, impostando il flag di differenza t-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 classico k-personal ma 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 (aggiorna mav-qta-rim/mav-val-rim e 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 (usa mmmask.cpy), derivato da SKVIS2.