• Passa al contenuto principale
  • Passa alla barra laterale primaria
  • INIZIA QUI
  • HOME
  • CHI SONO

APPin5Minuti

Creare APP Gestionali con Oracle APEX e Low-Code

Crea Applicazioni Gestionali con Oracle APEX e gli strumenti Low-Code.

Costruiamo un CRM con Oracle APEX

Agosto 14, 2022

Un CRM (acronimo di Customer Relationship Management) è un sistema che le aziende utilizzano per avviare, rafforzare e mantenere relazioni con i propri lead e clienti.

L’obiettivo di un CRM è quello di aiutare la gestione della relazione con il cliente lungo tutto il suo ciclo di vita, ovvero da quando è ancora un potenziale cliente fino a quando non diventa un cliente effettivo che ha acquistato un prodotto o un servizio.

Questi strumenti hanno spesso una scheda cliente che mostra in una sola schermata tutta la storia e le informazioni di un contatto o di un’azienda.

Questa singola scheda può contenere informazioni sull’anagrafica, sulle vendite passate, sugli sforzi fatti dal marketing e molto altro, riassumendo tutta la relazione tra l’azienda e il cliente.

Oggi le soluzioni più evolute aiutano ad offrire la miglior customer experience possibile perché sono in grado di gestire non solo i processi di vendita ma anche il marketing e il customer service.

In questo articolo di mostrerò come creare in Oracle APEX un sistema CRM partendo dalla gestione di contatti cliente fino la creazione di opportunità e delle offerte di vendita.

Il mio nome è Daniele Trasarti, autore di APPin5Minuti, il sito italiano che parla di low-code.

Qui troverai tantissimi tutorial e risorse per imparare a sviluppare in Oracle APEX (e non solo) applicazioni belle e professionali.

Seguimi su Linkedin e inscriviti alla Newsletter per ricevere tanti altri contenuti interessanti.

IN QUESTO ARTICOLO

  • Prima di Iniziare
  • Concetti Base del CRM
    • Contatti e dei Clienti
    • Listino Prodotti
    • Opportunità e Offerte
  • Parte 1: Come creare una Applicazione CRM in Oracle APEX
    • Step 1: installa gli oggetti database
    • Step 2: crea una nuova applicazione da uno Script SQL
    • Step 3: configura le liste valori (LOV)
    • Step 4: configura la form Company
    • Step 5: configura la form Contact
    • Step 6: configura le forms Quote e Opportunity
    • Step 7: configura le forms Note e Activity
  • Facciamo una piccola pausa
  • Parte 2: Come migliorare la nostra applicazione CRM grazie alle funzionalità di Oracle APEX
    • Come utilizzare gli Smart Filters per trovare le Aziende
    • Come usare le Cards visualizzare la Rubrica Contatti
    • Calendario Appuntamenti
    • Ricerca Opportunità e Faceted Search
    • Home Page
  • Conclusioni

Prima di Iniziare

Per aiutarti nel lavoro ho deciso di dividere il tutorial in due parti.

Nella prima parte ci preoccuperemo prima di tutto di creare le tabelle del database necessarie per gestire i dati del nostro CRM e poi continueremo con la configurazione di base della nostra applicazione.

A patto che tu abbia a disposizione un ambiente di sviluppo Oracle APEX su cui lavorare, una volta completata questa parte avrai creato una applicazione CRM pronta all’uso.

Nella seconda parte ci concentreremo su come rendere ancora più bella e funzionale la nostra applicazione grazie all’uso di alcuni dei componenti più avanzati messi a disposizione da Oracle APEX.

In particolare ti spiegherò come configurare gli Smart Filters, le Faceted Search e come creare una Dashboard.

Fidati, ne varrà la pena.

Però, prima di iniziare a mettere le mani in pasta, vorrei introdurti ad alcuni concetti del CRM perché ti aiuteranno a capire come progettare meglio la tua applicazione.

Concetti Base del CRM

Un software CRM mette a disposizione di chi ne fa uso di un punto in cui è possibile archiviare quante più informazioni possibili relative ai clienti, nonché monitorare le interazioni che l’azienda ha con i clienti stessi.

Se usato a dovere, ogni domanda, richiesta di servizio, preferenza e dato di contatto passato di ciascun cliente è disponibile immediatamente all’interno del CRM, permettendo di avere con il cliente nuove iterazioni sempre personalizzate, pertinenti e aggiornate.

Oltre a tenere traccia di ogni telefonata, e-mail, riunione e presentazione, i sistemi CRM possono essere utilizzati anche per aggiungere note, pianificare i follow-up e organizzare i passi successivi da fare.

