package validation type PurchaseItemPayload struct { ProductID uint `json:"product_id" validate:"required"` ProductWarehouseID *uint `json:"product_warehouse_id,omitempty" validate:"omitempty,gt=0"` Quantity float64 `json:"quantity" validate:"required,gt=0"` } type CreatePurchaseRequest struct { SupplierID uint `json:"supplier_id" validate:"required"` AreaID uint `json:"area_id" validate:"required"` LocationID uint `json:"location_id" validate:"required"` WarehouseID uint `json:"warehouse_id" validate:"required"` Notes *string `json:"notes" validate:"omitempty,max=500"` Items []PurchaseItemPayload `json:"items" validate:"required,min=1,dive"` } type StaffPurchaseApprovalItem struct { PurchaseItemID uint64 `json:"purchase_item_id" validate:"required,gt=0"` Price float64 `json:"price" validate:"required,gt=0"` TotalPrice *float64 `json:"total_price,omitempty" validate:"omitempty,gt=0"` } type ApproveStaffPurchaseRequest struct { Items []StaffPurchaseApprovalItem `json:"items" validate:"required,min=1,dive"` Notes *string `json:"notes,omitempty" validate:"omitempty,max=500"` }