Life ConnectLife Connect
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
  • Archive
  • Data Dictionary
  • Functional Epics

    • DICTIONARY OF ATTRIBUTES
    • Search Condos
    • Display

      • DisplayAll

        • Display all - Contracts
        • Display all - invoices
        • Display all - parts
        • Display all - Persons Relationships
        • Display all - Persons
        • Display tickets
      • DisplayContract

        • Display bank account Contract
        • Display Condo Member Contract
        • Display contact contract
        • Display Employee Contract
        • Display Generic Contract
        • Display Insurance Contract
        • Display Legal Represent Contract
        • Display Oral Contract
        • Display Owner Contract
        • Display Condo Regulation Contract
        • Display rental Contract
        • Display Supplier Contract
        • Display Trustee Contract
      • DisplayDelegate

        • Display Delegate
      • DisplayHistory

        • Display history
      • DisplayPerson

        • Display Company Person
        • Display Condo Person
        • Display Division Person
        • Display Group Person
        • Display Indivision Person
        • Display Natural Person
        • Display Union Person
        • Display Unknown Person
      • DisplayPersonsContracts

        • Display all Interventions
      • DisplayProperty

        • Display part
        • Display part
      • UiPerson

        • Display "mini" Persons
    • Process

      • Create

        • Create property & condo
      • Delete

        • Delete objects according to state machine
      • RC Renewal

        • RC RESIDENTIAL - automatic renewal
      • Review

        • rent amount review - RC residential - creation
        • rent amount review - RC residential - take-over
      • Sell

        • Sell a unit
    • Reporting

      • GRR

        • GLOBAL RENT REPORT
    • Search

      • Search
    • StateMachine

      • CreatingContract

        • State machine - creating a rental contract
        • State machine - creating a rental delegate contract
        • State machine - Referencing a abstract part contract
        • State machine - Referencing a bank contract
        • State machine - Referencing a condo regulation contract
        • State machine - Referencing a contact contract
        • State machine - Referencing an employee contract
        • State machine - Referencing a generic contract
        • State machine - Referencing a legal represent contract
        • State machine - Referencing a owner contract
        • State machine - Referencing a rental contract
        • State machine - Referencing a supplier contract
        • State machine - Referencing a trustee contract
      • CreatingIntervention

        • State machine - creating a ticket
        • State machine - Referencing a message
      • CreatingInvoice

        • State machine - creating a incoming (supplier) invoice
      • CreatingPayments

        • State machine - creating an incoming payment
      • EncodingPart

        • CreatingPart

          • State machine - Referencing part relationships
          • State machine - Referencing a part
      • EncodingPerson

        • CreatingAddresses

          • State machine - Creating email address
          • State machine - Creating phone address
          • State machine - Creating postal address
          • State machine - Creating web address
        • CreatingPerson

          • State machine - Referencing a company person
          • State machine - Referencing a condo person
          • State machine - Referencing a division person
          • State machine - Referencing an group person
          • State machine - Referencing an indivision person
          • State machine - Referencing a natural person
          • State machine - Referencing a union person
        • CreatingShareHolders

          • State machine - valuing a shareholder
      • Scanning

        • State machine scanning - analyze a document
        • State machine scanning - matching a document
        • State machine scanning - encoding a document : related information
    • Utility

      • Allocation keys
      • Company settings
      • Document data & file
      • Revision Index
    • Validations

      • Shareholders validation
  • Implicit

    • Callback

      • Logging In
  • ProductBoard

    • Rental Process

      • Rental delegate process
    • Ticketing

      • Create a ticket - link a ticket in Outlook add-in - add a call - display a ticket
      • Display Person Info in Outlook add-in
  • Technical Epics

    • Indexation Feature Documentation
    • Rent Amount Management Feature Documentation
    • I have an API
    • I can store the balance of an account
    • I Have Person Notifications
    • 🧩 System Process Diagrams
    • The Team has a DEV environment
    • The Team is organized
    • Accounting

      • Re-generation of Invoices
      • I can call the rent for my Rental Contract
      • Payment Creation Strategy Feature Documentation
      • I Can Revese

        • Payment Reversal
      • I Have Invoices

        • I have direction on invoice's item level
      • I Have Subsidies

        • I Can Receive Family Allowance Payments - Technical Documentation
        • Subsidies + Direct Debit Documentation
    • Communication Module

      • Communication module
    • Contracts

      • I can have contract guarantors
      • API Models
      • I Have Call For Rent Process

        • Call For Rent (CFR) Process Documentation
      • Occupancy Compensation

        • **OCCUPANCY COMPENSATION Documentation**
      • State Machine

        • I can have the Rental Contract state machine
    • Database

      • Database Indexes
    • E2e Testing

      • I can create an E2E dataset
    • Env Setup

      • Adapt env to stateless UI build
      • Blockhound
      • Table of Environments and Their Specifications
      • Environment How-To
      • Java Flight Recorder Management Documentation
      • Local Environment Setup
      • Kubernetes Logs Retrieval Documentation
      • Monitoring
      • I can create a new organisation
      • Production Environment Configuration
      • Remote Environment Setup
      • Set up of separate DB for env
      • Terraform Aws S3 Buckets
      • adb-ui Service Version Update
    • Files

      • I can have tags for files
    • Globals

      • boundaries
      • boundaries
      • boundaries
      • boundaries
    • Messaging

      • MongoDB Trigger Model Documentation
    • Open Api

      • Swagger Documentation Guide
      • Swagger
    • Parts

      • I Have A Forecast And Actuals Module
      • I can have part equipments
    • Process

      • Pre-Meeting Questionnaire
      • I Can Release My Feature
    • Security

      • I can create and provision an organisation
      • a user is granted access to the application
    • Stress Test

      • Introduction
      • Reports

        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Table of contents
    • Tickets

      • Ticket Details Functionality
    • Troubleshooting

      • Prometheus Memory Issue Handling
