diff --git a/internal/modules/inventory/transfers/services/transfer.service.go b/internal/modules/inventory/transfers/services/transfer.service.go index e74332bc..1d69de6f 100644 --- a/internal/modules/inventory/transfers/services/transfer.service.go +++ b/internal/modules/inventory/transfers/services/transfer.service.go @@ -232,11 +232,24 @@ func (s *transferService) CreateOne(c *fiber.Ctx, req *validation.TransferReques } for _, delivery := range req.Deliveries { - // Skip supplier validation if SupplierID is 0 (optional) + if delivery.SupplierID == 0 { continue } + if delivery.VehiclePlate == "" { + return nil, fiber.NewError(fiber.StatusBadRequest, "Vehicle plate wajib diisi ketika supplier dipilih") + } + if delivery.DriverName == "" { + return nil, fiber.NewError(fiber.StatusBadRequest, "Driver name wajib diisi ketika supplier dipilih") + } + if delivery.DeliveryCost <= 0 { + return nil, fiber.NewError(fiber.StatusBadRequest, "Delivery cost harus lebih dari 0 ketika supplier dipilih") + } + if delivery.DeliveryCostPerItem <= 0 { + return nil, fiber.NewError(fiber.StatusBadRequest, "Delivery cost per item harus lebih dari 0 ketika supplier dipilih") + } + supplier, err := s.SupplierRepo.GetByID(c.Context(), uint(delivery.SupplierID), nil) if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { diff --git a/internal/modules/inventory/transfers/validations/transfer.validation.go b/internal/modules/inventory/transfers/validations/transfer.validation.go index e2f357f3..89676a41 100644 --- a/internal/modules/inventory/transfers/validations/transfer.validation.go +++ b/internal/modules/inventory/transfers/validations/transfer.validation.go @@ -21,11 +21,11 @@ type TransferDeliveryProduct struct { } type TransferDelivery struct { - DeliveryCost float64 `json:"delivery_cost" validate:"required"` - DeliveryCostPerItem float64 `json:"delivery_cost_per_item" validate:"required"` + DeliveryCost float64 `json:"delivery_cost"` + DeliveryCostPerItem float64 `json:"delivery_cost_per_item"` DocumentIndex int `json:"document_index" validate:"omitempty,min=-1" default:"-1"` - DriverName string `json:"driver_name" validate:"required"` - VehiclePlate string `json:"vehicle_plate" validate:"required"` + DriverName string `json:"driver_name"` + VehiclePlate string `json:"vehicle_plate"` SupplierID uint `json:"supplier_id" ` Products []TransferDeliveryProduct `json:"products" validate:"required,dive"` }