COGV23 - Creazione Prezzo Medio
Intestazione
| Campo |
Valore |
| Programma |
COGV23 |
| Titolo |
Creazione Prezzo Medio Acquisto/Vendita |
| Posizione menu |
Magazzino > Controllo Magazzino > Prezzo Medio > Creazione |
Scopo e logica generale
COGV23 e' un programma interattivo per il calcolo e l'aggiornamento dei prezzi medi di acquisto e vendita degli articoli. Scorre tutti i movimenti di magazzino nel periodo indicato, accumula quantita' e valore per ciascun articolo e calcola il prezzo medio ponderato. I risultati vengono memorizzati nell'archivio prezzi tramite le subroutine COGL61 (lettura) e COGL62 (scrittura).
Puo' operare su un singolo articolo o su tutto l'anagrafica merci. Supporta la stampa del dettaglio e l'esclusione delle distinte base.
Flusso principale
- Inizializzazione (
apri): lettura azienda, apertura file, lettura configurazione RNEWCONF (x99-src-cfg), data di sistema, lettura divisa conto tramite COGU10W, configurazione tasti funzione (F1 config, F3 conferma, F8, F9), preparazione controllo merce (COGS68)
- Accept parametri (
a4 / a-tm-ini / a-tm-fin / a-tm-data-mem / a-tm-mag-sede / a-tm-campo / a-tm-merce / a-tm-stampa / a-tm-db):
- Data inizio (
tm-ini): con calendario COGS52W
- Data fine (
tm-fin): con calendario, propone ultimo mese accreditato
- Data memorizzazione (
tm-data-mem): data con cui salvare i prezzi medi
- Magazzino sede (
tm-mag-sede): con ricerca WIN036 (F8)
- Tipo elaborazione (
tm-campo): C=completo (acquisto+vendita)
- Merce (
tm-merce): codice specifico o vuoto per tutte, con ricerca COGS68
- Stampa (
tm-stampa): S/N
- Distinte base (
tm-db): S/N
- Conferma (
a-fine-dati): validazione, eventuale configurazione stampa (COGS54), dialog di conferma
- Elaborazione (
a020-loop): scansione COGMERCI, per ogni merce:
- Esclusione servizi (classe "S") e distinte base (se richiesto)
- Lettura prezzi attuali tramite COGL61
- Calcolo prezzo medio (
b-prezzi thru ex-b) nel periodo indicato
- Se nessun movimento nel periodo: ricerca a ritroso fino a 10 anni
- Scrittura prezzi medi calcolati tramite COGL62
- Eventuale stampa riga dettaglio
- Fine elaborazione (
a999): chiusura stampa, ritorno a a4
- Chiusura (
fine): chiusura file, z-99-exit-program
File e tabelle acceduti
| File logico |
Record |
Modalita' |
Uso |
| COGTABEL |
euta-rec |
Input |
Tabelle generiche (tipo 57 = ultimo periodo accreditato) |
| COGMERCI |
mer-rec |
Input |
Anagrafica merci - scansione articoli |
| FLSTA |
riga |
Output |
File stampa (se stampa attiva) |
| FEURTAB |
feurtab |
Input |
Tabella generica Eurosystem |
+ file da cogv23.select |
vari |
Input |
File movimenti magazzino |
Copybook inclusi
Screen Designer
| Copybook |
Contenuto |
cogv23-01.scr |
Maschera principale |
cogv23.select |
SELECT dei file |
cogv23.fd |
FD dei file |
cogv23.wrk |
Working storage maschera |
cogv23.decla |
Declaratives (flsta) |
Strutture dati e utility
| Copybook |
Contenuto |
COGFILES.CPY |
FD feurtab |
flsta.cpy |
Record file stampa |
wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy |
Standard working storage |
cogazien.cpy |
Dati azienda |
utilncnf.cpy |
Parametri RNEWCONF |
utils52.cpy |
Interfaccia COGS52W (calendario) |
utils54.cpy |
Interfaccia COGS54 (gestione stampa) |
utils68.cpy |
Interfaccia COGS68 (ricerca merce) |
utilu10.cpy |
Gestione importi e divise |
utilw36.cpy |
Interfaccia WIN036 (ricerca magazzino) |
utilcogl61.cpy |
Interfaccia COGL61 (lettura prezzi) |
utilcogl62.cpy |
Interfaccia COGL62 (scrittura prezzi) |
k-u10.cpy, k-personal.cpy |
Costanti |
wcont.cpy, wcont1.cpy |
Linkage section |
Programmi chiamati (CALL)
| Programma |
Scopo |
| COGS52W |
Calendario per selezione date |
| COGS54 |
Gestione stampa (apertura/chiusura) |
| COGS68 |
Ricerca merce (accept con lookup) |
| COGU10W |
Gestione importi, divise, formattazione |
| WIN036 |
Selezione magazzino (F8) |
| COGL61 |
Lettura prezzi (PMA, PMV, prezzo acquisto) per merce e data |
| COGL62 |
Scrittura prezzi medi calcolati |
| RNEWCONF |
Lettura/modifica configurazione |
Configurazione (RNEWCONF)
| Parametro |
Campo |
Utilizzo |
| Flag rimando |
tm-cfg-fl-rim |
Comportamento specifico da configurazione |
Logica di business
Calcolo prezzo medio
Per ogni merce, il programma:
- Chiama COGL61 per leggere i prezzi attuali (PMA, PMV, prezzo acquisto) alla data fine
- Azzera PMA e PMV per il ricalcolo
- Esegue
b-prezzi che scorre i movimenti nel periodo data-ini / data-fin:
- Accumula quantita' e valore per acquisti (
totqta-acq, totval-acq)
- Accumula quantita' e valore per vendite (
totqta-ven, totval-ven)
- Calcola PMA = totval-acq / totqta-acq e PMV = totval-ven / totqta-ven
- Se
fl-ok = "N" (nessun movimento trovato), ripete la ricerca su anni precedenti (fino a 10)
- Chiama COGL62 per scrivere i nuovi prezzi medi, con data di memorizzazione e sede
Esclusioni
- Merci di classe "S" (servizi) sono escluse
- Merci padre di distinta ("P") escluse se
tm-db = "N"
- Merce fittizia "999999999" esclusa
Stampa
Se tm-stampa = "S", produce un report con intestazione "CALCOLO PREZZI MEDI" e per ogni merce: codice, descrizione, unita' di misura, prezzo unitario acquisto, prezzo medio acquisto, prezzo medio vendita.
Personalizzazione "OM"
Per az-personal = "OM": se il PMA e' a zero dopo il calcolo, ripristina il valore precedente memorizzato in w-mer-pma.
Giro annuale
Se il periodo copre l'intero anno (1/1 - 31/12), viene impostato w-fl-giro-annuale = "1" per ottimizzazioni nel calcolo.
Variabili di stato principali
| Variabile |
Descrizione |
tm-ini |
Data inizio periodo |
tm-fin |
Data fine periodo |
tm-data-mem |
Data memorizzazione prezzi |
tm-mag-sede |
Codice magazzino sede |
tm-campo |
Tipo elaborazione (C=completo) |
tm-merce |
Codice merce specifica (o vuoto per tutte) |
tm-stampa |
Flag stampa (S/N) |
tm-db |
Flag distinte base (S/N) |
totqta-acq / totval-acq |
Accumulatori acquisto |
totqta-ven / totval-ven |
Accumulatori vendita |
w-divisa-rif |
Divisa di riferimento per il periodo |
w-fl-giro-annuale |
Flag periodo annuale completo |