Vai al contenuto

Note tecniche DB frontiera

Note tecniche, gestione listini/sconti/raggruppamenti, logiche e configurazioni di connessione.

Prinz

Attività Assist Tabella Attività Host
Importa DFANAGR Esporta
Importa DFINDIR Esporta
Importa DFCONTATTI Esporta
Importa DFMERCIPREST Esporta
Esporta DFDOCTES
DFDOCDET
(classe "DM")
Importa
Importa DFMATRICOLEASSI Esporta
Importa DFDISTINTAMATR Esporta
Importa DFTECNICI Esporta
Importa DFCHIAMATE Esporta

Altre tabelle da definire (Pieri)

  • ·Assistenza
    • oGiacenze di magazzino
    • oMatricole di assistenza
    • oMagazzini (furgoni)
    • oKit (distinte base)
  • ·Dati commerciali clienti (struttura tipo CRM??) in import
  • ·Struttura clienti/destinazioni/contatti anche verso HOST, compreso eventuale struttura CRM
  • ·Ordini (testata/dettaglio), comprendono la password di sblocco
  • ·Stato clienti
    • oTabella configurabile da agganciare al cliente su un nuovo campo
    • oSu ciascun elemento permettere di gestire flag che determinano se possibile emettere documenti e quali
  • ·Situazione finanziaria clienti (importazione):
    • oFatturato (dettaglio? o sintesi) con dati di pagamento per ottenere l'esposizione
    • oVedi le tabelle esportate attualmente con gli SWA
  • ·Gestione set tipico: dipende dalla categoria cliente
    • oProdotti tipicamente venduti
    • oAltri prodotti che si vuole spingere
    • oNovità
  • ·Importazione storico ordini da gestionale
  • ·Budget omaggi: importo disponibile per un certo periodo x agente; importo "consumato"
  • ·Backorder da importare
    • oVedere come viene passato da X3: come ordine nuovo o sull'ordine esistente
  • ·Promozioni: da importare
  • ·Incassi raccolti dall'agente: da esportare 
  • ·Mail di conferma: Da parte nostra o dal gestionale quando viene "confermato"?

Note tecniche ed esempi vari

Gestione listini, sconti e raggruppamenti

Gestione listini Sulla tabella prezzi DFPREZZI, per ciascun articolo possono essere indicati prezzi diversi per ciascun articolo. La molteplicità può dipendere dalla presenza di diverse date decorrenza per ciascun prezzo, ma anche dalla presenza a parità di data di prezzi diversi su "listini" diversi: * Listini standard: associati ad un listino standard di AREA * Listini particolari per cliente: associati direttamente ad un cliente In questo caso sul campo "DF_PRZ_LISTINO_HOST", chi si occupa di esportare questi dati potrà indicare direttamente il codice cliente come già esportato su DFANAGR (DF_ANA_KEY_HOST), oppure un riferimento listino standard. In fase di importazione su AREA il programma effettuerà la seguente logica di ricerca: 1. DF_PRZ_LISTINO_HOST corrisponde ad un cliente? Se si, il prezzo sarà un prezzo particolare per cliente 2. DF_PRZ_LISTINO_HOST è collegato ad un listino standard nella tabella listini? Se si, il prezzo sarà inserito sul listino trovato 3. Altrimenti sarà restituito un errore Sconti e raggruppamenti La gestione delle famiglie/gruppi di sconto e la loro relazione con anagrafiche articoli e clienti merita un approfondimento. Su AREA esistono svariati metodi di applicazione di sconti particolari ad una vendita, che possono essere riassunti in due tipologie particolari: * Sconti diretti su anagrafica: al cliente "Rossi" codice "1027", decido di applicare lo sconto 50% sull'articolo "ART1" e lo sconto "30%+10%) sull'articolo "ART2" * Gruppi sconto per cliente: creo dei gruppo sconto (in altri ERP chiamati anche "ContrattI") in cui vado ad attribuire una serie di condizioni, che possono riguardare singoli articoli, o famiglie di articoli. Ogni gruppo sconto potrà essere assegnato ad uno o più clienti. Vediamo quindi le tabelle di frontiera interessate e come popolarle nei due casi. Sconti diretti su anagrafica L'esempio sopra descritto dovrà essere esportato nel seguente modo:

DFGRUPPISCONTO
Sarà presente un solo record per ciascun cliente che ha sconti particolari
Nome campo
DF_GSC_KEY_HOST
DF_GSC_TIP
DF_GSC_ANA_HOST
DF_GSC_AREA_GRUPPO
DF_GSC_DES
Tabella: DFSCONTI
Questa tabella conterrà 1 record per ciascun articolo a cui è stato attribuito uno sconto sul cliente
Nome campo
DF_SCO_GSC_HOST
DF_SCO_FAM_SCONTI
DF_SCO_MPR_HOST

Gruppi sconto

DFGRUPPISCONTO
Un record per ciascun gruppo sconto o contratto
Nome campo
DF_GSC_KEY_HOST
DF_GSC_TIP
DF_GSC_ANA_HOST
DF_GSC_DES
Tabella: DFSCONTI
Dettaglio di ogni singolo gruppo sconto
Nome campo
DF_SCO_GSC_HOST
DF_SCO_FAM_SCONTI
DF_SCO_MPR_HOST
DF_SCO_PREZZO
DF_SCO_SCONTO1
DF_SCO_SCONTO2
Tabella: DFANAGRSCONTI
Relazione tra i gruppi sconto/contratti e i clienti a cui sono stati assegnati
Nome campo
DF_AGS_ANA_HOST
DF_AGS_GSC_HOST

