Vai al contenuto

DFN101 - Import/export ordini

Posizione nel menu Programma non a menu Linkage section UTILDBFPRG - Linkage comune Id processo: 51101 Nome processo: ORDINI Tabella: DFDOCTES - Testata documenti + DFDOCDET - Dettaglio documenti + DFDOCELFT - Elementi di fatturazione su documento Logica generale Sincronizzazione degli ordini di vendita tra AREA e il DB frontiera. Questo processo funziona in IMPORT e EXPORT Se la configurazione ordini-mesi-permanenza è attiva, allora verrà effettuata anche una operazione di "Pulizia". Configurazioni possibili

Gruppo Parametro Note
dbfront sincro-attiva
dbfront email-segnalazioni
dbfront db-tipo
dbfront db-conn-string
dbfront db-log-level
dbfront inverto-segno-sconti
dbfront ordini-mesi-permanenza

Elaborazione Tipi di segnalazione: Vedi Tipi di segnalazione A - Controllo di esecuzione Vedi Controllo di esecuzione A.1 - Controllo log COGTESOR Per l'esecuzione di questo programma è necessario aver attivato il log sul file COGTESOR, altrimenti risulta impossibile tracciare le cancellazioni degli ordini. Quindi se il dato TLF-CO-LOG (17) è diverso da "X", inviare una Segnalazione grave e chiudere. B - Apertura B.1 Apertura tabelle Tentare l'apertura della tabella da sincronizzare: DFDOCTES. Se fallita inviare una Segnalazione grave e chiudere. Tentare l'apertura della tabella da sincronizzare: DFDOCDET. Se fallita inviare una Segnalazione grave e chiudere. Tentare l'apertura della tabella da sincronizzare: DFDOCELFT Se fallita inviare una Segnalazione grave e chiudere. Tentare l'apertura della tabella semaforo: DFSEMAFORO. Se fallita inviare una Segnalazione grave e chiudere. B.2 Blocco semaforo Lettura del record DFSEMAFORO:

Nome campo Note
DF-SMF-TABELLA DFDOCTES

Se il record non esiste inserirlo. Se risulta bloccato dal gestonale host (DF-SMF-USO-HOST = 1) Informazione sul log e chiudere. Dopodichè aggiornare il semaforo impostando:

Nome campo Note
DF-SMF-USO-AREA 1
DF-SMF-VERSIONE Versione attuale: 1

Ripetere l'operazione per la tabella DFDOCDET B.3 Aggiornamento stato Aggiornamento dello stato sul record specifico; in particolare:

Dato Contenuto
DBFST-STATO "I"
DBFST-ATT-DATA Data sistema
DBFST-ATT-ORA Ora sistema
DBFST-SCHED-DATA Sommare il tempo di attesa a data/ora sistema
DBFST-SCHED-ORA
DBFST-ERRORI 0
DBFST-MSG-ERRORE " "
DBFST-LOG-PROCEDURA " "

