ALTER PROCEDURE "DBA"."dk_memorder"(in id_paring integer,in id_obj integer,in id_skoop integer,in peralg date,in perlop date,in a_valver smallint default 1)
begin
  declare li_paring integer;
  set li_paring=set_gl_1(id_paring);
  delete from gl_tr_order;
  insert into gl_tr_order( sisse,summa,arv,order1,deeb1,kree1,kulnr,talnr,artnr,tulnr,objectnr,osaknr,subjectnr,suundnr) 
    select dk_kanne.sisse,sum(dk_kanne.summa),count(dk_kanne.summa),dk_obj."order",(if dk_kanne.sisse = 1 then dk_obj.djkonto else dk_kanne.konto endif) as deeb1,(if dk_kanne.sisse = 1 then dk_kanne.konto else dk_obj.djkonto endif) as kree1,dk_kanne.kulnr,dk_kanne.talnr,dk_kanne.artnr,dk_kanne.tulnr,dk_kanne.objectnr,dk_kanne.osaknr,dk_kanne.subjectnr,dk_kanne.suundnr from dk_kanne key left outer join dk_obj left outer join gl_1 on dk_kanne.id = gl_1.id and dk_kanne.kuup = gl_1.kuup where
      (id_paring = 0 or(dk_kanne.id = gl_1.id and dk_kanne.kuup = gl_1.kuup)) and(dk_kanne.objnr = id_obj or id_obj = 0) and(dk_obj.skoop = id_skoop or id_skoop = 0) and(dk_kanne.kuup >= peralg) and(dk_kanne.kuup <= perlop)
      group by dk_kanne.sisse,dk_obj."order",deeb1,kree1,dk_kanne.kulnr,dk_kanne.talnr,dk_kanne.artnr,dk_kanne.tulnr,dk_kanne.objectnr,dk_kanne.osaknr,dk_kanne.subjectnr,dk_kanne.suundnr order by
      dk_kanne.sisse asc,dk_obj."order" asc,deeb1 asc,kree1 asc,dk_kanne.kulnr asc,dk_kanne.talnr asc,dk_kanne.artnr asc,dk_kanne.tulnr asc,dk_kanne.objectnr asc,dk_kanne.osaknr asc,dk_kanne.subjectnr asc,dk_kanne.suundnr asc;
  insert into gl_tr_order( sisse,summa,arv,order1,deeb1,kree1,kulnr,talnr,artnr,tulnr,objectnr,osaknr,subjectnr,suundnr) 
    select dk_kanne.sisse,sum(dk_kanne.summa2),count(dk_kanne.summa2),dk_obj."order",(if dk_kanne.sisse = 1 then dk_obj.djkonto else(if kblist.d_konto is null then dk_kanne.konto else kblist.d_konto endif) endif) as deeb1,(if dk_kanne.sisse = 1 then(if kblist.k_konto is null then dk_kanne.konto else kblist.k_konto endif) else dk_obj.djkonto endif) as kree1,dk_kanne.kulnr,dk_kanne.talnr,if kblist.artnr is null then dk_kanne.artnr else kblist.artnr endif,dk_kanne.tulnr,dk_kanne.objectnr,dk_kanne.osaknr,dk_kanne.subjectnr,dk_kanne.suundnr from dk_kanne key left outer join dk_obj left outer join gl_1 on dk_kanne.id = gl_1.id and dk_kanne.kuup = gl_1.kuup,dk_kanne key left outer join kblist where
      (id_paring = 0 or(dk_kanne.id = gl_1.id and dk_kanne.kuup = gl_1.kuup)) and(dk_kanne.objnr = id_obj or id_obj = 0) and(dk_obj.skoop = id_skoop or id_skoop = 0) and(dk_kanne.kuup >= peralg) and(dk_kanne.kuup <= perlop)
      group by dk_kanne.sisse,dk_obj."order",deeb1,kree1,kblist.artnr,dk_kanne.kulnr,dk_kanne.talnr,dk_kanne.artnr,dk_kanne.tulnr,dk_kanne.objectnr,dk_kanne.osaknr,dk_kanne.subjectnr,dk_kanne.suundnr order by
      dk_kanne.sisse asc,dk_obj."order" asc,deeb1 asc,kree1 asc,kblist.artnr asc,dk_kanne.kulnr asc,dk_kanne.talnr asc,dk_kanne.artnr asc,dk_kanne.tulnr asc,dk_kanne.objectnr asc,dk_kanne.osaknr asc,dk_kanne.subjectnr asc,dk_kanne.suundnr asc;
  delete from gl_tr_order where(gl_tr_order.summa is null or gl_tr_order.summa = 0)
end