Vai al contenuto

Vendite — Commesse

Area Vendite > Commesse del menu Eurocoge — gestione cantieri, sottocommesse, giornalieri, budget, analisi costi/ricavi.

Panoramica

33 programmi per il ciclo di vita delle commesse:

  1. Tabelle (8) — anagrafica commesse, sottocommesse, cantieri, tecnici, tipi, budget
  2. Funzioni documenti (8) — giornalieri per commessa/data/tecnico, movimentazione, chiusura
  3. Import/Export (2) — scambio dati con Merlino
  4. Visualizzazioni (5) — giacenze, prestazioni, elenco commesse, fabbisogni
  5. Stampe (6) — anagrafica, portafoglio, situazione merce, analisi commessa, riepilogo
  6. Utilita' (3) — ricalcolo prestazioni, FIFO, giacenze

Totale: 33 programmi, ~78.400 righe COBOL.

Archivi principali

File Copy Descrizione
COGTESCM cogtescm.cpy Testate commessa. Chiave: tsc-cod (10 car.). Cliente, date, stato (A/C/Q/D), importo
COGSOTCM cogsotcm.cpy Sottocommesse. Chiave: sot-cod. Stato A/C, flag chiamata
COGRIGCM cogrigcm.cpy Righe commessa (movimenti giornalieri). Chiave composta: commessa + sottocomm. + tipo + doc
COGCMMGP cogcmmgp.cpy Legame commesse ↔ magazzini periferici/cantieri
COGMAGPE cogmagpe.cpy Magazzini periferici e cantieri. Chiave: mgp-tip + mgp-cod
COGTCMAG cogtcmag.cpy Dati aggiuntivi testata commessa (cliente assistito, manodopera prevista, agente)
COGBUDSC cogbudsc.cpy Budget per commessa/sottocommessa (materiali, manodopera, altri, ore)

Tabelle (8 programmi)

# Programma Righe Descrizione
1 COGG52 7.458 Gestione commesse — hub centrale. Maschera GUI con griglia sottocommesse. CRUD testate (COGTESCM), dati aggiuntivi (COGTCMAG), budget (COGBUDSC). Lancia analisi, giacenze, fabbisogni, movimentazione
2 COGG48 1.422 Gestione sottocommesse (COGSOTCM): CRUD con griglia filtrata per commessa
3 COGV22 1.370 Gestione cantieri (COGMAGPE tipo C): anagrafica con stampa integrata
4 COGG15 1.678 Collegamento cantieri/commessa N:N (COGCMMGP)
5 COGU70 1.052 Tipi commessa (COGTABEL tipo A1): flag in economia, obbligo CIG
6 COGG60 1.601 Collegamento tecnici/commessa N:N
7 COGA69 889 Raggruppamenti commesse (COGTABEL tipo BE)
8 COGMB0 1.021 Budget: struttura gerarchica ad albero via COGTRANS

Funzioni documenti (8 programmi)

# Programma Righe Descrizione
9 COGV42 1.219 Caricamento da terminale portatile: parser barcode/palmare → COGTRANS
10 COGX49 2.209 Giornalieri per commessa: griglia data/tecnico/merce/quantita'/costi
11 COGX04 2.433 Giornalieri per data: testata divisa/operazione + griglia righe COGRIGCM
12 COGX09 2.554 Giornalieri per tecnico: testata tecnico+data + griglia righe
13 COGG54 1.502 Visualizzazione documenti collegati (bolle, DDT, fatture) con selezione multipla
14 COGX51 1.505 Rilevazione presenze: 3 pagine (raggruppamento → commessa → conferma)
15 COGG65 1.213 Raggruppamento prestazioni in documento riepilogativo con scarico magazzino
16 COGG4B 2.082 Movimentazione e chiusura cantiere: bolle reso, chiusura giacenza residua. Chiama COGV15/COGV56 per movimenti magazzino
17 COGG4F 2.614 Preparazione chiamate cantiere: pianificazione interventi con assegnazione tecnici

Import/Export (2 programmi)

# Programma Righe Descrizione
18 COGM102 568 Importazione da Merlino: 3 file input → COGTESCM, COGSOTCM, COGTABEL
19 COGM105 2.375 Esportazione verso Merlino: testate (kind=1) e righe (kind=2) in EUR

Visualizzazioni (5 programmi)

# Programma Righe Descrizione
20 COGX06 2.490 Giacenza commessa/cantiere: merce, quantita', impegnato, ordinato, valori
21 COGX08 2.155 Prestazioni per tecnico/data: totalizza ore con stampa integrata
22 COGX44 2.413 Elenco commesse: multi-filtro, pop-up contestuale, export Excel
23 COGG4D 1.528 Fabbisogni materiali: giacenza, impegnata, ordinata, prenotata
24 COGX52 1.451 Visualizza e cancella rilevazioni: cancellazione documenti DMT

Stampe (6 programmi)

# Programma Righe Descrizione
25 COGG53 5.088 Stampa anagrafica commesse con righe giornaliero, totali per cantiere
26 COGX05 2.325 Portafoglio commesse: preventivo, costi, saldo, margine, residuo
27 COGG74 4.586 Situazione per merce con classificazione ISO: subtotali per gruppo/classe
28 COGGA4 11.922 Analisi commessa — il piu' grande del modulo. Breakdown costi/ricavi, 6 file transito, confronto budget vs consuntivo, export Word. Colonne opzionali Lotti/SN su TAB-RIEP-M
29 COGG59 76 Launcher elenco commesse con valori (→ personalizzato o COGG59NO)
30 COGG4C 3.913 Riepilogo globale commesse: valori aggregati, export XML/Word/Excel

