Vai al contenuto

Moduli servizio infrastrutturali (C1)

Panoramica

I moduli servizio sono sottoprogrammi (chiamati via CALL) che forniscono funzionalita' trasversali ai programmi applicativi. Non hanno interfaccia utente propria — ricevono parametri, eseguono l'operazione e restituiscono risultati.

Programma Righe Funzione Usato da
COGS25 692 Numerazione progressiva documenti COGG69HT, COGV33, COGM58, ...
COGU12 762 Aggiornamento saldi magazzino COGG69HT, COGM58, COGV38, ...
COGL61 453 Lettura prezzi acquisto/medio IMPMER, COGE31, COGV30, COGV33
COGS77 1.749 Servizio centrale partite aperte COGE40-45, COGB70, COGV38
COGP13A 3.866 Scarico componenti produzione COGP13, COGL01, COGL23
COGE51 5.666 Contabilizzazione singola fattura COGE50
COGU11 2.394 Cancellazione bolle/DDT COGV38
CANIVA 1.279 Cancellazione contabilita' e IVA COGV38
COGD53 1.204 Integrazione Modula COGS26, COGM58, COGV38

COGS25 — Numerazione progressiva

Identificazione

  • Programma: COGS25 (692 righe)
  • Autore: Andrea Parmeggiani - Eurosystem
  • Funzione: Attribuzione numerazione progressiva a documenti (bolle, fatture, prima nota, BdP, ecc.)

Interfaccia

CALL "COGS25" USING stringhe util-s25 util-s25b

Input (util-s25): | Parametro | Tipo | Descrizione | |-----------|------|-------------| | s25-i-mag | X(1) | Magazzino; blank = numerazioni contabilita' | | s25-i-cod | 9(2) | Codice numerazione (es. 3-50) | | s25-i-agg | X(1) | Flag aggiornamento: "N"=no, "F"=forza, ">"=forza se maggiore | | s25-i-data | 9(8) | Data registrazione | | s25-i-aa | 9(4) | Anno competenza | | s25-i-tip-doc | X(1) | Tipo documento IVA | | s25-qa-direct | X(1) | Operazione: "R"=Read, "W"=Write, spaces=standard |

Output: | Parametro | Tipo | Descrizione | |-----------|------|-------------| | s25-o-num | 9(12) | Numero progressivo assegnato |

Modalita' operative

Modalita' Trigger File Descrizione
Direct s25-qa-direct <> spaces COGNUMER Lettura/scrittura diretta record
Standard s25-i-mag = spaces COGNUMER tab 11/76/77 Numerazione contabile
Magazzino s25-i-mag significativo COGNUMER tab 12 Numerazione per magazzino/anno

Sotto-modalita' standard

  • Se cod=5 e az-num-pno="M" → numerazione mensile prima nota (tab 13) con boundary check
  • Se az-gio-num="S" + tipo doc → numerazione per registro IVA (tab 76)
  • Se az-gio-num="T" + tipo doc → numerazione IVA per tipo (tab 77)

File: COGNUMER (tabelle 11, 12, 13, 76, 77)


COGU12 — Aggiornamento saldi magazzino

Identificazione

  • Programma: COGU12 (762 righe)
  • Autore: Gianluca Tonti
  • Funzione: Aggiornamento centralizzato saldi magazzino (giacenza, impegnata, ordinata, prenotata)

Interfaccia

CALL "COGU12" USING stringhe util-u12

Input (util-u12): | Parametro | Tipo | Descrizione | |-----------|------|-------------| | u12-tipo | X(1) | Tipo: "I"=Impegnata, "G"=Giacenza, "O"=Ordinata, "P"=Prenotata | | u12-mag | X(1) | Magazzino | | u12-merce | X(7) | Chiave merce (GRU/SOT/COD) | | u12-entrusc | X(1) | Segno: "E"=entrata, "U"=uscita | | u12-qta-old | S9(09)V999 | Quantita' precedente | | u12-qta-new | S9(09)V999 | Quantita' nuova | | u12-causale | 9(2) | Codice causale movimento | | u12-fl-leggi-tes | X(1) | "O"=leggi TESOR, "B"=leggi TESBO |

