mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 05:21:57 +00:00
Merge branch 'fix/consolidate-pw' into 'development'
[FEAT][BE]: adjust query consolidate duplicate product warehouses See merge request mbugroup/lti-api!491
This commit is contained in:
@@ -132,9 +132,9 @@ WITH duplicates AS (
|
||||
pw.project_flock_kandang_id,
|
||||
pw.id,
|
||||
pw.qty,
|
||||
MIN(pw.id) OVER (PARTITION BY pw.warehouse_id, pw.product_id, pw.project_flock_kandang_id) AS survivor_id,
|
||||
COUNT(*) OVER (PARTITION BY pw.warehouse_id, pw.product_id, pw.project_flock_kandang_id) AS duplicate_count,
|
||||
SUM(pw.qty) OVER (PARTITION BY pw.warehouse_id, pw.product_id, pw.project_flock_kandang_id) AS total_qty
|
||||
MIN(pw.id) OVER (PARTITION BY pw.warehouse_id, pw.product_id) AS survivor_id,
|
||||
COUNT(*) OVER (PARTITION BY pw.warehouse_id, pw.product_id) AS duplicate_count,
|
||||
SUM(pw.qty) OVER (PARTITION BY pw.warehouse_id, pw.product_id) AS total_qty
|
||||
FROM product_warehouses pw
|
||||
JOIN warehouses w ON w.id = pw.warehouse_id
|
||||
JOIN products p ON p.id = pw.product_id
|
||||
@@ -149,7 +149,7 @@ SELECT
|
||||
product_name,
|
||||
area_name,
|
||||
location_name,
|
||||
project_flock_kandang_id,
|
||||
(SELECT project_flock_kandang_id FROM duplicates d2 WHERE d2.id = survivor_id LIMIT 1) AS project_flock_kandang_id,
|
||||
survivor_id,
|
||||
(SELECT qty FROM duplicates d2 WHERE d2.id = survivor_id LIMIT 1) AS survivor_qty,
|
||||
duplicate_count - 1 AS absorbed_count,
|
||||
@@ -157,7 +157,7 @@ SELECT
|
||||
STRING_AGG(id::text, ', ' ORDER BY id::text) FILTER (WHERE id <> survivor_id) AS absorbed_ids
|
||||
FROM duplicates
|
||||
WHERE duplicate_count > 1
|
||||
GROUP BY warehouse_id, warehouse_name, product_id, product_name, area_name, location_name, project_flock_kandang_id, survivor_id, total_qty, duplicate_count
|
||||
GROUP BY warehouse_id, warehouse_name, product_id, product_name, area_name, location_name, survivor_id, total_qty, duplicate_count
|
||||
ORDER BY area_name, location_name, warehouse_name, product_name
|
||||
`, filters)
|
||||
|
||||
@@ -244,6 +244,19 @@ func applyConsolidation(ctx context.Context, db *gorm.DB, groups []duplicateGrou
|
||||
return fmt.Errorf("update survivor qty: %w", res.Error)
|
||||
}
|
||||
|
||||
// Clear project_flock_kandang_id for LOKASI warehouse survivors
|
||||
if err := tx.WithContext(ctx).Exec(`
|
||||
UPDATE product_warehouses pw
|
||||
SET project_flock_kandang_id = NULL
|
||||
FROM warehouses w
|
||||
WHERE pw.warehouse_id = w.id
|
||||
AND pw.id = ?
|
||||
AND UPPER(w.type) = 'LOKASI'
|
||||
AND pw.project_flock_kandang_id IS NOT NULL
|
||||
`, group.SurvivorID).Error; err != nil {
|
||||
return fmt.Errorf("clear project_flock_kandang_id survivor %d: %w", group.SurvivorID, err)
|
||||
}
|
||||
|
||||
// Delete absorbed product_warehouses
|
||||
res = tx.WithContext(ctx).
|
||||
Table("product_warehouses").
|
||||
|
||||
Reference in New Issue
Block a user