CREATE PROCEDURE "DBA"."pa_kinnip_panka_III_sammas"( in a_lepnr integer,in a_t_akuu integer,in a_t_aasta integer )
begin
  declare ldc_summa numeric(15,2);
  declare li_a_aasta numeric(4);
  declare li_a_akuu numeric(2);
  declare li_a_apaev numeric(2);
  declare li_a_lpaev numeric(2);
  declare li_v_aasta numeric(4);
  declare li_v_akuu numeric(2);
  declare li_yksusnr integer;
  declare li_user_code integer;
  declare li_paryldnr integer;
  declare li_vparyldnr integer;
  declare li_tas_s integer;
  declare li_tas_s_maks integer;
  declare li_vtas_s_maks integer;
  declare li_paryldnr_maks integer;
  declare li_vparyldnr_maks integer;
  declare err_notfound exception for sqlstate value '02000';
  declare c_paryld dynamic scroll cursor for
    select pa_paryld.paryldnr,pa_paryld.tas_s,pa_paryld.yksusnr
      from pa_paryld left outer join pa_taslist on pa_paryld.tas_s=pa_taslist.tas_s
      where pa_paryld.lepnr=a_lepnr and
            pa_taslist.algol = '3b' and
           (Years(pa_paryld.akuup)<a_t_aasta or Years(pa_paryld.akuup)=a_t_aasta and Month(pa_paryld.akuup)<=a_t_akuu) and
           (pa_paryld.lkuup is null or Years(pa_paryld.lkuup)>a_t_aasta or Years(pa_paryld.lkuup)=a_t_aasta and Month(pa_paryld.lkuup)>=a_t_akuu);
  open c_paryld;
  paryld_loop: loop
    fetch next c_paryld into li_paryldnr,li_tas_s,li_yksusnr;
    if sqlstate = err_notfound then
      leave paryld_loop
    end if;
      -- 1 rida, mis kuulub ylekandmisele
    select first (pa_tasu.summa-pa_tasu.tulumaks-pa_tasu.tvtkmaks-pa_tasu.pensmaks),pa_tasu.tas_s,pa_tasu.vtas_s,pa_tasu.paryldnr,pa_tasu.vparyldnr,pa_tasu.v_akuu,pa_tasu.v_aasta,pa_tasu.a_akuu,pa_tasu.a_aasta,pa_tasu.a_apaev,pa_tasu.a_lpaev,pa_tasu.user_code
      into ldc_summa,li_tas_s_maks,li_vtas_s_maks,li_paryldnr_maks,li_vparyldnr_maks,li_v_akuu,li_v_aasta,li_a_akuu,li_a_aasta,li_a_apaev,li_a_lpaev,li_user_code
      from pa_tasu left outer join pa_taslist on pa_tasu.tas_s = pa_taslist.tas_s
      where pa_tasu.lepnr=a_lepnr and
            pa_tasu.yksusnr=li_yksusnr and
            pa_tasu.paryldnr=li_paryldnr and
            pa_tasu.t_akuu=a_t_akuu and pa_tasu.t_aasta=a_t_aasta and
            pa_tasu.palgaleht is null and
            pa_taslist.vmkood='25' and
            pa_taslist.sisse=0;
      if ldc_summa is null then
        set ldc_summa=0
      end if;
      -- summa peab olema suurem, kui 0
      if ldc_summa>0 then
          insert into pa_tasu( yksusnr,lepnr,tas_s,paryldnr,
                               summa,
                               vtas_s,vparyldnr,
                               t_akuu,t_aasta,a_akuu,a_aasta,v_akuu,v_aasta,a_apaev,a_lpaev,
                               tulumaks,tvtkmaks,pensmaks,tatkmaks,sotsmaks,
                               user_code)
            values (li_yksusnr,a_lepnr,li_tas_s,li_paryldnr,
                    ldc_summa,
                    if li_vtas_s_maks is null then li_tas_s_maks else li_vtas_s_maks endif,li_vparyldnr_maks,
                    a_t_akuu,a_t_aasta,li_a_akuu,li_a_aasta,li_v_akuu,li_v_aasta,li_a_apaev,li_a_lpaev,
                    0,0,0,0,0,li_user_code);
      end if;
  end loop paryld_loop;
  close c_paryld
end