updated forms

This commit is contained in:
2024-10-24 11:51:14 -04:00
parent 5649294be0
commit b3f0e85574
10 changed files with 340 additions and 208 deletions

View File

@@ -213,6 +213,9 @@ app.register_blueprint(ticket_blueprint, url_prefix='/ticket')
from .promo import promo as promo_blueprint from .promo import promo as promo_blueprint
app.register_blueprint(promo_blueprint, url_prefix='/promo') app.register_blueprint(promo_blueprint, url_prefix='/promo')
from .social import social as social_blueprint
app.register_blueprint(social_blueprint, url_prefix='/social')
with app.app_context(): with app.app_context():
db.configure_mappers() db.configure_mappers()

View File

@@ -1,6 +1,6 @@
# #
from app import db, ma, login_manager from app import db, ma
from datetime import datetime
class Customer_Customer(db.Model): class Customer_Customer(db.Model):

View File

@@ -0,0 +1,25 @@
#
from app import db, ma
class Customer_Customer_Social(db.Model):
__tablename__ = 'customer_customer_social'
__table_args__ = {"schema": "public"}
id = db.Column(db.Integer,
primary_key=True,
autoincrement=True,
unique=False)
created = db.Column(db.DATE())
customer_id = db.Column(db.INTEGER)
poster_employee_id = db.Column(db.INTEGER)
comment = db.Column(db.VARCHAR(1000))
class Customer_Customer_Social_schema(ma.SQLAlchemyAutoSchema):
class Meta:
model = Customer_Customer_Social

View File

@@ -138,8 +138,14 @@ def create_customer():
""" """
""" """
now = datetime.utcnow() now = datetime.utcnow()
get_company = db.session.query(Admin_Company).filter(Admin_Company.id == 1).first() get_company = (db.session
last_customer = (db.session.query(Customer_Customer).order_by(Customer_Customer.id.desc()).first()) .query(Admin_Company)
.filter(Admin_Company.id == 1)
.first())
last_customer = (db.session
.query(Customer_Customer)
.order_by(Customer_Customer.id.desc())
.first())
new_customer_id = last_customer.id + 1 new_customer_id = last_customer.id + 1
if len(str(new_customer_id)) == 2: if len(str(new_customer_id)) == 2:
new_customer_id = '000' + str(new_customer_id) new_customer_id = '000' + str(new_customer_id)
@@ -161,17 +167,13 @@ def create_customer():
response_customer_state = request.json["customer_state"] response_customer_state = request.json["customer_state"]
response_customer_zip = request.json["customer_zip"] response_customer_zip = request.json["customer_zip"]
response_customer_email = request.json["customer_email"] response_customer_email = request.json["customer_email"]
response_customer_automatic = request.json["customer_automatic"]
response_customer_home_type = request.json["customer_home_type"] response_customer_home_type = request.json["customer_home_type"]
customer_phone_number = request.json["customer_phone_number"] customer_phone_number = request.json["customer_phone_number"]
customer_address = request.json["customer_address"] customer_address = request.json["customer_address"]
customer_apt = request.json["customer_apt"] customer_apt = request.json["customer_apt"]
customer_description_msg = request.json["customer_description"] customer_description_msg = request.json["customer_description"]
if response_customer_automatic is True:
auto_customer = 1
else:
auto_customer = 0
int_customer_home_type = int(response_customer_home_type) int_customer_home_type = int(response_customer_home_type)
response_customer_zip = str(response_customer_zip) response_customer_zip = str(response_customer_zip)
@@ -186,7 +188,7 @@ def create_customer():
customer_zip=response_customer_zip, customer_zip=response_customer_zip,
customer_first_call=now, customer_first_call=now,
customer_email=response_customer_email, customer_email=response_customer_email,
customer_automatic=auto_customer, customer_automatic=0,
customer_home_type=int_customer_home_type, customer_home_type=int_customer_home_type,
customer_phone_number=customer_phone_number, customer_phone_number=customer_phone_number,
customer_address=customer_address, customer_address=customer_address,
@@ -336,44 +338,12 @@ def edit_customer(customer_id):
response_customer_email = request.json["customer_email"] response_customer_email = request.json["customer_email"]
response_customer_home_type = request.json["customer_home_type"] response_customer_home_type = request.json["customer_home_type"]
response_customer_address = request.json["customer_address"] response_customer_address = request.json["customer_address"]
response_customer_automatic = request.json["customer_automatic"]
response_customer_description = request.json["customer_description"] response_customer_description = request.json["customer_description"]
response_customer_fill_location = request.json["customer_fill_location"] response_customer_fill_location = request.json["customer_fill_location"]
if response_customer_automatic is True:
get_auto = (db.session
.query(Auto_Delivery)
.filter(Auto_Delivery.customer_id == customer_id)
.first())
auto = 1
# customer becames an automatic
if get_auto is None:
create_auto = Auto_Delivery(customer_id = customer_id,
customer_full_name =get_customer.customer_first_name + ' ' + get_customer.customer_last_name,
account_number=get_customer.account_number,
customer_town=get_customer.customer_town,
customer_state=get_customer.customer_state,
customer_zip=get_customer.customer_zip,
customer_address=get_customer.customer_address,
last_fill = datetime.utcnow(),
last_updated = None,
estimated_gallons_left = 0,
estimated_gallons_left_prev_day = 0,
tank_height = 0,
tank_size =275,
house_factor = 1,
auto_status=0
)
db.session.add(create_auto)
else:
auto = 0
if get_customer_description is not None: if get_customer_description is not None:
get_customer_description.description = response_customer_description get_customer_description.description = response_customer_description
get_customer_description.fill_location = response_customer_fill_location get_customer_description.fill_location = response_customer_fill_location
@@ -389,7 +359,6 @@ def edit_customer(customer_id):
get_customer.customer_state = response_customer_state get_customer.customer_state = response_customer_state
get_customer.customer_zip = response_customer_zip get_customer.customer_zip = response_customer_zip
get_customer.customer_email = response_customer_email get_customer.customer_email = response_customer_email
get_customer.customer_automatic = auto
db.session.add(get_customer) db.session.add(get_customer)
db.session.commit() db.session.commit()

