ALTER PROCEDURE "dba"."kp_makseandmik"( in a_skoopkood char(16),in a_skoop integer, in a_peralg date, in a_perlop date )
BEGIN
  declare ls_u_regnr char(11);
  declare ls_va_tp char(100);
  declare ls_va_konto char(100);
  declare ls_talkood char(16);
  delete from gl_kp_kanne;
  delete from gl_kp_kuuaruanne;
  set ls_u_regnr=get_u_regnr(a_skoop);
  set ls_talkood=Left(get_u_talkood(a_skoop),5);
  if Left(ls_u_regnr,1) in ('1','8','9') and ls_talkood='01112' then
    set ls_talkood=''
  end if;
  select tr_makseandmik_va_tp, tr_makseandmik_va_konto into ls_va_tp, ls_va_konto from kp_konfm where id=1;
  set ls_va_tp=';'+ls_va_tp+';014001;';
  set ls_va_konto=';'+ls_va_konto+';';
  -- kanded, kus summa paevas yhele saajale yhes maksekorralduses alla 100 euro
  insert into gl_kp_kanne(kuup,doknr,asutnr,summa)
    select kp_kanne.kuup,kp_kanne.doknr,kp_kanne.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 skoobid on kp_obj.skoop=skoobid.skoop
                   left outer join asulist on kp_kanne.asutnr=asulist.asutnr left outer join partlist on asulist.partnr=partlist.partnr
     where (kp_obj.skoop=a_skoop or a_skoop=0) and
           Left(skoobid.kood,length(a_skoopkood))=a_skoopkood and
           kp_obj.eaobj=1 and
           kp_kanne.kuup>=a_peralg and kp_kanne.kuup<=a_perlop and
           kp_kanne.asutnr is not null and
           asulist.partnr is not null and
           locate(ls_va_tp,';'+Left(partlist.part,6)+';')=0 and
           Left(partlist.part,4) <> '9006' and
           locate(ls_va_konto,';'+kp_kanne.konto+';')=0 and
           kp_kanne.artnr is not null
     group by kp_kanne.kuup,kp_kanne.doknr,kp_kanne.asutnr;
  -- kustuta alla 100 euro maksekoraldused
  delete from gl_kp_kanne where summa<100;
  -- summeeri kanded, mis jaavad skoopi
  insert into gl_kp_kuuaruanne(kood,nimi_1,nimi_2,nimi_3,kuup,summa,nimi_4,nimi_5)
    select ls_u_regnr,
           Trim(asulist.reg_nr) as asulist_reg_nr,
           Left(partlist.part,6) as partlist_part,
           Left(Trim(asulist.nimi + ' ' + asulist.enimi),100) as asulist_nimi,
           kp_kanne.kuup,
           sum((1-2*kp_kanne.sisse)*kp_kanne.summa) as kp_summa,
           Left(artlist.art,2) as artlist_art,
           if tallist.askood is null or Trim(tallist.askood)='' then "Left"(tallist.osa,5) else "Left"(tallist.askood,5) endif as tallist_osa
     from kp_kanne left outer join kp_obj on kp_kanne.objnr=kp_obj.objnr left outer join skoobid on kp_obj.skoop=skoobid.skoop
                   left outer join asulist on kp_kanne.asutnr=asulist.asutnr left outer join partlist on asulist.partnr=partlist.partnr
                   left outer join artlist on kp_kanne.artnr=artlist.artnr
                   left outer join tallist on kp_kanne.talnr=tallist.talnr
                   left outer join gl_kp_kanne on kp_kanne.kuup=gl_kp_kanne.kuup and kp_kanne.doknr=gl_kp_kanne.doknr and kp_kanne.asutnr=gl_kp_kanne.asutnr
     where gl_kp_kanne.asutnr is not null and 
          (kp_obj.skoop=a_skoop or a_skoop=0) and
           Left(skoobid.kood,length(a_skoopkood))=a_skoopkood and
           kp_obj.eaobj=1 and
           kp_kanne.kuup>=a_peralg and kp_kanne.kuup<=a_perlop and
           kp_kanne.asutnr is not null and
           asulist.partnr is not null and
           locate(ls_va_tp,';'+partlist_part+';')=0 and
           locate(ls_va_konto,';'+kp_kanne.konto+';')=0 and
           kp_kanne.artnr is not null
     group by asulist_reg_nr,partlist_part,asulist_nimi,kp_kanne.kuup,kp_kanne.doknr,artlist_art,tallist_osa;
  update gl_kp_kuuaruanne set nimi_4='20' where nimi_4='25';
  update gl_kp_kuuaruanne set nimi_5=ls_talkood where nimi_5 is null or Length(Trim(nimi_5))=0;
END