ALTER PROCEDURE "DBA"."pa_tootustoend"(in a_asutnr integer,in a_a_akuu numeric(2),in a_a_aasta numeric(4),in a_skoop integer)
begin
  declare li_a_akuu numeric(2);
  declare li_a_aasta numeric(4);
  declare li_a_akuu1 numeric(2);
  declare li_a_aasta1 numeric(4);
  declare li_a_akuu2 numeric(2);
  declare li_a_aasta2 numeric(4);
  declare li_asutnr integer;
  declare ldc_arvestatud numeric(15,2);
  declare ldc_tulumaks numeric(15,2);
  declare ldc_pensmaks numeric(15,2);
  declare ldc_tvtkmaks numeric(15,2);
  declare err_notfound exception for sqlstate value '02000';
  declare c_pa_tasu dynamic scroll cursor for select pa_leping.asutnr,pa_tasu.a_akuu,pa_tasu.a_aasta,(if pa_taslist.tk=1 or pa_taslist.httsl=1 then (if pa_taslist.sisse=0 then pa_tasu.summa else 0-pa_tasu.summa endif) else 0 endif),(if pa_taslist.tk=1 and pa_taslist.httsl=0 and pa_taslist.algol in ('1b','1i','1k','1l','1o','1p','1r','1s') then (if pa_taslist.sisse=0 then pa_tasu.summa else 0-pa_tasu.summa endif) else 0 endif),(if pa_taslist.httsl=1 then (if pa_taslist.sisse=0 then pa_tasu.summa else 0-pa_tasu.summa endif) else 0 endif),(if pa_taslist.sisse = 0 then pa_tasu.tvtkmaks else 0-pa_tasu.tvtkmaks endif) from pa_tasu left outer join pa_yksus on pa_tasu.yksusnr = pa_yksus.yksusnr left outer join pa_leping on pa_tasu.lepnr = pa_leping.lepnr left outer join pa_taslist on pa_tasu.tas_s = pa_taslist.tas_s where((pa_tasu.a_aasta > li_a_aasta1 or(pa_tasu.a_aasta = li_a_aasta1 and pa_tasu.a_akuu >= li_a_akuu1)) and(pa_tasu.a_aasta < li_a_aasta2 or(pa_tasu.a_aasta = li_a_aasta2 and pa_tasu.a_akuu <= li_a_akuu2))) and(pa_leping.asutnr = a_asutnr or a_asutnr = 0) and(pa_yksus.skoop = a_skoop or a_skoop = 0);
  delete from gl_tr_toend_rida;
  set li_a_akuu2=a_a_akuu-1;
  set li_a_aasta2=a_a_aasta;
  if li_a_akuu2 < 1 then
    set li_a_akuu2=12;
    set li_a_aasta2=li_a_aasta2-1
  end if;
  set li_a_akuu1=li_a_akuu2-11;
  set li_a_aasta1=li_a_aasta2;
  if li_a_akuu1 < 1 then
    set li_a_akuu1=li_a_akuu1+12;
    set li_a_aasta1=li_a_aasta1-1
  end if;
  open c_pa_tasu;
  pa_tasu_loop: loop
    fetch next c_pa_tasu into li_asutnr,li_a_akuu,li_a_aasta,ldc_arvestatud,ldc_tulumaks,ldc_pensmaks,ldc_tvtkmaks;
    if sqlstate = err_notfound then -- kui eof
      leave pa_tasu_loop
    end if;
    if exists(select 1 from gl_tr_toend_rida where gl_tr_toend_rida.asutnr = li_asutnr and gl_tr_toend_rida.akuu = li_a_akuu and gl_tr_toend_rida.aasta = li_a_aasta) then
      update gl_tr_toend_rida set arvestatud=arvestatud+ldc_arvestatud,tulumaks=tulumaks+ldc_tulumaks,pensmaks = pensmaks+ldc_pensmaks,tvtkmaks=tvtkmaks+ldc_tvtkmaks where gl_tr_toend_rida.asutnr=li_asutnr and gl_tr_toend_rida.akuu=li_a_akuu and gl_tr_toend_rida.aasta=li_a_aasta
    else
      insert into gl_tr_toend_rida( asutnr,akuu,aasta,arvestatud,tulumaks,pensmaks,tvtkmaks,kinnipeetud) values( li_asutnr,li_a_akuu,li_a_aasta,ldc_arvestatud,ldc_tulumaks,ldc_pensmaks,ldc_tvtkmaks,0)
    end if;
  end loop pa_tasu_loop;
  close c_pa_tasu
end