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 uomow-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 officinaw-costo-ora-2 = tot-cc / tot-oree 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 macchinaw-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/3trasportano 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-saldooccurs 12), sommati dal mese 1 al mese della data "a". Il legame conto e' codificato incic-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) ecogmemor.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 diGO TO,PERFORM ... THRUePERFORM VARYING.