Vai al contenuto

COGI50 - Colture: Calcolo Voci di Costo

Panoramica

Programma batch interattivo del sotto-modulo "Colture" che calcola il costo orario dei centri di costo e ribalta i costi su manodopera, officina, macchine e commesse, in un periodo scelto dall'operatore. Scorre l'anagrafica dei centri di costo (CICBASTE, tipo record 7), per ciascuno somma i saldi contabili dei conti ad esso collegati (CICBASRI -> COGSLPCO), conteggia le ore uomo/macchina registrate (CICGIORN) e, per le commesse, valorizza anche il magazzino agganciato (COGMEMOR/COGMERCI). I risultati (totale generale, totale ore, costo orario) vengono riscritti sul record del centro di costo in CICBASTE.

Il calcolo e' incrementale e ordinato: prima la manodopera (produce il costo orario uomo di base), poi l'officina, poi le macchine (che usano il costo orario dell'officina), infine le commesse (che usano i costi orari uomo e macchina calcolati e sommano il valore di magazzino).

Posizione nel menu

Menu Percorso
Magazzino Colture > Operativo > Calcola Voci di costo

Struttura del programma

File e tabelle utilizzati

File/Tabella Tipo Descrizione
COGPNCON Input Piano dei conti (dichiarato in SELECT/FD)
FEURTAB Input Tabella di sistema (nomi file)
CICTABEL I-O Tabella parametri Colture
CICLAVOR Input Anagrafica tipi attivita' (ore)
CICBASTE I-O Anagrafica di base: centri di costo (tipo 7), commesse (tipo 4); vi vengono riscritti i risultati del calcolo
CICBASRI Input Righe anagrafica: legame centro di costo -> conti contabili (cic-bri-leg)
CICGIORN Input Archivio giornaliero ore lavorate (conteggio ore uomo/macchina per periodo, via chiave .k02 per data)
COGSLPCO Input Saldi progressivi piano dei conti (saldi mensili per conto/anno)
COGMERCI Input Anagrafica merci (prezzo medio mer-pma, valuta) per la valorizzazione di magazzino
COGMEMOR Input Progressivi/giacenze mensili di magazzino (.k02 per anno), per il valore magazzino delle commesse

Copybook principali

Copybook Descrizione
cogpncon.fd / cogpncon.cpy SELECT/FD e record piano dei conti
feurtab.fd / cogfiles.cpy SELECT/FD e record tabella di sistema
cictabel.fd / cictabel.cpy SELECT/FD e record CICTABEL
ciclavor.fd / ciclavor.cpy SELECT/FD e record CICLAVOR
cicbaste.fd / cicbaste.cpy SELECT/FD e record CICBASTE (con area cic-bas-dati-cc per i totali dei centri di costo)
cicbasri.fd / cicbasri.cpy SELECT/FD e record CICBASRI (cic-bri-leg = legame al piano conti)
cicgiorn.fd / cicgiorn.cpy SELECT/FD e record CICGIORN
cogslpco.fd / cogslpco.cpy SELECT/FD e record saldi conti (con-saldo occurs 12, mesi)
cogmerci.fd / cogmerci.cpy SELECT/FD e record merci
cogmemor.fd / cogmemor.cpy SELECT/FD e record progressivi magazzino
wstato.cpy / wgrave.cpy / wopenf.cpy / wnscr.cpy Working storage stato I/O, errori, apertura file, video
cogazien.cpy Dati azienda
utili06.cpy / utili08.cpy Interfacce COGI06 / servizio I08
utils52.cpy Interfaccia COGS52 (immissione data)
utils67.cpy Interfaccia verso il servizio S67
cogpncon.k01 / cicbaste.k01 / cicbasri.k01 / ciclavor.k01 / cicgiorn.k01 / cicgiorn.k02 / cogmemor.k01 / cogmemor.k02 / cogslpco.k01 / cogmerci.k01 Routine I/O su chiavi primarie e secondarie (CICGIORN .k02 per data, COGMEMOR .k02 per anno)
stato.cpy / stato1.cpy / winmsg.cpy / grave.cpy Gestione stato verbi, messaggi, errori gravi
open1.cpy / openc.cpy Routine di apertura file
mmmask.cpy Gestione maschera a caratteri
dtab.cpy Gestione tabella video
tstfun1.cpy Test tasti funzione
sendi08.cpy Routine di chiamata al servizio I08

Chiamate a sottoprogrammi (CALL)

Programma Scopo
COGS52 Immissione e validazione delle date di inizio e fine periodo

Logica di elaborazione

1. Inizializzazione (apri)

Apre i file, legge i dati azienda, imposta w-tipo = "7" (centri di costo). Carica la maschera testuale mm-1 (finestra 7x52) con i campi "Da Data" / "A Data".

2. Immissione periodo (a4-a-35)

Tramite COGS52 acquisisce la data da (tm-data-da, in a-7) e la data a (tm-data-a, in a-10). Con acc-conf (a-35) chiede conferma (F3) del periodo.

3. Scansione centri di costo (a10-a15)

Si posiziona su CICBASTE per tipo 7 (st-cicbaste-notmin-chia1) e scorre tutti i centri di costo (rdnxt-cicbaste) finche' il tipo resta 7. Per ciascuno memorizza la chiave (w-chiave-cc) e azzera l'accumulatore tot-cc.

4. Somma saldi contabili collegati (a-27-a-30)

Per il centro di costo corrente scorre CICBASRI (righe con lo stesso tipo/codice) e, per ogni riga, decodifica il legame cic-bri-leg in mastro/conto/sottoconto, costruisce la chiave conto+anno e legge COGSLPCO. Somma in tot-cc i saldi mensili (con-saldo) dal mese 1 fino a tm-mese-a (mese della data "a").

5. Elaborazione per tipo di centro di costo (a-38, EVALUATE su cic-bas-cod)

  • "1" Manodopera: conteggia le ore uomo (conteggia-ore), calcola il costo orario uomo w-costo-ora-1 = tot-cc / tot-ore, salva totale ore, totale generale e costo orario sul record e riscrive CICBASTE.
  • "2" Officina: conteggia le ore, aggiunge al totale il costo della manodopera (tot-ore * w-costo-ora-1), calcola il costo orario officina w-costo-ora-2 = tot-cc / tot-ore e riscrive.
  • "3" Macchine: conteggia le ore (uomo per commessa "OFFMA" e ore macchina di tipo 3), aggiunge il costo officina (tot-ore * w-costo-ora-2), calcola il costo orario macchina w-costo-ora-3 = tot-cc / tot-ore-mac, salva totale ore uomo e macchina e riscrive.
  • other (commesse, tipo cod 4-9): conteggia ore (conteggia-ore) e valore magazzino (conteggia-mag), rilegge il record del centro di costo per la chiave corrente e vi somma: costo manodopera (tot-ore * w-costo-ora-1), costo macchina (tot-ore-mac * w-costo-ora-3) e il valore di magazzino (tot-mag); scrive totale ore, totale ore macchina, totale magazzino e totale generale e riscrive CICBASTE.

6. Conteggio ore (conteggia-ore)

Azzera tot-ore/tot-ore-mac e scorre CICGIORN per data (chiave secondaria .k02) dalla data-da alla data-a. In base al codice del centro di costo (cic-bas-cod) somma le ore uomo/macchina con criteri specifici: - "1": ore uomo con codice 1 o 2; - "2": ore uomo con codice 2; - "3": ore uomo dei movimenti con coltura "OFFMA" e ore macchina di codice 3; - "4"..."9" (commesse): ore uomo (codice 1) e ore macchina (codice 3) dei movimenti la cui coltura coincide con la commessa (w-comme).

7. Conteggio valore magazzino (conteggia-mag)

Solo per le commesse: verifica se la commessa (w-comme, tipo 4 in CICBASTE) ha un magazzino agganciato (cic-bas-mag). In caso affermativo scorre COGMEMOR per anno (chiave .k02), per le righe del magazzino agganciato legge la merce da COGMERCI e ne prende il prezzo medio mer-pma (con conversione da Euro/Lire se mer-curr-pma = "E ", moltiplicando per 1936,27), accumulando in tot-mag la giacenza del mese "a" (mav-qta-gia(tm-mese-a)) per il prezzo medio.

8. Chiusura (fine / z-chiudi)

Chiude tutti i file, chiude la finestra ed esce.

Note tecniche

  • Aggiornamento in luogo di CICBASTE: il programma riscrive i risultati del calcolo (totale ore, costo orario, totali generale/magazzino) direttamente sui record dei centri di costo in CICBASTE, nell'area ridefinita cic-bas-dati-cc. E' quindi un batch che modifica l'anagrafica dei centri di costo.
  • Ordine di calcolo dipendente: i costi orari sono a cascata (manodopera -> officina -> macchine -> commesse). Le variabili w-costo-ora-1/2/3 trasportano il costo orario tra le iterazioni; l'EVALUATE si affida al fatto che i centri di costo "1","2","3" siano elaborati prima delle commesse, coerentemente con l'ordinamento della chiave CICBASTE (tipo 7 + codice).
  • Saldi contabili: i saldi provengono da COGSLPCO (con-saldo occurs 12), sommati dal mese 1 al mese della data "a". Il legame conto e' codificato in cic-bri-leg (mastro 2, conto 2, sottoconto 6 caratteri) delle righe CICBASRI.
  • Valorizzazione magazzino: usa la giacenza mensile di COGMEMOR (mav-qta-gia) e il prezzo medio di COGMERCI, con conversione Lire/Euro (fattore 1936,27) quando la valuta del prezzo e' Euro.
  • Chiavi secondarie aggiunte: il programma usa cicgiorn.k02 (scansione CICGIORN per data) e cogmemor.k02 (scansione COGMEMOR per anno), incluse in coda alla procedure division oltre alle chiavi primarie.
  • Etichetta di menu vs funzione: la voce di menu "Calcola Voci di costo" corrisponde alla funzione effettiva ("Calcolo Voci di Costo" nel titolo maschera, "Conteggio Centri di Costo"): calcolo dei costi orari e ribaltamento sui centri di costo del modulo Colture.
  • Stile a caratteri (non GUI): maschera testuale via mmmask.cpy; codice legacy con largo uso di GO TO, PERFORM ... THRU e PERFORM VARYING.