Ipotizziamo di voler creare una scheda personalizzata di gestione clienti, che conterrà una matrice con Nome e Cognome del cliente e il numero di ordine a lui intestato e delle etichette di testo che evidenziano alcuni dati importanti (n° di telefono, indirizzo, P. IVA).

Assicuriamoci di essere nella nostra libreria personale (W_CODICENOME), collochiamo nel file sorgente SCP_SCH un nuovo membro dandogli nome TUTORIAL_. 

Aprendo questo membro con l’editor di script, potremo modificare il nostro script di scheda, scrivendo le istruzioni.

1. Impostazione della struttura grafica

Iniziamo scrivendo un intestazione per la nostra scheda:

::G.SEZ Pos(1)
::G.SUB.LAB Tit=”*NONE”
::G.SET.LAB Align=”center” FontSize=”24″
::D.OGG D(GESTIONE CLIENTI)

La prima operazione da compiere è impostare la struttura grafica delle sottofinestre che compongono la scheda. 

::G.SEZ Pos(2)   →  per la matrice dei clienti e dei loro ordini
::G.SEZ Pos(3)     →  per i dati specifici correlati ai clienti

La sezione 3 va ripartita a sua volta in 3 finestre (in cui indicheremo nelle etichette  il numero di telefono,l’indirizzo e la P. IVA) , quindi :

 ::G.SEZ Pos(3A)
::G.SEZ Pos(3B)
::G.SEZ Pos(3C)

Il passo successivo è la definizione delle subsezioni : bisogna dire quali componenti chiamare per la rappresentazione delle informazioni in ogni sezione. 


Con l’istruzione :: G.SUB specifichiamo, immediatamente dopo la definizione di ogni sezione, il tipo di informazione da essa rappresentata e un titolo per la finestra.

Matrice per i dati di base  →  ::G.SUB.MAT Tit=”Dati di base”
Label per il numero di telefono →  ::G.SUB.LAB Tit=”Telefono”
Label per l’indirizzo  →  ::G.SUB.LAB Tit=”Indirizzo”
Label per la Partita IVA  →  ::G.SUB.LAB Tit=”PIva”

N.B. = La label non è un componente, ma un metodo interno alla scheda. Non viene chiamato alcun componente esterno per la presentazione, è la scheda stessa che lo visualizza.

2. Indicazione dei dati

Dopo avere definito il posizionamento delle finestre e che tipo di dati conterranno è necessario specificare quali dati verranno rappresentati. 

All’interno sempre della nostra libreria personale, ma nel file sorgente SCP_SET creiamo un nuovo membro dandogli il nome DATI_TUT. all’interno di questo membro creiamo uno script di Setup con dei dati finti che richiameremo poi nel nostro script di scheda, simulando quindi le chiamate ai servizi tramite la FUN (B£SER_46).

all’interno di DATI_TUT creiamo i nostri dati finti:

::TBL Nam=”DATI_BASE”

 ::COL Cod=”ID” Txt=”ID” Lun=”10″ IO=”O” Ogg=”NR”

 ::COL Cod=”NOME” Txt=”Nome” Lun=”10″ IO=”O” Ogg=”**”

 ::COL Cod=”COGNOME” Txt=”Cognome” Lun=”30″ IO=”O” Ogg=”**”

 ::COL Cod=”ORDINE” Txt=”n°Ordine” Lun=”30″ IO=”O” Ogg=”**”

 ::COL Cod=”ARTICOLI” Txt=”articoli” Lun=”30″ IO=”H” Ogg=”**”

 ::COL Cod=”TELEFONO” Txt=”telefono” Lun=”30″ IO=”H” Ogg=”**”

 ::COL Cod=”INDIRIZZO” Txt=”indirzzo” Lun=”30″ IO=”H” Ogg=”**”

 ::COL Cod=”PIVA” Txt=”PartitaIva” Lun=”30″ IO=”H” Ogg=”**”

::DAT Fld=”1|Mario|Rossi|23456|ART1 ART2 ART3|331-1421321|ERBUSCO, via Mazzini, 14|123456789″

