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)
- Legge
COGMDTES per mdt-id-lista corrispondente a e-ordt-id-lista.
- Aggiorna lo stato della testata in base a
e-ordt-stato (mappa da codici export a codici interni).
- Se lo stato e' COMPL (completata): chiama
c1a-refresh-qta-righe e marca e-ordt-agg-area = "S".
- 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)
- Esegue
c0-pre-scan-fonte per determinare se la lista e' a lotti pre-assegnati ("D") o delegati a Modula ("S").
- Scorre
COGMDRIG per la lista e azzera le quantita' evase:
- 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".
- Se
mdt-fl-fonte = "D": azzera mdr-qta-evasa su tutte le righe.
- Se
mdt-fl-fonte = "S": chiama c1c-import-da-storage per importare le righe effettive da EXPORDSTO.
- 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 |