Fix: Ambiguous column reference i link_tmodule_customers_to_hub (NOT EXISTS i stedet for NOT IN)
This commit is contained in:
parent
5e66ef6563
commit
808a8bb2ee
65
migrations/055_fix_tmodule_customer_linking.sql
Normal file
65
migrations/055_fix_tmodule_customer_linking.sql
Normal file
@ -0,0 +1,65 @@
|
||||
-- ============================================================================
|
||||
-- Migration 055: Fix ambiguous column reference i link_tmodule_customers_to_hub
|
||||
-- ============================================================================
|
||||
-- Retter SQL fejl hvor tmodule_id var ambiguous i subquery
|
||||
-- ============================================================================
|
||||
|
||||
DROP FUNCTION IF EXISTS link_tmodule_customers_to_hub();
|
||||
|
||||
CREATE OR REPLACE FUNCTION link_tmodule_customers_to_hub()
|
||||
RETURNS TABLE (
|
||||
tmodule_id INTEGER,
|
||||
tmodule_name TEXT,
|
||||
hub_id INTEGER,
|
||||
hub_name TEXT,
|
||||
action TEXT
|
||||
) AS $$
|
||||
BEGIN
|
||||
RETURN QUERY
|
||||
WITH economic_matches AS (
|
||||
-- Prioriter economic_customer_number match (mest præcis)
|
||||
SELECT
|
||||
tc.id as tmodule_id,
|
||||
tc.name::TEXT as tmodule_name,
|
||||
c.id as hub_id,
|
||||
c.name::TEXT as hub_name,
|
||||
'economic_number_match'::TEXT as action
|
||||
FROM tmodule_customers tc
|
||||
JOIN customers c ON tc.economic_customer_number = c.economic_customer_number
|
||||
WHERE tc.hub_customer_id IS NULL
|
||||
AND tc.economic_customer_number IS NOT NULL
|
||||
AND c.economic_customer_number IS NOT NULL
|
||||
),
|
||||
name_matches AS (
|
||||
-- Fallback til navn match for kunder uden economic nummer
|
||||
SELECT
|
||||
tc.id as tmodule_id,
|
||||
tc.name::TEXT as tmodule_name,
|
||||
c.id as hub_id,
|
||||
c.name::TEXT as hub_name,
|
||||
'name_match'::TEXT as action
|
||||
FROM tmodule_customers tc
|
||||
JOIN customers c ON LOWER(TRIM(tc.name)) = LOWER(TRIM(c.name))
|
||||
WHERE tc.hub_customer_id IS NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM economic_matches em WHERE em.tmodule_id = tc.id)
|
||||
),
|
||||
all_matches AS (
|
||||
SELECT * FROM economic_matches
|
||||
UNION ALL
|
||||
SELECT * FROM name_matches
|
||||
),
|
||||
updates AS (
|
||||
-- Opdater tmodule_customers med hub_customer_id
|
||||
UPDATE tmodule_customers tc
|
||||
SET hub_customer_id = m.hub_id,
|
||||
updated_at = CURRENT_TIMESTAMP
|
||||
FROM all_matches m
|
||||
WHERE tc.id = m.tmodule_id
|
||||
RETURNING tc.id, tc.name::TEXT, m.hub_id, m.hub_name, m.action
|
||||
)
|
||||
SELECT * FROM updates;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
COMMENT ON FUNCTION link_tmodule_customers_to_hub() IS
|
||||
'Linker tmodule_customers til Hub customers via economic_customer_number (prioritet) eller navn match (fallback). Fixed ambiguous column reference.';
|
||||
Loading…
Reference in New Issue
Block a user