Articoli

Microsoft Dynamics 365 Business Central: i servizi di geolocalizzazione

Come implementare una mappa all’interno di una pagina, utilizzando le funzionalità standard di Business Central

Business Central può offrire numerosi spunti di personalizzazione già all’interno della Base Application, l’app basilare fornita da Microsoft che contiene tutte le funzionalità standard.
Un esempio può essere dato da una funzionalità che potrebbe passare inosservata tra le varie altre  ovvero la gestione dell’integrazione con i servizi di geolocalizzazione.

All’interno dell’anagrafica clienti, o fornitori (e anche in altri punti come ad esempio le risorse), dopo i vari dati dell’indirizzo nel gruppo “Indirizzo e contatto” è presente il tasto “Mostra su mappa

Cliccando sopra verranno richieste alcune informazioni su cosa si vuole vedere e procedendo si arriva all’apertura di una nuova scheda del browser con le indicazioni del percorso, oppure semplicemente con l’indirizzo dell’anagrafica visualizzato sulla mappa:

Il servizio utilizzato è quello di Bing, ma è possibile inserire il servizio di mappe preferito in quanto tutto è gestito tramite dal setup chiamato “Mappe in linea

A cui si accede alle varie pagine di setup dove è possibile inserire oltre a Bing altri setup di altri servizi.

Il funzionamento di tutto questo è molto semplice e Business Central utilizza la codeunit chiamata “Online map management” che contiene tutte le funzioni necessarie a rielaborare i setup immessi nella page indicata prima al fine di creare un indirizzo lanciabile tramite brower.

Grazie alla flessibilità data dagli eventi esposti dalla codeunit e il modo in cui sono state create le codeunit è possibile posizionare la funzionalità delle mappe su qualunque pagina di business central con pochi passaggi.

How to: i passaggi per l’implementazione

Il primo passaggio è la sottoscrizione di un evento al fine di “attivare” la funzionalità, per farlo basterà sottoscrivere questo evento impostando la variabile IsValid a true.

[EventSubscriber(ObjectType::Codeunit, Codeunit::"Online Map Management", 'OnAfterValidAddress', '', false, false)]
local procedure OnlineMapManagementOnAfterValidAddress(TableID: Integer; var IsValid: Boolean)
begin
end;

Il secondo passaggio è un secondo evento da sottoscrivere, questa volta per impostare l’indirizzo di “destinazione” o semplicemente l’indirizzo che verrà visualizzato nella mappa:

[EventSubscriber(ObjectType::Codeunit, Codeunit::"Online Map Management", 'OnAfterGetAddress', '', false, false)]
local procedure OnlineMapManagementOnAfterGetAddress(TableID: Integer; RecPosition: Text; var Parameters: array[12] of Text[100]; var RecordRef: RecordRef)
Begin
end;

Impostando l’array Parameters con le informazioni relative all’indirizzo desiderato:

Parameters[1] := Addr;
Parameters[2] := City;
Parameters[3] := County;
Parameters[4] := PostCode;
Parameters[5] := CountryCode;

A questo punto il tutto è già impostato per funzionare, basterà creare una action sulla page desiderata in modo che lanci la funzione MakeSelection della codeunit Online Map Managemente e il gioco è fatto.

OnlineMapManagement.ProcessMap(DocumentRecRef.Number, DocumentRecRef.GetPosition())

La funzione riceve in ingresso dei recordref e gli eventi esposti espongono la tabella che ha generato l’evento in questo modo è possibile creare un’unica funzione in grado di accettare qualsiasi tabella e quindi indirizzo all’interno del database senza dover duplicare ulteriormente il codice.

In questo modo è stato replicato esattamente quello che lo standard fa sulle pagine in cui espone la possibilità di visualizzare la mappa, ma è possibile andare oltre con pochi passaggi e tramite l’utilizzo di un servizio diverso da Bing ovvero HereWeGo.

