ALTER PROCEDURE "dba"."dk_arve_koond"( )
begin
  declare ll_id integer;
  declare ll_aasta integer;
  declare ll_objnr integer;
  declare ld_kuup date;
  declare ld_peralg date;
  declare ld_perlop date;
  declare ld_laekuup date;
  declare ld_arvekuup date;
  declare ld_crekuup date;
  declare ld_taskuup date;
  declare ld_koktaskuup date;
  declare ls_arvenr char(20);
  declare ls_crenr char(20);
  declare ll_asutnr integer;
  declare ll_saajanr integer;
  declare ls_mpank1 char(30);
  declare ls_mpanknimi1 char(50);
  declare ls_korresp1 char(10);
  declare ls_mpank2 char(30);
  declare ls_mpanknimi2 char(50);
  declare ls_korresp2 char(10);
  declare ls_mpank3 char(30);
  declare ls_mpanknimi3 char(50);
  declare ls_korresp3 char(10);
  declare ls_mpank4 char(30);
  declare ls_mpanknimi4 char(50);
  declare ls_korresp4 char(10);
  declare ls_mpank5 char(30);
  declare ls_mpanknimi5 char(50);
  declare ls_korresp5 char(10);
  declare ldc_summa decimal(15,2);
  declare ldc_summa2 decimal(15,2);
  declare ldc_summa3 decimal(15,2);
  declare ldc_kogus decimal(15,6);
  declare ldc_hind decimal(15,6);
  declare ldc_kb_protsent decimal(10,3);
  declare ldc_volg decimal(15,2);
  declare ldc_arvest decimal(15,2);
  declare ldc_arve decimal(15,2);
  declare ldc_laekunud decimal(15,2);
  declare ls_sisu char(250);
  declare ls_taiendus char(200);
  declare ls_koktaiendus char(250);
  declare ls_ls_laps_info char(600);
  declare ls_saaja char(101);
  declare ls_koksaaja char(300);
  declare ls_yhik char(12);
  declare ll_spank integer;
  declare ll_skoop integer;
  declare ll_panknr integer;
  declare ls_sarve char(30);
  declare ll_servicenr integer;
  declare ll_id_maks integer;
  declare ls_viitnr char(35);
  declare li_liida_viitnr smallint;
  declare ll_kombid integer;
  declare ls_komb_viitnr char(35);
  declare li_komb_summayks smallint;
  declare li_komb_saaja smallint;
  declare li_komb_teatis smallint;
  declare li_komb_volg smallint;
  declare li_komb_yksobj smallint;
  declare li_otsek_saldo smallint;
  declare li_txt_teatis smallint;
  declare li_komb_viivis smallint;
  declare ls_dk_kontod char(5000);
  declare err_notfound exception for sqlstate value '02000';
  declare c_gl_2 dynamic scroll cursor for select "gl_2"."id","gl_2"."aasta" from gl_2;
  declare c_dk_kanne dynamic scroll cursor for
    select dk_kanne."id",
           dk_kanne.kuup,
           if (ll_spank=0 and dk_kanne.sisse=1) or (ll_spank=1 and dk_kanne.sisse=0) then dk_kanne.summa else (-1)*dk_kanne.summa endif,
           if (ll_spank=0 and dk_kanne.sisse=1) or (ll_spank=1 and dk_kanne.sisse=0) then dk_kanne.summa2 else (-1)*dk_kanne.summa2 endif,
           if dk_kanne.summa3 is null then 0 else if (ll_spank=0 and dk_kanne.sisse=1) or (ll_spank=1 and dk_kanne.sisse=0) then dk_kanne.summa3 else (-1)*dk_kanne.summa3 endif endif,
           if dk_kanne.kogus is null then 0 else if (ll_spank=0 and dk_kanne.sisse=1) or (ll_spank=1 and dk_kanne.sisse=0) then dk_kanne.kogus else (-1)*dk_kanne.kogus endif endif,
           if dk_kanne.hind is null then 0 else dk_kanne.hind endif,
           Trim(dk_alus.nimi + ' ' + dk_kanne.info),
           Trim(dk_kanne.taiendus),
           if dk_kanne.taskuup is null then dk_kanne.arvekuup else dk_kanne.taskuup endif,
           if dk_kanne.yhiknr is null then '' else yhiklist.nimi endif,
           if (dk_kanne.kbnr is null or kblist.protsent is null) then -1 else kblist.protsent endif,
           get_asulist_nimi(dk_kanne.saajanr),
           Left(Trim(ls_laps.info1+' '+ls_laps.info2+' '+ls_laps.info3+' '+ls_laps.info4+' '+ls_laps.info5+' '+ls_laps.info6+' '+ls_laps.info7+' '+ls_laps.info8+' '+ls_laps.info9),600)
      from dk_kanne left outer join dk_alus on dk_kanne.alusnr = dk_alus.alusnr
                    left outer join yhiklist on dk_kanne.yhiknr = yhiklist.yhiknr
                    left outer join kblist on dk_kanne.kbnr = kblist.kbnr
                    left outer join ls_maksud on dk_kanne.id_maks=ls_maksud."id"
                    left outer join ls_laps on ls_maksud.lapsnr=ls_laps.lapsnr
      where dk_kanne.objnr=ll_objnr and dk_kanne.arvekuup=ld_arvekuup and dk_kanne.arvenr=ls_arvenr and dk_kanne.asutnr=ll_asutnr;
  declare c_teatis_dk_kanne dynamic scroll cursor for
    select if dk_kanne.sisse=1 then dk_kanne.summa+dk_kanne.summa2 else (-1)*(dk_kanne.summa+dk_kanne.summa2) endif,
           if li_komb_volg=1 then dk_kanne.kuup else dk_kanne.arvekuup endif
      from dk_kanne left outer join dk_obj on dk_kanne.objnr=dk_obj.objnr
      where dk_obj.skoop = ll_skoop and
           (dk_kanne.objnr=ll_objnr or (li_komb_yksobj=0 and dk_obj.viivis=0)) and
            dk_kanne.asutnr=ll_asutnr and
           (dk_kanne.saajanr=ll_saajanr or ll_saajanr=0) and
            dk_kanne.arvekuup<=ld_arvekuup;
  declare c_teatis_kp_kanne dynamic scroll cursor for
    select if kp_kanne.sisse = 1 then kp_kanne.summa else (-1)*kp_kanne.summa endif,
           kp_kanne.kuup
      from kp_kanne left outer join kp_obj on kp_kanne.objnr=kp_obj.objnr
                    left outer join gl_kp_kanne on kp_kanne.arvekuup=gl_kp_kanne.arvekuup and kp_kanne.arvenr=gl_kp_kanne.arvenr and kp_kanne.asutnr=gl_kp_kanne.asutnr
      where kp_kanne.asutnr=ll_asutnr and kp_obj.skoop=ll_skoop and locate(ls_dk_kontod,';'+"Left"(kp_kanne.konto+Space(7),7)+';')>0 and gl_kp_kanne.saajanr=ll_saajanr and kp_kanne.kuup<=ld_arvekuup;
  delete from gl_tr_arve;
  open c_gl_2;
  gl_2_loop: loop
    fetch next c_gl_2 into ll_id,ll_aasta;
    if sqlstate = err_notfound then -- kui eof
      leave gl_2_loop
    end if;
    select dk_kanne.objnr,dk_kanne.arvekuup,dk_kanne.arvenr,dk_kanne.asutnr,dk_kanne.saajanr,dk_kanne.panknr,dk_kanne.sarve,dk_kanne.servicenr,dk_kanne.crekuup,dk_kanne.crenr,dk_obj.spank,dk_obj.skoop,panklist_a.spanknimi,panklist_a.korresp,kp_obj_a.marve,panklist_b.spanknimi,panklist_b.korresp,kp_obj_b.marve,panklist_c.spanknimi,panklist_c.korresp,kp_obj_c.marve,panklist_d.spanknimi,panklist_d.korresp,kp_obj_d.marve,panklist_e.spanknimi,panklist_e.korresp,kp_obj_e.marve,dk_kanne.id_maks,
           dk_arve_komb."id",dk_arve_komb.viitnr,dk_arve_komb.summayks,dk_arve_komb.saaja,dk_arve_komb.teatis,dk_arve_komb.volg,dk_arve_komb.yksobj,if Length(Trim(dk_arve_komb.txt_teatis))>0 then 1 else 0 endif,dk_arve_komb.viivis
       into ll_objnr,ld_arvekuup,ls_arvenr,ll_asutnr,ll_saajanr,ll_panknr,ls_sarve,ll_servicenr,ld_crekuup,ls_crenr,ll_spank,ll_skoop,ls_mpanknimi1,ls_korresp1,ls_mpank1,ls_mpanknimi2,ls_korresp2,ls_mpank2,ls_mpanknimi3,ls_korresp3,ls_mpank3,ls_mpanknimi4,ls_korresp4,ls_mpank4,ls_mpanknimi5,ls_korresp5,ls_mpank5,ll_id_maks,
           ll_kombid,ls_komb_viitnr,li_komb_summayks,li_komb_saaja,li_komb_teatis,li_komb_volg,li_komb_yksobj,li_txt_teatis,li_komb_viivis
       from dk_kanne left outer join dk_obj on dk_kanne.objnr=dk_obj.objnr
                     left outer join dk_arve_komb on dk_kanne.kombid=dk_arve_komb."id"
                     left outer join kp_obj as kp_obj_a on dk_obj.kp_objnr=kp_obj_a.objnr
                     left outer join panklist as panklist_a on kp_obj_a.panknr=panklist_a.panknr
                     left outer join kp_obj as kp_obj_b on dk_obj.kp_objnr2=kp_obj_b.objnr
                     left outer join panklist as panklist_b on kp_obj_b.panknr=panklist_b.panknr
                     left outer join kp_obj as kp_obj_c on dk_obj.kp_objnr3=kp_obj_c.objnr
                     left outer join panklist as panklist_c on kp_obj_c.panknr=panklist_c.panknr
                     left outer join kp_obj as kp_obj_d on dk_obj.kp_objnr4=kp_obj_d.objnr
                     left outer join panklist as panklist_d on kp_obj_d.panknr=panklist_d.panknr
                     left outer join kp_obj as kp_obj_e on dk_obj.kp_objnr5=kp_obj_e.objnr
                     left outer join panklist as panklist_e on kp_obj_e.panknr=panklist_e.panknr
       where dk_kanne.id=ll_id and dk_kanne.aasta=ll_aasta;
    if not exists(select 1 from gl_tr_arve where gl_tr_arve.objnr=ll_objnr and gl_tr_arve.arvekuup=ld_arvekuup and gl_tr_arve.arvenr=ls_arvenr and gl_tr_arve.asutnr=ll_asutnr) then
      set ls_koksaaja = '';
      set ls_koktaiendus = '';
      set ld_koktaskuup = ld_arvekuup;
      select if li_txt_teatis=1 then 1 else if "skoobid"."dk_otsek_saldo" is null then 0 else "skoobid"."dk_otsek_saldo" endif endif into li_otsek_saldo from "skoobid" where "skoobid"."skoop"=ll_skoop;
      set li_liida_viitnr=get_u_liida_viitnr(ll_skoop);
      if ls_komb_viitnr is null or Length(Trim(ls_komb_viitnr))=0 then
        set ls_viitnr=get_u_viitnr(ll_skoop)
      else
        set ls_viitnr=ls_komb_viitnr
      end if;
      if ls_viitnr is null or Length(Trim(ls_viitnr))=0 then
        select asulist.viitnr_mulle into ls_viitnr from asulist where asulist.asutnr=ll_asutnr
      else
        if li_liida_viitnr=1 then
          select Left(ls_viitnr+asulist.viitnr_mulle,19) into ls_viitnr from asulist where asulist.asutnr=ll_asutnr;
          set ls_viitnr=get_viitnr_last_pos(ls_viitnr);
        end if
      end if;
      open c_dk_kanne;
      dk_kanne_loop: loop
        --  loe arvelduste kanne
        fetch next c_dk_kanne into ll_id,ld_kuup,ldc_summa,ldc_summa2,ldc_summa3,ldc_kogus,ldc_hind,ls_sisu,ls_taiendus,ld_taskuup,ls_yhik,ldc_kb_protsent,ls_saaja,ls_ls_laps_info;
         if sqlstate = err_notfound then -- kui eof
          leave dk_kanne_loop
        end if;
        if ls_ls_laps_info is null then
          set ls_ls_laps_info = ''
        end if;
        if li_komb_summayks=1 then
          if exists(select 1 from gl_tr_arve where gl_tr_arve.objnr=ll_objnr and gl_tr_arve.arvekuup=ld_arvekuup and gl_tr_arve.arvenr=ls_arvenr and gl_tr_arve.asutnr=ll_asutnr and gl_tr_arve.sisu=ls_sisu and gl_tr_arve.kb_protsent=ldc_kb_protsent and gl_tr_arve.ls_laps_info=ls_ls_laps_info) then
            update gl_tr_arve set gl_tr_arve.hind = gl_tr_arve.hind + ldc_summa, gl_tr_arve.summa = gl_tr_arve.summa + ldc_summa, gl_tr_arve.summa2 = gl_tr_arve.summa2 + ldc_summa2, gl_tr_arve.summa3 = gl_tr_arve.summa3 + ldc_summa3 where gl_tr_arve.objnr=ll_objnr and gl_tr_arve.arvekuup=ld_arvekuup and gl_tr_arve.arvenr=ls_arvenr and gl_tr_arve.asutnr=ll_asutnr and gl_tr_arve.sisu=ls_sisu and gl_tr_arve.kb_protsent=ldc_kb_protsent and gl_tr_arve.ls_laps_info=ls_ls_laps_info
          else
            insert into gl_tr_arve (objnr,kuup,arvekuup,arvenr,asutnr,saajanr,panknr,sarve,skoop,taiendus,mpanknimi1,korresp1,mpank1,mpanknimi2,korresp2,mpank2,mpanknimi3,korresp3,mpank3,mpanknimi4,korresp4,mpank4,mpanknimi5,korresp5,mpank5,id,summa,summa2,summa3,kogus,hind,kb_protsent,sisu,yhik,viitnr,servicenr,id_maks,ls_laps_info,kombid)
              values (ll_objnr,ld_kuup,ld_arvekuup,ls_arvenr,ll_asutnr,ll_saajanr,ll_panknr,ls_sarve,ll_skoop,'',ls_mpanknimi1,ls_korresp1,ls_mpank1,ls_mpanknimi2,ls_korresp2,ls_mpank2,ls_mpanknimi3,ls_korresp3,ls_mpank3,ls_mpanknimi4,ls_korresp4,ls_mpank4,ls_mpanknimi5,ls_korresp5,ls_mpank5,ll_id,ldc_summa,ldc_summa2,ldc_summa3,1,ldc_summa,ldc_kb_protsent,ls_sisu,ls_yhik,ls_viitnr,ll_servicenr,ll_id_maks,ls_ls_laps_info,ll_kombid)
          end if;
        else
          if exists(select 1 from gl_tr_arve where gl_tr_arve.objnr=ll_objnr and gl_tr_arve.arvekuup=ld_arvekuup and gl_tr_arve.arvenr=ls_arvenr and gl_tr_arve.asutnr=ll_asutnr and gl_tr_arve.sisu=ls_sisu and gl_tr_arve.yhik=ls_yhik and gl_tr_arve.hind=ldc_hind and gl_tr_arve.kb_protsent=ldc_kb_protsent and gl_tr_arve.ls_laps_info=ls_ls_laps_info) then
            update gl_tr_arve set gl_tr_arve.summa = gl_tr_arve.summa + ldc_summa, gl_tr_arve.summa2 = gl_tr_arve.summa2 + ldc_summa2, gl_tr_arve.summa3 = gl_tr_arve.summa3 + ldc_summa3, gl_tr_arve.kogus = gl_tr_arve.kogus + ldc_kogus where gl_tr_arve.objnr=ll_objnr and gl_tr_arve.arvekuup=ld_arvekuup and gl_tr_arve.arvenr=ls_arvenr and gl_tr_arve.asutnr=ll_asutnr and gl_tr_arve.sisu=ls_sisu and gl_tr_arve.yhik=ls_yhik and gl_tr_arve.hind=ldc_hind and gl_tr_arve.kb_protsent=ldc_kb_protsent and gl_tr_arve.ls_laps_info=ls_ls_laps_info
          else
            insert into gl_tr_arve (objnr,kuup,arvekuup,arvenr,asutnr,saajanr,panknr,sarve,skoop,taiendus,mpanknimi1,korresp1,mpank1,mpanknimi2,korresp2,mpank2,mpanknimi3,korresp3,mpank3,mpanknimi4,korresp4,mpank4,mpanknimi5,korresp5,mpank5,id,summa,summa2,summa3,kogus,hind,kb_protsent,sisu,yhik,viitnr,servicenr,crekuup,crenr,id_maks,ls_laps_info,kombid)
              values (ll_objnr,ld_kuup,ld_arvekuup,ls_arvenr,ll_asutnr,ll_saajanr,ll_panknr,ls_sarve,ll_skoop,'',ls_mpanknimi1,ls_korresp1,ls_mpank1,ls_mpanknimi2,ls_korresp2,ls_mpank2,ls_mpanknimi3,ls_korresp3,ls_mpank3,ls_mpanknimi4,ls_korresp4,ls_mpank4,ls_mpanknimi5,ls_korresp5,ls_mpank5,ll_id,ldc_summa,ldc_summa2,ldc_summa3,ldc_kogus,ldc_hind,ldc_kb_protsent,ls_sisu,ls_yhik,ls_viitnr,ll_servicenr,ld_crekuup,ls_crenr,ll_id_maks,ls_ls_laps_info,ll_kombid)
          end if;
        end if;
        if Length(ls_taiendus) > 0 then
          if locate(ls_koktaiendus,ls_taiendus,1) = 0 then
            set ls_koktaiendus=Left(Trim(ls_koktaiendus+' '+ls_taiendus),250)
          end if
        end if;
        if Length(ls_saaja) > 0 then
          if locate(ls_koksaaja,ls_saaja,1) = 0 then
            if Length(ls_koksaaja) > 0 then
              set ls_koksaaja=Left(ls_koksaaja+';',300)
            end if;
            set ls_koksaaja=Left(Trim(ls_koksaaja+' '+ls_saaja),300)
          end if
        end if;
        if ld_taskuup > ld_koktaskuup then
          set ld_koktaskuup = ld_taskuup
        end if
      end loop dk_kanne_loop;
      close c_dk_kanne;
