createCustomerCashregister method

Future<NeueKasse> createCustomerCashregister({
  1. required String customerId,
  2. bool? automatisch,
  3. String? signaturId,
})

Legt eine Kasse an.

Jede Kasse bezieht sich auf eine Signatur. Ohne eine einzige -- auch eine noch laufende zaehlt -- entsteht keine (signature_missing); bei mehreren muss signaturId dastehen (signature_ambiguous, die Auswahl steht in data.auswahl), eine fremde Kennung ist signature_unknown.

Darf vor der fertigen Signatur aufgerufen werden: die Kasse bleibt dann auf entwurf und geht von selbst live, sobald IHRE Signatur bereit ist (automatisch = true, Vorgabe). NeueKasse.grund sagt, warum gerade nichts lief: signature_not_ready oder automatik_aus.

Einen Namen gibt es nicht: Kassennamen vergibt Kasseneck, sie sind gleich der cashregisterId.

Hoechstens 20 Kassen je Betrieb (cashregister_limit); ohne gebuchtes Modul module_inactive.

Implementation

Future<NeueKasse> createCustomerCashregister({
  required String customerId,
  bool? automatisch,
  String? signaturId,
}) async {
  final id = _pflicht(customerId, 'createCustomerCashregister', 'customerId');
  final d = await _t.rufen(Aufrufe.createCustomerCashregister, params: <String, dynamic>{
    'customerId': id,
    'automatic': automatisch,
    'signatureRequestId': signaturId,
  });
  final ib = alsMap(d['activation']);
  final ok = ib['ok'];
  return NeueKasse(
    kasse: Kasse.aus(_verlangt(d['cashregister'], 'createCustomerCashregister', 'cashregister')),
    gestartet: alsJaNein(ib['started']),
    // `null` heisst "nicht gelaufen" und ist etwas anderes als `false`.
    ok: ok is bool ? ok : null,
    schritt: alsTextOderNull(ib['step']),
    grund: alsTextOderNull(ib['reason']),
  );
}