Update: 2026-05-15 04:35:25
This commit is contained in:
@@ -7,6 +7,7 @@ import 'package:share_plus/share_plus.dart';
|
||||
import '../../../core/network/dio_client.dart';
|
||||
import '../../../core/utils/app_snackbar.dart';
|
||||
import '../../../core/utils/logger.dart';
|
||||
import '../../../core/services/thermal_printer_service.dart';
|
||||
|
||||
class InvoiceDetailController extends GetxController {
|
||||
var invoice = {}.obs;
|
||||
@@ -269,4 +270,57 @@ class InvoiceDetailController extends GetxController {
|
||||
AppSnackbar.showError('خطأ', 'فشل إرسال الفاتورة لجوفوترا');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> printThermalInvoice() async {
|
||||
final ipController = TextEditingController(text: '192.168.1.100'); // Default IP
|
||||
|
||||
final proceed = await Get.dialog<bool>(
|
||||
AlertDialog(
|
||||
title: const Text('إعدادات الطابعة الحرارية'),
|
||||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
const Text('أدخل عنوان IP للطابعة (WiFi)'),
|
||||
const SizedBox(height: 12),
|
||||
TextField(
|
||||
controller: ipController,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'IP Address',
|
||||
border: OutlineInputBorder(),
|
||||
hintText: 'e.g. 192.168.1.100',
|
||||
),
|
||||
keyboardType: TextInputType.number,
|
||||
),
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
TextButton(onPressed: () => Get.back(result: false), child: const Text('إلغاء')),
|
||||
ElevatedButton(
|
||||
onPressed: () => Get.back(result: true),
|
||||
style: ElevatedButton.styleFrom(backgroundColor: const Color(0xFF0F4C81)),
|
||||
child: const Text('طباعة', style: TextStyle(color: Colors.white)),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
if (proceed == true && ipController.text.isNotEmpty) {
|
||||
try {
|
||||
AppSnackbar.showInfo('جاري الاتصال', 'يتم الاتصال بالطابعة...');
|
||||
final success = await ThermalPrinterService().printInvoice(
|
||||
ip: ipController.text.trim(),
|
||||
invoice: Map<String, dynamic>.from(invoice),
|
||||
);
|
||||
|
||||
if (success) {
|
||||
AppSnackbar.showSuccess('تمت الطباعة', 'تم إرسال الفاتورة للطابعة بنجاح');
|
||||
} else {
|
||||
AppSnackbar.showError('خطأ', 'فشل الاتصال بالطابعة. تأكد من عنوان IP والشبكة.');
|
||||
}
|
||||
} catch (e) {
|
||||
AppLogger.error('Print error', e);
|
||||
AppSnackbar.showError('خطأ', 'حدث خطأ أثناء الطباعة');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user