small fixes

This commit is contained in:
2024-11-20 18:00:52 -05:00
parent b9a5667a3b
commit b70ea0b6a0
4 changed files with 130 additions and 23 deletions

25
app/models/admin.py Normal file
View File

@@ -0,0 +1,25 @@
from sqlalchemy import (Column, Integer,
DECIMAL, TEXT,
VARCHAR, DATE, INTEGER)
from datetime import datetime
from database import Base
class Admin_Company(Base):
__tablename__ = 'admin_company'
__table_args__ = {"schema": "public"}
id = Column(Integer,
primary_key=True,
autoincrement=True,
unique=False)
creation_date = Column(DATE())
account_prefix = Column(VARCHAR(5))
company_name = Column(VARCHAR(250))
company_address = Column(VARCHAR(250))
company_town = Column(VARCHAR(100))
company_zip = Column(VARCHAR(25))
company_state = Column(INTEGER())
company_phone_number = Column(VARCHAR(50))

View File

@@ -1,30 +1,21 @@
from sqlalchemy import Column, Integer,\
DECIMAL, TEXT,\
VARCHAR, TIMESTAMP, DATE, INTEGER
from sqlalchemy import (Column, Integer,
DECIMAL, TEXT,
VARCHAR, DATE, INTEGER)
from datetime import datetime
from database import Base
class Auto_Customer(Base):
__tablename__ = 'auto_temp'
class Auto_Update(Base):
__tablename__ = 'auto_update'
id = Column(Integer,
primary_key=True,
autoincrement=True,
unique=False)
customer_id = Column(INTEGER())
customer_full_name = Column(VARCHAR(250))
last_fill = Column(TIMESTAMP(), default=datetime.utcnow())
last_updated = Column(TIMESTAMP(), default=datetime.utcnow())
estimated_gallons_left = Column(INTEGER)
estimated_gallons_left_prev_day = Column(INTEGER)
tank_height = Column(VARCHAR(25))
tank_size = Column(VARCHAR(25))
house_factor = Column(DECIMAL(5, 2))
last_updated = Column(DATE())
class Auto_Temp(Base):
@@ -35,7 +26,7 @@ class Auto_Temp(Base):
autoincrement=True,
unique=False)
todays_date = Column(TIMESTAMP(), default=datetime.utcnow())
todays_date = Column(DATE)
temp = Column(DECIMAL(5, 2))
temp_max = Column(DECIMAL(5, 2))
temp_min = Column(DECIMAL(5, 2))
@@ -59,10 +50,36 @@ class Auto_Delivery(Base):
customer_address = Column(VARCHAR(1000))
customer_zip = Column(VARCHAR(25))
customer_full_name = Column(VARCHAR(250))
last_fill = Column(TIMESTAMP())
last_updated = Column(TIMESTAMP())
estimated_gallons_left = Column(INTEGER())
estimated_gallons_left_prev_day = Column(INTEGER())
last_fill = Column(DATE())
last_updated = Column(DATE())
estimated_gallons_left = Column(DECIMAL(6, 2))
estimated_gallons_left_prev_day = Column(DECIMAL(6, 2))
tank_height = Column(VARCHAR(25))
tank_size = Column(VARCHAR(25))
house_factor = Column(DECIMAL(5, 2))
house_factor = Column(DECIMAL(5, 2))
auto_status = Column(INTEGER())
class Tickets_Auto_Delivery(Base):
__tablename__ = 'auto_tickets'
id = Column(Integer,
primary_key=True,
autoincrement=True,
unique=False)
customer_id = Column(INTEGER())
account_number = Column(VARCHAR(25))
customer_town = Column(VARCHAR(140))
customer_state = Column(Integer)
customer_address = Column(VARCHAR(1000))
customer_zip = Column(VARCHAR(25))
customer_full_name = Column(VARCHAR(250))
customer_zip = Column(VARCHAR(25))
oil_prices_id = Column(INTEGER())
gallons_delivered = Column(DECIMAL(6, 2))
price_per_gallon = Column(DECIMAL(6, 2))
total_amount_customer = Column(DECIMAL(6, 2))

View File

@@ -1,6 +1,6 @@
from sqlalchemy import Column, Integer,\
DECIMAL, TEXT,\
VARCHAR, TIMESTAMP, DATE
VARCHAR, BOOLEAN, DATE
from database import Base
@@ -26,4 +26,5 @@ class MoneyDelivery(Base):
total_discount_total = Column(DECIMAL(6, 2))
taxes_paid = Column(DECIMAL(6, 2))
total_profit = Column(DECIMAL(6, 2))
total_profit_oil = Column(DECIMAL(6, 2))
total_profit_oil = Column(DECIMAL(6, 2))
auto = Column(BOOLEAN)

View File

@@ -10,6 +10,8 @@ from app.models.delivery import Delivery
from app.models.money import MoneyDelivery
from app.models.pricing import Pricing_Oil_Oil
from app.models.promo import Promo_Promo
from app.models.auto import Tickets_Auto_Delivery
router = APIRouter(
@@ -107,6 +109,7 @@ async def calculate_delivery_final(delivery_id_order):
total_discount_total=discount,
total_profit_oil=profit_from_oil,
total_profit=profit_from_stop,
auto=False
)
session.add(new_money)
@@ -114,4 +117,65 @@ async def calculate_delivery_final(delivery_id_order):
return {"delivery_id": delivery_id_order}
@router.post("/add/auto/{auto_ticket_id}", status_code=201)
async def calculate_delivery_auto_final(auto_ticket_id):
now = datetime.now(timezone.utc).replace(tzinfo=None)
auto_ticket_id = int(auto_ticket_id)
get_delivery = (session.query(Tickets_Auto_Delivery)
.filter(Tickets_Auto_Delivery.id == auto_ticket_id)
.first())
get_current_prices = (session.query(Pricing_Oil_Oil)
.order_by(Pricing_Oil_Oil.id.desc())
.first())
# get total amount for just oil delivered
calc_total_oil = (float(get_delivery.gallons_delivered) * float(get_current_prices.price_for_customer))
calc_total_oil_supplier = (float(get_delivery.gallons_delivered) * float(get_current_prices.price_from_supplier))
discount = 0
# total amount
total_amount_delivery =float(calc_total_oil)
# calculate profit
profit_from_oil = float(calc_total_oil) - float(calc_total_oil_supplier)
# add it all together
profit_from_stop = float(profit_from_oil)
new_money = MoneyDelivery(
delivery_id = get_delivery.id,
time_added=now,
gallons_delivered=get_delivery.gallons_delivered,
supplier_price=get_current_prices.price_from_supplier,
customer_price=get_current_prices.price_for_customer,
total_amount_oil=calc_total_oil,
total_amount_prime=0,
total_amount_same_day=0,
total_amount_fee= 0,
total_amount=total_amount_delivery,
taxes_paid=None,
total_discount_amount=0,
total_discount_total=discount,
total_profit_oil=profit_from_oil,
total_profit=profit_from_stop,
auto=True
)
session.add(new_money)
session.commit()
return {"delivery_id": auto_ticket_id}