C - Sincronizzazione (Importazione) Se DBFST-FL-ATTIVAZIONE = 'E' (solo esportazione). segnalare Informazione sul log e skippare questa fase. C.1 Selezione documenti da importare Tramite un comando SQL specifico, estrazione di tutte le testate dei documenti aggiornati dall'HOST: SELECT * FROM DFDOCTES WHERE DF-DTES-AGG-HOST = 1 and DF-DTES-CLASSE = 'OV' I documenti trovati in questo modo potrebbero essere: * Documenti inseriti dall'HOST * Documenti inseriti dall'HOST e successivamente variati * Documenti inseriti su AREA che sono stati acquisiti dall'HOST e successivamente variati: questi documenti al momento verranno ignorati e solamente marcati come "processati" * 14/06/2024: da oggi potranno essere acquisiti anche questi, ma verrà acquisito solo il campo df_dtes_stato, e df_ddet_stato * Per il momento saranno importati solo i record dove DF-DTES-AGG-AREA = 0 C.2 Controllo record di testata Per ciascun record letto, verificare la correttezza delle informazioni contenute Controllo DF-DTES-KEY-HOST Questa informazione, in fase di importazione deve essere significativa, altrimenti segnalare Errore . Controllo DF-DTES-ORIGINE Questa informazione potrà contenere "A" o "H", altrimenti segnalare Errore e skippare: "DF-DTES-KEY con DF-DTES-ORIGINE errato: DF-DTES-ORIGINE". Se contiene "A" significa che il documento è stato generato da AREA; per il momento ignoriamo le variazioni su questi documenti, quindi Informazione sul log e skippare il record. Controllo DF-DTES-CLASSE La classe documento attualmente potrà essere solo "OV", altrimenti segnalare Errore e skippare: "DF-DTES-KEY con DF-DTES-CLASSE errato: DF-DTES-CLASSE". Controllo DF-DTES-KEY-AREA Se presente, significa che il documento è già stato acquisito da AREA; e siamo in caso di variazione: verificare quindi l'esistenza su COGTESOR del documento: se manca, segnalare Errore: "DF-DTES-KEY; DF-DTES-KEY-AREA non esistente: DF-DTES-KEY-AREA". Se l'ordine esiste, e non ne è richiesta la cancellazione, per il momento si dovrà ignorare questa condizione: segnalare Informazione sul log: "DF-DTES-KEY; La modifica ordine DF-DTES-KEY-AREA non è prevista". In questo caso saltare gli aggiornamenti ma eseguire comunque l'aggiornamenfo finale del record DFDOCTES. Controllo DF-DTES-DATA Data documento: questo campo dovrà essere significativo e contenere una data valida, altrimenti segnalare Errore e skippare. Controllo DF-DTES-MAG-MAIN-HOST Campo obbligatorio. Si dovrà cercare su COGMAGAG se esiste già un magazzino con MAGG-CODICE-HOST = DF-DTES-MAG-MAIN-HOST. Se non esiste, segnalare Errore e skippare: "DF-DTES-KEY con DF-DTES-MAG-MAIN-HOST non esistente: DF-DTES-MAG-MAIN-HOST". Controllo DF-DTES-MAG-TRASF-HOST Sugli ordini di vendita questo campo non è previsto. Quindi se indicato segnalare Errore e skippare: "DF-DTES-KEY Ordine DF-DTES-KEY-HOST con magazzino secondario: non previsto. Controllo DF-DTES-CAUSALE Campo obbligatorio. Si dovrà cercare sulla tabella causali se ne esiste una con EUTA-CB-CODICE-HOST = DF-DTES-CAUSALE. Se non esiste, segnalare Errore e skippare: "DF-DTES-KEY con DF-DTES-CAUSALE non esistente: DF-DTES-CAUSALE". Se trovata, la causale dovrà avere le seguenti caratteristiche: * Uscita * Tipo anagrafico "Cliente" altrimenti segnalare errore e skippare "DF-DTES-KEY Ordine DF-DTES-KEY-HOST con causale che non corrisponde ai requisiti" Controllo DF-DTES-PAGAMENTO Campo non obbligatorio. Se indicato dovrà corrispondere ad un codice raccordato con i nostri "tipo e codice pagamento, vedi DBF001. Controllo DF-DTES-ANA-FAT-HOST Questa informazione potrebbe non essere significativa. Se significativa, cercare se corrisponde ad un cliente o fornitore, con una ricerca su COGANAPP.AAP2-CHIA2, impostando * AAP2-RACCORDO = DF-DTES-ANA-FAT-HOST Se il raccordo: * Esiste: il documento sarà collegato all'anagrafica trovata; il tipo anagrafico DF-ANA-AREA-TIP dovrà essere 'C'; altrimenti segnalare segnalare Errore e skippare: "DF-DTES-KEY Ordine DF-DTES-KEY-HOST non collegato a cliente: DF-DTES-ANA-FAT-HOST". * Non esiste: l'anagrafica a cui è collegati il contatto non è stato ancora acquisita: Informazione e skippare: "DF-DTES-KEY collegato ad anagrafica non ancora importata : DF-DTES-ANA-FAT-HOST" Controllo DF-DTES-ANA-DST-HOST Come sopra Controllo DF-DTES-IND-HOST Se indicato dovrà corrispondere ad un indirizzo di spedizione presente in DFINDIR (fare la ricerca su DF-IND-KEY-HOST). Se non presente segnalare Errore e skippare. Se presente questo indirizzo deve essere già stato importato e collegato su AREA: dovrà quindi avere DF-IND-AREA-PROG valorizzato. Altrimenti segnalare Informazione e skippare: "DF-DTES-KEY collegato ad indirizzo non ancora importata : DF-DTES-IND-HOST" Controllo DF-DTES-VAL Questo campo potrà contenere "C" o " " altrimenti segnalare Errore e skippare: "DF-DTES-KEY con DF-DTES-VAL errato: DF-DTES-VAL". Controllo DF-DTES-DIVISA Se vale "EU" diventerà "E" e viceversa C.3 Controlli dettaglio documento Tramite un comando SQL specifico, estrazione di tutte le righe del documento in elaborazione: SELECT * FROM DFDOCDET WHERE DF-DDET-KEY-HOST = DF-DTES-KEY-HOST Per ciascun record letto i controlli sono i seguenti: Controllo DF-DDET-SEGNO Questo campo potrà contenere "U" altrimenti segnalare Errore e skippare: "Riga: DF-DDET-KEY-HOST : DF-DDET-RIG-HOST con DF-DDET-SEGNO errato: DF-DDET-SEGNO". Controllo DF-DDET-MPR-HOST questa informazione contiene il codice merce avanzato di una merce (che corrisponde al codice articolo HOST).. Quindi, cercare su COGRACMC; se non esiste segnalare Errore ""Riga: DF-DDET-KEY-HOST : DF-DDET-RIG-HOST; merce non esistente: DF-DDET-MPR-HOST" C.4 Importazione record Se tutti i controlli sono superati, proseguire con l'inserimento/aggiornamento del documento. C.4.1 Cancellazione Nel caso in cui DF-DTES-VAL = 'C' è necessario cercare e cancellare l'intero ordine di vendita: C.4.1.1 Cancellazione di documento non importato Se DF-DTES-KEY-AREA è vuoto: significa che il documento non era mai stato importato: marcare il record come "elaborato":

