added checks emergency fixed bugs

This commit is contained in:
2024-09-27 14:13:44 -04:00
parent 0e827053de
commit fec638a5c8
13 changed files with 262 additions and 68 deletions

View File

@@ -13,10 +13,10 @@ class Auto_Temp(db.Model):
autoincrement=True, autoincrement=True,
unique=False) unique=False)
todays_date = db.Column(db.TIMESTAMP(), default=datetime.utcnow()) todays_date = db.Column(db.TIMESTAMP(), default=datetime.utcnow())
temp = db.Column(db.DECIMAL(50, 2)) temp = db.Column(db.DECIMAL(6, 2))
temp_max = db.Column(db.DECIMAL(50, 2)) temp_max = db.Column(db.DECIMAL(6, 2))
temp_min = db.Column(db.DECIMAL(50, 2)) temp_min = db.Column(db.DECIMAL(6, 2))
temp_avg = db.Column(db.DECIMAL(50, 2)) temp_avg = db.Column(db.DECIMAL(6, 2))
degree_day = db.Column(db.INTEGER()) degree_day = db.Column(db.INTEGER())
class Auto_Temp_schema(ma.SQLAlchemyAutoSchema): class Auto_Temp_schema(ma.SQLAlchemyAutoSchema):

View File

@@ -23,6 +23,7 @@ class Card_Card(db.Model):
security_number = db.Column(db.INTEGER()) security_number = db.Column(db.INTEGER())
accepted_or_declined = db.Column(db.INTEGER()) accepted_or_declined = db.Column(db.INTEGER())
main_card = db.Column(db.BOOLEAN()) main_card = db.Column(db.BOOLEAN())
zip_code = db.Column(db.VARCHAR(20))
class Card_Card_schema(ma.SQLAlchemyAutoSchema): class Card_Card_schema(ma.SQLAlchemyAutoSchema):
class Meta: class Meta:

View File

@@ -24,7 +24,7 @@ class Delivery_Delivery(db.Model):
# if customer asked for a fill # if customer asked for a fill
customer_asked_for_fill = db.Column(db.INTEGER) customer_asked_for_fill = db.Column(db.INTEGER)
# integer value if delivered, waiting, cancelled etc # integer value if delivered, waiting, cancelled etc
gallons_delivered =db.Column(db.DECIMAL(50, 2)) gallons_delivered =db.Column(db.DECIMAL(6, 2))
# if customer has a full tank # if customer has a full tank
customer_filled = db.Column(db.INTEGER) customer_filled = db.Column(db.INTEGER)
# integer value if delivered, waiting, cancelled etc # integer value if delivered, waiting, cancelled etc
@@ -36,9 +36,9 @@ class Delivery_Delivery(db.Model):
# issue = 5 # issue = 5
# finalized = 10 # finalized = 10
delivery_status = db.Column(db.INTEGER) delivery_status = db.Column(db.INTEGER)
emergency = db.Column(db.INTEGER)
# when the call to order took place # when the call to order took place
when_ordered = db.Column(db.DATE(), default=datetime.utcnow()) when_ordered = db.Column(db.DATE(), default=None)
# when the delivery date happened # when the delivery date happened
when_delivered = db.Column(db.DATE(), default=None) when_delivered = db.Column(db.DATE(), default=None)
# when the delivery is expected ie what day # when the delivery is expected ie what day
@@ -48,14 +48,18 @@ class Delivery_Delivery(db.Model):
automatic_id = db.Column(db.INTEGER) automatic_id = db.Column(db.INTEGER)
# OIL info and id from table # OIL info and id from table
oil_id = db.Column(db.INTEGER) oil_id = db.Column(db.INTEGER)
supplier_price = db.Column(db.DECIMAL(50, 2)) supplier_price = db.Column(db.DECIMAL(6, 2))
customer_price = db.Column(db.DECIMAL(50, 2)) customer_price = db.Column(db.DECIMAL(6, 2))
# weather # weather
customer_temperature = db.Column(db.DECIMAL(50, 2)) customer_temperature = db.Column(db.DECIMAL(6, 2))
# services # services
dispatcher_notes = db.Column(db.TEXT()) dispatcher_notes = db.Column(db.TEXT())
prime = db.Column(db.INTEGER) prime = db.Column(db.INTEGER)
same_day = db.Column(db.INTEGER) same_day = db.Column(db.INTEGER)
emergency = db.Column(db.INTEGER)
# cash = 0 # cash = 0
# credit = 1 # credit = 1
# credit/cash = 2 # credit/cash = 2
@@ -63,15 +67,15 @@ class Delivery_Delivery(db.Model):
# other = 4 # other = 4
payment_type = db.Column(db.INTEGER) payment_type = db.Column(db.INTEGER)
payment_card_id = db.Column(db.INTEGER) payment_card_id = db.Column(db.INTEGER)
cash_recieved = db.Column(db.DECIMAL(50, 2)) cash_recieved = db.Column(db.DECIMAL(6, 2))
driver_employee_id = db.Column(db.INTEGER) driver_employee_id = db.Column(db.INTEGER)
driver_first_name = db.Column(db.VARCHAR(140)) driver_first_name = db.Column(db.VARCHAR(140))
driver_last_name = db.Column(db.VARCHAR(140)) driver_last_name = db.Column(db.VARCHAR(140))
pre_charge_amount = db.Column(db.DECIMAL(50, 2)) pre_charge_amount = db.Column(db.DECIMAL(6, 2))
total_price = db.Column(db.DECIMAL(50, 2)) total_price = db.Column(db.DECIMAL(6, 2))
final_price = db.Column(db.DECIMAL(50, 2)) final_price = db.Column(db.DECIMAL(6, 2))
check_number = db.Column(db.VARCHAR(20)) check_number = db.Column(db.VARCHAR(20))
class Delivery_Delivery_schema(ma.SQLAlchemyAutoSchema): class Delivery_Delivery_schema(ma.SQLAlchemyAutoSchema):

