Vai al contenuto

COGM38 - Visualizzazione Merci in Uscita

Sorgente: cbl/cogm38.cbl | Program-ID: cogm38 | Tipo: Programma interattivo GUI (standalone, con stampa ed esportazione)

Menu: Magazzino > Uscite > Visualizzazioni > Merci in Uscita


Scopo

Visualizza, stampa ed esporta le merci movimentate in uscita (bolle/documenti d'uscita) di un magazzino, aggregate per articolo. L'utente imposta i filtri di estrazione (per numero documento oppure per intervallo di date), il tipo di bolla (buoni "B", differite "D", immediate "I", trasferimenti "T", uscite "U", resi "R", contanti "P" o tutti "Z"), il tipo causale (clienti "C", fornitori "F", tutti "T" o selezione di causali "S"), l'anno, il magazzino e l'ordinamento (per codice, alfabetico o codice avanzato). L'elaborazione scandisce i movimenti di magazzino (COGMOMAG), valida testata e causale, omogeneizza gli importi nella divisa di conto e costruisce file di transito temporanei che alimentano una griglia a video con quantita', valore e progressivi, oltre alla stampa dettagliata con prezzi (P.M.V., P.U.A., P.M.A.), scostamenti e serial number. E' prevista un'esportazione dei serial number su file testo e un'esportazione della griglia in formato Excel (file COGM38.TXT).


File e tabelle

File/Tabella Tipo Modalita' Descrizione
FEURTAB Indexed Input Tabella nomi file (feurtab.fd)
COGM38 (screen files) Indexed Input File dati del programma dichiarati da Screens (cogm38.select / cogm38.fd): comprendono, tra gli altri, COGMOMAG (movimenti magazzino), COGTESOR/COGTESBO (testate documenti), COGMERCI (anagrafica merci), COGGEANA (anagrafica clienti/fornitori), COGTABEL (tabella generica, tipo 15 causali), COGDESAG (righe aggiuntive/serial), COGRACMC (codici avanzati merce), COGMATRI (matricole), COGMTUSC (matricole uscite), COGMAGAZ (anagrafica magazzini)
FLSTA Sequential Output File di stampa (flsta.fd / flsta.cpy)
COGTRANS Indexed I-O (temp) File di transito principale per articolo, 3 chiavi: k01 codice merce, k02 codice avanzato (dup), k03 descrizione (dup). Nome runtime #$M38A.{wo-oper} in ext-tmp-dir
COGTRANS2 Indexed I-O (temp) Transito serial number per merce/matricola. Nome runtime #$M38B.{wo-oper}
COGTRANS3 Indexed I-O (temp) Transito per cliente/fornitore + merce (base grid drill-down). Nome runtime #$M38C.{wo-oper}
COGEXPORT Binary sequential I-O File testo di esportazione serial number (nome da configurazione: nfe-name.nfe-ext)
COGEXPORT2 Indexed I-O (temp) Transito valori margine di contribuzione per data bolla (consumo/manodopera). Nome da config M38:FILE ESPORT. MARGINE CONTRIBUZIONE
FILEXLS Binary sequential Output File COGM38.TXT per gestione Excel (righe delimitate da ";")

I file di dominio (COGMOMAG, COGTESOR, COGTESBO, COGMERCI, COGGEANA, COGTABEL, COGDESAG, COGRACMC, COGMATRI, COGMTUSC, COGMAGAZ) sono dichiarati dai file generati da Screens (cogm38.select, cogm38.fd) e le relative routine di accesso sono in cogm38.prc. I file COGTRANS/COGTRANS2/COGTRANS3, COGEXPORT, COGEXPORT2 e FILEXLS sono dichiarati manualmente nel sorgente (SELECT/FD espliciti).

Copybook utilizzate

Copybook Descrizione
feurtab.fd SELECT tabella nomi file
flsta.fd / flsta.cpy SELECT/FD file di stampa
cogfiles.cpy Record FEURTAB
k-u10.cpy Costanti gestione importi COGU10
wgrave.cpy Gestione errori gravi
wnscr.cpy Dati schermo
wopenf.cpy Apertura file
wstato.cpy Stato I/O
cogazien.cpy Dati azienda
utilw36.cpy Linkage popup magazzini COGW36
wgrid.cpy Gestione griglia
utilgdad.cpy Linkage GRIDADMN (amministrazione griglia)
utilncnf.cpy Linkage RNEWCONF (configurazioni)
utils50.cpy Utility COGS50 (intestazioni colonne stampa)
utils52.cpy Utility date COGS52
utils54.cpy Utility stampa COGS54
utils68.cpy Utility COGS68 (formattazione codice merce)
utilu10.cpy Utility importi COGU10
utilu20.cpy Utility valute COGU20
utils65.cpy Utility COGS65
utilu16.cpy Utility ordinamento COGU16
utilcogl61.cpy Linkage COGL61 (prezzi medi: P.U.A./P.M.A./P.M.V.)
wcont.cpy / wcont1.cpy Linkage aree comuni
util021.cpy Linkage area utente
grave.cpy Paragrafi errori gravi
mmmask.cpy Paragrafi init/exit programma standalone
opengen.cpy Apertura file generica
stato.cpy / stato1.cpy Controllo stato I/O
winmsg.cpy Messaggi a video
dtab.cpy Paragrafi accesso COGTABEL
fscrol2.cpy Gestione scroll/griglia paginata
sendw36.cpy Paragrafi popup magazzini COGW36
utilpggr.cpy Gestione griglia paginata (paged grid)
getdcont.cpy Lettura divisa di conto (get-divisa-conto)
cogtrans.k01 / .k02 / .k03 Accesso COGTRANS per le tre chiavi
cogtran2.k01 Accesso COGTRANS2
cogtran3.k01 Accesso COGTRANS3
cogmomag.k07 / .k02 Accesso COGMOMAG (numero doc / data)
cogexpo2.k01 Accesso COGEXPORT2
cogracmc.k02 Accesso COGRACMC (codice avanzato)
cogmatri.k03 Accesso COGMATRI (matricole)
cogmtusc.k03 Accesso COGMTUSC (matricole uscite)

Le copybook generate da Screens (cogm38.wrk, cogm38.select, cogm38.fd, cogm38.decla, cogm38.prc, cogm38-01.scr) risiedono in cbl/screens/ e sono gestite esclusivamente dal tool Screens.

Logica di elaborazione

  1. Inizializzazione (apri): impostazione program-id per errori/help, z-99-init-program, lettura data di sistema, caricamento lingua, dati azienda (rd-azi), apertura file, lettura della divisa di conto (get-divisa-conto). Vengono abilitati i tasti funzione previsti (F1 configura, S-F4 griglia, F7 esporta, F3 conferma, F8 aiuto/calendario, F9 stampa, S-F5 esporta Excel).
  2. Lettura configurazioni: x99-src-cfg legge da RNEWCONF (percorso PROGCOGM38) i parametri di dettaglio, nome/estensione file esportazione serial number, flag stampa S/N e fino a 10 causali di selezione, oltre al delimitatore Excel; x99-src-confi legge (percorso MERCI.CNF) i gruppi merce per il margine di contribuzione (consumo/manodopera) e il nome del file COGEXPORT2.
  3. Preparazione maschera e griglia: rd-msk-pop, z-costruisci-controlli, z-prepara-tm-grid e z-gridadmn-prepara (via GRIDADMN) definiscono controlli e colonne della griglia.
  4. Impostazione filtri di default (a4): anno corrente, intervallo date 1/1 - 31/12, estrazione differita ("D"), tipo bolla tutti ("Z"), tipo causale tutti ("T"), non da fatturare, magazzino "1" (descrizione letta da COGMAGAZ). La costruzione dei nomi dei file di transito temporanei usa ext-tmp-dir, ext-os-slash e wo-oper.
  5. Input filtri (paragrafi a-tm-*): accept sequenziali dei campi di estrazione con validazione (date validate da AZVALIDA.COB; controllo coerenza intervallo numeri/date/anno; magazzino verificato su COGMAGAZ). Alcuni campi sono resi visibili/invisibili a seconda del tipo di estrazione (z-cambia-tm-da-num, ecc.). La navigazione tramite mouse e' gestita in x-test-mouse.
  6. Conferma ed elaborazione (a-richiesta-conferma -> b-elabora): apertura/ricreazione dei file di transito; scansione di COGMOMAG a partire dal numero documento (chiave k07) o dalla data (chiave k02). Per ogni movimento: filtro su magazzino/anno/tipo bolla/numero/data; lettura testata (rd-cogtesbo); esclusione dei documenti gia' fatturati se richiesto; controllo causale su COGTABEL tipo 15 (rd-tab) per determinare cliente/fornitore e tipo prezzo (V/A); filtro per tipo causale richiesto e per causale da fatturare. La routine salta-fossi accelera la scansione saltando tra i tipi bolla quando l'estrazione e' numerica con tipo "Z".
  7. Omogeneizzazione divisa e calcolo prezzi: se il movimento e' in divisa diversa da quella di conto, l'importo viene convertito via COGU10 (operazione "Cambio"). Il valore viene ricalcolato (qta x prezzo) e arrotondato. Per le uscite ("U") con ricarico viene calcolato il prezzo di acquisto e il ricarico per quantita' (trs-ricxqta); i resi non danno contributo.
  8. Righe aggiuntive e serial number (inner-loop): scansione di COGDESAG per accumulare quantita'/importi delle righe aggiuntive di tipo "Q". Per l'estrazione serial number vengono cercate le matricole (src-serial-number-usc su COGMTUSC, src-serial-number-res su COGMATRI) e scritte su COGTRANS2.
  9. Scrittura transiti: wr-trs (COGTRANS, con accumulo per merce), wr-exp2 (COGEXPORT2, valori margine di contribuzione consumo/manodopera per data), wr-trs3 (COGTRANS3, per cliente/fornitore + merce). La descrizione e i prezzi medi (P.U.A./P.M.A./P.M.V. da COGL61) sono risolti in des-merci.
  10. Totali (totali): scansione di COGTRANS per calcolare progressivi di quantita' e valore (riscritti sul record) e i totali complessivi.
  11. Caricamento griglia (carica-tab, z-costruisci-grid): riempimento della griglia paginata con codice merce, quantita', importo (editato via COGU10) e progressivi. Se nessuna merce e' trovata viene mostrato un avviso e si torna ai filtri.
  12. Interazione sulla griglia (a-grid): S-F4 personalizza la griglia (GRIDADMN), S-F5 esporta la pagina (z-esporta-paged-grid), PgUp/PgDn scorrono le pagine, F7 esporta i serial number su file testo (export-det), F9 avvia la stampa (sta-det).
  13. Stampa (sta-det): impostazione stampante via COGS54, intestazioni (testa-p, con intestazioni colonne da COGS50), corpo con quantita'/valore/ricarico (corpo) ed eventuale corpo esteso con P.M.V./P.U.A./P.M.A./scostamenti/margine di contribuzione (corpo2, se dettaglio = "E"), elenco serial number (stampa-serial-numbers / stampa-serial-numbers-extended), coda con totali (coda). In parallelo viene alimentato il file FILEXLS (x3-creo-filexls).
  14. Esportazione serial number (export-det): scrittura su COGEXPORT del dettaglio (codice merce, descrizione, S/N, numero e data documento, dealer code e nome), leggendo COGTRANS2 e risolvendo l'anagrafica cliente da COGGEANA.
  15. Chiusura (fine / z-chiudi): chiusura file, chiusura ed eliminazione dei file di transito (z-chiudi-transiti, delete file cogtrans), z-99-exit-program.

Chiamate a sottoprogrammi

Programma Scopo
GRIDADMN Amministrazione/personalizzazione della griglia (prepara, svuota, add-record, custom)
AZVALIDA.COB Validazione delle date di partenza/arrivo
RNEWCONF Lettura configurazioni (parametri programma PROGCOGM38 e gruppi merce MERCI.CNF)
COGL61 Estrazione prezzi medi merce (prezzo acquisto, P.M.A., P.M.V.)
COGU10 / COGU10W Gestione, edit, conversione divisa e arrotondamento importi
COGU16W Gestione ordinamento della griglia/campo ordine
COGS50 Composizione intestazioni colonne di stampa
COGS54 Gestione parametri e output di stampa
COGS68W Formattazione del codice merce per la stampa

Nota: i controlli dei campi maschera (COGS52 per le date, COGS60 per combo/check, COGS65) e il popup magazzini (COGW36) sono richiamati tramite le routine generate in cogm38.prc e le copybook sendw36.cpy/utils*.cpy.

Storico modifiche

Il sorgente non contiene marcatori *>DOC:. E' presente una nota di correzione inline (des-merci):

  • PBUG-1821 (06/11/2023): rimosso il vincolo az-mer-ava = 'S' che impediva lo spaginamento quando l'ordinamento richiesto era per codice merce avanzato e il flag aziendale az-mer-ava non era "S".