::DAT Fld=”2|Giovanni|Verdi|12121|ART1 ART2|332-1532167|DESENZANO, via Garibaldi, 12|987654321″

::DAT Fld=”3|Simona|Gialli|89765|ART1 ART2 ART3 ART4|333-1765432|MARCHENO,via Cavour, 34|223455667″

::DAT Fld=”4|Michele|Bianchi|23679|ART1 ART2 ART3 ART4 ART5 |334-2345678|ISEO, via XX Settembre, 76|098734567″

::DAT Fld=”5|Lucia|Azzurri|12345|ART1|335-2345679|BRESCIA, via Magenta,88|659594392″

tornando poi al nostro SCP_SCH TUTORIAL_ scriveremo le seguente funzione:

Per i dati di base si chiama una FUN che produce una matrice, Prendendo i dati all’interno dello script SCP_SET, con il nome DATI_TUT e indichiamo poi quale sezione specifica di dati vogliamo (DATI_BASE):

::D.FUN.STD F(EXB;B£SER_46;WRK.SCP) 1(MB;SCP_SET;DATI_TUT) 2(;;DATI_BASE)

Per vedere il numero di telefono, l’indirizzo e la partita IVA ci serviamo di alcune variabili che settiamo all’ inizio del nostro foglio come vuote: 

::S.VAR.VAL Sch.Var=”Tel()”
::S.VAR.VAL Sch.Var=”Indir()”
::S.VAR.VAL Sch.Var=”ParIva()”

e le valorizziamo poi, utilizzando dei dinamismi all’interno della nostra matrice:

::G.DIN Where=”Telefono” Sch.Var=”Tel([TELEFONO])”
::G.DIN Where=”Indirizzo” Sch.Var=”Indir([INDIRIZZO])”
::G.DIN Where=”PartitaIVA” Sch.Var=”ParIva([PIVA])”

per vederle poi all’interno delle etichette che abbiamo creato appositamente per ogni sezione indicheremo quale valore vogliamo vedere:

nella Label del telefono →  ::G.SUB.LAB Tit=”Telefono”
    ::D.OGG D([Tel])

nella Label del Indirizzo → ::G.SUB.LAB Tit=”Indirizzo”
    ::D.OGG D([Indir])

nella Label della Partita IVA → ::G.SUB.LAB Tit=”PartitaIVA”
  ::D.OGG D([ParIva])

ASPETTO GRAFICO



AL CLICK:

 

 

SCRIPT COMPLETO – PRIMA PARTE

::S.VAR.VAL Sch.Var=”Tel()”

::S.VAR.VAL Sch.Var=”Indir()”

::S.VAR.VAL Sch.Var=”ParIva()”

::G.SEZ Pos(1)

::G.SUB.LAB Tit=”*NONE”

::G.SET.LAB Align=”center” FontSize=”24″

::D.OGG D(GESTIONALE CLIENTI)

::G.SEZ Pos(2)

::G.SUB.MAT Tit=”*NONE”

::G.DIN Where=”Telefono” Sch.Var=”Tel([TELEFONO])”

::G.DIN Where=”Indirizzo” Sch.Var=”Indir([INDIRIZZO])”

::G.DIN Where=”PartitaIVA” Sch.Var=”ParIva([PIVA])”

::D.FUN.STD F(EXB;B£SER_46;WRK.SCP) 1(MB;SCP_SET;DATI_TUT) 2(;;DATI_BASE)

::G.SEZ Pos(3)

::G.SEZ Pos(3A)

::G.SUB.LAB Tit=”Telefono”

::D.OGG D([Tel])

::G.SEZ Pos(3B)

::G.SUB.LAB Tit=”Indirizzo”

::D.OGG D([Indir])

::G.SEZ Pos(3C)

::G.SUB.LAB Tit=”PartitaIVA”

::D.OGG D([ParIva])

3. creazione di sottoschede/più subsezioni in una sezione

