feat: cetak
This commit is contained in:
parent
c906d5ebe5
commit
e462326495
@ -133,9 +133,12 @@ class _PaymentAddOrderDialogState extends State<PaymentAddOrderDialog> {
|
|||||||
state.maybeWhen(
|
state.maybeWhen(
|
||||||
orElse: () {},
|
orElse: () {},
|
||||||
success: (data) {
|
success: (data) {
|
||||||
context.pushReplacement(SuccessSaveOrderPage(
|
context.pushReplacement(
|
||||||
order: data,
|
SuccessSaveOrderPage(
|
||||||
));
|
productQuantity: widget.items,
|
||||||
|
order: data,
|
||||||
|
),
|
||||||
|
);
|
||||||
},
|
},
|
||||||
error: (message) => AppFlushbar.showError(context, message),
|
error: (message) => AppFlushbar.showError(context, message),
|
||||||
);
|
);
|
||||||
|
|||||||
@ -145,6 +145,7 @@ class _PaymentSaveDialogState extends State<PaymentSaveDialog> {
|
|||||||
orElse: () {},
|
orElse: () {},
|
||||||
success: (data) {
|
success: (data) {
|
||||||
context.pushReplacement(SuccessSaveOrderPage(
|
context.pushReplacement(SuccessSaveOrderPage(
|
||||||
|
productQuantity: widget.items,
|
||||||
order: data,
|
order: data,
|
||||||
));
|
));
|
||||||
},
|
},
|
||||||
|
|||||||
@ -906,6 +906,7 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
|
|||||||
success: (data) {
|
success: (data) {
|
||||||
context
|
context
|
||||||
.pushReplacement(SuccessOrderPage(
|
.pushReplacement(SuccessOrderPage(
|
||||||
|
productQuantity: items,
|
||||||
order: data,
|
order: data,
|
||||||
));
|
));
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,16 +1,24 @@
|
|||||||
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:enaklo_pos/core/components/components.dart';
|
import 'package:enaklo_pos/core/components/components.dart';
|
||||||
import 'package:enaklo_pos/core/components/dashed_divider.dart';
|
import 'package:enaklo_pos/core/components/dashed_divider.dart';
|
||||||
import 'package:enaklo_pos/core/constants/colors.dart';
|
import 'package:enaklo_pos/core/constants/colors.dart';
|
||||||
import 'package:enaklo_pos/core/extensions/build_context_ext.dart';
|
import 'package:enaklo_pos/core/extensions/build_context_ext.dart';
|
||||||
import 'package:enaklo_pos/core/extensions/date_time_ext.dart';
|
import 'package:enaklo_pos/core/extensions/date_time_ext.dart';
|
||||||
import 'package:enaklo_pos/core/extensions/string_ext.dart';
|
import 'package:enaklo_pos/core/extensions/string_ext.dart';
|
||||||
|
import 'package:enaklo_pos/core/utils/printer_service.dart';
|
||||||
|
import 'package:enaklo_pos/data/dataoutputs/print_dataoutputs.dart';
|
||||||
|
import 'package:enaklo_pos/data/datasources/product_local_datasource.dart';
|
||||||
import 'package:enaklo_pos/data/models/response/order_response_model.dart';
|
import 'package:enaklo_pos/data/models/response/order_response_model.dart';
|
||||||
|
import 'package:enaklo_pos/presentation/home/models/product_quantity.dart';
|
||||||
import 'package:enaklo_pos/presentation/home/pages/dashboard_page.dart';
|
import 'package:enaklo_pos/presentation/home/pages/dashboard_page.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class SuccessOrderPage extends StatelessWidget {
|
class SuccessOrderPage extends StatelessWidget {
|
||||||
|
final List<ProductQuantity> productQuantity;
|
||||||
final Order order;
|
final Order order;
|
||||||
const SuccessOrderPage({super.key, required this.order});
|
const SuccessOrderPage(
|
||||||
|
{super.key, required this.order, required this.productQuantity});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -164,7 +172,96 @@ class SuccessOrderPage extends StatelessWidget {
|
|||||||
SpaceWidth(12),
|
SpaceWidth(12),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Button.filled(
|
child: Button.filled(
|
||||||
onPressed: () {},
|
onPressed: () async {
|
||||||
|
final checkerPrinter = await ProductLocalDatasource
|
||||||
|
.instance
|
||||||
|
.getPrinterByCode('checker');
|
||||||
|
final kitchenPrinter = await ProductLocalDatasource
|
||||||
|
.instance
|
||||||
|
.getPrinterByCode('kitchen');
|
||||||
|
final barPrinter = await ProductLocalDatasource
|
||||||
|
.instance
|
||||||
|
.getPrinterByCode('bar');
|
||||||
|
|
||||||
|
log("Checker printer: ${checkerPrinter?.toMap()}");
|
||||||
|
log("Kitchen printer: ${kitchenPrinter?.toMap()}");
|
||||||
|
log("Bar printer: ${barPrinter?.toMap()}");
|
||||||
|
|
||||||
|
// Checker printer
|
||||||
|
if (checkerPrinter != null) {
|
||||||
|
try {
|
||||||
|
final printValue =
|
||||||
|
await PrintDataoutputs.instance.printChecker(
|
||||||
|
productQuantity,
|
||||||
|
order.tableNumber ?? "",
|
||||||
|
order.orderNumber ?? "",
|
||||||
|
'kasir',
|
||||||
|
checkerPrinter.paper.toIntegerFromText,
|
||||||
|
order.orderType ?? "",
|
||||||
|
);
|
||||||
|
|
||||||
|
await PrinterService().printWithPrinter(
|
||||||
|
checkerPrinter, printValue, context);
|
||||||
|
} catch (e) {
|
||||||
|
log("Error printing checker: $e");
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
SnackBar(
|
||||||
|
content:
|
||||||
|
Text('Error printing checker: $e')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kitchen printer
|
||||||
|
if (kitchenPrinter != null) {
|
||||||
|
try {
|
||||||
|
final printValue =
|
||||||
|
await PrintDataoutputs.instance.printKitchen(
|
||||||
|
productQuantity,
|
||||||
|
order.tableNumber!,
|
||||||
|
order.orderNumber ?? "",
|
||||||
|
'kasir',
|
||||||
|
kitchenPrinter.paper.toIntegerFromText,
|
||||||
|
order.orderType ?? "",
|
||||||
|
);
|
||||||
|
|
||||||
|
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) {
|
||||||
|
try {
|
||||||
|
final printValue =
|
||||||
|
await PrintDataoutputs.instance.printBar(
|
||||||
|
productQuantity,
|
||||||
|
order.tableNumber ?? "",
|
||||||
|
order.orderNumber ?? "",
|
||||||
|
'kasir',
|
||||||
|
barPrinter.paper.toIntegerFromText,
|
||||||
|
order.orderType ?? "",
|
||||||
|
);
|
||||||
|
|
||||||
|
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: 'Cetak',
|
label: 'Cetak',
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
Icons.print,
|
Icons.print,
|
||||||
|
|||||||
@ -1,16 +1,24 @@
|
|||||||
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:enaklo_pos/core/components/components.dart';
|
import 'package:enaklo_pos/core/components/components.dart';
|
||||||
import 'package:enaklo_pos/core/components/dashed_divider.dart';
|
import 'package:enaklo_pos/core/components/dashed_divider.dart';
|
||||||
import 'package:enaklo_pos/core/constants/colors.dart';
|
import 'package:enaklo_pos/core/constants/colors.dart';
|
||||||
import 'package:enaklo_pos/core/extensions/build_context_ext.dart';
|
import 'package:enaklo_pos/core/extensions/build_context_ext.dart';
|
||||||
import 'package:enaklo_pos/core/extensions/date_time_ext.dart';
|
import 'package:enaklo_pos/core/extensions/date_time_ext.dart';
|
||||||
import 'package:enaklo_pos/core/extensions/string_ext.dart';
|
import 'package:enaklo_pos/core/extensions/string_ext.dart';
|
||||||
|
import 'package:enaklo_pos/core/utils/printer_service.dart';
|
||||||
|
import 'package:enaklo_pos/data/dataoutputs/print_dataoutputs.dart';
|
||||||
|
import 'package:enaklo_pos/data/datasources/product_local_datasource.dart';
|
||||||
import 'package:enaklo_pos/data/models/response/order_response_model.dart';
|
import 'package:enaklo_pos/data/models/response/order_response_model.dart';
|
||||||
|
import 'package:enaklo_pos/presentation/home/models/product_quantity.dart';
|
||||||
import 'package:enaklo_pos/presentation/home/pages/dashboard_page.dart';
|
import 'package:enaklo_pos/presentation/home/pages/dashboard_page.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class SuccessSaveOrderPage extends StatelessWidget {
|
class SuccessSaveOrderPage extends StatelessWidget {
|
||||||
|
final List<ProductQuantity> productQuantity;
|
||||||
final Order order;
|
final Order order;
|
||||||
const SuccessSaveOrderPage({super.key, required this.order});
|
const SuccessSaveOrderPage(
|
||||||
|
{super.key, required this.order, required this.productQuantity});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -160,7 +168,96 @@ class SuccessSaveOrderPage extends StatelessWidget {
|
|||||||
SpaceWidth(12),
|
SpaceWidth(12),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Button.filled(
|
child: Button.filled(
|
||||||
onPressed: () {},
|
onPressed: () async {
|
||||||
|
final checkerPrinter = await ProductLocalDatasource
|
||||||
|
.instance
|
||||||
|
.getPrinterByCode('checker');
|
||||||
|
final kitchenPrinter = await ProductLocalDatasource
|
||||||
|
.instance
|
||||||
|
.getPrinterByCode('kitchen');
|
||||||
|
final barPrinter = await ProductLocalDatasource
|
||||||
|
.instance
|
||||||
|
.getPrinterByCode('bar');
|
||||||
|
|
||||||
|
log("Checker printer: ${checkerPrinter?.toMap()}");
|
||||||
|
log("Kitchen printer: ${kitchenPrinter?.toMap()}");
|
||||||
|
log("Bar printer: ${barPrinter?.toMap()}");
|
||||||
|
|
||||||
|
// Checker printer
|
||||||
|
if (checkerPrinter != null) {
|
||||||
|
try {
|
||||||
|
final printValue =
|
||||||
|
await PrintDataoutputs.instance.printChecker(
|
||||||
|
productQuantity,
|
||||||
|
order.tableNumber ?? "",
|
||||||
|
order.orderNumber ?? "",
|
||||||
|
'kasir',
|
||||||
|
checkerPrinter.paper.toIntegerFromText,
|
||||||
|
order.orderType ?? "",
|
||||||
|
);
|
||||||
|
|
||||||
|
await PrinterService().printWithPrinter(
|
||||||
|
checkerPrinter, printValue, context);
|
||||||
|
} catch (e) {
|
||||||
|
log("Error printing checker: $e");
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
SnackBar(
|
||||||
|
content:
|
||||||
|
Text('Error printing checker: $e')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kitchen printer
|
||||||
|
if (kitchenPrinter != null) {
|
||||||
|
try {
|
||||||
|
final printValue =
|
||||||
|
await PrintDataoutputs.instance.printKitchen(
|
||||||
|
productQuantity,
|
||||||
|
order.tableNumber!,
|
||||||
|
order.orderNumber ?? "",
|
||||||
|
'kasir',
|
||||||
|
kitchenPrinter.paper.toIntegerFromText,
|
||||||
|
order.orderType ?? "",
|
||||||
|
);
|
||||||
|
|
||||||
|
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) {
|
||||||
|
try {
|
||||||
|
final printValue =
|
||||||
|
await PrintDataoutputs.instance.printBar(
|
||||||
|
productQuantity,
|
||||||
|
order.tableNumber ?? "",
|
||||||
|
order.orderNumber ?? "",
|
||||||
|
'kasir',
|
||||||
|
barPrinter.paper.toIntegerFromText,
|
||||||
|
order.orderType ?? "",
|
||||||
|
);
|
||||||
|
|
||||||
|
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: 'Cetak',
|
label: 'Cetak',
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
Icons.print,
|
Icons.print,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user