ALTER PROCEDURE "dba"."mt_koond1"(in a_skoop integer,in a_yksusnr integer, in a_yksuskood char(16),in a_objnr integer,in a_paring integer,in peralg date,in perlop date,in a_id_user integer)
begin
  declare li_paring integer;
  declare li_alg smallint;
  declare li_sisse smallint;
  declare li_valja smallint;
  declare li_lopp smallint;
  delete from gl_mt_koond;
  set li_paring=set_gl_1(a_paring);
  select if t_user.tr_mt_koond1_objnr=1 then a_objnr else 0 endif,t_user.tr_mt_koond1_alg,t_user.tr_mt_koond1_sisse,t_user.tr_mt_koond1_valja,t_user.tr_mt_koond1_lopp into a_objnr,li_alg,li_sisse,li_valja,li_lopp from t_user where t_user.id_user=a_id_user;
  insert into gl_mt_koond(tootnr,akogus,asumma,dkogus,dsumma,kkogus,ksumma)
      select mt_kanne.tootnr,
             sum(if mt_kanne.kuup < peralg then if mt_kanne.sisse=1 then mt_kanne.kogus else -1*mt_kanne.kogus endif else 0 endif),
             sum(if mt_kanne.kuup < peralg then if mt_kanne.sisse=1 then mt_kanne.summa+mt_kanne.summa2 else -1*(mt_kanne.summa+mt_kanne.summa2) endif else 0 endif),
             sum(if mt_kanne.kuup >= peralg and mt_kanne.sisse=1 then mt_kanne.kogus else 0 endif),
             sum(if mt_kanne.kuup >= peralg and mt_kanne.sisse=1 then mt_kanne.summa+mt_kanne.summa2 else 0 endif),
             sum(if mt_kanne.kuup >= peralg and mt_kanne.sisse=0 then mt_kanne.kogus else 0 endif),
             sum(if mt_kanne.kuup >= peralg and mt_kanne.sisse=0 then mt_kanne.summa+mt_kanne.summa2 else 0 endif)
        from mt_kanne left outer join gl_1 on(mt_kanne.id = gl_1.id) and(mt_kanne.kuup = gl_1.kuup) left outer join mt_yksus on mt_kanne.yksusnr=mt_yksus.yksusnr
        where ((mt_kanne."id" = gl_1."id") and(mt_kanne.kuup = gl_1.kuup) or a_paring = 0) and
              (mt_kanne.yksusnr = a_yksusnr or a_yksusnr = 0) and
              Left(mt_yksus.kood,Length(a_yksuskood))=a_yksuskood and
              (mt_yksus.skoop = a_skoop or a_skoop = 0) and
              (mt_kanne.objnr = a_objnr or a_objnr = 0) and
              mt_kanne.tootnr > 0 and
              mt_kanne.kuup <= perlop
        group by mt_kanne.tootnr;
  update gl_mt_koond set lkogus = akogus+dkogus-kkogus,lsumma = asumma+dsumma-ksumma;
  delete from gl_mt_koond where ((akogus = 0 and asumma = 0) or li_alg=0) and ((dkogus = 0 and dsumma = 0) or li_sisse=0) and ((kkogus = 0 and ksumma = 0) or li_valja=0) and ((lkogus = 0 and lsumma = 0) or li_lopp=0)
end