Last updated 2024-07-11⚠️ 1 year 11 months old — verify against current code before relying on details.

Rent Amount Management Feature Documentation

Overview

The rent amount management feature involves the management of rent amounts and other associated fees within the rentAmounts field of the RentalContract class. Each rent amount has specific attributes and follows certain rules for addition, updating, and deletion.

Components

Database (adb-utilities)

  • Contracts Collection: Contains rental contracts with the rentAmounts field, which is an array of RentAmount objects.

RentAmount Class

  • Fields:
    • type: The amount type.
    • amounts: An array of EffectiveRentAmount objects.

EffectiveRentAmount Class

  • Fields:
    • amount: The price itself.
    • lineNumber: The number of the amount in the array.
    • whenEffective: The date from which this amount can be used.
    • whenNoticed: The date when this value was added.
    • whenNotified: The date when this value began to be used.
    • nature: The type of amount (INITIAL, MANUAL, INDEXATION).
    • state: Indicates if the value is available for update (CFR_OPEN) or locked (CFR_LOCKED).
    • status: Indicates the status of the amount calculation (SUCCESS, WARNING, ERROR).

Process Flow

Adding/Updating a Rent Amount

  1. Define lineNumber: If not specified, take the last value of lineNumber + 1.
  2. Search for Existing Value: Use lineNumber to find the existing value in the array.
  3. Check whenEffective Field: Ensure no other value exists in the same month if adding a new value. If updating, ensure no other value exists in the month unless it is the same month.
  4. Nature Check: If the proposed value has nature == INITIAL and an INITIAL amount already exists in the array, do not add the new value.
  5. State Check: When updating, ensure there are not two INITIAL values and the value is not updated if state == CFR_LOCKED.

Update Restrictions

  • Only the amount and whenEffective fields are available for updating the amount.

Detailed Description

Validation Rules

  1. Unique Month Validation:

    • Ensure no two values have the same whenEffective month if adding a new value.
    • If updating and the whenEffective month changes, ensure no other value exists for that month.
  2. Nature Validation:

    • Prevent adding a new value with nature == INITIAL if an INITIAL value already exists.
    • Ensure only one INITIAL value exists in the array.
  3. State Validation:

    • Prevent updates if state == CFR_LOCKED.

Gherkin Features

Feature: Rent Amount Adjustments

Scenario: Add a new rent amount
Given a rental contract with an empty rentAmounts array
When a new rent amount is added with nature "INITIAL"
Then the rent amount is added to the rentAmounts array

Scenario: Prevent duplicate INITIAL rent amount
Given a rental contract with an INITIAL rent amount in the rentAmounts array
When a new rent amount with nature "INITIAL" is added
Then the system prevents adding the new rent amount

Scenario: Update an existing rent amount
Given a rental contract with a rent amount having state "CFR_OPEN"
When the rent amount is updated with a new amount and whenEffective date
Then the rent amount is updated in the rentAmounts array

Scenario: Prevent update of CFR_LOCKED rent amount
Given a rental contract with a rent amount having state "CFR_LOCKED"
When the rent amount is updated
Then the system prevents updating the rent amount

Scenario: Validate unique month for new rent amount
Given a rental contract with a rent amount in the rentAmounts array
When a new rent amount with the same whenEffective month is added
Then the system prevents adding the new rent amount

Scenario: Validate unique month for updated rent amount
Given a rental contract with a rent amount in the rentAmounts array
When an existing rent amount is updated with a new whenEffective month
And another rent amount exists in the new month
Then the system prevents updating the rent amount

PlantUML Diagrams

Sequence Diagram

sequence_diagram

Edit this page
Last Updated:
Contributors: Yevhenii Khudolii
Prev
Indexation Feature Documentation
Next
I have an API