Tutto ciò assicura che non vadano sprecate le opportunità di chiudere le trattative o di far crescere gli account dei clienti.

Senza volerci addentrare in questo momento in qualcosa di troppo sofisticato, possiamo dire che ci sono alcuni concetti che è bene siano sempre previsti in un CRM e ne rappresentano, in un certo senso, la colonna portante:

  • I contatti dei clienti
  • Il listino prodotti e servizi
  • Le opportunità e le offerte di vendita
  • Le interazioni con i clienti (appuntamenti, visite, telefonate, ecc..)

Tutti questi oggetti dovranno essere gestiti all’interno della nostra applicazione, tenendo conto anche delle relazioni che sussistono tra di loro.

Cerco di farti capire meglio cosa intendo…

Contatti e dei Clienti

Nell’ambito del marketing, l’oggetto di qualsiasi azione e strategia è il cliente, ovvero il soggetto al quale desideriamo vendere i nostri prodotti.

I clienti possono essere sia consumatori singoli (si parla generalmente di B2C – Business to Consumer) piuttosto che altre aziende (in questo caso parliamo di B2B – Business to Business).

Il contatto è una persona che possiamo contattare, di cui abbiamo alcuni informazioni quali l’indirizzo email, il recapito fisico, il numero di telefono, il profilo social ed eventualmente l’azienda per la quale lavora (informazione decisamente utile nel caso in cui ci rivolgiamo ad un mercato B2B).

I contatti non sono tutti uguali: possono essere acquisiti in tanti modi, tramite ad esempio un form di registrazione al nostro sito oppure tramite una campagna di advertising sui canali social e possono mostrare un interesse più o meno alto nei confronti dei nostri prodotti.

Per questo motivo i contatti possono essere classificati in 3 modi: lead, prospect e customer.

  • Il lead rappresenta un potenziale cliente o un’opportunità di vendita: non è un generico consumatore, bensì una persona che ha già manifestato interesse che lo ha spinto a fornire alcuni dati di contatto e/o dati personali.
  • Il prospect è invece un potenziale cliente che non solo ha manifestato un interesse specifico per un prodotto o servizio ma ha anche chiesto una offerta (quindi la trattiva è stata effettivamente aperta). Nella catena del marketing & sales funnel il prospect rappresenta dunque un anello successivo al lead.
  • Il customer è, invece, un cliente che ha effettivamente fatto un acquisto, al quale potremo vendere altri prodotti o servizi.

Devi sapere che questa classificazione dei contatti e dei clienti è importantissima nell’ambito del CRM perché serve per gestire le attività di marketing: le azioni da intraprendere nei confronti di un lead sono per forza di cosa diverse da quelle che devono essere prese nei confronti di un customer.

Ecco un esempio che rappresenta le relazioni tra gli oggetti Contatto e Azienda

Listino Prodotti

I prodotti sono un catalogo di base di tutti gli articoli e i servizi che possono essere venduti e dei relativi prezzi di listino standard.

Durante una trattativa capiterà poi di dover applicare uno sconto (o magari una maggiorazione) per cui il prezzo di una offerta non è detta che sarà quello di listino.

La gestione del pricing può essere qualcosa di molto complesso e dipende fortemente dal modello di business dell’impresa e dai mercati sui quali opera.

Nel nostro esempio ci limiteremo a gestire un singolo prezzo definito a livello di articolo, ma considera che nella realtà potresti avere bisogno di logiche diverse!

Opportunità e Offerte

Come suggerisce il nome, nel gergo del CRM una opportunità rappresenta una trattativa (deal) per la vendita di un prodotto o di un servizio.

Generalmente si usa suddividere una opportunità in fasi (stages) che servono a monitorare il processo di vendita, gestirne l’avanzamento (pipeline) e valorizzare i futuri guadagni (forecast).

L’ultima fase di un opportunità è la chiusura, che può essere vinta (closed won) o persa (closed lost).

Le offerte (o preventivi) rappresentano i prezzi proposti per i prodotti e i servizi dell’azienda.

È possibile creare una offerta da un’opportunità e dai relativi prodotti e ogni opportunità può avere più preventivi associati. 

Ad esempio, nella figura sotto riportata, una trattativa per l’acquisto delle licenze di un prodotto software è stata vinta, dopo una trattativa per uno sconto, grazie all’offerta numero 2.

