41 lines
1.8 KiB
Python
41 lines
1.8 KiB
Python
import sys
|
|
import traceback
|
|
|
|
def diagnose_pos_sessions(env):
|
|
sessions = env['pos.session'].search([('state', '!=', 'closed')])
|
|
if not sessions:
|
|
print("No open POS sessions found.")
|
|
return
|
|
|
|
for session in sessions:
|
|
print(f"Session: {session.name} | State: {session.state} | Company ID: {session.company_id.id}")
|
|
|
|
orders = env['pos.order'].search([('session_id', '=', session.id)])
|
|
for order in orders:
|
|
if order.company_id.id != session.company_id.id:
|
|
print(f" [!] Order {order.name} has Company ID {order.company_id.id} (Expected: {session.company_id.id})")
|
|
|
|
for line in order.lines:
|
|
if line.company_id.id != session.company_id.id:
|
|
print(f" [!] Order Line {line.id} has Company ID {line.company_id.id}")
|
|
|
|
payments = env['pos.payment'].search([('session_id', '=', session.id)])
|
|
for payment in payments:
|
|
if payment.company_id.id != session.company_id.id:
|
|
print(f" [!] Payment {payment.name} has Company ID {payment.company_id.id}")
|
|
|
|
if session.move_id and session.move_id.company_id.id != session.company_id.id:
|
|
print(f" [!] Account Move {session.move_id.name} has Company ID {session.move_id.company_id.id}")
|
|
|
|
print(" -> Attempting to close session...")
|
|
try:
|
|
# We bypass user domain restrictions for the script
|
|
session.with_context(allowed_company_ids=[session.company_id.id]).action_pos_session_closing_control()
|
|
print(f" -> Successfully closed session {session.name}!")
|
|
except Exception as e:
|
|
print(f" -> Failed to close session {session.name}:")
|
|
traceback.print_exc()
|
|
|
|
if __name__ == '__main__':
|
|
diagnose_pos_sessions(env)
|