Output: u12-esito ("S"=successo, "N"=errore)

Operazioni

Tipo Campo aggiornato Logica segno
"G" (Giacenza) msal-qta E: -old +new; U: +old -new
"I" (Impegnata) msal-qta-impegnata E: +old -new; U: -old +new
"O" (Ordinata) msal-qta-ordinata E: -old +new; U: +old -new
"P" (Prenotata) msal-qta-prenotata E: +old -new; U: -old +new

Pattern create-if-not-exists

Se COGSLMAG non contiene il record per mag+merce, lo crea automaticamente e poi aggiorna.

Funzionalita' aggiuntive

  • Imballi (se az-imballi="B"): aggiorna COGSLIMD con segno invertito
  • Logging (se tm-cfg-log-* configurato): scrive su COGLOG con dettaglio operazione
  • Warning prenotata negativa: segnala quando il prenotato passa a negativo

File: COGSLMAG (R/W), COGSLIMD (R/W), COGTABEL tipo 15 (R), COGLOG (W)


COGL61 — Lettura prezzi acquisto/medio

Identificazione

  • Programma: COGL61 (453 righe)
  • Autore: Gianluca Tonti
  • Funzione: Lookup prezzi per articolo: PMA (prezzo medio acquisto), PUA (ultimo acquisto), PMV (medio vendita)

Interfaccia

CALL "COGL61" USING stringhe util-cogl61