All’interno dell’opportunità andranno gestite, inoltre, tutte le attività, i documenti e le informazioni inerenti alla trattativa, in modo da rendere facile l’accesso alle informazioni in qualunque momento e agevolare future interazioni con il cliente.

Parte 1: Come creare una Applicazione CRM in Oracle APEX

Ora che abbiamo una idea più chiara degli oggetti che andremo a manipolare nel CRM, possiamo iniziare finalmente a sviluppare la nostra applicazione in Oracle APEX.

Non preoccuparti, ti guiderò passo dopo passo e in men che non si dica avrai creato un vero e proprio CRM che potrai utilizzare fin da subito.

Inoltre ti anticipo che ci sarà una piccola sorpresa…

Step 1: installa gli oggetti database

Oracle APEX basa tutto il suo funzionamento sul database Oracle quindi la prima cosa da fare quando è installare nel database gli oggetti (tipicamente tabelle e viste, ma anche procedure PL-SQL) necessarie affinché la nostra applicazione funzioni.

  • Accedi all’APP Builder di Oracle APEX e vai in SQL Workshop > SQL Scripts
  • Inserisci le seguenti istruzioni SQL che ho preparato per te
-- create tables
create table companies (
    id                             number generated by default on null as identity 
                                   constraint companies_id_pk primary key,
    name                           varchar2(4000 char),
    url                            varchar2(4000 char),
    logo                           varchar2(4000 char),
    address                        varchar2(4000 char)
)
;
create table contacts (
    id                             number generated by default on null as identity 
                                   constraint contacts_id_pk primary key,
    first_name                     varchar2(250 char),
    last_name                      varchar2(250 char),
    title                          varchar2(250 char),
    email                          varchar2(250 char),
    phone                          varchar2(250 char),
    status                         varchar2(150 char),
    company                        number
                                   constraint contacts_company_fk
                                   references companies on delete cascade
);
-- table index
create index contacts_i1 on contacts (company);
create table products (
    id                             number generated by default on null as identity 
                                   constraint products_id_pk primary key,
    name                           varchar2(250 char),
    description                    varchar2(4000 char),
    price                          number
)
;
create table opportunities (
    id                             number generated by default on null as identity 
                                   constraint opportunities_id_pk primary key,
    company                        number
                                   constraint opportunities_company_fk
                                   references companies on delete cascade,
    contact                        number
                                   constraint opportunities_contact_fk
                                   references contacts on delete cascade,
    name                           varchar2(250 char),
    description                    varchar2(4000 char),
    product                        number
                                   constraint opportunities_product_fk
                                   references products on delete cascade,
    stage                          varchar2(150 char),
    amount                         number,
    owner                          varchar2(250 char)
);
-- table index
create index opportunities_i1 on opportunities (company);
create index opportunities_i102 on opportunities (contact);
create index opportunities_i113 on opportunities (product);
create table quotes (
    id                             number generated by default on null as identity 
                                   constraint quotes_id_pk primary key,
    opportunity                    number
                                   constraint quotes_opportunity_fk
                                   references opportunities on delete cascade,
    contact                        number
                                   constraint quotes_contact_fk
                                   references contacts on delete cascade,
    company                        number
                                   constraint quotes_company_fk
                                   references companies on delete cascade,
    product                        number
                                   constraint quotes_product_fk
                                   references products on delete cascade,
    amount                         number,
    offer_date                     date,
    author                         varchar2(250 char)
)
;
-- table index
create index quotes_i1 on quotes (company);
create index quotes_i182 on quotes (contact);
create index quotes_i193 on quotes (opportunity);
create index quotes_i204 on quotes (product);
create table notes (
    id                             number generated by default on null as identity 
                                   constraint notes_id_pk primary key,
    opportunity                    number
                                   constraint notes_opportunity_fk
                                   references opportunities on delete cascade,
    contact                        number
                                   constraint notes_contact_fk
                                   references contacts on delete cascade,
    company                        number
                                   constraint notes_company_fk
                                   references companies on delete cascade,
    note                           varchar2(4000 char),
    url                            varchar2(4000 char),
    attachment                     blob,
    note_date                      date,
    author                         varchar2(250 char)
);
-- table index
create index notes_i1 on notes (company);
create index notes_i262 on notes (contact);
create index notes_i273 on notes (opportunity);
create table activities (
    id                             number generated by default on null as identity 
                                   constraint activities_id_pk primary key,
    opportunity                    number
                                   constraint activities_opportunity_fk
                                   references opportunities on delete cascade,
    contact                        number
                                   constraint activities_contact_fk
                                   references contacts on delete cascade,
    company                        number
                                   constraint activities_company_fk
                                   references companies on delete cascade,
    activity_date                  date,
    type                           varchar2(250 char),
    author                         varchar2(250 char)
);
-- table index
create index activities_i1 on activities (company);
create index activities_i332 on activities (contact);
create index activities_i343 on activities (opportunity);
-- views
create or replace view contacts_v as 
  select contacts.id as id,
    contacts.first_name as first_name,
    contacts.last_name as last_name,
    contacts.title as title,
    contacts.email as email,
    contacts.phone as phone,
    contacts.status as status,
    contacts.company as company_id,
    (select name from companies where id = contacts.company) company,
    first_name || ' ' || last_name full_name 
 from contacts contacts;
