Penalități transparente: curg de la afișarea listei, fără dobândă la dobândă
Penalitățile pentru întreținere sunt subiectul cel mai contestat la orice AGA. Doi proprietari cu aceeași restanță pot ajunge la sume diferite pentru că nimeni nu știe exact de când curge penalitatea și ce se penalizează. Versiunea 2.14 aduce un motor de penalități rescris integral, cu 4 reguli clare validate juridic.
Penalitatea curge de la data afișării listei pe avizier, NU de la scadență
Anterior, majoritatea platformelor calculau penalitatea de la data scadenței listei (ex: „scadență = 25 ale lunii, penalitate începe din 26"). Problema: proprietarii care n-au primit lista la timp (afișată târziu, plecați din țară, situație neclarificată) plăteau penalități pentru zile în care efectiv nu știau că datorează bani.
Regula nouă: penalitatea curge de la data afișării listei pe avizier
(posted_to_avizier_at). Dacă lista a fost făcută pe 25 iunie dar
afișată efectiv abia pe 3 iulie, ziua zero e 3 iulie. Aceeași regulă se aplică în cronul
zilnic de recalculare a penalităților și în preview-ul din UI — nu există două calcule
diferite.
Grace 30 zile — plafonată la valoarea principalului
După data afișării, curge o perioadă de grație de 30 zile (configurabil per asociație — nu am inventat 30, e default-ul acceptat de Legea 196 art. 78). În aceste 30 zile, restanța apare ca „în perioada de grație" — vizibilă, dar fără penalitate acumulată. Din ziua 31 începe penalizarea propriu-zisă la rata configurată (default 0,2%/zi conform Legea 196).
Penalitatea totală e plafonată la valoarea principalului — nu se poate ajunge ca penalitatea să fie mai mare decât restanța de bază. Regula e hard-coded, nu configurabilă, pentru că e prevedere legală.
Anti-anatocism: nu se calculează penalitate la penalitate
Când o penalitate e transferată pe lista lunii următoare (M+1) și rămâne neachitată, nu i se calculează penalitate proprie. E o regulă anti-anatocism (dobândă la
dobândă) care apare explicit în cod prin flag-ul source_type='penalty_transferred'
— cronul de recalculare a penalităților filtrează aceste rânduri și nu le acumulează.
Anatocismul e discutabil legal chiar și în raporturi comerciale; într-o asociație de
proprietari e clar interzis.
Aprobarea administratorului înainte de aplicare pe lista M+1
Penalitățile calculate nu se aplică automat pe lista lunii următoare. La sfârșitul lunii M, administratorul primește un preview cu:
- Care apartamente au penalități de aplicat
- Suma pentru fiecare, cu calculul detaliat (zile × rată × principal)
- Total propus pentru lista M+1
Administratorul verifică, poate exclude cazuri particulare (cazuri sociale, planuri de eșalonare active, dosare în instanță) și aprobă aplicarea. Doar după aprobare, penalitățile intră pe lista de întreținere ca sumă separată.
Când lista este afișată la avizier, cenzorul poate semna opțional pentru validare — semnătura devine parte din PDF-ul afișat. Nu e obligatorie, dar dă un plus de încredere.
Plățile noi acoperă întâi luna cea mai recent afișată
Regulă legată care rezolvă multe dispute: când un proprietar cu restanțe pe mai multe luni plătește o sumă, platforma o alocă întâi lunii celei mai recent afișate la avizier, surplus pe luni anterioare oldest-first. Motivul: lunile mai vechi au deja probabil penalizare acumulată, iar plățile trebuie să oprească acumularea pe luna curentă înainte să reducă vechiul.
Aceeași regulă e implementată consistent în JavaScript (pentru preview) și în SQL (pentru RPC-urile atomice). Nu există două alocări diferite pentru aceleași cifre.
Nu trebuie să faci nimic manual
Cronul zilnic recalculează penalitățile pentru toate restanțele active. La sfârșitul lunii, administratorul primește preview-ul din meniul de operațiuni și aprobă cu un click. Proprietarii văd în fișa personală calculul detaliat — de ce plătesc suma respectivă și de când curge.
Vrei penalități pe care nimeni să nu le mai conteste la AGA?
Motorul de penalități e inclus în toate planurile (Basic, Standard, Premium). Demo gratuit, fără card, fără angajament.