View File

@@ -127,9 +127,7 @@ def get_deliveries_not_delivered_all(page):
deliveries = (db.session deliveries = (db.session
.query(Delivery_Delivery) .query(Delivery_Delivery)
.filter(Delivery_Delivery.delivery_status != 10) .order_by(Delivery_Delivery.id.desc())
.filter(Delivery_Delivery.delivery_status != 3)
.order_by(Delivery_Delivery.id.asc())
.limit(per_page_amount).offset(offset_limit)) .limit(per_page_amount).offset(offset_limit))
@@ -895,8 +893,13 @@ def calculate_total(delivery_id):
.query(Promo_Promo) .query(Promo_Promo)
.filter(Promo_Promo.id == get_delivery.promo_id) .filter(Promo_Promo.id == get_delivery.promo_id)
.first()) .first())
discount = (get_delivery.total_price * get_promo_data.money_off_delivery) discount_gallon_price = get_delivery.customer_price - get_promo_data.money_off_delivery
total_amount_after_discount = (get_delivery.total_price - discount)
total_amount_after_discount = (get_delivery.gallons_ordered * discount_gallon_price)
discount = (get_delivery.gallons_ordered * get_delivery.customer_price) - total_amount_after_discount
else: else:
discount = 0 discount = 0
total_amount_after_discount = 0 total_amount_after_discount = 0
@@ -906,21 +909,29 @@ def calculate_total(delivery_id):
.first()) .first())
if get_delivery.prime == 1: if get_delivery.prime == 1:
priceprime = get_price_query.price_prime priceprime = float(get_price_query.price_prime)
else: else:
priceprime = 0 priceprime = 0
if get_delivery.emergency == 1: if get_delivery.emergency == 1:
priceemergency = get_price_query.price_emergency priceemergency = float(get_price_query.price_emergency)
else: else:
priceemergency = 0 priceemergency = 0
if get_delivery.same_day == 1: if get_delivery.same_day == 1:
pricesameday = get_price_query.price_same_day pricesameday = float(get_price_query.price_same_day)
else: else:
pricesameday = 0 pricesameday = 0
total = float(get_delivery.total_price) + float(priceprime) + float(pricesameday) + float(priceemergency) total = float(get_delivery.total_price) + float(priceprime) + float(pricesameday) + float(priceemergency)
priceprime = round(priceprime, 2)
pricesameday = round(pricesameday, 2)
priceemergency = round(priceemergency, 2)
priceprime = round(priceprime, 2)
total_amount_after_discount = round(total_amount_after_discount, 2)
discount = round(discount, 2)
total = round(total, 2)
return jsonify({ return jsonify({
"ok": True, "ok": True,

View File

@@ -44,7 +44,7 @@ def office_finalize_delivery(delivery_id):
description = None, description = None,
) )
db.session.add(new_customer_desc) db.session.add(new_customer_desc)
db.session.commit() db.session.flush()
get_customer_description = db.session \ get_customer_description = db.session \
.query(Customer_Description) \ .query(Customer_Description) \
.filter(Customer_Description.customer_id == get_delivery.customer_id) \ .filter(Customer_Description.customer_id == get_delivery.customer_id) \
@@ -121,66 +121,14 @@ def office_finalize_delivery(delivery_id):
cash_amount = None cash_amount = None
prime_info = request.json["prime"]
if prime_info is True:
prime_info = 1
current_primes = get_stats_employee.total_primes
newprimes = current_primes + 1
get_stats_employee.total_primes = newprimes
else:
prime_info = 0
gallons_delivered = request.json["gallons_delivered"] gallons_delivered = request.json["gallons_delivered"]
cash = request.json["cash"]
card_payment = request.json["card"] check_number = request.json["check_number"]
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)
.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 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
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:
same_day_info = 1
else:
same_day_info = 0
emergency_info = request.json["emergency"]
if emergency_info is True:
emergency_info = 1
else:
emergency_info = 0
fill_location = request.json["fill_location"] fill_location = request.json["fill_location"]
@@ -194,11 +142,6 @@ def office_finalize_delivery(delivery_id):
# update delivery # update delivery
get_delivery.when_delivered = now get_delivery.when_delivered = now
get_delivery.gallons_delivered = gallons_delivered 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.cash_recieved = cash_amount
get_delivery.check_number = check_number get_delivery.check_number = check_number
get_delivery.delivery_status = 10 get_delivery.delivery_status = 10
@@ -240,134 +183,134 @@ def office_finalize_delivery(delivery_id):
@delivery_data.route("/driver/finalize/<int:delivery_id>", methods=["PUT"]) # @delivery_data.route("/driver/finalize/<int:delivery_id>", methods=["PUT"])
def driver_finalize_delivery(delivery_id): # def driver_finalize_delivery(delivery_id):
""" # """
This will make a delivery finalized from the driver # This will make a delivery finalized from the driver
""" # """
""" # """
Finalizes a delivery from office # Finalizes a delivery from office
""" # """
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)
.first()) # .first())
get_stats = (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())
if get_stats is None: # if get_stats 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,
total_gallons_delivered = 0, # total_gallons_delivered = 0,
total_primes = 0, # total_primes = 0,
oil_total_profit_delivered = 0, # oil_total_profit_delivered = 0,
) # )
db.session.add(create_stats) # db.session.add(create_stats)
db.session.flush() # db.session.flush()
get_stats = (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())
gallons_delivered = request.json["gallons_delivered"] # gallons_delivered = request.json["gallons_delivered"]
gallons_delivered = Decimal(gallons_delivered) # gallons_delivered = Decimal(gallons_delivered)
delivery_driver_id = request.json["driver_employee_id"] # delivery_driver_id = request.json["driver_employee_id"]
get_driver = (db.session # get_driver = (db.session
.query(Employee_Employee) # .query(Employee_Employee)
.filter(Employee_Employee.id == delivery_driver_id) # .filter(Employee_Employee.id == delivery_driver_id)
.first()) # .first())
if get_delivery.automatic == 0: # if get_delivery.automatic == 0:
customer_filled = request.json["customer_filled"] # customer_filled = request.json["customer_filled"]
if customer_filled is True: # if customer_filled is True:
customer_filled = 1 # customer_filled = 1
else: # else:
customer_filled = 0 # customer_filled = 0
else: # else:
customer_filled = 1 # customer_filled = 1
if request.json["cash_amount"]: # if request.json["cash_amount"]:
cash_amount = request.json["cash_amount"] # cash_amount = request.json["cash_amount"]
else: # else:
cash_amount = None # cash_amount = None
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.total_primes
newprimes = current_primes + 1 # newprimes = current_primes + 1
get_stats.total_primes = newprimes # get_stats.total_primes = newprimes
else: # else:
prime_info = 0 # prime_info = 0
## AUTOMATIC # ## AUTOMATIC
if get_delivery.automatic == 1: # if get_delivery.automatic == 1:
get_auto_delivery = (db.session # get_auto_delivery = (db.session
.query(Auto_Delivery) # .query(Auto_Delivery)
.filter(Auto_Delivery.customer_id == get_delivery.customer_id) # .filter(Auto_Delivery.customer_id == get_delivery.customer_id)
.first()) # .first())
get_auto_delivery.auto_status = 2 # get_auto_delivery.auto_status = 2
db.session.add(get_auto_delivery) # db.session.add(get_auto_delivery)
get_delivery.gallons_delivered = gallons_delivered # get_delivery.gallons_delivered = gallons_delivered
get_delivery.prime = prime_info # get_delivery.prime = prime_info
get_delivery.customer_filled = customer_filled # get_delivery.customer_filled = customer_filled
get_delivery.cash_recieved = cash_amount # get_delivery.cash_recieved = cash_amount
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 stats # # update stats
current_deliveres = get_stats.total_deliveries + 1 # current_deliveres = get_stats.total_deliveries + 1
get_stats.total_deliveries = current_deliveres # get_stats.total_deliveries = current_deliveres
current_gallons_delivered = get_stats.total_gallons_delivered + gallons_delivered # current_gallons_delivered = get_stats.total_gallons_delivered + gallons_delivered
get_stats.total_gallons_delivered = current_gallons_delivered # get_stats.total_gallons_delivered = current_gallons_delivered
# update delivery status to delivered # # update delivery status to delivered
if get_delivery.automatic == 0: # if get_delivery.automatic == 0:
if get_delivery.payment_type == 0: # if get_delivery.payment_type == 0:
get_delivery.delivery_status = 10 # get_delivery.delivery_status = 10
else: # else:
#office needs to confirm credit card # #office needs to confirm credit card
get_delivery.delivery_status = 1 # get_delivery.delivery_status = 1
else: # else:
get_delivery.delivery_status = 1 # get_delivery.delivery_status = 1
db.session.add(get_stats) # db.session.add(get_stats)
db.session.add(get_delivery) # db.session.add(get_delivery)
db.session.commit() # db.session.commit()
return jsonify({ # return jsonify({
"ok": True, # "ok": True,
'delivery': { # 'delivery': {
'id': get_delivery.id, # 'id': get_delivery.id,
}, # },
}), 200 # }), 200

