237 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			237 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| from flask import request, jsonify
 | |
| from datetime import datetime
 | |
| from decimal import Decimal
 | |
| from app.delivery_data import delivery_data
 | |
| from app import db
 | |
| from app.classes.customer import Customer_Customer
 | |
| from app.classes.delivery import Delivery_Delivery
 | |
| from app.classes.employee import Employee_Employee
 | |
| from app.classes.cards import Card_Card
 | |
| from app.classes.stats_employee import Stats_Employee_Oil
 | |
| from app.classes.auto import Auto_Delivery
 | |
| 
 | |
| 
 | |
| @delivery_data.route("/finalize/<int:delivery_id>", methods=["PUT"])
 | |
| def office_finalize_delivery(delivery_id):
 | |
|     """
 | |
|     This will make a delivery finalized from the driver
 | |
|     """
 | |
| 
 | |
|     """
 | |
|     Finalizes a delivery from office
 | |
|     """
 | |
|     
 | |
|     get_delivery = db.session \
 | |
|         .query(Delivery_Delivery) \
 | |
|         .filter(Delivery_Delivery.id == delivery_id) \
 | |
|         .first()
 | |
| 
 | |
|     get_customer = db.session \
 | |
|         .query(Customer_Customer) \
 | |
|         .filter(Customer_Customer.id == get_delivery.customer_id) \
 | |
|         .first()
 | |
| 
 | |
| 
 | |
|     gallons_delivered = request.json["gallons_delivered"]
 | |
|     card_payment = request.json["credit"]
 | |
|     cash_payment = request.json["cash"]
 | |
| 
 | |
|     if request.json["credit_card_id"]:
 | |
|         card_payment_id = request.json["credit_card_id"]
 | |
|     else:
 | |
|         card_payment_id = None
 | |
| 
 | |
| 
 | |
| 
 | |
|     if card_payment_id is not None:
 | |
|         get_card = (db.session
 | |
|                     .query(Card_Card)
 | |
|                     .filter(Card_Card.id == card_payment_id)
 | |
|                     .filter(Card_Card.user_id == get_customer.id)
 | |
|                     .first())
 | |
|         card_id_from_customer = get_card.id
 | |
|     else:
 | |
|         card_id_from_customer = None
 | |
| 
 | |
|     if cash_payment is True and card_payment is False:
 | |
|         delivery_payment_method = 0
 | |
|     elif card_payment is True and cash_payment is False:
 | |
|         delivery_payment_method = 1
 | |
| 
 | |
|     elif card_payment is True and cash_payment is True:
 | |
|         delivery_payment_method = 2
 | |
|     else:
 | |
|         delivery_payment_method = 3
 | |
| 
 | |
|     same_day_info = request.json["same_day"]
 | |
|     if same_day_info is True:
 | |
|         same_day_info = 1
 | |
|     else:
 | |
|         same_day_info = 0
 | |
| 
 | |
|     prime_info = request.json["prime"]
 | |
|     if prime_info is True:
 | |
|         prime_info = 1
 | |
|     else:
 | |
|         prime_info = 0
 | |
| 
 | |
|     get_delivery.gallons_delivered = gallons_delivered
 | |
|     get_delivery.prime = prime_info
 | |
|     get_delivery.same_day = same_day_info
 | |
|     get_delivery.payment_type = delivery_payment_method
 | |
|     get_delivery.payment_card_id = card_id_from_customer
 | |
| 
 | |
|     get_delivery.delivery_status = 10
 | |
|     
 | |
| 
 | |
|     print(get_delivery.gallons_delivered)
 | |
|     print(get_delivery.payment_type)
 | |
|     print(get_delivery.delivery_status)
 | |
| 
 | |
|     db.session.add(get_delivery)
 | |
|     db.session.commit()
 | |
| 
 | |
| 
 | |
|     return jsonify({
 | |
|         "ok": True,
 | |
|         'delivery': {
 | |
|             'id': get_delivery.id,
 | |
|         },
 | |
|     }), 200
 | |
| 
 | |
| 
 | |
| 
 | |
| @delivery_data.route("/driver/finalize/<int:delivery_id>", methods=["PUT"])
 | |
| def driver_finalize_delivery(delivery_id):
 | |
|     """
 | |
|     This will make a delivery finalized from the driver
 | |
|     """
 | |
| 
 | |
|     """
 | |
|     Finalizes a delivery from office
 | |
|     """
 | |
| 
 | |
| 
 | |
|     get_delivery = (db.session 
 | |
|         .query(Delivery_Delivery) 
 | |
|         .filter(Delivery_Delivery.id == delivery_id) 
 | |
|         .first())
 | |
| 
 | |
