From 0fc6096637a661b2673117a700e93a13e3ff2fc3 Mon Sep 17 00:00:00 2001 From: Adnan Zahir Date: Fri, 24 Apr 2026 03:22:21 +0700 Subject: [PATCH] fix: remove join query between adjustment_stocks and recording (egg) --- .../repository/common.hppv2.repository.go | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/internal/common/repository/common.hppv2.repository.go b/internal/common/repository/common.hppv2.repository.go index 0bc03edb..dfd9c29f 100644 --- a/internal/common/repository/common.hppv2.repository.go +++ b/internal/common/repository/common.hppv2.repository.go @@ -882,25 +882,13 @@ func (r *HppV2RepositoryImpl) GetEggProduksiPiecesAndWeightKgByProjectFlockKanda TotalQty float64 TotalWeight float64 } - adjustmentSubQuery := r.db.WithContext(ctx). - Table("recordings AS r"). - Select("DISTINCT ast.id AS adjustment_id, ast.total_qty AS total_qty, ast.price AS price"). - Joins("JOIN recording_eggs AS re ON re.recording_id = r.id"). - Joins("JOIN stock_transfer_details AS std ON std.dest_product_warehouse_id = re.product_warehouse_id"). - Joins( - "JOIN stock_allocations AS sa ON sa.usable_type = ? AND sa.usable_id = std.id AND sa.stockable_type = ? AND sa.status = ? AND sa.allocation_purpose = ?", - fifo.UsableKeyStockTransferOut.String(), - fifo.StockableKeyAdjustmentIn.String(), - entity.StockAllocationStatusActive, - entity.StockAllocationPurposeConsume, - ). - Joins("JOIN adjustment_stocks AS ast ON ast.id = sa.stockable_id AND ast.product_warehouse_id = std.source_product_warehouse_id"). - Where("r.project_flock_kandangs_id IN (?)", projectFlockKandangIDs). - Where("r.record_datetime <= ?", *date) - err = r.db.WithContext(ctx). - Table("(?) AS adjustment_sources", adjustmentSubQuery). - Select("COALESCE(SUM(adjustment_sources.total_qty), 0) AS total_qty, COALESCE(SUM(adjustment_sources.price), 0) AS total_weight"). + Table("adjustment_stocks AS ast"). + Select("COALESCE(SUM(ast.total_qty), 0) AS total_qty, COALESCE(SUM(ast.price), 0) AS total_weight"). + Joins("JOIN product_warehouses AS pw ON pw.id = ast.product_warehouse_id"). + Where("pw.project_flock_kandang_id IN (?)", projectFlockKandangIDs). + Where("ast.function_code = ?", string(utils.AdjustmentTransactionSubtypeRecordingEggIn)). + Where("ast.created_at <= ?", *date). Scan(&adjustmentTotals).Error if err != nil { return 0, 0, err