View File

@@ -64,7 +64,7 @@ class Employee_Vacation(db.Model):
employee_id = db.Column(db.INTEGER) employee_id = db.Column(db.INTEGER)
employee_name = db.Column(db.VARCHAR(140)) employee_name = db.Column(db.VARCHAR(140))
employee_total_days_off = db.Column(db.INTEGER) employee_total_days_off = db.Column(db.INTEGER)
employee_days_off_multiplier = db.Column(db.DECIMAL(50, 2)) employee_days_off_multiplier = db.Column(db.DECIMAL(6, 2))
employee_days_off_per_year = db.Column(db.INTEGER) employee_days_off_per_year = db.Column(db.INTEGER)

View File

@@ -14,18 +14,18 @@ class Money_delivery(db.Model):
delivery_id = db.Column(db.INTEGER) delivery_id = db.Column(db.INTEGER)
time_added = db.Column(db.TIMESTAMP(), default=datetime.utcnow()) time_added = db.Column(db.TIMESTAMP(), default=datetime.utcnow())
gallons_delivered = db.Column(db.DECIMAL(50, 2)) gallons_delivered = db.Column(db.DECIMAL(6, 2))
supplier_price = db.Column(db.DECIMAL(50, 2)) supplier_price = db.Column(db.DECIMAL(6, 2))
customer_price = db.Column(db.DECIMAL(50, 2)) customer_price = db.Column(db.DECIMAL(6, 2))
total_amount_oil = db.Column(db.DECIMAL(50, 2)) total_amount_oil = db.Column(db.DECIMAL(6, 2))
total_amount_prime = db.Column(db.DECIMAL(50, 2)) total_amount_prime = db.Column(db.DECIMAL(6, 2))
total_amount_same_day = db.Column(db.DECIMAL(50, 2)) total_amount_same_day = db.Column(db.DECIMAL(6, 2))
total_amount_fee = db.Column(db.DECIMAL(50, 2)) total_amount_fee = db.Column(db.DECIMAL(6, 2))
total_amount = db.Column(db.DECIMAL(50, 2)) total_amount = db.Column(db.DECIMAL(6, 2))
total_profit_oil = db.Column(db.DECIMAL(50, 2)) total_profit_oil = db.Column(db.DECIMAL(6, 2))
taxes_paid = db.Column(db.DECIMAL(50, 2)) taxes_paid = db.Column(db.DECIMAL(6, 2))
total_profit = db.Column(db.DECIMAL(50, 2)) total_profit = db.Column(db.DECIMAL(6, 2))
class Money_delivery_schema(ma.SQLAlchemyAutoSchema): class Money_delivery_schema(ma.SQLAlchemyAutoSchema):
@@ -44,5 +44,5 @@ class Pricing_Taxes(db.Model):
autoincrement=True, autoincrement=True,
unique=False) unique=False)
state_id = db.Column(db.Integer) state_id = db.Column(db.Integer)
taxes_oil = db.Column(db.DECIMAL(50, 2)) taxes_oil = db.Column(db.DECIMAL(6, 2))
taxes_other = db.Column(db.DECIMAL(50, 2)) taxes_other = db.Column(db.DECIMAL(6, 2))

