ALTER PROCEDURE "dba"."dk_koond_kmdinf_1"(in a_skoop integer,in a_perlop date,in a_skoopkood char(16) default '')
BEGIN
  declare ld_peralg date;
  declare ld_perlop date;
  delete gl_dk_arved;
  delete gl_dk_kanne;
  delete gl_dk_arvetas;
  delete gl_dk_arvetas2007;
  set ld_peralg=get_peralg(a_perlop);
  set ld_perlop=get_perlop(a_perlop);
-- kustuta arved, mis varem olid arvestuse kuus yle piirmaara
  delete dk_piirmaar from dk_piirmaar left outer join skoobid on dk_piirmaar.skoop=skoobid.skoop where dk_piirmaar.kuup>=ld_peralg and dk_piirmaar.kuup<=ld_perlop and (dk_piirmaar.skoop=a_skoop or a_skoop=0) and Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood;
-- arved, mis sisaldavad kaibemaksu ja deklareeritavad, asutsu maksukohuslane
  insert into gl_dk_arved(asutnr,arvekuup,arvenr,taskuup)
    select dk_kanne.asutnr,dk_kanne.arvekuup,dk_kanne.arvenr,ymd(2014,11,1)
      from dk_kanne left outer join dk_obj on dk_kanne.objnr=dk_obj.objnr
                    left outer join asulist on dk_kanne.asutnr=asulist.asutnr
                    left outer join kblist on dk_kanne.kbnr=kblist.kbnr
                    left outer join skoobid on dk_obj.skoop=skoobid.skoop
      where (dk_obj.skoop=a_skoop or a_skoop=0) and Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood and
            (dk_kanne.kuup>=ld_peralg and dk_kanne.kuup<=ld_perlop) and
            (kblist.deklar=1 and (kblist.protsent is not null or kblist.protsent4 is not null)) and
            (asulist.kmdinf is null or asulist.kmdinf=1)
      group by dk_kanne.asutnr,dk_kanne.arvekuup,dk_kanne.arvenr;
-- kanded, mis jaavad skoopi
  insert into gl_dk_kanne(objnr,panknr,sisse,kuup,asutnr,arvekuup,arvenr,kbnr,summa,summa2)
    select max(dk_kanne.objnr),dk_obj.spank,max(dk_kanne.sisse),dk_kanne.kuup,dk_kanne.asutnr,dk_kanne.arvekuup,dk_kanne.arvenr,dk_kanne.kbnr,sum(if dk_kanne.sisse=dk_obj.spank then -1*dk_kanne.summa else dk_kanne.summa endif),sum(if dk_kanne.sisse=dk_obj.spank then -1*(dk_kanne.summa2+if dk_kanne.summa4 is null then 0 else dk_kanne.summa4 endif) else dk_kanne.summa2+if dk_kanne.summa4 is null then 0 else dk_kanne.summa4 endif endif)
      from dk_kanne left outer join dk_obj on dk_kanne.objnr=dk_obj.objnr
                    left outer join skoobid on dk_obj.skoop=skoobid.skoop
                    left outer join gl_dk_arved on dk_kanne.asutnr=gl_dk_arved.asutnr and dk_kanne.arvekuup=gl_dk_arved.arvekuup and dk_kanne.arvenr=gl_dk_arved.arvenr
      where gl_dk_arved.asutnr is not null and
            (dk_obj.skoop=a_skoop or a_skoop=0) and Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood
      group by dk_obj.spank,dk_kanne.kuup,dk_kanne.asutnr,dk_kanne.arvekuup,dk_kanne.arvenr,dk_kanne.kbnr;
