ALTER PROCEDURE "DBA"."pr_koond_sap"(in a_skoopkood char(16),in a_skoop integer,in a_peralg date,in a_perlop date)
BEGIN
  delete gl_dk_kanne;
  insert into gl_dk_kanne (summa,partnr,konto,talnr,alliknr,ravonr,kulnr,objectnr,osaknr,suundnr,artnr,tulnr)
    select sum(pr_kanne.summa),partnr,deeb,talnr,alliknr,ravonr,kulnr,objectnr,osaknr,suundnr,artnr,tulnr
      from pr_kanne
      where pr_kanne.kuup>=a_peralg and pr_kanne.kuup<=a_perlop and pr_kanne.deeb is not null
      group by pr_kanne.partnr,pr_kanne.deeb,pr_kanne.talnr,pr_kanne.alliknr,pr_kanne.ravonr,pr_kanne.kulnr,pr_kanne.objectnr,pr_kanne.osaknr,pr_kanne.suundnr,pr_kanne.artnr,pr_kanne.tulnr;
  insert into gl_dk_kanne (summa2,partnr,konto,talnr,alliknr,ravonr,kulnr,objectnr,osaknr,suundnr,artnr,tulnr)
    select sum(pr_kanne.summa),partnr2,kree,talnr,alliknr,ravonr,pr_kanne.kulnr,pr_kanne.objectnr,pr_kanne.osaknr,pr_kanne.suundnr,pr_kanne.artnr,pr_kanne.tulnr
      from pr_kanne
      where pr_kanne.kuup>=a_peralg and pr_kanne.kuup<=a_perlop and pr_kanne.kree is not null
      group by pr_kanne.partnr2,pr_kanne.kree,pr_kanne.talnr,pr_kanne.alliknr,pr_kanne.ravonr,pr_kanne.kulnr,pr_kanne.objectnr,pr_kanne.osaknr,pr_kanne.suundnr,pr_kanne.artnr,pr_kanne.tulnr;
  -- miinused
  update gl_dk_kanne set summa2=abs(summa), summa=null where summa<0;
  update gl_dk_kanne set summa=abs(summa2), summa2=null where summa2<0;
  -- kontoga seotud tehingupartnerid
  update gl_dk_kanne left outer join kontlist on gl_dk_kanne.konto=kontlist.konto set gl_dk_kanne.partnr=kontlist.partnr where kontlist.partnr is not null;
  -- deebet kontojuhised
  update gl_dk_kanne left outer join kontlist on gl_dk_kanne.konto=kontlist.konto set gl_dk_kanne.partnr=if kontlist.djuhpart is null or kontlist.djuhpart=0 then null else gl_dk_kanne.partnr endif,gl_dk_kanne.talnr=if kontlist.djuhtal is null or kontlist.djuhtal=0 then null else gl_dk_kanne.talnr endif,gl_dk_kanne.kulnr=if kontlist.djuhkul is null or kontlist.djuhkul=0 then null else gl_dk_kanne.kulnr endif,gl_dk_kanne.objectnr=if kontlist.djuhobject is null or kontlist.djuhobject=0 then null else gl_dk_kanne.objectnr endif,gl_dk_kanne.osaknr=if kontlist.djuhosak is null or kontlist.djuhosak=0 then null else gl_dk_kanne.osaknr endif,gl_dk_kanne.artnr=if kontlist.djuhart is null or kontlist.djuhart=0 then null else gl_dk_kanne.artnr endif,gl_dk_kanne.tulnr=if kontlist.djuhtul is null or kontlist.djuhtul=0 then null else gl_dk_kanne.tulnr endif,gl_dk_kanne.alliknr=if kontlist.djuhallik is null or kontlist.djuhallik=0 then null else gl_dk_kanne.alliknr endif,gl_dk_kanne.ravonr=if kontlist.djuhravo is null or kontlist.djuhravo=0 then null else gl_dk_kanne.ravonr endif where gl_dk_kanne.summa2 is null;
  -- kreedit kontojuhised
  update gl_dk_kanne left outer join kontlist on gl_dk_kanne.konto=kontlist.konto set gl_dk_kanne.partnr=if kontlist.kjuhpart is null or kontlist.kjuhpart=0 then null else gl_dk_kanne.partnr endif,gl_dk_kanne.talnr=if kontlist.kjuhtal is null or kontlist.kjuhtal=0 then null else gl_dk_kanne.talnr endif,gl_dk_kanne.kulnr=if kontlist.kjuhkul is null or kontlist.kjuhkul=0 then null else gl_dk_kanne.kulnr endif,gl_dk_kanne.objectnr=if kontlist.kjuhobject is null or kontlist.kjuhobject=0 then null else gl_dk_kanne.objectnr endif,gl_dk_kanne.osaknr=if kontlist.kjuhosak is null or kontlist.kjuhosak=0 then null else gl_dk_kanne.osaknr endif,gl_dk_kanne.artnr=if kontlist.kjuhart is null or kontlist.kjuhart=0 then null else gl_dk_kanne.artnr endif,gl_dk_kanne.tulnr=if kontlist.kjuhtul is null or kontlist.kjuhtul=0 then null else gl_dk_kanne.tulnr endif,gl_dk_kanne.alliknr=if kontlist.kjuhallik is null or kontlist.kjuhallik=0 then null else gl_dk_kanne.alliknr endif,gl_dk_kanne.ravonr=if kontlist.kjuhravo is null or kontlist.kjuhravo=0 then null else gl_dk_kanne.ravonr endif where gl_dk_kanne.summa is null;
  -- nulli tehingupartner
  update gl_dk_kanne set partnr=if_part_ravo(konto,partnr,ravonr);
  -- nulli tegevusala
  update gl_dk_kanne set talnr=if_tal_ravo(konto,talnr,ravonr);
  -- nulli tegevussuund
  update gl_dk_kanne set suundnr=null where Left(konto,1) in ('1','2','3','7','8','9');
  update gl_dk_kanne set suundnr=null where Left(konto,6) in ('601001','601005','601002');
END