create or replace view quotes_v as
select id,
       opportunity,
       contact contact_id,
       (select first_name ||' '||last_name from contacts where id = contact) contact,
       company company_id,
       (select name from companies where id = company) company,
       product product_id,
       (select name from products where id = product)  product,
       amount,
       offer_date,
       author
  from quotes;
create or replace view opportunities_v as  
select id,
       company company_id,
	   (select name from companies where id = company) company,
       contact contact_id,
	   (select first_name ||' '||last_name from contacts where id = contact) contact,
       description,
       product product_id,
	   (select name from products where id = product)  product,
       stage,
       amount,
       owner,
       name
  from opportunities;
  • Specifica un nome a piacimento nel campo Script Name e premi Run e successivamente Run Now
  • Se tutto va a buon fine dovresti vedere qualcosa di simile alla figura sotto dove possiamo apprezzare che la generazione degli oggetti è stata completata senza errori.
  • Andremo a creare l’applicazione direttamente dallo script che abbiamo salvato. Clicca sul bottone Create APP.

Step 2: crea una nuova applicazione da uno Script SQL

Arrivati a questo punto dovresti vedere qualcosa di simile alla figura sotto.

Partendo direttamente dallo Script SQL che abbiamo usato per installare le tabelle del database Oracle APEX propone di creare una applicazione con una serie di caratteristiche predefinite, ovvero:

  • Una Home Page che potremo andare a personalizzare successivamente
  • Un Interactive Report + Form per ogni tabella che abbiamo creato nel database.

Potremmo lasciare tutto così com’è e preoccuparci di configurare la nostra applicazione successivamente.

Tuttavia, preferisco definire già in questa fase la struttura principale della mia applicazione.

A tal proposito lasciamo da parte le tre pagine Contacts, Companies e Opportunities proposte da APEX (io le ho eliminate) e creiamone di nuove.

  • Clicca su Add Page
  • Seleziona l’opzione Master Detail
  • Nella schermata successiva inserisci le seguenti informazioni e poi premi Add Page
    • Page Name: Contacts
    • Layout Type: Side by Side
    • Table: CONTACT
    • Primary Display Column: FIRST_NAME
    • Secondary Display Column: STATUS
    • Detail Table 1: OPPORTUNITIES
    • Detail Table 2: QUOTES
    • Detail Table 3: NOTES
    • Detail Table 4: ACTIVITIES

Ripeti esattamente la stessa procedura per Companies e Opportunities

  • Pagina Companies:
    • Page Name: Companies
    • Layout Type: Side by Side
    • Table: COMPANIES
    • Primary Display Column: NAME
    • Secondary Display Column: URL
    • Detail Table 1: OPPORTUNITIES
    • Detail Table 2: QUOTES
    • Detail Table 3: CONTACTS
    • Detail Table 4: NOTES
  • Pagina Opportunities:
    • Page Name: Opportunities
    • Layout Type: Side by Side
    • Table: OPPORTUNITIES
    • Primary Display Column: NAME
    • Secondary Display Column: STAGE
    • Detail Table 1: QUOTES
    • Detail Table 2: ACTIVITIES
    • Detail Table 3: NOTES
  • Premi Create Application per completare la procedura.
  • Dopo pochi secondi Oracle APEX completerà la creazione dell’applicazione. Clicca Run Application per controllare il risultato.
  • Come mostrato nella figura sotto, ritroviamo le voci di menù per la gestione dei prodotti, dei contatti e delle aziende oltre che, ovviamente, alle opportunità e offerte.

L’applicazione è già pronta all’uso. Ad esempio puoi caricare il listino prodotti.

  • Seleziona la pagina Products e premi Create per caricare dei prodotti.
  • Specifica il nome del prodotto, una descrizione e il prezzo di listino. Clicca su Create per salvare il record nel database.

Diamo una occhiata alla pagina Companies.

