COGM92 - Aggiornamento Generale Prezzi¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | COGM92 |
| Titolo | Aggiornamento generali listini |
| Posizione menu | Magazzino > Controllo Prezzi > Aggiornamento Generale |
Scopo e logica generale¶
COGM92 e' un programma interattivo per l'aggiornamento massivo dei prezzi di listino. Applica un ricarico (o sconto) percentuale a uno o piu' listini, partendo dal prezzo corrente del listino stesso. Supporta filtri per intervallo merci, classe articolo, reparto, articoli da escludere e modalita' di arrotondamento.
L'elaborazione utilizza il modulo COGU16W per la scansione delle merci e il sistema di listini integrato (COGY32/COGY33 per selezione globale, COGF11 per reparto).
Flusso principale¶
- Inizializzazione (
apri): lettura azienda, apertura file, lettura configurazione RNEWCONF (x99-confi), data di sistema, lettura divisa conto tramite COGU10W, inizializzazione COGU16W, configurazione tasti funzione (F1 config, F3 conferma, F5 sel. multipla, F8, F9), preparazione controlli merce (COGS68) - Accept parametri (
a4/a-tm-tip-aggiorna/a-tm-tip-lis/a-tm-rif/a-tm-cli/a-tm-reparto/a-tm-ord-mer/a-tm-da-merce/a-tm-a-merce/a-tm-art-da-escludere/a-tm-escl-list-gen/a-tm-tip-classe/a-tm-base/a-tm-data/a-tm-ricarico/a-tm-arrot-euro/a-tm-type-arr): - Tipo aggiornamento (
tm-tip-aggiorna): L=listino, T=globale (COGY32) - Tipo listino (
tm-tip-lis): L=listino, C=cliente, ecc. - Riferimento listino (
tm-rif): con ricerca COGW96 (F8) - Cliente (
tm-cli): con ricerca COGS65 (condizionale) - Reparto (
tm-reparto): con ricerca COGF11 (F8); se vuoto, COGY33 (selezione reparti) - Ordinamento merci (
tm-ord-mer): criterio scansione - Da merce / A merce (
tm-da-merce/tm-a-merce): con ricerca COGS68 - Articoli da escludere (
tm-art-da-escludere): S/N, se S chiama COGU05 - Esclusione listino generale (
tm-escl-list-gen): condizionale su configurazione - Classe articoli (
tm-tip-classe): A/B/C/T(tutti) - Base di calcolo (
tm-base): U=ultimo prezzo, ecc. - Data (
tm-data): data validita' nuovo prezzo, con calendario COGS52W - Ricarico % (
tm-ricarico): percentuale con segno (positiva = aumento, negativa = riduzione) - Arrotondamento (
tm-arrot-euro): regola di arrotondamento - Tipo arrotondamento (
tm-type-arr): E=eccesso, D=difetto - Conferma (
a-richiesta-conferma): validazione globale, dialog di conferma - Elaborazione:
c-cerca-listini(thruex-c): ricerca dei listini da aggiornare in base ai parametrib-elabora(thruex-b): inizializzazione COGU16W, scansione merci- Loop elaborazione (
b10-loop): - Lettura merce tramite COGU16W ("Leggi")
- Filtro per classe (
tm-tip-classe) - Filtro per reparto (
tm-reparto): lettura COGMERAP, esclusione se non corrisponde; se reparto vuoto, esclusione dei reparti selezionati in COGY33 - Filtro articoli da escludere: confronto con lista COGU05
- Filtro listino generale: se configurato, esclude merci con COGGENMF
- Per ogni merce: lettura listino corrente, applicazione ricarico, arrotondamento, scrittura nuovo prezzo
- Chiusura (
fine): chiusura file, cancel COGU16W/COGU10W,z-99-exit-program
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| COGTABEL | euta-rec | Input | Tabelle generiche |
| COGMERCI | mer-rec | Input | Anagrafica merci |
| COGMERAP | map-rec | Input | Associazione merce-reparto |
| COGGEANA | ana-rec | Input | Anagrafica generale (clienti) |
| FEURTAB | feurtab | Input | Tabella generica Eurosystem |
+ file da cogm92.select |
vari | I-O | File listini prezzi |
Tabella listini¶
tab-listini: array dinamico fino a 2000 elementi (n-tl), con:
- tl-tip (1): tipo listino
- tl-rif (5): riferimento listino
- tl-div (2): divisa listino
Tabella fasce¶
tab-fascie: 5 elementi, flag tf-fascia-ok per abilitazione fascia quantita'.
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
cogm92-01.scr |
Maschera principale |
cogm92.select |
SELECT dei file |
cogm92.fd |
FD dei file |
cogm92.wrk |
Working storage maschera |
cogm92.decla |
Declaratives |
Strutture dati e utility¶
| Copybook | Contenuto |
|---|---|
COGFILES.CPY |
FD feurtab |
wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy |
Standard working storage |
cogazien.cpy |
Dati azienda |
utilncnf.cpy |
Parametri RNEWCONF |
utilcogs0c.cpy |
Utility COGS0C |
utilcogl61.cpy |
Interfaccia COGL61 |
utils52.cpy, utils65.cpy, utils68.cpy |
Utility varie |
utilu10.cpy |
Gestione importi e divise |
utilu20.cpy |
Utility U20 (accept numerico) |
utily32.cpy, utily33.cpy |
Interfaccia COGY32/COGY33 (selezione listini/reparti) |
utilu05.cpy |
Interfaccia COGU05 (articoli da escludere) |
utilw96.cpy |
Interfaccia COGW96 (ricerca listino) |
utilu16.cpy |
Interfaccia COGU16W (scansione merci) |
utilf11.cpy |
Interfaccia COGF11 (ricerca reparto) |
k-u10.cpy, k-personal.cpy |
Costanti |
wcont.cpy, wcont1.cpy |
Linkage section |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| COGS52W | Calendario per selezione date |
| COGS65 | Ricerca e selezione anagrafica (cliente) |
| COGS68 | Ricerca merce |
| COGU10W | Gestione importi, divise, formattazione |
| COGU16W | Scansione merci (Init-Start, Set-Estremi, Leggi) |
| COGU20 | Accept numerico (percentuale ricarico, arrotondamento) |
| COGY32 | Selezione globale listini (se tipo aggiornamento = "T") |
| COGY33 | Selezione reparti (se reparto vuoto) |
| COGU05 | Selezione articoli da escludere |
| COGW96 | Ricerca listino (F8 su tm-rif) |
| COGF11 | Ricerca reparto (F8 su tm-reparto) |
| RNEWCONF | Lettura/modifica configurazione |
Configurazione (RNEWCONF)¶
| Parametro | Campo | Utilizzo |
|---|---|---|
| Escludi listino generale | tm-cfg-escludi-listgen |
Se "S": esclude le merci con record in COGGENMF dal ricalcolo |
Logica di business¶
Calcolo del nuovo prezzo¶
Per ogni merce e listino:
1. Legge il prezzo corrente dal listino
2. Applica il ricarico: nuovo = corrente * (1 + tm-ricarico / 100)
3. Applica l'arrotondamento in base a tm-arrot-euro e tm-type-arr (E=eccesso, D=difetto)
4. Scrive il nuovo prezzo con data di validita' tm-data
Filtri di esclusione¶
L'elaborazione applica i seguenti filtri in cascata:
- Classe articolo: se tm-tip-classe <> "T", scarta le merci con classe diversa
- Reparto: se specificato, scarta le merci non associate; se vuoto e COGY33 attivo, scarta le merci dei reparti selezionati
- Articoli esclusi: se tm-art-da-escludere = "S", confronta con lista COGU05 (fino a 200 merci)
- Listino generale: se configurato, verifica presenza in COGGENMF ed esclude
Scansione merci¶
La scansione delle merci e' delegata a COGU16W che gestisce l'ordinamento (u16-fl-sel) e gli estremi da/a merce. Le operazioni sono:
- "Init-Start": inizializzazione
- "Set-Estremi": impostazione range merci
- "Leggi": lettura prossima merce
Contatori¶
nletti: merci lettenscritti: merci aggiornate
Variabili di stato principali¶
| Variabile | Descrizione |
|---|---|
tm-tip-aggiorna |
Tipo aggiornamento: L=listino, T=globale |
tm-tip-lis |
Tipo listino: L=listino, C=cliente |
tm-rif |
Riferimento listino |
tm-da-merce / tm-a-merce |
Intervallo merci |
tm-tip-classe |
Classe articoli: A/B/C/T |
tm-reparto |
Codice reparto (o vuoto per tutti) |
tm-ricarico |
Percentuale di ricarico (con segno) |
tm-arrot-euro |
Regola di arrotondamento |
tm-type-arr |
Tipo arrotondamento: E=eccesso, D=difetto |
tm-base |
Base di calcolo: U=ultimo prezzo |
tm-data |
Data validita' nuovo prezzo |
tm-art-da-escludere |
Flag esclusione articoli (S/N) |
tm-escl-list-gen |
Flag esclusione listino generale (S/N) |
tab-listini (n-tl) |
Array dei listini da aggiornare |
nletti / nscritti |
Contatori merci lette/aggiornate |
w-currency-conto |
Divisa di riferimento |