Usp PPAS DTLS Json Data
Usp PPAS DTLS Json Data
p_created_by tbl_api_ppas_data.created_by%TYPE,
p_updated_dt tbl_api_ppas_data.updated_on%TYPE,
p_json IN CLOB,
p_out OUT VARCHAR2
) IS
l_json CLOB;
v_slno NUMBER;
v_count NUMBER;
l_count NUMBER;
-- p_json VARCHAR2(32767);
l_user_seq NUMBER;
l_user_slno NUMBER;
l_err_code VARCHAR2(100) := '';
l_err_msg VARCHAR2(500) := '';
l_trackstrattime TIMESTAMP(6) := systimestamp;
l_procedurename VARCHAR2(55) := $$plsql_unit;
BEGIN
/*=====================================================
Author : Debasis Bhuyan
Modified/Optimized : 27/JAN/2025 11:30:50
Purpose : PPAS DETAILS JSON DATA
=====================================================
*/
l_json := p_json;
SELECT COUNT(1) INTO l_count FROM tbl_api_ppas_data;
IF l_count=0 THEN
l_count:=1;
ELSE
SELECT MAX(NVL(FLAG,0))+1 INTO l_count FROM tbl_api_ppas_data;
END IF;
FOR TYPE_JSON_rec IN (
SELECT
--table 1
l_count,
FARMER_NAME,
FARMER_CODE,--farmer_id
--CULTIVATOR_NAME,
FATHER_NAME,
MOTHER_NAME,
SPOUSE_NAME,
FARMER_TYPE,
TOTAL_IRRIGATED_LAND,
TOTAL_NON_IRRIGATED_LAND,
AADHAAR_NO,
MOBILE_NO,
DOB,
GENDER,
SOCIAL_CATEGORY,
DISTRICT_NAME,
DIST_LGD_CODE,
BLOCK_ULB,
BLOCK_ULB_LGD_CODE,
GP_NAME,
GP_LGD_CODE,
VILLAGE_NAME,
VILLAGE_LGD_CODE,
HOUSE_PLOT_NO,
FAMILY_MEMBERS,
PIN_CODE,
BANK_NAME,
BRANCH_NAME,
BANK_ACCOUNT_NO,
IFSC_CODE,
STATE,
--table 2
-- FARMER_ID,
-- AADHAAR_NO,
KMS,
CROP,
KHATA_NO,
PLOT_NO,
BHULEKH_DISTRICT_ID,
BHULEK_DISTRICT,
BHULEK_RI_CIRCLE_ID,
BHULEK_RI_CIRCLE,
BHULEK_MOUZA,
BULEKH_MOUZA_ID,
PATTA_HOLDER_NAME_ODIA,
PATTA_HOLDER_NAME_ENG,
RELATION_WITH_FARMER,
LAND_SIZE_ACRE,
LAND_SHARE_ACRE
FROM JSON_TABLE(
l_json,
'$.ppasData[*]'
COLUMNS (
FARMER_NAME VARCHAR2(20) PATH '$.farmerName',
FARMER_CODE VARCHAR2(20) PATH '$.farmerCode',
FATHER_NAME VARCHAR2(100) PATH '$.fatherName',
MOTHER_NAME VARCHAR2(100) PATH '$.motherName',
SPOUSE_NAME VARCHAR2(100) PATH '$.spouseName',
FARMER_TYPE VARCHAR2(15) PATH '$.farmerType',
TOTAL_IRRIGATED_LAND VARCHAR2(10) PATH '$.totalIrrigatedLand',
TOTAL_NON_IRRIGATED_LAND VARCHAR2(10) PATH
'$.totalNonIrrigatedLand',
AADHAAR_NO VARCHAR2(14) PATH '$.aadhaarNo',
MOBILE_NO VARCHAR2(12) PATH '$.mobileNo',
DOB VARCHAR2(15) PATH '$.dob',
GENDER VARCHAR2(20) PATH '$.gender',
SOCIAL_CATEGORY VARCHAR2(20) PATH '$.socialCategory',
DISTRICT_NAME VARCHAR2(20) PATH '$.districtName',
DIST_LGD_CODE VARCHAR2(10) PATH '$.distLgdCode',
BLOCK_ULB VARCHAR2(20) PATH '$.blockUlb',
BLOCK_ULB_LGD_CODE VARCHAR2(10) PATH '$.blockUlbLgdCode',
GP_NAME VARCHAR2(20) PATH '$.gpName',
GP_LGD_CODE VARCHAR2(10) PATH '$.gpLgdCode',
VILLAGE_NAME VARCHAR2(20) PATH '$.villageName',
VILLAGE_LGD_CODE VARCHAR2(10) PATH '$.villageLgdCode',
HOUSE_PLOT_NO VARCHAR2(15) PATH '$.housePlotNo',
FAMILY_MEMBERS VARCHAR2(10) PATH '$.familyMembers',
PIN_CODE VARCHAR2(10) PATH '$.pinCode',
BANK_NAME VARCHAR2(20) PATH '$.bankName',
BRANCH_NAME VARCHAR2(20) PATH '$.branchName',
BANK_ACCOUNT_NO VARCHAR2(20) PATH '$.bankAccountNo',
IFSC_CODE VARCHAR2(20) PATH '$.ifscCode',
STATE VARCHAR2(20) PATH '$.state',
BEGIN
INSERT INTO tbl_api_ppas_data (
FARMER_NAME,
FARMER_CODE,
CULTIVATOR_NAME,
FATHER_NAME,
MOTHER_NAME,
SPOUSE_NAME,
FARMER_TYPE,
TOTAL_IRRIGATED_LAND,
TOTAL_NON_IRRIGATED_LAND,
AADHAAR_NO,
MOBILE_NO,
DOB,
GENDER,
SOCIAL_CATEGORY,
DISTRICT_NAME,
DIST_LGD_CODE,
BLOCK_ULB,
BLOCK_ULB_LGD_CODE,
GP_NAME,
GP_LGD_CODE,
VILLAGE_NAME,
VILLAGE_LGD_CODE,
HOUSE_PLOT_NO,
FAMILY_MEMBERS,
PIN_CODE,
BANK_NAME,
BRANCH_NAME,
BANK_ACCOUNT_NO,
IFSC_CODE,
STATE,
ACTIVE_STATUS,
CREATED_BY,
CREATED_ON,
-- UPDATED_BY,
-- UPDATED_ON,
FLAG
)
SELECT
TYPE_JSON_rec.FARMER_NAME,
TYPE_JSON_rec.FARMER_CODE,
NULL,--TYPE_JSON_rec.CULTIVATOR_NAME,
TYPE_JSON_rec.FATHER_NAME,
TYPE_JSON_rec.MOTHER_NAME,
TYPE_JSON_rec.SPOUSE_NAME,
TYPE_JSON_rec.FARMER_TYPE,
TYPE_JSON_rec.TOTAL_IRRIGATED_LAND,
TYPE_JSON_rec.TOTAL_NON_IRRIGATED_LAND,
TYPE_JSON_rec.AADHAAR_NO,
TYPE_JSON_rec.MOBILE_NO,
TYPE_JSON_rec.DOB,
TYPE_JSON_rec.GENDER,
TYPE_JSON_rec.SOCIAL_CATEGORY,
TYPE_JSON_rec.DISTRICT_NAME,
TYPE_JSON_rec.DIST_LGD_CODE,
TYPE_JSON_rec.BLOCK_ULB,
TYPE_JSON_rec.BLOCK_ULB_LGD_CODE,
TYPE_JSON_rec.GP_NAME,
TYPE_JSON_rec.GP_LGD_CODE,
TYPE_JSON_rec.VILLAGE_NAME,
TYPE_JSON_rec.VILLAGE_LGD_CODE,
TYPE_JSON_rec.HOUSE_PLOT_NO,
TYPE_JSON_rec.FAMILY_MEMBERS,
TYPE_JSON_rec.PIN_CODE,
TYPE_JSON_rec.BANK_NAME,
TYPE_JSON_rec.BRANCH_NAME,
TYPE_JSON_rec.BANK_ACCOUNT_NO,
TYPE_JSON_rec.IFSC_CODE,
TYPE_JSON_rec.STATE,
'Y',
NVL(p_created_by,NULL),
SYSDATE,
l_count
FROM DUAL WHERE NOT EXISTS(
SELECT 1 FROM tbl_api_ppas_data WHERE FLAG=l_count AND
(TRIM(FARMER_CODE)=TRIM(TYPE_JSON_rec.FARMER_CODE)));
COMMIT;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK;
WHEN OTHERS THEN
ROLLBACK;
END;
BEGIN
INSERT INTO tbl_api_ppas_address (
FARMER_ID,
AADHAAR_NO,
KMS,
CROP,
KHATA_NO,
PLOT_NO,
BHULEKH_DISTRICT_ID,
BHULEK_DISTRICT,
BHULEK_RI_CIRCLE_ID,
BHULEK_RI_CIRCLE,
BHULEK_MOUZA,
BULEKH_MOUZA_ID,
PATTA_HOLDER_NAME_ODIA,
PATTA_HOLDER_NAME_ENG,
RELATION_WITH_FARMER,
LAND_SIZE_ACRE,
LAND_SHARE_ACRE,
CREATED_ON,
UPDATED_ON,
IS_ACTIVE,
CREATED_BY,
UPDATED_BY
)
VALUES (
TYPE_JSON_rec.FARMER_CODE,
TYPE_JSON_rec.AADHAAR_NO,
TYPE_JSON_rec.KMS,
TYPE_JSON_rec.CROP,
TYPE_JSON_rec.KHATA_NO,
TYPE_JSON_rec.PLOT_NO,
TYPE_JSON_rec.BHULEKH_DISTRICT_ID,
TYPE_JSON_rec.BHULEK_DISTRICT,
TYPE_JSON_rec.BHULEK_RI_CIRCLE_ID,
TYPE_JSON_rec.BHULEK_RI_CIRCLE,
TYPE_JSON_rec.BHULEK_MOUZA,
TYPE_JSON_rec.BULEKH_MOUZA_ID,
TYPE_JSON_rec.PATTA_HOLDER_NAME_ODIA,
TYPE_JSON_rec.PATTA_HOLDER_NAME_ENG,
TYPE_JSON_rec.RELATION_WITH_FARMER,
TYPE_JSON_rec.LAND_SIZE_ACRE,
TYPE_JSON_rec.LAND_SHARE_ACRE,
SYSDATE,
NULL,
'Y',
NVL(p_created_by,NULL),
NULL
);
COMMIT;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK;
WHEN OTHERS THEN
ROLLBACK;
END;
-- DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
BEGIN
SELECT COUNT(1) INTO v_count
FROM tbl_api_ppas_address a WHERE a.FARMER_ID=TYPE_JSON_rec.FARMER_CODE;
IF v_count>1 THEN
UPDATE tbl_api_ppas_address a
SET a.IS_ACTIVE= 'N', a.updated_on=SYSDATE,
a.updated_by=nvl(p_created_by,a.updated_by)
WHERE a.CREATED_ON IN(
SELECT a.CREATED_ON FROM tbl_api_ppas_address a
WHERE a.CREATED_ON<(SELECT MAX(b.CREATED_ON) FROM tbl_api_ppas_address b WHERE
upper(trim(a.FARMER_ID))=upper(trim(b.FARMER_ID)))
AND (a.IS_ACTIVE= 'Y'
AND UPPER(TRIM(FARMER_ID))=UPPER(TRIM(TYPE_JSON_rec.FARMER_CODE))));
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK;
WHEN OTHERS THEN
ROLLBACK;
END;
-- DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
END LOOP;
COMMIT;
p_out := 'SUCCESS';
DBMS_OUTPUT.PUT_LINE('$deb#333333333333');
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
l_err_code := sqlcode;
l_err_msg := substr(sqlerrm, 1, 200)|| ' '||l_procedurename||' '||
l_trackstrattime;
p_out := l_err_msg;
dbms_output.put_line(l_err_msg);
END;