Nome campo Contenuto
DF-DTES-AGG-HOST 0
DF-DTES-AGG-AREA 0

segnalare Informazione e skippare: "DF-DTES-KEY documento cancellato ma non ancora importato" C.4.1.2 Cancellazione di documento importato Se DF-DTES-KEY-AREA non è vuoto: significa che il documento era già stato importato; Cercare su COGTESOR, usando DF-DTES-KEY-AREA. Se non esiste segnalare Errore e skippare: "DF-DTES-KEY documento da cancellare non esistente: DF-DTES-KEY-AREA" Altrimenti, scorrere le righe per verificare se è parzialmente evaso (se ha almeno una riga con ROR-QTACONS > 0): in questo caso segnalare Errore e skippare: "DF-DTES-KEY ordine AREA: DF-DTES-KEY-AREA già parzialmente evaso, non è possibile cancellarlo." Se i controlli sono ok, effettuare la cancellazione dell'ordine, come viene fatto da COGO05W, trascurando le personalizzazioni particolari come quelle di Artic Seals. Dopodichè marcare il record come "elaborato":

Nome campo Contenuto
DF-DTES-AGG-HOST 0
DF-DTES-AGG-AREA 0
DF-DTES-KEY-AREA " "

C.4.2 Inserimento Se DF-DTES-KEY-AREA è vuoto: dobbiamo effettuare l'inserimento del documento. C.4.2.1 Testata ordine COGTESOR

