apskel-pos-flutter/lib/core/function/app_function.dart

127 lines
4.0 KiB
Dart
Raw Normal View History

2025-08-06 19:52:40 +07:00
import 'dart:developer';
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';
2025-08-07 11:39:33 +07:00
import 'package:enaklo_pos/data/datasources/auth_local_datasource.dart';
2025-08-06 19:52:40 +07:00
import 'package:enaklo_pos/data/datasources/product_local_datasource.dart';
2025-08-07 14:28:52 +07:00
import 'package:enaklo_pos/data/datasources/settings_local_datasource.dart';
2025-08-06 19:52:40 +07:00
import 'package:enaklo_pos/data/models/response/order_response_model.dart';
import 'package:enaklo_pos/presentation/home/models/product_quantity.dart';
import 'package:flutter/material.dart';
Future<void> onPrint(
BuildContext context, {
required List<ProductQuantity> productQuantity,
required Order order,
}) async {
final checkerPrinter =
await ProductLocalDatasource.instance.getPrinterByCode('checker');
final kitchenPrinter =
await ProductLocalDatasource.instance.getPrinterByCode('kitchen');
final barPrinter =
await ProductLocalDatasource.instance.getPrinterByCode('bar');
2025-08-07 14:28:52 +07:00
final authData = await AuthLocalDataSource().getAuthData();
2025-08-06 19:52:40 +07:00
// Checker printer
if (checkerPrinter != null) {
try {
final printValue = await PrintDataoutputs.instance.printChecker(
2025-08-07 10:49:38 +07:00
productQuantity,
2025-08-06 19:52:40 +07:00
order.tableNumber ?? "",
order.orderNumber ?? "",
2025-08-07 14:28:52 +07:00
authData.user?.name ?? "",
2025-08-06 19:52:40 +07:00
checkerPrinter.paper.toIntegerFromText,
order.orderType ?? "",
);
await PrinterService()
// ignore: use_build_context_synchronously
.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(
2025-08-07 10:49:38 +07:00
productQuantity,
2025-08-06 19:52:40 +07:00
order.tableNumber!,
order.orderNumber ?? "",
2025-08-07 14:28:52 +07:00
authData.user?.name ?? "",
2025-08-06 19:52:40 +07:00
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(
2025-08-07 10:49:38 +07:00
productQuantity,
2025-08-06 19:52:40 +07:00
order.tableNumber ?? "",
order.orderNumber ?? "",
2025-08-07 14:28:52 +07:00
authData.user?.name ?? "",
2025-08-06 19:52:40 +07:00
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')),
);
}
}
}
2025-08-07 11:39:33 +07:00
Future<void> onPrintRecipt(
context, {
required Order order,
required String paymentMethod,
required int nominalBayar,
required int kembalian,
}) async {
final receiptPrinter =
await ProductLocalDatasource.instance.getPrinterByCode('receipt');
final authData = await AuthLocalDataSource().getAuthData();
2025-08-07 14:28:52 +07:00
final settings = await SettingsLocalDatasource().getTax();
2025-08-07 11:39:33 +07:00
if (receiptPrinter != null) {
try {
final printValue = await PrintDataoutputs.instance.printOrderV4(
order,
authData.user?.name ?? "",
paymentMethod,
nominalBayar,
kembalian,
2025-08-07 14:28:52 +07:00
settings.value,
2025-08-07 11:39:33 +07:00
receiptPrinter.paper.toIntegerFromText,
);
await PrinterService()
.printWithPrinter(receiptPrinter, printValue, context);
} catch (e) {
log("Error printing receipt order: $e");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error printing receipt order: $e')),
);
}
}
}