Vai al contenuto

Restrizioni Applicazioni per Gruppo Utente

Note

Se hai saltato il tutorial precedente, vuoi ripristinare qualcosa dopo aver sperimentato o vuoi sincronizzare che quello che vedi negli screenshot, qui trovi il file .eap. Impara a ripristinare usando i file .eap. Se non usi il file .eap, quello che vedi potrebbe differire leggermente dagli screenshot.

Questo tutorial ti insegna a impiegare i Gruppi Utenti e le formule per restringere la visualizzazione e l'editabilità dati nelle applicazioni. Inoltre, imparerai nuovi strumenti per condividere i tuoi dati con altri utenti del Dominio.

Ora, devi migliorare Family Budget (i.e. Personal Budget rinominata e pronta per essere estesa). In particolare, aggiungerei a Family Budget le seguenti funzionalità tramite il Design Mode:

  • Una Lookup che riempie la cella automaticamente con il membro della famiglia che esegue la transazione.

  • La possibilità di restringere chi può selezionare un metodo di pagamento per riempire una riga.

  • Un pulsante per condividere una riga tramite un link.

  • Una notifica email solo per il gruppo utente Budget Manager che informa di una spesa fatta.

Note

Il tutorial assume tutte le nozioni di La tua prima Applicazione. In particolare, il tutorial Lookup: celle con una lista di opzioni da scegliere. Riguarda la prima parte in caso di necessità.

Help

Se vedi la barra superiore di colore arancio invece che nera, non puoi fare modifiche all'applicazione. La ragione è spiegata qui.

Il tutorial richiede la creazione di un nuova applicazione e l'estensione delle applicazioni e storage esistenti come segue:

  • Un applicazione per registrare i membri della famiglia che usano l'applicazione.

    Aggiungi i permessi per accedere all'applicazione Family Members Register solo ai gruppi Parents e Budget Manager. (Vedi il precedente tutorial per sapere come fare.)

  • Accedi allo Storage Editor di Transactions per creare una Lookup per i membri della famiglia:

    • Aggiungi il campo Numeric FamilyMemberId allo storage Transactions.

    • Creare una relazione di Lookup fra FamilyMemberId e il campo Identity IdFamilyMember dello storage Family Members. Nomina la relazione Family_Members_Lookup.

  • Accedi allo Storage Editor di Payment Methods. Esegui i seguenti cambiamenti per creare una Multiselection per selezionare i familiari che possono usare un metodo di pagamento:

    • (1) Aggiungi un campo di tipo Multiselection Authorizationallo storage Payment Methods.

    Info

    Le Multiselection sono un tipo di campo che può registrare valori multipli. Funzionano come le Lookup, ma possono registrare una o più opzioni come lista. Quando crei una Multiselection nello Storage Editor, il pannello Field Mapping richiede uno storage con le opzioni da mostrare. Non devi creare una relazione manualmente come Lookup e Dettagli.

    • (2) Dalla colonna Advanced della riga della Multiselection, scegli lo storage Family Members e il campo IdFamilyMember. Lo Storage Editor stabilirà una relazione fra i due campi automaticamente.

Restrizioni sulle transazioni per persona e gruppo

Personal Budget era un'applicazione realizzata per una sola persona. Ora, supponi che tu e l'intera famiglia Doe dobbiate usarla per gestire il budget familiare. I requisiti dell'applicazione sono cambiati:

  • Dovrai trovare un modo di tracciare chi ha eseguito una spesa. In questo caso, necessiti di una Lookup con tutti i membri della famiglia per selezionare chi ha inserito una riga.

  • Solo i membri di Parents (i.e. Jane Doe) deve eseguire modifiche alle entrate e alle uscite già registrate.

  • Per evitare confusione, i membri della famiglia possono vedere solo le loro spese. Eccezione fatta per i gruppi utenti Parents e Budget Manager.

  • L'intera gestione dell'applicazione Family Budget deve ricadere nel controllo di John Doe. John è membro di Budget Manager.