Nome campo Contenuto
TOR-TIPO "C"
TOR-ANNO Anno relativo alla data DF-DTES-DATA
TOR-NUMERO Numero ordine prelevato da COGS25
TOR-PROGR 0
TOR-TIPO1 "C"
TOR-CLIFOR Se DF-DTES-ANA-DST-HOST è significativo inserire il cliente collegato a questo, altrimenti il cliente collegato a DF-DTES-ANA-FAT-HOST
TOR-ANNO1 TOR-ANNO
TOR-DATDECOR DF-DTES-DATA
TOR-CODPAG1 Codice pagamento ricavato da DF-DTES-PAGAMENTO
TOR-RIFLIS Il codice listino collegato al cliente di fatturazione
TOR-VET-COD Se presenti prelevare queste condizioni dal cliente di destinazione, o dal cliente di fatturazione se il primo manca
TOR-ACURA
TOR-PORTO
TOR-CONS-DIR "N"
TOR-RB Tipo pagamento ricavato da DF-DTES-PAGAMENTO
TOR-CAUSALE Causale collegata a DF-DTES-CAUSALE
TOR-DOVE "T"
TOR-DESCR DF-DTES-NOTE (i primi 100 caratteri)
TOR-DESCR1
TOR-CNF-NUM
TAR-CNF-NUM
" "
TOR-CNF-DATA 0
TOR-DESTINA Se DF-DTES-ANA-DST-HOST e diverso da DF-DTES-ANA-FAT-HOST, qui inserire il cliente di fatturazione
TOR-DASCAD Indicare per default un anno dalla data ordine
TOR-VALUNI "A"
TOR-CHIU " "
TOR-RAGRFAT 0
TOR-IMPEGNO "SI"
TOR-MAGAZ Il codice magazzino collegato a DF-DTES-MAG-MAIN-HOST
TOR-CURRENCY DF-DTES-DIVISA; se vale "EU" forzare W-CURRENCY-CONTO
TOR-DST-ID Id destinazione ricavato da DF-DTES-IND-HOST


COGTORAG

Nome campo Note
TAR-TESTA TOR-CHIA
TAR-SPED-UNITARIA "N"
TAR-BRAND " "
TAR-MODO-VENDITA DF-DTES-MODO-VENDITA
TAR-BLOCCO-AMM DF-DTES-FL-BLOCCO
TAR-BLOCCO-COM " "
TAR-STATO-HOST DF-DTES-STATO-HOST

COGDESCR - Note operative commerciali se il campo DF-DTES-NOTE contiene una descrizione maggiore di 100 caratteri, salvare il contenuto anche in COGDESCR, nell'apposito campo "Note operative commerciali":

Dato Contenuto
CDE-TIP "OO"
CDE-COD TOR-CHIA
CDE-PRO 0
CDE-LEN La lunghezza del contenuto di DF-DTES-NOTE
CDE-DES DF-DTES-NOTE

se il campo DF-DTES-NOTE-LOGISTICA è significativo, salvare il contenuto anche in COGDESCR, nell'apposito campo "Note operative magazzino":

Dato Contenuto
CDE-TIP "OO"
CDE-COD TOR-CHIA
CDE-PRO 1
CDE-LEN La lunghezza del contenuto di DF-DTES-NOTE-LOGISTICA
CDE-DES DF-DTES-NOTE-LOGISTICA

C.4.2.2 Dettaglio ordine Per ciascuna riga di dettaglio trovata su DFDOCDET per l'ordine: COGRIGOR

Nome campo Note
ROR-TESTA TOR-CHIA
ROR-MERCE La merce collegata a DF-DDET-MPR-HOST
ROR-RIG-PRO Progressivo di riga ordine
ROR-QTAORD DF-DDET-QTA
ROR-QTACONS DF-DDET-QTA-EVASA
ROR-CURRENCY TOR-CURRENCY
ROR-PREZ DF-DDET-PREZZO-LORDO
ROR-SCONTO-1 DF-DDET-SCONTO-1
ROR-SCONTO-2 DF-DDET-SCONTO-2
Se DF-DDET-SCONTO-3 è significativo, accorparlo allo sconto 2
TRS-S25-SCO-2 = 100-(100-sco1)*((100-sco2)/100)
Se inverto-segno-sconti vale "S", invertire il segno dello sconto
ROR-FLAGCHIU " "
ROR-FLAGCHIU-MANUALE " "

COGRORAG

Nome campo Note
RAR-TESTA ROR-TESTA
RAR-RIG-PRO ROR-RIG-PRO

COGRORA2

Nome campo Note
RA2-TESTA ROR-TESTA
RA2-RIG-PRO ROR-RIG-PRO
RA2-IMPORTO DF-DDET-IMPORTO
RA2-FL-CONTENITORE "N"
RA2-FL-VAL "S"
RA2-FL-ESPOSTA "S"
RA2-AGG-LFO "S"
RA2-CAUSALE-PRODOTTO DF-DDET-CAUSALE-PRODOTTO
RA2-TIPO-OMAGGIO DF-DDET-TIPO-OMAGGIO
RA2-FL-PROMO DF-DDET-FL-PROMOZIONE
RA2-FL-SCONTO-AGENTE DF-DDET-FL-SCONTO-AGENTE
RA2-SCONTO-AGENTE DF-DDET-SCONTO-AGENTE
RA2-CAMPAGNA-SEL DF-DDET-CAMPAGNA-SEL
RA2-STATO-HOST DF-DDET-STATO-HOST