dividiamo la nostra scheda in due sottoschede: una contenente i dati di base (che è quella che abbiamo realizzato finora) e una per la visualizzazione degli ordini e degli articoli che essi contengono). Per far questo creiamo una scheda con una sola sezione, corrispondente all’intera finestra della scheda, a cui associamo non una ma due subsezioni di tipo scheda (visualizzate in alternativa nella stessa finestra).

Lo script della scheda madre è :

::G.SEZ Pos(A)
  ::G.SUB.SCH Tit=”Dati di base”
  ::D.SCH Nam(BASE)
  ::G.SUB.SCH Tit=”Dettaglio ordini”
  ::D.SCH Nam(ORDINI)

L’istruzione : : D.SCH indica di aprire una sottoscheda definita nello stesso membro della scheda corrente; : : D.SCH Nam(SUB) è l’equivalente abbreviato di : : D.FUN.STD F(EXD;*SCO;) 1(stesso oggetto) 2(stesso membro) 4(;;SUB), dove nell’oggetto 4 della chiamata si specifica la sottoscheda.

4. una sottoscheda

Le sottoschede sono definite da queste due istruzioni :

:: I.SCH Nam(BASE) 

[SCRIPT]
     
:: I.SCH.END

quindi andremo ad inserire lo script realizzato in precedenza con i dati di base all’interno di queste due istruzioni in modo da racchiuderle nella sottoscheda.

5. Dinamicità tra subsezioni

Ora creiamo anche la sottoscheda per gli ordini.
Nella subsezione in alto vengono presentati i n° d’ordine dei clienti, cliccando su uno degli ordini si apre il caricamento della subsezione in basso che presenta il dettaglio degli articoli dell’ordine selezionato.
Questo comportamento viene ottenuto specificando un legame di dinamicità tra le due subsezioni : nella definizione della subsezione “Ordini” si specifica che un click nella subsezione indurrà dinamicità nella subsezione “dettaglio” : 

inserendo sotto le altre variabili la variabile NumOrd che ci permetterà di richiamare nello script di SETUP i dati relativi ad un numero d’ordine selezionato: 

::S.VAR.VAL Sch.Var=”NumOrd()”

e andiamo anche a creare nel nostro script DATI_TUT la tabella degli ordini e le tabelle specifiche di ogni ordine contenenti gli articoli con le relative quantità:

::TBL Nam=”ORDINI”

 ::COL Cod=”ORDINE” Txt=”n°Ordine” Lun=”30″ IO=”O” Ogg=”**”

  ::DAT Fld=”23456″

  ::DAT Fld=”12121″

  ::DAT Fld=”89765″

::TBL Nam=”ORD_23456″

  ::COL Cod=”ARTICOLO” Txt=”” Lun=”30″ IO=”O” Ogg=”**”

  ::COL Cod=”QTA” Txt=”” Lun=”30″ IO=”O” Ogg=”**”

  ::DAT Fld=”Articolo 01|3 pz”

  ::DAT Fld=”Articolo 02|1 pz”

  ::DAT Fld=”Articolo 03|5 pz”

  ::DAT Fld=”Articolo 04|1 pz”

  ::TBL Nam=”ORD_12121″

  ::COL Cod=”ARTICOLO” Txt=”” Lun=”30″ IO=”O” Ogg=”**”

  ::COL Cod=”QTA” Txt=”” Lun=”30″ IO=”O” Ogg=”**”

  ::DAT Fld=”Articolo 05|10 pz”

  ::DAT Fld=”Articolo 06|20 pz”

  ::TBL Nam=”ORD_89765″

  ::COL Cod=”ARTICOLO” Txt=”” Lun=”30″ IO=”O” Ogg=”**”

  ::COL Cod=”QTA” Txt=”” Lun=”30″ IO=”O” Ogg=”**”

  ::DAT Fld=”Articolo 07|3 pz”

  ::DAT Fld=”Articolo 08|1 pz”

  ::DAT Fld=”Articolo 09|5 pz”

tornando poi al nostro SCP_SCH TUTORIAL_ andiamo a creare la struttura della nostra seconda sottoscheda:

