Vai al contenuto

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, COGS60 su w60-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, COGS60 su w61-dati): E = Date di Entrata, V = Date di Vendita, per stabilire se il periodo si applica a ska-data-acq o a ska-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): se funzio = 11 acquisto da ska-campo-a, spese da ska-campo-e, vendita da ska-campo-c (o ska-campo-b); le spese vengono sottratte dall'acquisto (work-acq = acquisto - spese); altrimenti usa direttamente ska-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-data a high-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 (vedi cogskaut.cpy). I valori economici usati sono i campi cifrati ska-campo-a (acquisto), ska-campo-b/ska-campo-c (vendita), ska-campo-e (spese), oltre ai campi in chiaro ska-prz-acq/ska-prz-ven usati come fallback.
  • Valori cifrati: acquisto, vendita e spese sono memorizzati cifrati e decifrati a run-time con CRYPT (chiave w-psv-key) in blocchi di 8 caratteri; prep-campo azzera i valori non numerici dopo la decifratura.
  • Convenzione spese: le spese vengono sottratte dall'acquisto (work-acq gia' 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); chiave work-ordine + work-data + work-prog. Ricreato all'ingresso e cancellato in uscita.
  • Programma a carattere: usa mmmask.cpy (standalone testuale), maschera literal mm-1.
  • Nota sul menu: la voce di menu "Bilanci" corrisponde al bilancio economico (acquisto/spese/vendita/margine) delle vendite auto.