diff --git a/app/classes/delivery.py b/app/classes/delivery.py index 1782391..6b2b88d 100755 --- a/app/classes/delivery.py +++ b/app/classes/delivery.py @@ -36,6 +36,7 @@ class Delivery_Delivery(db.Model): # issue = 5 # finalized = 10 delivery_status = db.Column(db.INTEGER) + emergency = db.Column(db.INTEGER) # when the call to order took place when_ordered = db.Column(db.DATE(), default=datetime.utcnow()) # when the delivery date happened @@ -58,6 +59,8 @@ class Delivery_Delivery(db.Model): # cash = 0 # credit = 1 # credit/cash = 2 + # check = 3 + # other = 4 payment_type = db.Column(db.INTEGER) payment_card_id = db.Column(db.INTEGER) cash_recieved = db.Column(db.DECIMAL(50, 2)) @@ -69,6 +72,7 @@ class Delivery_Delivery(db.Model): pre_charge_amount = db.Column(db.DECIMAL(50, 2)) total_price = db.Column(db.DECIMAL(50, 2)) final_price = db.Column(db.DECIMAL(50, 2)) + check_number = db.Column(db.VARCHAR(20)) class Delivery_Delivery_schema(ma.SQLAlchemyAutoSchema): class Meta: diff --git a/app/classes/stats_company.py b/app/classes/stats_company.py new file mode 100644 index 0000000..ce46c92 --- /dev/null +++ b/app/classes/stats_company.py @@ -0,0 +1,21 @@ + +from app import db, ma +from datetime import datetime + + +class Stats_Company(db.Model): + __tablename__ = 'stats_company' + __bind_key__ = 'eamco' + __table_args__ = {"schema": "public"} + + id = db.Column(db.Integer, + primary_key=True, + autoincrement=True, + unique=False) + + total_calls = db.Column(db.BigInteger) + + +class Stats_Company_schema(ma.SQLAlchemyAutoSchema): + class Meta: + model = Stats_Company \ No newline at end of file diff --git a/app/classes/stats_customer.py b/app/classes/stats_customer.py index 3d7151e..382970a 100755 --- a/app/classes/stats_customer.py +++ b/app/classes/stats_customer.py @@ -27,3 +27,6 @@ class Stats_Customer(db.Model): class Stats_Customer_schema(ma.SQLAlchemyAutoSchema): class Meta: model = Stats_Customer + + + diff --git a/app/delivery/views.py b/app/delivery/views.py index 30c6d94..fcae964 100755 --- a/app/delivery/views.py +++ b/app/delivery/views.py @@ -235,6 +235,7 @@ def get_deliveries_outfordelivery(page): deliveries = (db.session .query(Delivery_Delivery) .filter(Delivery_Delivery.expected_delivery_date == date.today()) + .filter(Delivery_Delivery.delivery_status != 10) .order_by(Delivery_Delivery.delivery_status.asc()) .limit(per_page_amount).offset(offset_limit)) diff --git a/app/delivery_data/views.py b/app/delivery_data/views.py index 5649ec8..f092afa 100755 --- a/app/delivery_data/views.py +++ b/app/delivery_data/views.py @@ -30,19 +30,80 @@ def office_finalize_delivery(delivery_id): .query(Customer_Customer) \ .filter(Customer_Customer.id == get_delivery.customer_id) \ .first() + + delivery_driver_id = request.json["driver_employee_id"] + if delivery_driver_id is None: + delivery_driver_id = 2 + if delivery_driver_id == 0: + delivery_driver_id = 2 + + get_driver = (db.session + .query(Employee_Employee) + .filter(Employee_Employee.id == delivery_driver_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()) + + + + customer_filled = request.json["customer_filled"] + if customer_filled is True: + customer_filled = 1 + else: + customer_filled = 0 + + + + if request.json["cash_recieved"]: + cash_amount = request.json["cash_recieved"] + else: + cash_amount = None + + + 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 gallons_delivered = request.json["gallons_delivered"] - card_payment = request.json["credit"] - cash_payment = request.json["cash"] + cash = request.json["cash"] + card_payment = request.json["card"] + check_payment = request.json["check"] + other_payment = request.json["other"] + + check_number = request.json["other"] + 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) @@ -53,15 +114,20 @@ def office_finalize_delivery(delivery_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: + if cash is True and card_payment is False: + delivery_payment_method = 0 + elif card_payment is True and cash is False: + delivery_payment_method = 1 + elif card_payment is True and cash is True: delivery_payment_method = 2 - else: + elif check_payment is True : delivery_payment_method = 3 + elif other_payment is True : + delivery_payment_method = 4 + else: + delivery_payment_method = 4 + same_day_info = request.json["same_day"] if same_day_info is True: @@ -69,24 +135,35 @@ def office_finalize_delivery(delivery_id): else: same_day_info = 0 - prime_info = request.json["prime"] - if prime_info is True: - prime_info = 1 + + emergency_info = request.json["emergency"] + if emergency_info is True: + emergency_info = 1 else: - prime_info = 0 + emergency_info = 0 + + 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 + get_delivery.gallons_delivered = gallons_delivered get_delivery.prime = prime_info + get_delivery.emergency = emergency_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.cash_recieved = cash_amount + get_delivery.check_number = check_number get_delivery.delivery_status = 10 + # update stats + current_deliveres = get_stats.total_deliveries + 1 + get_stats.total_deliveries = current_deliveres + + current_gallons_delivered = Decimal(get_stats.total_gallons_delivered) + Decimal(gallons_delivered) + get_stats.total_gallons_delivered = current_gallons_delivered - print(get_delivery.gallons_delivered) - print(get_delivery.payment_type) - print(get_delivery.delivery_status) db.session.add(get_delivery) db.session.commit() @@ -158,27 +235,25 @@ def driver_finalize_delivery(delivery_id): else: customer_filled = 1 - if get_delivery.automatic == 0: - if request.json["cash_amount"]: - cash_amount = request.json["cash_amount"] - else: - cash_amount = None + + if request.json["cash_amount"]: + cash_amount = request.json["cash_amount"] 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 + + + 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 + ## AUTOMATIC if get_delivery.automatic == 1: get_auto_delivery = (db.session diff --git a/app/stats/views.py b/app/stats/views.py index 09d0d20..36b8983 100755 --- a/app/stats/views.py +++ b/app/stats/views.py @@ -4,6 +4,36 @@ from datetime import date from app.stats import stats from app import db from app.classes.delivery import Delivery_Delivery +from app.classes.stats_company import Stats_Company, Stats_Company_schema + + +@stats.route("/calls/add", methods=["PUT"]) +def total_calls_post(): + total_calls_today = (db.session + .query(Stats_Company) + .filter(Stats_Company.expected_delivery_date == date.today()) + .first()) + current_call_count = total_calls_today.total_calls + new_call = current_call_count + 1 + total_calls_today.total_calls = new_call + + db.session.add(total_calls_today) + db.session.commit() + + + return jsonify({"ok": True,}), 200 + + +@stats.route("/calls/count/today", methods=["GET"]) +def total_calls_today(): + total_calls_today = (db.session + .query(Stats_Company) + .filter(Stats_Company.expected_delivery_date == date.today()) + .count()) + + return jsonify({"ok": True, + 'data': total_calls_today, + }), 200 @stats.route("/gallons/total/", methods=["GET"]) @@ -64,7 +94,7 @@ def total_deliveries_today_finished(): total_stops = (db.session .query(Delivery_Delivery) .filter(Delivery_Delivery.expected_delivery_date == date.today()) - .filter(or_(Delivery_Delivery.delivery_status == 1),(Delivery_Delivery.delivery_status == 10)) + .filter((Delivery_Delivery.delivery_status == 10)) .count()) return jsonify({"ok": True,