feat: refactor
This commit is contained in:
@@ -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';
|
||||
|
||||
|
||||
@@ -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<SuccessPaymentDialog> {
|
||||
const SpaceHeight(5.0),
|
||||
BlocBuilder<OrderBloc, OrderState>(
|
||||
builder: (context, state) {
|
||||
final total = state.maybeWhen(
|
||||
state.maybeWhen(
|
||||
orElse: () => 0,
|
||||
loaded: (model, orderId) => model.total,
|
||||
);
|
||||
@@ -201,118 +197,137 @@ class _SuccessPaymentDialogState extends State<SuccessPaymentDialog> {
|
||||
);
|
||||
|
||||
final kembalian = paymentAmount - widget.totalPrice;
|
||||
return BlocBuilder<CheckoutBloc, CheckoutState>(
|
||||
return BlocBuilder<CheckoutBloc, CheckoutState>(
|
||||
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',
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user