feat: 5-tier pricing, market ticker integration, and delivery stats
Major update spanning pricing, market data, and analytics: - Pricing: Replace single-price service fees with 5-tier pricing for same-day, prime, and emergency deliveries across create/edit/finalize - Market: Add Ticker_Price and CompanyPrice models with endpoints for live commodity prices (HO, CL, RB) and competitor price tracking - Stats: Add daily/weekly/monthly gallons endpoints with multi-year comparison and YoY totals for the stats dashboard - Delivery: Add map and history endpoints, fix finalize null-driver crash - Schema: Change fill_location from INTEGER to VARCHAR(250), add pre_load normalization for customer updates, fix admin auth check Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -24,17 +24,52 @@ def create_oil_price():
|
||||
price_from_supplier = request.json["price_from_supplier"]
|
||||
price_for_customer = request.json["price_for_customer"]
|
||||
price_for_employee = request.json["price_for_employee"]
|
||||
price_same_day = request.json["price_same_day"]
|
||||
price_prime = request.json["price_prime"]
|
||||
price_emergency= request.json["price_emergency"]
|
||||
|
||||
# Legacy single-tier pricing (for backward compatibility, use tier1 values)
|
||||
price_same_day_tier1 = request.json.get("price_same_day_tier1", 0)
|
||||
price_prime_tier1 = request.json.get("price_prime_tier1", 0)
|
||||
price_emergency_tier1 = request.json.get("price_emergency_tier1", 0)
|
||||
|
||||
# Get all tier pricing
|
||||
price_same_day_tier2 = request.json.get("price_same_day_tier2", 0)
|
||||
price_same_day_tier3 = request.json.get("price_same_day_tier3", 0)
|
||||
price_same_day_tier4 = request.json.get("price_same_day_tier4", 0)
|
||||
price_same_day_tier5 = request.json.get("price_same_day_tier5", 0)
|
||||
|
||||
price_prime_tier2 = request.json.get("price_prime_tier2", 0)
|
||||
price_prime_tier3 = request.json.get("price_prime_tier3", 0)
|
||||
price_prime_tier4 = request.json.get("price_prime_tier4", 0)
|
||||
price_prime_tier5 = request.json.get("price_prime_tier5", 0)
|
||||
|
||||
price_emergency_tier2 = request.json.get("price_emergency_tier2", 0)
|
||||
price_emergency_tier3 = request.json.get("price_emergency_tier3", 0)
|
||||
price_emergency_tier4 = request.json.get("price_emergency_tier4", 0)
|
||||
price_emergency_tier5 = request.json.get("price_emergency_tier5", 0)
|
||||
|
||||
new_admin_oil_price = Pricing_Oil_Oil(
|
||||
price_from_supplier=price_from_supplier,
|
||||
price_for_customer=price_for_customer,
|
||||
price_for_employee=price_for_employee,
|
||||
price_same_day=price_same_day,
|
||||
price_prime=price_prime,
|
||||
price_emergency=price_emergency,
|
||||
# Legacy columns (use tier1 for backward compatibility)
|
||||
price_same_day=price_same_day_tier1,
|
||||
price_prime=price_prime_tier1,
|
||||
price_emergency=price_emergency_tier1,
|
||||
# Tier pricing
|
||||
price_same_day_tier1=price_same_day_tier1,
|
||||
price_same_day_tier2=price_same_day_tier2,
|
||||
price_same_day_tier3=price_same_day_tier3,
|
||||
price_same_day_tier4=price_same_day_tier4,
|
||||
price_same_day_tier5=price_same_day_tier5,
|
||||
price_prime_tier1=price_prime_tier1,
|
||||
price_prime_tier2=price_prime_tier2,
|
||||
price_prime_tier3=price_prime_tier3,
|
||||
price_prime_tier4=price_prime_tier4,
|
||||
price_prime_tier5=price_prime_tier5,
|
||||
price_emergency_tier1=price_emergency_tier1,
|
||||
price_emergency_tier2=price_emergency_tier2,
|
||||
price_emergency_tier3=price_emergency_tier3,
|
||||
price_emergency_tier4=price_emergency_tier4,
|
||||
price_emergency_tier5=price_emergency_tier5,
|
||||
date=now,
|
||||
)
|
||||
# new_admin_oil_price = Pricing_Oil_Oil(
|
||||
|
||||
Reference in New Issue
Block a user