Spaces:
Sleeping
Sleeping
Update combined_summary.py
Browse files- combined_summary.py +11 -130
combined_summary.py
CHANGED
@@ -36,7 +36,7 @@ def combined_summary():
|
|
36 |
|
37 |
# ====== FETCH CUSTOMER DETAILS ======
|
38 |
customer_query = f"""
|
39 |
-
SELECT Id, Name, Email__c, Phone_Number__c
|
40 |
FROM Customer_Login__c
|
41 |
WHERE Email__c = '{safe_email}'
|
42 |
LIMIT 1
|
@@ -50,42 +50,12 @@ def combined_summary():
|
|
50 |
customer_data = {
|
51 |
"name": customer.get("Name", "SATHVIK GANTA"),
|
52 |
"email": customer.get("Email__c", "[email protected]"),
|
53 |
-
"phone": customer.get("Phone_Number__c", "9876543210")
|
54 |
-
"referral_code": customer.get("Referral__c", ""),
|
55 |
-
"reward_points": customer.get("Reward_Points__c", 0)
|
56 |
}
|
57 |
|
58 |
-
# ====== FETCH REWARDS ======
|
59 |
-
user_points = customer_data["reward_points"]
|
60 |
-
|
61 |
-
# Determine tier
|
62 |
-
tiers = {
|
63 |
-
"Bronze": 100,
|
64 |
-
"Silver": 200,
|
65 |
-
"Gold": 300,
|
66 |
-
"Platinum": 500
|
67 |
-
}
|
68 |
-
current_tier, next_tier = "Bronze", "Silver"
|
69 |
-
start_point, end_point = 0, 100
|
70 |
-
if user_points >= 100 and user_points < 200:
|
71 |
-
current_tier, next_tier = "Silver", "Gold"
|
72 |
-
start_point, end_point = 100, 200
|
73 |
-
elif user_points >= 200 and user_points < 300:
|
74 |
-
current_tier, next_tier = "Gold", "Platinum"
|
75 |
-
start_point, end_point = 200, 300
|
76 |
-
elif user_points >= 300:
|
77 |
-
current_tier, next_tier = "Platinum", "N/A"
|
78 |
-
start_point, end_point = 300, 500
|
79 |
-
|
80 |
-
progress_percentage = ((user_points - start_point) / (end_point - start_point)) * 100 if end_point != start_point else 100
|
81 |
-
points_needed_for_next_tier = max(0, end_point - user_points)
|
82 |
-
|
83 |
# ====== FETCH ORDER SUMMARY ======
|
84 |
order_query = f"""
|
85 |
-
SELECT Id, Customer_Name__c, Customer_Email__c,
|
86 |
-
Order_Status__c, Discount__c, Total_Bill__c, CreatedDate,
|
87 |
-
Delivery_Address__c, Place_of_Supply__c, CGST_Rate__c, SGST_Rate__c,
|
88 |
-
Payment_Mode__c, Reverse_Charge__c
|
89 |
FROM Order__c
|
90 |
WHERE Customer_Email__c = '{safe_email}'
|
91 |
ORDER BY CreatedDate DESC
|
@@ -99,19 +69,10 @@ def combined_summary():
|
|
99 |
order = order_result["records"][0]
|
100 |
order_details = order.get("Order_Details__c", "")
|
101 |
order_items = []
|
102 |
-
sector_names = set()
|
103 |
|
104 |
-
# Calculate
|
105 |
-
total_gross_value = 0
|
106 |
-
total_discount = order.get("Discount__c", 0)
|
107 |
-
total_net_value = 0
|
108 |
-
total_cgst = 0
|
109 |
-
total_sgst = 0
|
110 |
total_amount = 0
|
111 |
|
112 |
-
cgst_rate = order.get("CGST_Rate__c", 2.5) / 100 # e.g., 2.5% as 0.025
|
113 |
-
sgst_rate = order.get("SGST_Rate__c", 2.5) / 100
|
114 |
-
|
115 |
for line in order_details.split('\n'):
|
116 |
item_parts = line.split('|')
|
117 |
if len(item_parts) >= 5:
|
@@ -120,61 +81,21 @@ def combined_summary():
|
|
120 |
safe_item_name = escape_soql(item_name)
|
121 |
|
122 |
menu_query = f"""
|
123 |
-
SELECT Name, Price__c, Image1__c
|
124 |
-
Ingredient_1__r.Ingredient_Name__c, Ingredient_1__r.Ingredient_Image__c,
|
125 |
-
Ingredient_1__r.Health_Benefits__c, Ingredient_1__r.Fun_Facts__c,
|
126 |
-
Ingredient_2__r.Ingredient_Name__c, Ingredient_2__r.Ingredient_Image__c,
|
127 |
-
Ingredient_2__r.Health_Benefits__c, Ingredient_2__r.Fun_Facts__c,
|
128 |
-
Sector__c
|
129 |
FROM Menu_Item__c
|
130 |
WHERE Name = '{safe_item_name}'
|
131 |
"""
|
132 |
menu_result = sf.query_all(menu_query)
|
133 |
-
ingredients = []
|
134 |
|
135 |
if menu_result.get("records"):
|
136 |
menu_item = menu_result["records"][0]
|
137 |
price = menu_item.get("Price__c", 0)
|
138 |
-
|
139 |
-
net_value = price - discount
|
140 |
-
cgst = net_value * cgst_rate
|
141 |
-
sgst = net_value * sgst_rate
|
142 |
-
item_total = net_value + cgst + sgst
|
143 |
-
|
144 |
-
# Update totals
|
145 |
-
total_gross_value += price
|
146 |
-
total_discount += discount
|
147 |
-
total_net_value += net_value
|
148 |
-
total_cgst += cgst
|
149 |
-
total_sgst += sgst
|
150 |
-
total_amount += item_total
|
151 |
-
|
152 |
-
if menu_item.get('Ingredient_1__r'):
|
153 |
-
ingredients.append({
|
154 |
-
"name": menu_item['Ingredient_1__r'].get('Ingredient_Name__c', ''),
|
155 |
-
"image": menu_item['Ingredient_1__r'].get('Ingredient_Image__c', ''),
|
156 |
-
"health_benefits": menu_item['Ingredient_1__r'].get('Health_Benefits__c', ''),
|
157 |
-
"fun_facts": menu_item['Ingredient_1__r'].get('Fun_Facts__c', '')
|
158 |
-
})
|
159 |
-
|
160 |
-
if menu_item.get('Ingredient_2__r'):
|
161 |
-
ingredients.append({
|
162 |
-
"name": menu_item['Ingredient_2__r'].get('Ingredient_Name__c', ''),
|
163 |
-
"image": menu_item['Ingredient_2__r'].get('Ingredient_Image__c', ''),
|
164 |
-
"health_benefits": menu_item['Ingredient_2__r'].get('Health_Benefits__c', ''),
|
165 |
-
"fun_facts": menu_item['Ingredient_2__r'].get('Fun_Facts__c', '')
|
166 |
-
})
|
167 |
-
|
168 |
-
if menu_item.get('Sector__c'):
|
169 |
-
sector_names.update(menu_item['Sector__c'].split(','))
|
170 |
|
171 |
order_items.append({
|
172 |
"name": item_name,
|
173 |
"price": price,
|
174 |
-
"
|
175 |
-
"image_url": menu_item.get("Image1__c", ''),
|
176 |
-
"ingredients": ingredients,
|
177 |
-
"category": "Food" if ingredients else "Soft Drink"
|
178 |
})
|
179 |
|
180 |
# Fetch restaurant details
|
@@ -193,61 +114,21 @@ def combined_summary():
|
|
193 |
"fssai": "13622012000022"
|
194 |
}
|
195 |
|
196 |
-
#
|
197 |
-
|
198 |
-
for sector_name in sector_names:
|
199 |
-
safe_sector_name = escape_soql(sector_name.strip())
|
200 |
-
sector_query = f"""
|
201 |
-
SELECT Name, Image_URL__c, Description__c
|
202 |
-
FROM Sector_Detail__c
|
203 |
-
WHERE Name = '{safe_sector_name}'
|
204 |
-
"""
|
205 |
-
sector_result = sf.query_all(sector_query)
|
206 |
-
if sector_result.get("records"):
|
207 |
-
sector_record = sector_result["records"][0]
|
208 |
-
sector_details[sector_name] = {
|
209 |
-
"image_url": sector_record.get('Image_URL__c', ''),
|
210 |
-
"description": sector_record.get('Description__c', '')
|
211 |
-
}
|
212 |
|
213 |
-
#
|
214 |
order_data = {
|
215 |
"id": order.get("Id", "247JD92F00043965"),
|
216 |
-
"created_date": order.get("CreatedDate", "2024-12-12").split("T")[0]
|
217 |
-
"delivery_address": order.get("Delivery_Address__c", "Plot no -80, Road no-4, Sharadha Nagar, Vanasthalipuram, 500070"),
|
218 |
-
"place_of_supply": order.get("Place_of_Supply__c", "Telangana(36)"),
|
219 |
-
"cgst_rate": f"{order.get('CGST_Rate__c', 2.5)}%",
|
220 |
-
"sgst_rate": f"{order.get('SGST_Rate__c', 2.5)}%",
|
221 |
-
"cgst_rate_float": order.get("CGST_Rate__c", 2.5) / 100,
|
222 |
-
"sgst_rate_float": order.get("SGST_Rate__c", 2.5) / 100,
|
223 |
-
"payment_mode": order.get("Payment_Mode__c", "Digital"),
|
224 |
-
"reverse_charge": order.get("Reverse_Charge__c", "No")
|
225 |
}
|
226 |
|
227 |
-
# Convert total amount to words
|
228 |
-
total_amount_in_words = number_to_words(total_amount)
|
229 |
-
|
230 |
-
# Prepare template data
|
231 |
template_data = {
|
232 |
"order_id": order_data["id"],
|
233 |
"order_items": order_items,
|
234 |
"customer": customer_data,
|
235 |
"restaurant": restaurant,
|
236 |
"order": order_data,
|
237 |
-
"sector_details": sector_details,
|
238 |
-
"current_tier": current_tier,
|
239 |
-
"next_tier": next_tier,
|
240 |
-
"user_points": user_points,
|
241 |
-
"progress_percentage": progress_percentage,
|
242 |
-
"start_point": start_point,
|
243 |
-
"end_point": end_point,
|
244 |
-
"points_needed_for_next_tier": points_needed_for_next_tier,
|
245 |
-
"validity_year": datetime.now().year,
|
246 |
-
"total_gross_value": total_gross_value,
|
247 |
-
"total_discount": total_discount,
|
248 |
-
"total_net_value": total_net_value,
|
249 |
-
"total_cgst": total_cgst,
|
250 |
-
"total_sgst": total_sgst,
|
251 |
"total_amount": total_amount,
|
252 |
"total_amount_in_words": total_amount_in_words
|
253 |
}
|
|
|
36 |
|
37 |
# ====== FETCH CUSTOMER DETAILS ======
|
38 |
customer_query = f"""
|
39 |
+
SELECT Id, Name, Email__c, Phone_Number__c
|
40 |
FROM Customer_Login__c
|
41 |
WHERE Email__c = '{safe_email}'
|
42 |
LIMIT 1
|
|
|
50 |
customer_data = {
|
51 |
"name": customer.get("Name", "SATHVIK GANTA"),
|
52 |
"email": customer.get("Email__c", "[email protected]"),
|
53 |
+
"phone": customer.get("Phone_Number__c", "9876543210")
|
|
|
|
|
54 |
}
|
55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
# ====== FETCH ORDER SUMMARY ======
|
57 |
order_query = f"""
|
58 |
+
SELECT Id, Customer_Name__c, Customer_Email__c, Order_Details__c, CreatedDate
|
|
|
|
|
|
|
59 |
FROM Order__c
|
60 |
WHERE Customer_Email__c = '{safe_email}'
|
61 |
ORDER BY CreatedDate DESC
|
|
|
69 |
order = order_result["records"][0]
|
70 |
order_details = order.get("Order_Details__c", "")
|
71 |
order_items = []
|
|
|
72 |
|
73 |
+
# Calculate total
|
|
|
|
|
|
|
|
|
|
|
74 |
total_amount = 0
|
75 |
|
|
|
|
|
|
|
76 |
for line in order_details.split('\n'):
|
77 |
item_parts = line.split('|')
|
78 |
if len(item_parts) >= 5:
|
|
|
81 |
safe_item_name = escape_soql(item_name)
|
82 |
|
83 |
menu_query = f"""
|
84 |
+
SELECT Name, Price__c, Image1__c
|
|
|
|
|
|
|
|
|
|
|
85 |
FROM Menu_Item__c
|
86 |
WHERE Name = '{safe_item_name}'
|
87 |
"""
|
88 |
menu_result = sf.query_all(menu_query)
|
|
|
89 |
|
90 |
if menu_result.get("records"):
|
91 |
menu_item = menu_result["records"][0]
|
92 |
price = menu_item.get("Price__c", 0)
|
93 |
+
total_amount += price
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
|
95 |
order_items.append({
|
96 |
"name": item_name,
|
97 |
"price": price,
|
98 |
+
"image_url": menu_item.get("Image1__c", '')
|
|
|
|
|
|
|
99 |
})
|
100 |
|
101 |
# Fetch restaurant details
|
|
|
114 |
"fssai": "13622012000022"
|
115 |
}
|
116 |
|
117 |
+
# Convert total amount to words
|
118 |
+
total_amount_in_words = number_to_words(total_amount)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
|
120 |
+
# Prepare template data
|
121 |
order_data = {
|
122 |
"id": order.get("Id", "247JD92F00043965"),
|
123 |
+
"created_date": order.get("CreatedDate", "2024-12-12").split("T")[0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
}
|
125 |
|
|
|
|
|
|
|
|
|
126 |
template_data = {
|
127 |
"order_id": order_data["id"],
|
128 |
"order_items": order_items,
|
129 |
"customer": customer_data,
|
130 |
"restaurant": restaurant,
|
131 |
"order": order_data,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
"total_amount": total_amount,
|
133 |
"total_amount_in_words": total_amount_in_words
|
134 |
}
|