Subbu1304 commited on
Commit
dc40b5d
·
verified ·
1 Parent(s): 9ba62d8

Update orderhistory.py

Browse files
Files changed (1) hide show
  1. orderhistory.py +48 -2
orderhistory.py CHANGED
@@ -1,7 +1,9 @@
1
- from flask import Blueprint, render_template, request,redirect, session, jsonify # Added jsonify import
2
  from salesforce import get_salesforce_connection
3
  from datetime import datetime
4
  import pytz # Library to handle timezone conversions
 
 
5
 
6
  orderhistory_blueprint = Blueprint('orderhistory', __name__)
7
 
@@ -66,9 +68,53 @@ def order_history():
66
  order_status = order.get("Order_Status__c", "N/A") # Default to "N/A" if no status
67
  order['order_status'] = order_status
68
 
69
-
70
  return render_template("order_history.html", orders=orders)
71
 
72
  except Exception as e:
73
  print(f"Error fetching order history: {str(e)}")
74
  return render_template("order_history.html", orders=[], error=str(e))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Blueprint, render_template, request, redirect, session, jsonify, send_file, url_for
2
  from salesforce import get_salesforce_connection
3
  from datetime import datetime
4
  import pytz # Library to handle timezone conversions
5
+ from weasyprint import HTML
6
+ from io import BytesIO
7
 
8
  orderhistory_blueprint = Blueprint('orderhistory', __name__)
9
 
 
68
  order_status = order.get("Order_Status__c", "N/A") # Default to "N/A" if no status
69
  order['order_status'] = order_status
70
 
 
71
  return render_template("order_history.html", orders=orders)
72
 
73
  except Exception as e:
74
  print(f"Error fetching order history: {str(e)}")
75
  return render_template("order_history.html", orders=[], error=str(e))
76
+
77
+
78
+ @orderhistory_blueprint.route("/generate_invoice/<order_id>", methods=["GET"])
79
+ def generate_invoice(order_id):
80
+ email = session.get('user_email') # Get logged-in user's email
81
+ if not email:
82
+ return jsonify({"success": False, "message": "User not logged in"}), 400
83
+
84
+ try:
85
+ # Fetch order details from Salesforce
86
+ result = sf.query(f"""
87
+ SELECT Id, Customer_Name__c, Customer_Email__c, Total_Amount__c, Order_Details__c,
88
+ Order_Status__c, Discount__c, Total_Bill__c, CreatedDate
89
+ FROM Order__c
90
+ WHERE Id = '{order_id}'
91
+ """)
92
+ order = result.get("records", [])[0] if result.get("records") else None
93
+
94
+ if not order:
95
+ return jsonify({"success": False, "message": "Order not found"}), 404
96
+
97
+ # Format order details for better readability
98
+ order_details = order.get("Order_Details__c", "")
99
+ items = order_details.split("\n")
100
+ formatted_items = []
101
+
102
+ for item in items:
103
+ item_details = item.split(" | ")
104
+ if len(item_details) > 1:
105
+ name = item_details[0].strip()
106
+ quantity = item_details[1].strip()
107
+ formatted_items.append(f"{name} * {quantity}")
108
+
109
+ # Render HTML invoice template
110
+ rendered_html = render_template('invoice.html', order=order, formatted_items=formatted_items)
111
+
112
+ # Convert HTML to PDF using WeasyPrint
113
+ pdf = HTML(string=rendered_html).write_pdf()
114
+
115
+ # Send the PDF as a downloadable file
116
+ return send_file(BytesIO(pdf), as_attachment=True, download_name=f"invoice_{order_id}.pdf", mimetype="application/pdf")
117
+
118
+ except Exception as e:
119
+ print(f"Error generating invoice: {str(e)}")
120
+ return jsonify({"success": False, "message": str(e)}), 500