CREATE PROCEDURE "DBA"."pa_puhkused_1l"(in a_skoop integer,in a_yksusnr integer,in a_lepnr integer,in a_tas_s integer,in a_algol char(2),in a_tgraaf_akuup date,in a_tgraaf_lkuup date,in a_t_akuu numeric(2),in a_t_aasta numeric(4),in a_a_akuu numeric(2),in a_a_aasta numeric(4),in a_v_akuu numeric(2),in a_v_aasta numeric(4),in a_user_code integer)
begin
  declare li_a_apaev numeric(2);
  declare li_a_lpaev numeric(2);
  declare ld_akuup date;
  declare ld_lkuup date;
  declare ld_kuup1 date;
  declare ld_kuup2 date;
  declare ldc_sum1 numeric(15,2);
  declare ldc_sum2 numeric(15,2);
  declare ldc_par1 numeric(15,3);
  declare ldc_par2 numeric(15,3);
  declare ldc_par3 numeric(15,3);
  declare ldc_par4 numeric(15,3);
  declare ll_person integer;
  declare ll_id_koht integer;
  set ld_akuup=ymd(a_a_aasta,a_a_akuu,1);
  set ld_lkuup=get_perlop(ld_akuup);
  if a_tgraaf_akuup>ld_akuup then
    set ld_kuup1=a_tgraaf_akuup
  else
    set ld_kuup1=ld_akuup
  end if;
  if a_tgraaf_lkuup<ld_lkuup then
    set ld_kuup2=a_tgraaf_lkuup
  else
    set ld_kuup2=ld_lkuup
  end if;
  set li_a_apaev=Day(ld_kuup1);
  set li_a_lpaev=Day(ld_kuup2);
  case a_algol
    when '1o' then
      set ldc_par3=get_tp_arv_per(ld_akuup,ld_lkuup);
      set ldc_par1=get_tp_arv_per(ld_kuup1,ld_kuup2)
    when '1r' then
      set ldc_par3=get_kp_arv_per(ld_akuup,ld_lkuup);
      set ldc_par1=get_kp_arv_per(ld_kuup1,ld_kuup2)
    when '1s' then
      set ldc_par3=get_kp_arv_per_pta(ld_akuup,ld_lkuup);
      set ldc_par1=get_kp_arv_per_pta(ld_kuup1,ld_kuup2)
    else
      set ldc_par3=1;
      set ldc_par1=get_kp_arv_per(ld_kuup1,ld_kuup2)
  end case;
  select pa_leping.person,pa_leping.id_koht into ll_person,ll_id_koht from pa_leping where pa_leping.lepnr = a_lepnr;
  select "pa_taslist"."protsent" into ldc_par4 from "pa_taslist" where "pa_taslist"."tas_s"=a_tas_s;
  if ldc_par1>0 and ldc_par3>0 and ldc_par4>0 and ld_kuup2>=ld_kuup1 then
    set ldc_sum2=0;
    select pa_exists_puhktasu(li_a_apaev,li_a_lpaev,a_a_akuu,a_a_aasta,a_lepnr,a_tas_s,null,a_yksusnr,null) into ldc_sum2;
    set ldc_par4=ldc_par4-ldc_sum2;
    if ldc_par4<>0 then
      set ldc_par2 = Round(ldc_par4/ldc_par3,3);
      if ldc_par1=ldc_par3 then
        set ldc_sum1 = Round(ldc_par4,2);
      else
        set ldc_sum1 = Round((ldc_par4/ldc_par3)*ldc_par1,2);
      end if;
      if ldc_sum1<>0 then
        insert into pa_tasu( yksusnr,lepnr,tas_s,vtas_s,paryldnr,vparyldnr,t_akuu,t_aasta,a_akuu,a_aasta,v_akuu,v_aasta,a_apaev,a_lpaev,par1,par2,par3,par4,par5,summa,tulumaks,tvtkmaks,pensmaks,tatkmaks,sotsmaks,user_code,person,id_koht,tulnud)
                    values( a_yksusnr,a_lepnr,a_tas_s,null,null,null,a_t_akuu,a_t_aasta,a_a_akuu,a_a_aasta,a_v_akuu,a_v_aasta,li_a_apaev,li_a_lpaev,ldc_par1,ldc_par2,ldc_par3,ldc_par4,1,ldc_sum1,0,0,0,0,0,a_user_code,ll_person,ll_id_koht,'Arvuta puhkused')
      end if;
    end if;
  end if;
end