openFiscalReceipt method

Future<void> openFiscalReceipt({
  1. required int opperatorCode,
  2. required String opperatorPassword,
  3. String? uniqueSaleNumber,
  4. required int salePoint,
  5. bool invoice = false,
})

Implementation

Future<void> openFiscalReceipt({
  required int opperatorCode,
  required String opperatorPassword,
  String? uniqueSaleNumber,
  required int salePoint,
  bool invoice = false,
}) async {
  assert(
    opperatorCode >= 1 && opperatorCode <= 30,
    'opperatorCode must be in range 1..30',
  );
  assert(
    opperatorPassword.length <= 8,
    'opperatorPassword must 8 characters or less',
  );
  assert(
    salePoint >= 1 && salePoint <= 99999,
    'salePoint must be in range 1..99999',
  );
  assert(
    uniqueSaleNumber == null ||
        RegExp(
          r'^[A-Z]{2}[0-9]{6}-[0-9A-Za-z]{4}-[0-9]{7}$',
        ).hasMatch(uniqueSaleNumber),
    'Invalid format: must match "LLDDDDDD-CCCC-DDDDDDD"',
  );

  debugPrint('openFiscalReceipt');

  final message = await execute(
    Commands.openFiscalReceipt.code,
    data: [
      opperatorCode,
      opperatorPassword,
      if (uniqueSaleNumber != null) uniqueSaleNumber,
      salePoint,
      invoice ? "I" : "",
    ].toCommand(),
  );

  final [$e, ...rest] = message.data.response;
  final error = int.tryParse($e) ?? 0;

  if (error != 0) {
    throw FiscalCodeException('Error opening fiscal receipt', error);
  }
}