View File

@@ -12,17 +12,17 @@ class Stats_Customer(db.Model):
primary_key=True, primary_key=True,
autoincrement=True, autoincrement=True,
unique=False) unique=False)
customer_id = db.Column(db.INTEGER)
total_calls = db.Column(db.INTEGER) total_calls = db.Column(db.INTEGER)
service_calls_total = db.Column(db.INTEGER) service_calls_total = db.Column(db.INTEGER)
service_calls_total_spent = db.Column(db.DECIMAL(50, 2)) service_calls_total_spent = db.Column(db.DECIMAL(6, 2))
service_calls_total_profit = db.Column(db.DECIMAL(50, 2)) service_calls_total_profit = db.Column(db.DECIMAL(6, 2))
oil_deliveries = db.Column(db.INTEGER) oil_deliveries = db.Column(db.INTEGER)
oil_total_gallons = db.Column(db.INTEGER) oil_total_gallons = db.Column(db.DECIMAL(6, 2))
oil_total_spent = db.Column(db.DECIMAL(50, 2)) oil_total_spent = db.Column(db.DECIMAL(6, 2))
oil_total_profit = db.Column(db.DECIMAL(50, 2)) oil_total_profit = db.Column(db.DECIMAL(6, 2))
class Stats_Customer_schema(ma.SQLAlchemyAutoSchema): class Stats_Customer_schema(ma.SQLAlchemyAutoSchema):
class Meta: class Meta:

View File

@@ -15,11 +15,11 @@ class Delivery_Payment(db.Model):
delivery_id = db.Column(db.INTEGER) delivery_id = db.Column(db.INTEGER)
time_added = db.Column(db.TIMESTAMP(), default=datetime.utcnow()) time_added = db.Column(db.TIMESTAMP(), default=datetime.utcnow())
total_amount_oil = db.Column(db.DECIMAL(50, 2)) total_amount_oil = db.Column(db.DECIMAL(6, 2))
total_amount_emergency = db.Column(db.DECIMAL(50, 2)) total_amount_emergency = db.Column(db.DECIMAL(6, 2))
total_amount_prime = db.Column(db.DECIMAL(50, 2)) total_amount_prime = db.Column(db.DECIMAL(6, 2))
total_amount_fee = db.Column(db.DECIMAL(50, 2)) total_amount_fee = db.Column(db.DECIMAL(6, 2))
total_amount = db.Column(db.DECIMAL(50, 2)) total_amount = db.Column(db.DECIMAL(6, 2))
class Delivery_Payment_schema(ma.SQLAlchemyAutoSchema): class Delivery_Payment_schema(ma.SQLAlchemyAutoSchema):
class Meta: class Meta:

View File

@@ -12,5 +12,5 @@ class Pricing_Taxes(db.Model):
autoincrement=True, autoincrement=True,
unique=False) unique=False)
state_id = db.Column(db.Integer) state_id = db.Column(db.Integer)
taxes_oil = db.Column(db.DECIMAL(50, 2)) taxes_oil = db.Column(db.DECIMAL(6, 2))
taxes_other = db.Column(db.DECIMAL(50, 2)) taxes_other = db.Column(db.DECIMAL(6, 2))

