void struck

This commit is contained in:
efrilm
2025-11-10 13:06:06 +07:00
parent af182b6f5a
commit c5673a147c
8 changed files with 381 additions and 35 deletions
@@ -489,6 +489,15 @@ class PrinterRepository implements IPrinterRepository {
return _printCashier(order: order, outlet: outlet, cashieName: user.name);
}
@override
Future<Either<PrinterFailure, Unit>> printStruckVoid({
required Order order,
}) async {
final outlet = await _outletLocalDatasource.currentOutlet();
final user = await _authLocalDataProvider.currentUser();
return _printVoid(order: order, outlet: outlet, cashieName: user.name);
}
@override
Future<Either<PrinterFailure, Unit>> printStruckPayment({
required Order order,
@@ -766,4 +775,52 @@ class PrinterRepository implements IPrinterRepository {
);
}
}
Future<Either<PrinterFailure, Unit>> _printVoid({
required Order order,
required Outlet outlet,
required String cashieName,
}) async {
log('Starting to print void', name: _logName);
final voidPrinter = await _localDataProvider.findPrinterByCode('receipt');
if (voidPrinter.hasData) {
try {
final printer = voidPrinter.data!.toDomain();
final printValue = await PrintUi().printVoid(
order: order,
outlet: outlet,
cashierName: cashieName,
);
await printStruct(printer, printValue);
log('Finished printed void', name: _logName);
return right(unit);
} catch (e, stackTrace) {
FirebaseCrashlytics.instance.recordError(
'Print Struck Void Error: $e',
stackTrace,
reason:
'Print struck void error / Printer not setting in printer page',
information: ['Order ID: ${order.id}'],
);
log("Error printing void", name: _logName, error: e);
return left(
const PrinterFailure.dynamicErrorMessage('Error printing void order'),
);
}
} else {
FirebaseCrashlytics.instance.recordError(
'Void printer not found',
null,
reason: 'Void printer not found / Printer not setting in printer page',
information: ['Order ID: ${order.id}'],
);
return left(
const PrinterFailure.dynamicErrorMessage('Void printer not found'),
);
}
}
}