In questo tutorial stai per incorporare i cambiamenti sopra nell'applicazione Family Budget. (Family Budget era in precedenza Personal Budget.)

Configura la lookup Family Member

Configura la Lookup per registrare chi ha eseguito la transazione o ricevuto denaro.

Nelle sezioni seguenti, applicherai delle formule per la restrizione a questa Lookup.

  1. Accedi di nuovo al Design Mode dell'applicazione Family Budget.

  2. Nel sotto-pannello Master, rinomina la colonna di Lookup da FamilyMemberId a Family Member.

  3. Configura la Lookup della colonna Family Member come segue:

    • Related Table: Family_Members_Lookup
    • Show Field: Name
    • Icon Field: - (Empty)
    • Color Field: - (Empty)
    • Order Field: Name
    • Order Type: Descendent

    In questo modo, la Lookup Family Member mostrerà la lista dei membri della famiglia per nome e ordine alfabetico dalla A alla Z.

    Cliccare sul pulsante Confirm per concludere la configurazione.

  4. Clicca sul pulsante Visible in the Grid () per rendere la colonna di Lookup Family Member visibile.

  5. Personalizza l'aspetto della colonna di Lookup Family Member nel sotto-pannello Layout:

  6. Salva tutti i cambiamenti nel Design Mode di Family Budget.

Hai creato una Lookup per scegliere il nome di chi ha inserito la spesa o lo stipendio.

Restrizioni per editabilità

Puoi abilitare solo certi membri di un gruppo per modificare una qualunque riga dell'applicazione. Puoi farlo usando le formule per restringere cosa un utente può editare.

Supponiamo che il gruppo Family Members possa inserire nuove righe, ma possono scegliere solo il proprio nome per la Lookup Family Member. Invece, gli utenti di Budget Manager e Parents possono inserire e modificare qualunque dato.

L'obbiettivo è il seguente.

Gruppo Creare Modificare Scegliere solo il proprio nome nella Lookup Scegliere qualunque nome nella Lookup Family Member
Family Members X X
Parents X X X
Budget Manager X X X
  1. Nel Design Mode di Family Budget clicca su Settings.

  2. Nel sotto-pannello Master, clicca sul pulsante Create the Lookup Relation per la Lookup già configurata Family Member.

  3. Cliccare sul pulsante Restriction Formula.

  4. Copia-incolla o digita la seguente formula.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    =IF(
        =CONTAINS($CURRENTUSER.GROUPNAMES; "Family Members");
        =LOOKUPLIST(
            #Family Members;
            #Family Members.IdFamilyMember;
            =EQ(
                #Family Members.Email;
                $CURRENTUSER.EMAIL
            )
        );
        =IF(
            =OR(
                =CONTAINS($CURRENTUSER.GROUPNAMES; "Parents");
                =CONTAINS($CURRENTUSER.GROUPNAMES; "Budget Manager")
                );
            =ALLITEMS();
            =NOITEMS()
            )
    )
    

    Una breve spiegazione della formula sopra.

    =IF() imposta che cosa succede quando una condizione è vera o falsa.

    • La condizione è la =CONTAINS(): la lista gruppi dell'utente che la variabile $CURRENTUSER.GROUPNAMES rappresenta deve contente "Family Members".

      • Se la lista contiene "Family Members", allora si attiva =LOOKUPLIST().
      • =LOOKUPLIST() cerca gli elementi che hanno la stessa email dell'utente attuale. La lista conterrà solo un elemento dato che ogni membro della famiglia è unico.
    • Quando la lista dei gruppi dell'utente non contiene "Family Members", la =IF() esegue un'altra funzione =IF() annidata.

      • La condizione della funziona annidata è la =OR(): la lista gruppi dell'utente deve contente o "Parents" o "Budget Manager".
      • Se la lista soddisfa la =OR(), la formula mostra tutti gli elementi della Lookup.
      • Se la lista non soddisfa la =OR(), la formula non mostrerà nessun elemento.

    La formula mostra tutti i membri della famiglia dello storage se appartieni a Parents o Budget Manager. Se appartieni al gruppo Family Members, puoi selezionare solo il tuo nome nella Lookup.

  5. Clicca sul pulsante Confirm per confermare la configurazione.

  6. Nei Settings, clicca su Edit sotto Restrictions.

  7. Apparirà il Formula Editor. Inserisci la seguente formula:

    1
    2
    3
    4
    =CONTAINSLIST(
        $CURRENTUSER.GROUPNAMES; 
        =LIST("Parents"; "Budget Manager")
        )
    
    La funzione =CONTAINSTLIST() compara due liste per controllare se uno o più elementi della prima lista contengono elementi della seconda lista. La =CONTAINSTLIST() sopra ha due parametri:

    • $CURRENTUSER.GROUPNAMES prende dall'utente loggato la lista dei gruppi a cui appartiene.
    • =LIST("Parents"; "Budget Manager") è la lista dei gruppi da controllare nella lista gruppi dell'utente.
  8. Salva tutti i cambiamenti nel Design Mode di Family Budget.