-- arved, mis aluseks piirmaara arvutamisel
  insert into gl_dk_arvetas(objnr,tyyp,sisse,asutnr,arvekuup,arvenr,kuup,arvesumma,arvesumma2)
    select max(gl_dk_kanne.objnr),gl_dk_kanne.panknr,gl_dk_kanne.sisse,gl_dk_kanne.asutnr,gl_dk_kanne.arvekuup,gl_dk_kanne.arvenr,min(gl_dk_kanne.kuup),sum(gl_dk_kanne.summa),sum(gl_dk_kanne.summa2)
      from gl_dk_kanne
      group by gl_dk_kanne.panknr,gl_dk_kanne.sisse,gl_dk_kanne.asutnr,gl_dk_kanne.arvekuup,gl_dk_kanne.arvenr;
  delete from gl_dk_arvetas where  kuup<ld_peralg or kuup>ld_perlop;
-- tehingupartneri arved kokku
  insert into gl_dk_arvetas2007(objnr,tyyp,sisse,asutnr,doknr,arvesumma)
    select max(gl_dk_arvetas.objnr),gl_dk_arvetas.tyyp,gl_dk_arvetas.sisse,gl_dk_arvetas.asutnr,get_asulist_reg_nr(gl_dk_arvetas.asutnr) as gl_regnr,sum(gl_dk_arvetas.arvesumma)
      from gl_dk_arvetas
      group by gl_dk_arvetas.tyyp,gl_dk_arvetas.sisse,gl_dk_arvetas.asutnr,gl_regnr;
-- reg.kood arved kokku
  delete gl_kp_kanne;
  insert into gl_kp_kanne(panknr,sisse,doknr,summa)
    select gl_dk_arvetas2007.tyyp,gl_dk_arvetas2007.sisse,get_asulist_reg_nr(gl_dk_arvetas2007.asutnr) as gl_regnr,sum(gl_dk_arvetas2007.arvesumma)
      from gl_dk_arvetas2007
      group by gl_dk_arvetas2007.tyyp,gl_dk_arvetas2007.sisse,gl_regnr;
-- reg.kood, kes yletavad piirmaara
  delete from gl_kp_kanne where abs(gl_kp_kanne.summa)<1000 or length(doknr)=0;
-- tehingupartnerid, mis reg.kood yletavad piirmaara
  delete gl_dk_arvetas2007 from gl_dk_arvetas2007 left outer join gl_kp_kanne on gl_dk_arvetas2007.tyyp=gl_kp_kanne.panknr and gl_dk_arvetas2007.doknr=gl_kp_kanne.doknr where gl_kp_kanne.doknr is null and length(gl_dk_arvetas2007.doknr)>0;
-- tehingupartnerid, kes yletavad piirmaara
  delete from gl_dk_arvetas2007 where abs(gl_dk_arvetas2007.arvesumma)<1000 and length(gl_dk_arvetas2007.doknr)=0;
-- arved, mis yletavad piirmaara
  delete gl_dk_arvetas from gl_dk_arvetas left outer join gl_dk_arvetas2007 on gl_dk_arvetas.tyyp=gl_dk_arvetas2007.tyyp and gl_dk_arvetas.asutnr=gl_dk_arvetas2007.asutnr where gl_dk_arvetas2007.asutnr is null;
-- lisa arved, mis yle piirmaara
  insert into dk_piirmaar(objnr,sisse,asutnr,arvekuup,arvenr,skoop,kuup,summa,summa2)
    select gl_dk_arvetas.tyyp,gl_dk_arvetas.sisse,gl_dk_arvetas.asutnr,gl_dk_arvetas.arvekuup,gl_dk_arvetas.arvenr,dk_obj.skoop,gl_dk_arvetas.kuup,gl_dk_arvetas.arvesumma,gl_dk_arvetas.arvesumma2 from gl_dk_arvetas left outer join dk_obj on gl_dk_arvetas.objnr=dk_obj.objnr;
