Vai al contenuto

DFNM03 - Sincronizzazione DB frontiera Modula (EXPORDTES)

Descrizione

DFNM03 e' un programma batch (non a menu) che gestisce la sincronizzazione dello stato delle liste di prelievo Modula dalla frontiera (tabella EXPORDTES) verso le tabelle gestionali (COGMDTES, COGMDRIG).

Il programma viene lanciato tramite AGLANCIO (framework di schedulazione batch) e opera in modo ciclico: legge tutte le righe di EXPORDTES non ancora processate, aggiorna lo stato della lista in COGMDTES e le quantita' evase nelle righe COGMDRIG.

Supporta due modalita' di gestione lotti:

  • Lotti pre-assegnati (mdt-fl-fonte = "D"): i lotti sono decisi dal gestionale, Modula evade le quantita' richieste. Le righe COGMDRIG vengono aggiornate direttamente.
  • Scelta lotti delegata a Modula (mdt-fl-fonte = "S"): i lotti vengono scelti da Modula. Le righe originali di COGMDRIG diventano placeholder (mdr-fl-fonte = "P"), e le righe effettive vengono importate dalla tabella EXPORDSTO con mdr-fl-fonte = "S".

Tabelle e file utilizzati

Tabelle SQL (da dfnm03.select)

Tabella Descrizione Accesso
EXPORDTES Testata ordini export Modula (frontiera) Lettura (cursore SQL)
EXPORDDET Dettaglio righe ordini export (frontiera) Lettura (cursore SQL)
EXPORDSTO Dettaglio storage/lotti da Modula (frontiera) Lettura (cursore SQL)
COGMDTES Testata liste Modula (gestionale) Lettura/Riscrittura
COGMDRIG Righe liste Modula (gestionale) Lettura/Riscrittura/Scrittura/Cancellazione
COGMERCI Anagrafica merci Lettura (mer-lotti)
COGRACMC Raccordo merce-codice avanzamento Lettura (verifica gestione lotti)

Tabelle di servizio

Tabella Descrizione
ARPSTPRC Stato processo (log sincronizzazione)
DFSEMAFORO Semaforo concorrenza processi
FEURTAB File tabelle generali

Flusso di controllo

Paragrafi principali

Paragrafo Funzione
apri Inizializzazione: apertura file, connessione SQL, lettura configurazioni, apertura tabelle DB
c-importazione Loop principale: cursore su EXPORDTES, per ogni riga chiama c1-aggiorna
c1-aggiorna Aggiornamento singola lista: legge COGMDTES, aggiorna stato, chiama refresh righe
c0-pre-scan-fonte Pre-scan EXPORDDET: determina mdt-fl-fonte ("D" o "S")
c0a-check-mer-lotti Verifica se una merce e' gestita a lotti (legge COGRACMC + COGMERCI)
c1a-refresh-qta-righe Aggiorna quantita' evase su COGMDRIG (branching su mdt-fl-fonte)
c11-agg-qtaeva Aggiornamento singola riga: cerca/crea COGMDRIG, aggiorna mdr-qta-evasa; imposta mdr-fl-fonte = "D" sia su righe trovate che su righe nuove
cursore-sql-st-expordsto Apertura cursore SQL su EXPORDSTO per la lista corrente
c1c-import-da-storage Per liste "S": importa righe da EXPORDSTO
c1c1-aggiorna-riga-storage Cerca/crea riga COGMDRIG con mdr-fl-fonte = "S" per merce+lotto
c1c2-aggiorna-placeholder Aggiorna la riga placeholder (mdr-fl-fonte = "P") con le qta evase
z-close-files Chiusura file e tabelle DB

Flusso di aggiornamento (c1-aggiorna)

  1. Legge COGMDTES per mdt-id-lista corrispondente a e-ordt-id-lista.
  2. Aggiorna lo stato della testata in base a e-ordt-stato (mappa da codici export a codici interni).
  3. Se lo stato e' COMPL (completata): chiama c1a-refresh-qta-righe e marca e-ordt-agg-area = "S".
  4. Se lo stato e' EXE (in esecuzione): chiama comunque c1a-refresh-qta-righe per aggiornare le situazioni parziali, ma non marca e-ordt-agg-area (la lista e' ancora in corso).

Flusso refresh righe (c1a-refresh-qta-righe)

  1. Esegue c0-pre-scan-fonte per determinare se la lista e' a lotti pre-assegnati ("D") o delegati a Modula ("S").
  2. Scorre COGMDRIG per la lista e azzera le quantita' evase:
  3. Se mdt-fl-fonte = "S": cancella righe con mdr-fl-fonte = "S", marca originali come placeholder ("P") con qta evasa zero, azzera qta evasa su righe gia' "P".
  4. Se mdt-fl-fonte = "D": azzera mdr-qta-evasa su tutte le righe.
  5. Se mdt-fl-fonte = "S": chiama c1c-import-da-storage per importare le righe effettive da EXPORDSTO.
  6. Scorre EXPORDDET e per ogni riga chiama c11-agg-qtaeva per aggiornare la qta evasa riga per riga. c11-agg-qtaeva imposta mdr-fl-fonte = "D" sia sulla riga trovata che su eventuali righe nuove create per articoli/lotti non presenti in COGMDRIG.

Configurazioni

Il programma legge le configurazioni di connessione DB tramite x99-src-cfg (path binario, stringa connessione, log level) e opzionalmente la configurazione AGLANCIO (x99-src-cfg-agl).


Relazioni con altri programmi

Programma Relazione
AGLANCIO Scheduler: lancia DFNM03 come processo batch
COGG77 Crea le liste Modula (COGMDTES/COGMDRIG) tramite m1-*; DFNM03 ne aggiorna lo stato dopo il rientro da Modula
COGD53 / COGD53DF Popola le righe COGMDRIG alla creazione della lista

Storico modifiche

Data Descrizione
2026/05 Aggiornamento qta evase anche in stato EXE (non solo COMPL) per fornire situazioni parziali. Nuovo flusso per liste a scelta lotti delegata a Modula (mdt-fl-fonte = "S"): pre-scan fonte, gestione righe placeholder (mdr-fl-fonte = "P"), import da EXPORDSTO con righe mdr-fl-fonte = "S". Nuovo paragrafo c1a-refresh-qta-righe estratto da c1-aggiorna. Flag mdr-fl-fonte = "D" impostato esplicitamente da c11-agg-qtaeva su righe aggiornate e create nel flusso lotti pre-assegnati