In questo modo:

  • I membri di Family Members possono inserire solo i loro nomi nella Lookup.

  • Solo i membri di Budget Manager e Parents possono modificare qualunque entrata dopo essere stata salvata.

Valore predefinito per la Lookup Family Member

Tuttavia, quando il Budget Manager or il membro della famiglia crea una riga, l'applicazione non seleziona il nome utente per la Lookup Family Member automaticamente. La Lookup dovrebbe avere il nome dell'utente attuale come opzione predefinita quando il membro della famiglia aggiunge la riga all'applicazione.

Puoi configurare l'applicazione per inserire il nome del familiare corrente come predefinito in Design Mode.

  1. Dal pannello Master, clicca su Formula sull'angolo in alto a destra del sotto-pannello.

  2. Clicca sul pulsante Default Value () per la riga della colonna Family Member. L'azione aprirà l'editor formule per calcolare il valore predefinito della cella della colonna.

  3. Inserire la seguente formula nell'editor formule e clicca sul pulsante Confirm.

    1
    2
    3
    4
    5
    6
    7
    8
    =LOOKUP(
        #Family Members;
        #Family Members.IdFamilyMember;
        =EQ(
            #Family Members.Email; 
            $CURRENTUSER.EMAIL
            )
    )
    

    La formula seleziona il primo risultato dello storage Family_Members con la stessa email dell'utente corrente. Se l'indirizzo email coincide, l'applicazione registra in FamilyMember il nome dell'utente attuale che ha creato la riga.

  4. Salva tutti i cambiamenti in Design Mode.

Ora, quando l'utente creerà una riga, l'applicazione riempirà la cella Lookup Family Member con il nome del familiare che sta usando l'applicazione.

Stai per introdurre funzioni avanzate per la tabella di Master e la Lookup Family Member nelle prossime sezioni.

Restrizioni di visualizzazione

Supponi che ogni utente di Family Members debba vedere soo le proprie righe mentre i membri di Parents e Budget Manager tutte le righe.