A sinistra (box evidenziato in arancione) viene visualizzato un elenco di tutti i record; usando il box di ricerca puoi cercare un record specifico.

Una volta selezionato il record, a destra ne puoi vedere i dettagli come il nome e l’indirizzo.

Avendo creato una pagina di tipo Master Details Side by Side, il sistema ci fa vedere all’interno della stessa schermata tutti gli oggetti correlati.

Sempre da questa schermata possiamo aggiungere nuovi record correlati: ad esempio possiamo inserire una nuovo Contatto Cliente, cliccando sul bottone Add Contact

Stessa cosa anche per le Opportunità e per i Contatti.

Che ne pensi? Non è male…

In pochissimi minuti abbiamo creato qualcosa che normalmente avrebbe richiesto diverse settimane di lavoro.

Nei prossimi paragrafi raffineremo ancora un po’ la nostra applicazione ma ti prometto che non sarà nulla di complicato.

Step 3: configura le liste valori (LOV)

Generalmente per inserire i dati in una form non ci sono solo campi di testo (Text Field) ma anche campi validati da menù a tendina (drop-down list) piuttosto che valori dipendi da altre tabelle.

Per implementare questi campi in Oracle APEX è necessario creare delle Liste Valori (LOV).

  • Accedi all’APP Builder e vai in Shared Components > List of Values
  • Da questa pagina puoi gestire tutte le Liste Valori dell’applicazione. Ti faccio notare che alcune sono state create automaticamente da Oracle APEX in funzione dei vincoli di integrità referenziale (foreign keys) che abbiamo definito nel database. In particolare sono le seguenti:
    • COMPANIES.NAME
    • CONTACTS.FIRST_NAME
    • OPPORTUNITIES.DESCRIPTION
    • PRODUCTS.NAME
  • Premi Create per creare una nuova Lista Valori
  • Inserisci i seguenti dati e premi Next
    • Name: CONTACT_STATUS
    • Type: Static
  • Inserisci le seguenti opzioni in figura e premi Create List of Values
  • Crea nello stesso modo la Lista Valori OPPORTUNITY_STAGES con queste opzioni
  • Crea un’altra Lista Valori chiamata ACTIVITY_TYPE con queste opzioni

Nulla ci impedisce di modificare una LOV già esistente:

  • Seleziona la Lista Valori CONTACTS.FIRST_NAME
    • Modifica il nome della LOV in CONTACTS.FULL_NAME
    • Seleziona la vista CONTACTS_V come Origine Dati
  • Imposta come Return Value e Display Value rispettivamente le colonne ID e FULL_NAME

Step 4: configura la form Company

Ora ti mostro come configurare le pagine (chiamate Form) che ci consentono di salvare e modificare i dati nel database.

Se hai seguito il tutorial dovresti avere nella tua applicazione diverse pagine di tipo DML Form che servono per salvare i records dei contatti cliente (Contact), delle aziende (Company), delle opportunità (Opportunity), delle offerte (Quote), dei prodotti (Product), delle note (Notes) e delle attività (Activities).

Per individuarle sarà sufficiente inserire un filtro nel APP Builder:

Ti faccio anche notare che potrebbero esserci più forms con lo stesso nome e alias diverso.

Questo perché avendo creato le pagine Master Details usando il wizard, Oracle APEX ha creato ogni volta una form nuova.

Ad esempio, i contatti possono essere creati sia dalla scheda Contacts:

Ma anche dalla scheda Company come oggetto correlato:

La prima pagina che andremo a configurare è quella che ci permette di salvare i dati delle aziende presso le quali lavorano i nostri clienti e che nel nostro esempio si chiama Company.

La form si presenta con quattro campi di tipo Text Area che ci permettono di modificare il nome dell’azienda, il sito web, l’indirizzo e l’URL del logo.

  • Accedi all’APP Builder e seleziona la Form Page Company
  • Seleziona i tre Page Items indicati in figura a trasformali da Text Area a Text Field

Facendo questo piccolo intervento la Form risulta essere decisamente più compatta

  • Aggiungi un nuovo Page Item chiamato PX_DISPLAY_LOGO di tipo Display Image
  • Vai nelle proprietà del Page Item e seleziona la seguente opzione
    • Based On: Image URL Stored in Page Item Value
  • Vai in Source ed imposta
    • Type: Item
    • Item: PX_LOGO

Inserendo nel campo Logo l’URL ad una immagina valida (io ho usato, ad esempio, un servizio gratuito di clearbit) posso visualizzare il logo dell’azienda

