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