L’indirizzo infatti è possibile visualizzarlo direttamente all’interno della pagina di Business Central sfruttando in modo differente la stessa struttura che viene utilizzata per l’esposizione dei report PowerBi.

How to: aggiungere le funzionalità

Prima di andare a creare la pagina bisogna aggiungere un paio di funzionalità a quanto è stato creato in precedenza.

La prima è la funzione di restituzione della url che verrà mostrata all’interno della pagina sfruttando direttamente la funzione presente all’interno della codeunit di gestione delle mappe. La url però non è direttamente visibile in quanto l’apertura della scheda del browser è all’interno della funzione stessa di creazione della url. Bisogna recuperarla tramite un piccolo escamotage dichiarando la codeunit in cui vengono sottoscritti gli eventi come “singleinstance” e dichiarando una variabile globale “weburl” e una seconda variabile booleana “isPagePart” (il cui motivo verrà spiegato poco più avanti).

A questo punto si crea la funzione che restituirà la url alla pagina:


    procedure GetMapUrl(Document: Variant): Text
    var
        OnlineMapSetup: Record "Online Map Setup";
        OnlineMapManagement: Codeunit "Online Map Management";
        Err001: Label 'Please setup a valid map setup';
    begin
        isPagePart := true;
        DatatypeManagement.GetRecordRef(Document, DocumentRecRef);
        if OnlineMapSetup.FindFirst() then
            OnlineMapManagement.ProcessMap(DocumentRecRef.Number, DocumentRecRef.GetPosition())
        else
            Error(Err001);

        Exit(WebUrl);
    end;

Come si può notare in questa funzione non viene assegnata da nessuna parte la variabile WebUrl, questo perché in realtà la url viene composta dalla procedura ProcessMap, che non avendo nessun valore di ritorno espone un evento che si andrà a sottoscrivere:

[EventSubscriber(ObjectType::Codeunit, Codeunit::"Online Map Management", 'OnAfterProcessWebMap', '', false, false)]
    local procedure MapManagementOnAfterProcessWebMap(url: Text[1024]; var IsHandled: Boolean)
    begin
        if not isPagePart then exit;
        WebUrl := url;
        IsHandled := true;
        isPagePart := false;
    end;

Da questo evento possiamo ricavare la url assegnandola alla variabile WebUrl e impostando la variabile isHandled a true evitiamo l’apertura della scheda del browser. Come si può notare viene controllata la variabile isPagePart (impostata a true nella funzione) questo serve a mantenere inalterata la funzionalità del tasto standard.
A questo punto si può creare la page part, riferita alla sourcetable della pagina in cui verrà visualizzata la mappa.
Al suo interno non si andrà a dichiarare alcun campo ma solo un usercontrol fatto in questo modo:

layout
    {
        area(Content)
        {
            group(Map)
            {
                ShowCaption = false;
                usercontrol(WebReportViewer; "Microsoft.Dynamics.Nav.Client.WebPageViewer")
                {
                    ApplicationArea = All;
                    trigger ControlAddInReady(callbackUrl: Text)
                    begin
                        CurrPage.WebReportViewer.Navigate(Url);
                    end;
                }
            }
        }
    }

Oltre allo usercontrol nel trigger “onaftergetrecord” andremo a richiamare la funzione creata prima:

trigger OnAfterGetRecord()
    var
        MapsCu: Codeunit "Maps Cu";
    begin
        Clear(MapsCu);
        Url := MapsCu.GetMapUrl(Rec);
    end;

A questo punto non resta che pubblicare il tutto ed ecco il risultato:

Con questi passaggi è possibile integrare la funzionalità di utilizzo della geolocalizzazione all’interno di una propria app senza dover scrivere del codice di gestione a riguardo e allo stesso tempo potrebbe fungere da base per ulteriori sviluppi più complessi tramite l’utilizzo delle API forniti dai vari gestori di servizi di geolocalizzazione, la flessibilità del setup infatti permette di utilizzare oltre a Bing, anche Google Maps, Openstreet Maps e non ultimo HereWeGo.

 

