uploadte to corect preview and print the labels for 1 row

This commit is contained in:
2025-09-20 17:31:20 +03:00
parent beeaa02c35
commit 2c01db9fea
6 changed files with 865 additions and 120 deletions

View File

@@ -1308,14 +1308,155 @@ def view_orders():
@bp.route('/get_unprinted_orders', methods=['GET'])
def get_unprinted_orders():
"""Get all rows from order_for_labels where printed != 1"""
print(f"DEBUG: get_unprinted_orders called. Session role: {session.get('role')}")
if 'role' not in session or session['role'] not in ['superadmin', 'warehouse_manager', 'etichete']:
print(f"DEBUG: Access denied for role: {session.get('role')}")
return jsonify({'error': 'Access denied. Required roles: superadmin, warehouse_manager, etichete'}), 403
try:
print("DEBUG: Calling get_unprinted_orders_data()")
data = get_unprinted_orders_data()
print(f"DEBUG: Retrieved {len(data)} orders")
return jsonify(data)
except Exception as e:
print(f"DEBUG: Error in get_unprinted_orders: {e}")
import traceback
traceback.print_exc()
return jsonify({'error': str(e)}), 500
@bp.route('/generate_labels_pdf/<int:order_id>', methods=['POST'])
def generate_labels_pdf(order_id):
"""Generate PDF labels for a specific order"""
print(f"DEBUG: generate_labels_pdf called for order_id: {order_id}")
if 'role' not in session or session['role'] not in ['superadmin', 'warehouse_manager', 'etichete']:
print(f"DEBUG: Access denied for role: {session.get('role')}")
return jsonify({'error': 'Access denied. Required roles: superadmin, warehouse_manager, etichete'}), 403
try:
from .pdf_generator import generate_order_labels_pdf, update_order_printed_status
from .print_module import get_db_connection
from flask import make_response
# Get order data from database
conn = get_db_connection()
cursor = conn.cursor()
cursor.execute("""
SELECT id, comanda_productie, cod_articol, descr_com_prod, cantitate,
data_livrare, dimensiune, com_achiz_client, nr_linie_com_client, customer_name,
customer_article_number, open_for_order, line_number,
printed_labels, created_at, updated_at
FROM order_for_labels
WHERE id = %s
""", (order_id,))
row = cursor.fetchone()
conn.close()
if not row:
return jsonify({'error': 'Order not found'}), 404
# Create order data dictionary
order_data = {
'id': row[0],
'comanda_productie': row[1],
'cod_articol': row[2],
'descr_com_prod': row[3],
'cantitate': row[4],
'data_livrare': row[5],
'dimensiune': row[6],
'com_achiz_client': row[7],
'nr_linie_com_client': row[8],
'customer_name': row[9],
'customer_article_number': row[10],
'open_for_order': row[11],
'line_number': row[12],
'printed_labels': row[13] if row[13] is not None else 0,
'created_at': row[14],
'updated_at': row[15]
}
print(f"DEBUG: Generating PDF for order {order_id} with quantity {order_data['cantitate']}")
# Generate PDF
pdf_buffer = generate_order_labels_pdf(order_id, order_data)
# Update printed status in database
update_success = update_order_printed_status(order_id)
if not update_success:
print(f"Warning: Could not update printed status for order {order_id}")
# Create response with PDF
response = make_response(pdf_buffer.getvalue())
response.headers['Content-Type'] = 'application/pdf'
response.headers['Content-Disposition'] = f'inline; filename="labels_order_{order_id}_{order_data["comanda_productie"]}.pdf"'
print(f"DEBUG: PDF generated successfully for order {order_id}")
return response
except Exception as e:
print(f"DEBUG: Error generating PDF for order {order_id}: {e}")
import traceback
traceback.print_exc()
return jsonify({'error': str(e)}), 500
@bp.route('/get_order_data/<int:order_id>', methods=['GET'])
def get_order_data(order_id):
"""Get specific order data for preview"""
print(f"DEBUG: get_order_data called for order_id: {order_id}")
if 'role' not in session or session['role'] not in ['superadmin', 'warehouse_manager', 'etichete']:
return jsonify({'error': 'Access denied'}), 403
try:
data = get_unprinted_orders_data()
return jsonify(data)
from .print_module import get_db_connection
conn = get_db_connection()
cursor = conn.cursor()
cursor.execute("""
SELECT id, comanda_productie, cod_articol, descr_com_prod, cantitate,
data_livrare, dimensiune, com_achiz_client, nr_linie_com_client, customer_name,
customer_article_number, open_for_order, line_number,
printed_labels, created_at, updated_at
FROM order_for_labels
WHERE id = %s
""", (order_id,))
row = cursor.fetchone()
conn.close()
if not row:
return jsonify({'error': 'Order not found'}), 404
order_data = {
'id': row[0],
'comanda_productie': row[1],
'cod_articol': row[2],
'descr_com_prod': row[3],
'cantitate': row[4],
'data_livrare': str(row[5]) if row[5] else 'N/A',
'dimensiune': row[6],
'com_achiz_client': row[7],
'nr_linie_com_client': row[8],
'customer_name': row[9],
'customer_article_number': row[10],
'open_for_order': row[11],
'line_number': row[12],
'printed_labels': row[13] if row[13] is not None else 0,
'created_at': str(row[14]) if row[14] else 'N/A',
'updated_at': str(row[15]) if row[15] else 'N/A'
}
return jsonify(order_data)
except Exception as e:
print(f"DEBUG: Error getting order data for {order_id}: {e}")
import traceback
traceback.print_exc()
return jsonify({'error': str(e)}), 500
@warehouse_bp.route('/create_locations', methods=['GET', 'POST'])