CREATE PROCEDURE "dba"."dk_arvetas2011a"(in a_skoopkood char(16),in id_skoop integer,in id_obj integer,in id_paring integer,in a_spank smallint,in id_dk_per smallint, in peralg date,in perlop date)
begin
  declare ls_dk_kontod char(5000);
  declare li_selectall integer;
  declare li_paring integer;
  delete from gl_dk_arvetas2007;
  delete from gl_dk_arvetas;
  delete from gl_dk_kanne;
  if id_obj > 0 then
    select dk_obj.skoop into id_skoop from dk_obj where dk_obj.objnr = id_obj
  end if;
  select count() into li_selectall from gl_selectall;
  set li_paring=set_gl_1(id_paring);
  if li_selectall=0 then
    case id_dk_per
    when 0 then
      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=a_spank then -1*(dk_kanne.summa+dk_kanne.summa2) else (dk_kanne.summa+dk_kanne.summa2) endif)
          from dk_kanne left outer join gl_1 on(dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) key left outer join dk_obj, dk_obj key left outer join skoobid
          where ((dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) or id_paring = 0) and (Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood and (dk_obj.skoop = id_skoop or id_skoop = 0)) and (dk_kanne.objnr = id_obj or id_obj = 0) and dk_obj.spank=a_spank and dk_kanne.asutnr > 0 and dk_kanne.kuup >= peralg and dk_kanne.kuup <= perlop
          group by dk_kanne.asutnr,dk_kanne_arvekuup,dk_kanne_arvenr,dk_kanne.saajanr;
    when 1 then
      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=a_spank then -1*(dk_kanne.summa+dk_kanne.summa2) else (dk_kanne.summa+dk_kanne.summa2) endif)
          from dk_kanne left outer join gl_1 on(dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) key left outer join dk_obj, dk_obj key left outer join skoobid
          where ((dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) or id_paring = 0) and (Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood and (dk_obj.skoop = id_skoop or id_skoop = 0)) and (dk_kanne.objnr = id_obj or id_obj = 0) and dk_obj.spank=a_spank and dk_kanne.asutnr > 0 and dk_kanne_arvekuup >= peralg and dk_kanne_arvekuup <= perlop
          group by dk_kanne.asutnr,dk_kanne_arvekuup,dk_kanne_arvenr,dk_kanne.saajanr;
    when 2 then
      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=a_spank then -1*(dk_kanne.summa+dk_kanne.summa2) else (dk_kanne.summa+dk_kanne.summa2) endif)
          from dk_kanne left outer join gl_1 on(dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) key left outer join dk_obj, dk_obj key left outer join skoobid
          where ((dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) or id_paring = 0) and (Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood and (dk_obj.skoop = id_skoop or id_skoop = 0)) and (dk_kanne.objnr = id_obj or id_obj = 0) and dk_obj.spank=a_spank and dk_kanne.asutnr > 0 and dk_kanne.taskuup >= peralg and dk_kanne.taskuup <= perlop
          group by dk_kanne.asutnr,dk_kanne_arvekuup,dk_kanne_arvenr,dk_kanne.saajanr;
    end case;
    set ls_dk_kontod=get_dk_kontod_spank(id_skoop,a_spank,id_obj);
    set li_paring=set_gl_1_conv_dk_kp(id_paring);
    insert into gl_dk_arvetas( asutnr,arvenr,arvekuup,makskuup,maksnr,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,kp_kanne.doknr,sum(if kp_kanne.sisse=a_spank then -1*(kp_kanne.summa) else (kp_kanne.summa) endif), ymd(2999,1,1)
        from kp_kanne left outer join gl_1 on(kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) key left outer join kp_obj, kp_obj key left outer join skoobid
        where ((kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) or id_paring = 0) and (Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood and (kp_obj.skoop = id_skoop or id_skoop = 0)) and locate(ls_dk_kontod,';'+"Left"(kp_kanne.konto+Space(7),7)+';') > 0 and kp_kanne.asutnr > 0 and kp_kanne.kuup <= perlop
        group by kp_kanne.asutnr,kp_kanne_arvekuup,kp_kanne_arvenr,kp_kanne.kuup,kp_kanne.doknr;
  else
    case id_dk_per
    when 0 then
      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=a_spank then -1*(dk_kanne.summa+dk_kanne.summa2) else (dk_kanne.summa+dk_kanne.summa2) endif)
          from dk_kanne left outer join gl_1 on(dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) left outer join gl_selectall on dk_kanne.asutnr=gl_selectall.id1 key left outer join dk_obj, dk_obj key left outer join skoobid
          where (gl_selectall.id1 is not null or li_selectall = 0) and ((dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) or id_paring = 0) and (Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood and (dk_obj.skoop = id_skoop or id_skoop = 0)) and (dk_kanne.objnr = id_obj or id_obj = 0) and dk_obj.spank=a_spank and dk_kanne.asutnr > 0 and dk_kanne.kuup >= peralg and dk_kanne.kuup <= perlop
          group by dk_kanne.asutnr,dk_kanne_arvekuup,dk_kanne_arvenr,dk_kanne.saajanr;
    when 1 then
      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=a_spank then -1*(dk_kanne.summa+dk_kanne.summa2) else (dk_kanne.summa+dk_kanne.summa2) endif)
          from dk_kanne left outer join gl_1 on(dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) left outer join gl_selectall on dk_kanne.asutnr=gl_selectall.id1 key left outer join dk_obj, dk_obj key left outer join skoobid
          where (gl_selectall.id1 is not null or li_selectall = 0) and ((dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) or id_paring = 0) and (Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood and (dk_obj.skoop = id_skoop or id_skoop = 0)) and (dk_kanne.objnr = id_obj or id_obj = 0) and dk_obj.spank=a_spank and dk_kanne.asutnr > 0 and dk_kanne_arvekuup >= peralg and dk_kanne_arvekuup <= perlop
          group by dk_kanne.asutnr,dk_kanne_arvekuup,dk_kanne_arvenr,dk_kanne.saajanr;
    when 2 then
      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=a_spank then -1*(dk_kanne.summa+dk_kanne.summa2) else (dk_kanne.summa+dk_kanne.summa2) endif)
          from dk_kanne left outer join gl_1 on(dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) left outer join gl_selectall on dk_kanne.asutnr=gl_selectall.id1 key left outer join dk_obj, dk_obj key left outer join skoobid
          where (gl_selectall.id1 is not null or li_selectall = 0) and ((dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) or id_paring = 0) and (Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood and (dk_obj.skoop = id_skoop or id_skoop = 0)) and (dk_kanne.objnr = id_obj or id_obj = 0) and dk_obj.spank=a_spank and dk_kanne.asutnr > 0 and dk_kanne.taskuup >= peralg and dk_kanne.taskuup <= perlop
          group by dk_kanne.asutnr,dk_kanne_arvekuup,dk_kanne_arvenr,dk_kanne.saajanr;
    end case;
    set ls_dk_kontod=get_dk_kontod_spank(id_skoop,a_spank,id_obj);
    set li_paring=set_gl_1_conv_dk_kp(id_paring);
    insert into gl_dk_arvetas( asutnr,arvenr,arvekuup,makskuup,maksnr,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,kp_kanne.doknr,sum(if kp_kanne.sisse=a_spank then -1*(kp_kanne.summa) else (kp_kanne.summa) endif), ymd(2999,1,1)
        from kp_kanne left outer join gl_1 on(kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) left outer join gl_selectall on kp_kanne.asutnr=gl_selectall.id1 key left outer join kp_obj, kp_obj key left outer join skoobid
        where (gl_selectall.id1 is not null or li_selectall = 0) and ((kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) or id_paring = 0) and (Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood and (kp_obj.skoop = id_skoop or id_skoop = 0)) and locate(ls_dk_kontod,';'+"Left"(kp_kanne.konto+Space(7),7)+';') > 0 and kp_kanne.asutnr > 0 and kp_kanne.kuup <= perlop
        group by kp_kanne.asutnr,kp_kanne_arvekuup,kp_kanne_arvenr,kp_kanne.kuup,kp_kanne.doknr;
  end if;
  delete gl_dk_arvetas from gl_dk_arvetas left outer join gl_dk_arvetas2007 on gl_dk_arvetas.asutnr=gl_dk_arvetas2007.asutnr and gl_dk_arvetas.arvenr=gl_dk_arvetas2007.arvenr and gl_dk_arvetas.arvekuup=gl_dk_arvetas2007.arvekuup
    where gl_dk_arvetas2007.asutnr is null;
  insert into gl_dk_arvetas2007( asutnr,arvenr,arvekuup,makskuup,doknr,makssumma,taskuup)
    select gl_dk_arvetas.asutnr,gl_dk_arvetas.arvenr,gl_dk_arvetas.arvekuup,gl_dk_arvetas.makskuup,gl_dk_arvetas.maksnr,gl_dk_arvetas.makssumma,gl_dk_arvetas.taskuup
      from gl_dk_arvetas;
end