Semplifica i processi, prendi decisioni più informate e accelera la crescita con Dynamics 365 Business Central, una soluzione di gestione aziendale completa progettata per le piccole e medie imprese.

 

Dynamics 365 Developer

 

Sistema ERP Cloud

Le nuove funzionalità 2020 di Microsoft Dynamics 365 Business Central

Oggi più che mai le aziende devono poter disporre di processi efficienti, di flessibilità e di dati real-time affidabili.

Il panorama in continua evoluzione impone la scelta di tecnologie adatte al cambiamento.

Da un giorno all’altro il lavoro da remoto è passato da essere una necessità occasionale a diventare una realtà quotidiana per milioni di persone nel mondo.

Le aziende si sono dovute quindi adattare molto velocemente al cambiamento e quelle meno preparate tecnologicamente hanno subito ulteriori danni, oltre a quelli già elevati generati dal lockdown.

Le aziende più preparate sono sicuramente quelle che utilizzano strumenti Cloud integrati per la gestione aziendale.

In particolare, i sistemi ERP Cloud, come Microsoft Dynamics 365 Business Central, permettono di essere davvero indipendenti dal luogo fisico.

Per aiutare le aziende ad abbracciare la “nuova normalità” ed essere proattive verso futuri cambiamenti, si possono identificare due caratteristiche come plus per un sistema gestionale: innovazione ed integrazione.

Soluzioni sempre aggiornate

Nel mese di aprile, in pieno lockdown, Microsoft ha rilasciato la Wave 1 del 2020 di Dynamics 365 Business Central.

Le major release avvengono ogni 6 mesi apportando sempre utili strumenti per lo sviluppo di personalizzazioni integrate e mantenendo l’efficienza dei processi sempre in linea con le richieste del business.

La Wave 1 2020 ha portato una serie di innovazioni e migliorie al modern client, sia per i partner Microsoft che per gli utenti finali.

Per quanto riguarda le migliorie che avranno un impatto sulla User Experience, le principali sono:

  • Miglioramenti nell’input dei dati: utilizzo dei tasti F2 – tasti di spostamento – TAB – INVIO per facilitare le attività di data insert;
  • Possibilità di condividere con i colleghi un link URL legato al singolo record o documento;
  • Aggiunta di filtri avanzati nelle liste e nei reports;
  • Velocità di navigazione potenziata;
  • Notifiche delle richieste di approvazione (Workflow);
  • Possibilità di definire una stampante predefinita per ogni report, da cui stampare automaticamente;
  • Miglioramento della UX su Tablet e Mobile.

Tutte le features rilasciate con la Wave 1 del 2020 di Business Central lato applicativo – lato sviluppo e lato UX si possono trovare cliccando sul logo.

Integrazione con Power Platform

Una funzionalità importante, rilasciata ad aprile, è il connettore che permette l’integrazione di Business Central con le entità del Common Data Service.

Business Central e Power Platform permettono lo scambio dati, la connettività e l’utilizzo degli stessi per ottenere risposte affidabili in real-time.

I Common Data Service, abbreviati in CDS, sono essenzialmente un servizio di archiviazione dati, proprio come un database. Possono essere utilizzati per archiviare dati sotto forma di tabelle, denominate Entità.

Consentendo l’integrazione dei dati in un singolo archivio, CDS potrà quindi essere utilizzato in Power Apps, Power Automate, Power BI, Power Virtual Agents.

Si possono quindi creare Apps o restituire analisi che utilizzino direttamente i dati di Dynamics 365 con grandi potenzialità e in un ampio range di ambiti.

Microsoft Power Platform

Per concludere, in seguito a questa pandemia le aziende inizieranno a vedere le loro soluzioni ERP sotto una nuova luce.

Oltre a migliorare l’efficienza operativa, aumentare la redditività e fornire un servizio clienti di qualità superiore, le soluzioni ERP saranno sempre più valutate per la loro capacità di garantire la continuità aziendale e di integrare in modo agile le nuove soluzioni di automazione ed analisi.

 

