COGV59 - Visualizzazione Merci per Fornitore / Cliente¶
Panoramica¶
Programma interattivo GUI che visualizza in una griglia paginata i movimenti di magazzino (bolle e documenti) filtrati per fornitore/cliente e per prodotto, con relativi valori. Lo stesso sorgente serve due funzioni speculari: "Merci x Fornitore" (analisi acquisti, ramo entrate) e "Merci x Cliente" (analisi vendite, ramo uscite/vendite). La modalita' e' scelta dal parametro di chiamata wo-parametro ("C" = vendite per cliente, altro valore = acquisti per fornitore). E' una visualizzazione di sola consultazione: raccoglie i dati in un file di transito temporaneo e li presenta in griglia, senza aggiornare gli archivi.
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Magazzino | Entrate > Visualizzazioni > Merci x Fornitore |
| Magazzino | Uscite > Visualizzazioni > Merci x Cliente |
| Vendite | Bolle Vendita > Visualizzazioni > Merci x Cliente |
La stessa COGV59 copre tutte e tre le voci; il ramo Entrate viene lanciato con wo-parametro diverso da "C" (acquisti/fornitore).
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema |
| COGTESBO | Input | Testate bolle/documenti (scansione per data via chiave secondaria .k02) |
| COGMOMAG | Input | Movimenti di magazzino (righe documento, scansione per testata via .k07) |
| COGMERCI | Input | Anagrafica merci (descrizione, unita' di misura) |
| COGGEANA | Input | Anagrafica clienti/fornitori/agenti |
| COGTABEL | Input | Tabella generica (causali tipo 15, cli/for tipo 84, sconti tipo 23) |
| COGMAGAZ | Input | Anagrafica magazzini (descrizione magazzino) |
| COGMAGPE | Input | Magazzini secondari / conto deposito (descrizione MGP) |
| COGRACCO | Input | Raccordo bolla-fattura (riferimento fattura, scansione via .k02) |
| COGRACDM | Input | Raccordo documenti di trasferimento (documento di entrata collegato) |
| COGRACMT | Input | Codici Merce Avanzato (CMA): valore della tabella CMA per merce, letto per chiave secondaria .k02 (merce + tipo tabella) |
| COGDESAG | Input | Descrizioni aggiuntive di riga (importi da sommare/sottrarre al valore) |
| COGAPPOG | Input | Appoggio anagrafico (filtro per tipologia statistica app-tip-stt) |
| COGTESAP | Input | Testate documenti - dati aggiuntivi (brand, azienda di gruppo) |
| COGBRAND | Input | Anagrafica brand/marchi |
| COGFTRAG | Input | File dichiarato dal generatore (Screens) |
| COGLISNW | Input | File dichiarato dal generatore (Screens) |
| GRPAZIEN | Input | Anagrafica aziende di gruppo |
| COGTRANS | I-O (temp) | File di transito indicizzato, nome univoco per operatore, che raccoglie le righe estratte prima di popolare la griglia |
| EXP-GRID | Output | File sequenziale per l'export Excel della griglia |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| cogv59.select / cogv59.fd | SELECT e File Description (generati da Screens) |
| cogv59.wrk / cogv59.prc / cogv59.decla | Working storage, procedure di I/O e declaratives generati |
| cogv59-01.scr | Screen section |
| cogtrans.k01 | Chiave primaria del transito |
| cogtesbo.k02 | Chiave secondaria testate (per data) |
| cogmomag.k07 | Chiave secondaria movimenti (per testata) |
| cogracco.k02 | Chiave secondaria raccordo bolla-fattura |
| cogracmt.k02 | Chiave secondaria COGRACMT (per merce + tipo tabella CMA) |
| k-personal.cpy | Personalizzazioni aziendali (es. k-personal-pedretti) |
| k-tipi-cogracdm.cpy | Costanti tipi COGRACDM (k-rdm-tip-trasferimento) |
| k-u10.cpy | Costanti per COGU10 (edita, cambio-conto, ecc.) |
| cogazien.cpy | Dati azienda |
| wgrid.cpy / utilgdad.cpy / utilpggr.cpy / fscrol2.cpy | Gestione griglia e paginazione (GRIDADMN) |
| utilncnf.cpy | Configurazioni RNEWCONF |
| utils65.cpy / utils68.cpy | Interfacce ricerca anagrafica (COGS65W) e merce (COGS68W) |
| utils52.cpy / utilu10.cpy / utilu25.cpy / utilg31.cpy | Interfacce data, edita valori, cambio divisa, conversione UM |
| utilcogmah.cpy / utilgrp002.cpy / utild89.cpy / utilf10.cpy | Interfacce help su brand, azienda gruppo, UM alternativa, tipologia |
| GetDCont.cpy | Recupero divisa di conto |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazioni |
| GRIDADMN | Gestione e personalizzazione della griglia paginata |
| COGS65W | Ricerca/help anagrafica cliente, fornitore, cliente-consegna, agente |
| COGS68W | Ricerca/help merce (gruppo/sottogruppo/codice) |
| COGU10W | Edita/arrotonda e converte importi in divisa |
| COGU25 | Rivalutazione valore riga in divisa di conto |
| COGG31 | Conversione quantita'/prezzo in unita' di misura alternativa |
| COGF10 | Help tipologia anagrafica |
| COGMAH | Help codice brand |
| GRP002 | Help azienda di gruppo |
| COGD89 | Help unita' di misura alternativa |
| COGV56 | Gestione/visualizzazione documento di uscita o buono collegato |
| COGV68 | Gestione/visualizzazione buono di prelievo (tessile) |
| COGV15 | Gestione/visualizzazione documento di carico |
Logica di elaborazione¶
1. Inizializzazione (apri)¶
Controlla l'abilitazione, inizializza il programma, legge le configurazioni RNEWCONF (x99-confi), carica lingua e dati azienda, apre i file e recupera la divisa di conto (get-divisa-conto). Legge da COGTABEL (tipo 23, codice "SC") il gruppo/sottogruppo degli sconti incondizionati usato in src-des. In base a wo-parametro imposta w-tipo-ana ("C" o "F"), il titolo della maschera e le etichette dei campi (Cliente/Fornitore, Cliente Cons./Fornitore Cons.). Prepara i controlli e la griglia (z-costruisci-controlli, z-prepara-tm-grid).
2. Reset ed apertura transito (a4)¶
Svuota la griglia e la struttura tab-maschera, imposta i filtri di default (periodo dall'01/01 al 31/12 dell'anno corrente, divisa "C", tipo visualizzazione "T"). Costruisce il nome univoco del file COGTRANS combinando directory temporanea, k-program-id, data, ora e operatore, quindi lo (ri)crea in output e lo riapre in I-O.
3. Accept dei filtri¶
Serie di paragrafi a-tm-* per l'immissione dei parametri di ricerca, con navigazione F2 (indietro) / F3 (conferma) / mouse (x-test-mouse): cliente o fornitore, agente, divisa, cliente/fornitore di consegna, tipologia anagrafica (tm-app-tip-stt), tipo visualizzazione, merce (gruppo/sottogruppo/codice), data da/a (obbligatorie), causale, brand, filtro prezzo, azienda di gruppo, unita' di misura alternativa, esclusione movimenti senza prezzo (tm-no-price). La visibilita' dei campi cliente/fornitore dipende da w-tipo-ana. La conferma passa da x-imposta-conferma che rivalida tutti i campi.
4. Estrazione dati (a-fine-dati)¶
Scandisce COGTESBO per chiave secondaria data (st-cogtesbo-notmin-chia2, rdnxt-cogtesbo) da tm-da-data a tm-a-data. Per ogni testata verifica il tipo anagrafico (tes-tipocf = w-tipo-ana) ed il filtro codice, legge la causale da COGTABEL (tipo 15) e, se richiesto (tipo visualizzazione "A" = solo fatturato), controlla euta-cb-con-fat = "SI"; quindi esegue a-ricerca.
In a-ricerca, per ogni testata:
- applica i filtri opzionali su azienda di gruppo (COGTESAP + GRPAZIEN), tipologia anagrafica (COGAPPOG), agente e brand (COGTESAP + COGBRAND);
- scandisce le righe movimento in COGMOMAG per testata (st-cogmomag-notmin con mag-testa = tes-chia3, a50-loop / rdnxt-cogmomag), interrompendo alla rottura di chiave;
- filtra per cliente/fornitore di consegna (mag-padre), per tipo documento coerente con la modalita' (vendite: I/B/D; acquisti: C), per filtro prezzo, per livello merce (fl-ric = C/S/G/T da x-controlla-tm-mer) e per esclusione prezzo zero;
- calcola il valore riga sommando le descrizioni aggiuntive Q di COGDESAG (src-des) e accumula totali quantita' e valore (con cambio in divisa di conto via COGU10);
- risolve l'unita' di misura da COGMERCI e, se richiesto, la UM alternativa via COGG31;
- scrive il record risultante nel transito COGTRANS.
Dopo la scansione, a2-cerca-doc-collegati rilegge il transito e, per ogni riga, cerca il documento collegato in COGRACDM (trasferimenti) e l'eventuale magazzino secondario collegato (a2-cerca-mgp-collegato).
5. Caricamento griglia (a-grid-ini / carica-tab / z-costruisci-grid)¶
carica-tab riparte dal transito e riempie la struttura tab-maschera (tm-righe, max k-max-ele-tab = 900 per pagina) tramite le routine di paginazione (fscrol2/GRIDADMN). Per ogni riga, in rd1-ft-go sono valorizzati riferimento bolla, merce, quantita', prezzo, valore (via COGU25, salvo la personalizzazione Pedretti), sconti, ordine, consegna, causale, anagrafica e magazzino secondario; il riferimento fattura e' cercato in COGRACCO (rd12-src-fat). x-riempi-grid-record formatta il record video (grid-record) risolvendo le descrizioni di anagrafica (COGGEANA), magazzino (COGMAGAZ) e magazzino secondario (COGMAGPE). Vengono mostrati totale quantita' e totale valore.
6. Interazione sulla griglia (a-grid)¶
Gestisce ESC (uscita), Shift-F4 (personalizzazione colonne via GRIDADMN), Shift-F5 (export Excel su EXP-GRID), Pag su/giu' (paginazione avanti/indietro sul transito) e F3 (a1-ges-doc): apre il documento della riga selezionata richiamando COGV56 (uscite/buoni), COGV68 (buoni tessile) o COGV15 (carichi) secondo il tipo bolla.
7. Chiusura (fine / z-chiudi)¶
Chiude i file, chiude ed elimina il file di transito COGTRANS, chiude la finestra ed esce.
Note tecniche¶
- Modalita' cliente/fornitore: unico sorgente per due funzioni;
wo-parametro(dawcont.cpy) discrimina vendite ("C") da acquisti (altro). La colonna agente e' resa visibile solo in modalita' fornitore (vediz-gridadmn-prepara). - File di transito: COGTRANS e' indicizzato, con nome univoco che include data, ora e operatore per evitare collisioni; e' creato all'ingresso e cancellato in uscita. E' il buffer tra la fase di estrazione e la griglia paginata.
- Chiavi secondarie: il programma usa
cogtesbo.k02(per data),cogmomag.k07(per testata) ecogracco.k02(raccordo fattura), incluse manualmente in coda alla procedure division insieme acogtrans.k01. - Configurazioni RNEWCONF (lette in
x99-confi, pacchetto "C", 3 chiavi): fatturaz/fl-filtro-agente->tm-cfg-fl-filtro-agente(abilita il filtro per agente);azienda/gestione-brand-marchio->tm-cfg-gestione-brand(abilita brand/marchio);assist/gestione-gruppo-aziende->tm-cfg-gruppo-aziende(abilita filtro azienda di gruppo).- Personalizzazione Pedretti (
az-personal = k-personal-pedretti): salta le chiamate a COGU25 usando direttamente il valore del movimento, per motivi di performance. - Colonne Codice Merce Avanzato (CMA): come in COGF64, la griglia puo' mostrare fino a 5 colonne dinamiche con i codici CMA della merce (id colonna 32-36, costanti
k-colid-cma-01..05). L'elenco delle tabelle CMA da mostrare e' caricato all'ingresso dav59-carica-tab-cma, richiamata inapri: - la sequenza di ricerca e' letta da COGTABEL tipo 37 (
k-euta-tipo-cma-seq, record coneuta-sqc-cla = " "eeuta-sqc-tip = "C"), fino ak-max-tcma-pnt = 5tabelle; - la descrizione/titolo di ciascuna colonna e' letta da COGTABEL tipo 62 (
k-euta-tipo-tabelle-cma); - per ogni riga della griglia il valore della tabella CMA e' cercato in COGRACMT (
v59-cerca-cogracmt, per merce + tipo tabella) e riportato nei campigrd-rtm-cod-01..05. La visibilita', l'ampiezza e i titoli delle colonne 11-15 sono impostati dinamicamente inz-gridadmn-prepara(le tabelle configurate visibili, le altre nascoste) congdad-forza-titoli = "S"per forzare i titoli dinamici. La struttura di configurazione e'tm-cfg-tab-cma(copybook interne al programma). Aggiunta la copybook chiavecogracmt.k02. - Dimensione sorgente: circa 3.346 righe (
cbl/cogv59.cbl).