Vai al contenuto

COGP32 - Stampa Giacenze Magazzini

Sorgente: cbl/cogp32.cbl | Program-ID: COGP32 | Tipo: Programma di stampa/estrazione (giacenze a una data)

Menu: Magazzino > Giacenze & Sottoscorta > Stampe > Giacenze Magazzini


Scopo

Stampa la giacenza degli articoli su uno o tutti i magazzini a una data di riferimento, con relativi valore (P.U.A. o P.M.A.), impegnato/ordinato (o forme, se l'azienda gestisce la doppia unita' di misura) e, opzionalmente, un importo "futuro" da riordino. Supporta filtri su intervallo articoli, raggruppamenti merceologici, tipo giacenza (tutte / con movimenti), segno giacenza (positiva/zero/negativa) e merci di terzi/cliente.

L'output puo' essere il tabulato di stampa (via COGS54) e/o un file testo tab-delimitato per l'esportazione in Excel (via GRIDTOXS). La giacenza e' letta dai saldi (COGSLMAG) se la data richiesta e' quella odierna, altrimenti e' ricostruita a una data passata tramite COGU31.

Il programma ha due layout principali selezionati da tm-ord: ordinamento per Magazzino ("M", scansione magazzini -> merci) o per Merce (altri valori, scansione merci -> magazzini). All'interno la scansione merci puo' essere per codice interno, per descrizione o per codice avanzato (COGRACMC).

File e tabelle

File/Tabella Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri generali azienda (cogfiles.cpy)
COGMAGAZ ISAM Input Anagrafica magazzini (magz-tipo "M", magz-cod, magz-nome)
COGMERCI ISAM (k02) Input Anagrafica merci (mer-chia, mer-descr, mer-um, mer-fl-cliente, mer-data-pua) - k02 per descrizione
COGMERAP ISAM Input Merce appoggio (map-chia, map-fl-gia, map-ragr-1/2/3) - raggruppamenti e flag "in giacenza"
COGSLMAG ISAM Input Saldi giacenza per magazzino (msal-gru/sot/cod, msal-mag1, msal-qta, msal-qta-impegnata, msal-qta-ordinata, msal-qta-prenotata)
COGMOMAG ISAM (k03) Input Movimenti magazzino (mag-mag3, mag-merce3, mag-da3, mag-colli, mag-entrusc, mag-tipob1) - per calcolo forme
COGTESBO ISAM Input Testate bolle (tes-mag, tes-anno, tes-tipob, tes-bolla3, tes-causale) - per la causale del movimento
COGTABEL ISAM Input Tabella generica tipo 15 = causali bolla (euta-cb-con-gia, euta-cb-cli-for)
COGRACMC ISAM (k02) Input Raccordo codice avanzato merce (rcm-cod-ava, rcm-merce, rcm-tip) - scansione per codice avanzato ed export
COGMERCL ISAM Input Merci per cliente (mcl-merce, mcl-cli) - filtro merci di terzi
COGCNDCF ISAM (k02) Input Condizioni cliente/fornitore (cnd-cnd "FP" = fornitore preferenziale, cnd-key, cnd-cod) - export fornitore
COGMERFO ISAM Input Merce-fornitore (mfr-merce, mfr-for) - fallback fornitore per export
COGGEANA ISAM Input Anagrafica fornitori (ana-tipo "F", ana-cod, ana-nome) - export nome fornitore
TRAN-V21 ISAM (k01) Input temp Transito riordino prodotto da COGV21 (trs-v21-gru/sot/cod, trs-v21-data, trs-v21-imp-fut) - importo futuro; aperto solo se configurazione TIPOSTAMPA = "R"
FILETXT Sequenziale (line) Output File testo tab-delimitato per Excel (cogp32.txt in dir temp)
FLSTA ISAM Output File di appoggio stampa (flsta.fd)

Copybook utilizzate

