add restrict create/edit/delete depletion

This commit is contained in:
ragilap
2026-03-14 15:39:09 +07:00
parent 5ba10113c3
commit b2e70fa6eb
@@ -324,6 +324,15 @@ func (s *recordingService) CreateOne(c *fiber.Ctx, req *validation.Create) (*ent
if err := s.enforceTransferRecordingRoute(ctx, pfk, recordTime, routePayload); err != nil {
return nil, err
}
if routePayload.DepletionCount > 0 {
if err := s.ensureDepletionMutationAllowed(ctx, &entity.Recording{
ProjectFlockKandangId: req.ProjectFlockKandangId,
RecordDatetime: recordTime,
ProjectFlockKandang: pfk,
}, "buat"); err != nil {
return nil, err
}
}
if err := s.ProjectFlockSvc.EnsureProjectFlockApproved(ctx, pfk.ProjectFlockId); err != nil {
return nil, err
@@ -1136,7 +1145,7 @@ func (s *recordingService) ensurePopulationMutationAllowed(ctx context.Context,
}
func (s *recordingService) ensureDepletionMutationAllowed(ctx context.Context, recording *entity.Recording, operation string) error {
if recording == nil || recording.Id == 0 || recording.ProjectFlockKandangId == 0 || s.TransferLayingRepo == nil {
if recording == nil || recording.ProjectFlockKandangId == 0 || s.TransferLayingRepo == nil {
return nil
}
@@ -1177,18 +1186,20 @@ func (s *recordingService) ensureDepletionMutationAllowed(ctx context.Context, r
}
recordDate := normalizeDateOnlyUTC(recording.RecordDatetime)
physicalMoveDate := transferPhysicalMoveDate(transfer)
if physicalMoveDate.IsZero() || recordDate.Before(physicalMoveDate) {
return nil
transferNumber := strings.TrimSpace(transfer.TransferNumber)
if transferNumber == "" {
transferNumber = "-"
}
executedDate := normalizeDateOnlyUTC(*transfer.ExecutedAt)
return fiber.NewError(
fiber.StatusBadRequest,
fmt.Sprintf(
"Deplesi recording tanggal %s tidak dapat di%s karena sudah mempengaruhi transfer laying %s yang sudah dieksekusi. Lakukan unexecute transfer terlebih dahulu bila belum ada pemakaian downstream.",
"Deplesi recording tanggal %s tidak dapat di%s karena transfer laying %s sudah dieksekusi pada %s. Setelah transfer dieksekusi, mutasi deplesi di kandang growing tidak diizinkan (termasuk backdate).",
recordDate.Format("2006-01-02"),
operation,
transfer.TransferNumber,
transferNumber,
executedDate.Format("2006-01-02"),
),
)
}