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¶
- 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). - Lettura configurazioni:
x99-src-cfglegge da RNEWCONF (percorsoPROGCOGM38) 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-confilegge (percorsoMERCI.CNF) i gruppi merce per il margine di contribuzione (consumo/manodopera) e il nome del file COGEXPORT2. - Preparazione maschera e griglia:
rd-msk-pop,z-costruisci-controlli,z-prepara-tm-gridez-gridadmn-prepara(via GRIDADMN) definiscono controlli e colonne della griglia. - 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 usaext-tmp-dir,ext-os-slashewo-oper. - 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 inx-test-mouse. - 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 routinesalta-fossiaccelera la scansione saltando tra i tipi bolla quando l'estrazione e' numerica con tipo "Z". - 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. - 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-uscsu COGMTUSC,src-serial-number-ressu COGMATRI) e scritte su COGTRANS2. - 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 indes-merci. - Totali (
totali): scansione di COGTRANS per calcolare progressivi di quantita' e valore (riscritti sul record) e i totali complessivi. - 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. - 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). - 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). - 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. - 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 aziendaleaz-mer-avanon era "S".