Posizione nel menu
Programma non a menu
Linkage section
Nome processo: CONTATTI
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 |
|
|
dbfront |
|
|
dbfront |
|
|
dbfront |
|
|
dbfront |
|
|
dbfront |
|
|
dbfront |
|
Elaborazione
Tipi di segnalazione:
Vedi Tipi di segnalazione
A - 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"
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 |
" " |
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 |
•TOR-DST-ID-TIP |
|
•TOR-DST-ID-IDX |
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 |
" " |
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 |
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)
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
Se esistono: verificare se i primi 100 caratteri sono diversi da TOR-DESCR + TOR-DESCR1 •Sono uguali: esportare solo le note operative commerciali •Sono diversi: aggiungere le note operative alle note ordine |
||||||||
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:
|
||||||||
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 |
||||||||
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 (*) |
(*) 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 |
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.
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 |