Improve the frontend 3

This commit is contained in:
Urtzi Alfaro
2025-10-30 21:08:07 +01:00
parent 36217a2729
commit 63f5c6d512
184 changed files with 21512 additions and 7442 deletions

View File

@@ -4,17 +4,20 @@ Pydantic schemas for supplier-related API requests and responses
"""
from pydantic import BaseModel, Field, EmailStr
from typing import List, Optional, Dict, Any
from typing import List, Optional, Dict, Any, Union
from uuid import UUID
from datetime import datetime
from decimal import Decimal
from app.models.suppliers import (
SupplierType, SupplierStatus, PaymentTerms,
PurchaseOrderStatus, DeliveryStatus,
QualityRating, DeliveryRating, InvoiceStatus
SupplierType, SupplierStatus, PaymentTerms,
QualityRating
)
# NOTE: PO, Delivery, and Invoice schemas remain for backward compatibility
# but the actual tables and functionality have moved to Procurement Service
# TODO: These schemas should be removed once all clients migrate to Procurement Service
# ============================================================================
# SUPPLIER SCHEMAS
@@ -51,7 +54,7 @@ class SupplierCreate(BaseModel):
# Additional information
notes: Optional[str] = None
certifications: Optional[Dict[str, Any]] = None
certifications: Optional[Union[Dict[str, Any], List[str]]] = None
business_hours: Optional[Dict[str, Any]] = None
specializations: Optional[Dict[str, Any]] = None
@@ -88,7 +91,7 @@ class SupplierUpdate(BaseModel):
# Additional information
notes: Optional[str] = None
certifications: Optional[Dict[str, Any]] = None
certifications: Optional[Union[Dict[str, Any], List[str]]] = None
business_hours: Optional[Dict[str, Any]] = None
specializations: Optional[Dict[str, Any]] = None
@@ -144,7 +147,7 @@ class SupplierResponse(BaseModel):
# Additional information
notes: Optional[str] = None
certifications: Optional[Dict[str, Any]] = None
certifications: Optional[Union[Dict[str, Any], List[str]]] = None
business_hours: Optional[Dict[str, Any]] = None
specializations: Optional[Dict[str, Any]] = None
@@ -303,7 +306,7 @@ class PurchaseOrderUpdate(BaseModel):
class PurchaseOrderStatusUpdate(BaseModel):
"""Schema for updating purchase order status"""
status: PurchaseOrderStatus
status: str # PurchaseOrderStatus - moved to Procurement Service
notes: Optional[str] = None
@@ -320,7 +323,7 @@ class PurchaseOrderResponse(BaseModel):
supplier_id: UUID
po_number: str
reference_number: Optional[str] = None
status: PurchaseOrderStatus
status: str # PurchaseOrderStatus
priority: str
order_date: datetime
required_delivery_date: Optional[datetime] = None
@@ -376,7 +379,7 @@ class PurchaseOrderSummary(BaseModel):
po_number: str
supplier_id: UUID
supplier_name: Optional[str] = None
status: PurchaseOrderStatus
status: str # PurchaseOrderStatus
priority: str
order_date: datetime
required_delivery_date: Optional[datetime] = None
@@ -483,7 +486,7 @@ class DeliveryUpdate(BaseModel):
class DeliveryStatusUpdate(BaseModel):
"""Schema for updating delivery status"""
status: DeliveryStatus
status: str # DeliveryStatus
notes: Optional[str] = None
update_timestamps: bool = Field(default=True)
@@ -504,7 +507,7 @@ class DeliveryResponse(BaseModel):
supplier_id: UUID
delivery_number: str
supplier_delivery_note: Optional[str] = None
status: DeliveryStatus
status: str # DeliveryStatus
# Timing
scheduled_date: Optional[datetime] = None
@@ -554,7 +557,7 @@ class DeliverySummary(BaseModel):
supplier_name: Optional[str] = None
purchase_order_id: UUID
po_number: Optional[str] = None
status: DeliveryStatus
status: str # DeliveryStatus
scheduled_date: Optional[datetime] = None
actual_arrival: Optional[datetime] = None
inspection_passed: Optional[bool] = None
@@ -580,7 +583,7 @@ class SupplierSearchParams(BaseModel):
class PurchaseOrderSearchParams(BaseModel):
"""Search parameters for purchase orders"""
supplier_id: Optional[UUID] = None
status: Optional[PurchaseOrderStatus] = None
status: Optional[str] = None # PurchaseOrderStatus
priority: Optional[str] = None
date_from: Optional[datetime] = None
date_to: Optional[datetime] = None
@@ -592,7 +595,7 @@ class PurchaseOrderSearchParams(BaseModel):
class DeliverySearchParams(BaseModel):
"""Search parameters for deliveries"""
supplier_id: Optional[UUID] = None
status: Optional[DeliveryStatus] = None
status: Optional[str] = None # DeliveryStatus
date_from: Optional[datetime] = None
date_to: Optional[datetime] = None
search_term: Optional[str] = Field(None, max_length=100)