ALTER PROCEDURE "dba"."kp_dk_tasumine"(in a_skoop integer, in a_perlop date)
BEGIN
  declare ldc_summa numeric(15,2);
  declare ld_arvekuup date;
  declare ls_arvenr char(20);
  declare li_asutnr integer;
  declare ld_ataskuup date;
  declare ls_dk_kontod char(5000);
  declare err_notfound exception for sqlstate value '02000';
  declare c_kp_kanne dynamic scroll cursor for 
    select sum(((-2)*kp_kanne.sisse+1)*(kp_kanne.summa)),kp_kanne.arvekuup,kp_kanne.arvenr,kp_kanne.asutnr
      from kp_kanne left outer join kp_obj on kp_kanne.objnr=kp_obj.objnr
      where kp_kanne.arvekuup >= ld_ataskuup and kp_kanne.arvenr is not null and kp_kanne.asutnr is not null and (kp_obj.skoop=a_skoop or a_skoop=0) and locate(ls_dk_kontod,';'+"Left"(kp_kanne.konto+Space(7),7)+';') > 0
      group by  kp_kanne.arvekuup, kp_kanne.arvenr, kp_kanne.asutnr
      order by  kp_kanne.arvekuup, kp_kanne.arvenr, kp_kanne.asutnr;
  select skoobid.kp_dk_taskuup into ld_ataskuup from skoobid where skoobid.skoop=a_skoop;
  set ls_dk_kontod = get_dk_kontod_spank(a_skoop,1);
  delete from gl_dk_kanne;
  insert into gl_dk_kanne ( summa,summa2,arvekuup,arvenr,asutnr,saajanr,taskuup,meetnr,kulnr,talnr,artnr,objectnr,osaknr,subjectnr,suundnr,taotnr,panknr)
    select sum(((-2)*dk_kanne.sisse+1)*(dk_kanne.summa+dk_kanne.summa2)),0,if dk_kanne.crekuup is null or dk_kanne.crenr is null then dk_kanne.arvekuup else dk_kanne.crekuup endif as dk_arvekuup,if dk_kanne.crekuup is null or dk_kanne.crenr is null then dk_kanne.arvenr else dk_kanne.crenr endif as dk_arvenr,dk_kanne.asutnr, Max(dk_kanne.saajanr),Min(if dk_kanne.taskuup is null then date('1900-01-01') else dk_kanne.taskuup endif),Min(dk_kanne.meetnr),Min(dk_kanne.kulnr),Min(dk_kanne.talnr),Min(dk_kanne.artnr),Min(dk_kanne.objectnr),Min(dk_kanne.osaknr),Min(dk_kanne.subjectnr),Min(dk_kanne.suundnr),Min(dk_kanne.taotnr), Max(dk_kanne.panknr)
      from dk_kanne left outer join dk_obj on dk_kanne.objnr=dk_obj.objnr
      where dk_arvekuup>=ld_ataskuup and dk_arvekuup<=a_perlop and dk_arvenr is not null and dk_kanne.asutnr is not null and (dk_obj.skoop=a_skoop or a_skoop=0) and dk_obj.spank=1 and dk_obj.mke=1
      group by  dk_arvekuup, dk_arvenr, dk_kanne.asutnr;
  open c_kp_kanne;
  kp_kanne_loop: loop
      --  loe kassa/panga kanne
    fetch next c_kp_kanne into ldc_summa,ld_arvekuup,ls_arvenr,li_asutnr;
    if sqlstate = err_notfound then -- kui eof
      leave kp_kanne_loop
    end if;
    update gl_dk_kanne set summa2=summa2+ldc_summa where gl_dk_kanne.arvekuup=ld_arvekuup and gl_dk_kanne.arvenr=ls_arvenr and gl_dk_kanne.asutnr=li_asutnr
  end loop kp_kanne_loop;
  close c_kp_kanne
END