Ciclo Attivo — Ordini, DDT, Fatturazione (B1)¶
Panoramica¶
Il ciclo attivo copre il flusso completo dalla richiesta d'acquisto/ordine fino alla contabilizzazione della fattura. I 4 programmi principali analizzati totalizzano ~40.500 righe COBOL (di cui 32.547 solo per COGV50W).
COGO00 (Richieste d'acquisto) → Creazione ordini (COGTESOR)
↓
COGV50W (Inserimento DDT/bolle uscita) → Evasione ordini → Documento di trasporto
↓
COGV63 (Stampa fatture) → Selezione fatture → COGP41 (stampa effettiva)
↓
COGE50 (Contabilizzazione) → COGE51 (scritture contabili) → Prima nota
1. COGO00 — Gestione Richieste di Acquisto¶
Identificazione¶
- Programma: COGO00
- Area: Magazzino / Ordini (con gestione gruppo aziende)
- Descrizione: Gestione/visualizzazione richieste di acquisto (RdA)
- Righe: 4.354 (+ ~9.000 righe di copybook cogo00.prc generato da Screens)
- Framework: Screens 2.13.1
Funzionalita' principale¶
COGO00 gestisce le Richieste di Acquisto (RdA) in contesto multi-azienda (gruppo aziende). Presenta una griglia filtrata per data/azienda/fornitore, permette l'editing delle quantita' e la creazione automatica di ordini (COGTESOR + COGRIGOR) dalle righe selezionate.
Prerequisito: richiede gestione-gruppo-aziende = "S" in RNEWCONF.
Flusso operativo¶
- Inizializzazione: verifica permessi, apre file, carica configurazione RNEWCONF (7 parametri)
- Filtri utente:
- Intervallo date (tm-data-da / tm-data-a)
- Flag "In corso" e/o "Completate"
- Filtro opzionale per azienda richiedente e fornitore
- Caricamento griglia: legge COGRDACQ filtrato → popola file transito (T-GRID-DET)
- Controlla autorizzazione operatore via COGS0B
- Editing griglia: l'utente puo':
- Modificare quantita' e date (→ rewrite COGRDACQ)
- Cancellare righe (
rda-fl-canc = "C") - Selezionare righe per creazione ordini
- Creazione ordini (S-F7):
- Raggruppa le righe selezionate per fornitore/azienda/magazzino
- Per ogni gruppo:
- Genera numero ordine progressivo via COGS25
- Crea testata ordine (COGTESOR) con tipo "C" (cliente) o "F" (fornitore)
- Per ogni riga: crea dettaglio (COGRIGOR), cerca prezzo via COGS01, aggiorna magazzino via COGU12
- Crea consegne automatiche via COGO16C
Determinazione tipo ordine¶
Se fornitore RdA corrisponde a un'azienda del gruppo:
→ Ordine tipo "C" (ordine cliente — infragruppo)
Altrimenti:
→ Ordine tipo "F" (ordine a fornitore esterno)
Causali magazzino (configurabili via RNEWCONF)¶
| Configurazione | Gruppo | Chiave | Uso |
|---|---|---|---|
| Consumo MP | grp-azi | rda-cau-cons-mp | Ordini verso magazzino principale |
| Consumo MS | grp-azi | rda-cau-cons-ms | Ordini verso magazzino secondario |
| Vendita MP | grp-azi | rda-cau-vend-mp | Ordini cliente (infragruppo) MP |
| Vendita MS | grp-azi | rda-cau-vend-ms | Ordini cliente (infragruppo) MS |
| Acquisto MP | grp-azi | rda-cau-acq-mp | Ordini a fornitori |
File principali¶
| File | Prefisso | Operazioni | Descrizione |
|---|---|---|---|
| COGRDACQ | rda- | Read/Rewrite | Richieste di acquisto (sorgente) |
| COGTESOR | tor- | Write | Testate ordini (destinazione) |
| COGRIGOR | ror- | Write | Righe ordini |
| COGTORAG | tar- | Write | Supplemento testata (trasporto) |
| COGRORAG | rar- | Write | Supplemento riga (riordino) |
| COGRORA2 | ra2- | Write | Importi calcolati riga |
| COGMERCI | mer- | Read | Anagrafica merci |
| COGGEANA | ana- | Read | Anagrafica clienti/fornitori |
| COGAZGRP | azg- | Read | Gruppo aziende |
Catena di chiamata¶
| Programma | Funzione |
|---|---|
| COGS25 | Numerazione ordini |
| COGS01 / COGS01F | Lookup prezzi di acquisto |
| COGU12 | Aggiornamento saldi magazzino (quantita' ordinata) |
| COGU09 | Verifica disponibilita' magazzino |
| COGO16C / COGO16F | Creazione consegne automatiche |
| COGS0B | Autorizzazione operatore per gruppo aziende |
| GRP002 | Gestione gruppo aziende |
| GRIDADMN | Gestione griglia |
| COGU10 | Formattazione valuta |
| RNEWCONF | Lettura configurazione |
2. COGV50W — Inserimento DDT / Bolle Uscita¶
Identificazione¶
- Programma: COGV50 (wrapper) → COGV50W (versione grafica)
- Area: Magazzino > Uscite / Vendite > Bolle
- Descrizione: Inserimento DDT uscita (Documento di Trasporto)
- Righe: 32.547 (il programma piu' grande del gestionale)
- Framework: Screens 2.13.2
- Variante classica: COGV50C (15.255 righe) — selezionata da RNEWCONF
versione-programmi-ddt
Funzionalita' principale¶
COGV50W e' il programma centrale per la creazione e gestione dei DDT (bolle di uscita). Gestisce testata documento, righe merce con calcolo prezzi, movimentazione magazzino, evasione ordini e integrazione con fatturazione.
Architettura¶
- Form a 4 schede (pagine tab) per l'interfaccia utente
- ~200+ paragrafi nella PROCEDURE DIVISION
- ~80 file di database
- ~75 integrazioni con programmi esterni
- 92 parametri RNEWCONF
Flusso operativo (sintesi)¶
- Creazione testata (righe ~14.914+):
- Numerazione automatica o manuale via COGS25
- Selezione magazzino (con split per-riga)
- Separazione merci deperibili (Art. 62)
- Dati cliente, trasporto, vettore, destinazione
- Inserimento righe (righe ~16.698+):
- Movimentazione magazzino via COGM96 (impegno/accettazione)
- Calcolo prezzo con 2 livelli di sconto
- Gestione IVA (incluso reverse charge)
- Supporto unita' alternative, lotti, agenti
- Tracking numeri seriali/matricole
- Evasione ordini (righe ~16.578+):
- Collegamento automatico a ordini di vendita (COGTESOR)
- Tracking consegne parziali
- Chiusura ordine (COGU09) quando completamente evaso
- Cancellazione (righe ~9.366+):
- 12+ controlli di validazione pre-cancellazione
- Storno contabile via COGD92
- Rilascio giacenza via COGM96
- Ripristino stato ordine
File chiave¶
| File | Prefisso | Descrizione |
|---|---|---|
| COGTESBO | tes- | Testata bolle (documento principale) |
| COGMOMAG | mom- | Movimenti di magazzino (righe) |
| COGMOAG / COGMOAG2 / COGMOAG3 | moa- | Dettagli aggiuntivi righe |
| COGTESOR | tor- | Testate ordini (per evasione) |
| COGMERCI | mer- | Anagrafica merci |
| COGGEANA | ana- | Anagrafica clienti/fornitori |
| COGTABEL | euta- | Tabelle configurazione |
Lookup COGTABEL chiave¶
| Tipo | Funzione |
|---|---|
| 23 | Gruppi sconto |
| 54 | Imballi/unita' |
| 67 | Tabelle sconto |
| 73 | Esenzioni IVA |
| 89 | Reverse charge IVA |
Funzionalita' speciali¶
- Multi-magazzino con allocazione per-riga
- Separazione merci deperibili (Art. 62 D.L. 1/2012)
- Prezzi IVA inclusa per clienti privati
- Tracking lotti e numeri seriali
- Provvigioni agenti con calcolo commissione
- Export Excel della griglia
Caricamento automatico S/N da BdP di origine (2026-05-22)¶
Quando un DDT viene generato a partire da un Buono di Prelievo (trs2-bdp-num <> zero), e la merce e' matricolata (mer-fl-sn = "T") e la configurazione tm-cfg-movimentazione-sn = "S", COGV50W carica automaticamente in griglia i serial number gia' raccordati al BdP origine senza richiedere all'operatore di reinserirli.
Flusso (paragrafo carica-sn-da-bdp-merce, chiamato da f2-10-loop durante il caricamento riga da TRAN2)
Per ogni riga del BdP viene effettuata una doppia scansione di COGGENER per i tipi CM (matricola collegata) e CS (serial in chiaro non riconciliato), filtrando per chiave testata del BdP origine (gnr-parte-1 = trs2-bdp-chia1) e per merce (gnr-cm-merce = w-sn-in-merce).
Per ogni legame CM:
1. Risoluzione S/N reale: lettura COGMATRI tramite mtr-mat = gnr-parte-2 (1:12). Se la matricola non esiste, il S/N viene scartato con log critico-cliente.
2. Lookup ubicazione: chiamata COGU07 cerca-sn-link con u07-sn-padre = mtr-sn.
3. Validazione ubicazione: estratto in nuovo paragrafo valida-ubicazione-sn, riusato anche dal flusso manuale a-tm-sn-uscita. Verifica coerenza magazzino principale/secondario in base a tm-cb-ms-segno e modalita' magazzino (riga/testata via tm-cfg-gestione-mpu-riga). Se incoerente, S/N scartato con log critico-cliente.
4. Check duplicato in transito: lettura T-SN per mtr-sn; se gia' presente esce senza errore (idempotenza su ri-caricamenti).
5. Scrittura T-SN: inizializza il record di transito S/N e chiama z-aggiungi-sn-a-griglia (riuso del flusso esistente di aggiunta riga in griglia). Se x-f3-ok-parziale = "N", scarta con log critico-cliente.
6. Contatore w-sn-out-trovati-cm incrementato.
Per ogni legame CS (serial in chiaro non riconciliato a matricola), viene solo emesso un warning "S/N {sn} presente sul bdp ma non esistente, non incluso" e incrementato w-sn-out-trovati-cs. Il S/N non viene caricato in griglia perche' privo di anagrafica matricola.
Variabili working storage nuove
- Gruppo
w-sn-input(input al paragrafo):w-sn-in-bdp-chia1(chiave testata BdP origine),w-sn-in-merce,w-sn-in-riga-grid. - Gruppo
w-sn-output(contatori):w-sn-out-trovati-cm,w-sn-out-trovati-cs,w-sn-out-scartati. w-ubicazione-sn-okPIC X(01) — output divalida-ubicazione-sn, sostituisce igo to a-tm-sn-uscitaprecedentemente in linea.w-gnr-tipPIC X(02) — tipo legame in elaborazione (CM/CS), evita duplicazione del blocco di scansione COGGENER.
Refactor valida-ubicazione-sn
Il blocco di validazione magazzino (uscita da secondario vs principale, magazzino su riga vs testata) era duplicato in linea nel flusso manuale di inserimento S/N. E' stato estratto in un paragrafo autocontenuto che restituisce w-ubicazione-sn-ok = "S"/"N". Il flusso manuale ora chiama perform valida-ubicazione-sn e poi if w-ubicazione-sn-ok = "N" go to a-tm-sn-uscita. Comportamento invariato per il caso manuale.
Origine dati S/N nei legami COGGENER
I legami CM su BdP sono prodotti da SWN139 (import BDPC da Areagate, sezione "Import Serial Number su BDPC") e dalla creazione manuale BdP in COGSA0. I legami CS sono prodotti dallo stesso flusso quando il S/N trasmesso non risulta in anagrafica matricole (fallback). Il nuovo flusso di COGV50W propaga questi legami sul DDT mantenendo coerenza fra BdP e bolla di uscita.
Descrizioni doganali automatiche (clienti extracomunitari)¶
Per i clienti extracomunitari, COGV50W aggiunge automaticamente descrizioni aggiuntive (COGDESAG) su ogni riga merce del DDT, con le informazioni doganali richieste dall'esportazione.
Condizioni di attivazione (riga 17299):
w-fl-ic = "E"— cliente classificato come esportatore (determinato via COGU02)w-ana-st-cod <> "RSM"— non San Marinomer-classe = "M"— solo merci (non servizi/prestazioni)tm-cfg-des-extracom = "S"— configurazione RNEWCONF abilitata
Riga 1: HS Code e Origine (c-crea-des-extracom-1, riga 17986):
HS CODE: XXXX.XX.XX ORIGIN: YYY
mer-nom-doganada COGMERCI — nomenclatura doganale (8 cifre, formattata con punti)ma3-made-inda COGMERA3 — paese di fabbricazione/origine
Riga 2: Valore di origine (c-crea-des-extracom-2, riga 17998):
VOC: 99999.99
- Calcolato come
mer-coe-lav * mag-qtamagaz(coefficiente lavorazione x quantita') - Generata solo per clienti svizzeri (
w-ana-st-cod = "CH") — modifica 01/07/25 richiesta da BM Solution
Logica anti-duplicazione (righe 17260-17288): prima di aggiungere le note, il programma scorre le descrizioni aggiuntive esistenti (TRAN-S47) e verifica se iniziano con "HS CODE:" o "VOC:". Se gia' presenti le riscrive con dati aggiornati; se assenti le aggiunge in coda.
Comportamento in inserimento e modifica: il blocco descrizioni e' all'interno di c-inserimento-riga (riga 16698), che viene eseguita sia all'inserimento di nuove righe sia alla variazione di righe esistenti. In fase di aggiornamento (UPDATE), c-aggiornamento-righe (riga 15437) esegue una cancellazione+reinserimento per ogni riga modificata (tm-fl-riga-mod = "S", righe 15522-15524). Le descrizioni aggiuntive vengono prima cancellate tutte (riga 17243-17254, aggiunto 16/01/2015) e poi rigenerate. Poiche' mer-nom-dogana (COGMERCI) e ma3-made-in (COGMERA3) sono letti in tempo reale dentro c-inserimento-riga (riga 17296-17306), se l'operatore ha nel frattempo compilato i dati doganali mancanti sull'anagrafica merce le descrizioni verranno generate correttamente al successivo salvataggio — a condizione che la riga del DDT risulti modificata.
3. COGV63 — Stampa/Ristampa Fatture¶
Identificazione¶
- Programma: COGV63
- Autore: Andrea Parmeggiani - Eurosystem
- Area: Magazzino > Uscite > Fatture / Vendite > Fatturazione
- Descrizione: Ristampa fatture e note di accredito
- Righe: 2.034
- Menu: 13 voci diverse (il programma piu' riusato nel menu)
Funzionalita' principale¶
COGV63 e' un selettore di fatture che raccoglie i parametri dall'utente e poi delega la stampa vera e propria a COGP41. Supporta diversi tipi documento e gestisce anche l'export DDT allegati in PDF.
Tipi documento supportati¶
| Parametro | Tipo | Descrizione |
|---|---|---|
| "N" | Nota di accredito | Note credito clienti |
| "I" | Fattura accompagnatoria | Fattura con DDT integrato |
| "R" | Ricevuta fiscale | Ricevuta (incluso scontrino telematico) |
| "F" / "T" | Fattura riepilogativa | Fattura standard |
| "CO" | Corrispettivi | Con gestione scontrino telematico |
Flusso operativo¶
- Caricamento tipi documento: dal setup azienda (az-tipo-*) e opzionalmente da COGBABEL (tipi per causale)
- Acquisizione parametri:
- Tipo documento (con dropdown)
- Anno e numero fattura iniziale (con navigazione F5/F6/F9/F10)
- Anno e numero fattura finale
- Numero copie
- Flag allegato DDT
- Validazione: verifica esistenza in COGRACCO, controlla data per scontrini telematici
- Stampa:
CALL "COGP41"con parametri fattura - Export DDT allegati (opzionale):
- Per ogni DDT collegato via COGRACCO → COGV52 (PCL) → SVIEW (PDF)
- Copia in cartella
tm-cfg-path-allegati-fattura
Navigazione fatture¶
| Tasto | Funzione |
|---|---|
| F5 | Fattura precedente |
| F6 | Fattura successiva |
| F9 | Prima fattura dell'anno |
| F10 | Ultima fattura dell'anno |
Gestione scontrini telematici¶
Se tipo = "CO" e data >= data attivazione scontrino telematico:
- F5: crea scontrino telematico (→
coga5e2kocoga5sid) - F7: stampa documento commerciale (→ COGP41)
- Tipo registratore: "E" (elettronico) o "S" (Signature ID)
Catena di chiamata¶
| Programma | Funzione |
|---|---|
| COGP41 | Stampa fatture (programma di stampa effettivo) |
| COGV52 | Archiviazione DDT (genera PCL) |
| SVIEW | Conversione PCL → PDF |
| COPIAF | Operazioni file (copia/cancella/shell) |
| WIN067 | Dialog lookup tipo documento |
| RNEWCONF | Configurazione stampa (~30 chiavi) |
| DIALOGS | Dialog scontrino telematico |
| coga5e2k | Invio scontrino telematico (registratore elettronico) |
| coga5sid | Invio scontrino telematico (Signature ID) |
Configurazioni RNEWCONF¶
| Gruppo | Chiavi principali | Funzione |
|---|---|---|
| FATTBATCH | euta-c055-tip-fat | Tipo fattura batch |
| PRNTSTFATT | euta-c021-* (22 chiavi) | Config stampante (emulazione, copie, offset) |
| STAMPAFAT | modo-stampa | Modalita' stampa |
| contabil | data-attivazione-scontrino-telematico | Data attivazione telematico |
| contabil | collegamento-registratore-fiscale | Flag registratore |
| contabil | tipo-registratore-fiscale | Tipo (E/S) |
| contabil | path-allegati-fattura | Percorso export PDF |
4. COGE50 — Contabilizzazione Fatture¶
Identificazione¶
- Programma: COGE50
- Area: Contabilita' > Fatturazione / Vendite > Fatturazione
- Descrizione: Aggiornamento contabilita' da fatture
- Righe: 1.527
Funzionalita' principale¶
COGE50 registra le fatture in prima nota: per ogni fattura nel range selezionato, chiama COGE51 che esegue le scritture contabili effettive (dare/avere su piano dei conti), poi presenta un prospetto di controllo con i conti movimentati.
Flusso operativo¶
- Configurazione: carica 20 conti contabili da RNEWCONF (gruppo FATTCARICA):
- Conti spese e bolli (CO/GE, C/C, terzi)
- Conto incassi, omaggi, studio professionale
- Conti ricariche (intra/extra comunitarie)
- Validazione conti: verifica esistenza in COGTABEL tipo 16/18 → risolve mastro/conto/sottoconto
- Acquisizione parametri:
- Tipo documento (fattura/nota credito)
- Anno fiscale
- Range numeri fattura (auto-proposto: dalla prima non contabilizzata all'ultima)
- Ciclo contabilizzazione (ela-00):
- Per ogni fattura nel range:
CALL "COGE51"→ scritture contabili in prima notarwr-cogfattu→ marca fattura come contabilizzata (fat-num-pno ≠ 0)- Se gestione incassi attiva:
CALL "COGJ15"per tracking incassi - Accumula importi per conto in array
tabrie(fino a 1.500 conti)
- Prospetto di controllo (ela-50):
- Intestazione: range fatture, divisa
- Dettaglio: conto | descrizione | dare | avere
- Totale: verifica quadratura dare = avere
- Aggiornamento azienda: scrive ultimo numero contabilizzato
Auto-proposta range fatture¶
Numero iniziale:
Cerca all'indietro da 9999999 l'ultima fattura con fat-num-pno ≠ 0
→ Propone la successiva
Numero finale:
Cerca all'indietro da 9999999 l'ultima fattura con fat-num-pno = 0
→ Propone quella come fine range
Conti contabili configurati (RNEWCONF gruppo FATTCARICA)¶
| Chiave | Tipo COGTABEL | Descrizione |
|---|---|---|
| cg-spese | 16 | Conto CO/GE spese |
| cg-bolli | 16 | Conto CO/GE bolli |
| cc-spese | 18 | Conto C/C spese bancarie |
| cc-bolli | 18 | Conto C/C bolli bancari |
| to-spese | - | Conto terzi spese |
| to-bolli | - | Conto terzi bolli |
| c-incas | - | Flag gestione incassi (S/N) |
| cc-incas | - | Conto incassi |
| cg-omaggio | - | Conto omaggi CO/GE |
| perc-stu | - | Percentuale studio |
| ric-sta | - | Stato ricarica |
| c-r-ita / c-r-int / c-r-ext | - | Conti ricarica Italia/intra/extra CE |
File principali¶
| File | Prefisso | Operazioni | Descrizione |
|---|---|---|---|
| COGFATTU | fat- | Read/Rewrite | Testate fatture (sorgente) |
| COGPNONC | pno- | Read | Prima nota non contabilizzata |
| COGPNCON | pco- | Read | Piano dei conti |
| COGARIVA | iva- | Read | Archivio IVA |
| COGAZIEN | az- | Read/Rewrite | Record azienda (ultimo nr contabilizzato) |
| FLSTA | - | Write (seq) | Output stampa prospetto |
Catena di chiamata¶
| Programma | Funzione |
|---|---|
| COGE51 | Contabilizzazione singola fattura (logica core) |
| COGJ15 | Gestione incassi (opzionale) |
| COGS54 | Gestione spool stampante |
| COGU10W | Formattazione importi (4 chiamate) |
| WIN067 | Dialog lookup tipo documento |
| RNEWCONF | Lettura configurazione |
5. Tabella riepilogativa¶
| Programma | Righe | Funzione | Input | Output |
|---|---|---|---|---|
| COGO00 | 4.354 | Gestione RdA → creazione ordini | COGRDACQ | COGTESOR, COGRIGOR |
| COGV50W | 32.547 | Inserimento DDT / bolle uscita | COGTESOR, COGMERCI | COGTESBO, COGMOMAG |
| COGV63 | 2.034 | Selezione e stampa fatture | COGFATTU, COGRACCO | Stampa via COGP41, PDF |
| COGE50 | 1.527 | Contabilizzazione fatture | COGFATTU | COGPNONC (via COGE51) |
6. File del ciclo attivo¶
| File | Prefisso | Descrizione |
|---|---|---|
| COGRDACQ | rda- | Richieste di acquisto |
| COGTESOR | tor- | Testate ordini |
| COGRIGOR | ror- | Righe ordini |
| COGTORAG | tar- | Supplemento testata ordine (trasporto) |
| COGRORAG | rar- | Supplemento riga ordine |
| COGRORA2 | ra2- | Importi calcolati riga ordine |
| COGTESBO | tes- | Testate bolle/DDT |
| COGMOMAG | mom- | Movimenti di magazzino |
| COGMOAG | moa- | Dettagli movimenti (livello 1) |
| COGMOAG2 | - | Dettagli movimenti (livello 2) |
| COGMOAG3 | - | Dettagli movimenti (livello 3) |
| COGFATTU | fat- | Testate fatture |
| COGRACCO | rac- | Raccordo fatture-bolle |
7. Note tecniche¶
Pattern wrapper¶
COGV50 usa il pattern wrapper con selezione versione via RNEWCONF:
ncnf-gruppo = "uscite"
ncnf-chiave = "versione-programmi-ddt"
Se valore = "GRAFICA" → CALL "COGV50W"
Altrimenti → CALL "COGV50C"
Questo pattern permette di passare dalla versione classica a quella grafica senza modificare il menu.
Dimensione COGV50W¶
Con 32.547 righe, COGV50W e' il programma piu' grande dell'intero gestionale. Questo riflette la complessita' del processo DDT:
- Gestione multi-magazzino
- Calcolo prezzi con sconti a cascata
- Evasione ordini con consegne parziali
- Movimentazione magazzino in tempo reale
- Integrazione fatturazione
- Gestione lotti, matricole, agenti
- 92 parametri RNEWCONF
Flusso contabile¶
COGV63 (stampa) → COGP41 (stampa effettiva)
↓
COGE50 (contabilizzazione) → COGE51 (scritture per singola fattura)
↓
COGPNONC (prima nota non contabilizzata)
↓
COGE79 (contabilizzazione PN → COGCOATT)
Sottoprogrammi chiave non ancora documentati¶
| Programma | Funzione | Richiamato da |
|---|---|---|
| COGP41 | Stampa fatture effettiva | COGV63 |
| COGE51 | Contabilizzazione singola fattura | COGE50 |
| COGM96 | Movimentazione magazzino (impegno/accettazione) | COGV50W |
| COGD92 | Storno contabile | COGV50W (cancellazione) |
| COGO16C | Creazione consegne automatiche | COGO00 |
| COGJ15 | Gestione incassi | COGE50 |