ALTER PROCEDURE "dba"."pa_ametkoormus"( in a_id_yksus integer,in a_skoop integer,in a_t_paev numeric(2),in a_t_akuu numeric(2),in a_t_aasta numeric(4),in a_kulnr integer,in a_talnr integer,in a_tulnr integer,in a_objectnr integer,in a_osaknr integer,in a_suundnr integer,in a_statnr integer ) 
begin
  declare ls_ptk char(16);
  declare li_ptk integer;
  declare ls_talosa char(16);
  declare li_talosa integer;
  declare ls_osa char(16);
  declare li_osa integer;
  declare ls_object char(16);
  declare li_object integer;
  declare ls_osak char(16);
  declare li_osak integer;
  declare ls_suund char(16);
  declare li_suund integer;
  declare ls_stat char(16);
  declare li_stat integer;
  declare ld_kuup date;
  delete from gl_tr_tabel;
  set ld_kuup = ymd(a_t_aasta,a_t_akuu,a_t_paev);
  if a_kulnr > 0 then
    select trim(kullist.ptk) into ls_ptk from kullist where kullist.kulnr = a_kulnr;
    set li_ptk = Length(ls_ptk);
    if li_ptk is null or li_ptk = 0 then
      set a_kulnr = 0
    end if end if;
  if a_talnr > 0 then
    select trim(tallist.osa) into ls_talosa from tallist where tallist.talnr = a_talnr;
    set li_talosa = Length(ls_talosa);
    if li_talosa is null or li_talosa = 0 then
      set a_talnr = 0
    end if end if;
  if a_tulnr > 0 then
    select trim(tullist.osa) into ls_osa from tullist where tullist.tulnr = a_tulnr;
    set li_osa = Length(ls_osa);
    if li_osa is null or li_osa = 0 then
      set a_tulnr = 0
    end if end if;
  if a_objectnr > 0 then
    select trim(objlist.object) into ls_object from objlist where objlist.objectnr = a_objectnr;
    set li_object = Length(ls_object);
    if li_object is null or li_object = 0 then
      set a_objectnr = 0
    end if end if;
  if a_osaknr > 0 then
    select trim(osaklist.osak) into ls_osak from osaklist where osaklist.osaknr = a_osaknr;
    set li_osak = Length(ls_osak);
    if li_osak is null or li_osak = 0 then
      set a_osaknr = 0
    end if end if;
  if a_suundnr > 0 then
    select trim(suundlist.suund) into ls_suund from suundlist where suundlist.suundnr = a_suundnr;
    set li_suund = Length(ls_suund);
    if li_suund is null or li_suund = 0 then
      set a_suundnr = 0
    end if end if;
  if a_statnr > 0 then
    select trim(statlist.stat) into ls_stat from statlist where statlist.statnr = a_statnr;
    set li_stat = Length(ls_stat);
    if li_stat is null or li_stat = 0 then
      set a_statnr = 0
    end if end if;

  insert into gl_tr_tabel( sisse,"id",kood,nimi,deeb,adeeb,akree,ldeeb,lkree )
    select 0,
           get_pa_leping_tun_person(pa_leping.lepnr,ld_kuup) as pa_person,
           '','',
           Sum(get_pa_leping_tun_koht(pa_leping.lepnr,ld_kuup)),
           Sum(if pa_leping.id_koht=1 then get_pa_leping_tun_koht(pa_leping.lepnr,ld_kuup) else 0 endif),
           Sum(if pa_leping.id_koht=2 then get_pa_leping_tun_koht(pa_leping.lepnr,ld_kuup) else 0 endif),
           Sum(if pa_leping.id_koht=3 then get_pa_leping_tun_koht(pa_leping.lepnr,ld_kuup) else 0 endif),
           Sum(if pa_leping.id_koht=4 then get_pa_leping_tun_koht(pa_leping.lepnr,ld_kuup) else 0 endif)
      from pa_leping left outer join pa_isik on pa_leping.lepnr=pa_isik.lepnr
                     left outer join pa_yksus on pa_isik.yksusnr=pa_yksus.yksusnr
                     left outer join kullist on pa_yksus.kulnr=kullist.kulnr
                     left outer join tallist on pa_yksus.talnr=tallist.talnr
                     left outer join tullist on pa_yksus.tulnr=tullist.tulnr
                     left outer join objlist on pa_yksus.objectnr=objlist.objectnr
                     left outer join osaklist on pa_yksus.osaknr=osaklist.osaknr
                     left outer join suundlist on pa_yksus.suundnr=suundlist.suundnr
                     left outer join statlist on pa_yksus.statnr = statlist.statnr
      where (pa_isik.yksusnr = a_id_yksus or a_id_yksus = 0) and
            (pa_yksus.skoop = a_skoop or a_skoop = 0) and
            (pa_leping.kuup1<=ld_kuup) and(pa_leping.kuup2>=ld_kuup or pa_leping.kuup2 is null) and
            ("Left"(kullist.ptk,li_ptk) = ls_ptk or a_kulnr = 0) and("Left"(tallist.osa,li_talosa) = ls_talosa or a_talnr = 0) and("Left"(tullist.osa,li_osa) = ls_osa or a_tulnr = 0) and("Left"(objlist.object,li_object) = ls_object or a_objectnr = 0) and("Left"(osaklist.osak,li_osak) = ls_osak or a_osaknr = 0) and("Left"(suundlist.suund,li_suund) = ls_suund or a_suundnr = 0) and("Left"(statlist.stat,li_stat) = ls_stat or a_statnr = 0)
      group by pa_person;
  update gl_tr_tabel left outer join ametlist on gl_tr_tabel."id"=ametlist.person set gl_tr_tabel.kood=if ametlist.amet is null then '' else ametlist.amet endif,gl_tr_tabel.nimi=Left('   '+ametlist.nimi,100);

  delete from gl_tr_tabel where gl_tr_tabel.deeb = 0
end