CREATE PROCEDURE "DBA"."dk_arvetasarno"(in id_skoop integer,in perlop date)
begin
  declare ls_dk_kontod char(5000);
  declare ld_peralg date;
  delete from gl_dk_arvetas2007;
  delete from gl_dk_kanne;
  set ld_peralg=dateadd(month, -4, perlop);
  if month(dateadd(day,1,perlop)) > month(perlop) then
    set ld_peralg=get_perlop(ld_peralg)
  end if;
  select tr_arno_kontod into ls_dk_kontod from dk_konfm where id=1;
  insert into gl_dk_arvetas2007( asutnr,arvenr,arvekuup,saajanr,taskuup,arvesumma)
      select dk_kanne.asutnr,
             if dk_kanne.crekuup is null or dk_kanne.crenr is null then if dk_kanne.arvenr is null then '' else dk_kanne.arvenr endif else dk_kanne.crenr endif as dk_kanne_arvenr,
             if (dk_kanne.crekuup is null or dk_kanne.crenr is null) then (if dk_kanne.arvekuup is null then ymd(2000,1,1) else dk_kanne.arvekuup endif) else dk_kanne.crekuup endif as dk_kanne_arvekuup,
             dk_kanne.saajanr,
             max(dk_kanne.taskuup),
             sum(if dk_kanne.sisse=0 then -1*(dk_kanne.summa+dk_kanne.summa2) else (dk_kanne.summa+dk_kanne.summa2) endif)
        from dk_kanne key left outer join dk_obj
        where (dk_obj.skoop = id_skoop or id_skoop = 0) and
              dk_obj.djkonto is not null and
              locate(ls_dk_kontod,Trim(dk_obj.djkonto)) > 0 and
              dk_obj.spank=0 and
              dk_kanne.asutnr is not null and
              dk_kanne_arvekuup <= perlop
        group by dk_kanne.asutnr,dk_kanne_arvekuup,dk_kanne_arvenr,dk_kanne.saajanr;
  insert into gl_dk_arvetas2007( asutnr,arvenr,arvekuup,makskuup,makssumma,taskuup)
    select kp_kanne.asutnr,
           if kp_kanne.arvenr is null then '' else kp_kanne.arvenr endif as kp_kanne_arvenr,
           if kp_kanne.arvekuup is null then ymd(2000,1,1) else kp_kanne.arvekuup endif as kp_kanne_arvekuup,
           kp_kanne.kuup,
           sum(if kp_kanne.sisse=0 then -1*(kp_kanne.summa) else kp_kanne.summa endif),
           ymd(2999,1,1)
      from kp_kanne key left outer join kp_obj
      where (kp_obj.skoop = id_skoop or id_skoop = 0) and
            kp_kanne.konto is not null and
            locate(ls_dk_kontod,Trim(kp_kanne.konto)) > 0 and
            kp_kanne.asutnr is not null and
            kp_kanne.kuup <= perlop
      group by kp_kanne.asutnr,kp_kanne_arvekuup,kp_kanne_arvenr,kp_kanne.kuup;
  delete from gl_dk_arvetas2007 where arvekuup <= ld_peralg
end