|     get_stats = (db.session
 | |
|                  .query(Stats_Employee_Oil)
 | |
|                  .filter(Stats_Employee_Oil.employee_id == get_delivery.driver_employee_id)
 | |
|                  .first())
 | |
|   
 | |
|     if get_stats is None:
 | |
|         create_stats = Stats_Employee_Oil(
 | |
|             employee_id = get_delivery.driver_employee_id,
 | |
|             total_deliveries = 0,
 | |
|             total_gallons_delivered = 0,
 | |
|             total_primes = 0,
 | |
|             oil_total_profit_delivered = 0,
 | |
|         )
 | |
|         db.session.add(create_stats)
 | |
|         db.session.flush()
 | |
| 
 | |
| 
 | |
|         get_stats = (db.session
 | |
|                  .query(Stats_Employee_Oil)
 | |
|                  .filter(Stats_Employee_Oil.employee_id == get_delivery.driver_employee_id)
 | |
|                  .first())
 | |
|     gallons_delivered = request.json["gallons_delivered"]
 | |
| 
 | |
|     gallons_delivered = Decimal(gallons_delivered)
 | |
|       
 | |
|     delivery_driver_id = request.json["driver_employee_id"]
 | |
| 
 | |
|     get_driver = (db.session
 | |
|                     .query(Employee_Employee)
 | |
|                     .filter(Employee_Employee.id == delivery_driver_id)
 | |
|                     .first())
 | |
| 
 | |
|     if get_delivery.automatic == 0:
 | |
|         customer_filled = request.json["customer_filled"]
 | |
|         if customer_filled is True:
 | |
|             customer_filled = 1
 | |
|         else:
 | |
|             customer_filled = 0
 | |
|     else:
 | |
|         customer_filled = 1
 | |
|         
 | |
|     if get_delivery.automatic == 0:
 | |
|         if request.json["cash_amount"]:
 | |
|             cash_amount = request.json["cash_amount"]
 | |
|         else:
 | |
|             cash_amount = None
 | |
|     else:
 | |
|         cash_amount = None
 | |
| 
 | |
|     if get_delivery.automatic == 0:
 | |
|         prime_info = request.json["prime"]
 | |
|         if prime_info is True:
 | |
|             prime_info = 1
 | |
|             current_primes = get_stats.total_primes
 | |
|             newprimes = current_primes + 1
 | |
|             get_stats.total_primes = newprimes
 | |
|         else:
 | |
|             prime_info = 0
 | |
|     else:
 | |
|         prime_info = 0
 | |
| 
 | |
| 
 | |
|     ## AUTOMATIC
 | |
|     if get_delivery.automatic == 1:
 | |
|         get_auto_delivery = (db.session 
 | |
|             .query(Auto_Delivery) 
 | |
|             .filter(Auto_Delivery.customer_id == get_delivery.customer_id) 
 | |
|             .first())
 | |
|         
 | |
|         get_auto_delivery.auto_status = 2
 | |
|         db.session.add(get_auto_delivery)
 | |
| 
 | |
|     get_delivery.gallons_delivered = gallons_delivered
 | |
|     
 | |
|     get_delivery.prime = prime_info
 | |
|     get_delivery.customer_filled = customer_filled
 | |
|     get_delivery.cash_recieved = cash_amount
 | |
|     
 | |
| 
 | |
|     get_delivery.driver_last_name = get_driver.employee_last_name
 | |
|     get_delivery.driver_first_name = get_driver.employee_first_name
 | |
|     get_delivery.driver_employee_id = get_driver.id
 | |
|         
 | |
|         
 | |
|     # update stats
 | |
|     current_deliveres = get_stats.total_deliveries + 1
 | |
|     get_stats.total_deliveries = current_deliveres
 | |
|     
 | |
|     current_gallons_delivered = get_stats.total_gallons_delivered + gallons_delivered
 | |
|     get_stats.total_gallons_delivered = current_gallons_delivered
 | |
|         
 | |
|     
 | |
|     # update delivery status to delivered
 | |
|     if get_delivery.automatic == 0:
 | |
|         if get_delivery.payment_type == 0:
 | |
|             get_delivery.delivery_status = 10
 | |
|         else:
 | |
|             #office needs to confirm credit card
 | |
|             get_delivery.delivery_status = 1
 | |
|     else:
 | |
|         get_delivery.delivery_status = 1
 | |
| 
 | |
| 
 | |
|     db.session.add(get_stats)
 | |
|     db.session.add(get_delivery)
 | |
| 
 | |
|     db.session.commit()
 | |
| 
 | |
| 
 | |
|     return jsonify({
 | |
|         "ok": True,
 | |
|         'delivery': {
 | |
|             'id': get_delivery.id,
 | |
|         },
 | |
|     }), 200
 | |
| 
 | |
| 
 |