Step 5: configura la form Contact

  • Accedi all’APP Builder e seleziona la Page Form Contact
  • Configura i Page Items selezionati in figura come Text Field
  • Configura il Page Item PX_STATUS come Select List e seleziona la lista valori CONTACT_STATUS che abbiamo creato prima
  • Modifica il Page Item PX_COMPANY (che dovrebbe già essere configurato come di tipo Select List) a Popup LOV. In questo modo la ricerca e la selezione di un valore da un elenco potenzialmente molto esteso di records sarà decisamente più semplice per l’utente.

Questo dovrebbe essere il risultato finale

Step 6: configura le forms Quote e Opportunity

Se mi hai seguito fino a questo punto, penso che avrai capito che dovremo fare esattamente le stesse cose anche per le Forms Quote e Opportunity.

Per quel che riguarda la form Quote mi sono limitato a configurare i campi evidenziati come di tipo Popup LOV anziché Select List (poiché ho creato l’APP usando il wizard, le LOV da usare erano già state configurate automaticamente da Oracle APEX)

Stesso discorso anche per la form Opportunity. La sola cosa da tenere a mente è che dovrai configurare il campo Stage come di tipo Select List ed mappare la Lista Valori OPPORTUNITY_STAGES che abbiamo precedentemente creato.

Step 7: configura le forms Note e Activity

Completiamo il lavoro configurando le forms Note e Activity sempre nello stesso modo.

In particolare in quest’ultima puoi utilizzare la Lista Valori ACTIVITY_TYPE per aiutare l’utente a selezionare il tipo di attività corretto

Facciamo una piccola pausa

Posso rubarti 30 secondi?

Allora, cosa ne pensi di questo tutorial?

È troppo complicato? Oppure è troppo semplice?

Lo trovi interessante?

Si, lo so, sembrano domande banali però devi sapere che per me il tuo parere è importante.

Dedico molto del mio tempo a preparare questi contenuti e spero con tutto il cuore che possano aiutarti.

Avere un blog e mantenerlo porta via tanto tempo, per questo la più grande soddisfazione per me è ricevere condivisioni e commenti di critica positiva (e negativa)!

Per questo ti chiedo se puoi condividere l’articolo o commentare l’articolo con la tua opinione al riguardo.

Se hai domande, non esitare a farle!

Intanto, visto che mi hai dedicato il tuo prezioso tempo, ho pensato che fosse carico condividere con te l’applicazione che stiamo creando insieme

Puoi scaricare dal link sottostante l’installer dell’Applicazione CRM.

Troverai sia gli script per gli oggetti database che l’installer vero e proprio dell’applicazione (ho utilizzato Oracle APEX 22.1.2).

Scarica Installer CRM Oracle APEX 22.1.2

Parte 2: Come migliorare la nostra applicazione CRM grazie alle funzionalità di Oracle APEX

Abbiamo completato la prima parte di questo tutorial.

In poco tempo, grazie soprattutto alle procedure guidate messe a disposizione di Oracle APEX, abbiamo realizzato una applicazione completa e funzionante.

Ciò non vuol dire, però, che non possa essere migliorata ed estesa.

Nella seconda parte di questo articolo ti spiegherò come usare alcune funzionalità avanzate che hanno l’obiettivo di migliorare l’esperienza utente.

Per utilizzare il nostro CRM non è necessario che vengano implementate tutte quante.

Se lo desideri puoi dare un occhiata e valutare se alcune di queste fanno al caso tuo.

Come utilizzare gli Smart Filters per trovare le Aziende

Nell’applicazione che abbiamo implementato, per cercare il record specifico di una azienda è necessario inserire una parola chiave nel campo di ricerca e poi cliccare sul record che si vuole visualizzare.

Questo tipo di layout funziona molto bene se l’applicazione che dobbiamo fare è di tipo Desktop (ovvero deve essere utilizzata da un PC).

Forse è poco funzionale quando deve essere utilizzata su un dispositivo mobile, come un tablet o un telefono.

Pertanto, quello che che vorrei fare è creare una pagina di ricerca delle aziende che consenta all’utente di trovare un record usando il nome oppure l’indirizzo web.

Tramite un bottone View Details dovrà poi essere possibile visualizzare i dettagli del record e tutti gli eventuali oggetti collegati.

Decido di usare un Classic Report opportunamente configurato con il template Content Row.

  • Dall’APP Builder clicca su Add Page e seleziona l’opzione Smart Filters
  • Scelgi come Origine Dati l’opzione SQL Query
