ALTER PROCEDURE "DBA"."dk_koond1_kp"(in id_skoop integer,in id_obj integer,in id_paring integer,in peralg date,in perlop date, in a_valver smallint default 1)
begin
  declare li_sisse integer;
  declare ld_kuup date;
  declare ldc_summa decimal(15,2);
  declare li_asutnr integer;
  declare li_kulnr integer;
  declare li_talnr integer;
  declare li_artnr integer;
  declare li_kbartnr integer;
  declare li_tulnr integer;
  declare li_objectnr integer;
  declare li_osaknr integer;
  declare li_subjectnr integer;
  declare li_suundnr integer;
  declare ls_dk_kontod char(5000);
  declare li_paring integer;
  declare err_notfound exception for sqlstate value '02000';
  declare c_kp_kanne dynamic scroll cursor for select kp_kanne.sisse,kp_kanne.kuup,kp_kanne.summa,kp_kanne.asutnr,if kp_kanne.kulnr is null then 0 else kp_kanne.kulnr endif,if kp_kanne.talnr is null then 0 else kp_kanne.talnr endif,if kp_kanne.artnr is null then 0 else kp_kanne.artnr endif,if kp_kanne.tulnr is null then 0 else kp_kanne.tulnr endif,if kp_kanne.objectnr is null then 0 else kp_kanne.objectnr endif,if kp_kanne.osaknr is null then 0 else kp_kanne.osaknr endif,if kp_kanne.subjectnr is null then 0 else kp_kanne.subjectnr endif,if kp_kanne.suundnr is null then 0 else kp_kanne.suundnr endif from
      kp_kanne left outer join gl_1 on(kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup),kp_obj where
      ((kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) or id_paring = 0) and(kp_kanne.objnr = kp_obj.objnr) and locate(ls_dk_kontod,';'+"Left"(kp_kanne.konto+Space(7),7)+';') > 0 and(kp_obj.skoop = id_skoop or id_skoop = 0) and kp_kanne.asutnr > 0 and kp_kanne.kuup <= perlop;
  -- loe arvelduste kontod
  set ls_dk_kontod=get_dk_kontod_koond(id_skoop,id_obj);
  set li_paring=set_gl_1_conv_dk_kp(id_paring);
  open c_kp_kanne;
  kp_kanne_loop: loop
    --  loe kassa/panga kanne
    fetch next c_kp_kanne into li_sisse,ld_kuup,ldc_summa,li_asutnr,li_kulnr,li_talnr,li_artnr,li_tulnr,li_objectnr,li_osaknr,li_subjectnr,li_suundnr;
    if sqlstate = err_notfound then -- kui eof
      leave kp_kanne_loop
    end if;
    -- kas asutus ei eksisteeri koondis
    if not exists(select 1 from gl_dk_koond where gl_dk_koond.asutnr = li_asutnr and gl_dk_koond.kulnr = li_kulnr and gl_dk_koond.talnr = li_talnr and gl_dk_koond.artnr = li_artnr and gl_dk_koond.tulnr = li_tulnr and gl_dk_koond.objectnr = li_objectnr and gl_dk_koond.osaknr = li_osaknr and gl_dk_koond.subjectnr = li_subjectnr and gl_dk_koond.suundnr = li_suundnr) then
      insert into gl_dk_koond( asutnr,kulnr,talnr,artnr,tulnr,objectnr,osaknr,subjectnr,suundnr,adeeb,akree,deeb,kree,ldeeb,lkree,x1,x2,x3,x4,sisse) values( li_asutnr,li_kulnr,li_talnr,li_artnr,li_tulnr,li_objectnr,li_osaknr,li_subjectnr,li_suundnr,0,0,0,0,0,0,0,0,0,0,0) 
    end if;
    -- summeerimine
    if ld_kuup < peralg then
      if li_sisse > 0 then
        update gl_dk_koond set akree = akree+ldc_summa where gl_dk_koond.asutnr = li_asutnr and gl_dk_koond.kulnr = li_kulnr and gl_dk_koond.talnr = li_talnr and gl_dk_koond.artnr = li_artnr and gl_dk_koond.tulnr = li_tulnr and gl_dk_koond.objectnr = li_objectnr and gl_dk_koond.osaknr = li_osaknr and gl_dk_koond.subjectnr = li_subjectnr and gl_dk_koond.suundnr = li_suundnr
      else
        update gl_dk_koond set adeeb = adeeb+ldc_summa where gl_dk_koond.asutnr = li_asutnr and gl_dk_koond.kulnr = li_kulnr and gl_dk_koond.talnr = li_talnr and gl_dk_koond.artnr = li_artnr and gl_dk_koond.tulnr = li_tulnr and gl_dk_koond.objectnr = li_objectnr and gl_dk_koond.osaknr = li_osaknr and gl_dk_koond.subjectnr = li_subjectnr and gl_dk_koond.suundnr = li_suundnr
      end if
    else
      if li_sisse > 0 then
        update gl_dk_koond set kree = kree+ldc_summa where gl_dk_koond.asutnr = li_asutnr and gl_dk_koond.kulnr = li_kulnr and gl_dk_koond.talnr = li_talnr and gl_dk_koond.artnr = li_artnr and gl_dk_koond.tulnr = li_tulnr and gl_dk_koond.objectnr = li_objectnr and gl_dk_koond.osaknr = li_osaknr and gl_dk_koond.subjectnr = li_subjectnr and gl_dk_koond.suundnr = li_suundnr
      else
        update gl_dk_koond set deeb = deeb+ldc_summa where gl_dk_koond.asutnr = li_asutnr and gl_dk_koond.kulnr = li_kulnr and gl_dk_koond.talnr = li_talnr and gl_dk_koond.artnr = li_artnr and gl_dk_koond.tulnr = li_tulnr and gl_dk_koond.objectnr = li_objectnr and gl_dk_koond.osaknr = li_osaknr and gl_dk_koond.subjectnr = li_subjectnr and gl_dk_koond.suundnr = li_suundnr
      end if
    end if
  end loop kp_kanne_loop;
  close c_kp_kanne
end