DBF101 - Import/export ordini

Navigation:  »No topics above this level«

DBF101 - Import/export ordini

Return to chapter overview

Posizione nel menu

Programma non a menu

 

Linkage section

 

UTILDBFPRG - Linkage comune

 

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

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"

 

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

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

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:

 

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

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