ALTER PROCEDURE "DBA"."kp_koond_inf14dekl"(in a_skoop integer,in a_objnr integer,in a_paring integer,in a_peralg date,in a_perlop date)
BEGIN
  delete from gl_tr_universal;
  insert into gl_tr_universal("id","info",sum5,sum6,sum1,sum2)
    select kp_kanne.asutnr,
           ls_maksud.markus,
           month(if kp_kanne.arvekuup is null then kp_kanne.kuup else kp_kanne.arvekuup endif) as kp_kanne_kuu,
           years(if kp_kanne.arvekuup is null then kp_kanne.kuup else kp_kanne.arvekuup endif) as kp_kanne_aasta,
           sum((1-2*kp_kanne.sisse)*kp_kanne.summa) as kp_kanne_sum1,
           if kp_kanne_sum1>0 then 1 else 0 endif
      from kp_kanne left outer join kp_obj on kp_kanne.objnr = kp_obj.objnr
                    left outer join ls_maksud on kp_kanne.id_maks = ls_maksud."id"
                    left outer join ls_makslist on ls_maksud.maksnr=ls_makslist.maksnr
      where (kp_obj.skoop = a_skoop or a_skoop = 0) and
            (kp_kanne.objnr=a_objnr or a_objnr=0) and
            (kp_kanne.kuup>=a_peralg) and(kp_kanne.kuup<=a_perlop) and
             kp_kanne.asutnr > 0 and
             ls_makslist.tyyp=2
      group by kp_kanne.asutnr,ls_maksud.markus,kp_kanne_kuu,kp_kanne_aasta;
  insert into gl_tr_universal("id","info",id1,sum5,sum6,sum3,sum4)
    select kp_kanne.asutnr,
           ls_maksud.markus,
           ls_maksud.taiturnr,
           month(if kp_kanne.arvekuup is null then kp_kanne.kuup else kp_kanne.arvekuup endif) as kp_kanne_kuu,
           years(if kp_kanne.arvekuup is null then kp_kanne.kuup else kp_kanne.arvekuup endif) as kp_kanne_aasta,
           sum((1-2*kp_kanne.sisse)*kp_kanne.summa) as kp_kanne_sum3,
           if kp_kanne_sum3>0 then 1 else 0 endif
      from kp_kanne left outer join kp_obj on kp_kanne.objnr = kp_obj.objnr
                    left outer join ls_maksud on kp_kanne.id_maks = ls_maksud."id"
                    left outer join ls_makslist on ls_maksud.maksnr=ls_makslist.maksnr
      where (kp_obj.skoop = a_skoop or a_skoop = 0) and
            (kp_kanne.objnr=a_objnr or a_objnr=0) and
            (kp_kanne.kuup>=a_peralg) and(kp_kanne.kuup<=a_perlop) and
             kp_kanne.asutnr > 0 and
             ls_makslist.tyyp=3
      group by kp_kanne.asutnr,ls_maksud.markus,ls_maksud.taiturnr,kp_kanne_kuu,kp_kanne_aasta;
  insert into gl_tr_universal("id",summa)
    select ls_laps.asutnr,
           sum((1-2*kp_kanne.sisse)*kp_kanne.summa)
      from kp_kanne left outer join kp_obj on kp_kanne.objnr = kp_obj.objnr
                    left outer join ls_maksud on kp_kanne.id_maks = ls_maksud.id
                    left outer join ls_makslist on ls_maksud.maksnr=ls_makslist.maksnr
                    left outer join ls_laps on ls_maksud.lapsnr=ls_laps.lapsnr
      where (kp_obj.skoop = a_skoop or a_skoop = 0) and
            (kp_kanne.objnr=a_objnr or a_objnr=0) and
            (kp_kanne.kuup>=a_peralg) and(kp_kanne.kuup<=a_perlop) and
             ls_makslist.tyyp=4
      group by ls_laps.asutnr;
END