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