mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 21:41:55 +00:00
64 lines
3.1 KiB
Go
64 lines
3.1 KiB
Go
package validation
|
|
|
|
type PurchaseItemPayload struct {
|
|
WarehouseID uint `json:"warehouse_id" validate:"required,gt=0"`
|
|
ProductID uint `json:"product_id" validate:"required,gt=0"`
|
|
Quantity float64 `json:"qty" validate:"required,gt=0"`
|
|
}
|
|
|
|
type CreatePurchaseRequest struct {
|
|
SupplierID uint `json:"supplier_id" validate:"required,gt=0"`
|
|
CreditTerm int `json:"credit_term" validate:"required,gte=0"`
|
|
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,omitempty" validate:"omitempty,gt=0"`
|
|
// For new items (no purchase_item_id), product_id is required.
|
|
ProductID uint64 `json:"product_id,omitempty" validate:"required_without=PurchaseItemID,omitempty,gt=0"`
|
|
WarehouseID uint64 `json:"warehouse_id,omitempty" validate:"required_without=PurchaseItemID,omitempty,gt=0"`
|
|
Qty *float64 `json:"qty,omitempty" validate:"required_without=PurchaseItemID,omitempty,gt=0"`
|
|
Price float64 `json:"price" validate:"required,gt=0"`
|
|
TotalPrice float64 `json:"total_price" validate:"required,gt=0"`
|
|
}
|
|
|
|
type ApproveStaffPurchaseRequest struct {
|
|
Items []StaffPurchaseApprovalItem `json:"items" validate:"required,min=1,dive"`
|
|
Notes *string `json:"notes,omitempty" validate:"omitempty,max=500"`
|
|
}
|
|
|
|
type ApproveManagerPurchaseRequest struct {
|
|
Notes *string `json:"notes,omitempty" validate:"omitempty,max=500"`
|
|
}
|
|
|
|
type ReceivePurchaseItemRequest struct {
|
|
PurchaseItemID uint64 `json:"purchase_item_id" validate:"required,gt=0"`
|
|
WarehouseID *uint `json:"warehouse_id" validate:"omitempty,gt=0"`
|
|
ReceivedDate string `json:"received_date" validate:"required,datetime=2006-01-02"`
|
|
TravelNumber *string `json:"travel_number" validate:"omitempty,max=100"`
|
|
TravelDocumentPath *string `json:"travel_document_path" validate:"omitempty,max=255"`
|
|
VehicleNumber *string `json:"vehicle_number" validate:"omitempty,max=100"`
|
|
ReceivedQty *float64 `json:"received_qty" validate:"omitempty,gte=0"`
|
|
}
|
|
|
|
type ReceivePurchaseRequest struct {
|
|
Items []ReceivePurchaseItemRequest `json:"items" validate:"required,min=1,dive"`
|
|
Notes *string `json:"notes,omitempty" validate:"omitempty,max=500"`
|
|
}
|
|
|
|
type DeletePurchaseItemsRequest struct {
|
|
ItemIDs []uint64 `json:"item_ids" validate:"required,min=1,dive,gt=0"`
|
|
}
|
|
|
|
type PurchaseQuery struct {
|
|
Page int `query:"page" validate:"omitempty,number,min=1"`
|
|
Limit int `query:"limit" validate:"omitempty,number,min=1,max=100"`
|
|
SupplierID uint `query:"supplier_id" validate:"omitempty,gt=0"`
|
|
Search string `query:"search" validate:"omitempty,max=100"`
|
|
PrNumber string `query:"pr_number" validate:"omitempty,max=50"`
|
|
CreatedFrom string `query:"created_from" validate:"omitempty,datetime=2006-01-02"`
|
|
CreatedTo string `query:"created_to" validate:"omitempty,datetime=2006-01-02"`
|
|
Status string `query:"status" validate:"omitempty,oneof=CREATED UPDATED APPROVED REJECTED COMPLETED"`
|
|
}
|