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-29⚠️ 1 year 10 months old — verify against current code before relying on details.

Payment Creation Strategy Feature Documentation

Overview

This document provides a detailed overview of the payment creation strategy feature in the application. The feature allows the application to handle different types of payment creation processes (e.g., manual payments, direct debit payments) through a flexible and extensible strategy pattern.

Feature Context

The payment creation feature is designed to support multiple payment origins, such as manual payments and direct debit payments. Each payment origin has its own specific process for creating and handling payments. By using a strategy pattern, the application can dynamically select and execute the appropriate payment creation strategy based on the payment origin.

Components

PaymentCreationStrategyFactory

Purpose

The PaymentCreationStrategyFactory is responsible for managing and providing the correct payment creation strategy based on the payment origin. It ensures that the right strategy is used for creating different types of payments.

ManualPaymentCreationStrategy

Purpose

The ManualPaymentCreationStrategy handles the creation of manual payments. This strategy is used when a payment is initiated manually by a user or an admin.

Key Responsibilities

  • Create a manual payment and set its origin to manual.
  • Ensure that manual payments are not booked automatically.

DirectDebitPaymentCreationStrategy

Purpose

The DirectDebitPaymentCreationStrategy handles the creation of direct debit payments. This strategy is used when a payment is processed through direct debit.

Key Responsibilities

  • Fetch the direct debit report and build the payment from it.
  • Ensure that direct debit payments are booked automatically.

PaymentService

Purpose

The PaymentService manages the overall payment creation process. It uses the PaymentCreationStrategyFactory to determine the correct strategy and execute it.

PaymentController

Purpose

The PaymentController provides the API endpoint for creating payments. It interacts with the PaymentService to handle the payment creation logic.

ContractsFunctions

Purpose

The ContractsFunctions listens for direct debit processed messages and triggers the creation of direct debit payments. It ensures that payments are created automatically when direct debits are processed.

Usage Flow

  1. API Request: A payment creation request is made via the PaymentController endpoint.
  2. Service Layer: The request is passed to the PaymentService, which determines the appropriate strategy based on the payment origin.
  3. Strategy Execution: The selected strategy (manual or direct debit) creates the payment.
  4. Payment Enrichment and Saving: The payment is enriched with additional data and saved. If the payment requires automatic booking, the booking process is triggered.
  5. Response: The created payment is returned to the client as the response to the API request.

Gherkin Features

Feature: Create Manual Payment

Feature: Create Manual Payment
  As a user
  I want to create a manual payment
  So that I can manually process payments

  Scenario: Successful manual payment creation
    Given I have a valid manual payment request
    When I send the request to the PaymentController
    Then the payment should be created using the ManualPaymentCreationStrategy
    And the payment should not be booked automatically
    And I should receive a confirmation response

Feature: Create Direct Debit Payment

Feature: Create Direct Debit Payment
As a system
I want to create a direct debit payment
So that I can process direct debit payments automatically

Scenario: Successful direct debit payment creation
Given a direct debit processed message is received
When the ContractsFunctions handles the message
Then the payment should be created using the DirectDebitPaymentCreationStrategy
And the payment should be booked automatically
And the payment should be saved and enriched

PlantUML Diagram

sequence_diagram

Edit this page
Last Updated:
Contributors: Yevhenii Khudolii
Prev
I can call the rent for my Rental Contract