Vai al contenuto

Classi Utility

Il Framework Ribes mette a disposizione un ricco set di classi helper all'interno del namespace RibesSAPFramework.Utils. Queste classi semplificano notevolmente le operazioni comuni di SAP Business One, nascondendo la complessità delle API native (sia DI API che UI API) e offrendo metodi sicuri e pronti all'uso.

1. SAPUtils (Core SAP Operations)

Gestisce la creazione delle strutture dati (UDT, UDF, UDO) e operazioni base sull'interfaccia (es. Menu).

Metodo Descrizione
startTransaction() / endTransaction() Gestione delle transazioni DI API.
creaMenu() / rimuoviMenu() Crea o rimuove voci di menu nativi in SAP B1.
createTB() Crea una User Defined Table (UDT).
createSingleUserField() Crea uno User Defined Field (UDF) su tabelle standard o UDT.
createUDO() Definisce uno User Defined Object completo (Master Data o Document).
checkIfUDTExists() / checkIfUDOExists() Controlla la pre-esistenza di tabelle o UDO.

2. FormUtils

Fornisce metodi helper per gestire le Form e la UI.

Metodo Descrizione
LoadFromXML() Carica una finestra partendo da un file .srf o .xml.
createPopUp() / writeTextPopUp() Crea una finestra modale temporanea (utile per messaggi di attesa/caricamento).
editTextToCombo() Converte (visivamente) un EditText in un ComboBox a runtime.
dinamicEditText() Crea controlli EditText dinamicamente sulla form.

Esempio: PopUp di Attesa

FormUtils.createPopUp();
FormUtils.writeTextPopUp("Elaborazione in corso...", 1, 100);
// ... elaborazione ...
FormUtils.closePopUp();

3. MatrixUtils

Semplifica la lettura e scrittura dei valori all'interno delle griglie (SAPbouiCOM.Matrix). Risolve i classici problemi di formattazione nativi.

Metodo Descrizione
SetStringValue() / SetDecimalValue() Imposta un valore in una cella gestendo automaticamente eccezioni e UI focus.
SetComboBoxValue() / SetCheckBoxValue() Imposta i valori per celle di tipo Combo o CheckBox.
GetDecimalValue() Estrae il valore decimale da una cella, convertendolo correttamente.
GetUniqueValuesFromXml() Estrae valori univoci leggendo l'XML di una matrice.

Esempio: Lettura/Scrittura Matrice

// Imposta un valore decimale in riga 1, colonna "Prezzo"
MatrixUtils.SetDecimalValue(oMatrix, 1, "Prezzo", 150.50);

// Legge il valore decimale
double prezzo = MatrixUtils.GetDecimalValue(oMatrix, 1, "Prezzo");

4. DialogUtils

Fornisce wrapper sicuri (STA Thread) per invocare le finestre di dialogo standard di Windows all'interno di B1.

Metodo Descrizione
InputBox() Mostra un popup di input testo (stile VBA InputBox).
STAShowDialog(FileDialog) Mostra un OpenFileDialog in modo thread-safe.
STAShowDialog(FolderBrowserDialog) Mostra un selettore di cartelle thread-safe.

Esempio: Chiedere un file all'utente

OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "Text files (*.txt)|*.txt";
if (DialogUtils.STAShowDialog(fd) == DialogResult.OK)
{
    string percorso = fd.FileName;
}

5. DateUtils

Gestisce le conversioni di date tra i formati stringa di SAP B1 (spesso yyyyMMdd) e il tipo DateTime del C#. Considera anche i separatori impostati a livello di Server SAP.

Metodo Descrizione
GetShortDate(string) Converte una stringa yyyyMMdd in DateTime.
GetyyyyMMddDateFormated(DateTime) Converte un DateTime in stringa yyyyMMdd.
GetDateByServerFormat() Legge una data stringa considerando le impostazioni server.
GetDateInServerFormat() Genera una stringa data formattata secondo il setup server di B1.

Esempio:

// Da B1 a C#
DateTime dataDoc = DateUtils.GetShortDate("20231025"); 

// Da C# a B1 (pronto per query o inserimenti API)
string stringaData = DateUtils.GetyyyyMMddDateFormated(DateTime.Now); 

6. DecimalUtils

Risolve il noto problema dei separatori decimali in SAP B1 (virgola vs punto) tra Client e Server.

Metodo Descrizione
ParseFromStringToDouble() Converte una stringa SAP in un double C#.
ParseFromDoubleToStringClient() Converte un double in stringa adatta alla UI di B1.
ParseFromDoubleToStringStandard() Converte in formato standard (en-us).

7. FormattedSearches

Permette la creazione e l'assegnazione via codice delle Ricerche Formattate (FMS - Formatted Searches).

Metodo Descrizione
CreateUserQuery() Crea o aggiorna una Query Utente nel Query Manager.
LinkUserQuery() Associa una query a un campo di una form (crea il link FMS).
LinkUserValues() Associa una FMS di tipo "Valori Validi".

8. ItemsUtils

Utility per gli Item della UI (Combobox, ChooseFromList).

Metodo Descrizione
setValidValuesComboBox() Popola un ComboBox o una colonna Matrix eseguendo una Query.
setMarketingDocAsValidValuesItem() Popola un Combo con i tipi di documento Marketing standard di B1.
addChooseFromList() Definisce a runtime un oggetto ChooseFromList (CFL) su una Form, con condizioni multiple.

9. StringUtils

Metodo Descrizione
GetFixDigitStringFormat() Genera stringhe a lunghezza fissa aggiungendo pad-caratteri (es. zeri iniziali).
EncodeTo64() / DecodeFrom64() Codifica/Decodifica Base64.

10. DataTableUtils

Metodo Descrizione
GetUniqueValues() Estrae valori univoci da una System.Data.DataTable.
GetUniqueValuesFromXml() Estrae valori univoci dall'XML nativo della UI API DataTable.

11. UserPermissions

Metodo Descrizione
addUserPermission() Crea un nuovo permesso custom nell'albero autorizzazioni di SAP B1.
getUserPermission() Verifica se l'utente ha permessi (Full, ReadOnly, None) per una specifica funzionalità.

12. ReleaseComObjectUtils

Metodo Descrizione
ReleaseComObjectWithoutGcCollect() Rilascia un oggetto COM (es. Recordset) senza forzare il Garbage Collector.
ReleaseComObjectWithGcCollect() Rilascia e forza GC.Collect(). Fondamentale in B1 per non esaurire la memoria.

13. CommonUtils

Metodo Descrizione
getCurrentParentId() Identifica il processo padre SAP corretto (utile per finestre di dialogo modali in Addon).
Encrypt() / Decrypt() Utility di crittografia standard (TripleDES).

14. FieldDescription

Metodo Descrizione
GetValue() Tabella di lookup cache / traduzione descrizioni tramite tabella custom @RS_TRNSLT.