Input: | Parametro | Tipo | Descrizione | |-----------|------|-------------| | cogl61-merce | X(7) | Chiave merce | | cogl61-data | 9(8) | Data ricerca (0 = piu' recente) | | cogl61-data-precisa | X(1) | "S"=ricerca esatta, "N"=approssimata | | cogl61-in-prezacq/pma/pmv | X(1) | Flag "S" per ciascun prezzo richiesto | | cogl61-in-pre-ven | S9(15)V99 | Prezzo vendita (per calcolo % servizi) |

Output: cogl61-out-prezacq, cogl61-out-pma, cogl61-out-pmv con divise e date

Modalita'

Modalita' Trigger Logica
FIFO-fisso Merce servizio/non-giacenza + config % PMA = PreVen - (PreVen * % / 100)
Storico esatto cogl61-data-precisa="S" Read diretto COGPRMED per data
Storico approssimato Default Scan sequenziale COGPRMED dal piu' recente
Fallback Nessun storico trovato Prezzi da COGMERCI (anagrafica)

File: COGPRMED (R), COGMERCI (R), COGMERAP (R), COGRACMC (R)


COGS77 — Servizio centrale partite aperte

Identificazione

  • Programma: COGS77 (1.749 righe)
  • Autore: Eurosystem
  • Funzione: Gestore centralizzato ricerca, aggiornamento e calcolo partite aperte/chiuse

Interfaccia

CALL "COGS77" USING stringhe util-s77

Dispatcher su campo s77-fun:

Operazione Funzione Descrizione
R-PARTITA Ricerca per chiave Ricerca partita per identificativi univoci
R-VAL-DATA Ricerca per data+cliente Scadenzari ordinati per data
R-VAL-ANA Ricerca per cliente+data Partite ordinate per anagrafica
R-VAL-BAN Ricerca per banca Filtro RiBa per banca (ABI/CAB)
R-SOLO-SAL Calcolo saldo Saldo totale cliente/fornitore (per fido)
UPD-SOSP Aggiorna sospensione Flag sospensione su partita
UPD-PARTI Sincronizza con contabilita' Ricalcola saldo da movimenti, apri/chiudi partita
DEL-PADOC Cancella documenti Elimina riferimenti da COGPADOC

Logica UPD-PARTI (la piu' complessa)

1. Leggi COGPARTI
2. Accumula movimenti da COGMOVPA/COGOLDPA
3. Se nuovo record → crea, cerca banca per RiBa
4. Se saldo != 0 → partita APERTA (D=debitore, A=accreditore)
5. Se saldo = 0 → partita CHIUSA (skip se RiBa ritirata)
6. Rewrite COGPARTI

Gestioni speciali

  • Consorzi (az-consorzi="S"): calcolo interessi via CAPS53, restrizione per magazzino
  • Scadenzari RiBa: logica riapertura se chiusa dopo data scadenzario
  • Conversione Lire-Euro: per partite storiche
  • Buffer movimenti: max 600 per partita

Output: COGWPNO (archivio appoggio movimenti)

File: COGPARTI (R/W/D), COGMOVPA (R), COGOLDPA (R), COGGEANA (R), COGPADOC (R/D), NUTSRIBA (R)


COGP13A — Scarico componenti produzione

Identificazione

  • Programma: COGP13A (3.866 righe)
  • Autore: Andrea Parmeggiani - Eurosystem
  • Funzione: Motore centrale del ciclo produzione — gestione interattiva di scarico/avanzamento semilavorati

Interfaccia

CALL "COGP13A" USING stringhe util-p13a

Dispatcher su campo p13a-fun:

Codice Funzione Chiamante Descrizione
CL Creazione lavorazione COGP13 Operatore conferma QTA semilavorati, decide passaggio a mag. c/lavoro
SC Scarico successivo COGL23 Visualizza struttura, manda componenti su mag. c/lavoro
AV Avanzamento COGL01 Visualizza SL in produzione/avanzati, seleziona quali avanzare
MD Modifica (obsoleto) COGL24 Window popup modifica componenti

Flusso operativo

  1. Apertura file (~15 file tra cui TRBN-S16 catalogo struttura)
  2. Se p13a-file="$COGD51" → produzione automatica
  3. Visualizzazione gerarchica padre-figlio (concatenamento "───" / "│")
  4. Accettazione interattiva (F3=Conferma, F5=Varia QTA, F7=Parziale, F9=Disponibilita')
  5. Caricamento dati per modalita' (c631-load-cl / c632-load-sc)
  6. CALL COGW51 (motore lavorazioni standard) o COGW59 (lavoro esterno)

File transito

  • #$COGP13.{operatore}: transazione principale
  • #$BOGS16.{operatore}: catalogo struttura backup
  • TRBN-S16: catalogo struttura semilavorati (I-O)
  • COGTRANS2/3: transazioni prodotti/semilavorati

Chiamate: COGW51, COGW59, COGW65, COGW50, COGS22, COGS68, COGS17C, COGU12


COGE51 — Contabilizzazione singola fattura

Identificazione

  • Programma: COGE51 (5.666 righe)
  • Funzione: Motore contabile del ciclo attivo — riceve una fattura e genera tutti i movimenti contabili

Interfaccia

CALL "COGE51" USING stringhe wft-rec lk-area

Nessun dispatcher: esecuzione lineare — riceve UNA fattura (wft-rec) e la contabilizza completamente.

Flusso operativo

1. Lettura fattura + dati estesi (COGFATT2)
2. Determinazione divisa di conto (COGU10W)
3. Ricerca conti CoGe: spese, bolli, omaggi, C/C (COGTABEL tipo 16/18)
4. Validazione: duplicato IVA, piano conti, quadratura dare/avere
5. Determinazione scadenze pagamento (COGS09, max 36 rate)
6. Calcolo ritenuta d'acconto (se professionisti/competenza)
7. LOOP ELEMENTI (1-40):
   - Per ogni elemento: registrazione IVA (COGARIVA) + prima nota (COGPNONC) + C/C
   - Elemento 40 (totale): 1 movimento per OGNI scadenza di pagamento
8. Registrazione partite aperte (COGPARTI + COGMOVPA)
9. Aggiornamento COGFATTU (numero prima nota, cambio)
10. Post-processing: omaggi rivalsa, split payment PA, chiusura partite

Varianti di logica

Variante Condizione Effetto
Consorzi az-consorzi="S" Apertura capfattu, logica aggregativa
Nota accredito fat-segno(40)="A" IVA negativa, bollo negativo
Split payment PA w-ente-pub="S" + tm-cfg-sply="S" Reverse charge IVA
Competenza/Cassa az-tip-cmp='C' Ritenuta d'acconto

Pattern molti-a-molti

Ogni elemento puo' avere fino a 5 aliquote IVA. L'elemento 40 genera 1 riga per ciascuna delle 36 possibili scadenze. Una fattura tipica produce ~50-130 righe di prima nota.

File: ~40 file tra cui COGFATTU (R/W), COGARIVA (W), COGPNONC (W), COGPARTI (R/W), COGMOVPA (W)

Chiamate: COGU10W, COGS09, COGS77, COGUB1, CAPS61, RNEWCONF


COGU11 — Cancellazione bolle/DDT

Identificazione

  • Programma: COGU11 (2.394 righe)
  • Funzione: Cancellazione fisica di bolle con tutti i dettagli collegati (movimenti magazzino, BdP, cauzioni)

Interfaccia

CALL "COGU11" USING stringhe util-u11

Dispatcher su campo u11-ope:

Operazione Descrizione
cancella-tutto Cancella testata + TUTTI i dettagli
cancella-entrate Cancella legami su archivi collegati
cancella-mov-magaz Cancella movimenti magazzino (fl-01="N")
cancella-mov-mag01 Cancella movimenti magazzino (fl-01="S")
cancella-riga Cancella una singola riga di dettaglio

Caratteristiche

  • Supporta ricorsione (compilazione -Zr, struttura local-options OCCURS 10)
  • Salvataggio versione documento prima di cancellazione
  • Gestione cauzioni magazzino (tabella output 100 elementi)
  • Integrazione tablet: CALL WMSW01 per riapertura BdP

File: COGMOMAG (R/D), COGMOAGG (R/D), COGPCAUZ (R/W/D), COGTESBO (R), COGGENER (R/D), COGTESBP (R/D), COGRIGBP (R/D)


CANIVA — Cancellazione contabilita' e IVA

Identificazione

  • Programma: CANIVA (1.279 righe)
  • Funzione: Cancellazione fisica di documenti IVA con prima nota, ritenute, partitari e backup

Interfaccia

CALL "CANIVA" USING stringhe

Parametri passati via user-area in stringhe: ivaanno, ivatdo, niva, nivapro, del-logica, caller.

Modalita'

Modalita' Trigger Comportamento
COGV38/CAPV38 user-caller="COGV38"/"CAPV38" Elaborazione diretta (go to a410)
Standard Altro Interfaccia interattiva con maschere

Sequenza di cancellazione

1. COGRACCO → raccordi fattura-bolle (+ CAPFATTU/CAPRACCO)
2. COGRITAC → ritenute d'acconto
3. COGPNONC → prima nota (con backup su BOGPNONC)
4. COGMOVPA → movimenti partite (con backup su BOGMOVPA)
5. COGMOVCC → movimenti C/C (con backup su BOGMOVCC)

Backup automatico: copia record in file BOG* prima della cancellazione per audit trail


COGD53 — Integrazione Modula

Identificazione

  • Programma: COGD53 (1.204 righe)
  • Autore: Gianluca Tonti
  • Funzione: Creazione liste di prelievo/carico per sistema di magazzino automatico Modula

Interfaccia

CALL "COGD53" USING stringhe util-d53

Operazioni (dispatcher IF sequenziali su d53-ope)

Operazione Descrizione
DOC-PRECEDENTE Aggiunge documento precedente al file transito
DOC-ATTUALE Aggiunge documento attuale (post-modifica) al file transito
DOC-ESEGUI Elabora file transito e genera liste Modula (max 2: Uscite + Entrate)
(default) Legge documento corrente e permette selezione movimenti

Variante DB-Frontiera (COGD53DF)

Se tm-cfg-modula-db-frontiera="S" → delega a COGD53DF (stessa interfaccia).

COGD53DF opera direttamente sulle tabelle del DB frontiera anziche' generare file .imp.

Abilitazione automatica articoli (versamento da menu')

Problema: normalmente un articolo deve essere preventivamente abilitato a Modula (flag mer-modula = "S") tramite COGD50 prima di poterlo versare. Questo obbliga l'operatore a un passaggio separato di configurazione, che rallenta il flusso operativo quando arrivano articoli nuovi o non ancora predisposti.

Soluzione: in modalita' versamento da menu' (tm-operaz = "V", w-dc-called <> "S"), COGD53DF abilita automaticamente gli articoli mancanti al momento del versamento. L'operatore puo' cosi' versare qualsiasi articolo senza doverlo prima abilitare manualmente — l'abilitazione, l'esportazione verso Modula e la verifica di acquisizione avvengono in un unico passaggio guidato.

Fase acquisizione righe: gli articoli con mer-modula <> "S" vengono accettati senza segnalazione (il controllo standard "Articolo Non Gestito con Modula" viene saltato).

Fase pre-aggiornamento (paragrafo b-aggiorna): prima dell'aggiornamento vero e proprio, viene eseguito un ciclo su tutte le righe del documento. Per ogni articolo con mer-modula <> "S":

  1. Conferma operatore — messaggio con codice avanzato dell'articolo (da COGRACMC); se l'utente rifiuta, il versamento per quell'articolo viene annullato e l'intera operazione si interrompe
  2. Abilitazione — imposta mer-modula = "S" e riscrive COGMERCI
  3. Esportazione — chiama DFNM01 per esportare l'anagrafica articolo sul DB frontiera
  4. Attesa acquisizione — ciclo di polling sulla tabella IMPARTICOLI: quando il record scompare, significa che Modula ha acquisito l'articolo. Dialog con timer di 2 secondi; l'utente puo' interrompere l'attesa con ESC

L'operazione e' bloccante: se l'utente interrompe l'attesa per un articolo, l'intero versamento viene annullato — questo garantisce che tutti gli articoli del documento siano effettivamente presenti su Modula prima di procedere.

Generazione file

  • Nome: lista{YYYYMMDD}{HHMMSS}.tmp → rinominato in .imp
  • Percorso configurabile via RNEWCONF (path-interscambio-da)
  • Supporto thin-client (tmp-dir separata)
  • Due passate: prima Uscite ("U"), poi Entrate ("E")

File: COGTRANS4 (R/W/D - transito), FILSEQ (W - lista output), LOGFILE (W)


Relazioni tra moduli

                    ┌─────────────────────────────────┐
                    │  Programmi applicativi           │
                    │  (COGV50W, COGM58, COGV38, ...)  │
                    └───────┬─────────┬───────┬────────┘
                            │         │       │
              ┌─────────────┼─────────┼───────┼─────────────┐
              ▼             ▼         ▼       ▼             ▼
         ┌─────────┐  ┌─────────┐ ┌──────┐ ┌──────┐  ┌─────────┐
         │ COGS25  │  │ COGU12  │ │COGL61│ │COGS77│  │ COGD53  │
         │ Numera- │  │ Saldi   │ │Prezzi│ │Parti-│  │ Modula  │
         │ zione   │  │ magaz.  │ │acqui.│ │te ap.│  │ integr. │
         └─────────┘  └─────────┘ └──────┘ └──────┘  └─────────┘
              ▲                                            │
              │         ┌──────────────────────────┐       │
              │         │  Motori di elaborazione   │       │
              │         ├──────────┬───────────────┤       │
              └─────────┤ COGP13A  │    COGE51     │       │
                        │ Scarico  │ Contabilizz.  │       │
                        │ produz.  │   fattura     │       │
                        └──────────┴───────────────┘       │
                                                           │
                        ┌──────────────────────────┐       │
                        │  Servizi cancellazione    │       │
                        ├──────────┬───────────────┤       │
                        │ COGU11   │    CANIVA     ├───────┘
                        │ Bolle    │ Contab./IVA   │
                        └──────────┴───────────────┘