COGM90 - Gestione Prezzi (Listino Vendita)¶
Sorgente: cbl/cogm90.cbl | Program-ID: COGM90 | Tipo: Programma interattivo GUI (standalone / richiamabile)
Menu: Magazzino > Archivi & Tabelle > Listino Vendita > Gestione Prezzi
Scopo¶
Gestione dei prezzi di listino di vendita per articolo. Selezionato un prodotto e un tipo di listino ("L" generale, "C" cliente, "F" fornitore), il programma carica in una griglia le righe di listino datate (una riga per data di decorrenza) con una colonna per ciascun listino configurato; l'operatore inserisce, modifica o cancella prezzi e date e conferma l'aggiornamento su COGLISNW. Supporta la gestione di prezzi per fasce di quantita' (delegata a COGF29), lo "zero logico" (prezzo azzerato ma significativo) e, per listino cliente/fornitore, l'aggiornamento contestuale della descrizione merce cliente (COGMERCL) e della testata listino (COGTESLS). Il comportamento e' pilotato da alcune chiavi di configurazione RNEWCONF (colore riga corrente, area APP, listino parametrico, listino unico). Se e' attivo il listino parametrico il programma avvisa e termina, rinviando alle funzioni dedicate. Puo' essere lanciato in modo autonomo o richiamato da altri programmi (es. COGV06 o con parametro COGM90-CALLED) posizionandosi direttamente su merce/tipo/cliente.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | Indexed | Input | Tabella nomi file |
| COGTABEL | Indexed | Input | Tabella generica (letta via RNEWCONF/readconf per il numero fasce entrate, tipo 70) |
| COGMERCI | Indexed | I-O | Anagrafica merci/articoli (aggiornamento data ultima modifica mer-data-agg) |
| COGGEANA | Indexed | Input | Anagrafica clienti/fornitori (nome intestatario listino) |
| COGMERAP | Indexed (external) | Input | Anagrafica merci aggiuntiva (raggruppamento per export GAPI/CRM) |
| COGTESLS | Indexed | I-O | Testata listini (elenco listini configurati, num. fasce; creata per cliente/fornitore se assente) |
| COGMERCL | Indexed | I-O | Descrizione merce particolare per cliente |
| COGLISNW | Indexed | I-O | Righe di listino (prezzi datati per merce/tipo/rif/fascia); accesso anche per chiave secondaria k02 |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
| feurtab.fd | SELECT tabella nomi file |
| cogfiles.cpy | Record FEURTAB |
| cogtabel.fd | SELECT/FD COGTABEL |
| cogmerci.fd | SELECT/FD COGMERCI |
| coggeana.fd | SELECT/FD COGGEANA |
| cogmerap.fd | SELECT/FD COGMERAP |
| cogtesls.fd | SELECT/FD COGTESLS |
| cogmercl.fd | SELECT/FD COGMERCL |
| coglisnw.fd | SELECT/FD COGLISNW |
| cogm90.wrk | Working storage specifico programma |
| k-personal.cpy | Costanti personalizzazioni azienda |
| wstato.cpy | Stato I/O |
| wgrave.cpy | Gestione errori gravi |
| wgrid.cpy | Gestione griglia |
| wopenf.cpy | Apertura file |
| wnscr.cpy | Dati schermo |
| cogazien.cpy | Dati azienda |
| utilgdad.cpy | Linkage gestore griglia GRIDADMN |
| utildlg.cpy | Linkage DIALOGS |
| utilcogs0c.cpy | Utility COGS0C |
| utilf29.cpy | Linkage COGF29 (fasce quantita') |
| utils52.cpy | Linkage COGS52 (date) |
| utils65.cpy | Linkage COGS65 (ricerca cliente/fornitore) |
| utils68.cpy | Linkage COGS68 (ricerca merce) |
| utilu10.cpy | Linkage COGU10 (importi/prezzi) |
| utilw96.cpy | Linkage WIN096 |
| utilncnf.cpy | Linkage RNEWCONF (lettura configurazioni) |
| utilrcnf.cpy | Linkage readconf |
| utilcrms06.cpy | Linkage CRMS06 |
| utilcrms09.cpy | Linkage CRMS09 |
| wcont.cpy | Linkage stringhe comuni |
| utilcogm90.cpy | Linkage parametri chiamata COGM90 |
| wcont1.cpy | Linkage area utente 2 |
| stato.cpy / stato1.cpy | Paragrafi controllo stato I/O |
| winmsg.cpy | Messaggi a video |
| grave.cpy | Paragrafi errori gravi |
| opengen.cpy | Paragrafi apertura file generici |
| mmmask.cpy | Paragrafi init/exit programma |
| utilgrid.cpy | Paragrafi utility griglia |
| sendw96.cpy | Paragrafo send-w96 (chiamata WIN096) |
| readconf.cpy | Paragrafi lettura configurazioni |
| coglisnw.k02 | Accesso COGLISNW per chiave secondaria k02 |
| cogm90.decla / cogm90.prc | Declaratives e paragrafi generati da Screens |
| cogm90-01.scr | Screen section |
Logica di elaborazione¶
- Inizializzazione:
apricarica lingua, apre i file, legge i dati azienda, ricava la divisa di conto tramite COGU10W ("GetDivisaConto") e legge le configurazioni viax99-confi(RNEWCONF): colore riga corrente,attiva-areaapp,gestione-listino-parametrico,listino-unico. Imposta i tasti funzione disponibili (F3 aggiorna/conferma, F8 aiuto, F9 ricerca avanzata, Shift+F4 griglia, Ctrl+A aggiungi, Ctrl+E elimina) e crea i pulsanti custom "Fascie Qta.(F7)" e "Zero Logico(F9)". - Blocco listino parametrico: se
listino-unico/gestione-listino-parametricorisulta "S" (tm-cfg-list-parametrico), viene mostrato un avviso e il programma termina (le funzioni sono gestite altrove). - Accept intestazione: sequenza di campi con relativi controlli (
x-controlla-*): - Prodotto (
a-tm-merce, ricerca merce via COGS68W); - Tipo listino (
a-tm-tip-lis, combo via COGS60W): validi "L", "C" e, solo selistino-unico = "S", "F"; per "C"/"F" l'etichetta del campo riferimento diventa "Cliente"/"Fornitore"; - Cliente/Fornitore (
a-tm-rif, ricerca via COGS65W e popup WIN096 su F8); il nome viene letto da COGGEANA conana-tipo = tm-tip-lis; - Descrizione merce cliente (
a-tm-desc, letta/salvata su COGMERCL, solo per listino cliente). Quando il programma e' richiamato (COGV06 oCOGM90-CALLED) i campi vengono precompilati e parte del percorso di accept viene saltato. - Preparazione listini (
a1-prepara): per il tipo "L" scandisce COGTESLS caricando i listini "L" visibili in gestione (tls-vis-gestionediverso da "N"), fino ak-num-listini(65) colonne; per "C"/"F" usa un'unica colonna intestata al riferimento. - Caricamento righe (
a2-carica): scandisce COGLISNW per la merce (chiave 2), scartando le righe a prezzo zero non "zero logico" e quelle cancellate logicamente (lnw-val = "C"); raggruppa i prezzi per data di decorrenza costruendo la tabellatm-tab(max 900 righe), colonna per listino e fascia (tmrq-*). Conlistino-unicoattivo per "C"/"F" gestisce anche la data fine (tmr-data-fine). - Costruzione griglia (
z-prepara-tm-grid,z-costruisci-grid,x12-set-int,x-riempi-grid-record): la griglia (e-tm-tab) e' pilotata dal gestore esterno GRIDADMN; le colonne visibili/intestazioni dipendono dai listini caricati e dalla configurazione (colonna "Data fine" solo per listino unico cliente/fornitore). I prezzi sono formattati con COGU10W; la riga corrente ("Corrente"/data 99999999) e' evidenziata col colore configurato. - Interazione su griglia (
a-accept-grid/z-99-accept-grid): - modifica in cella di data (COGS52W "EditToData" +
x-controlla-tmr-datavia AZVALIDA) o prezzo (z-u10-tmr-prezzovia COGU10W); - F7: gestione prezzi per fasce di quantita' (COGF29); con area APP attiva non e' piu' bloccata (PCASE-2614);
- F9: forzatura/rimozione "zero logico" sulla cella corrente;
- Ctrl+A / Ctrl+E: aggiunta/eliminazione riga (con controllo abilitazioni
w-abi-ins/w-abi-del); - Shift+F4: amministrazione griglia (GRIDADMN/GRIDADMN via GRIDADMN), abilitata solo agli operatori 777/888.
- Conferma e aggiornamento (
c-aggiorna): su F3 con conferma, per ciascun listino cancella le righe esistenti non cancellate logicamente (c1-cancella) e reinserisce le righe significative per data e fascia (c2-inserisci, numero fasce da COGTESLS per "L" o da COGTABEL tipo 70 per cliente/fornitore); in caso di data doppia (wrinvalido) tenta il riaggiornamento del record esistente segnalando l'anomalia. Per "C"/"F" aggiorna anche COGMERCL (descrizione, solo "C") e crea/legge la testata COGTESLS. Per azienda "BO" propone il calcolo valore distinta base (DIALOGS + COGL03); per personalizzazione Seals aggiorna la scheda CRM (CRMS09/CRMS06); infine aggiorna la data di modifica su COGMERCI per il web/app. - Uscita (
fine/z-chiudi): chiude i file, eseguecanceldei sottoprogrammi dinamici e chiude la finestra.
Chiamate a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| COGU10W | Gestione/edit importi e prezzi di vendita, e recupero divisa di conto ("GetDivisaConto") |
| GRIDADMN | Gestore esterno della griglia di dettaglio (prepara, svuota, add/modify record, amministrazione) |
| COGS52W | Editing e validazione date di cella (EditToData) |
| COGS60W | Ricerca/selezione tipo listino (combo) |
| COGS65W | Ricerca e selezione cliente/fornitore |
| COGS68W | Ricerca e selezione merce/articolo |
| WIN096 | Popup ricerca riferimento listino (tramite send-w96) |
| AZVALIDA.COB | Validazione data listino/data fine |
| COGF29 | Gestione prezzi per fasce di quantita' |
| RNEWCONF | Lettura chiavi di configurazione |
| READLNG | Lettura testi/lingua (paragrafi generati) |
| CRMS09 | Ricerca/creazione scheda CRM articolo (personalizzazione Seals) |
| CRMS06 | Scrittura informazione su scheda CRM (flag articolo pronto, Seals) |
| DIALOGS | Dialogo di fine elaborazione (azienda "BO") |
| COGL03 | Calcolo valore distinta base (azienda "BO", su F5) |
Storico modifiche¶
Il sorgente riporta modifiche storiche marcate per data (es. 041125 introduzione del "listino unico" con tipo "F" fornitore e gestione data fine listino; 080119 configurazioni area APP e listino parametrico; 300119 gestione righe cancellate logicamente lnw-val = "C"; 050422 PCASE-2614 sblocco fasce con APP; 151021 PBUG-1127 amministrazione griglia riservata agli operatori 777/888; 020123 PBUG-1497). Non sono presenti marcatori *>DOC: nel sorgente.