select ID, 
       NAME TITLE, 
       URL MISC,
       ADDRESS DESCRIPTION,
       '<img src=' || LOGO || '>' ICON_HTML,
       'view_company' actions
  from COMPANIES
  • Deseleziona i filtri predefiniti proposti e clicca Create Page
  • Seleziona il Classic Report che nel mio caso si chiama Search Result
  • Seleziona il campo ICON_HTML e imposta la proprietà
    • Escape Special Characters=False
  • Seleziona il campo Actions e modifica il Type a Link
  • Vai alle proprietà Target del link e seleziona la pagina di destinazione che sarà, ad esempio, una pagina di tipo Master Detail (io ne ho creata una manualmente)
  • Clicca sul report Companies e in Attributes > Template seleziona il template Content Row
  • Clicca Template Options ed imposta le opzioni di visualizzazione come in figura. Quando hai fatto premi OK.

Questa è la visualizzazione da mobile

Come usare le Cards visualizzare la Rubrica Contatti

Il componente Cards è utile quando si vogliono visualizzare i dati di un record in forma compatta e si presta molto bene se vogliamo implementare una rubrica contatti.

  • Dall’APP Builder crea una nuova pagina usando sempre il template Smart Filters
  • Seleziona come origine dati la vista CONTACTS_V
  • Come fatto prima, non includere nessun filtro automatico e seleziona l’opzione Display as Cards
  • Scegli uno tra i layout disponibili (io ho scelto Grid) e configura i seguenti attributi
    • Title Column: FULL_NAME
    • Body Column: EMAIL
    • Icon Initials Column: FULL_NAME
    • Badge Column: COMPANY

Ecco il risultato

Le potenzialità del componente Cards non si fermano qui. Possiamo impostare delle Actions e personalizzare il contenuto di ogni scheda con del codice HTML.

Leggi questo articolo estratto dal blog ufficiale di Oracle APEX che spiega alcune delle funzionalità più utili di questo componente.

Calendario Appuntamenti

La gestione degli appuntamenti con i clienti è fondamentale per qualsiasi tipo di attività.

Non è quindi un caso che molte delle applicazioni di mercato come i CRM abbiano al proprio interno strumenti di gestione degli appuntamenti.

Per sapere come creare una applicazione per gestire gli appuntamenti in Oracle APEX puoi leggere questo articolo.

Ricerca Opportunità e Faceted Search

Se vi è mai capitato di fare acquisti su Amazon, è probabile che avete utilizzato quella che in gergo si chiama Faceted Search.

Si tratta di una particolare modalità di ricerca che permette all’utente di digitare una semplice richiesta iniziale e successivamente perfezionarne i risultati navigando con filtri di approfondimento successivi (drill-down).

È un tipo di ricerca molto avanzata che classifica i contenuti e rende molto più semplice la navigazione per l’utente, accompagnandolo gradualmente verso la soluzione che sta cercando.

Oracle APEX ha un componente nativo che consente di configurare molto velocemente questo tipo di ricerca e decido di usarla per aiutare l’utente nella ricerca delle opportunità

Il modo più veloce per creare una pagina che sfrutti questo tipo di ricerca è usando il la procedura guidata.

  • Dall’APP Builder clicca Create Page e seleziona l’opzione Faceted Search
  • Nella schermata successiva seleziona l’Origine Dati
  • Nell’ultimo passaggio della procedura guidata Oracle APEX genererà una proposta su come implementare i filtri ottenuta in funzione delle statistiche sui dati.
  • Nel mio caso, noto subito il fatto che per il campo Description venga proposto di generare una Checkbox. In effetti sarebbe più opportuno avere un campo di testo. Comunque sia per il momento non me ne preoccupo e completo la procedura premendo il bottone Create Page.

Questo è il risultato:

  • Per modificare il tipo di filtro entro nella definizione della pagine e clicco sul Facet che foglio modificare, ad esempio PX_DESCRIPTION
  • Cambio il tipo di Faced da Checkbox a Input Field
  • Nella sezione Settings posso impostare quale operatore di ricerca usare e se la ricerca è case sensitive oppure no.

Questo è il risultato

Home Page

Completiamo questo tutorial parlando di come configurare l’Home Page della nostra applicazione.

In effetti, se ci pensi, la configurazione della pagina iniziale di una applicazione è senza dubbio un aspetto molto importante perché è il punto di partenza dal quale ogni utente inizia a lavorare.

Nel nostro caso, trattandosi di un sistema CRM, potrebbe essere interessante implementare una dashboard che mostra le opportunità in corso più importanti (in termini di valore) piuttosto che la distribuzione delle stesse in funzione della fase (QUALIFIED, PROSPECTING, QUOTED, ecc..)

