مالک، مستأجر، ساکن و قرارداد
هدف مدل
این مدل رابطه Person با Unit را در نقش مالک، مستأجر یا ساکن تعریف و تاریخ شروع، پایان و جایگزینی هر رابطه را حفظ میکند.
اصل مدل
- Person با پایان رابطه حذف نمیشود.
- هر رابطه Start Date و End Date دارد.
- جایگزینی به معنی پایان رابطه قبلی و ایجاد رابطه جدید است.
- تاریخچه مالکیت، اجاره و سکونت باید قابل Audit باقی بماند.
- Account سراسری فرد مستقل از روابط او با واحدها است.
- رابطههای مالکیت، اجاره و سکونت مستقلاند؛ بنابراین یک Person میتواند همزمان مالک و ساکن یا مستأجر و ساکن یک Unit باشد.
- انتخاب رابطه «ساکن» مستقیماً Residency Relationship میسازد. برای مالک یا مستأجر، سکونت با ایجاد Residency Relationship همزمان ثبت میشود.
موجودیتهای اصلی
| موجودیت | مسئولیت |
|---|---|
| Ownership Relationship | رابطه مالک با Unit در یک بازه زمانی |
| Tenancy Relationship | رابطه مستأجر با Unit و Contract |
| Residency Relationship | رابطه ساکن با Unit |
| Tenant Household | گروه مستأجر و ساکنان وابسته |
| Contract | تاریخ، مدارک و شرایط اجاره |
| Ownership Transfer | انتقال مالکیت همراه با Effective Date و مدرک |
| Move In / Move Out | شروع یا پایان سکونت و دسترسی |
| Unit Debt Statement | صورت مانده بدهی Unit پیش از معامله یا خروج |
شخص حقیقی و حقوقی
Person میتواند حقیقی یا حقوقی باشد. اطلاعات پایه مشترک با حداقل داده لازم نگهداری میشود و اطلاعات تکمیلی اختیاری است.
| نوع | اطلاعات تکمیلی |
|---|---|
| حقیقی | کد ملی، شماره شناسنامه، نام پدر، تاریخ تولد، شغل و توضیحات |
| حقوقی | نام کامل شرکت یا مؤسسه، شناسه ملی، شماره ثبت، کد اقتصادی و توضیحات |
سهم مالکیت
- هر Ownership Relationship مقدار سهم و واحد نمایش آن را دارد: دنگ یا درصد.
- ۶ دنگ معادل ۱۰۰٪ مالکیت است و سیستم برای محاسبه و اعتبارسنجی یک مقدار استاندارد ذخیره میکند.
- مجموع سهم Ownership Relationshipهای فعال یک Unit نمیتواند از ۶ دنگ یا ۱۰۰٪ بیشتر شود.
- کمتر بودن مجموع از مالکیت کامل میتواند بهعنوان وضعیت ناقص نمایش داده شود تا مالک یا مالکان بعدی افزوده شوند.
- تغییر سهم باید تاریخچه و Actor را حفظ کند و انتقال مالکیت را بیصدا بازنویسی نکند.
Tenant Household
- مستأجر اصلی و ساکنان وابسته در یک Household قرار میگیرند.
- پایان Tenancy Relationship باعث آرشیو همزمان روابط وابسته Household میشود.
- ساکن دارای رابطه مستقل دیگر فقط از Household خارج میشود و رابطه مستقلش حفظ میشود.
- «عضو خانواده» عنوان رابطه مستقل نیست؛ اشخاصی که پیشتر با این عنوان ثبت میشدند در محصول «ساکن» نامیده میشوند و وابستگی Household فقط بهصورت داخلی ثبت میشود.
- Invitation یا Account Link شرط ثبت Household نیست.
خروج و جایگزینی مستأجر
- Effective End Date ثبت میشود.
- مانده Unit Ledger نمایش داده میشود.
- مستأجر و Household وابسته آرشیو میشوند.
- دسترسیهای Scope واحد در تاریخ پایان غیرفعال میشوند.
- Tenancy و Household جدید با Start Date مستقل ایجاد میشوند.
- Invitation مستأجر جدید در زمان انتخابی مدیر ارسال میشود.
انتقال مالکیت
در Flow عادی:
- مالک یا خریدار Unit Debt Statement را از ساختمان دریافت میکند.
- مانده بدهی و وضعیت تسویه مشاهده میشوند.
- مدرک یا Reference انتقال ثبت میشود.
- Ownership Relationship قبلی پایان مییابد.
- Ownership Relationship جدید با Effective Date ایجاد میشود.
اگر انتقال بدون اطلاع مدیر انجام شده باشد، مدیر میتواند آن را بعداً با Effective Date واقعی و مدرک موجود ثبت کند. ثبت دیرهنگام نباید تاریخچه را حذف کند.
بدهی واحد
- Debt متعلق به Unit Ledger است، نه Person.
- مستأجر باید پیش از خروج بدهی را تسویه کند.
- مانده تسویهنشده پس از خروج مستأجر بر عهده مالک جاری قرار میگیرد.
- با انتقال مالکیت، مانده Unit Ledger بر عهده مالک جاری ثبتشده قرار میگیرد.
- سابقه باید نشان دهد بدهی در زمان حضور کدام مستأجر یا مالک ایجاد شده است.
- تغییر مسئول پرداخت، Bill، Charge یا Payment قبلی را بیصدا بازنویسی نمیکند.
Warning
مسئولیت مالک جاری برای بدهی باقیمانده Unit یک تصمیم محصولی است و پیش از اجرا باید با قوانین، قراردادها و اسناد حاکم بر ساختمان و معامله ملک بررسی حقوقی شود.
نقشه مفهومی
flowchart LR
PERSON["شخص"] --> OWNERSHIP["رابطه مالکیت"]
PERSON --> TENANCY["رابطه اجاره"]
PERSON --> RESIDENCY["رابطه سکونت"]
OWNERSHIP --> UNIT["واحد"]
TENANCY --> UNIT
RESIDENCY --> UNIT
TENANCY --> CONTRACT["قرارداد"]
TENANCY --> HOUSEHOLD["خانوار مستأجر"]
HOUSEHOLD --> MEMBER["ساکنان وابسته"]
UNIT --> LEDGER["دفتر بدهی واحد"]
OWNERSHIP --> TRANSFER["انتقال مالکیت"]
TRANSFER --> DEBT_STATEMENT["صورت بدهی واحد"]