Aggiornamento impegno Con una chiamata a COGU12 aggiornare l'impegno magazzino (Vedi COGO05W) Al termine aggiornare il record di testata documento:

Nome campo Contenuto
DF-DTES-AGG-HOST 0
DF-DTES-AGG-AREA 0
DF-DTES-KEY-AREA Chiave del documento creato

C.4.2.3 Elementi di fatturazione ordine Effettuare una ricerca di tutti gli elementi di fatturazione trovati sull'ordine, con una ricerca su DFDOCELFT:

Nome campo Note
DF-DEFT-DOC-CLASSE "OV"
DF-DEFT-DTES-KEY-HOST DF-DTES-KEY-HOST

Per ciascun record trovato: Inserimento COGDELFT

Nome campo Note
Dato Contenuto
DEFT-DOC-CLASSE k-doc-tip-ordine-cliente
DEFT-DOC-KEY TOR-CHIA1
DEFT-ELFT-CODICE DF-OEFT-ELFT-CODICE
DEFT-PERCENTUALE DF-OEFT-PERCENTUALE
DEFT-IMPORTO DF-OEFT-IMPORTO
DEFT-VAL DF-OEFT-VAL

C.4.2.4 Importazione consegna Se non esiste nessuna consegna, inserirla con una chiamata a COGO16C:

Dato Contenuto
O16-OPE "ins-auto"
O16-TIP TOR-TIPO
O16-ANN TOR-ANNO
O16-NUM TOR-NUMERO
O16-PRO TOR-PROGR

C.4.2.4.1 Gestione data consegna Se una delle due date: * DF-DTES-DATA-CONS-GENERICA * DF-DTES-DATA-CONS-TASSATIVA sono diverse da "00010101" (verificare!!), allora scorrere le righe consegna collegate all'ordine (COGCONOR) usando COR-CHIA2, e per ciascuna aggiornare:

Dato Contenuto
COR-DATA DF-DTES-DATA-CONS-GENERICA
COR-DATA-GAR DF-DTES-DATA-CONS-TASSATIVA

C.4.3 Aggiornamento Questo caso attualmente non è previsto

D - Sincronizzazione (esportazione)

Se DBFST-FL-ATTIVAZIONE = 'I' (solo importazione). segnalare Informazione sul log e skippare questa fase. Non potranno essere esportati gli ordini che: * Non sono stati originati da AREA * Sono già stati acquisiti dall'HOST (quindi AGG-HOST = 1) * Sono appena stati importati dall'HOST: quindi, se TAR-DA-PROG = 'DFN101' o 'DBF101' D.1 Documenti cancellati In questa fase dovremo controllare gli ordini di vendita che sono stati cancellati, usando il log su COGTESOR Quindi, si dovrà scorrere LOGAGREC usando LGR-CHIA3, a partire dall'ultimo aggiornamento effettuato.

Nome campo Contenuto
LGR-FILE "cogtesor"
LGR-DATA DBFST-UA-DATA
LGR-ORA DBFST-UA-ORA

Per ciascun record letto cerchiamo il corrispondente record LOGIDREC:

Nome campo Contenuto
LRR-FILE "cogtesor"
LGR-ID LGR-ID-RECORD

In LRR-CHIAVE troveremo la chiave del documento, corrispondente a TOR-CHIA. Consideriamo solo i record con LGR-OPERAZIONE = "C" (cancellazione). Verifichiamo se il documento cancellato è già stato esportato, con una ricerca diretta su DFDOCTES, usando DF-DTES-CHIA3, impostando:

Nome campo Contenuto
DF-DTES-CLASSE "OV"
DF-DTES-KEY-AREA TOR-CHIA

