diff --git a/lib/presentation/home/bloc/qris/qris_bloc.dart b/lib/presentation/home/bloc/qris/qris_bloc.dart index d9a4ac4..42c5936 100644 --- a/lib/presentation/home/bloc/qris/qris_bloc.dart +++ b/lib/presentation/home/bloc/qris/qris_bloc.dart @@ -1,4 +1,3 @@ -import 'dart:async'; import 'dart:developer'; import 'package:flutter_bloc/flutter_bloc.dart'; diff --git a/lib/presentation/home/bloc/user_update_outlet/user_update_outlet_bloc.dart b/lib/presentation/home/bloc/user_update_outlet/user_update_outlet_bloc.dart index 7c9ae26..e614e35 100644 --- a/lib/presentation/home/bloc/user_update_outlet/user_update_outlet_bloc.dart +++ b/lib/presentation/home/bloc/user_update_outlet/user_update_outlet_bloc.dart @@ -1,5 +1,3 @@ -import 'dart:developer'; - import 'package:bloc/bloc.dart'; import 'package:enaklo_pos/data/datasources/user_remote_datasource.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; diff --git a/lib/presentation/home/dialog/payment_qris_dialog.dart b/lib/presentation/home/dialog/payment_qris_dialog.dart index 483545b..33688f2 100644 --- a/lib/presentation/home/dialog/payment_qris_dialog.dart +++ b/lib/presentation/home/dialog/payment_qris_dialog.dart @@ -13,8 +13,6 @@ import 'package:intl/intl.dart'; import 'package:enaklo_pos/core/extensions/build_context_ext.dart'; import 'package:enaklo_pos/presentation/home/bloc/qris/qris_bloc.dart'; import 'package:enaklo_pos/presentation/home/widgets/success_payment_dialog.dart'; -import 'package:enaklo_pos/presentation/setting/bloc/sync_order/sync_order_bloc.dart'; -import 'package:print_bluetooth_thermal/print_bluetooth_thermal.dart'; import 'package:widgets_to_image/widgets_to_image.dart'; import 'package:enaklo_pos/core/utils/printer_service.dart'; @@ -230,24 +228,25 @@ class _PaymentQrisDialogState extends State { ElevatedButton( onPressed: () async { try { - final sizeReceipt = await AuthLocalDataSource().getSizeReceipt(); + final sizeReceipt = + await AuthLocalDataSource().getSizeReceipt(); final bytes = await controller.capture(); final printValue = await PrintDataoutputs.instance - .printQRIS(widget.price, bytes!, int.parse(sizeReceipt)); - + .printQRIS( + widget.price, bytes!, int.parse(sizeReceipt)); + // Get the receipt printer to print QRIS - final receiptPrinter = await ProductLocalDatasource.instance + final receiptPrinter = await ProductLocalDatasource + .instance .getPrinterByCode('receipt'); - + if (receiptPrinter != null) { await PrinterService().printWithPrinter( - receiptPrinter, - printValue, - context - ); + receiptPrinter, printValue, context); } else { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text('No receipt printer configured')), + SnackBar( + content: Text('No receipt printer configured')), ); } } catch (e) { diff --git a/lib/presentation/home/pages/confirm_payment_page-old.dart b/lib/presentation/home/pages/confirm_payment_page-old.dart index 46ec6d6..db785a3 100644 --- a/lib/presentation/home/pages/confirm_payment_page-old.dart +++ b/lib/presentation/home/pages/confirm_payment_page-old.dart @@ -11,13 +11,11 @@ import 'package:enaklo_pos/data/models/response/table_model.dart'; import 'package:enaklo_pos/presentation/home/bloc/get_table_status/get_table_status_bloc.dart'; import 'package:enaklo_pos/presentation/home/bloc/order/order_bloc.dart'; import 'package:enaklo_pos/presentation/home/bloc/payment_methods/payment_methods_bloc.dart'; -import 'package:enaklo_pos/presentation/home/bloc/status_table/status_table_bloc.dart'; import 'package:enaklo_pos/presentation/home/models/product_quantity.dart'; import 'package:enaklo_pos/presentation/home/models/order_type.dart'; import 'package:enaklo_pos/presentation/home/widgets/save_order_dialog.dart'; import 'package:enaklo_pos/data/models/response/payment_methods_response_model.dart'; import 'package:enaklo_pos/data/datasources/product_local_datasource.dart'; -import 'package:enaklo_pos/presentation/table/models/draft_order_item.dart'; import '../../../core/components/buttons.dart'; import '../../../core/components/spaces.dart'; diff --git a/lib/presentation/home/pages/dashboard_page.dart b/lib/presentation/home/pages/dashboard_page.dart index 92ba892..ce95eed 100644 --- a/lib/presentation/home/pages/dashboard_page.dart +++ b/lib/presentation/home/pages/dashboard_page.dart @@ -16,7 +16,6 @@ import 'package:enaklo_pos/presentation/report/pages/report_page.dart'; import 'package:enaklo_pos/presentation/setting/bloc/sync_order/sync_order_bloc.dart'; import 'package:enaklo_pos/presentation/setting/pages/printer_configuration_page.dart'; import 'package:enaklo_pos/presentation/setting/pages/settings_page.dart'; -import 'package:enaklo_pos/presentation/table/pages/new_table_management_page.dart'; import '../../../core/assets/assets.gen.dart'; import '../../auth/bloc/logout/logout_bloc.dart'; diff --git a/lib/presentation/home/widgets/save_order_dialog.dart b/lib/presentation/home/widgets/save_order_dialog.dart index db73d5e..abc2b64 100644 --- a/lib/presentation/home/widgets/save_order_dialog.dart +++ b/lib/presentation/home/widgets/save_order_dialog.dart @@ -2,15 +2,9 @@ import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_esc_pos_network/flutter_esc_pos_network.dart'; import 'package:enaklo_pos/core/extensions/string_ext.dart'; -import 'package:enaklo_pos/data/datasources/auth_local_datasource.dart'; import 'package:enaklo_pos/data/datasources/product_local_datasource.dart'; -import 'package:intl/intl.dart'; -import 'package:print_bluetooth_thermal/print_bluetooth_thermal.dart'; - import 'package:enaklo_pos/core/extensions/build_context_ext.dart'; -import 'package:enaklo_pos/core/extensions/int_ext.dart'; import 'package:enaklo_pos/data/dataoutputs/print_dataoutputs.dart'; import 'package:enaklo_pos/data/models/response/table_model.dart'; import 'package:enaklo_pos/presentation/home/models/product_quantity.dart'; @@ -20,7 +14,6 @@ import '../../../core/components/buttons.dart'; import '../../../core/components/spaces.dart'; import '../../table/blocs/get_table/get_table_bloc.dart'; import '../bloc/checkout/checkout_bloc.dart'; -import '../bloc/order/order_bloc.dart'; import '../models/order_type.dart'; import 'package:enaklo_pos/core/utils/printer_service.dart'; diff --git a/lib/presentation/home/widgets/success_payment_dialog.dart b/lib/presentation/home/widgets/success_payment_dialog.dart index eaf331a..ac2355a 100644 --- a/lib/presentation/home/widgets/success_payment_dialog.dart +++ b/lib/presentation/home/widgets/success_payment_dialog.dart @@ -3,16 +3,12 @@ import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_esc_pos_network/flutter_esc_pos_network.dart'; import 'package:intl/intl.dart'; -import 'package:print_bluetooth_thermal/print_bluetooth_thermal.dart'; import 'package:enaklo_pos/core/extensions/build_context_ext.dart'; import 'package:enaklo_pos/core/extensions/int_ext.dart'; import 'package:enaklo_pos/core/extensions/string_ext.dart'; -import 'package:enaklo_pos/data/dataoutputs/laman_print.dart'; import 'package:enaklo_pos/data/dataoutputs/print_dataoutputs.dart'; -import 'package:enaklo_pos/data/datasources/auth_local_datasource.dart'; import 'package:enaklo_pos/data/datasources/product_local_datasource.dart'; import 'package:enaklo_pos/presentation/home/models/product_quantity.dart'; import 'package:enaklo_pos/presentation/home/models/order_type.dart'; @@ -101,7 +97,7 @@ class _SuccessPaymentDialogState extends State { const SpaceHeight(5.0), BlocBuilder( builder: (context, state) { - final total = state.maybeWhen( + state.maybeWhen( orElse: () => 0, loaded: (model, orderId) => model.total, ); @@ -201,118 +197,137 @@ class _SuccessPaymentDialogState extends State { ); final kembalian = paymentAmount - widget.totalPrice; - return BlocBuilder( + return BlocBuilder( builder: (context, checkoutState) { final orderType = checkoutState.maybeWhen( orElse: () => OrderType.dineIn, - loaded: (items, discountModel, discount, discountAmount, tax, serviceCharge, totalQuantity, totalPrice, draftName, orderType) => orderType, + loaded: (items, + discountModel, + discount, + discountAmount, + tax, + serviceCharge, + totalQuantity, + totalPrice, + draftName, + orderType) => + orderType, ); - + return Button.filled( onPressed: () async { - final receiptPrinter = await ProductLocalDatasource - .instance - .getPrinterByCode('receipt'); - final kitchenPrinter = await ProductLocalDatasource - .instance - .getPrinterByCode('kitchen'); - final barPrinter = await ProductLocalDatasource.instance - .getPrinterByCode('bar'); + final receiptPrinter = + await ProductLocalDatasource.instance + .getPrinterByCode('receipt'); + final kitchenPrinter = + await ProductLocalDatasource.instance + .getPrinterByCode('kitchen'); + final barPrinter = await ProductLocalDatasource + .instance + .getPrinterByCode('bar'); - // Receipt Printer - if (receiptPrinter != null) { - try { - final settingsLocalDatasource = SettingsLocalDatasource(); - final taxModel = await settingsLocalDatasource.getTax(); - final serviceChargeValue = await settingsLocalDatasource.getServiceCharge(); - - // Get the actual payment method from OrderBloc - final paymentMethod = state.maybeWhen( - orElse: () => 'Cash', - loaded: (model, orderId) => model.paymentMethod, - ); - - final printValue = - await PrintDataoutputs.instance.printOrderV3( - widget.data, - widget.totalQty, - widget.totalPrice, - paymentMethod, - paymentAmount, - kembalian, - widget.subTotal, - widget.totalDiscount, - widget.totalTax, - widget.totalService, - 'kasir', - widget.draftName, - receiptPrinter.paper.toIntegerFromText, - taxPercentage: taxModel.value, - serviceChargePercentage: serviceChargeValue, - ); - - await PrinterService().printWithPrinter( - receiptPrinter, - printValue, - context - ); - } catch (e) { - log("Error printing receipt: $e"); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text('Error printing receipt: $e')), - ); - } - } + // Receipt Printer + if (receiptPrinter != null) { + try { + final settingsLocalDatasource = + SettingsLocalDatasource(); + final taxModel = + await settingsLocalDatasource.getTax(); + final serviceChargeValue = + await settingsLocalDatasource + .getServiceCharge(); - // Kitchen Printer - if (kitchenPrinter != null && widget.isTablePaymentPage == false) { - try { - final printValue = await PrintDataoutputs.instance.printKitchen( - widget.data, - '', - widget.draftName, - 'kasir', - kitchenPrinter.paper.toIntegerFromText, - orderType.value, - ); - - await PrinterService().printWithPrinter( - kitchenPrinter, - printValue, - context - ); - } catch (e) { - log("Error printing kitchen order: $e"); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text('Error printing kitchen order: $e')), - ); - } - } + // Get the actual payment method from OrderBloc + final paymentMethod = state.maybeWhen( + orElse: () => 'Cash', + loaded: (model, orderId) => + model.paymentMethod, + ); - // Bar printer - if (barPrinter != null && widget.isTablePaymentPage == false) { - try { - final printValue = await PrintDataoutputs.instance.printBar( - widget.data, - '', - widget.draftName, - 'kasir', - barPrinter.paper.toIntegerFromText, - orderType.value, - ); - - await PrinterService().printWithPrinter( - barPrinter, - printValue, - context - ); - } catch (e) { - log("Error printing bar order: $e"); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text('Error printing bar order: $e')), - ); - } - } + final printValue = await PrintDataoutputs + .instance + .printOrderV3( + widget.data, + widget.totalQty, + widget.totalPrice, + paymentMethod, + paymentAmount, + kembalian, + widget.subTotal, + widget.totalDiscount, + widget.totalTax, + widget.totalService, + 'kasir', + widget.draftName, + receiptPrinter.paper.toIntegerFromText, + taxPercentage: taxModel.value, + serviceChargePercentage: serviceChargeValue, + ); + + await PrinterService().printWithPrinter( + receiptPrinter, printValue, context); + } catch (e) { + log("Error printing receipt: $e"); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: + Text('Error printing receipt: $e')), + ); + } + } + + // Kitchen Printer + if (kitchenPrinter != null && + widget.isTablePaymentPage == false) { + try { + final printValue = await PrintDataoutputs + .instance + .printKitchen( + widget.data, + '', + widget.draftName, + 'kasir', + kitchenPrinter.paper.toIntegerFromText, + orderType.value, + ); + + await PrinterService().printWithPrinter( + kitchenPrinter, printValue, context); + } catch (e) { + log("Error printing kitchen order: $e"); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + 'Error printing kitchen order: $e')), + ); + } + } + + // Bar printer + if (barPrinter != null && + widget.isTablePaymentPage == false) { + try { + final printValue = + await PrintDataoutputs.instance.printBar( + widget.data, + '', + widget.draftName, + 'kasir', + barPrinter.paper.toIntegerFromText, + orderType.value, + ); + + await PrinterService().printWithPrinter( + barPrinter, printValue, context); + } catch (e) { + log("Error printing bar order: $e"); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + 'Error printing bar order: $e')), + ); + } + } }, label: 'Print', );