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:
- Tabelle (8) — anagrafica commesse, sottocommesse, cantieri, tecnici, tipi, budget
- Funzioni documenti (8) — giornalieri per commessa/data/tecnico, movimentazione, chiusura
- Import/Export (2) — scambio dati con Merlino
- Visualizzazioni (5) — giacenze, prestazioni, elenco commesse, fabbisogni
- Stampe (6) — anagrafica, portafoglio, situazione merce, analisi commessa, riepilogo
- 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:
- Posizionamento su griglia:
trs3-merce → t-gor-r-merce-cm, poist-t-grid-det-notmin-chia4(chiave alternata per merce sul file transito della griglia dettaglio) - Loop documenti (
a14-10-loop): legge sequenzialmente i documenti della merce - Filtro tipo: solo righe con
t-gor-r-prove-d = 'Documento magazzino' - Validazione causale: legge testata bolla (
rd-cogtesbo), poi tabella causali tipo 15 (rd-cogtabel). Accetta solo seeuta-cb-com-gia/segnosono entrambi "E" (entrata commessa) o "U" (uscita commessa) - Lettura riga magazzino: spacco documento in
w-mag-chiap, leggerd-cogmomag, verificamag-merce3 = trs3-merce - Scansione lotti della riga: start su
cogmovltper chiave riga, per ognimvl-merce = mag-merce3leggecogmerltper ottenere il codice lotto (mlt-lotto), poi accumula viaa141-lotto - Accumulo (
a141-lottoriga 8341): ricerca lineare inw-tab-lotti— se lotto gia' presente somma/sottrae qta, altrimenti inserisce in primo slot libero. Segno damvl-segno(E = +, U = -) - Formattazione (
a14-900): lotti conw-ele-lot-qta = 0saltati; concatena inw-tag-lotticon 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"): leggecogmatriper chiave 3 (entrata+merce), per ogni matricola chiamaa151-serial - Documento di Uscita: legge
cogmtuscper chiave 3 (bolla+merce), per ogni uscita recupera la matricola dacogmatri(mtu-mat → mtr-mat), poi chiamaa151-serial - Accumulo (
a151-serialriga 8538): come per lotti, ricerca lineare inw-tab-serial. Segno damag-entrusc("E" = +1, altro = -1) - Formattazione (
a15-900): SN conw-ele-sn-qta = 0saltati; concatena inw-tag-sncon formato "sn(30) + newline(2)", limite 1950 char
Stampa — a1-riga-standard-riep-m (riga 8567)¶
Prima dell'evaluate dei 25 tag, il paragrafo:
- Se
tm-tab-riep-m-lot = "S"→perform a14-riep-m-lot thru ex-a14 - 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 diw-tag-lotti(trim a destra), scrive via WORDMDL"SN": idem perw-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¶
-
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
-
Limite 200 elementi: sia
w-tab-lottichew-tab-serialhannooccurs 200. Oltre il 200esimo elemento, i dati vengono silenziosamente ignorati -
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
-
Saldo zero escluso: lotti/SN con quantita' netta = 0 non compaiono. Corretto per giacenza residua, ma potrebbe nascondere lotti/SN effettivamente movimentati
-
Logica selezione documenti duplicata:
a14-riep-m-lotea15-riep-m-snrieseguono indipendentemente la stessa scansione documenti e verifica causale. Possibile ottimizzazione futura: fattorizzare in un paragrafo comune -
Determinazione segno diversa: per i lotti usa
mvl-segno(E/U dal record movimento lotto), per i serial usamag-entrusc(E dal flag entrata/uscita della riga magazzino). In casi limite i due criteri potrebbero dare risultati diversi -
Variabile
xjnon 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) viacostanti-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=Eanziche' 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:
- Se
com-costo = 'F'(FIFO): - Prima usa
moa-costo-commessa(costo FIFO specifico commessa) → provenienza "C" - Se zero, usa
moa-val-fifo(costo FIFO generico) → provenienza "F" -
Se zero, cerca prezzo ultimo acquisto via COGL61 → provenienza "U"
-
Se
com-costo = 'V'(Valore documento): -
Usa prezzo e valore dalla riga magazzino (
mag-prezzo,mag-valore) → provenienza "V" -
Normalizzazione segno costo (per
com-costo <> 'N'): com-segno = 'I'→ costo azzeratocom-segno = 'E'→ costo positivo (forzato)-
com-segno = 'U'→ costo negativo (forzato) -
Se
com-costo = 'N'ocom-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¶
- Scorre le righe commessa (COGRIGCM) e seleziona solo record tipo "RR" (giornalieri)
- Salta righe con data <= data di consolidamento della commessa
- Salta righe gia' consolidate (
dmr-fl-cons = "S") - Per ogni riga giornaliera:
- Prezzo di vendita: cercato nel listino del cliente collegato alla commessa tramite COGS01
- 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
- Flag maggiorazione ("M"): applica le percentuali della commessa —
sco-1sul prezzo di vendita,sco-2sul costo - Ricalcola valore vendita (
prezzo * quantita') e valore FIFO (costo * quantita' * (1 + sco-2 / 100)) - 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% |