Utilita' (3 programmi)

# Programma Righe Descrizione
31 COGG57 887 Ricalcolo prestazioni: prezzi ricavo e costo via COGL61/COGUA3
32 COGG58 1.700 Ricalcolo FIFO: 3 file transito, abbinamento scarichi → carichi piu' vecchi
33 COGR32 1.544 Ricalcolo giacenze commessa/cantiere: per combinazione merce/cantiere/commessa. Prerequisito per COGG4B e COGG4D

Gerarchia CALL

COGG52 (Gestione Commesse) ← hub centrale
  |-- COGG48 (Sottocommesse)
  |-- COGG60 (Raccordo Tecnici)
  |-- COGG15 (Raccordo Cantieri)
  |-- COGU70 (Tipi Commessa)
  |-- COGA69 (Raggruppamenti)
  |-- COGGA4 (Analisi Commessa)
  |-- COGX06 (Giacenze)
  |-- COGG4D (Fabbisogni)
  |-- COGG4B (Movimentazione/Chiusura)
  |     |-- COGX49 (Giornalieri)
  |     |-- COGV15/COGV56 (Bolle magazzino)
  |     |-- COGR32 (Ricalcolo giacenze)
  |-- COGG4F (Preparazione chiamate)
  |     |-- ASNS20 (Chiamate assistenza)
  |-- CRM030 (CRM)

Dettaglio: COGGA4 — Analisi commessa

Scopo

Report completo costi/ricavi per commessa con confronto budget vs consuntivo. Interfaccia a 4 pagine (data entry, dettaglio movimenti, consuntivo, sottocommesse). Output in Word via XML/WORDMDL.

File: cbl/cogga4.cbl (11.922 righe)

Struttura del programma

Il programma ha 4 pagine GUI e un motore di stampa/export:

  • Pagina 1: selezione commessa, date, filtri
  • Pagina 2: griglia dettaglio movimenti (provenienti da COGUA0)
  • Pagina 3: consuntivo documenti
  • Pagina 4: sottocommesse

Flusso principale

Pagina 1: selezione commessa, date, filtri
    |
    v
COGUA0 (estrazione movimenti commessa)
    |-- produce t-detcogua0 (dettaglio) + t-raggr (centri di costo)
    |
    v
Pagina 2: griglia dettaglio movimenti
    |
    v
Stampa (F7/F10): generazione Word via WORDMDL
    |-- Header (commessa, date, totali)
    |-- TAB-DET: dettaglio movimenti
    |-- TAB-RIEP-SC: riepilogo per sottocommessa
    |-- TAB-RIEP-CC: riepilogo per centro di costo
    |-- TAB-FABB: fabbisogni (via COGG4D)
    |-- TAB-RIEP-M: riepilogo per merce (con lotti e SN opzionali)
    |-- TAB-CONS-DOC: consuntivo documenti

Configurazione tabelle di stampa

Ogni tabella di report e' condizionale: viene stampata solo se il template COGPA3 contiene i tag corrispondenti (cogpa3-te-pnt > 0). I flag di abilitazione sono in tm-idx-tabelle:

Flag Tabella
tm-tab-det = "S" TAB-DET
tm-tab-riep-sc = "S" TAB-RIEP-SC
tm-tab-riep-cc = "S" TAB-RIEP-CC
tm-tab-fbb = "S" TAB-FABB
tm-tab-riep-m = "S" TAB-RIEP-M
tm-tab-cons-doc = "S" TAB-CONS-DOC

File transito (6 file temporanei indicizzati)

File Chiave Contenuto
t-detcogua0 commessa+riga Dettaglio movimenti (output COGUA0)
t-raggr via COGUA0 Aggregazione per centro di costo
cogtrans2 sottocommessa+cantiere Totali per sottocommessa (costi/ricavi MO, MA, A)
cogtrans3 merce (GRU/SOT/COD) Riepilogo per merce (TAB-RIEP-M). Contiene: qta mov/merce, costi/ricavi unitari e totali, fatturato, qta carico/residuo
cogtrans4 tipo+anno+numero+progr File transito aggiuntivo (aggiunto 130325)
t-desc-agg commessa+merce Descrizioni estese per merce

TAB-RIEP-M — Riepilogo per merce

Tabella riepilogativa che aggrega tutti i movimenti per codice merce. La stampa avviene in stampa-tab-riep-m (riga 8166) che cicla su cogtrans3; per ogni merce con dati validi, chiama a1-riga-standard-riep-m (riga 8567).

Ogni riga contiene fino a 25 colonne configurate nel template, tra cui:

Tag Contenuto
CR Raggruppamento (codice)
CRD Raggruppamento (descrizione, da COGANRAG)
MI Merce ID (formato GRU/SOT/COD)
MA Merce codice articolo (da COGRACMC)
MD Merce descrizione (da COGMERCI + desc. estesa da t-desc-agg)
DD Tipo (Prestazione/Materiale/Altro)
QM/UM Quantita' e UM movimento
QR/UR Quantita' e UM merce
CU/CT Costo unitario e totale
RU/RT Ricavo unitario e totale
FT Fatturato
QCAR Quantita' caricata
QCR Quantita' residua
LOT Elenco lotti movimentati (colonna opzionale, mod. 180226)
SN Elenco serial numbers movimentati (colonna opzionale, mod. 180226)
VT Separatore vuoto