Semplifica i processi, prendi decisioni più informate e accelera la crescita con Dynamics 365 Business Central, una soluzione di gestione aziendale completa progettata per le piccole e medie imprese.

 

Dynamics 365 Consultant

 

La nostra selezione di migliori extension del Marketplace VSCode, per sviluppare in codice AL

Tra le tante sfide che il passaggio da Dynamics NAV a Dynamics 365 Business Central ha presentato, quella che ha coinvolto gli sviluppatori, (oltre al cambio di linguaggio) è stato anche il cambio di front-end.

Per sviluppare in Business Central, infatti, gli sviluppatori hanno dovuto prendere confidenza con il linguaggio AL nuovo linguaggio di programmazione utilizzato per sviluppare in un database Dynamics 365 Business Cental in sostituzione di C/AL.

Il nuovo front end adottato è Visual Studio code, editor di codice sorgente sviluppato da Microsoft che può essere usato con vari linguaggi di programmazione.

Quello che ci siamo chiesti nel team developer Var Prime, in questi mesi (in realtà fin dai primi corsi in Microsoft) è stato: come possiamo sfruttare al massimo le potenzialità di questo strumento con il nuovo codice AL?

Da qui è nata la nostra “raccolta” di Extension (aggiornata ad aprile 2020) preferite trovate sul MarketPlace.

Le nostre extension consigliate

Per prima cosa abbiamo installato l’extension che ci permette di sviluppare in AL.

AZ AL DEV Tools/AL Code Outline

AZ AL DEV Tools - AL Code Outline

A questo punto ci siamo domandati: ma il vecchio e caro editor che mi permetteva di costruire una tabella senza scrivere l’intera struttura a mano non c’è più?

La risposta ufficiale è no ma grazie a Andrzej Zwierzchowski è nata AZ AL DEV Tools/AL Code Outline

La versione corrente dell’estensione è una raccolta di diversi strumenti di sviluppo.
L’extension è nata come un wizard per costruire oggetti in AL , ma nel tempo son state aggiunte tantissime funzionalità: dalla gestione dei commenti, alla visualizzazione ad albero degli oggetti, alla possibilità di vedere le immagini delle pageaction o di sfruttare delle codeaction per organizzare , modificare o inserire codice in maniera veloce.

Il punto di forza sicuramente è l’editor che permette la costruzione di una tabella o di altri oggetti simulando quanto conoscevamo già nel vecchio ambiente

Ve la consigliamo davvero perché è un tool molto comodo e che aiuta tantissimo nel velocizzare operazioni che spesso portano via tempo e sono ripetitive.

Potete scaricare l’estensione e trovare tutte le informazioni qui:
https://marketplace.visualstudio.com/items?itemName=andrzejzwierzchowski.al-code-outline 

 

L’AL Object Designer

AL Object Designer

Un altro strumento particolarmente utile è L’AL Object Designer di Marton Sagì

L’idea di base è quella di simulare l’object designer e quindi permette di vedere gli oggetti standard, il loro sorgente e gli eventi che mette a disposizione ogni singolo oggetto

Inoltre, si integra perfettamente con AZ AL DEV Tools/AL Code Outline, permettendo di richiamare il wizard direttamente dal suo menu.

Per tutte le informazioni e per scaricare questo utilissimo tool, potete visitare il marketplace
https://marketplace.visualstudio.com/items?itemName=martonsagi.al-object-designer

 

NAB AL Tools

NAB AL Tools

Tra le varie sfide che il cambiamento al linguaggio AL comporta una piuttosto onerosa per non dire piuttosto noiosa è la gestione dei file.xlf delle traduzioni delle app che si stanno creando.

Fortunatamente in nostro soccorso arriva un’estensione creata principalmente per la gestione di questa tipologia di file: suo nome è NAB AL Tools

