From b83ebc0ff9f0936dc345881d5d97c86d287f6e73 Mon Sep 17 00:00:00 2001 From: aguhh18 Date: Mon, 26 Jan 2026 16:26:59 +0700 Subject: [PATCH] Feat[BE] : add stock log to transfer service --- .../transfers/services/transfer.service.go | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/internal/modules/inventory/transfers/services/transfer.service.go b/internal/modules/inventory/transfers/services/transfer.service.go index ea1041ea..fe5f8f5a 100644 --- a/internal/modules/inventory/transfers/services/transfer.service.go +++ b/internal/modules/inventory/transfers/services/transfer.service.go @@ -235,6 +235,7 @@ func (s *transferService) CreateOne(c *fiber.Ctx, req *validation.TransferReques stockTransferDeliveryRepoTX := s.StockTransferDeliveryRepo.WithTx(tx) stockTransferDeliveryItemRepoTX := s.StockTransferDeliveryItemRepo.WithTx(tx) productWarehouseRepoTX := rProductWarehouse.NewProductWarehouseRepository(tx) + stocklogsRepoTx := s.StockLogsRepository.WithTx(tx) if err := stockTransferRepoTX.CreateOne(c.Context(), entityTransfer, nil); err != nil { return err @@ -405,6 +406,19 @@ func (s *transferService) CreateOne(c *fiber.Ctx, req *validation.TransferReques return fiber.NewError(fiber.StatusInternalServerError, "Gagal memperbarui data tracking") } + stockLogDecrease := &entity.StockLog{ + ProductWarehouseId: uint(*detail.SourceProductWarehouseID), + CreatedBy: uint(actorID), + Increase: 0, + Decrease: product.ProductQty, + LoggableType: string(utils.StockLogTypeTransfer), + LoggableId: uint(detail.Id), + Notes: "", + } + if err := stocklogsRepoTx.CreateOne(c.Context(), stockLogDecrease, nil); err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "Gagal membuat log stok keluar") + } + note := fmt.Sprintf("Transfer #%s", entityTransfer.MovementNumber) replenishResult, err := s.FifoSvc.Replenish(c.Context(), commonSvc.StockReplenishRequest{ StockableKey: fifo.StockableKeyStockTransferIn, @@ -427,6 +441,19 @@ func (s *transferService) CreateOne(c *fiber.Ctx, req *validation.TransferReques s.Log.Errorf("Failed to update tracking total for detail_id=%d, product_id=%d: %+v", detail.Id, product.ProductID, err) return fiber.NewError(fiber.StatusInternalServerError, "Gagal memperbarui data tracking") } + + stockLogIncrease := &entity.StockLog{ + ProductWarehouseId: uint(*detail.DestProductWarehouseID), + CreatedBy: uint(actorID), + Increase: product.ProductQty, + Decrease: 0, + LoggableType: string(utils.StockLogTypeTransfer), + LoggableId: uint(detail.Id), + Notes: "", + } + if err := stocklogsRepoTx.CreateOne(c.Context(), stockLogIncrease, nil); err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "Gagal membuat log stok masuk") + } } if len(req.Deliveries) > 0 {