View File

@@ -11,9 +11,16 @@ from app.classes.customer import \
Customer_Description_schema Customer_Description_schema
from app.classes.admin import Admin_Company from app.classes.admin import Admin_Company
from app.classes.auto import Auto_Delivery from app.classes.auto import Auto_Delivery
from app.classes.stats_customer import Stats_Customer
import string import string
import random import random
def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
@customer.route("/all", methods=["GET"]) @customer.route("/all", methods=["GET"])
@login_required @login_required
def all_customers_around(): def all_customers_around():
@@ -51,7 +58,6 @@ def all_customers(page):
@customer.route("/<int:customer_id>", methods=["GET"]) @customer.route("/<int:customer_id>", methods=["GET"])
def get_a_customer(customer_id): def get_a_customer(customer_id):
""" """
Checks auth token to ensure user is authenticated
""" """
get_customer = (db.session get_customer = (db.session
.query(Customer_Customer) .query(Customer_Customer)
@@ -60,8 +66,37 @@ def get_a_customer(customer_id):
customer_schema = Customer_Customer_schema(many=False) customer_schema = Customer_Customer_schema(many=False)
return jsonify(customer_schema.dump(get_customer)) return jsonify(customer_schema.dump(get_customer))
def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size)) @customer.route("/description/<int:customer_id>", methods=["GET"])
def get_a_customer_description(customer_id):
"""
"""
get_customer_description = (db.session
.query(Customer_Description)
.filter(Customer_Description.customer_id == customer_id)
.first())
if get_customer_description is None:
get_customer = (db.session
.query(Customer_Customer)
.filter(Customer_Customer.id == customer_id)
.first())
new_description = Customer_Description(
customer_id = customer_id,
account_number = get_customer.account_number,
company_id = get_customer.company_id,
fill_location = None,
description = None,
)
db.session.add(new_description)
db.session.commit()
get_customer_description = (db.session
.query(Customer_Description)
.filter(Customer_Description.customer_id == customer_id)
.first())
customer_schema = Customer_Description_schema(many=False)
return jsonify(customer_schema.dump(get_customer_description))
@customer.route("/create", methods=["POST"]) @customer.route("/create", methods=["POST"])
@login_required @login_required
@@ -115,7 +150,20 @@ def create_customer():
) )
db.session.add(new_customer) db.session.add(new_customer)
db.session.flush() db.session.flush()
create_stats_customer = Stats_Customer(
customer_id = new_customer.id,
total_calls = 1,
service_calls_total = 0,
service_calls_total_spent = 0,
service_calls_total_profit = 0,
oil_deliveries = 0,
oil_total_gallons = 0,
oil_total_spent = 0,
oil_total_profit = 0,
)
db.session.add(create_stats_customer)
new_description = Customer_Description( new_description = Customer_Description(
customer_id = new_customer.id, customer_id = new_customer.id,
account_number = made_account_number, account_number = made_account_number,
@@ -125,7 +173,6 @@ def create_customer():
) )
db.session.add(new_description) db.session.add(new_description)
new_auto = Auto_Delivery( new_auto = Auto_Delivery(
customer_id = new_customer.id, customer_id = new_customer.id,
account_number = made_account_number, account_number = made_account_number,

View File

@@ -33,6 +33,7 @@ def get_a_delivery(delivery_id):
'delivery_gallons_ordered': get_delivery.gallons_ordered, 'delivery_gallons_ordered': get_delivery.gallons_ordered,
'delivery_dispatcher_notes': get_delivery.dispatcher_notes, 'delivery_dispatcher_notes': get_delivery.dispatcher_notes,
'delivery_prime': get_delivery.prime, 'delivery_prime': get_delivery.prime,
'delivery_emergency': get_delivery.emergency,
'delivery_same_day': get_delivery.same_day, 'delivery_same_day': get_delivery.same_day,
'when_ordered': get_delivery.when_ordered, 'when_ordered': get_delivery.when_ordered,
'customer_price': get_delivery.customer_price, 'customer_price': get_delivery.customer_price,
@@ -505,6 +506,7 @@ def create_a_delivery(user_id):
dispatcher_notes_taken = request.json["dispatcher_notes_taken"] dispatcher_notes_taken = request.json["dispatcher_notes_taken"]
prime_info = request.json["prime"] prime_info = request.json["prime"]
same_day_info = request.json["same_day"] same_day_info = request.json["same_day"]
emergency_info = request.json["emergency"]
delivery_driver_id = request.json["driver_employee_id"] delivery_driver_id = request.json["driver_employee_id"]
@@ -570,6 +572,11 @@ def create_a_delivery(user_id):
else: else:
customer_fill_up = 0 customer_fill_up = 0
if emergency_info is True:
emergency_asked = 1
else:
emergency_asked = 0
if prime_info is True: if prime_info is True:
prime_asked = 1 prime_asked = 1
else: else:
@@ -585,17 +592,25 @@ def create_a_delivery(user_id):
now = datetime.utcnow() now = datetime.utcnow()
# Pricing # Pricing
if customer_fill_up == 1: if customer_fill_up == 1:
# Fill
precharge_amount = (250 * get_today_price.price_for_customer) precharge_amount = (250 * get_today_price.price_for_customer)
else: else:
# Gallons
precharge_amount = int(gallons_ordered) * get_today_price.price_for_customer precharge_amount = int(gallons_ordered) * get_today_price.price_for_customer
# if prime/emergency/sameday
if same_day_asked == 1 and prime_asked == 0: if same_day_asked == 1 and prime_asked == 0:
total_precharge_amount = precharge_amount + get_today_price.price_same_day total_precharge_amount = precharge_amount + get_today_price.price_same_day
elif prime_asked == 1 and same_day_asked == 0: elif prime_asked == 1 and same_day_asked == 0:
total_precharge_amount = precharge_amount + get_today_price.price_prime total_precharge_amount = precharge_amount + get_today_price.price_prime
elif emergency_asked == 1:
total_precharge_amount = precharge_amount + get_today_price.price_emergency
else: else:
total_precharge_amount = precharge_amount + get_today_price.price_prime + get_today_price.price_same_day total_precharge_amount = precharge_amount + get_today_price.price_prime + get_today_price.price_same_day
@@ -624,6 +639,7 @@ def create_a_delivery(user_id):
dispatcher_notes=dispatcher_notes_taken, dispatcher_notes=dispatcher_notes_taken,
prime=prime_asked, prime=prime_asked,
same_day=same_day_asked, same_day=same_day_asked,
emergency=emergency_asked,
payment_type=delivery_payment_method, payment_type=delivery_payment_method,
payment_card_id=card_id_from_customer, payment_card_id=card_id_from_customer,
pre_charge_amount=total_precharge_amount, pre_charge_amount=total_precharge_amount,
@@ -798,25 +814,30 @@ def calculate_total(delivery_id):
get_price_query = (db.session get_price_query = (db.session
.query(Pricing_Oil_Oil) .query(Pricing_Oil_Oil)
.order_by(Pricing_Oil_Oil.date.asc()) .order_by(Pricing_Oil_Oil.date.desc())
.first()) .first())
if get_delivery.prime == 1: if get_delivery.prime == 1:
priceprime = get_price_query.price_prime priceprime = get_price_query.price_prime
else: else:
priceprime = 0 priceprime = 0
if get_delivery.emergency == 1:
priceemergency = get_price_query.price_emergency
else:
priceemergency = 0
if get_delivery.same_day == 1: if get_delivery.same_day == 1:
pricesameday = get_price_query.price_same_day pricesameday = get_price_query.price_same_day
else: else:
pricesameday = 0 pricesameday = 0
total = float(get_delivery.total_price) + float(priceprime) + float(pricesameday) total = float(get_delivery.total_price) + float(priceprime) + float(pricesameday) + float(priceemergency)
return jsonify({ return jsonify({
"ok": True, "ok": True,
'priceprime': priceprime, 'priceprime': priceprime,
'pricesameday': pricesameday, 'pricesameday': pricesameday,
'priceemergency': priceemergency,
'total_amount':total, 'total_amount':total,
}), 200 }), 200

View File

@@ -3,13 +3,13 @@ from datetime import datetime
from decimal import Decimal from decimal import Decimal
from app.delivery_data import delivery_data from app.delivery_data import delivery_data
from app import db from app import db
from app.classes.customer import Customer_Customer from app.classes.customer import Customer_Customer, Customer_Description
from app.classes.delivery import Delivery_Delivery from app.classes.delivery import Delivery_Delivery
from app.classes.employee import Employee_Employee from app.classes.employee import Employee_Employee
from app.classes.cards import Card_Card from app.classes.cards import Card_Card
from app.classes.stats_employee import Stats_Employee_Oil from app.classes.stats_employee import Stats_Employee_Oil
from app.classes.auto import Auto_Delivery from app.classes.auto import Auto_Delivery
from app.classes.stats_customer import Stats_Customer
@delivery_data.route("/finalize/<int:delivery_id>", methods=["PUT"]) @delivery_data.route("/finalize/<int:delivery_id>", methods=["PUT"])
def office_finalize_delivery(delivery_id): def office_finalize_delivery(delivery_id):
@@ -20,7 +20,7 @@ def office_finalize_delivery(delivery_id):
""" """
Finalizes a delivery from office Finalizes a delivery from office
""" """
now = datetime.utcnow()
get_delivery = db.session \ get_delivery = db.session \
.query(Delivery_Delivery) \ .query(Delivery_Delivery) \
.filter(Delivery_Delivery.id == delivery_id) \ .filter(Delivery_Delivery.id == delivery_id) \
@@ -31,6 +31,24 @@ def office_finalize_delivery(delivery_id):
.filter(Customer_Customer.id == get_delivery.customer_id) \ .filter(Customer_Customer.id == get_delivery.customer_id) \
.first() .first()
get_customer_description = db.session \
.query(Customer_Description) \
.filter(Customer_Description.customer_id == get_delivery.customer_id) \
.first()
if get_customer_description is None:
new_customer_desc = Customer_Description(
customer_id = get_customer.id,
account_number =get_customer.account_number,
company_id = get_customer.company_id,
fill_location = None,
description = None,
)
db.session.add(new_customer_desc)
db.session.commit()
get_customer_description = db.session \
.query(Customer_Description) \
.filter(Customer_Description.customer_id == get_delivery.customer_id) \
.first()
delivery_driver_id = request.json["driver_employee_id"] delivery_driver_id = request.json["driver_employee_id"]
if delivery_driver_id is None: if delivery_driver_id is None:
delivery_driver_id = 2 delivery_driver_id = 2
@@ -42,12 +60,36 @@ def office_finalize_delivery(delivery_id):
.filter(Employee_Employee.id == delivery_driver_id) .filter(Employee_Employee.id == delivery_driver_id)
.first()) .first())
get_stats = (db.session get_stats_employee = (db.session
.query(Stats_Employee_Oil) .query(Stats_Employee_Oil)
.filter(Stats_Employee_Oil.employee_id == get_delivery.driver_employee_id) .filter(Stats_Employee_Oil.employee_id == get_delivery.driver_employee_id)
.first()) .first())
if get_stats is None: get_stats_customer = (db.session
.query(Stats_Customer)
.filter(Stats_Customer.customer_id == get_customer.id)
.first())
if get_stats_customer is None:
create_stats_customer = Stats_Customer(
customer_id = get_customer.id,
total_calls = 1,
service_calls_total = 0,
service_calls_total_spent = 0,
service_calls_total_profit = 0,
oil_deliveries = 1,
oil_total_gallons = 0,
oil_total_spent = 0,
oil_total_profit = 0,
)
db.session.add(create_stats_customer)
db.session.flush()
get_stats_customer = (db.session
.query(Stats_Customer)
.filter(Stats_Customer.customer_id == get_customer.id)
.first())
if get_stats_employee is None:
create_stats = Stats_Employee_Oil( create_stats = Stats_Employee_Oil(
employee_id = get_delivery.driver_employee_id, employee_id = get_delivery.driver_employee_id,
total_deliveries = 0, total_deliveries = 0,
@@ -58,8 +100,7 @@ def office_finalize_delivery(delivery_id):
db.session.add(create_stats) db.session.add(create_stats)
db.session.flush() db.session.flush()
get_stats_employee = (db.session
get_stats = (db.session
.query(Stats_Employee_Oil) .query(Stats_Employee_Oil)
.filter(Stats_Employee_Oil.employee_id == get_delivery.driver_employee_id) .filter(Stats_Employee_Oil.employee_id == get_delivery.driver_employee_id)
.first()) .first())
@@ -83,9 +124,9 @@ def office_finalize_delivery(delivery_id):
prime_info = request.json["prime"] prime_info = request.json["prime"]
if prime_info is True: if prime_info is True:
prime_info = 1 prime_info = 1
current_primes = get_stats.total_primes current_primes = get_stats_employee.total_primes
newprimes = current_primes + 1 newprimes = current_primes + 1
get_stats.total_primes = newprimes get_stats_employee.total_primes = newprimes
else: else:
prime_info = 0 prime_info = 0
@@ -142,11 +183,17 @@ def office_finalize_delivery(delivery_id):
else: else:
emergency_info = 0 emergency_info = 0
fill_location = request.json["fill_location"]
# update driver
get_delivery.driver_last_name = get_driver.employee_last_name get_delivery.driver_last_name = get_driver.employee_last_name
get_delivery.driver_first_name = get_driver.employee_first_name get_delivery.driver_first_name = get_driver.employee_first_name
get_delivery.driver_employee_id = get_driver.id get_delivery.driver_employee_id = get_driver.id
# update delivery
get_delivery.when_delivered = now
get_delivery.gallons_delivered = gallons_delivered get_delivery.gallons_delivered = gallons_delivered
get_delivery.prime = prime_info get_delivery.prime = prime_info
get_delivery.emergency = emergency_info get_delivery.emergency = emergency_info
@@ -157,15 +204,32 @@ def office_finalize_delivery(delivery_id):
get_delivery.check_number = check_number get_delivery.check_number = check_number
get_delivery.delivery_status = 10 get_delivery.delivery_status = 10
# update stats # update stats employee
current_deliveres = get_stats.total_deliveries + 1 current_deliveres = get_stats_employee.total_deliveries + 1
get_stats.total_deliveries = current_deliveres get_stats_employee.total_deliveries = current_deliveres
current_gallons_delivered = Decimal(get_stats.total_gallons_delivered) + Decimal(gallons_delivered) current_gallons_delivered = Decimal(get_stats_employee.total_gallons_delivered) + Decimal(gallons_delivered)
get_stats.total_gallons_delivered = current_gallons_delivered get_stats_employee.total_gallons_delivered = current_gallons_delivered
# update stats customer
current_deliveres = int(get_stats_customer.oil_deliveries) + 1
get_stats_customer.oil_deliveries = current_deliveres
new_gallons = Decimal(get_stats_customer.oil_total_gallons) + Decimal(gallons_delivered)
get_stats_customer.oil_total_gallons = new_gallons
new_calls = int(get_stats_customer.total_calls) + 1
get_stats_customer.total_calls = new_calls
# update fill location
get_customer_description.fill_location = fill_location
db.session.add(get_customer_description)
db.session.add(get_stats_customer)
db.session.add(get_stats_employee)
db.session.add(get_delivery) db.session.add(get_delivery)
db.session.commit() db.session.commit()

View File

@@ -3,7 +3,7 @@ from app.payment import payment
from app import db from app import db
from app.classes.customer import Customer_Customer from app.classes.customer import Customer_Customer
from app.classes.cards import Card_Card, Card_Card_schema from app.classes.cards import Card_Card, Card_Card_schema
from flask_login import current_user
def set_card_main(user_id, card_id): def set_card_main(user_id, card_id):
@@ -111,6 +111,7 @@ def create_user_card(user_id):
type_of_card = request.json["type_of_card"] type_of_card = request.json["type_of_card"]
security_number = request.json["security_number"] security_number = request.json["security_number"]
main_card = request.json["main_card"] main_card = request.json["main_card"]
zip_code = request.json["main_card"]
card_number = request.json["card_number"] card_number = request.json["card_number"]
last_four = card_number[-4] last_four = card_number[-4]
@@ -126,10 +127,15 @@ def create_user_card(user_id):
security_number=security_number, security_number=security_number,
accepted_or_declined=None, accepted_or_declined=None,
main_card=main_card, main_card=main_card,
zip_code=zip_code
) )
db.session.add(create_new_card)
db.session.flush() db.session.flush()
if main_card is True: if main_card is True:
set_card_main(user_id=get_customer.id, card_id=create_new_card.id) try:
set_card_main(user_id=get_customer.id, card_id=create_new_card.id)
except:
pass
db.session.add(create_new_card) db.session.add(create_new_card)
db.session.commit() db.session.commit()
@@ -186,6 +192,7 @@ def update_user_card(card_id):
security_number = request.json["security_number"] security_number = request.json["security_number"]
card_number = request.json["card_number"] card_number = request.json["card_number"]
main_card = request.json["main_card"] main_card = request.json["main_card"]
zip_code = request.json["zip_code"]
get_card.user_id = get_customer.id get_card.user_id = get_customer.id
get_card.card_number = card_number get_card.card_number = card_number
@@ -195,6 +202,7 @@ def update_user_card(card_id):
get_card.type_of_card = type_of_card get_card.type_of_card = type_of_card
get_card.security_number = security_number get_card.security_number = security_number
get_card.main_card = main_card get_card.main_card = main_card
get_card.zip_code = zip_code
if main_card is True: if main_card is True:
set_card_main(user_id=get_customer.id, card_id=get_card.id) set_card_main(user_id=get_customer.id, card_id=get_card.id)