Una volta installata sarà possibile aggiornare il file di traduzione rispetto al file.g con un semplice comando “NAB: Refresh XLF files from g.xlf”. Tutte le eventuali aggiunte vengono marcate con un prefisso specifico in modo da essere facilmente trovate e tradotte.

Il comando poi è in grado di trovare traduzioni simili e di tradurre in maniera semi automatica le caption dell’app.

Oltre alla gestione delle traduzioni sono contenute anche alcune funzionalità di gestione delle test codeunit e degli snippet aggiuntivi.

È possibile trovare maggiori informazioni nel git dell’extension: https://github.com/jwikman/nab-al-tools

O direttamente al link dello store: https://marketplace.visualstudio.com/items?itemName=nabsolutions.nab-al-tools

 

GitLens

GitLens

Un altro grosso cambiamento che ci ha portato questo nuovo linguaggio è il passaggio da gestione ad oggetto a gestione a file.

La gestione dei file contenuti in locale sull’app che si sta sviluppando potrebbe creare alla lunga dei problemi, specie se si vuole recuperare un oggetto allo stato che aveva giorni o mesi prima una determinata modifica.

Su VSCode può tornare utile l’addin GitLens.

Questo addin contiene alcune funzionalità utili a reperire le modifiche fatte in precedenza di qualunque parte dell’oggetto.

Non solo con un semplice click sarà possibile consultare le modifiche effettuate precedentemente senza dover entrare su altri siti ma tutto direttamente da VsCode.

Potete trovare questa estensione a questo indirizzo: https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens

 

Waldo

Waldo

In una recensione delle migliori estensioni per Vs Code non può mancare infine quella di Waldo.

Le caratteristiche principali dell’estensione sono:

  • Esecuzione di oggetti nel client Windows e nel client Web

Sembrava scontato in C\AL ma ora non è così, l’esecuzione degli oggetti senza utility specifica, diventa un impresa macchinosa, vale a dire, essere in grado di eseguire un oggetto senza dover modificare e salvare launch.json . Il modo più semplice per trovare la funzionalità è nell’elenco comandi. Cerca “> crs: run” e ti darà tutte le opzioni utili per fare il run dell’oggetto.

  • Gestire automaticamente i nomi dei file (e le posizioni, se lo si desidera)
    Questa feature consente di far risparmiare tempo agli sviluppatori nella gestione di nomi e organizzazioni in cartelle,
    I due comandi principali sono :
    Rinomina
    Riorganizza

Basterà infatti scrivere CRS.OnSaveAlFileAction che eseguirà il Rename o il Reoganize al posto nostro in fase di salvataggio!

Ancora una volta possiamo dire che il grande Waldo ci viene incontro!

Di seguito il link dell’extension:
https://marketplace.visualstudio.com/items?itemName=waldo.crs-al-language-extension

 

Semplifica i processi, prendi decisioni più informate e accelera la crescita con Dynamics 365 Business Central, una soluzione di gestione aziendale completa progettata per le piccole e medie imprese.

&

Dynamics 365 Developer

Dynamics 365 Developer

Dynamics 365 Developer

Implementare-sistema-gestionale-erp

Come l’obiettivo aziendale può aiutarti a implementare un gestionale ERP

La vita di un’azienda è in continuo movimento. Per far fronte a questi tempi incerti, oggi più che mai c’è bisogno di semplificare e automatizzare i processi aziendali. Ma questo non basta in quanto la vita mette le aziende di fronte a scenari sempre più complessi e richiede ai manager risposte sempre più accurate.

Il manager passa gran parte del suo tempo a reperire ed elaborare informazioni, cercando di prevedere le esigenze dei suoi clienti per poter loro fornire prodotti in modo più veloce e a minor costo. Ovviamente questo presume che alla base di tutto ci sia uno strumento in grado di fornire le informazioni corrette: un ERP (Enterprise Resource Planning).

