pos_bluetooth_thermal_printer/static/test_receipt_print.js

169 lines
5.6 KiB
JavaScript

/**
* Console Test Script for Bluetooth Receipt Printing
*
* Run this in the browser console while in POS to test receipt printing
*
* Usage:
* 1. Open POS on Android device
* 2. Open Chrome DevTools console (chrome://inspect on desktop, connect to device)
* 3. Copy and paste this entire script into console
* 4. Run: testBluetoothPrint()
*/
async function testBluetoothPrint() {
console.log('=== Bluetooth Print Test Started ===');
// Check if we're in POS
if (!window.odoo || !window.odoo.__DEBUG__ || !window.odoo.__DEBUG__.services) {
console.error('❌ Not in POS context. Please open this in POS.');
return;
}
// Get POS service
const services = window.odoo.__DEBUG__.services;
console.log('✓ Services available:', Object.keys(services));
const pos = services['pos.session'] || services['pos'];
if (!pos) {
console.error('❌ POS service not found');
console.log('Available services:', Object.keys(services));
return;
}
console.log('✓ POS service found');
// Check bluetooth config
console.log('POS config:', pos.config);
console.log('Bluetooth enabled:', pos.config?.bluetooth_printer_enabled);
// Check Web Bluetooth API
if (!navigator.bluetooth) {
console.error('❌ Web Bluetooth API not available');
return;
}
console.log('✓ Web Bluetooth API available');
// Check for order
let order = null;
if (typeof pos.get_order === 'function') {
order = pos.get_order();
console.log('✓ Got order via get_order()');
} else if (pos.selectedOrder) {
order = pos.selectedOrder;
console.log('✓ Got order via selectedOrder');
} else if (pos.orders && pos.orders.length > 0) {
order = pos.orders[pos.orders.length - 1];
console.log('✓ Got order via orders array');
}
if (!order) {
console.error('❌ No active order found');
console.log('POS keys:', Object.keys(pos));
return;
}
console.log('✓ Order found:', order);
console.log('Order keys:', Object.keys(order));
console.log('Order name:', order.name || order.pos_reference);
// Check order lines
let lines = [];
if (typeof order.get_orderlines === 'function') {
lines = order.get_orderlines();
console.log('✓ Got lines via get_orderlines()');
} else if (order.lines) {
lines = order.lines;
console.log('✓ Got lines via lines property');
} else if (order.orderlines) {
lines = order.orderlines;
console.log('✓ Got lines via orderlines property');
}
console.log(`✓ Found ${lines.length} order lines`);
if (lines.length > 0) {
const firstLine = lines[0];
console.log('First line keys:', Object.keys(firstLine));
console.log('First line:', firstLine);
}
// Check payment lines
let payments = [];
if (typeof order.get_paymentlines === 'function') {
payments = order.get_paymentlines();
console.log('✓ Got payments via get_paymentlines()');
} else if (order.paymentlines) {
payments = order.paymentlines;
console.log('✓ Got payments via paymentlines property');
}
console.log(`✓ Found ${payments.length} payment lines`);
// Check company info
console.log('Company:', pos.company);
// Check cashier
let cashier = null;
if (typeof pos.get_cashier === 'function') {
cashier = pos.get_cashier();
console.log('✓ Got cashier via get_cashier()');
} else if (pos.cashier) {
cashier = pos.cashier;
console.log('✓ Got cashier via cashier property');
} else if (pos.user) {
cashier = pos.user;
console.log('✓ Got cashier via user property');
}
console.log('Cashier:', cashier);
console.log('=== Test Complete ===');
console.log('All data structures look good! Receipt printing should work.');
}
// Also provide a function to check bluetooth connection
async function checkBluetoothConnection() {
console.log('=== Bluetooth Connection Check ===');
if (!navigator.bluetooth) {
console.error('❌ Web Bluetooth API not available');
return;
}
console.log('✓ Web Bluetooth API available');
try {
const devices = await navigator.bluetooth.getDevices();
console.log(`✓ Found ${devices.length} paired devices`);
devices.forEach((device, index) => {
console.log(` ${index + 1}. ${device.name} (${device.id})`);
console.log(` Connected: ${device.gatt?.connected || false}`);
});
} catch (error) {
console.error('❌ Error getting devices:', error);
}
console.log('=== Check Complete ===');
}
// Provide instructions
console.log(`
╔════════════════════════════════════════════════════════════╗
║ Bluetooth Receipt Print Test Script Loaded ║
╚════════════════════════════════════════════════════════════╝
Available commands:
1. testBluetoothPrint()
- Tests if all POS data is accessible
- Shows order structure and available methods
- Run this AFTER creating an order in POS
2. checkBluetoothConnection()
- Checks Web Bluetooth API availability
- Lists paired bluetooth devices
- Shows connection status
Example usage:
> testBluetoothPrint()
> checkBluetoothConnection()
`);