ALTER PROCEDURE "dba"."dk_permaks"( in a_id integer, in a_aasta integer )
BEGIN
  declare li_permaks smallint;
  declare li_spank smallint;
  declare li_sisse smallint;
  declare ld_kuup date;
  declare ld_permaks_kuup date;
  declare ld_taskuup date;
  declare ll_asutnr integer;
  declare ld_arvekuup date;
  declare ls_arvenr char(20);
  declare ldc_summa decimal(15,2);
  declare ldc_kuu_summa decimal(15,2);
  declare ldc_jaak decimal(15,2);
  declare ls_konto char(7);
  declare ls_permaks_konto char(7);
  declare ls_djkonto char(7);
  declare ll_alusnr integer;
  declare ls_info char(200);
  declare ll_meetnr integer;
  declare ll_kulnr integer;
  declare ll_talnr integer;
  declare ll_artnr integer;
  declare ll_tulnr integer;
  declare ll_objectnr integer;
  declare ll_osaknr integer;
  declare ll_subjectnr integer;
  declare ll_suundnr integer;
  declare ll_taotnr integer;
  declare ll_alliknr integer;
  declare ll_ravonr integer;
  declare ll_skoop integer;
  declare ll_objnr integer;
  declare ll_id_user integer;
  declare ls_doknr char(25);
  declare ll_i integer;
  select dk_kanne.permaks,dk_kanne.sisse,dk_kanne.kuup,if dk_kanne.permaks_kuup is null or dk_kanne.permaks_kuup<dk_kanne.kuup then dk_kanne.kuup else dk_kanne.permaks_kuup endif,dk_kanne.taskuup,dk_kanne.summa,dk_kanne.arvekuup,dk_kanne.arvenr,dk_kanne.asutnr,dk_kanne.alusnr,dk_kanne."info",dk_kanne.konto,dk_kanne.meetnr,dk_kanne.kulnr,dk_kanne.talnr,dk_kanne.artnr,dk_kanne.tulnr,dk_kanne.objectnr,dk_kanne.osaknr,dk_kanne.subjectnr,dk_kanne.suundnr,dk_kanne.taotnr,dk_kanne.alliknr,dk_kanne.ravonr,dk_kanne.user_code,dk_obj.djkonto,dk_obj.skoop,dk_obj.spank
    into li_permaks,li_sisse,ld_kuup,ld_permaks_kuup,ld_taskuup,ldc_summa,ld_arvekuup,ls_arvenr,ll_asutnr,ll_alusnr,ls_info,ls_konto,ll_meetnr,ll_kulnr,ll_talnr,ll_artnr,ll_tulnr,ll_objectnr,ll_osaknr,ll_subjectnr,ll_suundnr,ll_taotnr,ll_alliknr,ll_ravonr,ll_id_user,ls_djkonto,ll_skoop,li_spank
    from dk_kanne left outer join dk_obj on dk_kanne.objnr=dk_obj.objnr
    where dk_kanne."id"=a_id and dk_kanne.aasta=a_aasta;
  if li_permaks>0 then
    if li_spank=1 then
      select dk_konfm.yld_permaks_konto into ls_permaks_konto from dk_konfm where "id"=1
    else
      select dk_konfm.yld_permaks_ostjad into ls_permaks_konto from dk_konfm where "id"=1
    end if;
    if length(ls_permaks_konto)>0 then
      select dk_obj.objnr into ll_objnr from dk_obj where dk_obj.skoop=ll_skoop and dk_obj.djkonto=ls_permaks_konto;
      if ll_objnr>0 then
        -- kustutamine
        delete from dk_kanne where dk_kanne.vid=a_id and dk_kanne.vaasta=a_aasta;
        set ldc_kuu_summa=Round(ldc_summa/li_permaks,2);
        set ldc_jaak=ldc_summa-li_permaks*ldc_kuu_summa;
        set ls_doknr=get_doknr_dk(years(ld_arvekuup),ll_objnr);
        -- lisa vastupidine kanne
        insert into dk_kanne(tulnud,sisse,kuup,taskuup,doknr,summa,summa2,arvekuup,arvenr,asutnr,alusnr,"info",konto,meetnr,kulnr,talnr,artnr,tulnr,objectnr,osaknr,subjectnr,suundnr,taotnr,alliknr,ravonr,objnr,user_code,vid,vaasta)
          values ('Perioodiline makse',if li_sisse=1 then 0 else 1 endif,ld_kuup,ld_taskuup,ls_doknr,ldc_summa,0,ld_arvekuup,ls_arvenr,ll_asutnr,ll_alusnr,ls_info,ls_djkonto,ll_meetnr,ll_kulnr,ll_talnr,ll_artnr,ll_tulnr,ll_objectnr,ll_osaknr,ll_subjectnr,ll_suundnr,ll_taotnr,ll_alliknr,ll_ravonr,ll_objnr,ll_id_user,a_id,a_aasta);
        -- lisa kuude
        set ld_kuup=ld_permaks_kuup;
        set ll_i = 1;
        while ll_i < li_permaks loop
          insert into dk_kanne(tulnud,sisse,kuup,taskuup,doknr,summa,summa2,arvekuup,arvenr,asutnr,alusnr,"info",konto,meetnr,kulnr,talnr,artnr,tulnr,objectnr,osaknr,subjectnr,suundnr,taotnr,alliknr,ravonr,objnr,user_code,vid,vaasta)
            values ('Perioodiline makse',li_sisse,ld_kuup,ld_taskuup,ls_doknr,ldc_kuu_summa,0,ld_arvekuup,ls_arvenr,ll_asutnr,ll_alusnr,ls_info,ls_konto,ll_meetnr,ll_kulnr,ll_talnr,ll_artnr,ll_tulnr,ll_objectnr,ll_osaknr,ll_subjectnr,ll_suundnr,ll_taotnr,ll_alliknr,ll_ravonr,ll_objnr,ll_id_user,a_id,a_aasta);
          select dateadd(month, ll_i, ld_permaks_kuup) into ld_kuup;
          set ll_i = ll_i + 1;
        end loop;
        insert into dk_kanne(tulnud,sisse,kuup,taskuup,doknr,summa,summa2,arvekuup,arvenr,asutnr,alusnr,"info",konto,meetnr,kulnr,talnr,artnr,tulnr,objectnr,osaknr,subjectnr,suundnr,taotnr,alliknr,ravonr,objnr,user_code,vid,vaasta)
          values ('Perioodiline makse',li_sisse,ld_kuup,ld_taskuup,ls_doknr,ldc_kuu_summa+ldc_jaak,0,ld_arvekuup,ls_arvenr,ll_asutnr,ll_alusnr,ls_info,ls_konto,ll_meetnr,ll_kulnr,ll_talnr,ll_artnr,ll_tulnr,ll_objectnr,ll_osaknr,ll_subjectnr,ll_suundnr,ll_taotnr,ll_alliknr,ll_ravonr,ll_objnr,ll_id_user,a_id,a_aasta);
        -- muuda kande konto
        update dk_kanne set konto=ls_permaks_konto where dk_kanne."id"=a_id and dk_kanne.aasta=a_aasta;
      end if;
    end if;
  end if;
END