View File

@@ -5,7 +5,7 @@ from app.stats import stats
from app import db from app import db
from app.classes.delivery import Delivery_Delivery from app.classes.delivery import Delivery_Delivery
from app.classes.stats_company import Stats_Company, Stats_Company_schema from app.classes.stats_company import Stats_Company, Stats_Company_schema
from app.classes.stats_customer import Stats_Customer, Stats_Customer_schema
@stats.route("/calls/add", methods=["PUT"]) @stats.route("/calls/add", methods=["PUT"])
def total_calls_post(): def total_calls_post():
@@ -101,3 +101,52 @@ def total_deliveries_today_finished():
'data': total_stops, 'data': total_stops,
}), 200 }), 200
@stats.route("/user/<int:user_id>", methods=["GET"])
def get_user_stats(user_id):
"""
gets stats of user
"""
get_user = db.session \
.query(Stats_Customer) \
.filter(Stats_Customer.customer_id == user_id) \
.first()
if get_user is None:
new_stats = Stats_Customer(
customer_id = user_id,
total_calls = 1,
service_calls_total = 0,
service_calls_total_spent = 0,
service_calls_total_profit = 0,
oil_deliveries = 0,
oil_total_gallons = 0,
oil_total_spent = 0,
oil_total_profit = 0,
)
db.session.add(new_stats)
db.session.commit()
get_user = db.session \
.query(Stats_Customer) \
.filter(Stats_Customer.customer_id == user_id) \
.first()
user_schema = Stats_Customer_schema(many=False)
return jsonify(user_schema.dump(get_user))
@stats.route("/user/lastdelivery/<int:user_id>", methods=["GET"])
def get_user_last_delivery(user_id):
"""
gets users last delivery. used on profile page
"""
get_delivery= db.session \
.query(Delivery_Delivery) \
.filter(Delivery_Delivery.customer_id == user_id) \
.order_by(Delivery_Delivery.id.desc())\
.first()
if get_delivery:
date_delivered = get_delivery.when_delivered
else:
date_delivered = "no deliveries on record"
return jsonify({"ok": True,
'date': date_delivered,
}), 200