Puoi usare le formule per restringere quali righe un utente può vedere.

  1. Nel Design Mode di Family Budget, vai a Settings > Restrictions e clicca su Row.

  2. Apparirà il Formula Editor. Inserisci la seguente formula:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    =OR(
        =CONTAINS($CURRENTUSER.GROUPNAMES; "Budget Manager");
        =CONTAINS($CURRENTUSER.GROUPNAMES; "Parents");
        =AND(
            =CONTAINS($CURRENTUSER.GROUPNAMES; "Family Members");
            =EQ(
                $CURRENTSTORAGE.FamilyMemberId;
                =LOOKUP(
                    #Family Members;
                    #Family Members.IdFamilyMember;
                    =EQ(#Family Members.Email; $CURRENTUSER.EMAIL)
                )
            )        
        )
    )
    

    Una breve spiegazione della formula.

    La funzione =OR() contiene condizioni multiple che possono avverarsi al tempo stesso.

    • La =CONTAINS() verifica quando una lista contiene l'elemento specifico. Se la lista gruppi dell'utente contiene Budget Manager, l'utente può vedere tutte le righe.

    • La =CONTAINS() verifica che una lista contenga l'elemento specificato. Se la lista gruppi dell'utente contiene Parents, l'utente può vedere tutte le righe.

    • La =AND() controlla due condizioni che devono essere vere al tempo stesso:

      • Se la lista gruppi dell'utente contiene FamilY Members.
      • Se $CURRENTSTORAGE.FamilyMemberId ha lo stesso valore dell'Id dell'utente attuale. Inoltre, la formula seleziona l'utente sullo storage Family Members con la stessa email dell'utente corrente.

    La formula mostra all'utente solo le righe che soddisfano la formula.

  3. Salva la formula cliccando sul pulsante Confirm.

  4. Salva tutti i cambiamenti in Design Mode.

La formula inserita cambia cosa ciascun utente e Gruppo Utenti può vedere.

Gli utenti di Family Members vedranno solo le proprie righe. In aggiunta, non possono modificar le righe che hanno creato e salvato.

I membri di Parents o Budget Manager vedranno tutte le righe e possono modificare. (Se hai seguito il precedente tutorial Utenti e permessi nel Dominio, John Doe appartiene al Gruppo Utente Budget Manager.)

Multiselection per restringere un metodo di pagamento per alcuni familiari

A questo punto, hai una Lookup per la persona che ha inserito una riga nell'applicazione Family Budget. La tabella riempie la cella di Family Members con il nome del familiare corrente che usa l'applicazione.

Il prossimo passo è configurare la Lookup in Payment Method per mostrare solo i metodi di pagamento disponibili per quel familiare.

Userai le formule per restringere quali metodi di pagamento un utente può visualizzare.

Applicazione Family Budget: formula restrizione per la Lookup Payment Method

A questo stadio, puoi configurare la Lookup Payment Methods sull'applicazione Family Budget prima di fare cambiamenti all'applicazione Payment Methods.

Devi configurare Family Budget come segue:

  • I membri dei gruppi Family Members e Parents devono vedere solo i loro metodi di pagamento assegnati all'applicazioni Payment Methods quando clicchi sulla Lookup Payment Method.
  • I membri di Budget Manager possono vedere tutti i metodi di pagamento inseriti nell'applicazione Payment Methods.

  • Nel Design Mode di Family Budget, clicca sul pulsante di Lookup sulla colonna Payment Method.

  • Clicca sull'icona Restriction Formula :fa-calculator:.

  • Inserisci nell'editor formule la seguente formula:

    1
    2
    3
    4
    5
    6
    7
    8
    =LOOKUPLIST(
        #Payment Methods;
        #Payment Methods.IdPaymentMethod;
        =CONTAINS(
            #Payment Methods.Authorization;
            =LIST($CURRENTSTORAGE.FamilyMemberId)
            )
    )
    

    La funzione =LOOKUPLIST() filtra i valori della Lookup che soddisfano la condizione come terzo parametro.

    • Il primo e secondo parametro #Payment_Methods and #Payment_Methods.ID_payment_method puntano allo storage della relazione di Lookup.

    • La funzione =CONTAINS() controlla se la Multiselection #Payment_Methods.Authorization in Payment Methods contiene qualunque elemento della lista valori del campo $CURRENTSTORAGE.FamilyMemberId in Family Budget.

  • Clicca sul pulsante Confirm per salvare i cambiamenti.

  • Salva tutti i cambiamenti nel Design Mode di Family Budget.

La formula restringe i metodi di pagamento disponibili al familiare inserito nella Lookup Family Member in Family Budget.

Nella prossima sezione, preparerai l'applicazione Payment Methods con tutte le impostazioni che Family Budget richiede dal proprio lato.

Applicazione Payment Methods: Multiselection per autorizzare i familiari

La formula restrizione in Applicazione Family Budget: formula restrizione per la Lookup Payment Method funziona quando aggiungi una persona al campo Multiselection Authorization in Payment Methods.

Aggiungi i seguenti familiari ai metodi di pagamento sotto nel campo Multiselection Authorization.

Cash Check Bank Transfer Credit Card Debit Card
Angela Doe X
Daniel Doe X X
Jane Doe X X X X
John Doe X X X X X

In Family Budget, la Lookup Payment Methods mostrerà solo i metodi disponibili per la persona scelta dalla lista Lookup Family Member.

Per esempio, Daniel Doe avrà accesso solo ai metodi di pagamento Cash e Credit Card.

Complimenti! Hai configurato i metodi di pagamento per i membri della famiglia.

Condividi una transazione con un altro familiare

Puoi configurare una Custom Action e connetterla a una Colonna Logica per condividere il link di una riga su Family Budget.

  1. Nel Design Mode di Family Budget, clicca sul menù Custom Action.

  2. Crea una custom action Share Row in Custom Actions.

  3. Nomina la custom action SHare Row come "Share Entry" (Condividi Riga) e scegli un'icona. (Per esempio, cerca share nel menù a tendina.)

  4. Torna al menù Table in Design Mode. Aggiungi una nuova colonna logica dopo la custom action Repeat Entry cliccando sul pulsante +Logical Column. Scegli Action come opzione.

  5. Nel sotto-pannello Logical, scegli "Share Entry" come custom action per la nuova colonna logica.

  6. Clicca sul pulsante Is Primary Key () accanto al campo Identity nascosto IdBudget.

    L'azione rende IdBudget la Primary Key: il valore sarà usato per generare il link alla riga di Family Budget.

  7. Salva tutti i cambiamenti nel Design Mode di Family Budget.

La nuova custom action ti permette di copiare un link alla riga sulla tabella di Master. Chiunque clicchi sul link, accederà all'applicazione e vedrà la riga.

Notifiche di pagamento per il Budget Manager

Puoi configurare una notifica per avvertire il gestore che un utente ha aggiunto una nuova spesa a Family Budget.

  1. In Custom Actions, crea una nuova custom action Send Email.

  2. Configura la Custom Action Send Email come segue.

    • (1) Non-Manual Event: Post Row Insert.

      Info

      Esistono differnti inneschi di attivazione per una Custom Action. Post Row Insert esegue la Custom Action quando inserisci una riga. Ci sono più inneschi disponibili.

      • Pre Row Insert: Esegue la Custom Action prima dell'aggiunta di una riga.

      • Post Row Insert: Esegue la Custom Action dopo l'aggiunta della riga.

      • Pre Row Update: Esegue la Custom Action prima dell'aggiornamento di una riga.

      • Post Row Update: Esegue la Custom Action dopo l'aggiornamento di una riga.

      • Pre Row Delete: Esegue l'azione prima della cancellazione di una riga.

      • Post Row Delete: Esegue l'azione dopo la cancellazione di una riga.

      • Pre Attachment Insert: Esegue la Custom Action prima dell'inserimento di un allegato.

      • Post Attachment Insert: Esegue la Custom Action dopo aver inserito un allegato.

      • Pre Attachment Delete: Esegue la Custom Action prima della cancellazione di un allegato.

      • Post Attachment Delete: Esegue la Custom Action dopo aver cancellato un allegato.

      Per il tutorial, ricordati solo della Post Row Insert. Rappresenta l'opzione che userai la maggior parte del tempo.

    • (2) elegere@vesenda.com come server email mittente.

    • (3) Inserisci la formula sotto nel campo To: usando il Formula Editor. La formula recupera gli indirizzi email di ciascun membro di Budget Manager e invia loro una email.

      1
      =GROUPUSEREMAILS("Budget Manager")
      
    • (4) Inserisci la formula sotto nel Subject. La formula inserisce la data corrente formattata come "Giorno-Mese-Anno Ore:Minuti" automaticamente quando eLegere invia la email.

      1
      Family Budget - New Expense Added  [=FORMATDATE($CURRENTDATE; "dd-MM-yyyy hh:mm")]
      
      Devi inserire le formule eLegere fra parentesi quadre ([ ]) quando le digiti o nel Subject o nel Body delle email. Le parentesi quadre ([ ]) indicano a eLegere che nel testo si trova una formula da eseguire e stampare, non un pezzo di testo del soggetto (Subject) o del corpo messaggio (Body).

    • (5) Inserisci come Body il seguente testo.

      1
      Someone has added a new expense to the Family Budget Application.
      

  3. Seleziona con il mouse "expense" nel corpo della email. Clicca su Insert/Edit Link e aggiungi la seguente formula nel campo URL:

    1
    [=GENERATEROWLINK(#Transactions)]
    

    La formula genera un link all'ultimo inserimento nello storage Transactions. Chiunque clicchi sul link visualizzerà la riga nell'applicazione.

  4. Salva tutti i cambiamenti nel Design Mode di Family Budget.

Ogni volta che un utente aggiungerà un nuova spesa a Family Budget, l'applicazione manda una email con il link. John Doe appartiene a Budget Manager e riceverà una email di notifica con il link.

Approfondimento: Migliora la notifica email con maggiori informazioni

La notifica sopra riporta al gruppo Budget Manager che un utente ha registrato una spesa. Ma la notifica non fornisce informazioni riguardo né l'utente né l'ammontare di denaro.

Puoi fornire queste informazioni aggiungendo due formula al corpo dell'email:

  • Una formula per specificare l'utente che ha aggiunto la riga.
  • Una formula per specificare l'ammontare speso e ricevuto.

La seguente formula seleziona l'utente che ha registrato la riga nell'applicazione.

1
[=LOOKUP(#Family_Members;#Family_Members.Name;=EQ(#Family_Members.IdFamilyMember; $CURRENTSTORAGE.FamilyMemberId))]
La formula =LOOKUP() seleziona il primo valore della colonna che soddisfa la condizione del terzo parametro. La formula prende la prima riga dello storage Family Members con il valore IdFamilyMember coincidente con il valore di FamilyMemberId in Transactions. Dopodiché la formula mostra il valore del campo Name della riga.

La formula seguente specifica l'ammontare registrato nella riga.

1
[=FORMATNUMBER(=LOOKUP(#Transactions;#Transactions.BudgetValue;=EQ(#Transactions.IdBudget; $CURRENTSTORAGE.IdBudget));"#,###.00 €")]

La formula =LOOKUP() seleziona la riga che ha l'Id corrispondente alla riga appena registrata. In aggiunta, =LOOKUP() è inserita in una formula =FORMATNUMBER(). =FORMATNUMBER() mostra il valore con due decimali e il simbolo dell'Euro (€).

Puoi copia-incollare o digitare la formula sopra nel corpo della notifica email come vedi nell'immagine sotto.

In questo modo, ogni volta che il Budget Manager riceve una notifica email, il corpo specifica l'utente e l'ammontare oltre al link alla riga.

Congratulazioni! Hai introdotto nuove funzionalità per collaborare con altre persone nelle tue applicazioni!

Success

Hai completato la Guida Introduttiva a eLegere! A questo punto conosci tutte le basi di eLegere. Ma puoi imparare di più consultando le sezioni Formule, Funzionalità Avanzate e eLegere Script.