print bar
This commit is contained in:
parent
3e6dce93fb
commit
873dd7e224
@ -137,6 +137,12 @@ class PrinterFormBloc extends Bloc<PrinterFormEvent, PrinterFormState> {
|
|||||||
outlet: currentOutlet,
|
outlet: currentOutlet,
|
||||||
cashierName: 'Kasir Test',
|
cashierName: 'Kasir Test',
|
||||||
);
|
);
|
||||||
|
} else if (e.code == 'bar') {
|
||||||
|
printValue = await PrintUi().printBar(
|
||||||
|
order: Order.mockOrder(),
|
||||||
|
outlet: currentOutlet,
|
||||||
|
cashierName: 'Kasir Test',
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
final printer = Printer.fromTest(
|
final printer = Printer.fromTest(
|
||||||
|
|||||||
@ -180,4 +180,64 @@ class PrintUi {
|
|||||||
|
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<List<int>> printBar({
|
||||||
|
required Order order,
|
||||||
|
required Outlet outlet,
|
||||||
|
required String cashierName,
|
||||||
|
int paper = 58,
|
||||||
|
}) async {
|
||||||
|
List<int> bytes = [];
|
||||||
|
|
||||||
|
final profile = await CapabilityProfile.load();
|
||||||
|
final generator = Generator(
|
||||||
|
paper == 58 ? PaperSize.mm58 : PaperSize.mm80,
|
||||||
|
profile,
|
||||||
|
);
|
||||||
|
final builder = ReceiptComponentBuilder(
|
||||||
|
generator: generator,
|
||||||
|
paperSize: 58,
|
||||||
|
);
|
||||||
|
|
||||||
|
bytes += generator.reset();
|
||||||
|
|
||||||
|
bytes += builder.header(
|
||||||
|
outletName: outlet.name,
|
||||||
|
address: outlet.address,
|
||||||
|
phoneNumber: outlet.phoneNumber,
|
||||||
|
);
|
||||||
|
|
||||||
|
bytes += builder.printerType(printerType: 'BAR');
|
||||||
|
|
||||||
|
bytes += builder.separator();
|
||||||
|
|
||||||
|
bytes += builder.dateTime(DateTime.now());
|
||||||
|
bytes += builder.orderInfo(
|
||||||
|
orderNumber: order.orderNumber,
|
||||||
|
customerName: order.metadata['customer_name'] ?? 'John Doe',
|
||||||
|
cashierName: cashierName,
|
||||||
|
paymentMethod: order.payments.last.paymentMethodName,
|
||||||
|
tableNumber: order.tableNumber,
|
||||||
|
);
|
||||||
|
|
||||||
|
bytes += builder.orderType(order.orderType);
|
||||||
|
|
||||||
|
bytes += builder.emptyLines(1);
|
||||||
|
|
||||||
|
for (final item in order.orderItems) {
|
||||||
|
bytes += builder.orderItem(
|
||||||
|
productName: item.productName,
|
||||||
|
quantity: item.quantity,
|
||||||
|
unitPrice: item.unitPrice.currencyFormatRpV2,
|
||||||
|
totalPrice: item.totalPrice.currencyFormatRpV2,
|
||||||
|
variantName: item.productVariantName,
|
||||||
|
notes: item.notes,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
bytes += builder.separator();
|
||||||
|
bytes += builder.footer();
|
||||||
|
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,9 @@ class _SettingPrinterBarState extends State<SettingPrinterBar> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return BlocListener<PrinterFormBloc, PrinterFormState>(
|
return MultiBlocListener(
|
||||||
|
listeners: [
|
||||||
|
BlocListener<PrinterFormBloc, PrinterFormState>(
|
||||||
listenWhen: (p, c) =>
|
listenWhen: (p, c) =>
|
||||||
p.failureOrDeleteSuccess != c.failureOrDeleteSuccess,
|
p.failureOrDeleteSuccess != c.failureOrDeleteSuccess,
|
||||||
listener: (context, state) {
|
listener: (context, state) {
|
||||||
@ -44,11 +46,30 @@ class _SettingPrinterBarState extends State<SettingPrinterBar> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
AppFlushbar.showSuccess(context, 'Printer bar berhasil dihapus');
|
AppFlushbar.showSuccess(
|
||||||
|
context,
|
||||||
|
'Printer bar berhasil dihapus',
|
||||||
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
),
|
||||||
|
BlocListener<PrinterFormBloc, PrinterFormState>(
|
||||||
|
listenWhen: (p, c) => p.failureOrPrintTest != c.failureOrPrintTest,
|
||||||
|
listener: (context, state) {
|
||||||
|
state.failureOrPrintTest.fold(
|
||||||
|
() => null,
|
||||||
|
(either) => either.fold(
|
||||||
|
(f) => AppFlushbar.showPrinterFailureToast(context, f),
|
||||||
|
(either) {
|
||||||
|
AppFlushbar.showSuccess(context, 'Printer test berhasil');
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
child: Material(
|
child: Material(
|
||||||
color: AppColor.background,
|
color: AppColor.background,
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
@ -103,6 +124,14 @@ class _SettingPrinterBarState extends State<SettingPrinterBar> {
|
|||||||
PrinterFormEvent.deleted(state.printer.id),
|
PrinterFormEvent.deleted(state.printer.id),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
onTestPrint: () {
|
||||||
|
context.read<PrinterFormBloc>().add(
|
||||||
|
PrinterFormEvent.printTest(
|
||||||
|
code: 'bar',
|
||||||
|
macAccdress: state.printer.address,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
(f) => f.maybeMap(
|
(f) => f.maybeMap(
|
||||||
orElse: () => ErrorCard(
|
orElse: () => ErrorCard(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user