uploadte to corect preview and print the labels for 1 row
This commit is contained in:
@@ -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'])
|
||||
|
||||
Reference in New Issue
Block a user