ALTER PROCEDURE "DBA"."dk_3obj_saldod"( in id_skoop integer,in id_paring integer,in perlop date )
begin
  declare ll_objnr integer;
  declare li_paring integer;
  delete from gl_dk_arvetas;
  delete from gl_dk_arvetas2007;
  delete from gl_list;
  select dk_obj.objnr into ll_objnr from dk_obj where dk_obj.djkonto='103240' and dk_obj.skoop=id_skoop;
  if ll_objnr>0 then
    -- arveldused
    set li_paring=set_gl_1(id_paring);
    insert into gl_dk_arvetas( objnr,asutnr,arvenr,arvekuup,kuup,arvesumma) 
      select ll_objnr,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.kuup),sum(if dk_kanne.sisse = 1 then (dk_kanne.summa+dk_kanne.summa2) else (-1)*(dk_kanne.summa+dk_kanne.summa2) endif)
        from dk_kanne left outer join gl_1 on(dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) key left outer join dk_obj
        where ((dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) or id_paring = 0) and dk_kanne.objnr=ll_objnr and dk_kanne.asutnr>0 and dk_kanne.asutnr<>1255 and dk_kanne.kuup <= perlop
        group by dk_kanne.asutnr,dk_kanne_arvekuup,dk_kanne_arvenr;
    -- kassa/pank
    set li_paring=set_gl_1_conv_dk_kp(id_paring);
    insert into gl_dk_arvetas( objnr,asutnr,arvenr,arvekuup,makskuup,makssumma) 
      select ll_objnr,kp_kanne.asutnr,kp_kanne.arvenr,kp_kanne.arvekuup,max(kp_kanne.kuup),sum(if kp_kanne.sisse = 1 then kp_kanne.summa else (-1)*kp_kanne.summa endif)
        from kp_kanne left outer join gl_1 on(kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) left outer join kp_obj on kp_kanne.objnr = kp_obj.objnr
        where ((kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) or id_paring = 0) and kp_kanne.konto='103240' and kp_obj.skoop = id_skoop and kp_kanne.asutnr > 0 and kp_kanne.asutnr<>1255 and kp_kanne.kuup <= perlop
        group by kp_kanne.asutnr,kp_kanne.arvekuup,kp_kanne.arvenr;
  -- graafik
    insert into gl_dk_arvetas( objnr,asutnr,arvenr,arvekuup,tyyp,volg,sisse) 
      select ll_objnr,dk_graafik.asutnr,dk_graafik.arvenr,dk_graafik.arvekuup,if dk_graafik.mpakuup is not null and dk_graafik.mplkuup is not null and dk_graafik.mpakuup<=perlop and dk_graafik.mplkuup>=perlop then 999 else dk_graafik.tyyp endif,get_dk_graafik_volg(dk_graafik."id",perlop),get_dk_graafik_ridu(dk_graafik."id")
        from dk_graafik
  end if;
  set ll_objnr=null;
  select dk_obj.objnr into ll_objnr from dk_obj where dk_obj.djkonto='103100' and dk_obj.skoop=id_skoop;
  if ll_objnr>0 then
    -- arveldused
    set li_paring=set_gl_1(id_paring);
    insert into gl_dk_arvetas( objnr,asutnr,arvenr,arvesumma2) 
      select ll_objnr,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,sum(if dk_kanne.sisse = 1 then (dk_kanne.summa+dk_kanne.summa2) else (-1)*(dk_kanne.summa+dk_kanne.summa2) endif)
        from dk_kanne left outer join gl_1 on(dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) key left outer join dk_obj
        where ((dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) or id_paring = 0) and (dk_obj.djkonto='103100' or dk_obj.djkonto='1031001') and dk_kanne.asutnr > 0 and dk_kanne.asutnr<>1255 and dk_kanne.kuup <= perlop
        group by dk_kanne.asutnr,dk_kanne_arvenr;
    -- kassa/pank
    set li_paring=set_gl_1_conv_dk_kp(id_paring);
    insert into gl_dk_arvetas( objnr,asutnr,arvenr,makskuup,makssumma2) 
      select ll_objnr,kp_kanne.asutnr,kp_kanne.arvenr,max(kp_kanne.kuup),sum(if kp_kanne.sisse = 1 then kp_kanne.summa else (-1)*kp_kanne.summa endif)
        from kp_kanne left outer join gl_1 on(kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) left outer join kp_obj on kp_kanne.objnr = kp_obj.objnr
        where ((kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) or id_paring = 0) and (kp_kanne.konto='103100' or kp_kanne.konto='1031001') and kp_obj.skoop = id_skoop and kp_kanne.asutnr > 0 and kp_kanne.asutnr<>1255 and kp_kanne.kuup <= perlop
        group by kp_kanne.asutnr,kp_kanne.arvenr;
  -- graafik
    insert into gl_dk_arvetas( objnr,asutnr,arvenr,arvekuup,tyyp) 
      select ll_objnr,dk_graafik.asutnr,dk_graafik.arvenr,dk_graafik.arvekuup,if dk_graafik.mpakuup is not null and dk_graafik.mplkuup is not null and dk_graafik.mpakuup<=perlop and dk_graafik.mplkuup>=perlop then 999 else dk_graafik.tyyp endif
        from dk_graafik
  end if;
  set ll_objnr=null;
  select dk_obj.objnr into ll_objnr from dk_obj where dk_obj.djkonto='103690' and dk_obj.skoop=id_skoop;
  if ll_objnr>0 then
    -- arveldused
    set li_paring=set_gl_1(id_paring);
    insert into gl_dk_arvetas( objnr,asutnr,arvenr,arvesumma3) 
      select ll_objnr,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,sum(if dk_kanne.sisse = 1 then (dk_kanne.summa+dk_kanne.summa2) else (-1)*(dk_kanne.summa+dk_kanne.summa2) endif)
        from dk_kanne left outer join gl_1 on(dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) key left outer join dk_obj
        where ((dk_kanne.id = gl_1.id) and(dk_kanne.kuup = gl_1.kuup) or id_paring = 0) and dk_kanne.objnr=ll_objnr and dk_kanne.asutnr > 0 and dk_kanne.asutnr<>1255 and dk_kanne.kuup <= perlop
        group by dk_kanne.asutnr,dk_kanne_arvenr;
    -- kassa/pank
    set li_paring=set_gl_1_conv_dk_kp(id_paring);
    insert into gl_dk_arvetas( objnr,asutnr,arvenr,makskuup,makssumma3) 
      select ll_objnr,kp_kanne.asutnr,kp_kanne.arvenr,max(kp_kanne.kuup),sum(if kp_kanne.sisse = 1 then kp_kanne.summa else (-1)*kp_kanne.summa endif)
        from kp_kanne left outer join gl_1 on(kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) left outer join kp_obj on kp_kanne.objnr = kp_obj.objnr
        where ((kp_kanne.id = gl_1.id) and(kp_kanne.kuup = gl_1.kuup) or id_paring = 0) and kp_kanne.konto='103690' and kp_obj.skoop = id_skoop and kp_kanne.asutnr > 0 and kp_kanne.asutnr<>1255 and kp_kanne.kuup <= perlop
        group by kp_kanne.asutnr,kp_kanne.arvenr;
  -- graafik
    insert into gl_dk_arvetas( objnr,asutnr,arvenr,arvekuup,tyyp) 
      select ll_objnr,dk_graafik.asutnr,dk_graafik.arvenr,dk_graafik.arvekuup,if dk_graafik.mpakuup is not null and dk_graafik.mplkuup is not null and dk_graafik.mpakuup<=perlop and dk_graafik.mplkuup>=perlop then 999 else dk_graafik.tyyp endif
        from dk_graafik
  end if;
  -- nullid
  update gl_dk_arvetas set arvesumma=0 where arvesumma is null;
  update gl_dk_arvetas set makssumma=0 where makssumma is null;
  update gl_dk_arvetas set arvesumma2=0 where arvesumma2 is null;
  update gl_dk_arvetas set makssumma2=0 where makssumma2 is null;
  update gl_dk_arvetas set arvesumma3=0 where arvesumma3 is null;
  update gl_dk_arvetas set makssumma3=0 where makssumma3 is null;
  update gl_dk_arvetas set volg=0 where volg is null;
  -- koond
  insert into gl_dk_arvetas2007( asutnr,arvenr,arvekuup,kuup,tyyp,arvesumma,makssumma,arvesumma2,makssumma2,arvesumma3,makssumma3,volg,sisse) 
    select gl_dk_arvetas.asutnr,gl_dk_arvetas.arvenr,max(gl_dk_arvetas.arvekuup),max(gl_dk_arvetas.kuup),max(tyyp),sum(gl_dk_arvetas.arvesumma),sum(gl_dk_arvetas.makssumma),sum(gl_dk_arvetas.arvesumma2),sum(gl_dk_arvetas.makssumma2),sum(gl_dk_arvetas.arvesumma3),sum(gl_dk_arvetas.makssumma3),sum(gl_dk_arvetas.volg),max(sisse)
      from gl_dk_arvetas
      group by gl_dk_arvetas.asutnr,gl_dk_arvetas.arvenr;
  delete from gl_dk_arvetas2007 where arvesumma-makssumma=0 and arvesumma2-makssumma2=0 and arvesumma3-makssumma3=0;
end