Vai al contenuto

Tipi di dato: dt_PRICE e affini

dt_PRICE è uno dei tipi predefiniti (BoDataType) utilizzabili quando si crea uno UserDataSource — indica a SAP che tipo di dato conterrà e come formattarlo/validarlo automaticamente nel controllo collegato.

oForm.DataSources.UserDataSources.Add("MyPrice", SAPbouiCOM.BoDataType.dt_PRICE);

Con dt_PRICE il controllo collegato (es. un EditText):

  • formatta automaticamente il numero secondo le impostazioni di valuta di sistema dell'utente (separatori decimali, migliaia, ecc.)
  • applica il numero di decimali configurato per i prezzi in Amministrazione → Inizializzazione Sistema → Impostazioni Generali (tab Visualizzazione, "Price")
  • valida che l'input sia numerico, rifiutando testo non valido

Confronto con altri tipi numerici

BoDataType Uso tipico Decimali
dt_PRICE Prezzi unitari, importi in valuta segue impostazioni "Price"
dt_SUM Totali/somme (es. importo riga, totale documento) segue impostazioni "Sum"
dt_QUANTITY Quantità articoli segue impostazioni "Quantity"
dt_PERCENT Percentuali (sconti, IVA) segue impostazioni "Percent"
dt_SHORT_NUMBER / dt_LONG_NUMBER Numeri interi generici nessuna formattazione valuta

Perché non usare semplicemente dt_SHORT_TEXT

Tecnicamente possibile, ma si perderebbe:

  • la formattazione automatica coerente con il resto del programma (l'utente vede i prezzi tutti formattati allo stesso modo)
  • l'eventuale conversione automatica di valuta se il campo è collegato a un CurrencyDataSource

Esempio

oForm.DataSources.UserDataSources.Add("UnitPrice", SAPbouiCOM.BoDataType.dt_PRICE);

SAPbouiCOM.EditText oPriceField = (SAPbouiCOM.EditText)oForm.Items.Item("PriceItm").Specific;
oPriceField.DataBind.SetBound(true, "", "UnitPrice");

// Legge il valore come double, non come stringa
double prezzo = oForm.DataSources.UserDataSources.Item("UnitPrice").ValueEx.ToDouble();

Info

ValueEx per i tipi numerici restituisce comunque una stringa (formato invariante) — va convertita per essere usata nei calcoli, ma SAP gestisce internamente il parsing/display coerente col tipo dichiarato. Vedi Value vs ValueEx.