Revert "Merge branch 'fix/implement-fifo-v2' into 'dev/fifo-v2'"

This reverts merge request !340
This commit is contained in:
Hafizh A. Y.
2026-02-27 09:37:03 +00:00
parent 915302c445
commit f6c88b773d
28 changed files with 163 additions and 1468 deletions
@@ -10,11 +10,6 @@ type FifoStockV2Service = fifoStockV2.Service
type FifoStockV2Lane = fifoStockV2.Lane
const (
FifoStockV2LaneStockable FifoStockV2Lane = fifoStockV2.LaneStockable
FifoStockV2LaneUsable FifoStockV2Lane = fifoStockV2.LaneUsable
)
type FifoStockV2Ref = fifoStockV2.Ref
type FifoStockV2GatherRequest = fifoStockV2.GatherRequest
@@ -1,144 +0,0 @@
package service
import (
"context"
"strings"
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
"gorm.io/gorm"
)
type FifoStockV2RouteRule struct {
FlagGroupCode string `gorm:"column:flag_group_code"`
Lane string `gorm:"column:lane"`
FunctionCode string `gorm:"column:function_code"`
SourceTable string `gorm:"column:source_table"`
LegacyTypeKey string `gorm:"column:legacy_type_key"`
AllowPendingDefault bool `gorm:"column:allow_pending_default"`
}
func ResolveFifoStockV2RouteByProductIDAndLane(
ctx context.Context,
db *gorm.DB,
productID uint,
functionCode string,
lane FifoStockV2Lane,
) (*FifoStockV2RouteRule, error) {
rows, err := resolveFifoStockV2RoutesByProductID(ctx, db, productID, functionCode, lane)
if err != nil {
return nil, err
}
if len(rows) == 0 {
return nil, nil
}
selected := rows[0]
return &selected, nil
}
func ResolveFifoStockV2RouteByProductWarehouseIDAndLane(
ctx context.Context,
db *gorm.DB,
productWarehouseID uint,
functionCode string,
lane FifoStockV2Lane,
) (*FifoStockV2RouteRule, error) {
rows, err := resolveFifoStockV2RoutesByProductWarehouseID(ctx, db, productWarehouseID, functionCode, lane)
if err != nil {
return nil, err
}
if len(rows) == 0 {
return nil, nil
}
selected := rows[0]
return &selected, nil
}
func resolveFifoStockV2RoutesByProductID(
ctx context.Context,
db *gorm.DB,
productID uint,
functionCode string,
lane FifoStockV2Lane,
) ([]FifoStockV2RouteRule, error) {
normalizedCode := strings.ToUpper(strings.TrimSpace(functionCode))
if db == nil || productID == 0 || normalizedCode == "" {
return []FifoStockV2RouteRule{}, nil
}
query := db.WithContext(ctx).
Table("fifo_stock_v2_route_rules rr").
Select("rr.flag_group_code, rr.lane, rr.function_code, rr.source_table, rr.legacy_type_key, rr.allow_pending_default").
Joins("JOIN fifo_stock_v2_flag_groups fg ON fg.code = rr.flag_group_code AND fg.is_active = TRUE").
Where("rr.is_active = TRUE").
Where("rr.function_code = ?", normalizedCode).
Where(`
EXISTS (
SELECT 1
FROM flags f
JOIN fifo_stock_v2_flag_members fm ON fm.flag_name = f.name AND fm.is_active = TRUE
WHERE f.flagable_type = ?
AND f.flagable_id = ?
AND fm.flag_group_code = rr.flag_group_code
)
`, entity.FlagableTypeProduct, productID)
if lane == FifoStockV2LaneStockable || lane == FifoStockV2LaneUsable {
query = query.Where("rr.lane = ?", string(lane))
}
var rows []FifoStockV2RouteRule
err := query.
Order("CASE WHEN rr.source_table = 'adjustment_stocks' THEN 0 ELSE 1 END ASC").
Order("rr.id ASC").
Find(&rows).Error
if err != nil {
return nil, err
}
return rows, nil
}
func resolveFifoStockV2RoutesByProductWarehouseID(
ctx context.Context,
db *gorm.DB,
productWarehouseID uint,
functionCode string,
lane FifoStockV2Lane,
) ([]FifoStockV2RouteRule, error) {
normalizedCode := strings.ToUpper(strings.TrimSpace(functionCode))
if db == nil || productWarehouseID == 0 || normalizedCode == "" {
return []FifoStockV2RouteRule{}, nil
}
query := db.WithContext(ctx).
Table("fifo_stock_v2_route_rules rr").
Select("rr.flag_group_code, rr.lane, rr.function_code, rr.source_table, rr.legacy_type_key, rr.allow_pending_default").
Joins("JOIN fifo_stock_v2_flag_groups fg ON fg.code = rr.flag_group_code AND fg.is_active = TRUE").
Where("rr.is_active = TRUE").
Where("rr.function_code = ?", normalizedCode).
Where(`
EXISTS (
SELECT 1
FROM product_warehouses pw
JOIN flags f ON f.flagable_type = ? AND f.flagable_id = pw.product_id
JOIN fifo_stock_v2_flag_members fm ON fm.flag_name = f.name AND fm.is_active = TRUE
WHERE pw.id = ?
AND fm.flag_group_code = rr.flag_group_code
)
`, entity.FlagableTypeProduct, productWarehouseID)
if lane == FifoStockV2LaneStockable || lane == FifoStockV2LaneUsable {
query = query.Where("rr.lane = ?", string(lane))
}
var rows []FifoStockV2RouteRule
err := query.
Order("CASE WHEN rr.source_table = 'adjustment_stocks' THEN 0 ELSE 1 END ASC").
Order("rr.id ASC").
Find(&rows).Error
if err != nil {
return nil, err
}
return rows, nil
}