ALTER PROCEDURE "dba"."pv_koond_kaart_sisu"(in a_skoop integer,in a_yksusnr integer,in a_yksuskood char(16),in a_paring integer,in a_id integer,in a_kuup date)
begin
  declare li_a_yldnimnr integer;
  declare li_max integer;
  declare li_paring integer;
  delete from gl_pv_kanne;
  select max("id") into li_max from pv_kanne_muuinfo;
  if li_max is null then
    set li_max = 0
  end if;
  set li_paring=set_gl_1(a_paring);
  -- kui yks vara
  set li_a_yldnimnr=null;
  if a_id > 0 then
    select "pv_kanne"."yldnimnr" into li_a_yldnimnr from pv_kanne where "pv_kanne"."id" = a_id;
  end if;
  insert into gl_pv_kanne("id",yldnimnr,yksusnr,konto,toot_nr,vara_nr,nimi,yldnimi,"info",tunnus,kuup,objnr,kuup2,objnr2,ekspl,kogus,alg_m,epk,jpk2,mjm)
      select pv_kanne."id",
             if pv_kanne.yldnimnr is null then li_max+pv_kanne."id" else pv_kanne.yldnimnr endif,
             pv_kanne.yksusnr,
             pv_yksus.konto,
             if pv_kanne.toot_nr is null then '' else trim(pv_kanne.toot_nr) endif,
             pv_kanne.vara_nr,
             pv_kanne.nimi,
             if pv_kanne.yldnimnr is null then pv_kanne.nimi else pv_kanne_muuinfo.yldnimi endif,
             pv_kanne."info",
             pv_kanne."tunnus",
             pv_kanne.kuup,
             pv_kanne.objnr,
             pv_kanne.kuup2,
             pv_kanne.objnr2,
             pv_kanne.ekspl,
             pv_kanne.kogus,
             pv_kanne.alg_m,
             pv_epk(pv_kanne."id",years(a_kuup)) as epk,
             epk + pv_jpk(pv_kanne."id",years(a_kuup),month(a_kuup),epk)+(if years(pv_kanne.kuup)=years(a_kuup) and pv_kanne.kuup<ymd(Years(a_kuup),Month(a_kuup)+1,1) then pv_kanne.ytk else 0 endif) as jpk2,
             pv_kanne.alg_m - jpk2
        from pv_kanne left outer join gl_1 on(pv_kanne.id = gl_1.id) and(pv_kanne.kuup = gl_1.kuup)
                      left outer join pv_yksus on pv_kanne.yksusnr = pv_yksus.yksusnr
                      left outer join pv_kanne_muuinfo on pv_kanne.yldnimnr=pv_kanne_muuinfo."id"
        where((pv_kanne.id = gl_1.id) and(pv_kanne.kuup = gl_1.kuup) or a_paring = 0) and
             (pv_yksus.skoop = a_skoop or a_skoop = 0) and
             (pv_kanne.yksusnr = a_yksusnr or a_yksusnr = 0) and
             Left(pv_yksus.kood,Length(a_yksuskood))=a_yksuskood and
             (a_id=0 or pv_kanne."id"=a_id or (li_a_yldnimnr is not null and pv_kanne.yldnimnr=li_a_yldnimnr)) and
             pv_kanne.kuup <= a_kuup;
end