saveBusiness method

Future<PosBusinessSettings> saveBusiness(
  1. Map<String, dynamic> patch
)

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'));
}