From d2aa3ebac71d5a0fa704dc6329013dbc6b6118c2 Mon Sep 17 00:00:00 2001 From: giovanni Date: Tue, 19 May 2026 12:15:53 +0700 Subject: [PATCH] fix status marketing when edit sales order and edit marketing delivery --- .../services/deliveryorder.service.go | 23 +++++++++++++++++++ .../marketing/services/salesorder.service.go | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/internal/modules/marketing/services/deliveryorder.service.go b/internal/modules/marketing/services/deliveryorder.service.go index 7e09ae39..d78153a0 100644 --- a/internal/modules/marketing/services/deliveryorder.service.go +++ b/internal/modules/marketing/services/deliveryorder.service.go @@ -542,9 +542,15 @@ func (s deliveryOrdersService) UpdateOne(c *fiber.Ctx, req *validation.DeliveryO return nil, err } + latestApproval, err := s.ApprovalSvc.LatestByTarget(c.Context(), utils.ApprovalWorkflowMarketing, id, nil) + if err != nil { + return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to check approval status") + } + err = s.MarketingRepo.DB().WithContext(c.Context()).Transaction(func(dbTransaction *gorm.DB) error { marketingProductRepositoryTx := marketingRepo.NewMarketingProductRepository(dbTransaction) marketingDeliveryProductRepositoryTx := marketingRepo.NewMarketingDeliveryProductRepository(dbTransaction) + approvalSvcTx := commonSvc.NewApprovalService(commonRepo.NewApprovalRepository(dbTransaction)) marketingRepoTx := marketingRepo.NewMarketingRepository(dbTransaction) marketing, err := marketingRepoTx.GetByID(c.Context(), id, nil) @@ -630,6 +636,23 @@ func (s deliveryOrdersService) UpdateOne(c *fiber.Ctx, req *validation.DeliveryO } } + if latestApproval != nil && latestApproval.StepNumber == uint16(utils.MarketingDeliveryOrder) { + action := entity.ApprovalActionUpdated + _, err := approvalSvcTx.CreateApproval( + c.Context(), + utils.ApprovalWorkflowMarketing, + id, + utils.MarketingStepSalesOrder, + &action, + actorID, + nil) + if err != nil { + if !errors.Is(err, gorm.ErrDuplicatedKey) { + return fiber.NewError(fiber.StatusInternalServerError, "Failed to reset approval to Sales Order") + } + } + } + return nil }) if err != nil { diff --git a/internal/modules/marketing/services/salesorder.service.go b/internal/modules/marketing/services/salesorder.service.go index f3e1ae11..9813c5dc 100644 --- a/internal/modules/marketing/services/salesorder.service.go +++ b/internal/modules/marketing/services/salesorder.service.go @@ -516,7 +516,7 @@ func (s salesOrdersService) UpdateOne(c *fiber.Ctx, req *validation.Update, id u c.Context(), utils.ApprovalWorkflowMarketing, id, - approvalutils.ApprovalStep(latestApproval.StepNumber), + utils.MarketingStepPengajuan, &action, actorID, nil)