3054
SQL Sprint
23/04/2025
create or replace procedure PBH_SKT_TESTr(
b_ma_dvi varchar2,b_nsd varchar2,b_so_idG number,
nh_so_idC pht_type.a_num,nh_nhomC pht_type.a_var,
dt_ct in out clob,dt_giam clob,dt_nh clob,dt_ds in out clob,dt_dvi in out clob,
b_so_hdL out varchar2,b_ma_sp out varchar2,b_cdich out varchar2,b_tpaH out varchar2,
nh_so_id out pht_type.a_num,nh_nhom out pht_type.a_var,nh_ten out pht_type.a_nvar,
nh_goi out pht_type.a_var,nh_tpa out pht_type.a_var,
nh_phi out pht_type.a_num,nh_so_dt out pht_type.a_num,nh_phiN out pht_type.a_num,
nh_tl_giam out pht_type.a_num,nh_giam out pht_type.a_num,nh_ttoan out pht_type.a_num,
gcn_so_id out pht_type.a_num,gcn_kieu_gcn out pht_type.a_var,gcn_gcn out pht_type.a_var,gcn_gcnG out pht_type.a_var,
gcn_goi out pht_type.a_var,gcn_so_idP out pht_type.a_num,
gcn_nhom out pht_type.a_var,gcn_dvi out pht_type.a_nvar,gcn_ma_kh out pht_type.a_var,
gcn_ten out pht_type.a_nvar,gcn_ng_sinh out pht_type.a_num,gcn_gioi out pht_type.a_var,
gcn_cmt out pht_type.a_var,gcn_mobi out pht_type.a_var,gcn_email out pht_type.a_var,
gcn_dchi out pht_type.a_nvar,gcn_nghe out pht_type.a_var,gcn_ng_huong out pht_type.a_nvar,
gcn_gio_hl out pht_type.a_var,gcn_ngay_hl out pht_type.a_num,
gcn_gio_kt out pht_type.a_var,gcn_ngay_kt out pht_type.a_num,gcn_ngay_cap out pht_type.a_num,
gcn_phi out pht_type.a_num,gcn_giam out pht_type.a_num,gcn_ttoan out pht_type.a_num,
dk_so_id out pht_type.a_num,dk_ma out pht_type.a_var,dk_ten out pht_type.a_nvar,
dk_tc out pht_type.a_var,dk_ma_ct out pht_type.a_var,dk_kieu out pht_type.a_var,
dk_tien out pht_type.a_num,dk_pt out pht_type.a_num,dk_phi out pht_type.a_num,
dk_thue out pht_type.a_num,dk_ttoan out pht_type.a_num,
dk_cap out pht_type.a_num,dk_ma_dk out pht_type.a_var,
dk_lh_nv out pht_type.a_var,dk_t_suat out pht_type.a_num,
dk_ptB out pht_type.a_num,dk_ptG out pht_type.a_num,dk_phiG out pht_type.a_num,
dk_lkeP out pht_type.a_var,dk_lkeB out pht_type.a_var,dk_luy out pht_type.a_var,dk_lh_bh out pht_type.a_var,
dvi_dvi out pht_type.a_var,dvi_ca out pht_type.a_num,dvi_bk out pht_type.a_num,dvi_dchi out pht_type.a_nvar,
dvi_so_id out pht_type.a_num,dvi_tdx out pht_type.a_num,dvi_tdy out pht_type.a_num,
lt_so_id out pht_type.a_num,lt_dk out pht_type.a_clob,lt_lt out pht_type.a_clob,lt_kbt out pht_type.a_clob,b_loi out varchar2)
AS
b_lenh varchar2(2000); b_i1 number; b_i2 number;b_so_idN number:=0;
b_kieu_hd varchar2(1); b_ttrang varchar2(1);
b_kt_dk number; b_kt_dkB number; b_kt_dkC number; b_so_dt number; b_txt clob;
b_gio_hl nvarchar2(50); b_ngay_hl number; b_gio_kt nvarchar2(50); b_ngay_kt number; b_ngay_cap number;
b_phiH number; b_ttoanH number; b_phiN number; b_giamN number; b_ktG number;
nh_dt_ct pht_type.a_clob; nh_dt_dk pht_type.a_clob; nh_dt_dkbs pht_type.a_clob;
nh_dt_lt pht_type.a_clob; nh_dt_khd pht_type.a_clob; nh_dt_kbt pht_type.a_clob;
nh_nhomG pht_type.a_var; nh_tl_giamG pht_type.a_num; nh_giamG pht_type.a_num; nh_ttoanG pht_type.a_num;
nh_maG pht_type.a_var; nh_tenG pht_type.a_nvar;
nh_tcG pht_type.a_var; nh_ma_ctG pht_type.a_var; nh_kieuG pht_type.a_var;
nh_tienG pht_type.a_num; nh_ptG pht_type.a_num; nh_phiG pht_type.a_num;
nh_capG pht_type.a_num; nh_ma_dkG pht_type.a_var;
nh_lh_nvG pht_type.a_var; nh_ptBG pht_type.a_var; nh_phiBG pht_type.a_var;
nh_lkePG pht_type.a_var; nh_lkeBG pht_type.a_var; nh_luyG pht_type.a_var; nh_lh_bhG pht_type.a_var;
nhB_maG pht_type.a_var; nhB_tenG pht_type.a_nvar;
nhB_tcG pht_type.a_var; nhB_ma_ctG pht_type.a_var; nhB_kieuG pht_type.a_var;
nhB_tienG pht_type.a_num; nhB_ptG pht_type.a_num; nhB_phiG pht_type.a_num;
nhB_capG pht_type.a_num; nhB_ma_dkG pht_type.a_var;
nhB_lh_nvG pht_type.a_var; nhB_ptBG pht_type.a_var; nhB_phiBG pht_type.a_var;
nhB_lkePG pht_type.a_var; nhB_lkeBG pht_type.a_var; nhB_luyG pht_type.a_var;
dk_phiB pht_type.a_num;
nh_so_idP pht_type.a_num;
begin
-- Dan - Nhap
b_lenh:=FKH_JS_LENH('ttrang,kieu_hd,gio_hl,ngay_hl,gio_kt,ngay_kt,ngay_cap,ma_sp,cdich,tpa,ttoan,so_hdl');
EXECUTE IMMEDIATE b_lenh into b_ttrang,b_kieu_hd,b_gio_hl,b_ngay_hl,
b_gio_kt,b_ngay_kt,b_ngay_cap,b_ma_sp,b_cdich,b_tpaH,b_ttoanH,b_so_hdL using dt_ct;
b_ma_sp:=nvl(trim(b_ma_sp),' '); b_cdich:=nvl(trim(b_cdich),' ');
if b_ma_sp=' ' or FBH_SK_SP_HAN(b_ma_sp)<>'C' then b_loi:='loi:Sai ma san pham:loi'; return; end if;
if b_cdich<>' ' and FBH_MA_CDICH_HAN(b_cdich)<>'C' then b_loi:='loi:Sai ma chien dich:loi'; return; end if;
b_tpaH:=NVL(trim(b_tpaH),' ');
if b_tpaH<>' ' and FBH_MA_GDINH_HAN(b_tpaH)<>'C' then b_loi:='loi:Sai ma TPA '||b_tpaH||':loi'; return; end if;
b_lenh:=FKH_JS_LENH('nhom,tl_giam,giam,ttoan');
EXECUTE IMMEDIATE b_lenh bulk collect into nh_nhomG,nh_tl_giamG,nh_giamG,nh_ttoanG using dt_giam;
b_lenh:=FKH_JS_LENHc('dt_nh_ct,dt_nh_dk,dt_nh_dkbs,dt_nh_lt,dt_nh_khd,dt_nh_kbt');
EXECUTE IMMEDIATE b_lenh bulk collect into nh_dt_ct,nh_dt_dk,nh_dt_dkbs,nh_dt_lt,nh_dt_khd,nh_dt_kbt using dt_nh;
if nh_dt_ct.count=0 then b_loi:='loi:Nhap quyen loi nhom:loi'; return; end if;
b_lenh:=FKH_JS_LENH('so_id_dt,kieu_gcn,gcn,gcn_g,nhom,dvi,ten,ng_sinh,gioi,cmt,mobi,email,nghe,dchi,ng_huong,ngay_hl,ngay_kt');
EXECUTE IMMEDIATE b_lenh bulk collect into
gcn_so_id,gcn_kieu_gcn,gcn_gcn,gcn_gcnG,gcn_nhom,gcn_dvi,gcn_ten,gcn_ng_sinh,gcn_gioi,gcn_cmt,gcn_mobi,gcn_email,
gcn_nghe,gcn_dchi,gcn_ng_huong,gcn_ngay_hl,gcn_ngay_kt using dt_ds;
if gcn_ten.count=0 then b_loi:='loi:Nhap danh sach nguoi duoc bao hiem:loi'; return; end if;
b_lenh:=FKH_JS_LENH('dvi,ca,bk,dchi,so_id_dvi,tdx,tdy');
EXECUTE IMMEDIATE b_lenh bulk collect into dvi_dvi,dvi_ca,dvi_bk,dvi_dchi,dvi_so_id,dvi_tdx,dvi_tdy using dt_dvi;
b_lenh:=FKH_JS_LENH('so_id_nh,nhom,ten,goi,so_idp,tpa,phi');
for b_lp in 1..nh_dt_ct.count loop
EXECUTE IMMEDIATE b_lenh into nh_so_id(b_lp),nh_nhom(b_lp),nh_ten(b_lp),nh_goi(b_lp),
nh_so_idP(b_lp),nh_tpa(b_lp),nh_phi(b_lp) using nh_dt_ct(b_lp);
if trim(nh_nhom(b_lp)) is null or trim(nh_ten(b_lp)) is null then
b_loi:='loi:Nhap nhom va ten nhom dong '||to_char(b_lp)||':loi'; return;
end if;
if trim(nh_tpa(b_lp)) is null then
nh_tpa(b_lp):=b_tpaH;
elsif FBH_MA_GDINH_HAN(nh_tpa(b_lp))<>'C' then
b_loi:='loi:Sai ma TPA '||nh_tpa(b_lp)||':loi'; return;
end if;
nh_goi(b_lp):=nvl(trim(nh_goi(b_lp)),' ');
if nh_goi(b_lp)<>' ' and FBH_SK_GOI_HAN(nh_goi(b_lp))<>'C' then b_loi:='loi:Sai ma goi '||nh_goi(b_lp)||':loi'; return; end if;
b_i1:=FKH_ARR_VTRI(nh_nhomG, nh_nhom(b_lp));
if b_i1=0 then b_loi:='loi:Sai nhom '||nh_ten(b_lp)||':loi'; return; end if;
nh_giam(b_lp):=nh_giamG(b_i1); nh_ttoan(b_lp):=nh_ttoanG(b_i1);
nh_tl_giam(b_lp):=nh_tl_giamG(b_i1); nh_phiN(b_lp):=nh_giam(b_lp)+nh_ttoan(b_lp);
b_i1:=FKH_ARR_VTRI(nh_nhomC, nh_nhom(b_lp));
if b_i1>0 then nh_so_id(b_lp):=nh_so_idC(b_i1); else nh_so_id(b_lp):=b_lp; end if;
end loop;
for b_lp in 1..gcn_ten.count loop
if trim(gcn_ten(b_lp)) is null then b_loi:='loi:Nhap ten dong '||to_char(b_lp)||':loi'; return; end if;
if trim(gcn_nhom(b_lp)) is null or trim(gcn_cmt(b_lp)) is null then b_loi:='loi:Nhap nhom, CCCD '||gcn_ten(b_lp)||':loi'; return; end if;
gcn_nghe(b_lp):=nvl(trim(gcn_nghe(b_lp)),' ');
if gcn_so_id(b_lp) is null or gcn_so_id(b_lp)=0 then b_loi:='loi:Sai Id nhap : '|| gcn_ten(b_lp)||':loi'; return; end if;
gcn_kieu_gcn(b_lp):=nvl(trim(gcn_kieu_gcn(b_lp)),'G');
b_loi:='loi:Chua xep nhom '||gcn_ten(b_lp)||':loi';
if trim(gcn_nhom(b_lp)) is null then return; end if;
b_i1:=FKH_ARR_VTRI(nh_nhom,gcn_nhom(b_lp));
if b_i1=0 then return; end if;
gcn_goi(b_lp):=nh_goi(b_i1); gcn_so_idP(b_lp):=nh_so_idP(b_i1);
gcn_gcn(b_lp):=nvl(trim(gcn_gcn(b_lp)),' '); gcn_gcnG(b_lp):=nvl(trim(gcn_gcnG(b_lp)),' ');
if gcn_gcnG(b_lp)=' ' then gcn_kieu_gcn(b_lp):='B'; else gcn_kieu_gcn(b_lp):='G'; end if;
gcn_gio_hl(b_lp):=b_gio_hl; gcn_gio_kt(b_lp):=b_gio_kt;
gcn_ngay_cap(b_lp):=b_ngay_cap;
if length(gcn_gcn(b_lp))>7 then
select count(*) into b_i1 from bh_sk_ds where gcn=gcn_gcn(b_lp);
if b_i1=1 then
select gio_hl,ngay_hl,gio_kt,ngay_kt,ngay_cap into
gcn_gio_hl(b_lp),gcn_ngay_hl(b_lp),gcn_gio_kt(b_lp),gcn_ngay_kt(b_lp),gcn_ngay_cap(b_lp)
from bh_sk_ds where gcn=gcn_gcn(b_lp);
end if;
end if;
if gcn_ngay_kt(b_lp) is null or gcn_ngay_kt(b_lp) in(0,30000101) or gcn_ngay_kt(b_lp)<b_ngay_hl or gcn_ngay_kt(b_lp)>b_ngay_kt then
gcn_ngay_kt(b_lp):=b_ngay_kt;
end if;
if gcn_ngay_hl(b_lp) is null or gcn_ngay_hl(b_lp) in(0,30000101) or
gcn_ngay_hl(b_lp)<b_ngay_hl or gcn_ngay_hl(b_lp)>b_ngay_kt or gcn_ngay_hl(b_lp)>gcn_ngay_kt(b_lp) then
gcn_ngay_hl(b_lp):=b_ngay_hl;
end if;
gcn_ma_kh(b_lp):=' ';
end loop;
if b_kieu_hd in('B','S') and b_so_idG<>0 then
for r_lp in (select so_id_dt,cmt,ten from bh_sk_ds where ma_dvi=b_ma_dvi and so_id=b_so_idG) loop
if FKH_ARR_VTRI_N(gcn_so_id,r_lp.so_id_dt)=0 then b_loi:='loi:Khong xoa danh sach cu '||r_lp.ten||', CCCD: '||r_lp.cmt||':loi'; return; end if;
end loop;
end if;
b_kt_dk:=0; b_phiH:=0;
b_lenh:=FKH_JS_LENH('ma,ten,tien,pt,phi,cap,tc,ma_ct,kieu,ma_dk,lh_nv,ptb,phib,lkep,lkeb,luy');
for b_lp in 1..nh_nhom.count loop
EXECUTE IMMEDIATE b_lenh bulk collect into
nh_maG,nh_tenG,nh_tienG,nh_ptG,nh_phiG,nh_capG,nh_tcG,nh_ma_ctG,nh_kieuG,
nh_ma_dkG,nh_lh_nvG,nh_ptBG,nh_phiBG,nh_lkePG,nh_lkeBG,nh_luyG using nh_dt_dk(b_lp);
b_ktG:=nh_maG.count;
if b_ktG=0 then
b_loi:='loi:Chua nhap dieu khoan bao hiem nhom '||nh_ten(b_lp)||':loi'; return;
end if;
for b_lp2 in 1..b_ktG loop
nh_lh_bhG(b_lp2):='C';
end loop;
if trim(nh_dt_dkbs(b_lp)) is not null then
EXECUTE IMMEDIATE b_lenh bulk collect into
nhB_maG,nhB_tenG,nhB_tienG,nhB_ptG,nhB_phiG,nhB_capG,nhB_tcG,nhB_ma_ctG,nhB_kieuG,
nhB_ma_dkG,nhB_lh_nvG,nhB_ptBG,nhB_phiBG,nhB_lkePG,nhB_lkeBG,nhB_luyG using nh_dt_dkbs(b_lp);
for b_lp2 in 1..nhB_maG.count loop
b_ktG:=b_ktG+1;
nh_lh_bhG(b_ktG):='M';
nh_maG(b_ktG):=nhB_maG(b_lp2); nh_tenG(b_ktG):=nhB_tenG(b_lp2); nh_tienG(b_ktG):=nhB_tienG(b_lp2);
nh_ptG(b_ktG):=nhB_ptG(b_lp2); nh_phiG(b_ktG):=nhB_phiG(b_lp2); nh_capG(b_ktG):=nhB_capG(b_lp2);
nh_tcG(b_ktG):=nhB_tcG(b_lp2); nh_ma_ctG(b_ktG):=nhB_ma_ctG(b_lp2); nh_kieuG(b_ktG):=nhB_kieuG(b_lp2);
nh_ma_dkG(b_ktG):=nhB_ma_dkG(b_lp2); nh_lh_nvG(b_ktG):=nhB_lh_nvG(b_lp2); nh_ptBG(b_ktG):=nhB_ptBG(b_lp2);
nh_phiBG(b_ktG):=nhB_phiBG(b_lp2);
nh_lkePG(b_ktG):=nhB_lkePG(b_lp2); nh_lkeBG(b_ktG):=nhB_lkeBG(b_lp2); nh_luyG(b_ktG):=nhB_luyG(b_lp2);
end loop;
end if;
b_so_dt:=0; b_phiN:=0; b_kt_dkB:=b_kt_dk+1;
for b_lp1 in 1..gcn_ten.count loop
if gcn_nhom(b_lp1)=nh_nhom(b_lp) then
--b_i1:=FKH_KHO_NGSO(gcn_ngay_hl(b_lp1),gcn_ngay_kt(b_lp1));
--if b_i1<365 or b_i1>366 then b_i1:=b_i1/365; else b_i1:=1; end if;
b_i1:=1;
for b_lp2 in 1..nh_maG.count loop
b_kt_dk:=b_kt_dk+1;
dk_so_id(b_kt_dk):=gcn_so_id(b_lp1);
dk_ma(b_kt_dk):=nh_maG(b_lp2);dk_ten(b_kt_dk):=nh_tenG(b_lp2); dk_tc(b_kt_dk):=nh_tcG(b_lp2);
dk_ma_ct(b_kt_dk):=nh_ma_ctG(b_lp2); dk_kieu(b_kt_dk):=nh_kieuG(b_lp2);
dk_tien(b_kt_dk):=nh_tienG(b_lp2); dk_pt(b_kt_dk):=nh_ptG(b_lp2); dk_phi(b_kt_dk):=round(nh_phiG(b_lp2)*b_i1,0);
dk_cap(b_kt_dk):=nh_capG(b_lp2); dk_ma_dk(b_kt_dk):=nh_ma_dkG(b_lp2);
dk_lh_nv(b_kt_dk):=nh_lh_nvG(b_lp2); dk_lkeP(b_kt_dk):=nh_lkePG(b_lp2);
dk_lkeB(b_kt_dk):=nh_lkeBG(b_lp2); dk_luy(b_kt_dk):=nh_luyG(b_lp2);
dk_lh_bh(b_kt_dk):=nh_lh_bhG(b_lp2);
dk_t_suat(b_kt_dk):=0; dk_thue(b_kt_dk):=0; dk_ttoan(b_kt_dk):=dk_phi(b_kt_dk);
dk_ptB(b_kt_dk):=nh_ptBG(b_lp2); dk_phiB(b_kt_dk):=nh_phiBG(b_lp2);
if dk_lh_nv(b_kt_dk)<>' ' then b_phiN:=b_phiN+dk_phi(b_kt_dk); end if;
end loop;
if nh_dt_dkbs(b_lp) is null then
b_txt:=nh_dt_dk(b_lp);
else
b_i1:=length(nh_dt_dk(b_lp))-1;
b_txt:=substr(nh_dt_dk(b_lp),1,b_i1)||','||substr(nh_dt_dkbs(b_lp),2);
end if;
lt_so_id(b_lp1):=gcn_so_id(b_lp1); lt_dk(b_lp1):=nh_dt_dk(b_lp); lt_lt(b_lp1):=nh_dt_lt(b_lp); lt_kbt(b_lp1):=nh_dt_kbt(b_lp);
b_so_dt:=b_so_dt+1;
end if;
end loop;
nh_so_dt(b_lp):=b_so_dt; b_giamN:=b_phiN-nh_ttoan(b_lp);
if b_phiN<>0 and b_giamN<>0 then
b_i1:=b_giamN/b_phiN; b_kt_dkC:=0;
for b_lp1 in b_kt_dkB..b_kt_dk loop
if dk_lh_nv(b_lp1)<>' ' then
b_i2:=round(b_i1*dk_phi(b_lp1),0);
dk_phiG(b_lp1):=b_i2;
dk_phi(b_lp1):=dk_phi(b_lp1)-b_i2;
dk_ttoan(b_lp1):=dk_phi(b_lp1);
b_giamN:=b_giamN-b_i2; b_kt_dkC:=b_lp1;
end if;
end loop;
if b_giamN<>0 and b_kt_dkC<>0 then
dk_phiG(b_kt_dkC):=dk_phiG(b_kt_dkC)+b_giamN;
dk_phi(b_kt_dkC):=dk_phi(b_kt_dkC)-b_giamN;
dk_ttoan(b_kt_dkC):=dk_phi(b_kt_dkC);
end if;
end if;
b_phiH:=b_phiH+nh_ttoan(b_lp);
end loop;
b_giamN:=b_phiH-b_ttoanH;
if b_phiH<>0 and b_giamN<>0 then
b_i1:=b_giamN/b_phiH; b_kt_dkC:=0;
for b_lp1 in 1..b_kt_dk loop
if dk_lh_nv(b_lp1)<>' ' then
b_i2:=round(b_i1*dk_phi(b_lp1),0);
dk_phiG(b_lp1):=b_i2;
dk_phi(b_lp1):=dk_phi(b_lp1)-b_i2;
b_giamN:=b_giamN-b_i2; b_kt_dkC:=b_lp1;
dk_ttoan(b_lp1):=dk_phi(b_lp1);
end if;
end loop;
if b_giamN<>0 and b_kt_dkC<>0 then
dk_phiG(b_kt_dkC):=dk_phiG(b_kt_dkC)+b_giamN;
dk_phi(b_kt_dkC):=dk_phi(b_kt_dkC)-b_giamN;
dk_ttoan(b_kt_dkC):=dk_phi(b_kt_dkC);
end if;
end if;
for b_lp in 1..dk_ma.count loop
if dk_phiB(b_lp)>dk_phi(b_lp) and dk_tien(b_lp) > 0 and dk_lh_nv(b_lp)<> ' ' then
dk_phiG(b_lp):=dk_phiB(b_lp)-dk_phi(b_lp);
dk_ptG(b_lp):=round(dk_phiG(b_lp)*100/dk_tien(b_lp),2);
else
dk_ptG(b_lp):=0; dk_phiG(b_lp):=0;
end if;
end loop;
for b_lp in 1..gcn_ten.count loop
gcn_ttoan(b_lp):=0; gcn_giam(b_lp):=0;
for b_lp1 in 1..b_kt_dk loop
if dk_lh_nv(b_lp1)<>' ' and dk_so_id(b_lp1)=gcn_so_id(b_lp) then
gcn_ttoan(b_lp):=gcn_ttoan(b_lp)+dk_phi(b_lp1);
gcn_giam(b_lp):=gcn_giam(b_lp)+dk_phiG(b_lp1);
end if;
end loop;
gcn_phi(b_lp):=gcn_ttoan(b_lp)+gcn_giam(b_lp);
end loop;
if dvi_dvi.count=0 then
for b_lp in 1..gcn_ten.count loop
gcn_dvi(b_lp):=' ';
end loop;
else
for b_lp in 1..gcn_ten.count loop
gcn_dvi(b_lp):=nvl(trim(gcn_dvi(b_lp)),' ');
end loop;
end if;
if b_ttrang in('T','D') then
for b_lp in 1..dvi_dvi.count loop
if dvi_so_id(b_lp) is null then
dvi_so_id(b_lp):=0;
elsif dvi_so_id(b_lp)>100000 then
b_so_idN:=1;
end if;
end loop;
if b_so_idN=0 then
for b_lp in 1..nh_nhom.count loop
if nh_so_id(b_lp) is null then
nh_so_id(b_lp):=0;
elsif nh_so_id(b_lp)>100000 then
b_so_idN:=1;
end if;
end loop;
end if;
if b_so_idN=1 then
b_i1:=dvi_dvi.count+nh_nhom.count+gcn_ten.count;
PHT_ID_MOIn(b_i1,b_so_idN,b_loi);
if b_loi is not null then return; end if;
end if;
for b_lp in 1..dvi_dvi.count loop
b_i1:=dvi_so_id(b_lp);
if b_i1<100000 then
if b_so_idN<>0 then
b_i2:=b_so_idN; b_so_idN:=b_so_idN+1;
else
PHT_ID_MOI(b_i2,b_loi);
if b_loi is not null then return; end if;
end if;
dvi_so_id(b_lp):=b_i2;
dt_dvi:=replace(dt_ds,'so_id_dvi\":'||to_char(b_i1)||'.','so_id_dvi":'||to_char(b_i2)||'.');
end if;
end loop;
for b_lp in 1..nh_nhom.count loop
if nh_so_id(b_lp)<100000 then
if b_so_idN<>0 then
nh_so_id(b_lp):=b_so_idN; b_so_idN:=b_so_idN+1;
else
PHT_ID_MOI(nh_so_id(b_lp),b_loi);
if b_loi is not null then return; end if;
end if;
end if;
end loop;
for b_lp in 1..gcn_ten.count loop
b_i1:=gcn_so_id(b_lp);
if b_i1<100000 then
PHT_ID_MOI(b_i2,b_loi);
if b_loi is not null then return; end if;
for b_lp1 in 1..dk_so_id.count loop
if dk_so_id(b_lp1)=gcn_so_id(b_lp) then dk_so_id(b_lp1):=b_i2; end if;
end loop;
gcn_so_id(b_lp):=b_i2; lt_so_id(b_lp):=b_i2;
gcn_kieu_gcn(b_lp):='G';
if b_so_hdL <> 'P' then gcn_gcn(b_lp):=substr(to_char(b_i2),3); end if; gcn_gcnG(b_lp):=' ';
elsif b_kieu_hd not in('S','B') then
gcn_kieu_gcn(b_lp):='G'; gcn_gcn(b_lp):=substr(to_char(gcn_so_id(b_lp)),3); gcn_gcnG(b_lp):=' ';
else
select count(*) into b_i1 from bh_sk_ds where ma_dvi=b_ma_dvi and so_id_dt=gcn_so_id(b_lp);
if b_i1=0 then b_loi:='loi:GCN cu da xoa:loi'; return; end if;
select count(*) into b_i1 from bh_sk_ds where ma_dvi=b_ma_dvi and so_id_dt=gcn_so_id(b_lp) and so_id=b_so_idG and
(nhom<>gcn_nhom(b_lp) or ten<>gcn_ten(b_lp) or
ng_sinh<>gcn_ng_sinh(b_lp) or gioi<>gcn_gioi(b_lp) or cmt<>gcn_cmt(b_lp) or
mobi<>gcn_mobi(b_lp) or email<>gcn_email(b_lp) or
ngay_hl<>gcn_ngay_hl(b_lp) or ngay_kt<>gcn_ngay_kt(b_lp) or
dchi<>gcn_dchi(b_lp) or ng_huong<>gcn_ng_huong(b_lp));
if b_i1=0 then
select gcn,kieu_gcn,gcn_g into gcn_gcn(b_lp),gcn_kieu_gcn(b_lp),gcn_gcnG(b_lp)
from bh_sk_ds where ma_dvi=b_ma_dvi and so_id=b_so_idG and so_id_dt=gcn_so_id(b_lp); --chuclh so_id=b_so_idG
else
gcn_kieu_gcn(b_lp):=b_kieu_hd;
gcn_gcn(b_lp):=substr(to_char(gcn_so_id(b_lp)),3);
select count(*) into b_i1 from bh_sk_ds where ma_dvi=b_ma_dvi and so_id_dt=gcn_so_id(b_lp) and kieu_gcn=b_kieu_hd;
gcn_gcn(b_lp):=gcn_gcn(b_lp)||'/'||b_kieu_hd||to_char(b_i1+1);
end if;
end if;
select json_object('loai' value 'C','ten' value gcn_ten(b_lp),'cmt' value gcn_cmt(b_lp),
'dchi' value gcn_dchi(b_lp),'mobi' value gcn_mobi(b_lp),'email' value gcn_email(b_lp),
'gioi' value gcn_gioi(b_lp),'ng_sinh' value gcn_ng_sinh(b_lp),'ngay_hl' value gcn_ngay_hl(b_lp)) into b_txt from dual;
PBH_DTAC_MA_NH(b_txt,gcn_ma_kh(b_lp),b_loi,b_ma_dvi,b_nsd);
if gcn_ma_kh(b_lp) in(' ','VANGLAI') then b_loi:='loi:Chua du thong tin '||gcn_ten(b_lp)||':loi'; return; end if;
b_i1:=FKH_ARR_VTRI(nh_nhom,gcn_nhom(b_lp));
PBH_SK_KHD(b_txt,nh_dt_khd(b_i1),b_loi);
if b_loi is not null then return; end if;
end loop;
end if;
b_loi:='';
exception when others then if b_loi is null then raise PROGRAM_ERROR; else null; end if;
end;