Se il record non esiste, allora il documento non è mai stato esportato, Informazione sul log e skippare. Se il record esiste, allora è già stato esportato: però: * se è stato generato dall'HOST (DF-DTES-ORIGINE = "H") lo dobbiamo ignorare: Informazione sul log e skippare. * se è stato importato dall'HOST (DF-DTES-AGG-HOST = 1) lo dobbiamo ignorare: Informazione sul log e skippare. Altrimenti dovremo aggiornare DFDOCTES:

Nome campo Contenuto
DF-DTES-VAL "C"
DF-DTES-AGG-AREA 1

D.2 Esportazione ordini Loop su COGTORAG usando TAR-CHIA3 impostando

Nome campo Contenuto
TAR-DA-DATA DBFST-UA-DATA
TAR-DA-TIME DBFST-UA-ORA

Ciascun record letto corrisponde ad un documento da trattare. Personalizzazione per Pieri Se è stato ricevuto un ordine sul magazzino "Assistenza" (il magazzino principale per Assist), non dovrà essere esportato; quindi se TOR-MAGAZ = AZ- MAIN-MAG skippare il record. D.2.1 Esportazione singolo documento Verifichiamo se il documento inserito/aggiornato è già stato esportato, con una ricerca diretta su DFDOCTES, usando DF-DTES-CHIA3, impostando:

Nome campo Contenuto
DF-DTES-CLASSE "OV"
DF-DTES-KEY-AREA TOR-CHIA

Se il record esiste, allora è già stato esportato: però: * se è stato generato dall'HOST (DF-DTES-ORIGINE = "H") lo dobbiamo ignorare: Informazione sul log e skippare. * se è stato importato dall'HOST (DF-DTES-AGG-HOST = 1) lo dobbiamo ignorare: Informazione sul log e skippare. Altrimenti dovremo aggiornare DFDOCTES, quindi cancellare DFDOCDET per tutti i record usando una query, e quindi reinserire DFDOCDET. Se il record non esiste, allora il documento non è mai stato esportato, quindi dovremo inserire DFDOCTES, e quindi inserire DFDOCDET. D.2.1.1 Nuovo cliente E' possibile che l'ordine sia agganciato ad un cliente appena inserito da APP. In questo caso non sarà raccordato al db frontiera tramite il codice host. Quindi leggere COGANAP2 per il cliente di destinazione TOR-CLIFOR: se AAP-CODICE-HOST = " ", allora siamo in presenza di un nuovo cliente. NB: potrebbe essere usato nello stesso modo anche quando l'operazione viene effettuata direttamente su gestionale (inserimento cliente e creazione ordine). In questo caso si dovrà innescare DBF022 - Esportazione nuovi clienti, passandogli il codice del cliente da esportare

Dato Contenuto
DBFPRG-CALLED "DBFPRG-CALLED"
DBFPRG-KEY "C"+TOR-CLIFOR
DBFPRG-FL-MANUALE " "
DBFPRG-OPERAZIONE "CLIENTE-SINGOLO"

D.2.1.2 Aggiornamento DFDOCTES