View File

@@ -25,6 +25,19 @@ def delivered_delivery():
delivery_schema = Delivery_Delivery_schema(many=True) delivery_schema = Delivery_Delivery_schema(many=True)
return jsonify(delivery_schema.dump(delivery_ticket)) return jsonify(delivery_schema.dump(delivery_ticket))
@deliverystatus.route("/count/delivered", methods=["GET"])
def delivered_delivery_count():
delivery_ticket = (db.session
.query(Delivery_Delivery)
.filter(or_(Delivery_Delivery.delivery_status == 1,
Delivery_Delivery.delivery_status == 10))
.count())
return jsonify({
"ok": True,
'count':delivery_ticket,
}), 200
@deliverystatus.route("/today/driver/<int:user_id>", methods=["GET"]) @deliverystatus.route("/today/driver/<int:user_id>", methods=["GET"])
def get_deliveries_driver_today(user_id): def get_deliveries_driver_today(user_id):
@@ -41,6 +54,28 @@ def get_deliveries_driver_today(user_id):
return jsonify(delivery_schema.dump(get_delivery)) return jsonify(delivery_schema.dump(get_delivery))
@deliverystatus.route("/count/today", methods=["GET"])
def get_deliveries_driver_today_count():
"""
Get deliveries for driver that day
"""
get_delivery = (db.session
.query(Delivery_Delivery)
.filter(Delivery_Delivery.delivery_status != 10)
.filter(Delivery_Delivery.delivery_status != 5)
.filter(Delivery_Delivery.delivery_status != 3)
.filter(Delivery_Delivery.delivery_status != 1)
.filter(Delivery_Delivery.expected_delivery_date == date.today())
.count())
return jsonify({
"ok": True,
'count':get_delivery,
}), 200
@deliverystatus.route("/tommorrow/driver/<int:user_id>", methods=["GET"]) @deliverystatus.route("/tommorrow/driver/<int:user_id>", methods=["GET"])
def get_deliveries_driver_tommorrow(user_id): def get_deliveries_driver_tommorrow(user_id):
""" """
@@ -57,6 +92,23 @@ def get_deliveries_driver_tommorrow(user_id):
return jsonify(delivery_schema.dump(get_delivery)) return jsonify(delivery_schema.dump(get_delivery))
@deliverystatus.route("/count/tommorrow", methods=["GET"])
def get_deliveries_driver_tommorrow_count():
"""
"""
tomm = date.today() + timedelta(days=1)
get_delivery = (db.session
.query(Delivery_Delivery)
.filter(Delivery_Delivery.expected_delivery_date == tomm)
.count())
return jsonify({
"ok": True,
'count':get_delivery,
}), 200
@deliverystatus.route("/waiting/driver/<int:user_id>", methods=["GET"]) @deliverystatus.route("/waiting/driver/<int:user_id>", methods=["GET"])
def get_deliveries_driver_waiting(user_id): def get_deliveries_driver_waiting(user_id):
""" """
@@ -73,3 +125,24 @@ def get_deliveries_driver_waiting(user_id):
delivery_schema = Delivery_Delivery_schema(many=True) delivery_schema = Delivery_Delivery_schema(many=True)
return jsonify(delivery_schema.dump(get_delivery)) return jsonify(delivery_schema.dump(get_delivery))
@deliverystatus.route("/count/waiting", methods=["GET"])
def get_deliveries_driver_waiting_count():
"""
waiting deliveries scheduled out
"""
tomm = date.today() + timedelta(days=1)
get_delivery = (db.session
.query(Delivery_Delivery)
.filter(Delivery_Delivery.delivery_status == 0)
.filter(Delivery_Delivery.expected_delivery_date != tomm)
.filter(Delivery_Delivery.expected_delivery_date != date.today())
.count())
return jsonify({
"ok": True,
'count':get_delivery,
}), 200

