COGK27 - Bilancio Vendite Auto (Emporio Auto)¶
Panoramica¶
Programma interattivo a carattere che elabora il bilancio economico delle vendite auto dell'Emporio Auto: per ciascuna vettura calcola acquisto, spese, vendita e differenza (margine) e ne produce un prospetto consultabile a video e stampabile su carta ("Analisi Bilancio"). Scandisce l'archivio schede auto COGSKAUT, decifra i valori economici cifrati, calcola il margine per riga e accumula i totali per raggruppamento, scrivendo sia le righe di dettaglio sia i record di totale nel file di lavoro temporaneo. E' una funzione di sola analisi: non aggiorna gli archivi.
L'analisi puo' essere svolta in modo Generico oppure raggruppata per Concessionario o per Rivenditore, oppure limitata alle vetture in Giacenza o Demolite; il periodo puo' essere riferito alle date di entrata o alle date di vendita.
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Magazzino | Autoveicoli > Bilanci |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema (nomi file) |
| COGSKAUT | Input | Archivio schede auto (scansione per stato via chiave secondaria ska-chia2) |
| COGRACMC | Input | Raccordo codice avanzato -> merce |
| COGMERCI | Input | Anagrafica merci (descrizione veicolo) |
| COGMERFO | Input | Merci/fornitore (targa) |
| COGGEANA | Input | Anagrafica clienti/fornitori (nome concessionario/rivenditore) |
| COGTABEL | Input | Tabella generica |
| work-file | I-O (temp) | File indicizzato di lavoro con righe di dettaglio e record di totale |
| sta | Output | File di stampa (PRINTER) |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| cogskaut.cpy | Tracciato archivio schede auto (valori economici) |
| cogracmc.cpy / cogmerci.cpy / cogmerfo.cpy | Raccordo merce, anagrafica merci, merci/fornitore |
| coggeana.cpy | Anagrafica clienti/fornitori |
| cogtabel.cpy / cnfgprfr.cpy | Tabella generica e configurazione profili |
| cogfiles.cpy / cogazien.cpy | FEURTAB e dati azienda |
| wstato / wgrave / wopenf / wnscr | Working storage standard |
| utils22.cpy / utils52.cpy / utils54.cpy / utils60.cpy / utils65.cpy | Interfacce COGS22, COGS52 (data), COGS54 (stampa), COGS60 (menu), COGS65 (ricerca anagrafica) |
| utilsk10.cpy | Interfaccia verso COGK10 |
| stato / stato1 / winmsg / grave / open1 | Procedure standard |
| mmmask.cpy / dtab.cpy / fscrol2.cpy | Maschera testuale standalone, tabella video, scrolling |
| coggeana.k01 / cogmerfo.k01 / cogracmc.k01 / cogracmc.k02 / cogmerci.k01 | Chiavi lettura archivi |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| COGS60 | Scelta a menu (ordine di stampa, tipo selezione date) |
| COGS65 | Ricerca/help anagrafica concessionario o rivenditore |
| COGS52 | Immissione e verifica delle date del periodo |
| COGS54 | Selezione stampante/emulazione (form COGK27) |
| CRYPT / encrypt | Decifratura dei valori economici cifrati (prep-campo) |
| COGK10 | Apertura scheda auto della riga selezionata (F7) |
Logica di elaborazione¶
1. Inizializzazione (a000) e parametri¶
Verifica l'abilitazione (ctr-abil), apre i file, legge i dati azienda e mostra la maschera "Bilancio Vendite". Poi raccoglie i filtri:
- Ordine/tipo analisi (
tm-ordine,COGS60suw60-dati): A = Generico, B = Concessionario, C = Rivenditore, D = In Giacenza, E = Demolita. Per B e C richiede il codice anagrafico (COGS65,tm-for, oppure tutti). - Periodo (
tm-data-da/tm-data-a,COGS52). - Tipo selezione date (
tm-tipo-date,COGS60suw61-dati): E = Date di Entrata, V = Date di Vendita, per stabilire se il periodo si applica aska-data-acqo aska-data-ven.
2. Estrazione e calcolo (fill-file / fill-file-next / upd-work-file)¶
Scandisce COGSKAUT per stato "A" e oltre. In fill-file-next normalizza la data di vendita (ska-data-riv o, per stato F/G, ska-data-rip) e applica i filtri: per l'ordine A/B/C confronta il periodo con la data di entrata o di vendita secondo tm-tipo-date; per D (giacenza) considera solo ska-stato = "A"/"V"; per E (demolite) solo ska-stato = "F"/"G".
In upd-work-file, per ogni scheda selezionata:
- risolve merce/targa/nominativo (COGRACMC/COGMERCI/COGMERFO/COGGEANA); per il rivenditore (ordine C) legge il nominativo da
ska-riv; - decifra i valori economici (
prep-campo/CRYPT): sefunzio = 11acquisto daska-campo-a, spese daska-campo-e, vendita daska-campo-c(oska-campo-b); le spese vengono sottratte dall'acquisto (work-acq = acquisto - spese); altrimenti usa direttamenteska-prz-acq/ska-prz-ven; - calcola la differenza/margine (
work-diffe = vendita - acquisto - spese), solo se la vendita e' maggiore di zero; - scrive la riga di dettaglio nel file di lavoro;
- accumula il totale di raggruppamento: rilegge il record chiave con
work-prog/work-dataahigh-value(record di totale) e somma acquisto, spese, vendita e differenza, riscrivendolo.
3. Visualizzazione e paginazione¶
Rilegge il file di lavoro e riempie la tabella tm-tab (max 16 righe). In x1-fill-sr compone data, descrizione, targa, acquisto, spese, vendita e differenza; per le vetture demolite mostra la dicitura "DEMOLIT" e il telaio al posto della targa. I record di totale (chiave a high-value) sono resi con targa "Totale:". Finestra orizzontale scorrevole e riga selezionata in reverse; l'intestazione a video mostra Concessionario o Rivenditore secondo l'ordine.
4. Interazione (a-45)¶
- ESC: torna alla scelta ordine;
- F7: apre la scheda auto (
COGK10); - F9: stampa su carta.
5. Stampa su carta (st-stampa / intesta / rot-ordine)¶
Seleziona stampante via COGS54 (form COGK27), rilegge il file di lavoro e stampa l'intestazione "Analisi Bilancio" con specifica del tipo (Generico / per Concessionario / per Rivenditore / Demolite). Alla rottura di raggruppamento (rot-ordine, quando cambia work-ordine) stampa la testata del gruppo (Concessionario/Rivenditore). Le righe di dettaglio riportano data entrata, descrizione, targa, acquisto, spese, vendita, differenza, data uscita e concessionario/rivenditore, con salto pagina ogni 60 righe.
6. Chiusura (fine / z-chiudi)¶
Chiude i file, elimina il file di lavoro ed esce.
Note tecniche¶
- Archivio di riferimento:
COGSKAUT(vedicogskaut.cpy). I valori economici usati sono i campi cifratiska-campo-a(acquisto),ska-campo-b/ska-campo-c(vendita),ska-campo-e(spese), oltre ai campi in chiaroska-prz-acq/ska-prz-venusati come fallback. - Valori cifrati: acquisto, vendita e spese sono memorizzati cifrati e decifrati a run-time con
CRYPT(chiavew-psv-key) in blocchi di 8 caratteri;prep-campoazzera i valori non numerici dopo la decifratura. - Convenzione spese: le spese vengono sottratte dall'acquisto (
work-acqgia' comprende le spese), come annotato nei commenti del sorgente; il margine e' calcolato come vendita meno acquisto meno spese solo per vetture effettivamente vendute. - Record di totale: per ogni raggruppamento viene mantenuto un record accumulatore con chiave a
high-value, che in visualizzazione e stampa produce la riga "Totale:". - File di lavoro temporaneo: indicizzato, nome con prefisso
#$cogk25.+ operatore (condiviso nel modulo); chiavework-ordine+work-data+work-prog. Ricreato all'ingresso e cancellato in uscita. - Programma a carattere: usa
mmmask.cpy(standalone testuale), maschera literalmm-1. - Nota sul menu: la voce di menu "Bilanci" corrisponde al bilancio economico (acquisto/spese/vendita/margine) delle vendite auto.