/// Safely converts a dynamic value from Odoo JSON-RPC to a String. /// Odoo returns `false` (boolean) for unset fields, which causes standard /// Dart type casts (like `value as String?`) to crash. String? safeString(dynamic value) { if (value is String) { return value; } return null; } /// Safely converts a dynamic value from Odoo JSON-RPC to a double. double safeDouble(dynamic value) { if (value is num) { return value.toDouble(); } if (value is String) { return double.tryParse(value) ?? 0.0; } return 0.0; }