saveBusiness method
Betriebsweite Einstellungen schreiben (Recht layout). patch mit
englischen Schlüsseln, am besten aus posSettingsChanges; vatRates
immer als ganze Karte.
Implementation
Future<PosBusinessSettings> saveBusiness(Map<String, dynamic> patch) async {
const name = Aufrufe.setMyKasseSettings;
// Der optionale Schalter getrennt: er steht nicht in den Standardwerten,
// gegen die `_pruefeTeil` die Schluessel prueft.
final behalten = patch['tipKeptByDefault'];
if (patch.containsKey('tipKeptByDefault') && behalten is! bool) {
throw const KasseneckValidationError(name, 'business.tipKeptByDefault: true oder false erwartet', 'request');
}
final gesendet = patch.containsKey('tipKeptByDefault') && patch.length == 1
? <String, dynamic>{}
: _pruefeTeil(name, 'business', {...patch}..remove('tipKeptByDefault'), const PosBusinessSettings().toJson(), posBusinessValues);
if (patch.containsKey('tipKeptByDefault')) gesendet['tipKeptByDefault'] = behalten;
if (gesendet.containsKey('vatRates')) {
final karte = gesendet['vatRates'];
// Unter /v3 prüft der Server die übergebene Karte für sich: ein
// einzelner Schalter wie {20: false} wäre dort „kein Satz an".
if (karte is! Map || !karte.values.any((an) => an == true)) {
throw const KasseneckValidationError(
name, 'business.vatRates: mindestens ein Steuersatz muss an sein (immer die ganze Karte senden)', 'request');
}
}
final daten = await transport.call(name, params: {'business': gesendet});
return PosBusinessSettings.fromJson(_stand(name, daten, 'business'));
}