Per fortuna Oracle APEX mette a disposizione un ragguardevole set di grafici per creare dashboard belle e funzionali.

Se vuoi approfondire l’argomento ti consiglio di leggere questo articolo dove spiego come creare una dashboard interattiva in Oracle APEX.

Conclusioni

Termino qui questa guida.

Spero di averti dato qualche spunto interessante su come creare da solo il tuo personale CRM.

Ovviamente si potrebbero aggiungere tante altre funzionalità, ma credo che quello che ti ho spiegato sia un buon punto di partenza da cui iniziare.

Fammi sapere cosa ne pensi!

Un abbraccio,

Daniele

TI POTREBBE INTERESSARE:

  • Come migrare le applicazioni da Oracle Forms ad Oracle APEX
  • CPQ in Oracle APEX
  • Come sviluppare applicazioni sicure con Oracle APEX
  • Prevedere l'interesse di un cliente verso un prodotto o servizio con Oracle APEX e Machine Learning
  • Come gestire i files su Object Storage da Oracle APEX
  • Come costruire Workflows Approvativi in Oracle APEX

crm, oracle apex

Interazioni del lettore

Commenti

  1. Richard Sylvester dice

    19/09/2022 alle 4:38 PM

    Hi Daniele Trasarti, This blog post is a “hidden gem” to all people who are trying to learn Oracle Apex. A huge thanks to you (and Google Translate for translating from Italian to English) for writing this blog post.

    Keep up the good work.

    Rispondi
    • Daniele Trasarti dice

      20/09/2022 alle 12:21 PM

      Hi Richard
      thank you so much for your appreciation.
      It means a lot to me.

      Daniele

      Rispondi

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Barra laterale primaria

BENVENUTO!

Il mio nome è Daniele Trasarti, autore di APPin5Minuti, il blog italiano che parla di piattaforme di Oracle APEX e applicazioni low-code.

Qui troverai tantissimi tutorial e risorse per imparare a sviluppare in pochissimo tempo bellissime applicazioni per gestire i dati ed i processi della tua azienda.

Se vuoi saperne di più inizia da qui.

Seguimi sui social!

  • LinkedIn
  • Twitter

NEWSLETTER

Iscriviti anche tu per far parte della più grande community italiana di persone che amano sviluppare low-code!

api rest appsheet appsheet data sources appsheet views appsheet workflow automation autonomous database build apps cpq crm css cyber security database dynamic layout facebook flowform flows4apex google google cloud interactive grid interactive report javascript list microsoft microsoft access mobile oracle oracle apex oracle cloud oracle rest data service ords pl-sq PL-SQL power apps product configurator sales configurator security social login software gestionale sql theme roller ux woocommerce wordpress workflows

COMMENTI RECENTI

  1. Daniele Trasarti su Oracle APEX: come creare un’applicazione web in 5 minuti

    Ciao Sabatino, grazie per l'apprezzamento. Riguardo alla tua domanda ti consiglio di usare Oracle Cloud. Puoi creare un account gratis…

  2. Sabatino Iannazzo su Oracle APEX: come creare un’applicazione web in 5 minuti

    Ciao Daniele, complimenti per la guida, mi hai aperto un mondo! volevo chiederti se con Apex e Oracle Database Express…

  3. Laura su Autenticazione a 2 Fattori basata su TOTP (Time-based One-time Password) con Oracle APEX

    Ciao, trovo molto interessante il tuo articolo. Hai qualche suggerimento per l'autenticazione con spid? pensi di fare qualche guida al…

  4. Mario Volpetti su Oracle APEX: come creare un’applicazione web in 5 minuti

    Ottima spiegazione e complimenti per la semplicità che ai usato. Sono riuscito a farlo anche io con un foglio excel…

  5. Riccardo Liviabella su Google AppSheet: come creare una APP Mobile da un foglio Excel in 5 minuti

    Ciao Daniele e grazie per le tue interessanti spiegazioni. E' da un pò di anni che lavoro su Appsheet e…

  6. Daniele Trasarti su Come costruire Workflows Approvativi in Oracle APEX

    Ciao Bhavin, I think you badly copied PL-SQL because the one you provided is not correct. Fix the script and…

  7. Daniele Trasarti su Applicazione di Prenotazione Appuntamenti in Oracle APEX

    Grazie mille Franca!

Copyright © 2023 · APPin5Minuti.it · Privacy Policy · Cookie Policy