::I.SCH Nam(ORDINI)

::G.SEZ Pos(1)

::G.SUB.MAT Tit=”N° ORDINE”

::D.FUN.STD F(EXB;B£SER_46;WRK.SCP) 1(MB;SCP_SET;DATI_TUT) 2(;;ORDINI)

::G.SEZ Pos(2)

::G.SUB.MAT Tit=”dettaglio ordine” Load=”D”

::D.FUN.STD F(EXB;B£SER_46;WRK.SCP) 1(MB;SCP_SET;DATI_TUT) 2(;;[NumOrd])

::I.SCH.END

nella  prima sezione abbiamo inserito una matrice che visualizzerà i n° d’ordine, andando a prenderli dal nostro script DATI_TUT, nella sottosezione nominata “ORDINI”.

nella seconda sezione abbiamo inserito una seconda matrice con caricamento differito (Load =”D”) che riceve i dati dalla fun che in base a come è valorizzata la variabile NumOrd, richiama il dettaglio degli ordini corrispondenti.

Ora aggiungiamo il dinamismo alla nostra Matrice in Pos (1) che al click su un n° d’ordine, andrà a valorizzare la nostra variabile NumOrd, utilizzata poi all’interno della Fun per riempire la nostra seconda matrice in Pos (2) con il dettaglio di quell’ordine selezionato.

::G.DIN Where=”dettaglio ordine” When=”Click” Sch.Var=”NumOrd([ORDINE])”

ASPETTO GRAFICO

AL CLICK:

SCRIPT COMPLETO

::S.VAR.VAL Sch.Var=”Tel()”

::S.VAR.VAL Sch.Var=”Indir()”

::S.VAR.VAL Sch.Var=”ParIva()”

::S.VAR.VAL Sch.Var=”NumOrd()”

::G.SEZ Pos(A)

  ::G.SUB.SCH Tit=”Dati di base”

  ::D.SCH Nam(BASE)

  ::G.SUB.SCH Tit=”Dettaglio ordini”

  ::D.SCH Nam(ORDINI)

::I.SCH Nam(BASE)

::G.SEZ Pos(1)

::G.SUB.LAB Tit=”*NONE”

::G.SET.LAB Align=”center” FontSize=”24″

::D.OGG D(GESTIONALE CLIENTI)

::G.SEZ Pos(2)

::G.SUB.MAT Tit=”*NONE”

::G.DIN Where=”Telefono” Sch.Var=”Tel([TELEFONO])”

::G.DIN Where=”Indirizzo” Sch.Var=”Indir([INDIRIZZO])”

::G.DIN Where=”PartitaIVA” Sch.Var=”ParIva([PIVA])”

::D.FUN.STD F(EXB;B£SER_46;WRK.SCP) 1(MB;SCP_SET;DATI_TUT) 2(;;DATI_BASE)

::G.SEZ Pos(3)

::G.SEZ Pos(3A)

::G.SUB.LAB Tit=”Telefono”

::D.OGG D([Tel])

::G.SEZ Pos(3B)

::G.SUB.LAB Tit=”Indirizzo”

::D.OGG D([Indir])

::G.SEZ Pos(3C)

::G.SUB.LAB Tit=”PartitaIVA”

::D.OGG D([ParIva])

::I.SCH.END

::I.SCH Nam(ORDINI)

::G.SEZ Pos(1)

::G.SUB.MAT Tit=”N° ORDINE”

::G.DIN Where=”dettaglio ordine” When=”Click” Sch.Var=”NumOrd([ORDINE])”

::D.FUN.STD F(EXB;B£SER_46;WRK.SCP) 1(MB;SCP_SET;DATI_TUT) 2(;;ORDINI)

::G.SEZ Pos(2)

::G.SUB.MAT Tit=”dettaglio ordine” Load=”D”

::D.FUN.STD F(EXB;B£SER_46;WRK.SCP) 1(MB;SCP_SET;DATI_TUT) 2(;;[NumOrd])

::I.SCH.END