7
app/social/__init__.py Normal file
View File

@@ -0,0 +1,7 @@
# coding=utf-8
from flask import Blueprint
social = Blueprint('social', __name__)
from . import views

76
app/social/views.py Normal file
View File

@@ -0,0 +1,76 @@
from flask import jsonify, request
import datetime
from app.social import social
from app import db
from app.classes.customer_social import (Customer_Customer_Social_schema,
Customer_Customer_Social)
@social.route("/posts/<int:customer_id>/<int:page>", methods=["GET"])
def get_customer_posts(customer_id, page):
per_page_amount = 50
if page is None:
offset_limit = 0
elif page == 1:
offset_limit = 0
else:
offset_limit = (per_page_amount * page) - per_page_amount
customer_posts = (db.session
.query(Customer_Customer_Social)
.filter(Customer_Customer_Social.customer_id == customer_id)
.limit(per_page_amount).offset(offset_limit))
customer_social_schema = Customer_Customer_Social_schema(many=True)
return jsonify(customer_social_schema.dump(customer_posts))
@social.route("/create/<int:customer_id>", methods=["POST"])
def create_post(customer_id):
comment = request.json["comment"]
poster_employee_id = request.json["poster_employee_id"]
create_post = Customer_Customer_Social(
created = datetime.datetime.utcnow(),
customer_id = customer_id,
poster_employee_id = poster_employee_id,
comment = comment
)
db.session.add(create_post)
db.session.commit()
return jsonify({ "ok": True,}), 200
@social.route("/posts/<int:post_id>", methods=["PATCH"])
def edit_post(post_id):
customer_post = (db.session
.query(Customer_Customer_Social)
.filter(Customer_Customer_Social.id == post_id)
.first())
comment = request.json["comment"]
customer_post.comment = comment
db.session.add(customer_post)
db.session.commit()
return jsonify({ "ok": True,}), 200
@social.route("/delete/<int:post_id>", methods=["DELETE"])
def delete_post(post_id):
customer_post = (db.session
.query(Customer_Customer_Social)
.filter(Customer_Customer_Social.id == post_id)
.first())
db.session.delete(customer_post)
db.session.commit()
return jsonify({ "ok": True,}), 200