I sistemi gestionali sono nati come sistemi contabili o sistemi di gestione di magazzino; con il tempo però si sono evoluti verso soluzioni sempre più integrate. Con la globalizzazione dei mercati e con la digitalizzazione delle aziende, i processi da gestire sono diventati sempre più complessi e interconnessi tra loro e questa evoluzione ha fatto nascere i sistemi gestionali moderni. Avendo un unico database che collega tutte le transazioni aziendali, un ERP moderno diventa la scelta naturale di un manager per poter verificare l’andamento del proprio business.

Sfortunatamente spesso accade che l’implementazione di sistemi complessi non venga approcciata pensando “alla fine” ovvero per fornire i dati necessari al manager grazie ai quali dovrebbe prendere decisioni vitali per l’azienda o decidere eventuali cambi di rotta.

La maggior parte dei progetti d’implementazione segue una checklist che parte dalle anagrafiche per poi passare all’analisi dei processi senza concentrarsi però sugli obiettivi aziendali e loro KPI e sui leading indicators.

I consigli per implementare un nuovo gestionale

Di seguito troverete alcuni consigli su cosa prestare attenzione quando si implementa un nuovo gestionale:

  • Definisci i tuoi obiettivi
    Gli obiettivi aziendali possono variare da reparto a reparto e possono avere timeline diverse. Definire chiaramente quali siano gli obiettivi aziendali aiuta a capire dove concentrare maggiormente gli sforzi dell’azienda. Vuoi ridurre costi? Aumentare la marginalità? Investire nei prodotti?
    Per la loro corretta definizione si può usare lo strumento SMART, acronimo che sta per Specifico, Misurabile, Realizzabile, Realistico e Tempestivo.
  • Scegli i tuoi KPI (Key Performance Indicators)
    Una volta definiti gli obiettivi puoi scegliere come misurarli definendo alcuni KPI. I KPI misurano le prestazioni dei processi e nella stragrande maggioranza dei casi possono essere calcolati sulla base di dati presenti già nel tuo ERP.
    Un buon esempio di KPI è la percentuale di allocazione delle persone sui progetti o il costo medio di articoli che produciamo.  Sapendo quali KPI ci servono, possiamo renderci conto di quali macro-processi dobbiamo mettere a punto durante la nostra implementazione.
  • Stabilisci i Leading Indicators
    I Leading Indicators misurano la possibilità di arrivare a un determinato KPI. Ad esempio, se voglio che la produttività annuale del team sia maggiore del 70%, molto probabilmente posso misurare la percentuale di allocazione delle risorse inserite nella pianificazione mensile. Se mensilmente pianifico il 60% di attività produttive, non mi posso certo aspettare che il mio KPI sia al di sopra del 70%. I LI dipendono dai dati che andiamo ad inserire e i gestionali spesso possiedono una struttura che permette l’inserimento di questi dati. Durante l’implementazione dobbiamo essere sicuri che sia stata predisposta la struttura dati tale da dare la possibilità ai futuri utenti del sistema di inserire agilmente ciò che ci interessa.
  • Predisponi dei report o dei cruscotti
    Una volta definiti i KPI e i LI, nel nostro sistema gestionale possiamo predisporre una reportistica cucita su misura. I report possono fornire i dati aggiornati in tempo reale, dando la possibilità di filtrare il risultato per le variabili prestabilite. Durante l’implementazione del gestionale è importante fare un elenco di questi report, delle modalità di visualizzazione e dei filtri.

Oggi gestire un’azienda significa essere flessibili ed essere preparati a saper cambiare.

Solo avendo a disposizione dati corretti e coerenti tra loro, sarà possibile raggiungere gli obiettivi e poter far fronte ad eventi imprevedibili. Un ERP implementato in modo corretto è il tool primario di ogni manager in quanto non solo permette di gestire i processi ma è anche in grado di fornire i dati sul loro andamento.

 

Semplifica i processi, prendi decisioni più informate e accelera la crescita con Dynamics 365 Business Central, una soluzione di gestione aziendale completa progettata per le piccole e medie imprese.

&

Microsoft Team Leader | Empoli