-- teatis
      set ldc_volg=0;
      set ldc_arvest=0;
      set ldc_arve=0;
      set ldc_laekunud=0;
      if li_otsek_saldo=1 then
        if li_komb_saaja=0 or ll_saajanr is null then
          set ll_saajanr=0
        end if;
        if li_komb_teatis=0 then
          set ld_perlop=ld_arvekuup
        else
          set ld_perlop=dateadd(month,-1,ld_arvekuup);
          set ld_perlop=get_perlop(ld_perlop);
        end if;
        set ld_peralg=get_peralg(ld_perlop);
        set ls_dk_kontod=get_dk_kontod_spank(ll_skoop,2,(if li_komb_yksobj=1 then ll_objnr else 0 endif),2,0);
        set ld_laekuup=ld_peralg;
        open c_teatis_dk_kanne;
        teatis_dk_kanne_loop: loop
          fetch next c_teatis_dk_kanne into ldc_summa,ld_kuup;
          if sqlstate = err_notfound then -- kui eof
            leave teatis_dk_kanne_loop
          end if;
          if ld_kuup<ld_peralg then
            set ldc_volg=ldc_volg+ldc_summa
          elseif ld_kuup>ld_perlop then
            set ldc_arve=ldc_arve+ldc_summa
          else
            set ldc_arvest=ldc_arvest+ldc_summa
          end if
        end loop teatis_dk_kanne_loop;
        close c_teatis_dk_kanne;
        if ll_saajanr=0 then
          select sum(if kp_kanne.kuup < ld_peralg then if kp_kanne.sisse = 1 then kp_kanne.summa else (-1)*kp_kanne.summa endif else 0 endif),
                 sum(if kp_kanne.kuup >= ld_peralg then if kp_kanne.sisse = 1 then kp_kanne.summa else (-1)*kp_kanne.summa endif else 0 endif),
                 max(kp_kanne.kuup)
            into ldc_summa,ldc_laekunud,ld_laekuup
            from kp_kanne left outer join kp_obj on kp_kanne.objnr = kp_obj.objnr
            where kp_kanne.asutnr=ll_asutnr and kp_obj.skoop=ll_skoop and locate(ls_dk_kontod,';'+"Left"(kp_kanne.konto+Space(7),7)+';')>0 and kp_kanne.kuup<=ld_arvekuup;
          if ldc_summa is null then
            set ldc_summa = 0
          end if;
          if ldc_laekunud is null then
            set ldc_laekunud = 0
          end if;
          set ldc_volg=ldc_volg-ldc_summa;
        else
          delete from gl_kp_kanne;
          insert into gl_kp_kanne (arvekuup,arvenr,asutnr,saajanr) select dk_kanne.arvekuup,dk_kanne.arvenr,dk_kanne.asutnr,max(dk_kanne.saajanr) from dk_kanne where dk_kanne.asutnr=ll_asutnr and dk_kanne.saajanr is not null group by dk_kanne.arvekuup,dk_kanne.arvenr,dk_kanne.asutnr;
          open c_teatis_kp_kanne;
          teatis_kp_kanne_loop: loop
            fetch next c_teatis_kp_kanne into ldc_summa, ld_kuup;
            if sqlstate = err_notfound then -- kui eof
              leave teatis_kp_kanne_loop
            end if;
            if ld_kuup < ld_peralg then
              set ldc_volg=ldc_volg-ldc_summa
            else
              set ldc_laekunud=ldc_laekunud+ldc_summa;
              if ld_kuup > ld_laekuup then
                 set ld_laekuup=ld_kuup
              end if
            end if
          end loop teatis_kp_kanne_loop;
          close c_teatis_kp_kanne;
        end if;
      end if;
      update gl_tr_arve
        set gl_tr_arve.taiendus=ls_koktaiendus,
            gl_tr_arve.saaja=ls_koksaaja,
            gl_tr_arve.taskuup=ld_koktaskuup,
            gl_tr_arve.volg=ldc_volg,
            gl_tr_arve.arvest=ldc_arvest,
            gl_tr_arve.volg_viivis=0,
            gl_tr_arve.arvest_viivis=0,
            gl_tr_arve.arve=ldc_arve,
            gl_tr_arve.laekunud=ldc_laekunud,
            gl_tr_arve.laekuup=ld_laekuup,
            gl_tr_arve.peralg=ld_peralg,
            gl_tr_arve.perlop=ld_perlop
        where gl_tr_arve.objnr=ll_objnr and gl_tr_arve.arvekuup=ld_arvekuup and gl_tr_arve.arvenr=ls_arvenr and gl_tr_arve.asutnr=ll_asutnr;
  -- viivis
      if li_otsek_saldo=1 and li_komb_viivis=1 then
        set ldc_summa=0;
        set ldc_volg=0;
        set ldc_arvest=0;
        set ldc_arve=0;
        set ldc_laekunud=0;
        set ld_laekuup=ld_peralg;
        set ls_dk_kontod=get_dk_kontod_spank(ll_skoop,2,(if li_komb_yksobj=1 then ll_objnr else 0 endif),2,1);
        if li_komb_volg=1 then
          select sum(if dk_kanne.kuup<ld_peralg then if dk_kanne.sisse=1 then dk_kanne.summa+dk_kanne.summa2 else (-1)*(dk_kanne.summa+dk_kanne.summa2) endif else 0 endif),
                 sum(if dk_kanne.kuup>=ld_peralg then if dk_kanne.sisse=1 then dk_kanne.summa+dk_kanne.summa2 else (-1)*(dk_kanne.summa+dk_kanne.summa2) endif else 0 endif)
          into ldc_volg,ldc_arvest
          from dk_kanne left outer join dk_obj on dk_kanne.objnr=dk_obj.objnr
          where dk_obj.skoop=ll_skoop and
                dk_obj.viivis=1 and
                dk_kanne.asutnr=ll_asutnr and
                dk_kanne.arvekuup<=ld_arvekuup;
        else
          select sum(if dk_kanne.arvekuup<ld_peralg then if dk_kanne.sisse=1 then dk_kanne.summa+dk_kanne.summa2 else (-1)*(dk_kanne.summa+dk_kanne.summa2) endif else 0 endif),
                 sum(if dk_kanne.arvekuup>=ld_peralg then if dk_kanne.sisse=1 then dk_kanne.summa+dk_kanne.summa2 else (-1)*(dk_kanne.summa+dk_kanne.summa2) endif else 0 endif)
          into ldc_volg,ldc_arvest
          from dk_kanne left outer join dk_obj on dk_kanne.objnr=dk_obj.objnr
          where dk_obj.skoop=ll_skoop and
                dk_obj.viivis=1 and
                dk_kanne.asutnr=ll_asutnr and
                dk_kanne.arvekuup<=ld_arvekuup;
        end if;
        if ldc_volg is null then
          set ldc_volg=0
        end if;
        if ldc_arvest is null then
          set ldc_arvest=0
        end if;
        -- viivise laekumine
        select sum(if kp_kanne.kuup < ld_peralg then if kp_kanne.sisse = 1 then kp_kanne.summa else (-1)*kp_kanne.summa endif else 0 endif),
               sum(if kp_kanne.kuup >= ld_peralg then if kp_kanne.sisse = 1 then kp_kanne.summa else (-1)*kp_kanne.summa endif else 0 endif),
               max(kp_kanne.kuup)
          into ldc_summa,ldc_laekunud,ld_laekuup
          from kp_kanne left outer join kp_obj on kp_kanne.objnr = kp_obj.objnr
          where kp_kanne.asutnr = ll_asutnr and
                kp_obj.skoop = ll_skoop and
                locate(ls_dk_kontod,';'+"Left"(kp_kanne.konto+Space(7),7)+';') > 0 and
                kp_kanne.kuup<=ld_arvekuup;
        if ldc_summa is null then
          set ldc_summa=0
        end if;
        if ldc_laekunud is null then
          set ldc_laekunud=0
        end if;
-- tegemata saaja tapsusega korral
        set ldc_volg=ldc_volg-ldc_summa;
        update gl_tr_arve
          set gl_tr_arve.volg_viivis=ldc_volg,
              gl_tr_arve.arvest_viivis=ldc_arvest,
              gl_tr_arve.laekunud=gl_tr_arve.laekunud+ldc_laekunud,
              gl_tr_arve.laekuup=if ld_laekuup>gl_tr_arve.laekuup then ld_laekuup else gl_tr_arve.laekuup endif
          where gl_tr_arve.objnr=ll_objnr and gl_tr_arve.arvekuup=ld_arvekuup and gl_tr_arve.arvenr=ls_arvenr and gl_tr_arve.asutnr=ll_asutnr;
      end if
    end if
  end loop gl_2_loop;
  close c_gl_2;
end