diff --git a/app/models/admin.py b/app/models/admin.py new file mode 100644 index 0000000..5dc730b --- /dev/null +++ b/app/models/admin.py @@ -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)) + diff --git a/app/models/auto.py b/app/models/auto.py index e16be3a..23180ba 100644 --- a/app/models/auto.py +++ b/app/models/auto.py @@ -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)) \ No newline at end of file + 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)) diff --git a/app/models/money.py b/app/models/money.py index 3dd0cec..a0fd24a 100644 --- a/app/models/money.py +++ b/app/models/money.py @@ -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)) \ No newline at end of file + total_profit_oil = Column(DECIMAL(6, 2)) + auto = Column(BOOLEAN) \ No newline at end of file diff --git a/app/routers/delivery.py b/app/routers/delivery.py index 0759841..74d248c 100644 --- a/app/routers/delivery.py +++ b/app/routers/delivery.py @@ -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} \ No newline at end of file