Esempio di personalizzazione dell'anagrafica clienti e fornitori

Da SIGLAkb.

Dp-ingranaggio3.png SIGLA® consente di operare l’aggiunta di campi di input su alcune delle finestre di dialogo gestite. I campi di input aggiuntivi possono essere normali (la gestione della memorizzazione e del recupero dal database sono in questo caso interamente demandate a funzioni personalizzate) o automatici.

I campi automatici consentono di operare delle aggiunte di informazione che vengono automaticamente memorizzate e recuperate nelle tabelle del database.

L’operazione avviene definendo in un file ASCII, il cui nome varia in funzione della finestra che si desidera personalizzare, un insieme di istruzioni in grado di descrivere i campi da aggiungere.

Dp-Pointing256.png Per i dettagli vedi la voce Personalizzazione delle finestre.


Supponendo, ad esempio, di voler aggiungere tre campi automatici (una data, un numero e un testo) all'anagrafica dei clienti e fornitori, è necessario generare con un comune editor, come il Blocco note, il file ASCII CLIFOR.USR definito come segue:

 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definizione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d’immissione
 DD08020031USR0001
 DN13220051USR0002
 DT20020071USR0004 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 

Il file CLIFOR.USR deve essere posizionato nella cartella di installazione di SIGLA®.

Dp-acceptn72x72.png I nomi dei campi devono lunghi 11 caratteri, quindi nel file devono essere scritti con spazi bianchi di riempimento a destra fino al raggiungimento di tale lunghezza.


La struttura della tabella CLIFOR nel database dei dati aziendali deve essere ovviamente modificata con l'aggiunta dei tre campi

  • USRDATA char(8)
  • USRIMPORTO numeric
  • USRDESCR char(20)

Questa operazione può essere effettuata attraverso gli appositi strumenti di amministrazione messi a disposizione dai vari database manager e, per la fase di creazione delle tabelle attraverso il programma di Configurazione implementando la funzione SIGLAPPCreateDitta.

La figura 1 mostra come si presenta usualmente la finestra di dialogo senza alcuna personalizzazione.

Figura 1: Anagrafica cliente/fornitore/prospect

La figura 2 invece mostra l'aspetto della stessa finestra con la personalizzazione.

Figura 2: Pagina Note nell'anagrafica cliente/fornitore/prospect

All'interno dell'anagrafica è stata aggiunta una nuova pagina denominata Note, nella quale sono contenuti i dati aggiuntivi richiesti (data, importo e descrizione).

I nuovi campi inseriti sono abilitati all'input da parte dall’utente e, in quanto campi automatici, la gestione memorizzazione delle informazioni è gestita da SIGLA®.
In fase di salvataggio di un record le informazioni inserite nei campi a video sono memorizzate nei campi aggiuntivi precedentemente inseriti nella tabella CLIFOR.
In fase di consultazione di un record esistente le informazioni mostrate a video sono automaticamente reperite da tali campi.

Fino a questo punto tutte le operazioni di personalizzazione sono state completate senza la scrittura di codice, le successive fasi invece fasi prevedono la scrittura di codice per l'utilizzo della libreria SIGPPDLL/SPPFrame.

Supponendo di voler aggiungere un controllo sul campo Data in modo da verificarne la validità, si deve intervenire implementando la funzione SIGLAPPSaveObject, come mostrato nel seguito (nell'esempio si prevede di eseguire il controllo attraverso una specifica funzione realizzata in una DLL aggiuntiva chiamata custom.dll, caricata nella SIGLAPPStart, inizializzata nella SIGLAPPInit e rilasciata nella SIGLAPPStop).

 
 
 BOOL DLLCALL SIGLAPPSaveObject(DPObject *theObject,int theActionID)
 {
  DPUsrFld *param;
  char buffer[128];
 
  if(theActionID==-1000)
  {
  param=(DPUsrFld *) theObject;
 
  // controlla il nome della finestra
  if(strcmp(param->videoname,”CLIFOR”)==0)
  {
  switch(param->actualfld)
  {
  // controlla il campo 0 (data)
  case 0:
  // torna FALSE se la data non è valida
  {
  int ret;
  int (FAR PASCAL *ValidateDate) (LPSTR xdate);
  FARPROC pp;
 
  if(customdll>HINSTANCE_ERROR)
  {
  pp=GetProcAddress(customdll,"VALIDATEDATE");
  if(pp!=NULL)
  {
  // il controllo di validità della data viene eseguito
  // da una funzione della libreria custom.dll
  strcpy(buffer,param->usrfld[0]);
  ValidateDate=(void (FAR PASCAL *)()) pp;
  ret=(*ValidateDate)(buffer);
 
  if(ret==0) {
  // la data è valida e viene copiata in usrfld[0] in
  // modo da essere aggiornata a video
  strcpy(param->usrfld[0],buffer);
  return(TRUE);
  }
  else return(FALSE);
  }
  }
  }
  }
  }
  return TRUE;
 }
 


Dp-editn72x72.png Le chiamate con actionid -1000 possono essere attivate anche per SPPFrame ed intercettate nella funzione SPPFrameIntSaveObject della libreria SPPFrOld. Per l'attivazione è necessario implementare l'actionid -999 nella funzione SPPFrameIntSaveObject in maniera che il valore di ritorno della funzione sia False.

Se non si implementa l'actionid -999 per la SPPFrameIntSaveObject o se il ritorno è True le successive uscite -1000 continueranno ad essere indirizzate alla SIGPPDLL.DLL.


Le informazioni personalizzate aggiunte alla finestra di dialogo dell'anagrafica dei clienti e fornitori possono essere utilizzate anche in altre parti della procedura come, ad esempio, la stampa di una bolla.

Configurando il CAMPO PERSONALIZZATO SU CLIFOR durante la fase di impostazione del fincato del documento per le stampe testo, oppure accedendo alla pagina Controllo e selezionando l'opzione CLIFOR per le stampe grafiche (vedi figure 3 e 4 sotto) è possibile esporre in stampa anche queste informazioni aggiunte alla tabella CLIFOR.

Figura 3: Campo personalizzato su CLIFOR - stampa testo

Figura 4: Disegno stampa grafica

Bibliografia

Voci correlate

anagrafica dei clienti e fornitori
Come si personalizza SIGLA
Configurazione
La libreria SIGPPDLL
La libreria SPPFrame
Personalizzazione delle finestre
SIGLAPPCreateDitta Stampe testo