Copybook Descrizione
cogp32.select, cogp32.fd, cogp32.wrk, cogp32-01.scr, cogp32.prc, cogp32.decla Screen Designer
tran-v21.fd, tran-v21.cpy, tran-v21.k01 Transito riordino COGV21 (dichiarato manualmente)
flsta.fd, flsta.cpy File stampa
feurtab.fd, cogfiles.cpy FEURTAB
k-u10.cpy Costanti COGU10
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy Working storage standard + azienda
utile35.cpy, utilw06.cpy, utilw36.cpy, utils52.cpy, utils54.cpy, utils65.cpy, utilu10.cpy, utils50.cpy, utils68.cpy, utilw29.cpy, utilu31.cpy, utilcogl61.cpy Linkage subroutine chiamate/utility
utilncnf.cpy Linkage RNEWCONF
util021.cpy Linkage aggiuntivo (linkage section)
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, sendw29.cpy, getdcont.cpy, printer.cpy Copybook di fine procedure
cogmomag.k03, cogracmc.k02, cogcndcf.k02, cogmerci.k02 Chiavi secondarie (aggiunte a fine procedure)

Logica

Struttura a maschera (accept per campo) seguita dall'elaborazione batch.

  • apri: init, x-carica-lingua, open-files; legge configurazione (x99-src-cfg); se TIPOSTAMPA = "R" prova ad aprire il transito TRAN-V21 (importo futuro da riordino); se assente ripiega su "S" (stampa standard); abilita i tasti (F1 configura, F3 conferma, F8 aiuto/calendario, F9 ricerca avanzata) e il pulsante custom "Dettaglio stampa (F9)"; prepara le ricerche articolo (COGS68) e le etichette dei raggruppamenti (cerca-label-ragr).
  • a4: imposta i default (ordine merce "A" = codice avanzato, ordinamento "M" = magazzino, tipo "T" = tutte, valore "S" = P.U.A., segni giacenza tutti "S", data = oggi, divisa = divisa di conto).
  • a-tm-ord ... a-tm-cli: accept dei parametri: ordinamento stampa (M/merce), magazzino (COGS52/aiuto), selezione gruppo, estrai Excel, tre raggruppamenti, ordine merce (codice/descrizione/avanzato), intervallo merci da/a (COGS68), tipo (tutte/con movimenti), valore (N/S=P.U.A./M=P.M.A.), data di riferimento (COGS52), tre flag segno giacenza, flag merci di terzi e cliente (COGS65W).
  • a-richiesta-conferma: x-imposta-conferma valida tutti i campi; imposta i caratteri di stampa (s54-chr-stampa, allargato se c'e' il valore e/o l'importo futuro); chiama COGS54 per la selezione stampante; apre il file testo cogp32.txt; imposta le intestazioni del valore (P.U.A./P.M.A.) e avvia l'elaborazione:
  • tm-ord = "M" -> a-ela-mag (magazzini -> merci);
  • altrimenti -> b-ela-mer (merci -> magazzini). Al termine chiude la stampa (chiudi-stampa = COGS54 after-print) e, se richiesto Excel, apre cogp32.txt in GRIDTOXS.
  • a-ela-mag / a1-merci: scandisce i magazzini (uno o tutti) e per ciascuno le merci nell'intervallo secondo tm-ord-mer (COGMERCI per codice/descrizione, COGRACMC per codice avanzato). Applica il filtro merci di terzi (COGMERCL / mer-fl-cliente) e, tramite COGMERAP (map-fl-gia), decide se la merce va inclusa; per ogni merce chiama x1-riga. A fine magazzino stampa il totale valore/forme.
  • b-ela-mer / b1-magazzino / ciclo-merce: scandisce le merci e per ciascuna i magazzini; per ogni combinazione valida chiama x1-riga.
  • x1-riga: applica il filtro raggruppamenti (COGMERAP map-ragr-1/2/3); legge la giacenza:
  • data = oggi -> da COGSLMAG (msal-qta + impegnata/ordinata/prenotata);
  • data <> oggi -> ricostruita da COGU31 (u31-qta). Filtra per segno giacenza (positiva/zero/negativa) e per tipo ("T" tutte oppure solo con movimenti); se supera i controlli chiama x1-wr-riga e, se richiesto Excel, x3-creo-filetxt.
  • x1-wr-riga: compone la riga di stampa: descrizione merce (COGS50), unita' di misura, giacenza; se doppia unita' (az-ges-qta-2 = "S") calcola le "forme" con d-calcola-pezzi, altrimenti impegnato/ordinato. Se tm-val <> "N" calcola il prezzo di acquisto/P.M.A. tramite COGL61 (con eventuale cambio valuta via COGU10W) e il valore magazzino = prezzo * giacenza (arrotondato). Se TIPOSTAMPA = "R" legge da TRAN-V21 l'importo futuro. Gestisce il salto pagina (x2-testa) e la personalizzazione "GG" (colonna disponibile = giacenza - impegnato). Scrive la riga in FLSTA.
  • d-calcola-pezzi: scorre i movimenti COGMOMAG della merce/magazzino fino alla data; per ogni movimento legge la causale bolla (COGTESBO + COGTABEL tipo 15) e, se e' considerata in giacenza (euta-cb-con-gia = "SI"), somma/sottrae i colli in base a cliente/fornitore ed entrata/uscita, ottenendo il totale forme.
  • x2-testa: stampa le intestazioni di pagina (azienda, magazzino, data, colonne).
  • x3-creo-filetxt / cerco-fornitore / x3-creo-intestazione-excel: scrive il record tab-delimitato per Excel (codice, codice avanzato, descrizione, um, quantita', P.U.A., valore) e, dal 2025-01, il fornitore preferenziale (COGCNDCF "FP", fallback COGMERFO) con nome da COGGEANA; la prima riga contiene la riga di formattazione e l'intestazione colonne.

Configurazioni (RNEWCONF)

Pacchetto "C" (2 chiavi in x99-src-cfg):

Gruppo Chiave Variabile Uso
COGP32 TIPOSTAMPA tm-cfg-tipo-sta "R" = stampa con importo futuro da riordino (transito TRAN-V21 di COGV21); "S" = stampa standard
QUALITA COGP32 tm-cfg-desc-qual Descrizione qualita' stampata in testata (ts2-desc-qual)

CALL

Programma Scopo
COGS54 Selezione stampante e gestione output tabulato
COGS50 Composizione descrizione merce per la riga
COGS52W Calendario / validazione data (via entry point maschera)
COGS65W Ricerca/selezione cliente (merci di terzi)
COGS68 Ricerca/selezione articolo (intervalli)
COGU10W Formattazione importi, valute e cambio
COGU31 Ricostruzione giacenza a una data passata
COGL61 Lettura prezzo di acquisto / P.M.A. della merce
GRIDTOXS Apertura del file testo in Excel
WIN036.COB Finestra ausiliaria (send-w36)
RNEWCONF Lettura configurazioni

Note

  • Uso di PERFORM ... THRU e GO TO (stile legacy; conversione GUI da versione carattere a cura di Daniele).
  • La giacenza a data odierna e' letta dai saldi COGSLMAG; per date passate e' ricostruita da COGU31 e in tal caso impegnato/ordinato/prenotato sono azzerati (COGU31 restituisce solo la quantita').
  • L'ordinamento per codice avanzato ("A") scandisce COGRACMC; al termine, se non c'e' filtro sul codice avanzato, x9-stampa-altre-merci aggiunge le merci prive di codice avanzato per allineare l'output a quello per codice/descrizione.
  • Il calcolo delle "forme" (doppia unita' di misura, az-ges-qta-2 = "S") e' basato sui movimenti COGMOMAG e sulla configurazione causali (COGTABEL tipo 15, euta-cb-con-gia, euta-cb-cli-for), non sui saldi: e' quindi indipendente dalla giacenza in quantita'.
  • L'importo futuro (colonna Imp.Futuro) richiede la configurazione TIPOSTAMPA = "R" e la presenza del transito TRAN-V21 prodotto da COGV21; se il transito manca il programma degrada automaticamente a stampa standard.
  • La personalizzazione azienda "GG" (az-personal = "GG") sovrascrive la colonna ordinato con la disponibile (giacenza - impegnato) e stampa una nota "(*)=Personalizzazione".
  • L'export Excel usa TAB (x'09') come separatore e la prima riga di formattazione (S/N) indica a GRIDTOXS il tipo di ciascuna colonna.