Le colonne sono configurabili tramite template COGPA3 (cogpa3-te-info).

In coda alla tabella vengono anche calcolati i totali "residuo acquistato" (tm-q-acq-residuo, tm-v-acq-residuo) sommando trs3-q-acq-residuo e trs3-v-acq-residuo.

Modifica 180226: Colonne Lotti e Serial Numbers su TAB-RIEP-M

Scopo

Aggiungere alla tabella riepilogo materiali due colonne opzionali che mostrano, per ogni merce, l'elenco dei lotti e dei serial number movimentati sulla commessa.

Variabili aggiunte in Working-Storage

Variabile Tipo Scopo
tm-tab-riep-m-lot PIC X(01) Flag abilitazione colonna LOT ("S"/"spaces")
tm-tab-riep-m-sn PIC X(01) Flag abilitazione colonna SN ("S"/"spaces")
w-tag-lotti PIC X(2000) Buffer output lotti (stringa formattata per WORDMDL)
w-tag-sn PIC X(2000) Buffer output serial numbers
w-tab-lotti OCCURS 200 Tabella accumulo lotti (lotto PIC X(15) + qta PIC S9(07)V999)
w-tab-serial OCCURS 200 Tabella accumulo SN (sn PIC X(30) + qta PIC S9(07)V999)
wk, wl, xj, xk PIC 9(04) Indici di lavoro (nota: xj dichiarato ma non usato)

Attivazione

All'inizializzazione template (riga 5295), il programma scansiona i 25 tag di TAB-RIEP-M: se trova "LOT" imposta tm-tab-riep-m-lot = "S", se trova "SN" imposta tm-tab-riep-m-sn = "S". Senza questi tag nel template, la funzionalita' non si attiva.

Recupero lotti — a14-riep-m-lot (riga 8201)

Per ogni merce del riepilogo:

  1. Posizionamento su griglia: trs3-merce → t-gor-r-merce-cm, poi st-t-grid-det-notmin-chia4 (chiave alternata per merce sul file transito della griglia dettaglio)
  2. Loop documenti (a14-10-loop): legge sequenzialmente i documenti della merce
  3. Filtro tipo: solo righe con t-gor-r-prove-d = 'Documento magazzino'
  4. Validazione causale: legge testata bolla (rd-cogtesbo), poi tabella causali tipo 15 (rd-cogtabel). Accetta solo se euta-cb-com-gia/segno sono entrambi "E" (entrata commessa) o "U" (uscita commessa)
  5. Lettura riga magazzino: spacco documento in w-mag-chiap, legge rd-cogmomag, verifica mag-merce3 = trs3-merce
  6. Scansione lotti della riga: start su cogmovlt per chiave riga, per ogni mvl-merce = mag-merce3 legge cogmerlt per ottenere il codice lotto (mlt-lotto), poi accumula via a141-lotto
  7. Accumulo (a141-lotto riga 8341): ricerca lineare in w-tab-lotti — se lotto gia' presente somma/sottrae qta, altrimenti inserisce in primo slot libero. Segno da mvl-segno (E = +, U = -)
  8. Formattazione (a14-900): lotti con w-ele-lot-qta = 0 saltati; concatena in w-tag-lotti con formato "lotto(15) + newline(2)", limite 1950 char

Recupero serial numbers — a15-riep-m-sn (riga 8372)

Stessa logica di scansione documenti (passi 1-5 identici a lotti), poi:

  • Documento di Entrata (euta-cb-fl-eu = "E"): legge cogmatri per chiave 3 (entrata+merce), per ogni matricola chiama a151-serial
  • Documento di Uscita: legge cogmtusc per chiave 3 (bolla+merce), per ogni uscita recupera la matricola da cogmatri (mtu-mat → mtr-mat), poi chiama a151-serial
  • Accumulo (a151-serial riga 8538): come per lotti, ricerca lineare in w-tab-serial. Segno da mag-entrusc ("E" = +1, altro = -1)
  • Formattazione (a15-900): SN con w-ele-sn-qta = 0 saltati; concatena in w-tag-sn con formato "sn(30) + newline(2)", limite 1950 char

Stampa — a1-riga-standard-riep-m (riga 8567)

Prima dell'evaluate dei 25 tag, il paragrafo:

  1. Se tm-tab-riep-m-lot = "S"perform a14-riep-m-lot thru ex-a14
  2. Se tm-tab-riep-m-sn = "S"perform a15-riep-m-sn thru ex-a15

Poi nell'evaluate, i nuovi case:

  • "LOT": calcola dimensione effettiva di w-tag-lotti (trim a destra), scrive via WORDMDL
  • "SN": idem per w-tag-sn

File letti dalla modifica

