Punching, Dedupe and CutOff Features Done
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
-- Parameterized, base-table-only queries for /rundedupe.
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT '
|
||||
'to_char(mo.cutoffon, ''YYYY-MM-DD HH24:MI:SS.US'') AS cutoff_key, '
|
||||
'to_char(mo.cutoffon, ''DD-Mon-YYYY HH12:MI:SS AM'') AS cutoffon, '
|
||||
'SUM(c.rv) + SUM(c.ov) + SUM(c.pv) AS totaddr, COUNT(*) AS totcase, '
|
||||
'CASE WHEN mo.islocked <> ? AND mo.islocked > 0 THEN 1 ELSE 0 END AS islocked, '
|
||||
'COALESCE(NULLIF(mo.lockedbyuser, ''''), ''None'') AS lockedby, '
|
||||
'mo.islocked AS lock_owner_id '
|
||||
'FROM main c JOIN main_operations mo ON mo.case_id = c.case_id '
|
||||
'WHERE c.isdeleted = 0 AND mo.sdone = 0 '
|
||||
'AND (mo.dedcutby IS NULL OR mo.dedcutby = 0) AND mo.cutoffby > 0 '
|
||||
'AND (mo.earlier = 1 OR mo.negative = 1) '
|
||||
'AND ((mo.earlierby IS NULL OR mo.earlierby = 0) '
|
||||
'OR (mo.negativeby IS NULL OR mo.negativeby = 0)) '
|
||||
'AND c.company_id = ? AND c.branch_id = ? '
|
||||
'GROUP BY mo.cutoffon, mo.islocked, mo.lockedbyuser '
|
||||
'ORDER BY mo.cutoffon DESC, mo.islocked',
|
||||
ismigrated = true
|
||||
WHERE query_id = 41;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT '
|
||||
'to_char(mo.cutoffon, ''YYYY-MM-DD HH24:MI:SS.US'') AS cutoff_key, '
|
||||
'mo.islocked AS lock_owner_id, c.mvcode, c.applno, c.customername, c.apptype, '
|
||||
'c.rv AS totrv, c.ov AS totov, c.pv AS totpv, '
|
||||
'CASE WHEN mo.islocked <> ? AND mo.islocked > 0 THEN 1 ELSE 0 END AS islocked, '
|
||||
'COALESCE(NULLIF(mo.lockedbyuser, ''''), ''None'') AS lockedby, '
|
||||
'c.uuid::text AS uuid, '
|
||||
'CASE WHEN mo.negative = 1 AND (mo.negativeby IS NULL OR mo.negativeby = 0) '
|
||||
'THEN ''Y'' ELSE ''N'' END AS negative, '
|
||||
'CASE WHEN mo.earlier = 1 AND (mo.earlierby IS NULL OR mo.earlierby = 0) '
|
||||
'THEN ''Y'' ELSE ''N'' END AS earlier '
|
||||
'FROM main c JOIN main_operations mo ON mo.case_id = c.case_id '
|
||||
'WHERE c.isdeleted = 0 AND mo.sdone = 0 '
|
||||
'AND (mo.dedcutby IS NULL OR mo.dedcutby = 0) AND mo.cutoffby > 0 '
|
||||
'AND (mo.earlier = 1 OR mo.negative = 1) '
|
||||
'AND ((mo.earlierby IS NULL OR mo.earlierby = 0) '
|
||||
'OR (mo.negativeby IS NULL OR mo.negativeby = 0)) '
|
||||
'AND c.company_id = ? AND c.branch_id = ? '
|
||||
'ORDER BY mo.cutoffon DESC, mo.islocked, c.mvcode',
|
||||
ismigrated = true
|
||||
WHERE query_id = 42;
|
||||
@@ -0,0 +1,89 @@
|
||||
-- Introduce the integer relationship without breaking legacy UUID-based writers.
|
||||
ALTER TABLE public.main_operations
|
||||
ADD COLUMN IF NOT EXISTS case_id integer;
|
||||
|
||||
UPDATE public.main_operations mo
|
||||
SET case_id = m.case_id
|
||||
FROM public.main m
|
||||
WHERE mo.case_id IS NULL
|
||||
AND m.uuid::text = mo.uuid::text;
|
||||
|
||||
DO $migration$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM public.main_operations WHERE case_id IS NULL) THEN
|
||||
RAISE EXCEPTION 'Cannot migrate main_operations.case_id: unresolved UUID rows exist';
|
||||
END IF;
|
||||
END
|
||||
$migration$;
|
||||
|
||||
CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS ux_main_operations_case_id
|
||||
ON public.main_operations (case_id);
|
||||
|
||||
CREATE OR REPLACE FUNCTION public.sync_main_operations_case_id()
|
||||
RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $function$
|
||||
BEGIN
|
||||
IF NEW.case_id IS NULL
|
||||
OR (TG_OP = 'UPDATE' AND NEW.uuid IS DISTINCT FROM OLD.uuid) THEN
|
||||
SELECT m.case_id INTO NEW.case_id
|
||||
FROM public.main m
|
||||
WHERE m.uuid::text = NEW.uuid::text;
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END
|
||||
$function$;
|
||||
|
||||
DROP TRIGGER IF EXISTS trg_main_operations_case_id ON public.main_operations;
|
||||
CREATE TRIGGER trg_main_operations_case_id
|
||||
BEFORE INSERT OR UPDATE OF uuid ON public.main_operations
|
||||
FOR EACH ROW EXECUTE FUNCTION public.sync_main_operations_case_id();
|
||||
|
||||
DO $migration$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_constraint
|
||||
WHERE conrelid = 'public.main_operations'::regclass
|
||||
AND conname = 'fk_main_operations_case_id'
|
||||
) THEN
|
||||
ALTER TABLE public.main_operations
|
||||
ADD CONSTRAINT fk_main_operations_case_id
|
||||
FOREIGN KEY (case_id) REFERENCES public.main(case_id)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE NOT VALID;
|
||||
END IF;
|
||||
END
|
||||
$migration$;
|
||||
|
||||
ALTER TABLE public.main_operations
|
||||
VALIDATE CONSTRAINT fk_main_operations_case_id;
|
||||
|
||||
DO $migration$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_constraint
|
||||
WHERE conrelid = 'public.main_operations'::regclass
|
||||
AND conname = 'ck_main_operations_case_id_not_null'
|
||||
) THEN
|
||||
ALTER TABLE public.main_operations
|
||||
ADD CONSTRAINT ck_main_operations_case_id_not_null
|
||||
CHECK (case_id IS NOT NULL) NOT VALID;
|
||||
END IF;
|
||||
END
|
||||
$migration$;
|
||||
|
||||
ALTER TABLE public.main_operations
|
||||
VALIDATE CONSTRAINT ck_main_operations_case_id_not_null;
|
||||
|
||||
ALTER TABLE public.main_operations
|
||||
ALTER COLUMN case_id SET NOT NULL;
|
||||
|
||||
ALTER TABLE public.main_operations
|
||||
DROP CONSTRAINT ck_main_operations_case_id_not_null;
|
||||
|
||||
-- Switch /rundedupe from the compatibility UUID relationship to the integer key.
|
||||
UPDATE platform.application_query
|
||||
SET query_text = replace(
|
||||
query_text,
|
||||
'JOIN main_operations mo ON mo.uuid::text = c.uuid::text',
|
||||
'JOIN main_operations mo ON mo.case_id = c.case_id')
|
||||
WHERE query_id IN (41, 42, 53, 446);
|
||||
@@ -0,0 +1,36 @@
|
||||
-- Parameterized, tenant-scoped, base-table queries for /dodedupe.
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT DISTINCT c.portfolio_id AS value, p.portname AS label, '
|
||||
'''portfolio.'' AS "group" '
|
||||
'FROM main c '
|
||||
'JOIN main_operations mo ON mo.uuid::text = c.uuid::text '
|
||||
'JOIN portfolio p ON p.portfolio_id = c.portfolio_id '
|
||||
'WHERE c.isdeleted = 0 AND mo.sdone = 0 '
|
||||
'AND (mo.dedcutby IS NULL OR mo.dedcutby = 0) '
|
||||
'AND ((mo.earlierby > 0 AND mo.earlier = 1) OR mo.earlier = 0) '
|
||||
'AND ((mo.negativeby > 0 AND mo.negative = 1) OR mo.negative = 0) '
|
||||
'AND (mo.earlier = 1 OR mo.negative = 1) '
|
||||
'AND c.company_id = ? AND c.branch_id = ? '
|
||||
'ORDER BY p.portname'
|
||||
WHERE query_id = 446;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT c.uuid::text AS document_case_id, '
|
||||
'c.portfolio_id, c.mvcode AS mv_code, c.applno AS file_number, '
|
||||
'c.customername AS customer_name, c.apptype AS application_type, '
|
||||
'c.rv AS residence_visits, c.ov AS office_visits, c.pv AS property_visits, '
|
||||
'to_char(c.receivedate, ''DD/MM/YYYY'') AS received_on, '
|
||||
'CASE WHEN COALESCE(c.rv, 0) + COALESCE(c.ov, 0) + COALESCE(c.pv, 0) = '
|
||||
'COALESCE(mo.rvdone, 0) + COALESCE(mo.ovdone, 0) + COALESCE(mo.pvdone, 0) '
|
||||
'THEN ''Y'' ELSE ''N'' END AS done '
|
||||
'FROM main c JOIN main_operations mo ON mo.uuid::text = c.uuid::text '
|
||||
'WHERE c.isdeleted = 0 AND mo.sdone = 0 AND c.portfolio_id = ? '
|
||||
'AND (mo.dedcutby IS NULL OR mo.dedcutby = 0) '
|
||||
'AND ((mo.earlierby > 0 AND mo.earlier = 1) OR mo.earlier = 0) '
|
||||
'AND ((mo.negativeby > 0 AND mo.negative = 1) OR mo.negative = 0) '
|
||||
'AND (mo.earlier = 1 OR mo.negative = 1) '
|
||||
'AND c.company_id = ? AND c.branch_id = ? '
|
||||
'ORDER BY done DESC, c.applno, c.apptype'
|
||||
WHERE query_id = 53;
|
||||
@@ -0,0 +1,14 @@
|
||||
-- Scoped, parameterized query used by POST /checkdedupe.
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT CASE WHEN EXISTS ('
|
||||
'SELECT 1 FROM main c JOIN main_operations mo ON mo.case_id = c.case_id '
|
||||
'WHERE c.uuid::text = ? AND c.isdeleted = 0 AND mo.sdone = 0 '
|
||||
'AND c.company_id = ? AND c.branch_id = ?) '
|
||||
'THEN dedupebyuuid_with_user(?, ?, ''Y'', ?, ?, ?) ELSE ''failed:Access denied'' END AS result',
|
||||
ismigrated = true
|
||||
WHERE query_id = 43;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET ismigrated = true
|
||||
WHERE query_id IN (41, 42);
|
||||
@@ -0,0 +1,170 @@
|
||||
BEGIN;
|
||||
|
||||
ALTER TABLE public.main
|
||||
ADD COLUMN IF NOT EXISTS addedbyuser text,
|
||||
ADD COLUMN IF NOT EXISTS lasteditedbyuser text;
|
||||
|
||||
ALTER TABLE public.main_operations
|
||||
ADD COLUMN IF NOT EXISTS cutoffbyuser text,
|
||||
ADD COLUMN IF NOT EXISTS allocatedbyuser text,
|
||||
ADD COLUMN IF NOT EXISTS dedcutbyuser text,
|
||||
ADD COLUMN IF NOT EXISTS earlierbyuser text,
|
||||
ADD COLUMN IF NOT EXISTS negativebyuser text,
|
||||
ADD COLUMN IF NOT EXISTS oprsendbyuser text,
|
||||
ADD COLUMN IF NOT EXISTS lockedbyuser text;
|
||||
|
||||
ALTER TABLE public.caseedit_history
|
||||
ADD COLUMN IF NOT EXISTS operationbyuser text;
|
||||
|
||||
CREATE OR REPLACE FUNCTION public.save_application_details_with_user(
|
||||
p_application jsonb,
|
||||
p_company_id smallint,
|
||||
p_branch_id smallint,
|
||||
p_user_id smallint,
|
||||
p_user_name text
|
||||
)
|
||||
RETURNS TABLE(operation text, application_id integer, mv_code text, internal_uuid text)
|
||||
LANGUAGE plpgsql
|
||||
SECURITY DEFINER
|
||||
SET search_path = public, pg_temp
|
||||
AS $function$
|
||||
DECLARE
|
||||
v_result record;
|
||||
BEGIN
|
||||
SELECT * INTO STRICT v_result
|
||||
FROM public.save_application_details(
|
||||
p_application, p_company_id, p_branch_id, p_user_id);
|
||||
|
||||
UPDATE public.main
|
||||
SET addedbyuser = CASE
|
||||
WHEN v_result.operation = 'INSERT' OR addedbyuser IS NULL THEN p_user_name
|
||||
ELSE addedbyuser
|
||||
END,
|
||||
lasteditedbyuser = CASE
|
||||
WHEN v_result.operation = 'UPDATE' THEN p_user_name
|
||||
ELSE lasteditedbyuser
|
||||
END
|
||||
WHERE case_id = v_result.application_id
|
||||
AND company_id = p_company_id
|
||||
AND branch_id = p_branch_id;
|
||||
|
||||
UPDATE public.main_operations
|
||||
SET cutoffbyuser = CASE WHEN cutoffby = p_user_id THEN p_user_name ELSE cutoffbyuser END,
|
||||
allocatedbyuser = CASE WHEN allocatedby = p_user_id THEN p_user_name ELSE allocatedbyuser END,
|
||||
earlierbyuser = CASE WHEN earlierby = p_user_id THEN p_user_name ELSE earlierbyuser END,
|
||||
negativebyuser = CASE WHEN negativeby = p_user_id THEN p_user_name ELSE negativebyuser END,
|
||||
oprsendbyuser = CASE WHEN oprsendby = p_user_id THEN p_user_name ELSE oprsendbyuser END,
|
||||
lockedbyuser = CASE WHEN islocked = p_user_id THEN p_user_name ELSE lockedbyuser END
|
||||
WHERE case_id = v_result.application_id
|
||||
AND company_id = p_company_id
|
||||
AND branch_id = p_branch_id;
|
||||
|
||||
UPDATE public.caseedit_history
|
||||
SET operationbyuser = p_user_name
|
||||
WHERE uuid = v_result.internal_uuid
|
||||
AND user_id = p_user_id
|
||||
AND operationbyuser IS NULL;
|
||||
|
||||
RETURN QUERY SELECT v_result.operation::text, v_result.application_id::integer,
|
||||
v_result.mv_code::text, v_result.internal_uuid::text;
|
||||
END;
|
||||
$function$;
|
||||
|
||||
CREATE OR REPLACE FUNCTION public.dedupebyuuid_with_user(
|
||||
p_unique_id text,
|
||||
p_operation integer,
|
||||
p_to_be_processed text,
|
||||
p_dedupe_check_time text,
|
||||
p_user_id integer,
|
||||
p_user_name text
|
||||
)
|
||||
RETURNS text
|
||||
LANGUAGE plpgsql
|
||||
SECURITY DEFINER
|
||||
SET search_path = public, pg_temp
|
||||
AS $function$
|
||||
DECLARE
|
||||
v_result text;
|
||||
BEGIN
|
||||
v_result := public.dedupebyuuid(
|
||||
p_unique_id, p_operation, p_to_be_processed, p_dedupe_check_time, p_user_id);
|
||||
|
||||
IF v_result LIKE 'success:%' THEN
|
||||
UPDATE public.main_operations
|
||||
SET earlierbyuser = CASE WHEN p_operation = 1 THEN p_user_name ELSE earlierbyuser END,
|
||||
negativebyuser = CASE WHEN p_operation = 2 THEN p_user_name ELSE negativebyuser END
|
||||
WHERE uuid = p_unique_id;
|
||||
END IF;
|
||||
RETURN v_result;
|
||||
END;
|
||||
$function$;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'procedure!C0L!select * from public.save_application_details_with_user('
|
||||
'?::jsonb,?::smallint,?::smallint,?::smallint,?::text)',
|
||||
ismigrated = true,
|
||||
updated_at = clock_timestamp()
|
||||
WHERE query_key = 'APPLICATION_SAVE';
|
||||
|
||||
DELETE FROM platform.application_query
|
||||
WHERE query_id = 3092
|
||||
AND query_key IS NULL;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT to_char(mo.cutoffon, ''YYYY-MM-DD HH24:MI:SS.US'') AS cutoff_key, '
|
||||
'to_char(mo.cutoffon, ''DD-Mon-YYYY HH12:MI:SS AM'') AS cutoffon, '
|
||||
'SUM(c.rv) + SUM(c.ov) + SUM(c.pv) AS totaddr, COUNT(*) AS totcase, '
|
||||
'CASE WHEN mo.islocked <> ? AND mo.islocked > 0 THEN 1 ELSE 0 END AS islocked, '
|
||||
'COALESCE(NULLIF(mo.lockedbyuser, ''''), ''None'') AS lockedby, '
|
||||
'mo.islocked AS lock_owner_id FROM main c '
|
||||
'JOIN main_operations mo ON mo.case_id = c.case_id '
|
||||
'WHERE c.isdeleted = 0 AND mo.sdone = 0 '
|
||||
'AND (mo.dedcutby IS NULL OR mo.dedcutby = 0) AND mo.cutoffby > 0 '
|
||||
'AND (mo.earlier = 1 OR mo.negative = 1) '
|
||||
'AND ((mo.earlierby IS NULL OR mo.earlierby = 0) '
|
||||
'OR (mo.negativeby IS NULL OR mo.negativeby = 0)) '
|
||||
'AND c.company_id = ? AND c.branch_id = ? '
|
||||
'GROUP BY mo.cutoffon, mo.islocked, mo.lockedbyuser '
|
||||
'ORDER BY mo.cutoffon DESC, mo.islocked',
|
||||
ismigrated = true,
|
||||
updated_at = clock_timestamp()
|
||||
WHERE query_id = 41;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT to_char(mo.cutoffon, ''YYYY-MM-DD HH24:MI:SS.US'') AS cutoff_key, '
|
||||
'mo.islocked AS lock_owner_id, c.mvcode, c.applno, c.customername, c.apptype, '
|
||||
'c.rv AS totrv, c.ov AS totov, c.pv AS totpv, '
|
||||
'CASE WHEN mo.islocked <> ? AND mo.islocked > 0 THEN 1 ELSE 0 END AS islocked, '
|
||||
'COALESCE(NULLIF(mo.lockedbyuser, ''''), ''None'') AS lockedby, c.uuid::text AS uuid, '
|
||||
'CASE WHEN mo.negative = 1 AND (mo.negativeby IS NULL OR mo.negativeby = 0) '
|
||||
'THEN ''Y'' ELSE ''N'' END AS negative, '
|
||||
'CASE WHEN mo.earlier = 1 AND (mo.earlierby IS NULL OR mo.earlierby = 0) '
|
||||
'THEN ''Y'' ELSE ''N'' END AS earlier '
|
||||
'FROM main c JOIN main_operations mo ON mo.case_id = c.case_id '
|
||||
'WHERE c.isdeleted = 0 AND mo.sdone = 0 '
|
||||
'AND (mo.dedcutby IS NULL OR mo.dedcutby = 0) AND mo.cutoffby > 0 '
|
||||
'AND (mo.earlier = 1 OR mo.negative = 1) '
|
||||
'AND ((mo.earlierby IS NULL OR mo.earlierby = 0) '
|
||||
'OR (mo.negativeby IS NULL OR mo.negativeby = 0)) '
|
||||
'AND c.company_id = ? AND c.branch_id = ? '
|
||||
'ORDER BY mo.cutoffon DESC, mo.islocked, c.mvcode',
|
||||
ismigrated = true,
|
||||
updated_at = clock_timestamp()
|
||||
WHERE query_id = 42;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT CASE WHEN EXISTS ('
|
||||
'SELECT 1 FROM main c JOIN main_operations mo ON mo.case_id = c.case_id '
|
||||
'WHERE c.uuid::text = ? AND c.isdeleted = 0 AND mo.sdone = 0 '
|
||||
'AND c.company_id = ? AND c.branch_id = ?) '
|
||||
'THEN dedupebyuuid_with_user(?, ?, ''Y'', ?, ?, ?) '
|
||||
'ELSE ''failed:Access denied'' END AS result',
|
||||
ismigrated = true,
|
||||
updated_at = clock_timestamp()
|
||||
WHERE query_id = 43;
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,68 @@
|
||||
BEGIN;
|
||||
|
||||
ALTER TABLE public.main_operations
|
||||
ADD COLUMN IF NOT EXISTS allocatedbyuser text,
|
||||
ADD COLUMN IF NOT EXISTS oprsendbyuser text;
|
||||
|
||||
ALTER TABLE public.caseedit_history
|
||||
ADD COLUMN IF NOT EXISTS operationbyuser text;
|
||||
|
||||
CREATE OR REPLACE FUNCTION public.save_application_details_with_user(
|
||||
p_application jsonb,
|
||||
p_company_id smallint,
|
||||
p_branch_id smallint,
|
||||
p_user_id smallint,
|
||||
p_user_name text
|
||||
)
|
||||
RETURNS TABLE(operation text, application_id integer, mv_code text, internal_uuid text)
|
||||
LANGUAGE plpgsql
|
||||
SECURITY DEFINER
|
||||
SET search_path = public, pg_temp
|
||||
AS $function$
|
||||
DECLARE
|
||||
v_result record;
|
||||
BEGIN
|
||||
SELECT * INTO STRICT v_result
|
||||
FROM public.save_application_details(
|
||||
p_application, p_company_id, p_branch_id, p_user_id);
|
||||
|
||||
UPDATE public.main
|
||||
SET addedbyuser = CASE
|
||||
WHEN v_result.operation = 'INSERT' OR addedbyuser IS NULL THEN p_user_name
|
||||
ELSE addedbyuser
|
||||
END,
|
||||
lasteditedbyuser = CASE
|
||||
WHEN v_result.operation = 'UPDATE' THEN p_user_name
|
||||
ELSE lasteditedbyuser
|
||||
END
|
||||
WHERE case_id = v_result.application_id
|
||||
AND company_id = p_company_id
|
||||
AND branch_id = p_branch_id;
|
||||
|
||||
UPDATE public.main_operations
|
||||
SET cutoffbyuser = CASE WHEN cutoffby = p_user_id THEN p_user_name ELSE cutoffbyuser END,
|
||||
allocatedbyuser = CASE WHEN allocatedby = p_user_id THEN p_user_name ELSE allocatedbyuser END,
|
||||
earlierbyuser = CASE WHEN earlierby = p_user_id THEN p_user_name ELSE earlierbyuser END,
|
||||
negativebyuser = CASE WHEN negativeby = p_user_id THEN p_user_name ELSE negativebyuser END,
|
||||
oprsendbyuser = CASE WHEN oprsendby = p_user_id THEN p_user_name ELSE oprsendbyuser END,
|
||||
lockedbyuser = CASE WHEN islocked = p_user_id THEN p_user_name ELSE lockedbyuser END
|
||||
WHERE case_id = v_result.application_id
|
||||
AND company_id = p_company_id
|
||||
AND branch_id = p_branch_id;
|
||||
|
||||
UPDATE public.caseedit_history
|
||||
SET operationbyuser = p_user_name
|
||||
WHERE uuid = v_result.internal_uuid
|
||||
AND user_id = p_user_id
|
||||
AND operationbyuser IS NULL;
|
||||
|
||||
RETURN QUERY SELECT v_result.operation::text, v_result.application_id::integer,
|
||||
v_result.mv_code::text, v_result.internal_uuid::text;
|
||||
END;
|
||||
$function$;
|
||||
|
||||
DELETE FROM platform.application_query
|
||||
WHERE query_id = 3092
|
||||
AND query_key IS NULL;
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,60 @@
|
||||
-- Parameterized, tenant-scoped Cut-Off workflow queries. Views and app_user joins are intentionally avoided.
|
||||
UPDATE platform.application_query SET query_text =
|
||||
'update!C0L!UPDATE main_operations mo SET cutoffon=?::timestamp, islocked=?, lockedbyuser=? FROM main m WHERE m.case_id=mo.case_id AND m.isdeleted=0 AND mo.sdone=0 AND (mo.cutoffby IS NULL OR mo.cutoffby=0) AND m.addedby<>0 AND m.company_id=? AND m.branch_id=? AND (mo.islocked=0 OR mo.islocked=?)', ismigrated=true WHERE query_id=17;
|
||||
|
||||
UPDATE platform.application_query SET query_text =
|
||||
'select!C0L!SELECT m.portfolio_id, p.portname||'' <b>(''||count(*)||'')</b>'' portname, CASE WHEN sum(mo.allocation)<=0 THEN -1 ELSE 1 END allocation, CASE WHEN sum(mo.sms)<=0 THEN -1 ELSE 1 END sms, CASE WHEN sum(mo.telesheet)>=1 THEN 1 ELSE 0 END telesheet, CASE WHEN sum(mo.earlier)<=0 THEN -1 ELSE 1 END earlier, CASE WHEN sum(mo.negative)<=0 THEN -1 ELSE 1 END negative, CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked, coalesce(mo.lockedbyuser,'''') lockedby FROM main m JOIN main_operations mo ON mo.case_id=m.case_id JOIN portfolio p ON p.portfolio_id=m.portfolio_id WHERE m.isdeleted=0 AND mo.sdone=0 AND (mo.cutoffby IS NULL OR mo.cutoffby=0) AND m.addedby<>0 AND m.company_id=? AND m.branch_id=? GROUP BY m.portfolio_id,p.portname,mo.islocked,mo.lockedbyuser ORDER BY p.portname', ismigrated=true WHERE query_id=18;
|
||||
|
||||
UPDATE platform.application_query SET query_text =
|
||||
'update!C0L!UPDATE main_operations mo SET allocation=CASE WHEN x.selected THEN x.allocation ELSE mo.allocation END,sms=CASE WHEN x.selected THEN x.sms ELSE mo.sms END,smsby=CASE WHEN x.selected AND x.sms<0 THEN x.user_id ELSE mo.smsby END,telesheet=CASE WHEN x.selected THEN CASE WHEN mo.telesheet=0 THEN 0 ELSE x.telesheet END ELSE mo.telesheet END,telesheetby=CASE WHEN x.selected AND x.telesheet<0 THEN x.user_id ELSE mo.telesheetby END,earlier=CASE WHEN x.selected THEN x.earlier ELSE mo.earlier END,earlierby=CASE WHEN x.selected AND x.earlier<0 THEN x.user_id ELSE mo.earlierby END,negative=CASE WHEN x.selected THEN x.negative ELSE mo.negative END,negativeby=CASE WHEN x.selected AND x.negative<0 THEN x.user_id ELSE mo.negativeby END,cutoffby=CASE WHEN x.selected THEN x.user_id ELSE mo.cutoffby END,cutoffbyuser=CASE WHEN x.selected THEN x.audit_user ELSE mo.cutoffbyuser END,islocked=0,lockedbyuser=NULL,batch=CASE WHEN x.selected THEN x.batch ELSE mo.batch END,cutoffon=CASE WHEN x.selected THEN mo.cutoffon ELSE NULL END FROM main m,(SELECT ?::boolean selected,?::smallint allocation,?::smallint sms,?::smallint telesheet,?::smallint earlier,?::smallint negative,?::integer user_id,?::text audit_user,?::text batch) x WHERE m.case_id=mo.case_id AND m.company_id=? AND m.branch_id=? AND m.portfolio_id=? AND mo.cutoffon=?::timestamp AND mo.islocked=? AND (mo.cutoffby IS NULL OR mo.cutoffby=0)', ismigrated=true WHERE query_id=26;
|
||||
|
||||
UPDATE platform.application_query SET query_text =
|
||||
'update!C0L!UPDATE main_operations mo SET islocked=?, lockedbyuser=? FROM main m WHERE m.case_id=mo.case_id AND m.isdeleted=0 AND mo.sdone=0 AND mo.cutoffby>0 AND (mo.islocked=0 OR mo.islocked=?) AND coalesce(mo.allocatedby,0)=0 AND m.company_id=? AND m.branch_id=? AND mo.allocation=1', ismigrated=true WHERE query_id=27;
|
||||
|
||||
UPDATE platform.application_query SET query_text =
|
||||
'select!C0L!SELECT m.portfolio_id,p.portname||'' <b>(''||count(*)||'')</b>'' portname,sum(m.rv) rv,sum(m.ov) ov,sum(m.pv) pv,CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,mo.allocation,coalesce(mo.lockedbyuser,'''') lockedby FROM main m JOIN main_operations mo ON mo.case_id=m.case_id JOIN portfolio p ON p.portfolio_id=m.portfolio_id WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.allocatedby,0)=0 AND mo.cutoffby>0 AND m.company_id=? AND m.branch_id=? AND mo.allocation=1 AND (m.rv=1 OR m.ov=1 OR m.pv=1) GROUP BY m.portfolio_id,p.portname,mo.islocked,mo.allocation,mo.lockedbyuser ORDER BY p.portname', ismigrated=true WHERE query_id=28;
|
||||
|
||||
UPDATE platform.application_query SET query_text =
|
||||
'select!C0L!SELECT m.portfolio_id,m.mvcode,m.applno,m.customername,m.apptype,m.rv,m.ov,m.pv,CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,coalesce(mo.lockedbyuser,'''') lockedby,mo.allocation,m.rcolony,m.ocolony,m.pcolony,m.uuid,p."group" portgroup FROM main m JOIN main_operations mo ON mo.case_id=m.case_id JOIN portfolio p ON p.portfolio_id=m.portfolio_id WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.allocatedby,0)=0 AND mo.cutoffby>0 AND mo.islocked=? AND m.company_id=? AND m.branch_id=? AND mo.allocation=1 AND (m.rv=1 OR m.ov=1 OR m.pv=1) ORDER BY m.portfolio_id,m.applno,m.apptype', ismigrated=true WHERE query_id=29;
|
||||
|
||||
UPDATE platform.application_query SET query_text='procedure!C0L!SELECT CASE WHEN EXISTS (SELECT 1 FROM main m WHERE m.uuid::text=x.uniqueid AND m.company_id=x.companyid AND m.branch_id=x.branchid AND m.portfolio_id=x.portfolioid AND m.isdeleted=0) THEN allocatecase(x.uniqueid,x.selected,x.rv,x.ov,x.pv,x.rcolony,x.ocolony,x.pcolony,x.processedon,x.companyid,x.branchid,x.portfolioid,x.portgroup) ELSE ''error:Access denied'' END FROM (SELECT ?::text uniqueid,?::integer selected,?::integer rv,?::integer ov,?::integer pv,?::integer rcolony,?::integer ocolony,?::integer pcolony,?::text processedon,?::integer companyid,?::integer branchid,?::integer portfolioid,?::text portgroup) x', ismigrated=true WHERE query_id=30;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'update!C0L!UPDATE main_operations mo SET islocked=?, lockedbyuser=? FROM main m WHERE m.case_id=mo.case_id AND m.isdeleted=0 AND mo.sdone=0 AND mo.cutoffby>0 AND (mo.islocked=0 OR mo.islocked=?) AND coalesce(mo.telesheetby,0)=0 AND m.company_id=? AND m.branch_id=? AND mo.telesheet=1', ismigrated=true WHERE query_id=31;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'select!C0L!SELECT m.portfolio_id,p.portname||'' <b>(''||count(*)||'')</b>'' portname,sum(m.rtv) rtv,sum(m.otv) otv,sum(m.refv) refv,CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,mo.telesheet,coalesce(mo.lockedbyuser,'''') lockedby,pf.tsformat outputformat,pf.tsfunction outputfunction FROM main m JOIN main_operations mo ON mo.case_id=m.case_id JOIN portfolio p ON p.portfolio_id=m.portfolio_id JOIN process_formats pf ON pf.portfolio_id=m.portfolio_id WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.telesheetby,0)=0 AND mo.cutoffby>0 AND m.company_id=? AND m.branch_id=? AND mo.telesheet=1 AND (m.rtv>0 OR m.otv>0) GROUP BY m.portfolio_id,p.portname,mo.islocked,mo.telesheet,mo.lockedbyuser,pf.tsformat,pf.tsfunction ORDER BY p.portname', ismigrated=true WHERE query_id=32;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'select!C0L!SELECT m.portfolio_id,m.mvcode,m.applno,m.customername,m.apptype,m.rtv,m.otv,m.refv,CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,coalesce(mo.lockedbyuser,'''') lockedby,mo.telesheet,m.uuid FROM main m JOIN main_operations mo ON mo.case_id=m.case_id WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.telesheetby,0)=0 AND mo.cutoffby>0 AND mo.islocked=? AND m.company_id=? AND m.branch_id=? AND mo.telesheet=1 AND (m.rtv=1 OR m.otv=1) ORDER BY m.portfolio_id,m.applno,m.apptype', ismigrated=true WHERE query_id=33;
|
||||
|
||||
UPDATE platform.application_query SET query_text='update!C0L!UPDATE main_operations mo SET islocked=?, lockedbyuser=CASE WHEN ?>0 THEN ? ELSE NULL END,telesheeton=CASE WHEN ?>0 THEN ?::timestamp ELSE NULL END,telesheetby=? FROM main m WHERE m.case_id=mo.case_id AND m.uuid::text=? AND m.company_id=? AND m.branch_id=?', ismigrated=true WHERE query_id=34;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'update!C0L!UPDATE main_operations mo SET islocked=?, lockedbyuser=? FROM main m WHERE m.case_id=mo.case_id AND m.isdeleted=0 AND mo.sdone=0 AND mo.cutoffby>0 AND (mo.islocked=0 OR mo.islocked=?) AND coalesce(mo.oprsendby,0)=0 AND m.company_id=? AND m.branch_id=? AND mo.oprsend<>1 AND ((mo.allocation=1 AND mo.allocatedby>0) OR mo.allocation<>1) AND ((mo.telesheet=1 AND mo.telesheetby>0) OR mo.telesheet<>1)', ismigrated=true WHERE query_id=44;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'select!C0L!SELECT m.portfolio_id,p.portname||'' <b>(''||count(*)||'')</b>'' portname,sum(m.rv) rv,sum(m.ov) ov,sum(m.pv) pv,sum(m.rtv) rtv,sum(m.otv) otv,sum(m.refv) refv,CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,1 oprsend,coalesce(mo.lockedbyuser,'''') lockedby FROM main m JOIN main_operations mo ON mo.case_id=m.case_id JOIN portfolio p ON p.portfolio_id=m.portfolio_id WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.oprsendby,0)=0 AND mo.cutoffby>=0 AND m.company_id=? AND m.branch_id=? AND mo.oprsend<>1 AND ((mo.allocation=1 AND mo.allocatedby>0) OR mo.allocation<>1 OR (m.rv=0 AND m.ov=0 AND m.pv=0 AND mo.allocation=1)) AND ((mo.telesheet=1 AND mo.telesheetby>0) OR mo.telesheet<>1) AND (m.rv=1 OR m.ov=1 OR m.pv=1 OR m.rtv=1 OR m.otv=1) GROUP BY m.portfolio_id,p.portname,mo.islocked,mo.lockedbyuser ORDER BY p.portname', ismigrated=true WHERE query_id=45;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'select!C0L!SELECT m.portfolio_id,m.mvcode,m.applno,m.customername,m.apptype,m.rv,m.ov,m.pv,m.rtv,m.otv,m.refv,CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,coalesce(mo.lockedbyuser,'''') lockedby,1 oprsend,m.uuid FROM main m JOIN main_operations mo ON mo.case_id=m.case_id WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.oprsendby,0)=0 AND mo.cutoffby>0 AND mo.islocked=? AND m.company_id=? AND m.branch_id=? AND mo.oprsend<>1 AND ((mo.allocation=1 AND mo.allocatedby>0) OR mo.allocation<>1 OR (m.rv=0 AND m.ov=0 AND m.pv=0 AND mo.allocation=1)) AND ((mo.telesheet=1 AND mo.telesheetby>0) OR mo.telesheet<>1) AND (m.rv=1 OR m.ov=1 OR m.pv=1 OR m.rtv=1 OR m.otv=1) ORDER BY m.portfolio_id,m.applno,m.apptype', ismigrated=true WHERE query_id=46;
|
||||
|
||||
UPDATE platform.application_query SET query_text='procedure!C0L!SELECT CASE WHEN EXISTS (SELECT 1 FROM main m WHERE m.uuid::text=x.uniqueid::text AND m.company_id=x.companyid AND m.branch_id=x.branchid AND m.portfolio_id=x.portfolioid AND m.isdeleted=0) THEN sendtooperation(x.uniqueid,x.selected,x.processedon,x.userid,x.companyid,x.branchid,x.portfolioid) ELSE ''error:Access denied'' END FROM (SELECT ?::bpchar uniqueid,?::integer selected,?::bpchar processedon,?::integer userid,?::integer companyid,?::integer branchid,?::integer portfolioid) x', ismigrated=true WHERE query_id=47;
|
||||
|
||||
UPDATE platform.application_query SET query_text='insert!C0L!INSERT INTO app_documents (processtime,process,documenturl,branch_id) VALUES (?::timestamp,?,?,?)', ismigrated=true WHERE query_id=103;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'update!C0L!UPDATE main_operations mo SET islocked=?, lockedbyuser=? FROM main m WHERE m.case_id=mo.case_id AND m.isdeleted=0 AND mo.sdone=0 AND mo.cutoffby>0 AND (mo.islocked=0 OR mo.islocked=?) AND coalesce(mo.refsheetby,0)=0 AND m.company_id=? AND m.branch_id=? AND mo.refsheet=1', ismigrated=true WHERE query_id=216;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'select!C0L!SELECT m.portfolio_id,p.portname||'' <b>(''||count(*)||'')</b>'' portname,sum(m.refv) refv,CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,mo.refsheet,coalesce(mo.lockedbyuser,'''') lockedby,pf.refformat outputformat,pf.reffunction outputfunction FROM main m JOIN main_operations mo ON mo.case_id=m.case_id JOIN portfolio p ON p.portfolio_id=m.portfolio_id JOIN process_formats pf ON pf.portfolio_id=m.portfolio_id WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.refsheetby,0)=0 AND mo.cutoffby>0 AND m.company_id=? AND m.branch_id=? AND mo.refsheet=1 AND m.refv=1 GROUP BY m.portfolio_id,p.portname,mo.islocked,mo.refsheet,mo.lockedbyuser,pf.refformat,pf.reffunction ORDER BY p.portname', ismigrated=true WHERE query_id=217;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'select!C0L!SELECT m.portfolio_id,m.mvcode,m.applno,m.customername,m.apptype,m.refv,CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,coalesce(mo.lockedbyuser,'''') lockedby,mo.refsheet telesheet,m.uuid FROM main m JOIN main_operations mo ON mo.case_id=m.case_id WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.refsheetby,0)=0 AND mo.cutoffby>0 AND mo.islocked=? AND m.company_id=? AND m.branch_id=? AND mo.refsheet=1 AND m.refv=1 ORDER BY m.portfolio_id,m.applno,m.apptype', ismigrated=true WHERE query_id=218;
|
||||
|
||||
UPDATE platform.application_query SET query_text='update!C0L!UPDATE main_operations mo SET islocked=?, lockedbyuser=CASE WHEN ?>0 THEN ? ELSE NULL END,refsheeton=CASE WHEN ?>0 THEN ?::timestamp ELSE NULL END,refsheetby=? FROM main m WHERE m.case_id=mo.case_id AND m.uuid::text=? AND m.company_id=? AND m.branch_id=?', ismigrated=true WHERE query_id=219;
|
||||
|
||||
UPDATE platform.application_query SET query_text='select!C0L!SELECT CASE WHEN EXISTS (SELECT 1 FROM main WHERE uuid::text=? AND company_id=? AND branch_id=? AND isdeleted=0) THEN finalizepcases(?::text,?::text,?::integer,?::text) ELSE ''error:Access denied'' END result', ismigrated=true WHERE query_id=300;
|
||||
|
||||
UPDATE platform.application_query SET query_text=
|
||||
'select!C0L!SELECT x.uuid,x.fmvcode,x.applno,x.customername,x.apptype,x.visit,x.addr,x.city,x.pincode,x.phoneno,x.notes,''ver''||lower(x.verifiercode) verifier,x.portname,x.product,x.contactperson,to_char(x.allocationon,''YYYY/MM/DD HH24:MI:SS'') addedon,x.inittype,x.requiredphoto FROM (SELECT m.uuid,m.applno,m.product,p.portname,m.mvcode::text||''R'' fmvcode,replace(m.customername,''&'',''and'') customername,m.apptype,concat_ws('' '',m.raddr1,m.raddr2,m.raddr3) addr,m.rcity city,m.rpincode pincode,'''' phoneno,m.specialinst notes,v.verifiercode,mo.allocationon,m.branch_id,m.company_id,CASE WHEN mo.resrequiredphoto IN (1,2) THEN 1 WHEN mo.resrequiredphoto=3 THEN 0 ELSE mo.resrequiredphoto END requiredphoto,''R'' visit,CASE WHEN mo.resrequiredphoto>2 THEN ''T'' ELSE ''A'' END inittype,m.contactperson FROM main m JOIN main_operations mo ON mo.case_id=m.case_id LEFT JOIN verifier v ON m.resiverifier=v.verifier_id JOIN portfolio p ON p.portfolio_id=m.portfolio_id WHERE m.rv=1 AND mo.resphotosheetby=0 AND m.resiverifier>1 AND mo.resrequiredphoto<>-1 UNION ALL SELECT m.uuid,m.applno,m.product,p.portname,m.mvcode::text||''O'',replace(m.customername,''&'',''and''),m.apptype,concat_ws('' '',m.companyname,m.oaddr1,m.oaddr2,m.oaddr3),m.ocity,m.opincode,'''',m.specialinst,v.verifiercode,mo.allocationon,m.branch_id,m.company_id,CASE WHEN mo.offrequiredphoto IN (1,2) THEN 1 WHEN mo.offrequiredphoto=3 THEN 0 ELSE mo.offrequiredphoto END,''O'',CASE WHEN mo.offrequiredphoto>2 THEN ''T'' ELSE ''A'' END,m.contactperson FROM main m JOIN main_operations mo ON mo.case_id=m.case_id LEFT JOIN verifier v ON m.offverifier=v.verifier_id JOIN portfolio p ON p.portfolio_id=m.portfolio_id WHERE m.ov=1 AND mo.offphotosheetby=0 AND m.offverifier>1 AND mo.offrequiredphoto<>-1 UNION ALL SELECT m.uuid,m.applno,m.product,p.portname,m.mvcode::text||''P'',replace(m.customername,''&'',''and''),m.apptype,concat_ws('' '',m.paddr1,m.paddr2,m.paddr3),m.pcity,m.ppincode,'''',m.specialinst,v.verifiercode,mo.allocationon,m.branch_id,m.company_id,CASE WHEN mo.prorequiredphoto IN (1,2) THEN 1 WHEN mo.prorequiredphoto=3 THEN 0 ELSE mo.prorequiredphoto END,''P'',CASE WHEN mo.prorequiredphoto>2 THEN ''T'' ELSE ''A'' END,m.contactperson FROM main m JOIN main_operations mo ON mo.case_id=m.case_id LEFT JOIN verifier v ON m.propverifier=v.verifier_id JOIN portfolio p ON p.portfolio_id=m.portfolio_id WHERE m.pv=1 AND mo.prophotosheetby=0 AND m.propverifier>1 AND mo.prorequiredphoto<>-1) x WHERE x.company_id=? AND x.branch_id=? ORDER BY x.fmvcode', ismigrated=true WHERE query_id=303;
|
||||
@@ -0,0 +1,51 @@
|
||||
-- Remaining Dedupe endpoints: parameterized, tenant scoped, and free of legacy views.
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT m.uuid::text uuid,m.customername,m.mvcode,m.dob,m.mobileno mobile,'
|
||||
'upper(concat_ws('' '',m.raddr1,m.raddr2,m.raddr3)) resiaddress,'
|
||||
'upper(concat_ws('' '',m.companyname,m.oaddr1,m.oaddr2,m.oaddr3)) offaddress,'
|
||||
'm.rphone resiphone,m.ophone offphone,'
|
||||
'CASE WHEN m.category=''-1'' THEN ''NA'' ELSE upper(m.category) END category '
|
||||
'FROM main m WHERE m.uuid::text=? AND m.company_id=? AND m.branch_id=? AND m.isdeleted=0',
|
||||
ismigrated = true
|
||||
WHERE query_id = 54;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!WITH scoped AS ('
|
||||
'SELECT m.uuid::text uuid,m.case_id FROM main m '
|
||||
'WHERE m.uuid::text=? AND m.company_id=? AND m.branch_id=? AND m.isdeleted=0),'
|
||||
'removed AS (DELETE FROM dedupe d USING scoped s WHERE d.uuid=s.uuid),'
|
||||
'saved AS (INSERT INTO dedupe '
|
||||
'(uuid,earremarks,negremarks,earlier,negative,deduperunon,deduperunby) '
|
||||
'SELECT s.uuid,?,?,?,?,?::timestamp,? FROM scoped s RETURNING uuid),'
|
||||
'audited AS (UPDATE main_operations mo SET dedcutby=?,dedcutbyuser=?,dedcuton=?::timestamp '
|
||||
'FROM scoped s WHERE mo.case_id=s.case_id RETURNING mo.case_id) '
|
||||
'SELECT count(*)::integer result FROM saved',
|
||||
ismigrated = true
|
||||
WHERE query_id = 58;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT d.uuid,d.mvcode,d.applno,d.customername,d.apptype,d.product,'
|
||||
'd.earlier,d.negative,to_char(d.deduperunon,''dd/MM/yyyy HH24:MI:SS'') deduperunon,'
|
||||
'pb.bkbranchname,bm.dedreport::text fid,br.queryid dqid,pb.name portname,pb.portsupervisor supervisor '
|
||||
'FROM main m JOIN main_operations mo ON mo.case_id=m.case_id '
|
||||
'JOIN dedupe d ON d.uuid=m.uuid::text '
|
||||
'JOIN portfolio_bank_branch pb ON pb.portfolio_id=m.portfolio_id AND pb.portbranch_id=m.bank_branch_id '
|
||||
'JOIN bankreport_mapping bm ON bm.portfolio_id=m.portfolio_id '
|
||||
'JOIN bankreport br ON br.format_id=bm.dedreport '
|
||||
'WHERE m.portfolio_id=? AND m.company_id=? AND m.branch_id=? AND m.isdeleted=0 '
|
||||
'AND mo.fileclosed=0 AND d.dedupesend=0 AND bm.dedreport>0 '
|
||||
'ORDER BY d.applno,d.apptype',
|
||||
ismigrated = true
|
||||
WHERE query_id = 132;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text =
|
||||
'select!C0L!SELECT p.portfolio_id value,p.portname label '
|
||||
'FROM portfolio p WHERE p.company_id=? AND p.branch_id=? '
|
||||
'AND NOT EXISTS (SELECT 1 FROM denied_process dp WHERE dp.portfolio_id=p.portfolio_id '
|
||||
'AND dp.process_id=13 AND dp.isdenied=1) ORDER BY p.portname',
|
||||
ismigrated = true
|
||||
WHERE query_id = 134;
|
||||
@@ -0,0 +1,45 @@
|
||||
-- Structured, tenant-scoped dedupe matches using base tables only.
|
||||
UPDATE platform.application_query
|
||||
SET query_text = $query$
|
||||
select!C0L!
|
||||
SELECT md.dedupe_type AS dedupe_type,
|
||||
md.foundon AS found_on,
|
||||
md.remarks,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.customername ELSE neg.customername END AS customer_name,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN COALESCE(ear.dob, '') ELSE '00/00/00' END AS dob,
|
||||
upper(concat_ws(' ',
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.raddr1 ELSE neg.raddr1 END,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.raddr2 ELSE neg.raddr2 END,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.raddr3 ELSE neg.raddr3 END)) AS residence_address,
|
||||
upper(concat_ws(' ',
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.companyname ELSE neg.companyname END,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.oaddr1 ELSE neg.oaddr1 END,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.oaddr2 ELSE neg.oaddr2 END,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.oaddr3 ELSE neg.oaddr3 END)) AS office_address,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.rphone ELSE neg.rphone END AS residence_phone,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.ophone ELSE neg.ophone END AS office_phone,
|
||||
CASE WHEN md.dedupe_type = 'EAR' THEN ear.mobileno ELSE neg.mobileno END AS mobile
|
||||
FROM master_dedupe md
|
||||
JOIN main source_case
|
||||
ON source_case.uuid::text = md.source_uuid::text
|
||||
AND source_case.company_id = ?
|
||||
AND source_case.branch_id = ?
|
||||
AND source_case.isdeleted = 0
|
||||
LEFT JOIN main ear
|
||||
ON md.dedupe_type = 'EAR'
|
||||
AND ear.uuid::text = md.target_uuid::text
|
||||
AND ear.company_id = source_case.company_id
|
||||
LEFT JOIN negative neg
|
||||
ON md.dedupe_type <> 'EAR'
|
||||
AND neg.uid::text = md.target_uuid::text
|
||||
WHERE md.source_uuid::text = ?
|
||||
AND md.remarks <> 'NOT FOUND'
|
||||
ORDER BY md.dedupe_type, md.target_uuid
|
||||
$query$,
|
||||
ismigrated = true
|
||||
WHERE query_id = 56;
|
||||
|
||||
-- These queries were already converted to scoped base-table joins.
|
||||
UPDATE platform.application_query
|
||||
SET ismigrated = true
|
||||
WHERE query_id IN (53, 446);
|
||||
@@ -0,0 +1,121 @@
|
||||
-- Remove database-view dependencies from migrated Punching, Dedupe and Cutoff queries.
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text = $query$select!C0L!
|
||||
SELECT m.case_id,m.portfolio_id,m.mvcode,m.bank_branch_id,m.applno,m.product,m.loanamount,
|
||||
m.customername,m.apptype,m.category,m.dob,m.contactperson,m.mobileno,
|
||||
m.raddr1,m.raddr2,m.raddr3,m.rlandmark,m.rcolony AS "Rcolony",m.rcity,m.rpincode,m.rphone,
|
||||
m.companyname,m.oaddr1,m.oaddr2,m.oaddr3,m.olandmark,m.ocolony AS "Ocolony",m.ocity,
|
||||
m.opincode,m.department,m.designation,m.ophone,m.extension,m.paddr1,m.paddr2,m.paddr3,
|
||||
m.plandmark,m.pcolony AS "Pcolony",m.pcity,m.ppincode,m.refname1,m.refaddress1,
|
||||
m.refcontactno1,m.refname2,m.refaddress2,m.refcontactno2,m.rv,m.rtv,m.ov,m.otv,m.pv,
|
||||
m.refv,m.docv,m.rco,m.rcp,m.ocp,m.specialinst,m.sradd,m.soadd,m.spadd,
|
||||
rc.location AS colr,oc.location AS colo,pc.location AS colp,m.fathername,m.bankcode,
|
||||
0 AS status,m.company_id,m.branch_id,m.uuid,
|
||||
jsonb_strip_nulls(jsonb_build_object(
|
||||
'field1',m.field1,'field2',m.field2,'field3',m.field3,'field4',m.field4,
|
||||
'field5',m.field5,'field6',m.field6,'field7',m.field7,'field8',m.field8,
|
||||
'field9',m.field9,'field10',m.field10,'field11',m.field11,'field12',m.field12,
|
||||
'dtfield1',to_char(m.dtfield1,'DD/MM/YYYY'),'field150',m.field150,
|
||||
'field150_2',m.field150_2))::text AS dynamic_fields
|
||||
FROM main m
|
||||
JOIN main_operations mo ON mo.case_id=m.case_id
|
||||
LEFT JOIN colony rc ON rc.colony_id=m.rcolony
|
||||
LEFT JOIN colony oc ON oc.colony_id=m.ocolony
|
||||
LEFT JOIN colony pc ON pc.colony_id=m.pcolony
|
||||
WHERE m.isdeleted=0
|
||||
AND (((?<>'' AND m.uuid::text=?) OR (?='' AND m.portfolio_id=? AND COALESCE(mo.cutoffby,0)=0))
|
||||
AND m.company_id=? AND m.branch_id=?)
|
||||
ORDER BY m.case_id$query$,
|
||||
ismigrated = true
|
||||
WHERE query_id = 24;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text = $query$select!C0L!
|
||||
SELECT m.portfolio_id,p.portname||' <b>('||count(*)||')</b>' portname,
|
||||
sum(m.rtv) rtv,sum(m.otv) otv,sum(m.refv) refv,
|
||||
CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,mo.telesheet,
|
||||
coalesce(mo.lockedbyuser,'') lockedby,ts.docformat outputformat,ts.docfunction outputfunction
|
||||
FROM main m
|
||||
JOIN main_operations mo ON mo.case_id=m.case_id
|
||||
JOIN portfolio p ON p.portfolio_id=m.portfolio_id
|
||||
JOIN bankreport_mapping pf ON pf.portfolio_id=m.portfolio_id
|
||||
JOIN bankreport ts ON ts.format_id=pf.telesheet
|
||||
WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.telesheetby,0)=0 AND mo.cutoffby>0
|
||||
AND m.company_id=? AND m.branch_id=? AND mo.telesheet=1 AND (m.rtv>0 OR m.otv>0)
|
||||
GROUP BY m.portfolio_id,p.portname,mo.islocked,mo.telesheet,mo.lockedbyuser,ts.docformat,ts.docfunction
|
||||
ORDER BY p.portname$query$,
|
||||
ismigrated = true
|
||||
WHERE query_id = 32;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text = $query$select!C0L!
|
||||
WITH requested AS (
|
||||
SELECT ?::smallint AS portfolio_id, ?::smallint AS page_id, ?::varchar AS template_type
|
||||
)
|
||||
SELECT f.field_id,f.label,f.controlid,f.cssclass,f.containerid,f.maxlength,f.onclick,f.ondbclick,
|
||||
f.onfocus,f.onblur,f.onkeypress,f.onkeydown,f.onkeyup,f.onchange,f.ctrltype,f.ctrlwidth,
|
||||
f.ctrlheight,fm.defaultvalue,fm.fieldorder,fv.fieldvalue,fv.valorder,tm.page_id,
|
||||
tm.portfolio_id,t.template_id,t.template,t.template_type,fm.isvisible
|
||||
FROM field f
|
||||
JOIN field_mapping fm ON fm.field_id=f.field_id
|
||||
JOIN field_value fv ON fv.field_id=f.field_id
|
||||
JOIN template_mapping tm ON tm.template_id=fm.template_id
|
||||
JOIN template t ON t.template_id=tm.template_id
|
||||
JOIN requested r ON r.portfolio_id=tm.portfolio_id AND r.page_id=tm.page_id
|
||||
AND r.template_type=t.template_type
|
||||
WHERE f.ctrltype='select'
|
||||
UNION ALL
|
||||
SELECT f.field_id,f.label,f.controlid,f.cssclass,f.containerid,f.maxlength,f.onclick,f.ondbclick,
|
||||
f.onfocus,f.onblur,f.onkeypress,f.onkeydown,f.onkeyup,f.onchange,f.ctrltype,f.ctrlwidth,
|
||||
f.ctrlheight,fm.defaultvalue,fm.fieldorder,''::varchar AS fieldvalue,1 AS valorder,tm.page_id,
|
||||
tm.portfolio_id,t.template_id,t.template,t.template_type,fm.isvisible
|
||||
FROM field f
|
||||
JOIN field_mapping fm ON fm.field_id=f.field_id
|
||||
JOIN template_mapping tm ON tm.template_id=fm.template_id
|
||||
JOIN template t ON t.template_id=tm.template_id
|
||||
JOIN requested r ON r.portfolio_id=tm.portfolio_id AND r.page_id=tm.page_id
|
||||
AND r.template_type=t.template_type
|
||||
WHERE f.ctrltype<>'select'
|
||||
ORDER BY fieldorder,field_id,valorder,label,containerid$query$,
|
||||
ismigrated = true
|
||||
WHERE query_id = 74;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text = $query$select!C0L!
|
||||
SELECT d.uuid,d.mvcode,d.applno,d.customername,d.apptype,d.product,d.earlier,d.negative,
|
||||
to_char(d.deduperunon,'dd/MM/yyyy HH24:MI:SS') deduperunon,bb.bkbranchname,
|
||||
bm.dedreport::text fid,br.queryid dqid,b.name portname,
|
||||
coalesce(u.displayname,'') supervisor
|
||||
FROM main m
|
||||
JOIN main_operations mo ON mo.case_id=m.case_id
|
||||
JOIN dedupe d ON d.uuid=m.uuid::text
|
||||
JOIN portfolio_branch pb ON pb.portfolio_id=m.portfolio_id AND pb.portbranch_id=m.bank_branch_id
|
||||
JOIN bank_branch bb ON bb.bank_branch_id=pb.bank_branch_id AND bb.isactive=1
|
||||
JOIN bank b ON b.bank_id=bb.bank_id
|
||||
JOIN portfolio p ON p.portfolio_id=pb.portfolio_id AND p.isactive=1
|
||||
LEFT JOIN app_user u ON u.user_id=p.supervisor
|
||||
JOIN bankreport_mapping bm ON bm.portfolio_id=m.portfolio_id
|
||||
JOIN bankreport br ON br.format_id=bm.dedreport
|
||||
WHERE m.portfolio_id=? AND m.company_id=? AND m.branch_id=? AND m.isdeleted=0
|
||||
AND mo.fileclosed=0 AND d.dedupesend=0 AND bm.dedreport>0
|
||||
ORDER BY d.applno,d.apptype$query$,
|
||||
ismigrated = true
|
||||
WHERE query_id = 132;
|
||||
|
||||
UPDATE platform.application_query
|
||||
SET query_text = $query$select!C0L!
|
||||
SELECT m.portfolio_id,p.portname||' <b>('||count(*)||')</b>' portname,sum(m.refv) refv,
|
||||
CASE WHEN mo.islocked<>? THEN 1 ELSE 0 END islocked,mo.refsheet,
|
||||
coalesce(mo.lockedbyuser,'') lockedby,rf.docformat outputformat,rf.docfunction outputfunction
|
||||
FROM main m
|
||||
JOIN main_operations mo ON mo.case_id=m.case_id
|
||||
JOIN portfolio p ON p.portfolio_id=m.portfolio_id
|
||||
JOIN bankreport_mapping pf ON pf.portfolio_id=m.portfolio_id
|
||||
JOIN bankreport rf ON rf.format_id=pf.refsheet
|
||||
WHERE m.isdeleted=0 AND mo.sdone=0 AND coalesce(mo.refsheetby,0)=0 AND mo.cutoffby>0
|
||||
AND m.company_id=? AND m.branch_id=? AND mo.refsheet=1 AND m.refv=1
|
||||
GROUP BY m.portfolio_id,p.portname,mo.islocked,mo.refsheet,mo.lockedbyuser,rf.docformat,rf.docfunction
|
||||
ORDER BY p.portname$query$,
|
||||
ismigrated = true
|
||||
WHERE query_id = 217;
|
||||
@@ -0,0 +1,41 @@
|
||||
-- Remove the indirect colony_allocation view dependency from allocatecase().
|
||||
DO $migration$
|
||||
DECLARE
|
||||
function_oid oid;
|
||||
original_definition text;
|
||||
updated_definition text;
|
||||
BEGIN
|
||||
SELECT p.oid
|
||||
INTO function_oid
|
||||
FROM pg_proc p
|
||||
JOIN pg_namespace n ON n.oid = p.pronamespace
|
||||
WHERE n.nspname = 'public'
|
||||
AND p.proname = 'allocatecase'
|
||||
AND pg_get_function_identity_arguments(p.oid) =
|
||||
'uniqueid text, allocation integer, rvr integer, ovr integer, pvr integer, resiloc integer, offloc integer, proploc integer, alloctime text, companyid integer, branchid integer, portfolioid integer, portgrp text';
|
||||
|
||||
IF function_oid IS NULL THEN
|
||||
RAISE EXCEPTION 'allocatecase function was not found';
|
||||
END IF;
|
||||
|
||||
original_definition := pg_get_functiondef(function_oid);
|
||||
updated_definition := replace(
|
||||
original_definition,
|
||||
'select verifier_id from colony_allocation where colony_id=resiloc and belt_group=portgrp into rverifier;',
|
||||
'select ba.verifier_id from colony c join belt_allocation ba on ba.belt_id=c.belt_id where c.colony_id=resiloc and ba.belt_group=portgrp and c.branch_id=branchid and exists (select 1 from company_branch cb where cb.branch_id=c.branch_id and cb.company_id=companyid) into rverifier;');
|
||||
updated_definition := replace(
|
||||
updated_definition,
|
||||
'select verifier_id from colony_allocation where colony_id=offloc and belt_group=portgrp into overifier;',
|
||||
'select ba.verifier_id from colony c join belt_allocation ba on ba.belt_id=c.belt_id where c.colony_id=offloc and ba.belt_group=portgrp and c.branch_id=branchid and exists (select 1 from company_branch cb where cb.branch_id=c.branch_id and cb.company_id=companyid) into overifier;');
|
||||
updated_definition := replace(
|
||||
updated_definition,
|
||||
'select verifier_id from colony_allocation where colony_id=proploc and belt_group=portgrp into pverifier;',
|
||||
'select ba.verifier_id from colony c join belt_allocation ba on ba.belt_id=c.belt_id where c.colony_id=proploc and ba.belt_group=portgrp and c.branch_id=branchid and exists (select 1 from company_branch cb where cb.branch_id=c.branch_id and cb.company_id=companyid) into pverifier;');
|
||||
|
||||
IF updated_definition = original_definition THEN
|
||||
RAISE EXCEPTION 'allocatecase definition did not contain the expected view lookups';
|
||||
END IF;
|
||||
|
||||
EXECUTE updated_definition;
|
||||
END
|
||||
$migration$;
|
||||
Reference in New Issue
Block a user