Vai al contenuto

DBF004 - Sincronizzazione articoli

Posizione nel menu Programma non a menu Linkage section UTILDBFPRG - Linkage comune Nome processo: CONTATTI Tabella: DFMERCIPREST - Merci e prestazioni Logica generale Sincronizzazione dell'anagrafica merci/prestazioni tra AREA e il DB frontiera. Per il momento funziona solo in IMPORT \ Configurazioni possibili

Gruppo Parametro Note
dbfront sincro-attiva
dbfront email-segnalazioni
dbfront db-tipo
dbfront db-conn-string
dbfront db-log-level
listvend classe-raggr-sconti
merci classe-categoria
merci classe-gruppo
merci forzo-classe-m-su-grupposconto
merci forzo-classe-s-su-grupposconto
merci classe-fascia
merci classe-collezione
merci classe-brand

Elaborazione Operazioni:

Operazione Descrizione
" " Elaborazione standard:

"SETTIMANALE" Cancellazione logica articoli non presenti su db host
Dopo il punto 1 dell'elaborazione standard, scorre l'anagrafica articoli su AREA, per ciascun articolo senza record corrispondente sul DBF esegue la cancellazione logica

Tipi di segnalazione: Vedi Tipi di segnalazione A - Controllo di esecuzione Vedi Controllo di esecuzione B - Apertura B.1 Apertura tabelle Tentare l'apertura della tabella da sincronizzare: DFMERCIPREST. 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 DFMERCIPREST

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

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) C.1 Selezione record da importare Tramite un comando SQL specifico, estrazione di tutti i record aggiornati dall'HOST: SELECT * FROM DFMERCIPREST WHERE DF-MPR-AGG-HOST = 1 C.2 Controllo record Per ciascun record letto, verificare la correttezza delle informazioni contenute: Controllo DF-MPR-KEY-HOST Questa informazione deve essere significativa, altrimenti segnalare Errore . Controllo DF-MPR-VAL Questo campo potrà valere: " " o "C"; se è presente un valore diverso segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-IND-VAL contiene un valore errato: DF-MPR-VAL" Se il record risulta cancellato, skippare i controlli restanti ed eseguire la modifica dell'articolo, variando solo il flag di validità della merce. Controllo DF-MPR-AREA-COD/DF-MPR-AREA-CMA DF-MPR-AREA-COD corrisponde al codice merce interno. Se: * Vuoto: l'articolo non è ancora collegato, quindi il codice HOST non dovrebbe esistere: effettuare quindi una ricerca su COGRACMC, verificando se DF-MPR-KEY-HOST è presente come RCM-COD-AVA. Se: * Esiste: segnalare Informazione e proseguire: "DF-MPR-KEY-HOST non collegato ma trovato come CMA sulla merce: RCM-MERCE, verrà collegato. * Non esiste: siamo in fase di Inserimento * Non vuoto: significa che l'articolo è già codificato; quindi controllare l'esistenza su COGMERCI usando DF-MPR-AREA-COD, che dovrà corrispondere MER-CHIA. Se: * Non esiste, segnalare Errore e skippare: "DF-MPR-KEY-HOST creata ma non trovata: DF-MPR-AREA-COD/DF-MPR-AREA-CMA". * Esiste: siamo in fase di Variazione Controllo DF-MPR-DES Questo campo dovrà essere significativo, altrimenti segnalare Errore e skippare. Controllo DF-MPR-EAN Non obbligatorio. Se presente, controllare che sia un codice EAN valido usando COGS05 (vedi COGV06NO); se non valido segnalare Errore e skippare "DF-MPR-KEY-HOST con DF-MPR-EAN errato". Se presente, il programma di importazione dovrà controllare che il codice presente non sia già collegato ad una merce diversa. In questo caso il programma dara' priorità al codice in elaborazione (diamo per scontato che quello precedente sia "obsoleto", quindi su quest'ultimo il codice EAN sarà ricalcolato in modo da permettere al nuovo codice di ospitare il codice EAN trovato. Controllo DF-MPR-CLASSE Questo campo dovrà contenere "M" o "S", altrimenti segnalare Errore e skippare: "DF-MPR-KEY-HOST con DF-MPR-CLASSE errata". Controllo DF-MPR-UM Questo campo è obbligatorio e dovrà contenere una UM codificata nella apposita tabella COGTABUM. Se il valore non è presente o non codificato segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-VAL contiene un valore errato: DF-MPR-VAL" Controllo DF-MPR-IVA-VENDITA Questo campo è obbligatorio e dovrà essere trovato sulla tabella di raccordo Aliquote IVA (vedi COGEA1 - Aliquote IVA) Se il valore non è presente o non codificato segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-IVA-VENDITA non è presente nella tabella raccordo: DF-MPR-IVA-VENDITA" Controllo DF-MPR-IVA-ACQUISTO Stessi controlli del campo precedente, ma non è obbligatorio. Controllo DF-MPR-FL-SN Questo campo potrà valere un valore da 0 a 3; altrimenti segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-FL-SN contiene un valore errato: DF-MPR-FL-SN" Controllo DF-MPR-FAM-SCONTI Questo campo, non obbligatorio, potrà contenere un valore presente sulla famiglia di raggruppamenti gerarchici configurati in classe-raggr-sconti. Se significativo effettuare quindi una lettura su COGANRAG, impostando:

Nome campo Contenuto
ARAG-CLASSE La classe configurata
ARAG-TIP "R"
ARAG-ID DF-MPR-FAM-SCONTI

Se il record non esiste segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-FAM-SCONTI non trovata: DF-MPR-FAM-SCONTI" Se vuoto, potrà essere utilizzato un codice raggruppamento collegato nelle due configurazioni: forzo-classe-m-su-grupposconto, forzo-classe-s-su-grupposconto, a seconda della classe merce. Controllo DF-MPR-FORN-ABITUALE Informazione non obbligatoria. Se presente, dovrà contenere un codice fornitore HOST raccordato con un fornitore su AREA. Ricerca su COGANAPP.AAP2-CHIA2, impostando

Nome campo Contenuto
AAP2-RACCORDO DF-MPR-FORN-ABITUALE
AAP2-ANA-TIP "F"

Se il raccordo: * Esiste: il codice fornitore collegato sarà usato in fase di aggiornamento. * Non esiste: Il fornitore a cui è collegata non è stato ancora acquisito: Errore e skippare: "DF-MPR-KEY-HOST; il fornitore abituale DF-MPR-FORN-ABITUALE non è stato ancora acquisito" Controllo DF-MPR-CATEGORIA Questo campo, non obbligatorio, potrà contenere un valore presente sulla famiglia di raggruppamenti gerarchici configurati in classe-categoria. Se significativo effettuare quindi una lettura su COGANRAG, impostando:

Nome campo Contenuto
ARAG-CLASSE La classe configurata
ARAG-TIP "R"
ARAG-ID DF-MPR-CATEGORIA

Se il record non esiste segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-CATEGORIA non trovata: DF-MPR-CATEGORIA" Controllo DF-MPR-GRUPPO Questo campo, non obbligatorio, potrà contenere un valore presente sulla famiglia di raggruppamenti gerarchici configurati in classe-gruppo. Se significativo effettuare quindi una lettura su COGANRAG, impostando:

Nome campo Contenuto
ARAG-CLASSE La classe configurata
ARAG-TIP "R"
ARAG-ID DF-MPR-GRUPPO

Se il record non esiste segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-GRUPPO non trovata: DF-MPR-GRUPPO" Controllo DF-MPR-FASCIA Questo campo, non obbligatorio, potrà contenere un valore presente sulla famiglia di raggruppamenti gerarchici configurati in classe-fascia Se significativo effettuare quindi una lettura su COGANRAG, impostando:

Nome campo Contenuto
ARAG-CLASSE La classe configurata
ARAG-TIP "R"
ARAG-ID DF-MPR-FASCIA

Se il record non esiste segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-FASCIA non trovata: DF-MPR-FASCIA" Controllo DF-MPR-COLLEZIONE Questo campo, non obbligatorio, potrà contenere un valore presente sulla famiglia di raggruppamenti gerarchici configurati in classe-collezione Se significativo effettuare quindi una lettura su COGANRAG, impostando:

Nome campo Contenuto
ARAG-CLASSE La classe configurata
ARAG-TIP "R"
ARAG-ID DF-MPR-COLLEZIONE

Se il record non esiste segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-COLLEZIONE non trovata: DF-MPR-COLLEZIONE" Controllo DF-MPR-BRAND Questo campo, non obbligatorio, potrà contenere un valore presente sulla famiglia di raggruppamenti gerarchici configurati in classe-brand Se significativo effettuare quindi una lettura su COGANRAG, impostando:

Nome campo Contenuto
ARAG-CLASSE La classe configurata
ARAG-TIP "R"
ARAG-ID DF-MPR-BRAND

Se il record non esiste segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-BRAND non trovato: DF-MPR-BRAND" Controllo DF-MPR-STAMPA-LISTINO Questo campo potrà valere un valore da 0 a 1; altrimenti segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-STAMPA-LISTINO contiene un valore errato: DF-MPR-STAMPA-LISTINO" Controllo DF-MPR-QUALITA Se significativo, cercare se raccordato ad un codice "qualità" presente sulla tabella in AREA; scorrere quindi la tabella Qualità articoli (tipo FV, e verificare se esiste un record con EUTA-QLA-CODICE-HOST = DF-MPR-QUALITA; se non esiste segnalare Errore e skippare: "DF-MPR-KEY-HOST con codice qualità non raccordata: DF-MPR-QUALITA" Controllo DF-MPR-EVIDENZA Se significativo, cercare se raccordato ad un codice "evidenza" presente sulla tabella in AREA; scorrere quindi la tabella Evidenza commerciale articoli (tipo FW e verificare se esiste un record con EUTA-EVC-CODICE-HOST = DF-MPR-EVIDENZA; se non esiste segnalare Errore e skippare: "DF-MPR-KEY-HOST con codice evidenza non raccordata: DF-MPR-EVIDENZA" Controllo DF-MPR-FL-MODULA Se questo campo vale 1, allora sull'azienda dovrà essere attiva la gestione di Modula (AZ-MAG-MODULA <> " "). In caso contrario, segnalare Errore e skippare: "DF-MPR-KEY-HOST; DF-MPR-FL-MODULA attivo ma la gestione non è configurata" Controllo DF-MPR-MERCE-LISTINO-HOST Questo dato deve corrispondere al codice merce avanzato di una merce esistente. Se vuoto si prosegue senza nessun controllo. Se presente, quindi cercare su COGRACMC: Se esiste, il codice merce collegato dovrà essere memorizzato successivamente come Codice merce listino, altrimenti segnalare Errore e skippare: "DF-MPR-KEY-HOST contiene una merce listino non esistente: DF-MPR-MERCE-LISTINO-HOST". C.3 Importazione record Se tutti i controlli sono superati, proseguire con l'inserimento/variazione del contatto; quindi se DF-MPR-AREA-COD è: * Presente: Variazione * Non presente: Inserimento con attribuzione di un nuovo codice progressivo. Per quanto riguarda la parte di aggiornamento, fare riferimento a quanto viene già fatto su COGV06NO, per i soli campi previsti in DFMERCIPREST. In riferimento ai nuovi campi aggiunti a partire dal 18/09/2019

Nome campo Esportato su
DF-MPR-BRAND COGANRAG (vedi DF-MPR-CATEGORIA)
DF-MPR-FASCIA COGANRAG (vedi DF-MPR-CATEGORIA)
DF-MPR-COLLEZIONE COGANRAG (vedi DF-MPR-CATEGORIA)
DF-MPR-QTA-INNER COGMERA3.MA3-QTA-IMB-INNER
DF-MPR-QTA-PALLET COGMERA3.MA3-QTA-IMB-PALLET
DF-MPR-DES-WEB Memorizzazione su COGDESCR con la chiave:



NB: corrisponde ad una delle descrizioni web gestite sotto personalizzazione da Yashi
DF-MPR-MULTIPLO-VENDITA COGMERA3.MA3-QTA-MULT-VENDITA
DF-MPR-DATA-ARRIVO COGMERA3.MA3-DATA-ARRIVO
DF-MPR-LEAD-TIME COGMERCI.MER-TEMPO-APP
DF-MPR-PESO-NETTO COGMERCI.MER-PESO
DF-MPR-PUA COGMERCI.MER-PREZACQ
DF-MPR-PMA COGMERCI.MER-PMA
DF-MPR-POSTIT-VENDITA Verrà memorizzato su COGPOSTT come "post-it vendita" per la merce, con PTT-PROG = 1

C.3.0.1 Ricerca nuovo codice Il gruppo e il sottogruppo merce vengono prelevati ad una configurazione presente sul codice merce "999999999" Ora, se il codice raggiunge 99999 viene emesso un errore e il programma si blocca. Quindi, se il sottogruppo configurato è numerico (es. "02"), in questo caso invece di segnalare errore e bloccarsi: * Aumentare di 1 il codice sottogruppo; ad esempio portare da "02" a "03" * Aggiornare la suddetta configurazione * Ripetere la ricerca del codice libero (che potrebbe essere 1, ma anche essere già più alto) e proseguire C.3.1 Articolo su Modula Se l'articolo è nuovo, o se è stato appena attivato, è necessario eseguire l'attivazione (da implementare quando la procedura di attivazione manuale è completa). C.3.2 Casi particolari per Pieri (AZ-PERSONAL = k-personal-pieri)

Caso Descrizione Operazione
DF-MPR-STATO-RAGGR = 7 Merce in esaurimento -> Forziamo uno stato merce specifico su MER-VAL MER-VAL = "E"

C.3.3 Memorizzazione merce listino Se il dato DF-MPR-MERCE-LISTINO-HOST corrisponde ad una merce esistente, registrare il collegamento su COGMERLK:

Nome campo Contenuto
MLK-TIP "ML"
MLK-MERCE1 Merce in elaborazione
MLK-MERCE2 Codice merce listino
MLK-PRO 0

C.3.4 Memorizzazione dati COGMERLF Se il dato DF-MPR-VALORE-CONAI è significativo, creare o aggiornare un record su COGMERLF:

Nome campo Contenuto
MLF-MERCE Merce in elaborazione
MLF-FOR Inizializzato
MLF-CURRENCY W-CURRENCY-CONTO
MLF-CONAI-CURRENCY W-CURRENCY-CONTO
MLF-CONAI-UNI DF-MPR-VALORE-CONAI

C.4 Aggiornamento stato record Aggiornare il record DFMERCIPREST impostando:

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

In caso di inserimento dobbiamo anche raccordare il nuovo articolo a questo record, quindi aggiorneremo:

Nome campo Contenuto
DF-MPR-AREA-COD MER-CHIA
DF-MPR-AREA-CMA RCM-COD-AVA
DF-MPR-AGG-AREA 1

F - Cancellazione logica record non presenti (Operazione "SETTIMANALE") F.1 Blocco semaforo Lettura del record DFSEMAFORO:

Nome campo Note
DF-SMF-TABELLA MASSIVO

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

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

F.2 Elaborazione Scorrere COGMERCI. Per ciascun articolo non ancora "cancellato" fare una ricerca su DFMERCIPREST, usando la chiave DF-MPR-CHIA2:

Nome campo Contenuto
DF-MPR-KEY-HOST RCM-COD-AVA

Se il record non viene trovato, marcare la merce come cancellata:

Nome campo Contenuto
MER-VAL "C"
MER-DATA-AGG data odierna

F.3 Rilascio semaforo Lettura del record DFSEMAFORO:

Nome campo Note
DF-SMF-TABELLA MASSIVO

Dopodichè aggiornare il semaforo impostando:

Nome campo Note
DF-SMF-USO-AREA 0

D - Sincronizzazione (esportazione) Fase non prevista in questo programma E - Chiusura E.1 Rilascio semaforo Aggiornare il record semaforo relativo a DFMERCIPREST, impostando

Nome campo Note
DF-SMF-USO-AREA 0

E.2 Chiusura tabelle Chiudere le tabella DFMERCIPREST 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

Estratto da documentazione interna ClickUp