-- A-B-osa read
  delete from gl_dk_arvetas2007;
  insert into gl_dk_arvetas2007(tyyp,sisse,asutnr,arvekuup,arvenr,makssumma,makssumma2,makssumma3,doknr,arvesumma,arvesumma2)
    select gl_dk_kanne.panknr,gl_dk_kanne.sisse,gl_dk_kanne.asutnr,gl_dk_kanne.arvekuup,gl_dk_kanne.arvenr,
           sum(if gl_dk_kanne.kuup>=ld_peralg and gl_dk_kanne.kuup<=ld_perlop and not(kblist.protsent is null or kblist.protsent=0) then gl_dk_kanne.summa else 0 endif),
           sum(if gl_dk_kanne.kuup>=ld_peralg and gl_dk_kanne.kuup<=ld_perlop and kblist.deklar=1 then if gl_dk_kanne.panknr=0 then gl_dk_kanne.summa2 else if (kblist.proportsioon is null or kblist.proportsioon=0) then gl_dk_kanne.summa2 else gl_dk_kanne.summa2-Round((kblist.proportsioon*gl_dk_kanne.summa2)/100,2) endif endif else 0 endif),
           if kblist.protsent4 is null then kblist.protsent else kblist.protsent4 endif as kb_protsent,
           if gl_dk_kanne.panknr=1 then kblist.d_erisus else kblist.k_erisus endif as gl_kb_erisus,
           sum(distinct dk_piirmaar.summa),
           sum(distinct dk_piirmaar.summa2)
      from gl_dk_kanne left outer join gl_dk_arvetas on gl_dk_kanne.panknr=gl_dk_arvetas.tyyp and gl_dk_kanne.asutnr=gl_dk_arvetas.asutnr and gl_dk_kanne.arvekuup=gl_dk_arvetas.arvekuup and gl_dk_kanne.arvenr=gl_dk_arvetas.arvenr
                       left outer join dk_piirmaar on gl_dk_kanne.panknr=dk_piirmaar.objnr and gl_dk_kanne.sisse=dk_piirmaar.sisse and gl_dk_kanne.asutnr=dk_piirmaar.asutnr and gl_dk_kanne.arvekuup=dk_piirmaar.arvekuup and gl_dk_kanne.arvenr=dk_piirmaar.arvenr
                       left outer join kblist on gl_dk_kanne.kbnr=kblist.kbnr
                       left outer join skoobid on dk_piirmaar.skoop=skoobid.skoop
      where (gl_dk_arvetas.asutnr is not null or dk_piirmaar.asutnr is not null) and (dk_piirmaar.skoop=a_skoop or a_skoop=0) and Left(skoobid.kood,Length(a_skoopkood))=a_skoopkood
      group by gl_dk_kanne.panknr,gl_dk_kanne.sisse,gl_dk_kanne.asutnr,gl_dk_kanne.arvekuup,gl_dk_kanne.arvenr,kb_protsent,gl_kb_erisus;
-- erisus 03
  delete from gl_dk_arved;
  insert into gl_dk_arved(asutnr,arvekuup,arvenr,taskuup)
    select gl_dk_arvetas2007.asutnr,gl_dk_arvetas2007.arvekuup,gl_dk_arvetas2007.arvenr,ymd(2014,11,1)
      from gl_dk_arvetas2007
      where makssumma3 is null or makssumma3=0
      group by gl_dk_arvetas2007.asutnr,gl_dk_arvetas2007.arvekuup,gl_dk_arvetas2007.arvenr;
  update gl_dk_arvetas2007 left outer join gl_dk_arved on gl_dk_arvetas2007.asutnr=gl_dk_arved.asutnr and gl_dk_arvetas2007.arvekuup=gl_dk_arved.arvekuup and gl_dk_arvetas2007.arvenr=gl_dk_arved.arvenr
    set doknr=if doknr is null or Length(doknr)=0 then '03' else doknr+',03' endif
    where gl_dk_arvetas2007.tyyp=0 and gl_dk_arved.asutnr is not null;
-- kustutada ilma kaibemaksuta read
  delete from gl_dk_arvetas2007 where makssumma3 is null or makssumma3=0;
END