FUNCTION getLastScLoadIdFromCreationNumber(p_so_creation_number IN NUMBER) RETURN NUMBER IS
v_poi_tin VARCHAR2(50);
v_real_employer_tin VARCHAR2(50);
v_vehicle_owner_id NUMBER(10);
v_last_sc_load_id NUMBER(10);
BEGIN
-- Get last so transaction : TIN + real_employer_tin + vehicle_owner
BEGIN
SELECT sot.poi_tin, p.real_employer_tin, vpc.vehicle_owner_id
INTO v_poi_tin,v_real_employer_tin,v_vehicle_owner_id
FROM social_office_transaction sot, person p, vo_person_category vpc
WHERE sot.so_creation_number = p_so_creation_number
AND vpc.vo_person_category_id = p.vo_person_category_id
AND sot.social_office_transaction_id = p.last_so_transaction_id;
EXCEPTION WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
IF v_poi_tin IS NOT NULL AND v_real_employer_tin IS NOT NULL AND v_vehicle_owner_id IS NOT NULL THEN
-- Get last load with vo_id, and TIN
BEGIN
SELECT MAX(sc_load_id)
INTO v_last_sc_load_id
FROM sc_load
WHERE vehicle_owner_id = v_vehicle_owner_id
AND status = 'L'
AND poi_tin = v_poi_tin;
EXCEPTION WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
IF v_last_sc_load_id IS NOT NULL THEN
-- Within last load
RETURN v_last_sc_load_id;
END IF;
END IF;
RETURN NULL;
END;