CREATE PROCEDURE "DBA"."dk_arvetas_org"(in a_skoop integer, in a_orgnr integer)
RESULT( nimi char(101), asutnr integer, kuupaev date, arvenr char(20), taskuup date, arvesumma decimal(15,2), makssumma decimal(15,2))
BEGIN
  declare ld_perlop date;
  declare li_spank smallint;
  declare ll_objnr integer;
  declare ls_dk_kontod char(5000);
  declare ll_count integer;
  delete from gl_dk_arvetas2007;
  delete from gl_dk_arvetas;
  delete from gl_dk_kanne;
  set ld_perlop=ToDay();
  set li_spank=0;
  set ll_objnr=2;
  if ll_objnr > 0 then
    select dk_obj.skoop into a_skoop from dk_obj where dk_obj.objnr = ll_objnr
  end if;
-- arveldused
  insert into gl_dk_arvetas2007( asutnr,arvenr,arvekuup,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,
             max(dk_kanne.taskuup),
            sum(if dk_kanne.sisse=li_spank 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 = a_skoop or a_skoop = 0) and (dk_kanne.objnr = ll_objnr or ll_objnr = 0) and
              dk_obj.spank=li_spank and
             dk_kanne.asutnr > 0 and
             dk_kanne.kuup <= ld_perlop
        group by dk_kanne.asutnr,dk_kanne_arvekuup,dk_kanne_arvenr;
-- kassa/pank
  set ls_dk_kontod=get_dk_kontod_spank(a_skoop,li_spank,ll_objnr);
  insert into gl_dk_arvetas2007( asutnr,arvenr,arvekuup,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,
           sum(if kp_kanne.sisse=li_spank 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 = a_skoop or a_skoop = 0) and
            locate(ls_dk_kontod,';'+"Left"(kp_kanne.konto+Space(7),7)+';') > 0 and
            kp_kanne.asutnr > 0 and
            kp_kanne.kuup <= ld_perlop
      group by kp_kanne.asutnr,kp_kanne_arvekuup,kp_kanne_arvenr;
-- nullimine
      insert into gl_dk_kanne( asutnr,arvekuup,arvenr,summa)
        select gl_dk_arvetas2007.asutnr,gl_dk_arvetas2007.arvekuup,gl_dk_arvetas2007.arvenr,sum(gl_dk_arvetas2007.arvesumma-gl_dk_arvetas2007.makssumma)
         from gl_dk_arvetas2007
         group by gl_dk_arvetas2007.asutnr,gl_dk_arvetas2007.arvekuup,gl_dk_arvetas2007.arvenr;
      delete gl_dk_arvetas2007 from gl_dk_arvetas2007 left outer join gl_dk_kanne on gl_dk_arvetas2007.asutnr=gl_dk_kanne.asutnr and gl_dk_arvetas2007.arvekuup=gl_dk_kanne.arvekuup and gl_dk_arvetas2007.arvenr=gl_dk_kanne.arvenr where gl_dk_kanne.summa=0;
      delete from gl_dk_kanne;
      insert into gl_dk_kanne( asutnr,summa)
          select gl_dk_arvetas2007.asutnr,sum(gl_dk_arvetas2007.arvesumma-gl_dk_arvetas2007.makssumma)
           from gl_dk_arvetas2007
           group by gl_dk_arvetas2007.asutnr;
      delete gl_dk_arvetas2007 from gl_dk_arvetas2007 left outer join gl_dk_kanne on gl_dk_arvetas2007.asutnr=gl_dk_kanne.asutnr where gl_dk_kanne.summa=0;
-- arve kokku
  insert into gl_dk_arvetas( asutnr,arvekuup,arvenr,taskuup,arvesumma,makssumma)
          select gl_dk_arvetas2007.asutnr,gl_dk_arvetas2007.arvekuup,gl_dk_arvetas2007.arvenr,min(gl_dk_arvetas2007.taskuup),sum(gl_dk_arvetas2007.arvesumma),sum(gl_dk_arvetas2007.makssumma)
           from gl_dk_arvetas2007
           group by gl_dk_arvetas2007.asutnr,gl_dk_arvetas2007.arvekuup,gl_dk_arvetas2007.arvenr;
-- vastus  
  select get_asulist_nimi("gl_dk_arvetas"."asutnr") as asutnr1,
         "gl_dk_arvetas"."asutnr",   
         "gl_dk_arvetas"."arvekuup",   
         "gl_dk_arvetas"."arvenr",   
         "gl_dk_arvetas"."taskuup",   
         "gl_dk_arvetas"."arvesumma",   
         "gl_dk_arvetas"."makssumma"
    from "gl_dk_arvetas"   
    order by asutnr1,"gl_dk_arvetas"."asutnr","gl_dk_arvetas"."arvekuup","gl_dk_arvetas"."arvenr";
END