split struct

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