Vai al contenuto

SAPManager

Il SAPManager funge da wrapper singleton per mantenere lo stato dell'applicazione e le connessioni ai vari layer di SAP Business One.

Accesso al Singleton

Tutti i moduli dell'add-on vi accedono tramite:

var manager = SAPManager.Instance;

Proprietà Principali

Proprietà Descrizione
SapApplication Riferimento a SAPbouiCOM.Application (UI API). Utilizzato per interfacce, menu e messaggi di stato.
SapDICompany Riferimento a SAPbobsCOM.Company (DI API). Utilizzato per creare/modificare oggetti di business.
SAPServiceLayer Client per il Service Layer (tramite B1SLayer.SLConnection).
ServiceLayerURI, RoutineSyncURI Endpoint URI del Service Layer e di servizi aggiuntivi.
SAPDB Fornisce il layer di accesso ai dati (implementa ISapDbProvider).
SAPAdminInfo Contiene le informazioni di amministrazione dell'azienda corrente.

Inoltre, mantiene in cache impostazioni locali vitali estratte tramite RilevaDatiAzienda(): - separatoreMigliaia e separatoreDecimali - currency (valuta di sistema) - importiDec e priceDec (precisione dei decimali per totali e prezzi)

Metodi Principali

Init()

Questo metodo si occupa di richiedere e memorizzare (in una tabella UDT cifrata) le credenziali per il database, il Service Layer e altri servizi come RoutineSync se non sono già configurati.

InitSAPDBExt()

Inizializza il layer dati usando SapDbFactory. Configura in modo automatico il meccanismo di fallback (es. passa a ODBC in caso di problemi sul Service Layer) informando l'utente tramite messaggi nella UI SAP.

RilevaDatiAzienda()

Legge la tabella nativa OADM (Dettagli Azienda) per estrarre separatori, decimali e valuta di sistema per evitare query ripetitive durante l'uso dell'add-on.

Conversione Numerica

  • ConvertDoubleToSAPString(double? n): Converte un numero .NET nel formato testuale atteso dall'interfaccia SAP (utilizzando il separatore decimale di SAPAdminInfo).
  • ConvertStringToDouble(string value): Converte in modo sicuro una stringa prelevata da un campo SAP in un double .NET.

Layer Dati

Il framework astrae le query dirette verso SAP tramite una factory e diversi provider (ad esempio FallbackDbProvider, HanaDbProvider, MssqlDbProvider). Il SAPManager gestisce internamente la factory e ci espone la connessione attiva nella proprietà SAPDB.

Esempio di Utilizzo

// Esempio in un gestore eventi
public void OnButtonClick(string formUID)
{
    // Mandare un messaggio alla barra di stato
    SAPManager.Instance.SapApplication.SetStatusBarMessage("Elaborazione in corso...", SAPbouiCOM.BoMessageTime.bmt_Short, false);

    // Recuperare un oggetto dal DI API
    SAPbobsCOM.BusinessPartners bp = (SAPbobsCOM.BusinessPartners)SAPManager.Instance.SapDICompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners);

    // Leggere il separatore decimale e convertire un valore
    string sapValue = SAPManager.Instance.ConvertDoubleToSAPString(1500.50);
}