View File

@@ -147,6 +147,7 @@ def get_user_stats(user_id):
.query(Stats_Customer) \ .query(Stats_Customer) \
.filter(Stats_Customer.customer_id == user_id) \ .filter(Stats_Customer.customer_id == user_id) \
.first() .first()
user_schema = Stats_Customer_schema(many=False) user_schema = Stats_Customer_schema(many=False)
return jsonify(user_schema.dump(get_user)) return jsonify(user_schema.dump(get_user))
@@ -190,3 +191,27 @@ def total_gallons_delivered_this_week():
'total': total_gallons, 'total': total_gallons,
}), 200 }), 200
@stats.route("/gallons/check/total/<int:user_id>", methods=["GET"])
def calculate_gallons_user(user_id):
# Get today's date
total_gallons = 0
# Get the date of the Monday for today
get_total = (db.session
.query(Delivery_Delivery)
.filter(Delivery_Delivery.customer_id == user_id)
.all())
get_user = db.session \
.query(Stats_Customer) \
.filter(Stats_Customer.customer_id == user_id) \
.first()
for f in get_total:
total_gallons = total_gallons + f.gallons_delivered
get_user.oil_total_gallons = total_gallons
db.session.add(get_user)
db.session.commit()
return jsonify({"ok": True,
}), 200