Nome campo Note
DF-DTES-KEY-HOST in inserimento è vuoto, altrimenti lasciare invariato (potrebbe essere stato già importato dall'HOST e quindi collegato)
DT-DTES-ORIGINE "A"
DF-DTES-CLASSE "OV"
DF-DTES-KEY-AREA TOR-CHIA
DF-DTES-DATA TOR-DATDECOR
DF-DTES-MAG-MAIN-HOST MAGG-CODICE-HOST, trovato leggendo COGMAGAG con TOR-MAG
Se vuoto, inviare una Email informativa e skippare
DF-DTES-MAG-TRASF-HOST " " (per ora)
DF-DTES-CAUSALE EUTA-CB-CODICE-HOST, trovato leggendo il record COGTABEL della causale usando TOR-CAUSALE
Se vuoto, inviare una Email informativa e skippare
DF-DTES-PAGAMENTO Usando TOR-RB e TOR-CODPAG1, cercare il corrispondente codice di raccordo su COGGENER, vedi COGD12.
Se non trovato, inviare una Email informativa e skippare
DF-DTES-FL-FAT EUTA-CB-CON-FAT (S/N)
DF-DTES-ORIG-CLASSE " "
DF-DTES-ORIG-KEY " "
DF-DTES-ANA-FAT-HOST Il codice di raccordo (AAP-RACCORDO) relativo al cliente TOR-DESTINA, se significativo, altrimenti TOR-CLIFOR
DF-DTES-ANA-DST-HOST Come sopra, usando sempre TOR-CLIFOR
Gestione nuovo cliente
Se l'ordine è collegato ad un "nuovo cliente" (vedi D.2.1.1), il codice host relativo al cliente non è ancora disponibile, quindi in questo caso qui inseriremo:
"P:"+chiave anagrafica cliente; es: "P:C00123"
DF-DTES-IND-HOST se TOR-DST-ID-IDX <> 0 eseguire una ricerca su COGDEST2 della destinazione dell'ordine; qui va messo DST2-CODICE-HOST.
Se non trovato inviare una Email informativa e skippare.
DF-DTES-ALTRO-TRASF " " (per ora)
DF-DTES-NOTE TOR-DESCR + TOR-DESCR1
Cercare l'esistenza di note operative commerciali su COGDESCR
Dato Contenuto
CDE-TIP "OO"
CDE-COD TOR-CHIA
CDE-PRO 0
Se esistono: verificare se i primi 100 caratteri sono diversi da TOR-DESCR + TOR-DESCR1


DF-DTES-NOTE-LOGISTICA Come DF-DTES-NOTE, ma viene memorizzato sul record con CDE-PRO = 1
Inoltre non vengono toccate le note standard dell'ordine
DF-DTES-DIVISA TOR-CURRENCY
DF-DTES-VAL " "
DF-DTES-AGG-AREA 1
DF-DTES-MODO-VENDITA TAR-MODO-VENDITA
DF-DTES-TIPO-ORDINE TOR-ORD-TIP
DF-DTES-CIG Queste informazioni vanno recuperate da COGGENER.GNR-DES, leggendo un record che abbia:
Dato Contenuto
GNR-TIP "OI"
GNR-PARTE-1 TOR-CHIA
GNR-PARTE-2 " "
DF-DTES-CUP
DF-DTES-ID-WEB TAR-ID-WEB
DF-DTES-AGENTE-1 TOR-AGENTE-1
DF-DTES-AGENTE-2 TOR-AGENTE-2
DF-DTES-DOCUMENTO-INTERL TOR-CNF-NUM
TAR-CNF-NUM
DF-DTES-DATA-INTERL TOR-CNF-DATA
DF-DTES-FL-BLOCCO TAR-BLOCCO-AMM
TAR-BLOCCO-COM
Se uno di questi due campi è significativo, significa che l'ordine è soggetto a un tipo di blocco: quindi esportare "B"; altrimenti lasciare vuoto
DF-DTES-DATA-CONS-GENERICA COR-DATA (*)
DF-DTES-DATA-CONS-TASSATIVA COR-DATA-GAR (*)
DF-DTES-STATO-HOST Invariato

(*) Cercare la prima riga consegna collegata all'ordine. D.1.2 Aggiornamento DFDOCDET In caso di aggiornamento, cancellazione di tutti i record collegati al documento. Poi per ciascuna riga documento (COGRIGOR e record collegati), inserire una nuova riga:

Nome campo Contenuto
DF-DDET-KEY-HOST DF-DTES-KEY-HOST
DF-DDET-CLASSE DF-DTES-CLASSE
DF-DDET-KEY-AREA DF-DTES-KEY-AREA
DF-DDET-PROG-AREA ROR-RIG-PRO
DF-DDET-SEGNO "U"
DF-DDET-MPR-HOST Codice merce avanzato della merce ROR-MERCE
Cercare su DFMERCIPREST se esiste su DF-MPR-KEY-HOST; se non esiste
Se non trovato inviare una Email informativa ma proseguire
DF-DDET-QTA ROR-QTAORD
DF-DDET-QTA-EVASA ROR-QTACONS
DF-DDET-PREZZO-LORDO ROR-PREZ
DF-DDET-SCONTO-1 ROR-SCONTO-1
DF-DDET-SCONTO-2 ROR-SCONTO-2
DF-DDET-SCONTO-3 0
DF-DDET-PREZZO-NETTO Il prezzo netto calcolato da ROR-PREZ - sconti
DF-DDET-IMPORTO RA2-IMPORTO
DF-DDET-NOTE Descrizioni aggiuntive trovate sulla riga
DF-DDET-CAUSALE-PRODOTTO RA2-CAUSALE-PRODOTTO
DF-DDET-TIPO-OMAGGIO RA2-TIPO-OMAGGIO
DF-DDET-FL-PROMOZIONE RA2-FL-PROMO
DF-DDET-FL-SCONTO-AGENTE RA2-FL-SCONTO-AGENTE
DF-DDET-MOTIVAZIONE RA2-MOTIVAZIONE-RESO
DF-DDET-SCONTO-AGENTE RA2-SCONTO-AGENTE
DF-DDET-CAMPAGNA-SEL RA2-CAMPAGNA-SEL
DF-DDET-STATO-HOST Invariato

D.1.3 Aggiornamento DFDOCELFT In caso di aggiornamento, cancellazione di tutti i record collegati al documento. Poi effettuare la ricerca dei record di COGDELFT relativi all'ordine:

Dato Contenuto
DEFT-DOC-CLASSE k-doc-tip-ordine-cliente
DEFT-DOC-KEY TOR-CHIA

Per ciascun record trovato inserire un record su DFDOCELFT

Dato Contenuto
DF-DEFT-DTES-KEY-HOST DF-DTES-KEY-HOST
DF-DEFT-ELFT-CODICE DEFT-ELFT-CODICE
DF-DEFT-DOC-CLASSE "OV"
DF-DEFT-DTES-KEY-AREA DF-DTES-KEY-AREA
DF-DEFT-PERCENTUALE DEFT-PERCENTUALE
DF-DEFT-IMPORTO DEFT-IMPORTO
DF-DEFT-VAL DEFT-VAL

F - Pulizia Questa parte va eseguita se la configurazione specifica ordini-mesi-permanenza è maggiore di 0, e verrà eseguita indipendentemente dallo stato del semaforo host. Al termine dell'operazione registrare nel log il numero di ordini cancellati. F.1 Data inizio permanenza In base al numero di mesi configurati, determinare la data inizio, togliendo il numero di mesi dalla data sistema, e impostando come data limite il giorno 1 del mese. Ad esempio, in data 20/08/2020 se la configurazione vale: * 1 -> 01/07/2020 * 6 -> 01/02/2020 * 15 -> 01/05/2019 F.2 Ricerca ordini da cancellare Tramite una query estraiamo gli ordini interessati alla cancellazione (vengono considerati gli ordini nel periodo, a prescindere dallo stato di aggiornamento): SELECT * FROM DFDOCTES WHERE DF-DTES-CLASSE = 'OV' and DF_DTES_DATA < 'AAAA-MM-GG' ATTENZIONE: dato che appena effettuata la configurazione il numero di ordini da cancelllare potrebbe essere molto alto, limitare la cancellazione a 100 record (in questo caso nel log indicare che l'elaborazione è stata limitata) F.2.1 Cancellazione ordine Per ciascun ordine elaborato, cancellare le righe: DELETE FROM DFDOCDET where DF_DDET_KEY_AREA = 'DF_DTES_KEY_AREA' DELETE FROM DFDOCELFT where DF_DEFT_KEY_AREA = 'DF_DTES_KEY_AREA' Quindi cancellare la testata con un semplice comando "SQL-DEL-SUB-DFDOCTES" (quello normale sub-cfg-del-dfdoctes fa perdere i dati dell sql e farebbe 1 solo record alla volta !!!)

E - Chiusura E.1 Rilascio semaforo Aggiornare i record semaforo relativi a DFDOCTES e DFDOCDET, impostando

Nome campo Note
DF-SMF-USO-AREA 0

E.2 Chiusura tabelle Chiudere le tabella DFDOCTES, DFDOCDET e DFSEMAFORO E.3 Aggiornamento stato Aggiornamento dello stato sul record specifico; in particolare:

Dato Contenuto
DBFST-STATO "A"
DBFST-ERRORI Numero di errori rilevati
DBFST-MSG-ERRORE Ultimo errore rilevato
DBFST-LOG-PROCEDURA Codice procedura di gestione log
DBFST-UA-DATA Data/ora maggiori trovati sull'ultimo record cancellato trovato, o sull'ordine esportato.
DBFST-UA-ORA

Estratto da documentazione interna ClickUp