jahresabrechnung
This commit is contained in:
parent
53ce100253
commit
a39c011ba5
@ -45,10 +45,15 @@ alter table miete drop constraint uk_miete_wohnung_gueltig_bis;
|
||||
alter table miete modify column gueltig_bis date null;
|
||||
alter table wohnung add column wohnungsnummer integer;
|
||||
alter table wohnung add constraint unique key uk_wohnung_objekt_wohnungsnummer (objekt, wohnungsnummer);
|
||||
update wohnung set wohnungsnummer = id + 100;
|
||||
alter table wohnung modify column wohnungsnummer integer not null;
|
||||
alter table betriebskosten_vorauszahlung drop constraint uk_betriebskosten_vorauszahlung_objekt_gueltig_bis;
|
||||
alter table betriebskosten_vorauszahlung modify gueltig_bis date null;
|
||||
alter table forderung modify column betrag decimal(20, 2) not null;
|
||||
alter table forderung add column anteil_miete decimal(20, 2);
|
||||
alter table forderung add column anteil_betriebskosten_vorauszahlung decimal(20, 2);
|
||||
alter table forderung add column anteil_betriebskosten_nachzahlung decimal(20, 2);
|
||||
alter table forderung add constraint ck_summe_anteile check (anteil_miete + anteil_betriebskosten_vorauszahlung + anteil_betriebskosten_nachzahlung = betrag);
|
||||
alter table zahlung modify column betrag decimal(20, 2) not null;
|
||||
|
||||
create or replace procedure insert_monatl_miet_forderung(in p_date date)
|
||||
@ -102,8 +107,8 @@ create or replace procedure insert_monatl_miet_forderung(in p_date date)
|
||||
set lc_time_names = 'de_DE';
|
||||
set v_kommentar = concat('Miete ', monthname(v_date), ' ', year(v_date));
|
||||
|
||||
insert into forderung (mieter, datum, betrag, kommentar, ref_wohnung)
|
||||
values(rec.id, v_date, v_forderung, v_kommentar, rec.wohnung);
|
||||
insert into forderung (mieter, datum, betrag, anteil_miete, anteil_betriebskosten_vorauszahlung, kommentar, ref_wohnung)
|
||||
values(rec.id, v_date, v_forderung, v_miete, v_betriebskosten_vorauszahlung, v_kommentar, rec.wohnung);
|
||||
|
||||
call log(concat('Mieter: ', cast(rec.id as char),
|
||||
', Wohnung: ',
|
||||
@ -130,3 +135,4 @@ end;
|
||||
|
||||
|
||||
|
||||
delimiter ;
|
@ -44,3 +44,74 @@ create or replace view abrechnung3 as
|
||||
|
||||
select * from abrechnung3 where jahr = '2020';
|
||||
|
||||
|
||||
delimiter //
|
||||
|
||||
|
||||
create or replace procedure jahresabrechnung(in p_year year)
|
||||
modifies sql data
|
||||
begin
|
||||
declare v_anteil_mieter_nutzungszeit decimal(20, 10);
|
||||
declare v_summe_zahlungen decimal(20, 10);
|
||||
declare v_summe_mietforderungen decimal(20, 10);
|
||||
declare v_summe_betriebskosten_zahlungen decimal(20, 10);
|
||||
declare v_betriebskosten_nachzahlung decimal(20, 10);
|
||||
declare v_error_message varchar(128);
|
||||
declare c_anteil_mieter
|
||||
cursor (cp_year year) for
|
||||
select (b.betrag / o.flaeche * w.flaeche) as anteil,
|
||||
o.id as objekt,
|
||||
w.id as wohnung,
|
||||
m.id as mieter,
|
||||
(timestampdiff(month,
|
||||
if (year(m.einzug) = b.jahr, m.einzug, makedate(b.jahr, 1)),
|
||||
if (m.auszug is not null, m.auszug, last_day(makedate(b.jahr, 365)))
|
||||
) + 1) as nutzungszeit
|
||||
from betriebskosten_abrechnung b,
|
||||
objekt o,
|
||||
wohnung w,
|
||||
mieter m
|
||||
where b.objekt = o.id and
|
||||
w.objekt = o.id and
|
||||
m.wohnung = w.id and
|
||||
(year(m.einzug) = b.jahr or year(m.auszug) = b.jahr) and
|
||||
b.jahr = cp_year;
|
||||
|
||||
for rec in c_anteil_mieter(p_year) do
|
||||
set v_anteil_mieter_nutzungszeit = rec.anteil / 12 * rec.nutzungszeit;
|
||||
select sum(betrag) into v_summe_zahlungen
|
||||
from zahlung
|
||||
where mieter = rec.mieter and
|
||||
year(datum_soll) = p_year;
|
||||
if (v_summe_zahlungen is null) then
|
||||
set v_error_message = concat('No Zahlungen for Mieter ', rec.mieter);
|
||||
signal sqlstate '45000' set message_text = v_error_message;
|
||||
end if;
|
||||
select sum(anteil_miete) into v_summe_mietforderungen
|
||||
from forderung
|
||||
where mieter = rec.mieter and
|
||||
year(datum) = p_year;
|
||||
set v_summe_betriebskosten_zahlungen = v_summe_zahlungen - v_summe_mietforderungen;
|
||||
set v_betriebskosten_nachzahlung = v_anteil_mieter_nutzungszeit - v_summe_betriebskosten_zahlungen;
|
||||
|
||||
insert into forderung (mieter, datum, betrag, anteil_betriebskosten_nachzahlung, ref_wohnung)
|
||||
values(rec.mieter, curdate(), v_betriebskosten_nachzahlung, v_betriebskosten_nachzahlung, rec.wohnung);
|
||||
|
||||
call log(concat('Mieter: ',
|
||||
cast(rec.mieter as char),
|
||||
', Anteil: ',
|
||||
cast(v_anteil_mieter_nutzungszeit as char),
|
||||
', Zahlungen: ',
|
||||
cast(v_summe_zahlungen as char),
|
||||
', Mietforderungen: ',
|
||||
cast(v_summe_mietforderungen as char),
|
||||
', Betriebskostenvorauszahlung: ',
|
||||
cast(v_summe_betriebskosten_zahlungen as char),
|
||||
', Rest: ',
|
||||
cast(v_betriebskosten_nachzahlung as char)
|
||||
)
|
||||
);
|
||||
end for;
|
||||
end;
|
||||
//
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user