File Prefisso Copy I/O Scopo
t-grid-det t-gor-r- cogtrans.k04 (REPLACING) Griglia dettaglio, chiave 4 per merce
COGTESBO tes- (gia' presente) Testata bolla magazzino
COGTABEL euta- (gia' presente) Causali tipo 15
COGMOMAG mag- (gia' presente) Righe movimento magazzino
COGMOVLT mvl- (gia' presente) Movimenti lotto
COGMERLT mlt- (gia' presente) Anagrafica lotti
COGMATRI mtr- cogmatri.k03 (nuova) Registro matricole/SN (start per chiave 3: entrata+merce)
COGMTUSC mtu- cogmtusc.k03 (nuova) Registro uscite SN (start per chiave 3: bolla+merce)

Logica di filtro causali per Lotti e S/N

Il filtro documenti in a14-riep-m-lot e a15-riep-m-sn si basa su due campi della tabella causali bolle (COGTABEL tipo 15, euta-causali-bolla), configurabili in COGV03 (Gestione Causali Bolla).

I due campi, con le etichette visibili nella maschera di gestione COGV03 e nel dettaglio movimenti di COGGA4:

Campo Etichetta COGV03 Etichetta COGGA4 Valori ammessi
euta-cb-com-segno "Segno x movim. commessa" Effetto costi/ricavi Aumento (E) / Diminuzione (U) / Ignoro movimento (I)
euta-cb-com-gia "Giacenza commessa" Effetto giacenza Aumento (E) / Diminuzione (U) / Ignoro movimento (I)

Sono due dimensioni indipendenti: "Segno x movim. commessa" (com-segno) governa la valorizzazione economica (costi/ricavi), "Giacenza commessa" (com-gia) la movimentazione fisica (giacenza).

La modifica accetta solo combinazioni concordi:

Giacenza (com-gia) Segno (com-segno) Accettato Significato
Aumento (E) Aumento (E) Si Materiale entra fisicamente in commessa e incide come costo → carico effettivo
Diminuzione (U) Diminuzione (U) Si Materiale esce fisicamente da commessa e genera scarico → reso o consumo definitivo
Aumento (E) Diminuzione (U) No Storno/rettifica
Diminuzione (U) Aumento (E) No Compensazione
Ignoro / * * / Ignoro No Trasferimenti interni, aggiustamenti valori, ignorati

Questo filtro e' piu' restrittivo rispetto al dettaglio movimenti di COGGA4, che mostra tutti i movimenti tranne Ignoro/Ignoro (e solo se tm-solo-valorizzati = "S"). Per i lotti/SN si mostrano solo i materiali che hanno effettivamente generato costo o ricavo sulla commessa.

Per i serial numbers, un ulteriore campo euta-cb-fl-eu ("Entrata/Uscita" in COGV03) determina come cercare le matricole: via COGMATRI (Entrata magazzino) o via COGMTUSC → COGMATRI (Uscita magazzino). Questo campo indica la direzione fisica del documento, indipendente dal suo effetto sulla commessa.

Campi correlati non usati dalla modifica (riguardano la valorizzazione, non la tracciabilita'):

  • euta-cb-com-costo: tipo costo da imputare (F=FIFO, V=valore doc, N=non cercare)
  • euta-cb-com-ricavo: tipo ricavo (V=valore doc)
  • euta-cb-solo-val: solo valore (S), giacenza+valore (N), solo costo (C)

Per la configurazione tipica delle causali commessa e il dettaglio completo dei flag, vedere la sezione Flag delle causali bolle e la sezione COGUA0 piu' sotto.

Note sulla modifica

  1. Performance: per ogni merce della TAB-RIEP-M, se LOT e/o SN sono abilitati, vengono eseguiti accessi multipli su 5-7 file per ciascun documento magazzino. La complessita' e' O(merci * documenti * righe), potenzialmente lenta su commesse con molti materiali

  2. Limite 200 elementi: sia w-tab-lotti che w-tab-serial hanno occurs 200. Oltre il 200esimo elemento, i dati vengono silenziosamente ignorati

  3. Limite buffer 2000 byte: per i lotti (15 char + 2 newline = 17/elem) il massimo e' ~115 lotti nel report; per i SN (30 + 2 = 32/elem) il massimo e' ~60 SN. Questi limiti sono piu' restrittivi degli occurs 200

  4. Saldo zero escluso: lotti/SN con quantita' netta = 0 non compaiono. Corretto per giacenza residua, ma potrebbe nascondere lotti/SN effettivamente movimentati

  5. Logica selezione documenti duplicata: a14-riep-m-lot e a15-riep-m-sn rieseguono indipendentemente la stessa scansione documenti e verifica causale. Possibile ottimizzazione futura: fattorizzare in un paragrafo comune

  6. Determinazione segno diversa: per i lotti usa mvl-segno (E/U dal record movimento lotto), per i serial usa mag-entrusc (E dal flag entrata/uscita della riga magazzino). In casi limite i due criteri potrebbero dare risultati diversi

  7. Variabile xj non usata (riga 485): dichiarata nella working storage ma mai referenziata. Residuo di sviluppo

Programmi chiamati

Programma Scopo
COGUA0 Estrazione movimenti commessa (motore principale)
COGPA3 Template colonne report (configurazione tabelle Word)
WORDMDL Generazione documenti Word via XML
COGG4D Calcolo fabbisogni commessa
ASNS07 Estrazione chiamate/interventi assistenza
COGL61 Lettura prezzi acquisto/medio (budget)
CRMS06 Dati CRM
GRIDADMN Gestione griglia

Dettaglio: COGUA0 — Motore analisi costi/ricavi commessa

Scopo

Sottoprogramma richiamato da COGGA4 (e potenzialmente da altri programmi) per estrarre e valorizzare tutti i movimenti di una commessa. Produce i file di transito che alimentano le tabelle di stampa.

File: cbl/cogua0.cbl (2.548 righe)

Interfaccia (linkage)

Riceve parametri via utilcogua0.cpy:

  • Commessa e sottocommessa da analizzare
  • Periodo (data-da / data-a)
  • Filtro classe merci (T=Tutte, M=Materiali, S=Servizi/Prestazioni)
  • Flag: calcola-cc (centri di costo), solo-senza-sotto, classe-merci
  • Nomi file transito output (t-dettaglio, t-raggr)

Restituisce:

  • File transito t-dettaglio (record per ogni movimento)
  • File transito t-raggr (aggregazione per centro di costo)
  • File transito t-cogua0-merci (riepilogo per merce, con residuo acquistato)
  • Tabella totalizzatori (cogua0-tab-totalizzatori, 40 valori) via costanti-commesse.cpy
  • Data e chiave ultima fattura

Flusso principale

Input: commessa, date, filtri
    |
    v
Lettura COGTESCM (testata commessa) → tipo commessa → flag "in economia"
    |
    v
Loop su COGRIGCM (righe commessa) filtrate per commessa [+ sottocommessa]
    |
    |-- tipo TD: testata documento → ignorato
    |-- tipo RC: dettaglio fattura no merci → tratta-rc
    |-- tipo RR: giornaliero                → tratta-rr
    |-- tipo RD/RG: movimento magazzino     → tratta-rd  (logica principale)
    |
    v
Per ogni record RD/RG, ogni record RC, ogni record RR:
    |-- Costruisce record t-cogua0-rec (dettaglio)
    |-- Totalizza costi/ricavi per tipo (MO, MAT, ALT)
    |-- Aggiorna centri di costo (t-raggr)
    |
    v
Riepilogo fatture (da w-tab-fat, max 200 fatture distinte)
    |
    v
Esporta totalizzatori (3 blocchi: periodo precedente, periodo, totale)
    |-- Calcolo margine e margine %
    |-- Residuo acquistato (da t-cogua0-merci)
    |-- Manodopera prevista vs eseguita

I flag causali nella valorizzazione commessa

I flag di COGTABEL tipo 15 (euta-causali-bolla) governano come ogni movimento di magazzino viene valorizzato. COGUA0 li usa tutti nella sezione tratta-rd:

Campi causale e valori

Campo Valori Descrizione (da cogtabel.cpy)
euta-cb-fl-eu E / U Tipo causale: Entrata o Uscita magazzino
euta-cb-com-segno E / U / I Segno movimentazione sulla commessa: Entrata, Uscita, Ignoro
euta-cb-com-gia E / U / I Effetto sulla giacenza commessa: Aumento, Diminuzione, Ignoro
euta-cb-com-costo F / V / N Tipo costo: FIFO (F), Valore documento (V), Non cercare (N)
euta-cb-com-ricavo V / (altro) Tipo ricavo: Valore documento (V)
euta-cb-solo-val S / N / C Solo valore (S), giacenza+valore (N), solo costo (C)
euta-cb-cli-for C / F Documento a Clienti o Fornitori
euta-cb-con-fat SI / NO Considerare in fatturazione?

Normalizzazione del segno (righe 1508-1532)

COGUA0 gestisce la discordanza tra segno del documento di magazzino (euta-cb-fl-eu) e segno sulla commessa (euta-cb-com-segno):

  • Trasferimento a commessa: causale Uscita magazzino (fl-eu=U) + Entrata commessa (com-segno=E). Se il movimento fisico e' un'Entrata (mag-entrusc=E anziche' U), inverte il valore
  • Reso da commessa: causale Entrata magazzino (fl-eu=E) + Uscita commessa (com-segno=U). Se il movimento fisico e' un'Uscita, inverte il valore

Determinazione del ricavo (righe 1584-1611)

Se euta-cb-com-ricavo = 'V' (ricavo da valore documento):

  • com-segno = 'I' → ricavo azzerato (non incide)
  • com-segno = 'E' → ricavo positivo (forzato con segno +, qta invertita se negativa)
  • com-segno = 'U' → ricavo negativo (forzato con segno -, qta invertita se positiva)

Determinazione del costo (righe 1623-1712)

Cascata di ricerca costo:

  1. Se com-costo = 'F' (FIFO):
  2. Prima usa moa-costo-commessa (costo FIFO specifico commessa) → provenienza "C"
  3. Se zero, usa moa-val-fifo (costo FIFO generico) → provenienza "F"
  4. Se zero, cerca prezzo ultimo acquisto via COGL61 → provenienza "U"

  5. Se com-costo = 'V' (Valore documento):

  6. Usa prezzo e valore dalla riga magazzino (mag-prezzo, mag-valore) → provenienza "V"

  7. Normalizzazione segno costo (per com-costo <> 'N'):

  8. com-segno = 'I' → costo azzerato
  9. com-segno = 'E' → costo positivo (forzato)
  10. com-segno = 'U' → costo negativo (forzato)

  11. Se com-costo = 'N' o com-segno = 'I' → provenienza non cercata (spaces)

Provenienza costo (t-cogua0-provenienza-costo)

Valore Significato
C Costo FIFO specifico commessa (da moa-costo-commessa)
F Costo FIFO generico (da moa-val-fifo)
U Prezzo ultimo acquisto (da COGL61)
V Valore documento (da mag-prezzo/mag-valore)
N Costo non trovato (prezzo = 0)
(spaces) Non cercato (causale = N o segno = I)

Calcolo residuo acquistato (righe 1745-1777)

Per ogni movimento nel periodo, COGUA0 calcola il "residuo acquistato" — materiale comprato per la commessa ma non ancora consumato:

com-segno com-gia Azione
I I (con cli-for = "F") +qta al residuo, +qta e +valore ai totali acquistato
E (con com-costo <> "N") -qta dal residuo (materiale consumato)
U (con com-costo <> "N") +qta al residuo, +qta e +valore ai totali acquistato

Il valore residuo viene poi proporzionato: v-residuo = v-totale / q-totale * q-residuo

Tipo movimento e classificazione merce

Ogni movimento viene classificato in base alla classe della merce (mer-classe da COGMERCI):

Classe merce ma3-fl-manodopera Tipo (t-cogua0-tip) Descrizione
S (Servizio) S P Prestazione manodopera
S (Servizio) N o assente A Costi/ricavi diversi
M (Materiale) o altra * M Costi/ricavi materiali
(non trovata) * A Costi/ricavi diversi

Trattamento tipi record COGRIGCM

Tipo Paragrafo Descrizione
TD (ignorato) Testata documento — non analizzato
RC tratta-rc Raccordo con fattura no merci. Cerca COGCONTR → COGTESBO → COGRACCO per trovare le fatture collegate
RR tratta-rr Giornaliero (COGDMRIG). Pre-bolle escluse. Costo = FIFO giornaliero (dmr-val-fifo). Ricavo = prezzo/valore giornaliero (solo se tm-cfg-ricavo-giornalieri = "S")
RD / RG tratta-rd Movimento magazzino. Logica completa: lettura COGMOMAG + COGTESBO + causale + raccordo fattura + valorizzazione costi/ricavi + centri di costo

Totalizzatori esportati (3 blocchi x 10 valori + 10 extra)

Blocco Indici Contenuto
T1 (periodo precedente) 1-10 Costi MO/MAT/ALT, Ricavi MO/MAT/ALT, Totale costi/ricavi, Fatturato, Margine
T2 (nel periodo) 11-20 Stessa struttura
T3 (totale) 21-30 T1 + T2
Extra 31-40 Preventivo, Diff. preventivo-fatturato, Diff. ricavi-fatturato, MO prevista/eseguita, Residuo acquistato (Q/V), Margine % (x3 blocchi)

Relazione COGUA0 ↔ COGGA4

COGUA0 e' il motore di valorizzazione, COGGA4 e' il presentatore:

Aspetto COGUA0 COGGA4
Flag causali per movimenti Usa TUTTI (com-segno, com-gia, com-costo, com-ricavo, fl-eu, cli-for) per calcolare costi/ricavi Li salva in t-gor-r per visualizzazione, filtra I/I solo se richiesto
Flag causali per Lotti/SN Non coinvolto Usa solo com-gia + com-segno (accetta solo E/E e U/U)
Totalizzatori Li produce (40 valori) Li consuma (display in header commessa)
File transito Li crea e popola Li legge e stampa
Classificazione merce Determina P/M/A Lo eredita da t-cogua0-tip

Il filtro E/E e U/U applicato in COGGA4 per lotti/SN e' coerente con la logica di COGUA0: sono le combinazioni che producono un impatto reale e completo (sia fisico che economico) sulla commessa.


Dettaglio tecnico: Calcolo FIFO (COGG57/COGG58)

Panoramica

Due programmi cooperano per determinare il costo dei materiali e delle prestazioni su commessa con metodo FIFO (First In, First Out):

  • COGG57 (cbl/cogg57.cbl, 887 righe) — Ricalcolo valori prestazioni: aggiorna prezzi di vendita e costi sulle righe giornaliere
  • COGG58 (cbl/cogg58.cbl, 1.700 righe) — Calcolo FIFO commessa: assegna il costo FIFO ai movimenti di magazzino

Il risultato finale viene scritto nel campo MOA-COSTO-COMMESSA sui movimenti di magazzino. Questo valore alimenta poi la cascata di costo di COGUA0 (provenienza "C").

Le 6 fasi del calcolo FIFO semplificato (COGG58)

Il criterio semplificato (valori di configurazione "A" o "B") e' il metodo attualmente in uso.

Fase 1 — Costruzione file transito (cogtrans)

Scorre i movimenti di magazzino (COGRIGCM tipo RD) collegati alla commessa e li classifica in base alla causale:

Tipo Condizione causale Significato
A (acquisto) Entrata fornitore, costo = N, fatturazione = S Carico di merce per la commessa
B (reso fornitore) Uscita fornitore, costo = N, fatturazione = S Decurta gli acquisti
C (reso NF fornitore) Entrata fornitore senza fatturazione, costo = N Rientra merce precedentemente resa

Fase 2 — Copia acquisti (cogtrans → cogtrans2)

I movimenti di tipo A vengono copiati in un secondo file transito (cogtrans2), ciascuno con la propria quantita' e prezzo di acquisto.

Fase 3 — Decurto resi (tipo B)

Per ogni reso fornitore, risale tramite COGMOAG2 al movimento di origine e sottrae la quantita' dall'acquisto corrispondente in cogtrans2.

Fase 4 — Riaggiungo resi NF (tipo C)

Per ogni reso NF, risale al movimento originale di origine (doppio passaggio via COGMOAG2) e riaggiunge la quantita' sull'acquisto in cogtrans2.

Fase 5 — Assegno costo alle entrate

Per ogni movimento con segno E (entrata in commessa) e costo F (FIFO), scorre gli acquisti in ordine cronologico (FIFO) e assegna il costo prelevando dal carico piu' vecchio disponibile. Se la quantita' in entrata supera le disponibilita' degli acquisti (eccedenza), il costo viene determinato in base al criterio configurato:

Criterio Eccedenza valorizzata a
"A" Prezzo Ultimo Acquisto (PUA) tramite COGL61
"B" Prezzo Medio Acquisto (PMA) tramite COGL61

Fase 6 — Valorizzo le uscite (resi)

Per ogni movimento con segno U (uscita da commessa) e costo F, percorre in ordine inverso (dal piu' recente) il dettaglio FIFO gia' calcolato e assegna il costo ripercorrendo l'abbinamento.

Il risultato di ogni fase viene registrato in un terzo file transito (cogtrans3) che traccia l'abbinamento tra documento di utilizzo e documento di acquisto, con quantita' e costo unitario.

File transito FIFO

File Contenuto
cogtrans Movimenti classificati A/B/C dalla fase 1
cogtrans2 Acquisti con quantita' residua (aggiornato da fasi 2-4)
cogtrans3 Abbinamento scarico → carico con quantita' e costo unitario

Flusso di elaborazione COGG57

  1. Scorre le righe commessa (COGRIGCM) e seleziona solo record tipo "RR" (giornalieri)
  2. Salta righe con data <= data di consolidamento della commessa
  3. Salta righe gia' consolidate (dmr-fl-cons = "S")
  4. Per ogni riga giornaliera:
  5. Prezzo di vendita: cercato nel listino del cliente collegato alla commessa tramite COGS01
  6. Costo (dipende dalla classe merce):
    • Classe S (servizi/prestazioni): costo da tabella tecnici (COGUA3) in base a tecnico e data
    • Altre classi (materiali): prezzo ultimo acquisto tramite COGL61
  7. Flag maggiorazione ("M"): applica le percentuali della commessa — sco-1 sul prezzo di vendita, sco-2 sul costo
  8. Ricalcola valore vendita (prezzo * quantita') e valore FIFO (costo * quantita' * (1 + sco-2 / 100))
  9. Aggiorna la riga giornaliera (COGDMRIG)

Per i giornalieri derivanti da interventi assistenza: se esiste un costo manuale sulla riga intervento (acid2-costo-uni-man), questo viene usato al posto del costo calcolato da COGUA3.

Criterio FIFO completo ("Z")

Previsto in configurazione ma non ancora implementato. Se selezionato, il sistema mostra: "Modalita' di calcolo FIFO: COMPLETO non ancora disponibile." I campi "Data riferimento" e "Prodotto" sulla maschera di COGG58 sono utilizzabili solo con questo criterio.

Meccanismo di consolidamento

Il consolidamento congela i valori FIFO calcolati, impedendo modifiche ai movimenti precedenti alla data indicata.

Elemento Campo Descrizione
Data consolidamento tsc-data-cons Scritta sulla testata commessa. Movimenti con data <= questa vengono esclusi dal ricalcolo
Flag consolidato tsc-fl-cons Impostato a "S" quando la commessa e' chiusa (stato "C") e la data consolidamento >= data ultimo movimento

Le commesse con tsc-fl-cons = "S" vengono saltate automaticamente sia da COGG57 che da COGG58. Le singole righe giornaliere con dmr-fl-cons = "S" vengono saltate individualmente da COGG57.


Dettaglio tecnico: Parametri RNEWCONF modulo Commesse

I parametri sono gestiti tramite RNEWCONF nel gruppo "COMMESSE". Ogni programma legge i parametri che gli servono all'avvio.

Numerazione e codifica

Parametro Usato da Descrizione
TIPO-NUMERAZIONE-COMMESSE COGG52, COGX04, COGGA4 Modalita' di numerazione delle commesse. Se "C" = numerazione con contatore automatico
TIPO-NUMERAZIONE-SOTTOCOMMESSE COGG52, COGX04 Modalita' di numerazione delle sottocommesse
codifica-automatica COGG52 Abilita la codifica automatica del codice commessa
codifica-b-lunghezza COGG52 Lunghezza del codice per la codifica automatica

Valorizzazione costi e ricavi

Parametro Usato da Descrizione
CLASSE-RAGGR-CENTRI-COSTO COGUA0, COGGA4 Classe di raggruppamento per i centri di costo. Determina come vengono aggregati i movimenti nel report
FORZA-COSTO-MAT-INTERVENTO COGUA0, COGGA4 Se attivo, forza il costo dei materiali utilizzati negli interventi di assistenza
RICAVO-GIORNALIERI COGUA0 Se "S", i giornalieri generano anche un valore di ricavo (oltre al costo)
CRITERIO-FIFO-COMMESSA COGG58 Criterio per il ricalcolo FIFO: "A" (PUA per eccedenza), "B" (PMA per eccedenza), "Z" (completo, non implementato)

Chiusura cantiere

Parametro Usato da Descrizione
CLASSE-RESO-NF COGG4B Classe merci per le bolle di reso non fatturato in chiusura cantiere
CLASSE-RESO-FT COGG4B Classe merci per le bolle di reso fatturato in chiusura cantiere
CLASSE-CHIUSURA-NF COGG4B Classe merci per lo scarico del residuo non fatturato
CLASSE-CHIUSURA-FT COGG4B Classe merci per lo scarico del residuo fatturato

Impianti e operativita'

Parametro Usato da Descrizione
commessa-impianto COGG52, COGG4B, COGGA4 Abilita il collegamento tra commesse e impianti del modulo assistenza tecnica
CANTIERE-OBBLIGATORIO COGX04 Se attivo, il cantiere e' un campo obbligatorio nei giornalieri
tipo-commessa-default COGG52 Tipo commessa proposto automaticamente alla creazione di una nuova commessa
RICHIESTA-PREZZI-GIORNALIERI COGX04 Se attivo, richiede l'inserimento dei prezzi nelle righe dei giornalieri
tracciatura-flussi-finanziari COGG52 Abilita la tracciatura dei flussi finanziari sulla commessa
tipo-dossier-commessa COGG52 Tipo di dossier da collegare alla commessa (integrazione con modulo CRM)

Analisi e report

Parametro Usato da Descrizione
analisi-commessa-tab-riepilogo COGGA4 Configurazione delle tabelle di riepilogo nel report analisi commessa
COMMESSE-ANCHE-DA-PNO-CON COGGA4 Abilita l'analisi commessa anche dai preventivi e consuntivi

Flag delle causali bolle (COGTABEL tipo 15)

Le causali bolle per la movimentazione commessa sono gestite in COGV03 (Gestione Causali Bolla). I codici causale sono numerici a 2 cifre (campo euta-cod(1:2)) e dipendono dalla configurazione del singolo impianto. Di seguito le combinazioni tipiche di flag, raggruppate per operazione.

Legenda colonne flag (etichette visibili in COGV03):

  • Entrata/Uscita (fl-eu): direzione fisica del documento (Entrata/Uscita magazzino)
  • Segno x movim. commessa (com-segno): effetto su costi/ricavi commessa (Aumento/Diminuzione/Ignoro)
  • Giacenza commessa (com-gia): effetto su giacenza commessa (Aumento/Diminuzione/Ignoro)
  • com-costo: tipo costo (F=FIFO, V=valore documento, N=non cercare)
  • com-ricavo: tipo ricavo (V=valore documento, --=non applicabile)
  • con-fat: documento in fatturazione (SI/NO)

Causali di carico su commessa (Entrata commessa)

Descrizione Entrata/Uscita Segno commessa Giacenza commessa com-costo com-ricavo con-fat
Trasferimento a commessa Uscita Aumento Aumento F -- NO
Trasferimento a commessa (senza costo) Uscita Aumento Aumento N -- NO
Entrata diretta su commessa Entrata Aumento Aumento V -- NO
Entrata su commessa (solo valore) Uscita Aumento Ignoro F -- NO

Causali di scarico da commessa (Uscita commessa)

Descrizione Entrata/Uscita Segno commessa Giacenza commessa com-costo com-ricavo con-fat
Reso da commessa a magazzino Entrata Diminuzione Diminuzione F -- NO
Vendita da commessa Uscita Diminuzione Diminuzione F V SI
Reso da commessa (solo valore) Entrata Diminuzione Ignoro F -- NO

Causali di fatturazione

Descrizione Entrata/Uscita Segno commessa Giacenza commessa com-costo com-ricavo con-fat
Fattura da commessa Uscita Diminuzione Ignoro N V SI
Nota credito su commessa Entrata Aumento Ignoro N V SI

Causali per chiusura cantiere

Descrizione Entrata/Uscita Segno commessa Giacenza commessa com-costo com-ricavo con-fat
Chiusura cantiere (reso NF) Entrata Diminuzione Diminuzione F -- NO
Chiusura cantiere (reso FT) Entrata Diminuzione Diminuzione F V SI
Chiusura cantiere (scarico residuo NF) Uscita Aumento Aumento F -- NO
Chiusura cantiere (scarico residuo FT) Uscita Aumento Aumento F V SI

Causali per acquisti diretti su commessa

Descrizione Entrata/Uscita Segno commessa Giacenza commessa com-costo com-ricavo con-fat
Acquisto con costo da documento Entrata Ignoro Ignoro -- -- NO

Combinazioni segno/giacenza per lotti/SN

L'analisi commessa (COGGA4) per la tracciabilita' lotti e serial number accetta solo movimenti con combinazione concordante (vedi anche la logica di filtro causali nella sezione COGGA4):

Giacenza commessa Segno commessa Accettato Significato
Aumento (E) Aumento (E) Si Carico effettivo su commessa
Diminuzione (U) Diminuzione (U) Si Scarico effettivo da commessa
Aumento (E) Diminuzione (U) No Storno/rettifica
Diminuzione (U) Aumento (E) No Compensazione
Ignoro (I) * No Movimenti senza impatto fisico

Riepilogo per sotto-area

Sotto-area Programmi Righe %
Tabelle 8 16.491 21%
Funzioni documenti 8 17.331 22%
Import/Export 2 2.943 4%
Visualizzazioni 5 10.037 13%
Stampe 6 27.450 35%
Utilita' 3 4.131 5%