Add all project files

This commit is contained in:
2025-09-08 14:30:40 -04:00
parent ace067d5e1
commit 8c37b6aeab
28 changed files with 773 additions and 0 deletions

64
app/schemas.py Normal file
View File

@@ -0,0 +1,64 @@
from pydantic import BaseModel
from typing import List, Optional
from datetime import datetime
class TransactionBase(BaseModel):
preauthorize_amount: Optional[float] = None # Amount preauthorized (for auth transactions)
charge_amount: Optional[float] = None # Final charge amount (for charge/capture transactions)
transaction_type: int # 0 = charge, 1 = auth, 3 = capture - Required for database
service_id: Optional[int] = None # Reference to Service_Service.id
delivery_id: Optional[int] = None # Reference to Delivery_Delivery.id
card_id: Optional[int] = None # Reference to credit card used for payment
payment_gateway: int = 1 # 1 = Authorize.Net, 0 = Other
rejection_reason: Optional[str] = None # Detailed error message when payment is declined
class TransactionCreate(TransactionBase):
charge_amount: float # Final charge amount
card_number: str
expiration_date: str # MM/YY
cvv: str
class TransactionAuthorize(TransactionBase):
preauthorize_amount: float # Amount to preauthorize
card_number: str
expiration_date: str
cvv: str
class TransactionCapture(BaseModel):
charge_amount: float # Amount to capture
auth_net_transaction_id: str
class Transaction(TransactionBase):
id: int
transaction_type: int # 0 = charge, 1 = auth, 3 = capture
status: int # 0 = approved, 1 = declined
auth_net_transaction_id: Optional[str] = None
customer_id: int
class Config:
orm_mode = True
class CustomerBase(BaseModel):
account_number: Optional[str] = None
customer_last_name: Optional[str] = None
customer_first_name: Optional[str] = None
customer_town: Optional[str] = None
customer_state: Optional[int] = None
customer_zip: Optional[str] = None
customer_first_call: Optional[datetime] = None
customer_email: Optional[str] = None
customer_automatic: Optional[int] = None
customer_phone_number: Optional[str] = None
customer_home_type: Optional[int] = None
customer_apt: Optional[str] = None
customer_address: Optional[str] = None
company_id: Optional[int] = None
customer_latitude: Optional[str] = None
customer_longitude: Optional[str] = None
correct_address: Optional[bool] = None
class Customer(CustomerBase):
id: int
class Config:
orm_mode = True