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-confermavalida 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 testocogp32.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, aprecogp32.txtin 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 chiamax1-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 chiamax1-wr-rigae, 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" cond-calcola-pezzi, altrimenti impegnato/ordinato. Setm-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 ... THRUeGO 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-merciaggiunge 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.