ALTER PROCEDURE "dba"."pa_kuudekaupa"( in a_skoopkood char(16), in a_skoop integer, in a_yksuskood char(16), in a_yksusnr integer, in a_a_akuu numeric(2), in a_a_aasta numeric(4))
BEGIN
  declare ld_kuup1 date;
  declare ld_kuup2 date;
  declare li_i integer;
  declare li_a_akuu numeric(2);
  declare li_a_aasta numeric(4);
  delete from gl_4;
  delete from gl_list;
  delete from gl_tr_universal;
  delete from gl_tr_universal2;
  set li_a_akuu=a_a_akuu-5;
  if li_a_akuu<1 then
    set li_a_aasta=a_a_aasta-1;
    set li_a_akuu=li_a_akuu+12;
  else
    set li_a_aasta=a_a_aasta;
  end if;
  insert into gl_list("id1",sum1,sum2,sum3,sum4,sum5,sum6)
    select pa_tasu.lepnr,
           sum(pa_tasu.summa),
           pa_tasu.a_akuu,
           pa_tasu.a_aasta,
           0,0,0
      from pa_tasu left outer join pa_taslist on pa_tasu.tas_s=pa_taslist.tas_s
                   left outer join pa_yksus on pa_tasu.yksusnr = pa_yksus.yksusnr 
                   left outer join skoobid on pa_yksus.skoop=skoobid.skoop
      where (pa_yksus.skoop = a_skoop or a_skoop = 0) and "Left"(skoobid.kood,Length(a_skoopkood))=a_skoopkood and
            "Left"(pa_yksus.kood,Length(a_yksuskood))=a_yksuskood and (pa_tasu.yksusnr = a_yksusnr or a_yksusnr = 0) and
            ((pa_tasu.a_aasta=a_a_aasta and pa_tasu.a_akuu<=a_a_akuu) or (pa_tasu.a_aasta=li_a_aasta and pa_tasu.a_akuu>=li_a_akuu)) and
            pa_taslist.sisse=0 and pa_taslist.puhkkesk=1
      group by pa_tasu.lepnr,pa_tasu.a_akuu,pa_tasu.a_aasta;

  -- yhe lepingu tootajad
  insert into gl_4("id")
    select gl_list.id1
      from gl_list
      group by gl_list.id1;

  set li_i=7;
  while li_i<13 loop
    set ld_kuup1=ymd(a_a_aasta,li_i,1);
    if li_i in (7,8,10,12) then
      set ld_kuup2=ymd(a_a_aasta,li_i,31);
    else
      set ld_kuup2=ymd(a_a_aasta,li_i,30);
    end if;
    insert into gl_list("id1",sum1,sum2,sum3,sum4,sum5,sum6,kuup1,kuup2)
      select pa_leping.lepnr,
             0,
             li_i,
             a_a_aasta,
             0,0,0,
             if pa_leping.kuup1<ld_kuup1 then ld_kuup1 else pa_leping.kuup1 endif as pa_kuup1,
             if pa_leping.kuup2 is null or pa_leping.kuup2>ld_kuup2 then ld_kuup2 else pa_leping.kuup2 endif as pa_kuup2
        from pa_leping left outer join gl_4 on pa_leping.lepnr=gl_4."id"
        where gl_4."id" is not null and
              pa_kuup1<=ld_kuup2 and pa_kuup2>=ld_kuup1;
    set li_i=li_i+1
  end loop;

  update gl_list set sum4=get_tp_arv_tool(kuup1,kuup2,id1),
                     sum5=get_kp_arv_tool(kuup1,kuup2,id1),
                     sum6=get_kp_arv_tool_pta(kuup1,kuup2,id1)
    where kuup1 is not null and kuup2 is not null;

  insert into gl_tr_universal2("id1",sum1,sum2,sum3,sum4,sum5,sum6)
    select gl_list.id1,
           sum(sum1),
           sum2,
           sum3,
           max(sum4),
           max(sum5),
           max(sum6)
      from gl_list
      group by gl_list.id1,sum2,sum3;
     
  insert into gl_tr_universal("id1",sum1,sum2,sum3,sum4,sum5,sum6)
    select pa_leping.asutnr,
           sum(gl_tr_universal2.sum1),
           gl_tr_universal2.sum2,
           gl_tr_universal2.sum3,
           max(gl_tr_universal2.sum4),
           min(gl_tr_universal2.sum5),
           min(gl_tr_universal2.sum6)
      from gl_tr_universal2 left outer join pa_leping on gl_tr_universal2.id1=pa_leping.lepnr
      group by pa_leping.asutnr,gl_tr_universal2.sum2,gl_tr_universal2.sum3;



END