feat: cetak

This commit is contained in:
efrilm 2025-08-04 11:57:50 +07:00
parent c906d5ebe5
commit e462326495
5 changed files with 206 additions and 7 deletions

View File

@ -133,9 +133,12 @@ class _PaymentAddOrderDialogState extends State<PaymentAddOrderDialog> {
state.maybeWhen(
orElse: () {},
success: (data) {
context.pushReplacement(SuccessSaveOrderPage(
order: data,
));
context.pushReplacement(
SuccessSaveOrderPage(
productQuantity: widget.items,
order: data,
),
);
},
error: (message) => AppFlushbar.showError(context, message),
);

View File

@ -145,6 +145,7 @@ class _PaymentSaveDialogState extends State<PaymentSaveDialog> {
orElse: () {},
success: (data) {
context.pushReplacement(SuccessSaveOrderPage(
productQuantity: widget.items,
order: data,
));
},

View File

@ -906,6 +906,7 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
success: (data) {
context
.pushReplacement(SuccessOrderPage(
productQuantity: items,
order: data,
));
},

View File

@ -1,16 +1,24 @@
import 'dart:developer';
import 'package:enaklo_pos/core/components/components.dart';
import 'package:enaklo_pos/core/components/dashed_divider.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/date_time_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/presentation/home/models/product_quantity.dart';
import 'package:enaklo_pos/presentation/home/pages/dashboard_page.dart';
import 'package:flutter/material.dart';
class SuccessOrderPage extends StatelessWidget {
final List<ProductQuantity> productQuantity;
final Order order;
const SuccessOrderPage({super.key, required this.order});
const SuccessOrderPage(
{super.key, required this.order, required this.productQuantity});
@override
Widget build(BuildContext context) {
@ -164,7 +172,96 @@ class SuccessOrderPage extends StatelessWidget {
SpaceWidth(12),
Expanded(
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',
icon: Icon(
Icons.print,

View File

@ -1,16 +1,24 @@
import 'dart:developer';
import 'package:enaklo_pos/core/components/components.dart';
import 'package:enaklo_pos/core/components/dashed_divider.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/date_time_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/presentation/home/models/product_quantity.dart';
import 'package:enaklo_pos/presentation/home/pages/dashboard_page.dart';
import 'package:flutter/material.dart';
class SuccessSaveOrderPage extends StatelessWidget {
final List<ProductQuantity> productQuantity;
final Order order;
const SuccessSaveOrderPage({super.key, required this.order});
const SuccessSaveOrderPage(
{super.key, required this.order, required this.productQuantity});
@override
Widget build(BuildContext context) {
@ -160,7 +168,96 @@ class SuccessSaveOrderPage extends StatelessWidget {
SpaceWidth(12),
Expanded(
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',
icon: Icon(
Icons.print,