ALTER PROCEDURE "dba"."pr_koond1_saldoandmik"(in a_skoopkood char(16),in a_skoop integer,in id_paring integer,in perlop date)
begin
  declare li_paring integer;
  declare li_pikkus smallint;
  declare li_00_ravonr integer;
  declare ls_u_partkood char(6);
  declare ls_saldod_konto char(7);
  declare li_saldod smallint;
  declare li_saldod_9 smallint;
  declare li_asutusisik smallint;
  delete from gl_dk_koond;
  set li_paring=set_gl_1(id_paring);
  set li_pikkus=Length(a_skoopkood);
  set li_00_ravonr=get_00_ravonr('');
  set ls_u_partkood="Left"(get_u_partkood(a_skoop),6);
  if Length(ls_u_partkood) = 0 then
    set ls_u_partkood='xxxyyy'
  end if;
  set ls_saldod_konto=get_pr_saldod_konto(a_skoop);
  select pr_konfm.yld_saldod,pr_konfm.yld_saldod_9,pr_konfm.yld_asutusisik into li_saldod,li_saldod_9,li_asutusisik from pr_konfm where pr_konfm.id = 1;
    insert into gl_dk_koond(konto,partnr,talnr,alliknr,ravonr,adeeb)
        select if li_saldod=1 and Length(ls_saldod_konto)>0 and locate('345678',"left"(pr_kanne.deeb,1)) > 0 then ls_saldod_konto else pr_kanne.deeb endif as pr_kanne_konto,
               if pr_kanne.partnr is null or pr_kanne_konto=ls_saldod_konto then 0 else pr_kanne.partnr endif,
               if pr_kanne.talnr is null or pr_kanne_konto=ls_saldod_konto then 0 else pr_kanne.talnr endif,
               if pr_kanne.alliknr is null or pr_kanne_konto=ls_saldod_konto then 0 else pr_kanne.alliknr endif,
               if pr_kanne_konto=ls_saldod_konto then li_00_ravonr else if pr_kanne.ravonr is null then 0 else pr_kanne.ravonr endif endif,
               sum(pr_kanne.summa)
          from pr_kanne left outer join gl_1 on(pr_kanne.id = gl_1.id) and(pr_kanne.kuup = gl_1.kuup) left outer join skoobid on pr_kanne.skoop=skoobid.skoop
          where ((pr_kanne.id = gl_1.id) and(pr_kanne.kuup = gl_1.kuup) or id_paring = 0) and Left(skoobid.kood,li_pikkus)=a_skoopkood and (pr_kanne.skoop=a_skoop or a_skoop=0) and pr_kanne.deeb is not null and years(pr_kanne.kuup) < years(perlop) and (Length(ls_saldod_konto)>0 or not(li_saldod = 1 and locate('345678',"left"(pr_kanne.deeb,1)) > 0)) and not(li_saldod_9 = 1 and "left"(pr_kanne.deeb,1) = '9')
          group by pr_kanne.deeb,pr_kanne.partnr,pr_kanne.talnr,pr_kanne.alliknr,pr_kanne.ravonr;
    insert into gl_dk_koond(konto,partnr,talnr,alliknr,ravonr,akree)
        select if li_saldod=1 and Length(ls_saldod_konto)>0 and locate('345678',"left"(pr_kanne.kree,1)) > 0 then ls_saldod_konto else pr_kanne.kree endif as pr_kanne_konto,
               if pr_kanne.partnr2 is null or pr_kanne_konto=ls_saldod_konto then 0 else pr_kanne.partnr2 endif,
               if pr_kanne.talnr is null or pr_kanne_konto=ls_saldod_konto then 0 else pr_kanne.talnr endif,
               if pr_kanne.alliknr is null or pr_kanne_konto=ls_saldod_konto then 0 else pr_kanne.alliknr endif,
               if pr_kanne_konto=ls_saldod_konto then li_00_ravonr else if pr_kanne.ravonr is null then 0 else pr_kanne.ravonr endif endif,
               sum(pr_kanne.summa)
          from pr_kanne left outer join gl_1 on(pr_kanne.id = gl_1.id) and(pr_kanne.kuup = gl_1.kuup) left outer join skoobid on pr_kanne.skoop=skoobid.skoop
          where ((pr_kanne.id = gl_1.id) and(pr_kanne.kuup = gl_1.kuup) or id_paring = 0) and Left(skoobid.kood,li_pikkus)=a_skoopkood and (pr_kanne.skoop=a_skoop or a_skoop=0) and pr_kanne.kree is not null and years(pr_kanne.kuup) < years(perlop) and (Length(ls_saldod_konto)>0 or not(li_saldod = 1 and locate('345678',"left"(pr_kanne.kree,1)) > 0)) and not(li_saldod_9 = 1 and "left"(pr_kanne.kree,1) = '9')
          group by pr_kanne.kree,pr_kanne.partnr2,pr_kanne.talnr,pr_kanne.alliknr,pr_kanne.ravonr;
      -- 00 rahavoog
    update gl_dk_koond left outer join kontlist on gl_dk_koond.konto=kontlist.konto set gl_dk_koond.ravonr=if kontlist.nulliravo is not null or gl_dk_koond.ravonr=0 then li_00_ravonr else gl_dk_koond.ravonr endif;
    -- aasta
    insert into gl_dk_koond(konto,partnr,talnr,alliknr,ravonr,deeb)
        select pr_kanne.deeb,
               if pr_kanne.partnr is null then 0 else pr_kanne.partnr endif,
               if pr_kanne.talnr is null then 0 else pr_kanne.talnr endif,
               if pr_kanne.alliknr is null then 0 else pr_kanne.alliknr endif,
               if pr_kanne.ravonr is null then 0 else pr_kanne.ravonr endif,
               sum(pr_kanne.summa)
          from pr_kanne left outer join gl_1 on(pr_kanne.id = gl_1.id) and(pr_kanne.kuup = gl_1.kuup) left outer join skoobid on pr_kanne.skoop=skoobid.skoop
          where ((pr_kanne.id = gl_1.id) and(pr_kanne.kuup = gl_1.kuup) or id_paring = 0) and Left(skoobid.kood,li_pikkus)=a_skoopkood and (pr_kanne.skoop=a_skoop or a_skoop=0) and pr_kanne.deeb is not null and years(pr_kanne.kuup)=years(perlop) and pr_kanne.kuup<=perlop
          group by pr_kanne.deeb,pr_kanne.partnr,pr_kanne.talnr,pr_kanne.alliknr,pr_kanne.ravonr;
    insert into gl_dk_koond(konto,partnr,talnr,alliknr,ravonr,kree)
        select pr_kanne.kree,
               if pr_kanne.partnr2 is null then 0 else pr_kanne.partnr2 endif,
               if pr_kanne.talnr is null then 0 else pr_kanne.talnr endif,
               if pr_kanne.alliknr is null then 0 else pr_kanne.alliknr endif,
               if pr_kanne.ravonr is null then 0 else pr_kanne.ravonr endif,
               sum(pr_kanne.summa)
          from pr_kanne left outer join gl_1 on(pr_kanne.id = gl_1.id) and(pr_kanne.kuup = gl_1.kuup) left outer join skoobid on pr_kanne.skoop=skoobid.skoop
          where ((pr_kanne.id = gl_1.id) and(pr_kanne.kuup = gl_1.kuup) or id_paring = 0) and Left(skoobid.kood,li_pikkus)=a_skoopkood and (pr_kanne.skoop=a_skoop or a_skoop=0) and pr_kanne.kree is not null and years(pr_kanne.kuup)=years(perlop) and pr_kanne.kuup<=perlop
          group by pr_kanne.kree,pr_kanne.partnr2,pr_kanne.talnr,pr_kanne.alliknr,pr_kanne.ravonr;
  -- kontoga seotud tehingupartnerid
  update gl_dk_koond left outer join kontlist on gl_dk_koond.konto = kontlist.konto set gl_dk_koond.partnr = kontlist.partnr where kontlist.partnr is not null;
  -- deebet kontojuhised
  update gl_dk_koond left outer join kontlist on gl_dk_koond.konto=kontlist.konto set gl_dk_koond.partnr=if kontlist.djuhpart is null or kontlist.djuhpart=0 then 0 else gl_dk_koond.partnr endif,gl_dk_koond.talnr=if kontlist.djuhtal is null or kontlist.djuhtal=0 then 0 else gl_dk_koond.talnr endif,gl_dk_koond.alliknr=if kontlist.djuhallik is null or kontlist.djuhallik=0 then 0 else gl_dk_koond.alliknr endif,gl_dk_koond.ravonr=if kontlist.djuhravo is null or kontlist.djuhravo=0 then 0 else gl_dk_koond.ravonr endif where gl_dk_koond.akree=0 and gl_dk_koond.kree=0;
  -- kreedit kontojuhised
  update gl_dk_koond left outer join kontlist on gl_dk_koond.konto=kontlist.konto set gl_dk_koond.partnr=if kontlist.kjuhpart is null or kontlist.kjuhpart=0 then 0 else gl_dk_koond.partnr endif,gl_dk_koond.talnr=if kontlist.kjuhtal is null or kontlist.kjuhtal=0 then 0 else gl_dk_koond.talnr endif,gl_dk_koond.alliknr=if kontlist.kjuhallik is null or kontlist.kjuhallik=0 then 0 else gl_dk_koond.alliknr endif,gl_dk_koond.ravonr=if kontlist.kjuhravo is null or kontlist.kjuhravo=0 then 0 else gl_dk_koond.ravonr endif where gl_dk_koond.adeeb=0 and gl_dk_koond.deeb=0;
  -- nulli tehingupartner
  update gl_dk_koond set partnr=if_part_ravo(konto,partnr,ravonr);
  -- nulli tegevusala
  update gl_dk_koond set talnr=if_tal_ravo(konto,talnr,ravonr);
  -- kustutamine
  delete gl_dk_koond
    from gl_dk_koond left outer join kontlist on gl_dk_koond.konto = kontlist.konto left outer join partlist on gl_dk_koond.partnr = partlist.partnr
    where (kontlist.sakon is null or kontlist.sakon=0) or Left(partlist.part,6)=ls_u_partkood;
end