hot fix nam 19/05/2025
SQL Sprint
19/05/2025
create or replace procedure PBH_PTNCC_BPHI_CTs(
b_ma_dvi varchar2,b_nsd varchar2,b_pas varchar2,b_oraIn clob,b_oraOut out clob)
AS
b_loi varchar2(1000); b_lenh varchar2(1000); dt_ct clob:=FKH_JS_GTRIs(b_oraIn,'dt_ct');
b_lvuc varchar2(500); b_ma_sp varchar2(20); b_cdich varchar2(20); b_ngay_hl number; b_so_id number;
begin
-- Dan - Tra so_id bieu phi theo dieu kien
b_loi:=FHT_MA_NSD_KTRA(b_ma_dvi,b_nsd,b_pas,'BH','PTN','');
if b_loi is not null then raise PROGRAM_ERROR; end if;
b_lenh:=FKH_JS_LENH('ma_sp,cdich,lvuc,ngay_hl');
EXECUTE IMMEDIATE b_lenh into b_ma_sp,b_cdich,b_lvuc,b_ngay_hl using dt_ct;
b_lvuc:=PKH_MA_TENl(b_lvuc);
b_cdich:=nvl(b_cdich,' '); b_ma_sp:=nvl(b_ma_sp,' '); b_lvuc:=nvl(b_lvuc,' ');
b_so_id:=FBH_PTNCC_BPHI_SO_IDh(b_ma_sp,b_cdich,b_lvuc,b_ngay_hl);
select json_object('so_id' value b_so_id) into b_oraOut from dual;
exception when others then if b_loi is null then raise PROGRAM_ERROR; else raise_application_error(-20105,b_loi); end if;
end;
/
create or replace procedure PBH_PTNCC_TESTr(
dt_ct clob,dt_dk clob,dt_dkbs clob,
b_ma_sp out varchar2,b_cdich out varchar2,b_lvuc out varchar2,b_dtuong out nvarchar2,
b_dthu out number,
b_ma_dvi varchar2,b_nsd varchar2,b_pas varchar2,b_oraIn clob,b_oraOut out clob)
AS
b_loi varchar2(1000); b_lenh varchar2(1000); dt_ct clob:=FKH_JS_GTRIs(b_oraIn,'dt_ct');
b_lvuc varchar2(500); b_ma_sp varchar2(20); b_cdich varchar2(20); b_ngay_hl number; b_so_id number;
begin
-- Dan - Tra so_id bieu phi theo dieu kien
b_loi:=FHT_MA_NSD_KTRA(b_ma_dvi,b_nsd,b_pas,'BH','PTN','');
if b_loi is not null then raise PROGRAM_ERROR; end if;
b_lenh:=FKH_JS_LENH('ma_sp,cdich,lvuc,ngay_hl');
EXECUTE IMMEDIATE b_lenh into b_ma_sp,b_cdich,b_lvuc,b_ngay_hl using dt_ct;
b_lvuc:=PKH_MA_TENl(b_lvuc);
b_cdich:=nvl(b_cdich,' '); b_ma_sp:=nvl(b_ma_sp,' '); b_lvuc:=nvl(b_lvuc,' ');
b_so_id:=FBH_PTNCC_BPHI_SO_IDh(b_ma_sp,b_cdich,b_lvuc,b_ngay_hl);
select json_object('so_id' value b_so_id) into b_oraOut from dual;
exception when others then if b_loi is null then raise PROGRAM_ERROR; else raise_application_error(-20105,b_loi); end if;
end;
/
create or replace procedure PBH_PTNCC_TESTr(
dt_ct clob,dt_dk clob,dt_dkbs clob,
b_ma_sp out varchar2,b_cdich out varchar2,b_lvuc out varchar2,b_dtuong out nvarchar2,
b_dthu out number,
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_ppt 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,
dk_kieu out pht_type.a_var,dk_tien out pht_type.a_num,dk_pt out pht_type.a_num,dk_ppt 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,
b_loi out varchar2)
AS
b_ttrang varchar2(1); b_kt number; b_lenh varchar2(2000);
b_ngay_hl number; b_ngay_kt number; b_loai_khM varchar2(1);
b_tygia number; b_c_thue varchar2(1); b_nt_tien varchar2(5); b_so_idP number;
b_nt_phi varchar2(5); b_tp number:=0;b_thueH number;b_ttoanH number;
dk_phiB pht_type.a_num;
AS
b_ttrang varchar2(1); b_kt number; b_lenh varchar2(2000);
b_ngay_hl number; b_ngay_kt number; b_loai_khM varchar2(1);
b_tygia number; b_c_thue varchar2(1); b_nt_tien varchar2(5); b_so_idP number;
b_nt_phi varchar2(5); b_tp number:=0;b_thueH number;b_ttoanH number;
dk_phiB pht_type.a_num;
dkB_ma pht_type.a_var; dkB_ten pht_type.a_nvar; dkB_tc pht_type.a_var; dkB_ma_ct pht_type.a_var;
dkB_tien pht_type.a_num; dkB_pt pht_type.a_num; dkB_phi pht_type.a_num;
dkB_ppt pht_type.a_num; dkB_thue pht_type.a_num; dkB_ttoan pht_type.a_num;
dkB_tien pht_type.a_num; dkB_pt pht_type.a_num; dkB_phi pht_type.a_num;
dkB_ppt pht_type.a_num; dkB_thue pht_type.a_num; dkB_ttoan pht_type.a_num;
dkB_cap pht_type.a_num; dkB_ma_dk pht_type.a_var; dkB_kieu pht_type.a_var;
dkB_lh_nv pht_type.a_var; dkB_t_suat pht_type.a_num; dkB_ptB pht_type.a_num;
dkB_ptG pht_type.a_num; dkB_phiG pht_type.a_num; dkB_phiB pht_type.a_num;
dkB_lkeP pht_type.a_var; dkB_lkeB pht_type.a_var; dkB_luy pht_type.a_var; dkB_lh_bh pht_type.a_var;
dkB_lh_nv pht_type.a_var; dkB_t_suat pht_type.a_num; dkB_ptB pht_type.a_num;
dkB_ptG pht_type.a_num; dkB_phiG pht_type.a_num; dkB_phiB pht_type.a_num;
dkB_lkeP pht_type.a_var; dkB_lkeB pht_type.a_var; dkB_luy pht_type.a_var; dkB_lh_bh pht_type.a_var;
begin
-- Dan - Nhap
b_lenh:=FKH_JS_LENH('ttrang,ngay_hl,b_ngay_kt,loai_kh,ma_sp,cdich,lvuc,dtuong,dthu,thue,ttoan,nt_tien,nt_phi,tygia,c_thue');
EXECUTE IMMEDIATE b_lenh into b_ttrang,b_ngay_hl,b_ngay_kt,b_loai_khM,b_ma_sp,b_cdich,b_lvuc,b_dtuong,b_dthu,
b_thueH,b_ttoanH,b_nt_tien,b_nt_phi,b_tygia,b_c_thue using dt_ct;
b_ma_sp:=nvl(trim(b_ma_sp),' ');
if b_ma_sp<>' ' and FBH_PTNCC_SP_HAN(b_ma_sp)<>'C' then b_loi:='loi:Sai ma san pham:loi'; return; end if;
b_cdich:=nvl(trim(b_cdich),' ');
if b_cdich<>' ' and FBH_MA_CDICH_HAN(b_cdich)<>'C' then b_loi:='loi:Sai ma chien dich:loi'; return; end if;
b_lvuc:=PKH_MA_TENl(b_lvuc);
b_lvuc:=nvl(trim(b_lvuc),' ');
if b_lvuc<>' ' and FBH_MA_LVUC_HAN(b_lvuc)<>'C' then b_loi:='loi:Sai ma linh vuc:loi'; return; end if;
b_c_thue:=nvl(trim(b_c_thue),'C');
if nvl(trim(b_nt_phi),'VND')<>'VND' then b_tp:=2; end if;
b_lenh:=FKH_JS_LENH('ma,ten,tc,ma_ct,tien,pt,ppt,phi,thue,cap,ma_dk,kieu,lh_nv,t_suat,ptb,phib,lkep,lkeb,luy');
EXECUTE IMMEDIATE b_lenh bulk collect into
dk_ma,dk_ten,dk_tc,dk_ma_ct,dk_tien,dk_pt,dk_ppt,dk_phi,dk_thue,dk_cap,dk_ma_dk,dk_kieu,
dk_lh_nv,dk_t_suat,dk_ptB,dk_phiB,dk_lkeP,dk_lkeB,dk_luy using dt_dk;
b_kt:=dk_ma.count;
if b_kt=0 then b_loi:='loi:Nhap dieu khoan:loi'; return; end if;
for b_lp in 1..b_kt loop
dk_ma(b_lp):=nvl(trim(dk_ma(b_lp)),' '); dk_lh_bh(b_lp):='C'; dk_phiB(b_lp):=nvl(dk_phiB(b_lp),0);
if dk_ma(b_lp)=' ' then b_loi:='loi:Nhap dieu khoan chinh dong '||to_char(b_lp)||':loi'; return; end if;
end loop;
if trim(dt_dkbs) is not null then
EXECUTE IMMEDIATE b_lenh bulk collect into
dkB_ma,dkB_ten,dkB_tc,dkB_ma_ct,dkB_tien,dkB_pt,dkB_ppt,dkB_phi,dkB_thue,dkB_cap,dkB_ma_dk,dkB_kieu,
dkB_lh_nv,dkB_t_suat,dkB_ptB,dkB_phiB,dkB_lkeP,dkB_lkeB,dkB_luy using dt_dkbs;
for b_lp in 1..dkB_ma.count loop
b_kt:=b_kt+1; dk_ma(b_kt):=nvl(trim(dkB_ma(b_lp)),' '); dk_lh_bh(b_kt):='M';
if dk_ma(b_kt)=' ' then b_loi:='loi:Nhap dieu khoan mo rong dong '||to_char(b_lp)||':loi'; return; end if;
dk_ten(b_kt):=dkB_ten(b_lp); dk_tc(b_kt):=dkB_tc(b_lp);
dk_ma_ct(b_kt):=dkB_ma_ct(b_lp); dk_cap(b_kt):=dkB_cap(b_lp); dk_kieu(b_kt):=dkB_kieu(b_lp);
dk_tien(b_kt):=dkB_tien(b_lp); dk_pt(b_kt):=dkB_pt(b_lp);dk_ppt(b_kt):=dkB_ppt(b_lp);
dk_phi(b_kt):=dkB_phi(b_lp);dk_thue(b_kt):=dkB_thue(b_lp);
dk_ma_dk(b_kt):=dkB_ma_dk(b_lp); dk_lh_nv(b_kt):=dkB_lh_nv(b_lp);
dk_t_suat(b_kt):=dkB_t_suat(b_lp); dk_ptB(b_kt):=dkB_ptB(b_lp); dk_phiB(b_kt):=nvl(dkB_phiB(b_lp),0);
dk_lkeP(b_kt):=dkB_lkeP(b_lp); dk_lkeB(b_kt):=dkB_lkeB(b_lp); dk_luy(b_kt):=dkB_luy(b_lp);
end loop;
end if;
for b_lp in 1..dk_ma.count loop
dk_ma(b_lp):=trim(dk_ma(b_lp));
if dk_ma(b_lp) is null then b_loi:='loi:Loi nhap chi tiet nghiep vu dong '||to_char(b_lp)||':loi'; return; end if;
dk_lh_nv(b_lp):=nvl(trim(dk_lh_nv(b_lp)),' '); dk_tien(b_lp):=nvl(dk_tien(b_lp),0); dk_phi(b_lp):=nvl(dk_phi(b_lp),0);
if b_c_thue='K' then dk_thue(b_lp):=0; else dk_thue(b_lp):=nvl(dk_thue(b_lp),0); end if;
dk_ttoan(b_lp):=dk_phi(b_lp)+dk_thue(b_lp);
end loop;
if b_c_thue='C' then
for b_lp in 1..dk_ma.count loop
dk_thue(b_lp):=round(dk_phi(b_lp)*dk_t_suat(b_lp)/100, b_tp);
end loop;
elsif b_c_thue='K' then
for b_lp in 1..dk_ma.count loop
dk_thue(b_lp):=0;
end loop;
end if;
b_so_idP:=FBH_PTNCC_BPHI_SO_IDh(b_ma_sp,b_cdich,b_lvuc,b_ngay_hl);
if b_so_idP=0 then b_loi:='loi:Sai bieu phi:loi'; return;
end if;
PBH_HD_THAY_PHIg(b_nt_tien,b_nt_tien,b_tygia,b_thueH,b_ttoanH,dk_lh_nv,dk_tien,dk_phi,dk_thue,dk_ttoan,b_loi);
if b_loi is not null then return; end if;
for b_lp in 1..dk_ma.count loop
if dk_phiB(b_lp)>dk_phi(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;
b_loi:='';
exception when others then if b_loi is null then raise PROGRAM_ERROR; else null; end if;
end;
/
create or replace procedure PBH_PTNNN_BPHI_NH(
b_ma_dvi varchar2,b_nsd varchar2,b_pas varchar2,b_oraIn clob,b_oraOut out clob)
AS
b_loi varchar2(1000); b_lenh varchar2(1000); b_i1 number; b_i2 number; b_ma_ct varchar2(10);
b_kt number;
b_ma_sp varchar2(500); b_cdich varchar2(500); b_pvi varchar2(500);
b_nghe varchar2(500); b_ghan varchar2(1); b_ngay_bd number; b_ngay_kt number; b_gia_ctrinh number; b_gia_hdtv number;
-- Dan - Nhap
b_lenh:=FKH_JS_LENH('ttrang,ngay_hl,b_ngay_kt,loai_kh,ma_sp,cdich,lvuc,dtuong,dthu,thue,ttoan,nt_tien,nt_phi,tygia,c_thue');
EXECUTE IMMEDIATE b_lenh into b_ttrang,b_ngay_hl,b_ngay_kt,b_loai_khM,b_ma_sp,b_cdich,b_lvuc,b_dtuong,b_dthu,
b_thueH,b_ttoanH,b_nt_tien,b_nt_phi,b_tygia,b_c_thue using dt_ct;
b_ma_sp:=nvl(trim(b_ma_sp),' ');
if b_ma_sp<>' ' and FBH_PTNCC_SP_HAN(b_ma_sp)<>'C' then b_loi:='loi:Sai ma san pham:loi'; return; end if;
b_cdich:=nvl(trim(b_cdich),' ');
if b_cdich<>' ' and FBH_MA_CDICH_HAN(b_cdich)<>'C' then b_loi:='loi:Sai ma chien dich:loi'; return; end if;
b_lvuc:=PKH_MA_TENl(b_lvuc);
b_lvuc:=nvl(trim(b_lvuc),' ');
if b_lvuc<>' ' and FBH_MA_LVUC_HAN(b_lvuc)<>'C' then b_loi:='loi:Sai ma linh vuc:loi'; return; end if;
b_c_thue:=nvl(trim(b_c_thue),'C');
if nvl(trim(b_nt_phi),'VND')<>'VND' then b_tp:=2; end if;
b_lenh:=FKH_JS_LENH('ma,ten,tc,ma_ct,tien,pt,ppt,phi,thue,cap,ma_dk,kieu,lh_nv,t_suat,ptb,phib,lkep,lkeb,luy');
EXECUTE IMMEDIATE b_lenh bulk collect into
dk_ma,dk_ten,dk_tc,dk_ma_ct,dk_tien,dk_pt,dk_ppt,dk_phi,dk_thue,dk_cap,dk_ma_dk,dk_kieu,
dk_lh_nv,dk_t_suat,dk_ptB,dk_phiB,dk_lkeP,dk_lkeB,dk_luy using dt_dk;
b_kt:=dk_ma.count;
if b_kt=0 then b_loi:='loi:Nhap dieu khoan:loi'; return; end if;
for b_lp in 1..b_kt loop
dk_ma(b_lp):=nvl(trim(dk_ma(b_lp)),' '); dk_lh_bh(b_lp):='C'; dk_phiB(b_lp):=nvl(dk_phiB(b_lp),0);
if dk_ma(b_lp)=' ' then b_loi:='loi:Nhap dieu khoan chinh dong '||to_char(b_lp)||':loi'; return; end if;
end loop;
if trim(dt_dkbs) is not null then
EXECUTE IMMEDIATE b_lenh bulk collect into
dkB_ma,dkB_ten,dkB_tc,dkB_ma_ct,dkB_tien,dkB_pt,dkB_ppt,dkB_phi,dkB_thue,dkB_cap,dkB_ma_dk,dkB_kieu,
dkB_lh_nv,dkB_t_suat,dkB_ptB,dkB_phiB,dkB_lkeP,dkB_lkeB,dkB_luy using dt_dkbs;
for b_lp in 1..dkB_ma.count loop
b_kt:=b_kt+1; dk_ma(b_kt):=nvl(trim(dkB_ma(b_lp)),' '); dk_lh_bh(b_kt):='M';
if dk_ma(b_kt)=' ' then b_loi:='loi:Nhap dieu khoan mo rong dong '||to_char(b_lp)||':loi'; return; end if;
dk_ten(b_kt):=dkB_ten(b_lp); dk_tc(b_kt):=dkB_tc(b_lp);
dk_ma_ct(b_kt):=dkB_ma_ct(b_lp); dk_cap(b_kt):=dkB_cap(b_lp); dk_kieu(b_kt):=dkB_kieu(b_lp);
dk_tien(b_kt):=dkB_tien(b_lp); dk_pt(b_kt):=dkB_pt(b_lp);dk_ppt(b_kt):=dkB_ppt(b_lp);
dk_phi(b_kt):=dkB_phi(b_lp);dk_thue(b_kt):=dkB_thue(b_lp);
dk_ma_dk(b_kt):=dkB_ma_dk(b_lp); dk_lh_nv(b_kt):=dkB_lh_nv(b_lp);
dk_t_suat(b_kt):=dkB_t_suat(b_lp); dk_ptB(b_kt):=dkB_ptB(b_lp); dk_phiB(b_kt):=nvl(dkB_phiB(b_lp),0);
dk_lkeP(b_kt):=dkB_lkeP(b_lp); dk_lkeB(b_kt):=dkB_lkeB(b_lp); dk_luy(b_kt):=dkB_luy(b_lp);
end loop;
end if;
for b_lp in 1..dk_ma.count loop
dk_ma(b_lp):=trim(dk_ma(b_lp));
if dk_ma(b_lp) is null then b_loi:='loi:Loi nhap chi tiet nghiep vu dong '||to_char(b_lp)||':loi'; return; end if;
dk_lh_nv(b_lp):=nvl(trim(dk_lh_nv(b_lp)),' '); dk_tien(b_lp):=nvl(dk_tien(b_lp),0); dk_phi(b_lp):=nvl(dk_phi(b_lp),0);
if b_c_thue='K' then dk_thue(b_lp):=0; else dk_thue(b_lp):=nvl(dk_thue(b_lp),0); end if;
dk_ttoan(b_lp):=dk_phi(b_lp)+dk_thue(b_lp);
end loop;
if b_c_thue='C' then
for b_lp in 1..dk_ma.count loop
dk_thue(b_lp):=round(dk_phi(b_lp)*dk_t_suat(b_lp)/100, b_tp);
end loop;
elsif b_c_thue='K' then
for b_lp in 1..dk_ma.count loop
dk_thue(b_lp):=0;
end loop;
end if;
b_so_idP:=FBH_PTNCC_BPHI_SO_IDh(b_ma_sp,b_cdich,b_lvuc,b_ngay_hl);
if b_so_idP=0 then b_loi:='loi:Sai bieu phi:loi'; return;
end if;
PBH_HD_THAY_PHIg(b_nt_tien,b_nt_tien,b_tygia,b_thueH,b_ttoanH,dk_lh_nv,dk_tien,dk_phi,dk_thue,dk_ttoan,b_loi);
if b_loi is not null then return; end if;
for b_lp in 1..dk_ma.count loop
if dk_phiB(b_lp)>dk_phi(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;
b_loi:='';
exception when others then if b_loi is null then raise PROGRAM_ERROR; else null; end if;
end;
/
create or replace procedure PBH_PTNNN_BPHI_NH(
b_ma_dvi varchar2,b_nsd varchar2,b_pas varchar2,b_oraIn clob,b_oraOut out clob)
AS
b_loi varchar2(1000); b_lenh varchar2(1000); b_i1 number; b_i2 number; b_ma_ct varchar2(10);
b_kt number;
b_ma_sp varchar2(500); b_cdich varchar2(500); b_pvi varchar2(500);
b_nghe varchar2(500); b_ghan varchar2(1); b_ngay_bd number; b_ngay_kt number; b_gia_ctrinh number; b_gia_hdtv number;
dk_ma pht_type.a_var; dk_ten pht_type.a_nvar; dk_tc pht_type.a_var; dk_ma_ct pht_type.a_var;
dk_kieu pht_type.a_var; dk_tien pht_type.a_num; dk_pt pht_type.a_num;
dk_phi pht_type.a_num; dk_lkeM pht_type.a_var; dk_lkeP pht_type.a_var; dk_lkeB pht_type.a_var; dk_luy pht_type.a_var;
dk_ma_dk pht_type.a_var; dk_ma_dkC pht_type.a_var; dk_lh_nv pht_type.a_var; dk_t_suat pht_type.a_num; dk_lh_bh pht_type.a_var;
dk_kieu pht_type.a_var; dk_tien pht_type.a_num; dk_pt pht_type.a_num;
dk_phi pht_type.a_num; dk_lkeM pht_type.a_var; dk_lkeP pht_type.a_var; dk_lkeB pht_type.a_var; dk_luy pht_type.a_var;
dk_ma_dk pht_type.a_var; dk_ma_dkC pht_type.a_var; dk_lh_nv pht_type.a_var; dk_t_suat pht_type.a_num; dk_lh_bh pht_type.a_var;
dkB_ma pht_type.a_var; dkB_ten pht_type.a_nvar; dkB_tc pht_type.a_var; dkB_ma_ct pht_type.a_var;
dkB_kieu pht_type.a_var; dkB_tien pht_type.a_num; dkB_pt pht_type.a_num;
dkB_phi pht_type.a_num; dkB_lkeM pht_type.a_var; dkB_lkeP pht_type.a_var; dkB_lkeB pht_type.a_var; dkB_luy pht_type.a_var;
dkB_ma_dk pht_type.a_var;
dkB_kieu pht_type.a_var; dkB_tien pht_type.a_num; dkB_pt pht_type.a_num;
dkB_phi pht_type.a_num; dkB_lkeM pht_type.a_var; dkB_lkeP pht_type.a_var; dkB_lkeB pht_type.a_var; dkB_luy pht_type.a_var;
dkB_ma_dk pht_type.a_var;
lt_ma_dk pht_type.a_var; lt_ma_lt pht_type.a_var; lt_ten pht_type.a_var;
b_dt_ct clob; b_dt_dk clob; b_dt_dkbs clob; b_dt_lt clob; b_dt_khd clob; b_dt_kbt clob; b_so_id number;
begin
-- Nam - Nhap
b_loi:=FHT_MA_NSD_KTRA(b_ma_dvi,b_nsd,b_pas,'BH','PTN','M');
if b_loi is not null then raise PROGRAM_ERROR; end if;
b_lenh:=FKH_JS_LENHc('dt_ct,dt_dk,dt_dkbs,dt_lt,dt_khd,dt_kbt');
EXECUTE IMMEDIATE b_lenh into b_dt_ct,b_dt_dk,b_dt_dkbs,b_dt_lt,b_dt_khd,b_dt_kbt using b_oraIn;
b_lenh:=FKH_JS_LENH('ma_sp,cdich,pvi,nghe,ghan,ngay_bd,ngay_kt,gct,gtv');
EXECUTE IMMEDIATE b_lenh into b_ma_sp,b_cdich,b_pvi,b_nghe,b_ghan,b_ngay_bd,b_ngay_kt,b_gia_ctrinh,b_gia_hdtv using b_dt_ct;
if trim(b_ma_sp) is null then
b_loi:='loi:Nhap san pham:loi'; raise PROGRAM_ERROR;
elsif trim(b_ma_sp) is not null then b_ma_sp:=PKH_MA_TENl(b_ma_sp);
elsif FBH_PTNNN_SP_HAN(b_ma_sp)<>'C' then
b_loi:='loi:Ma san pham '||b_ma_sp||'da het su dung:loi'; raise PROGRAM_ERROR;
end if;
if trim(b_cdich) is null then
b_cdich:=' ';
elsif trim(b_cdich) is not null then b_cdich:=PKH_MA_TENl(b_cdich);
elsif FBH_MA_CDICH_HAN(b_cdich)<>'C' then
b_loi:='loi:Da het chien dich:loi'; raise PROGRAM_ERROR;
end if;
if trim(b_pvi) is null then b_pvi:=' ';
else b_pvi:=PKH_MA_TENl(b_pvi);
end if;
if trim(b_nghe) is null then b_loi:='loi:Nhap nghe nghiep:loi'; raise PROGRAM_ERROR; end if;
b_nghe:=PKH_MA_TENl(b_nghe);
b_ma_sp:=nvl(b_ma_sp,' '); b_cdich:=nvl(b_cdich,' ');
b_pvi:=nvl(b_pvi,' '); b_nghe:=nvl(b_nghe,' '); b_ghan:=nvl(b_ghan,' ');
if b_gia_ctrinh is null then b_gia_ctrinh:=0;end if;
if b_gia_hdtv is null then b_gia_hdtv:=0;end if;
if b_ngay_bd is null or b_ngay_bd in(0,30000101) then b_ngay_bd:=PKH_NG_CSO(sysdate); end if;
if b_ngay_kt is null or b_ngay_kt=0 then b_ngay_kt:=30000101; end if;
b_lenh:=FKH_JS_LENH('ma,ten,tc,ma_ct,ma_dk,kieu,tien,pt,phi,lkem,lkep,lkeb,luy');
EXECUTE IMMEDIATE b_lenh bulk collect into
dk_ma,dk_ten,dk_tc,dk_ma_ct,dk_ma_dk,dk_kieu,dk_tien,dk_pt,dk_phi,dk_lkeM,dk_lkeP,dk_lkeB,dk_luy using b_dt_dk;
b_kt:=dk_ma.count;
if b_kt=0 then b_loi:='loi:Nhap dieu khoan:loi'; raise PROGRAM_ERROR; end if;
for b_lp in 1..b_kt loop dk_lh_bh(b_lp):='C'; end loop;
if trim(b_dt_dkbs) is not null then
EXECUTE IMMEDIATE b_lenh bulk collect into
dkB_ma,dkB_ten,dkB_tc,dkB_ma_ct,dkB_ma_dk,dkB_kieu,dkB_tien,dkB_pt,dkB_phi,
dkB_lkeM,dkB_lkeP,dkB_lkeB,dkB_luy using b_dt_dkbs;
for b_lp in 1..dkB_ma.count loop
b_kt:=b_kt+1; dk_lh_bh(b_kt):='M';
dk_ma(b_kt):=dkB_ma(b_lp); dk_ten(b_kt):=dkB_ten(b_lp); dk_tc(b_kt):=dkB_tc(b_lp);
dk_ma_ct(b_kt):=dkB_ma_ct(b_lp); dk_ma_dk(b_kt):=dkB_ma_dk(b_lp); dk_kieu(b_kt):=dkB_kieu(b_lp);
dk_tien(b_kt):=dkB_tien(b_lp); dk_pt(b_kt):=dkB_pt(b_lp); dk_phi(b_kt):=dkB_phi(b_lp);
dk_lkeM(b_kt):=dkB_lkeM(b_lp); dk_lkeP(b_kt):=dkB_lkeP(b_lp); dk_lkeB(b_kt):=dkB_lkeB(b_lp); dk_luy(b_kt):=dkB_luy(b_lp);
end loop;
end if;
for b_lp in 1..dk_ma.count loop
b_loi:='loi:Sai chi tiet dong '||to_char(b_lp)||':loi';
dk_ma(b_lp):=nvl(trim(dk_ma(b_lp)),' ');
if dk_ma(b_lp)=' ' then return; end if;
if trim(dk_ten(b_lp)) is null then
b_i1:=b_lp-1; b_i2:=0;
for b_lp1 in 1..b_i1 loop
if dk_ma(b_lp1)=dk_ma(b_lp) then b_i2:=1; exit; end if;
end loop;
if b_i2=0 then return; end if;
end if;
dk_tc(b_lp):=nvl(trim(dk_tc(b_lp)),'C');
dk_ma_ct(b_lp):=nvl(trim(dk_ma_ct(b_lp)),' ');
if dk_ma(b_lp)=dk_ma_ct(b_lp) then b_loi:='loi:Trung ma cap tren ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR; end if;
if dk_tc(b_lp)='C' then
dk_lkeP(b_lp):=nvl(trim(dk_lkeP(b_lp)),'G'); dk_lkeB(b_lp):=nvl(trim(dk_lkeB(b_lp)),'G');
else
dk_lkeP(b_lp):=nvl(trim(dk_lkeP(b_lp)),'T'); dk_lkeB(b_lp):=nvl(trim(dk_lkeB(b_lp)),'T');
end if;
dk_luy(b_lp):=nvl(trim(dk_luy(b_lp)),'C'); dk_kieu(b_lp):=nvl(trim(dk_kieu(b_lp)),'T');
dk_ma_dk(b_lp):=nvl(trim(dk_ma_dk(b_lp)),' '); dk_lh_nv(b_lp):=' '; dk_t_suat(b_lp):=0;
if dk_ma_dk(b_lp)<>' ' then
if dk_lh_bh(b_lp)='C' then
if FBH_MA_DK_HAN(dk_ma_dk(b_lp))='K' then
b_loi:='loi:Dieu khoan: '||dk_ma_dk(b_lp)||' da het su dung:loi'; raise PROGRAM_ERROR;
end if;
select nvl(min(lh_nv),' ') into dk_lh_nv(b_lp) from bh_ma_dk where ma=dk_ma_dk(b_lp);
else
if FBH_MA_DKBS_HAN(dk_ma_dk(b_lp))='K' then
b_loi:='loi:Dieu khoan bo sung: '||dk_ma_dk(b_lp)||' da het su dung:loi'; raise PROGRAM_ERROR;
end if;
select nvl(min(lh_nv),' ') into dk_lh_nv(b_lp) from bh_ma_dkbs where ma=dk_ma_dk(b_lp);
end if;
if dk_lh_nv(b_lp)<>' ' then dk_t_suat(b_lp):=FBH_MA_LHNV_THUE(dk_lh_nv(b_lp)); end if;
end if;
end loop;
for b_lp in 1..dk_ma.count loop
b_i1:=b_lp+1;
for b_lp1 in b_i1..dk_ma.count loop
if dk_ma(b_lp)=dk_ma(b_lp1) and dk_tien(b_lp)=dk_tien(b_lp1) then b_loi:='loi:Trung ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR;
end if;
end loop;
if dk_tc(b_lp)='T' then
b_i1:=0;
for b_lp1 in 1..dk_ma.count loop
if dk_ma(b_lp)=dk_ma_ct(b_lp1) and dk_tc(b_lp1)<>'K' then b_i1:=1; exit; end if;
end loop;
if b_i1=0 then b_loi:='loi:Nhap ma chi tiet ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR; end if;
end if;
end loop;
for b_lp in 1..dk_ma.count loop
if dk_tc(b_lp)='C' and dk_ma_ct(b_lp)!=' ' then
b_i1:=0;
for b_lp1 in 1..dk_ma.count loop
if dk_ma(b_lp1)=dk_ma_ct(b_lp) and dk_tc(b_lp1)='T' then b_i1:=1; exit; end if;
end loop;
if b_i1=0 then b_loi:='loi:Nhap ma cap tren ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR; end if;
end if;
end loop;
for b_lp in 1..dk_ma.count loop
if dk_tc(b_lp)='C' and dk_ma_ct(b_lp)!=' ' then
b_lenh:=dk_ma(b_lp); b_ma_ct:=dk_ma_ct(b_lp);
while b_ma_ct<>' ' loop
b_i1:=0;
for b_lp1 in 1..dk_ma.count loop
if dk_ma(b_lp1)=b_ma_ct then b_i1:=b_lp1; exit; end if;
end loop;
if b_i1=0 then
b_ma_ct:='';
else
b_ma_ct:=dk_ma_ct(b_i1);
if PKH_MA_MA(b_lenh,b_ma_ct) then b_loi:='loi:Vong lap ma cap tren ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR; end if;
b_lenh:=b_lenh||','||dk_ma(b_i1);
end if;
end loop;
end if;
end loop;
for b_lp in 1..dk_ma.count loop
if dk_lkeM(b_lp)<>'C' then
dk_ma_dkC(b_lp):=' ';
elsif dk_lh_bh(b_lp)='C' then
dk_ma_dkC(b_lp):=dk_ma_ct(b_lp);
else
dk_ma_dkC(b_lp):=FBH_MA_DKBS_MA_DK(dk_ma_dk(b_lp));
end if;
end loop;
if trim(b_dt_lt) is not null then
b_lenh:=FKH_JS_LENH('ma_dk,ma_lt,ten');
EXECUTE IMMEDIATE b_lenh bulk collect into lt_ma_dk,lt_ma_lt,lt_ten using b_dt_lt;
for b_lp in 1..lt_ma_lt.count loop
if trim(lt_ma_lt(b_lp)) is null then
b_loi:='loi:Nhap ma loai tru dong '||to_char(b_lp)||':loi'; raise PROGRAM_ERROR;
end if;
if trim(lt_ma_dk(b_lp)) is null then lt_ma_dk(b_lp):=' '; end if;
if FBH_MA_DKLT_HAN(lt_ma_dk(b_lp),lt_ma_lt(b_lp))='K' then
b_loi:='loi:Dieu khoan loai tru: '||lt_ma_lt(b_lp)||' da het su dung:loi'; raise PROGRAM_ERROR;
end if;
end loop;
end if;
b_so_id:=FBH_PTNNN_BPHI_SO_IDn('G',b_ma_sp,b_cdich,b_nghe,b_pvi,b_ghan,b_ngay_bd,b_gia_ctrinh,b_gia_hdtv);
if b_so_id<>0 then
delete bh_ptnnn_phi_txt where so_id=b_so_id;
delete bh_ptnnn_phi_lt where so_id=b_so_id;
delete bh_ptnnn_phi_dk where so_id=b_so_id;
delete bh_ptnnn_phi where so_id=b_so_id;
end if;
if b_so_id=0 then
PHT_ID_MOI(b_so_id,b_loi);
if b_loi is not null then raise PROGRAM_ERROR; end if;
end if;
b_loi:='loi:Loi Table bh_ptnnn_phi:loi';
insert into bh_ptnnn_phi values(b_ma_dvi,b_so_id,b_ma_sp,b_cdich,b_nghe,b_pvi,b_ghan,'G',b_gia_ctrinh,b_gia_hdtv,b_ngay_bd,b_ngay_kt,b_nsd);
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_ct','"'||b_dt_ct||'"');
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_dk','"'||b_dt_dk||'"');
if trim(b_dt_dkbs) is not null then
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_dkbs','"'||b_dt_dkbs||'"');
end if;
for b_lp in 1..dk_ma.count loop
insert into bh_ptnnn_phi_dk values(b_ma_dvi,b_so_id,b_lp,dk_ma(b_lp),dk_ten(b_lp),dk_tc(b_lp),dk_ma_ct(b_lp),
dk_kieu(b_lp),dk_tien(b_lp),dk_pt(b_lp),dk_phi(b_lp),dk_lkeM(b_lp),dk_lkeP(b_lp),dk_lkeB(b_lp),dk_luy(b_lp),
dk_ma_dk(b_lp),dk_ma_dkC(b_lp),dk_lh_nv(b_lp),dk_t_suat(b_lp),0,dk_lh_bh(b_lp));
end loop;
for r_lp in(select ma,ma_ct,so_id,bt,level from (select t.so_id,t.bt,t.ma,t.ma_ct from bh_ptnnn_phi_dk t where t.so_id = b_so_id) t start with t.ma_ct=' ' CONNECT BY prior t.ma=t.ma_ct) loop
update bh_ptnnn_phi_dk set cap=r_lp.level where so_id=r_lp.so_id and bt=r_lp.bt;
end loop;
if lt_ma_lt.count<>0 then
for b_lp in 1..lt_ma_lt.count loop
insert into bh_ptnnn_phi_lt values(b_ma_dvi,b_so_id,b_lp,lt_ma_lt(b_lp),lt_ten(b_lp));
end loop;
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_lt','"'||b_dt_lt||'"');
end if;
if trim(b_dt_khd) is not null then
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_khd','"'||b_dt_khd||'"');
end if;
if trim(b_dt_kbt) is not null then
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_kbt','"'||b_dt_kbt||'"');
end if;
commit;
select json_object('so_id' value b_so_id) into b_oraOut from dual;
exception when others then rollback; if b_loi is null then raise PROGRAM_ERROR; else raise_application_error(-20105,b_loi); end if;
end;
/
create or replace procedure PBH_BT_GD_TTRANG_HS_MAU
(b_ma_dvi varchar2,b_nsd varchar2,b_pas varchar2,b_oraIn clob,b_oraOut out clob)
AS
b_loi varchar2(100); b_lenh varchar2(1000); b_i1 number;
cs_ttr clob:='';b_so_id number;
begin
-- Dan - Trang thai ho so
delete temp_1; delete bh_hd_ttrang_temp; commit;
b_loi:=FHT_MA_NSD_KTRA(b_ma_dvi,b_nsd,b_pas,'BH','','');
if b_loi is not null then raise PROGRAM_ERROR; end if;
b_lenh:=FKH_JS_LENH('so_id');
EXECUTE IMMEDIATE b_lenh into b_so_id using b_oraIn;
select count(*) into b_i1 from bh_bt_gd_tu where ma_dvi=b_ma_dvi and so_id_hs=b_so_id;
if b_i1<>0 then insert into bh_hd_ttrang_temp values('gd_tu','V'); end if;
if FBH_BT_GD_HTHANH(b_ma_dvi,b_so_id)='H' then
insert into temp_1(c3,n5) select ma_nt,max(ngay_ht) from bh_bt_gd_sc where ma_dvi=b_ma_dvi and so_id=b_so_id group by ma_nt;
update temp_1 set n2=(select ton from bh_bt_gd_sc where ma_dvi=b_ma_dvi and so_id=b_so_id and ma_nt=c3 and ngay_ht=n5);
select count(*) into b_i1 from temp_1 where n2<>0;
if b_i1<>0 then insert into bh_hd_ttrang_temp values('gd_tt','D'); end if;
end if;
select count(*) into b_i1 from bh_hd_ttrang_temp;
if b_i1<>0 then
select JSON_ARRAYAGG(json_object(nv,tt) returning clob) into cs_ttr from bh_hd_ttrang_temp;
end if;
select json_object('cs_ttr' value cs_ttr) into b_oraOut from dual;
end;
/
create or replace function FBH_BT_GD_HTHANH(b_ma_dvi varchar2,b_so_id number) return varchar2
AS
b_kq varchar2(1); b_ngay_qd number;
begin
-- Nam - Xac dinh da hoan thanh
select nvl(max(ngay_qd),0) into b_ngay_qd from bh_bt_gd_hs where ma_dvi=b_ma_dvi and so_id=b_so_id;
if b_ngay_qd<30000101 or b_ngay_qd>0 or b_ngay_qd is not null then b_kq:='H'; else b_kq:='K'; end if;
return b_kq;
end;
b_dt_ct clob; b_dt_dk clob; b_dt_dkbs clob; b_dt_lt clob; b_dt_khd clob; b_dt_kbt clob; b_so_id number;
begin
-- Nam - Nhap
b_loi:=FHT_MA_NSD_KTRA(b_ma_dvi,b_nsd,b_pas,'BH','PTN','M');
if b_loi is not null then raise PROGRAM_ERROR; end if;
b_lenh:=FKH_JS_LENHc('dt_ct,dt_dk,dt_dkbs,dt_lt,dt_khd,dt_kbt');
EXECUTE IMMEDIATE b_lenh into b_dt_ct,b_dt_dk,b_dt_dkbs,b_dt_lt,b_dt_khd,b_dt_kbt using b_oraIn;
b_lenh:=FKH_JS_LENH('ma_sp,cdich,pvi,nghe,ghan,ngay_bd,ngay_kt,gct,gtv');
EXECUTE IMMEDIATE b_lenh into b_ma_sp,b_cdich,b_pvi,b_nghe,b_ghan,b_ngay_bd,b_ngay_kt,b_gia_ctrinh,b_gia_hdtv using b_dt_ct;
if trim(b_ma_sp) is null then
b_loi:='loi:Nhap san pham:loi'; raise PROGRAM_ERROR;
elsif trim(b_ma_sp) is not null then b_ma_sp:=PKH_MA_TENl(b_ma_sp);
elsif FBH_PTNNN_SP_HAN(b_ma_sp)<>'C' then
b_loi:='loi:Ma san pham '||b_ma_sp||'da het su dung:loi'; raise PROGRAM_ERROR;
end if;
if trim(b_cdich) is null then
b_cdich:=' ';
elsif trim(b_cdich) is not null then b_cdich:=PKH_MA_TENl(b_cdich);
elsif FBH_MA_CDICH_HAN(b_cdich)<>'C' then
b_loi:='loi:Da het chien dich:loi'; raise PROGRAM_ERROR;
end if;
if trim(b_pvi) is null then b_pvi:=' ';
else b_pvi:=PKH_MA_TENl(b_pvi);
end if;
if trim(b_nghe) is null then b_loi:='loi:Nhap nghe nghiep:loi'; raise PROGRAM_ERROR; end if;
b_nghe:=PKH_MA_TENl(b_nghe);
b_ma_sp:=nvl(b_ma_sp,' '); b_cdich:=nvl(b_cdich,' ');
b_pvi:=nvl(b_pvi,' '); b_nghe:=nvl(b_nghe,' '); b_ghan:=nvl(b_ghan,' ');
if b_gia_ctrinh is null then b_gia_ctrinh:=0;end if;
if b_gia_hdtv is null then b_gia_hdtv:=0;end if;
if b_ngay_bd is null or b_ngay_bd in(0,30000101) then b_ngay_bd:=PKH_NG_CSO(sysdate); end if;
if b_ngay_kt is null or b_ngay_kt=0 then b_ngay_kt:=30000101; end if;
b_lenh:=FKH_JS_LENH('ma,ten,tc,ma_ct,ma_dk,kieu,tien,pt,phi,lkem,lkep,lkeb,luy');
EXECUTE IMMEDIATE b_lenh bulk collect into
dk_ma,dk_ten,dk_tc,dk_ma_ct,dk_ma_dk,dk_kieu,dk_tien,dk_pt,dk_phi,dk_lkeM,dk_lkeP,dk_lkeB,dk_luy using b_dt_dk;
b_kt:=dk_ma.count;
if b_kt=0 then b_loi:='loi:Nhap dieu khoan:loi'; raise PROGRAM_ERROR; end if;
for b_lp in 1..b_kt loop dk_lh_bh(b_lp):='C'; end loop;
if trim(b_dt_dkbs) is not null then
EXECUTE IMMEDIATE b_lenh bulk collect into
dkB_ma,dkB_ten,dkB_tc,dkB_ma_ct,dkB_ma_dk,dkB_kieu,dkB_tien,dkB_pt,dkB_phi,
dkB_lkeM,dkB_lkeP,dkB_lkeB,dkB_luy using b_dt_dkbs;
for b_lp in 1..dkB_ma.count loop
b_kt:=b_kt+1; dk_lh_bh(b_kt):='M';
dk_ma(b_kt):=dkB_ma(b_lp); dk_ten(b_kt):=dkB_ten(b_lp); dk_tc(b_kt):=dkB_tc(b_lp);
dk_ma_ct(b_kt):=dkB_ma_ct(b_lp); dk_ma_dk(b_kt):=dkB_ma_dk(b_lp); dk_kieu(b_kt):=dkB_kieu(b_lp);
dk_tien(b_kt):=dkB_tien(b_lp); dk_pt(b_kt):=dkB_pt(b_lp); dk_phi(b_kt):=dkB_phi(b_lp);
dk_lkeM(b_kt):=dkB_lkeM(b_lp); dk_lkeP(b_kt):=dkB_lkeP(b_lp); dk_lkeB(b_kt):=dkB_lkeB(b_lp); dk_luy(b_kt):=dkB_luy(b_lp);
end loop;
end if;
for b_lp in 1..dk_ma.count loop
b_loi:='loi:Sai chi tiet dong '||to_char(b_lp)||':loi';
dk_ma(b_lp):=nvl(trim(dk_ma(b_lp)),' ');
if dk_ma(b_lp)=' ' then return; end if;
if trim(dk_ten(b_lp)) is null then
b_i1:=b_lp-1; b_i2:=0;
for b_lp1 in 1..b_i1 loop
if dk_ma(b_lp1)=dk_ma(b_lp) then b_i2:=1; exit; end if;
end loop;
if b_i2=0 then return; end if;
end if;
dk_tc(b_lp):=nvl(trim(dk_tc(b_lp)),'C');
dk_ma_ct(b_lp):=nvl(trim(dk_ma_ct(b_lp)),' ');
if dk_ma(b_lp)=dk_ma_ct(b_lp) then b_loi:='loi:Trung ma cap tren ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR; end if;
if dk_tc(b_lp)='C' then
dk_lkeP(b_lp):=nvl(trim(dk_lkeP(b_lp)),'G'); dk_lkeB(b_lp):=nvl(trim(dk_lkeB(b_lp)),'G');
else
dk_lkeP(b_lp):=nvl(trim(dk_lkeP(b_lp)),'T'); dk_lkeB(b_lp):=nvl(trim(dk_lkeB(b_lp)),'T');
end if;
dk_luy(b_lp):=nvl(trim(dk_luy(b_lp)),'C'); dk_kieu(b_lp):=nvl(trim(dk_kieu(b_lp)),'T');
dk_ma_dk(b_lp):=nvl(trim(dk_ma_dk(b_lp)),' '); dk_lh_nv(b_lp):=' '; dk_t_suat(b_lp):=0;
if dk_ma_dk(b_lp)<>' ' then
if dk_lh_bh(b_lp)='C' then
if FBH_MA_DK_HAN(dk_ma_dk(b_lp))='K' then
b_loi:='loi:Dieu khoan: '||dk_ma_dk(b_lp)||' da het su dung:loi'; raise PROGRAM_ERROR;
end if;
select nvl(min(lh_nv),' ') into dk_lh_nv(b_lp) from bh_ma_dk where ma=dk_ma_dk(b_lp);
else
if FBH_MA_DKBS_HAN(dk_ma_dk(b_lp))='K' then
b_loi:='loi:Dieu khoan bo sung: '||dk_ma_dk(b_lp)||' da het su dung:loi'; raise PROGRAM_ERROR;
end if;
select nvl(min(lh_nv),' ') into dk_lh_nv(b_lp) from bh_ma_dkbs where ma=dk_ma_dk(b_lp);
end if;
if dk_lh_nv(b_lp)<>' ' then dk_t_suat(b_lp):=FBH_MA_LHNV_THUE(dk_lh_nv(b_lp)); end if;
end if;
end loop;
for b_lp in 1..dk_ma.count loop
b_i1:=b_lp+1;
for b_lp1 in b_i1..dk_ma.count loop
if dk_ma(b_lp)=dk_ma(b_lp1) and dk_tien(b_lp)=dk_tien(b_lp1) then b_loi:='loi:Trung ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR;
end if;
end loop;
if dk_tc(b_lp)='T' then
b_i1:=0;
for b_lp1 in 1..dk_ma.count loop
if dk_ma(b_lp)=dk_ma_ct(b_lp1) and dk_tc(b_lp1)<>'K' then b_i1:=1; exit; end if;
end loop;
if b_i1=0 then b_loi:='loi:Nhap ma chi tiet ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR; end if;
end if;
end loop;
for b_lp in 1..dk_ma.count loop
if dk_tc(b_lp)='C' and dk_ma_ct(b_lp)!=' ' then
b_i1:=0;
for b_lp1 in 1..dk_ma.count loop
if dk_ma(b_lp1)=dk_ma_ct(b_lp) and dk_tc(b_lp1)='T' then b_i1:=1; exit; end if;
end loop;
if b_i1=0 then b_loi:='loi:Nhap ma cap tren ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR; end if;
end if;
end loop;
for b_lp in 1..dk_ma.count loop
if dk_tc(b_lp)='C' and dk_ma_ct(b_lp)!=' ' then
b_lenh:=dk_ma(b_lp); b_ma_ct:=dk_ma_ct(b_lp);
while b_ma_ct<>' ' loop
b_i1:=0;
for b_lp1 in 1..dk_ma.count loop
if dk_ma(b_lp1)=b_ma_ct then b_i1:=b_lp1; exit; end if;
end loop;
if b_i1=0 then
b_ma_ct:='';
else
b_ma_ct:=dk_ma_ct(b_i1);
if PKH_MA_MA(b_lenh,b_ma_ct) then b_loi:='loi:Vong lap ma cap tren ma: '||dk_ma(b_lp)||':loi'; raise PROGRAM_ERROR; end if;
b_lenh:=b_lenh||','||dk_ma(b_i1);
end if;
end loop;
end if;
end loop;
for b_lp in 1..dk_ma.count loop
if dk_lkeM(b_lp)<>'C' then
dk_ma_dkC(b_lp):=' ';
elsif dk_lh_bh(b_lp)='C' then
dk_ma_dkC(b_lp):=dk_ma_ct(b_lp);
else
dk_ma_dkC(b_lp):=FBH_MA_DKBS_MA_DK(dk_ma_dk(b_lp));
end if;
end loop;
if trim(b_dt_lt) is not null then
b_lenh:=FKH_JS_LENH('ma_dk,ma_lt,ten');
EXECUTE IMMEDIATE b_lenh bulk collect into lt_ma_dk,lt_ma_lt,lt_ten using b_dt_lt;
for b_lp in 1..lt_ma_lt.count loop
if trim(lt_ma_lt(b_lp)) is null then
b_loi:='loi:Nhap ma loai tru dong '||to_char(b_lp)||':loi'; raise PROGRAM_ERROR;
end if;
if trim(lt_ma_dk(b_lp)) is null then lt_ma_dk(b_lp):=' '; end if;
if FBH_MA_DKLT_HAN(lt_ma_dk(b_lp),lt_ma_lt(b_lp))='K' then
b_loi:='loi:Dieu khoan loai tru: '||lt_ma_lt(b_lp)||' da het su dung:loi'; raise PROGRAM_ERROR;
end if;
end loop;
end if;
b_so_id:=FBH_PTNNN_BPHI_SO_IDn('G',b_ma_sp,b_cdich,b_nghe,b_pvi,b_ghan,b_ngay_bd,b_gia_ctrinh,b_gia_hdtv);
if b_so_id<>0 then
delete bh_ptnnn_phi_txt where so_id=b_so_id;
delete bh_ptnnn_phi_lt where so_id=b_so_id;
delete bh_ptnnn_phi_dk where so_id=b_so_id;
delete bh_ptnnn_phi where so_id=b_so_id;
end if;
if b_so_id=0 then
PHT_ID_MOI(b_so_id,b_loi);
if b_loi is not null then raise PROGRAM_ERROR; end if;
end if;
b_loi:='loi:Loi Table bh_ptnnn_phi:loi';
insert into bh_ptnnn_phi values(b_ma_dvi,b_so_id,b_ma_sp,b_cdich,b_nghe,b_pvi,b_ghan,'G',b_gia_ctrinh,b_gia_hdtv,b_ngay_bd,b_ngay_kt,b_nsd);
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_ct','"'||b_dt_ct||'"');
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_dk','"'||b_dt_dk||'"');
if trim(b_dt_dkbs) is not null then
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_dkbs','"'||b_dt_dkbs||'"');
end if;
for b_lp in 1..dk_ma.count loop
insert into bh_ptnnn_phi_dk values(b_ma_dvi,b_so_id,b_lp,dk_ma(b_lp),dk_ten(b_lp),dk_tc(b_lp),dk_ma_ct(b_lp),
dk_kieu(b_lp),dk_tien(b_lp),dk_pt(b_lp),dk_phi(b_lp),dk_lkeM(b_lp),dk_lkeP(b_lp),dk_lkeB(b_lp),dk_luy(b_lp),
dk_ma_dk(b_lp),dk_ma_dkC(b_lp),dk_lh_nv(b_lp),dk_t_suat(b_lp),0,dk_lh_bh(b_lp));
end loop;
for r_lp in(select ma,ma_ct,so_id,bt,level from (select t.so_id,t.bt,t.ma,t.ma_ct from bh_ptnnn_phi_dk t where t.so_id = b_so_id) t start with t.ma_ct=' ' CONNECT BY prior t.ma=t.ma_ct) loop
update bh_ptnnn_phi_dk set cap=r_lp.level where so_id=r_lp.so_id and bt=r_lp.bt;
end loop;
if lt_ma_lt.count<>0 then
for b_lp in 1..lt_ma_lt.count loop
insert into bh_ptnnn_phi_lt values(b_ma_dvi,b_so_id,b_lp,lt_ma_lt(b_lp),lt_ten(b_lp));
end loop;
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_lt','"'||b_dt_lt||'"');
end if;
if trim(b_dt_khd) is not null then
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_khd','"'||b_dt_khd||'"');
end if;
if trim(b_dt_kbt) is not null then
insert into bh_ptnnn_phi_txt values(b_ma_dvi,b_so_id,'dt_kbt','"'||b_dt_kbt||'"');
end if;
commit;
select json_object('so_id' value b_so_id) into b_oraOut from dual;
exception when others then rollback; if b_loi is null then raise PROGRAM_ERROR; else raise_application_error(-20105,b_loi); end if;
end;
/
create or replace procedure PBH_BT_GD_TTRANG_HS_MAU
(b_ma_dvi varchar2,b_nsd varchar2,b_pas varchar2,b_oraIn clob,b_oraOut out clob)
AS
b_loi varchar2(100); b_lenh varchar2(1000); b_i1 number;
cs_ttr clob:='';b_so_id number;
begin
-- Dan - Trang thai ho so
delete temp_1; delete bh_hd_ttrang_temp; commit;
b_loi:=FHT_MA_NSD_KTRA(b_ma_dvi,b_nsd,b_pas,'BH','','');
if b_loi is not null then raise PROGRAM_ERROR; end if;
b_lenh:=FKH_JS_LENH('so_id');
EXECUTE IMMEDIATE b_lenh into b_so_id using b_oraIn;
select count(*) into b_i1 from bh_bt_gd_tu where ma_dvi=b_ma_dvi and so_id_hs=b_so_id;
if b_i1<>0 then insert into bh_hd_ttrang_temp values('gd_tu','V'); end if;
if FBH_BT_GD_HTHANH(b_ma_dvi,b_so_id)='H' then
insert into temp_1(c3,n5) select ma_nt,max(ngay_ht) from bh_bt_gd_sc where ma_dvi=b_ma_dvi and so_id=b_so_id group by ma_nt;
update temp_1 set n2=(select ton from bh_bt_gd_sc where ma_dvi=b_ma_dvi and so_id=b_so_id and ma_nt=c3 and ngay_ht=n5);
select count(*) into b_i1 from temp_1 where n2<>0;
if b_i1<>0 then insert into bh_hd_ttrang_temp values('gd_tt','D'); end if;
end if;
select count(*) into b_i1 from bh_hd_ttrang_temp;
if b_i1<>0 then
select JSON_ARRAYAGG(json_object(nv,tt) returning clob) into cs_ttr from bh_hd_ttrang_temp;
end if;
select json_object('cs_ttr' value cs_ttr) into b_oraOut from dual;
end;
/
create or replace function FBH_BT_GD_HTHANH(b_ma_dvi varchar2,b_so_id number) return varchar2
AS
b_kq varchar2(1); b_ngay_qd number;
begin
-- Nam - Xac dinh da hoan thanh
select nvl(max(ngay_qd),0) into b_ngay_qd from bh_bt_gd_hs where ma_dvi=b_ma_dvi and so_id=b_so_id;
if b_ngay_qd<30000101 or b_ngay_qd>0 or b_ngay_qd is not null then b_kq:='H'; else b_kq:='K'; end if;
return b_kq;
end;