Gestione listini per fascie di quantità

Per poter sincronizzare eventuali listini per fascia di quantità, ipotizziamo di usare la struttura dei gruppi sconto. In questa modalità il tipo di gruppo sconto sarà "L" (Listino). Dovrà essere considerato sempre come se fosse un listino per più clienti, anche se in realtà vale solo per 1. Listino particolare cliente Db frontiera Proviamo a immaginare un cliente che per il db HOST ha codice "C012345", e ha un listino per fascie di quantità.

DFGRUPPISCONTO
Sarà presente un solo record per ciascun cliente che ha un listino particolare
Nome campo
DF_GSC_KEY_HOST
DF_GSC_TIP
DF_GSC_ANA_HOST
DF_GSC_AREA_GRUPPO
DF_GSC_DES
Tabella: DFSCONTI
Questa tabella conterrà 1 record per ciascun articolo per cui è presente un listino
Nome campo
DF_SCO_GSC_HOST
DF_SCO_FAM_SCONTI
DF_SCO_MPR_HOST
DF_SCO_QTA_DA
DF_SCO_QTA_A
DF_SCO_PREZZO
Note

In questo esempio, essendo un listino particolare per cliente, su DFANAGRSCONTI sarà presente un solo record:

Tabella: DFANAGRSCONTI
Relazione tra i listini e i clienti a cui sono stati assegnati
Nome campo
DF_AGS_ANA_HOST
DF_AGS_GSC_HOST

Listino standard Db frontiera Questa ipotesi è del tutto simile a quella precedente, con la differenza che il listino sarà assegnato a + clienti.

DFGRUPPISCONTO
Sarà presente un solo record per ciascun listino
Nome campo
DF_GSC_KEY_HOST
DF_GSC_TIP
DF_GSC_ANA_HOST
DF_GSC_AREA_GRUPPO
DF_GSC_DES
Tabella: DFSCONTI
Questa tabella conterrà 1 record per ciascun articolo per cui è presente un listino
Nome campo
DF_SCO_GSC_HOST
DF_SCO_FAM_SCONTI
DF_SCO_MPR_HOST
DF_SCO_QTA_DA
DF_SCO_QTA_A
DF_SCO_PREZZO
Note

In questo esempio, essendo un listino particolare per cliente, su DFANAGRSCONTI sarà presente un solo record:

Tabella: DFANAGRSCONTI
Relazione tra i listini e i clienti a cui sono stati assegnati
Nome campo
DF_AGS_ANA_HOST
DF_AGS_GSC_HOST

Logiche e Configurazioni di Connessione

Sul DB di frontiera la logica di connessione viene espressa da questi concetti: * gli oggetti sul DB sono di proprietà di uno specifico utente owner (solitamente il superutente postgres), il proprietario dell'oggetto è automaticamente l'utente di connessione che istanzia il comando di creazione. Solo il proprietario di un oggetto ha il diritto di dropparlo * gli oggetti del DB (tabelle, sequenze) vengono grantati(=concesso il diritto) ad un unico utente di gruppo group_role

    • la connessione al DB da parte di applicazioni client viene divisa eseguita tramite il login_role o utente di accesso:
    • gli utenti ...EU_... saranno gli External User = l'utente dell'applicazione cliente che si connette alla frontiera
  • gli utenti ...IU_... saranno gli Internal User = l'utente dell'applicazione Area che si connette alla frontiera
  • tali utenti hanno grantato il group_role

      • in questo modo la parte applicativa accede come login_role ma opera sul DB grazie al group_role, ed in questo modo se voglio impedire la connessione ad una parte applicativa basta che gli vengano revocati i diritti di group_role o venga cancellato, e questo non intacca l'operatività degli altri utenti. Per questo motivo i programmi COBOL che devono accedere al DB hanno due tipi di connessione diversa:
  • una connessione "amministrativa" a livello DDL (Data Description Level) che permette drop e creazione di oggetti
  • una connessione "di uso" che permette solo le consuete istruzioni SQL (select, delete, join, insert, update) Le tabelle vengono create tramite il prg DFINIT deve usare una connessione amministrativa ed un nuovo parametro che indica a chi grantare i diritti una volta creato l'oggetto (il proprietario dell'oggetto è automaticamente l'utente di connessione che istanzia il comando di creazione) che usa per la connessione due nuovi parametri:
    • db-ddl-conn-string
    • db-ddl-grant-role-string In questo modo le tabelle e gli oggetti ad essa collegati vengono create con l'utente specificato nella connessione e poi vengono grantate (concesse in uso) agli utenti (role) specificati nella seconda configurazione coinvolta. Questo perchè solo il proprietario (owner) ha il diritto di droppare e creare oggetti sul DB I programmi applicativi che inseriscono e leggono i dati invece usaranno il parametro di connessione "di uso":
    • db-conn-string Keyword index No index entries found.

Settaggi caratteristici ODBC

Ovviamente la macchina che tenta la connessione deve avere abiitato l'accesso sull'infrastruttura di sicurezza Postgres (pg_hba.conf) e sul firewall dell'infrastruttura. si deve creare una fonte dati di sistema ODBC a 32 bit, usando il driver PostgreSQL ANSI: un esempio di settaggi:

nelle options del datasource se ci sono campi carattere con un size > 255 allora occorre settare la Max Varchar ad un valore adeguato

verificare che la fonte dati NON sia in read only:


Estratto da documentazione interna ClickUp