fix: Risolve errori di deserializzazione JSON con valori decimali in Salesforce API

- Aggiunge configurazione JsonSerializerOptions per garantire compatibilità con Salesforce
- Implementa normalizzazione automatica di valori numerici con virgola decimale (es. "0,00" → 0.00)
- Sostituisce PostAsJsonAsync con StringContent personalizzato per controllo completo della serializzazione
- Aggiunge metodi NormalizeNumericValues e IsNumericWithComma per conversione formato decimale
- Aggiorna TransformValue per utilizzare InvariantCulture nelle conversioni numeriche
- Applica normalizzazione in CreateEntityAsync e metodi Composite (BatchCreate/BatchUpdate)
- Aggiunge logging dettagliato per tracciare le normalizzazioni numeriche

Risolve: "Impossibile deserializzare l'istanza di double da VALUE_STRING valore 0,00"
- Il problema era causato dall'invio di valori decimali nel formato italiano (virgola)
  invece del formato americano (punto) richiesto da Salesforce API
- La soluzione garantisce che tutti i valori numerici vengano sempre serializzati
  nel formato corretto per Salesforce indipendentemente dalla cultura locale
This commit is contained in:
2025-08-06 00:21:50 +02:00
parent 20a514068a
commit bcc936526b
5 changed files with 143 additions and 11 deletions
+6 -1
View File
@@ -1627,7 +1627,12 @@ public partial class DataCoupler : ComponentBase
case "edm.decimal":
case "edm.double":
if (decimal.TryParse(value.ToString(), out decimal decVal))
// Usa InvariantCulture per garantire che i decimali usino il punto come separatore
if (decimal.TryParse(value.ToString(), System.Globalization.NumberStyles.Number,
System.Globalization.CultureInfo.InvariantCulture, out decimal decVal))
return decVal;
// Fallback: prova con la cultura corrente nel caso il valore usi la virgola
if (decimal.TryParse(value.ToString(), out decVal))
return decVal;
break;