Skip to content

[ADD] sale_rental_deposit: introduce deposit mechanism for rental products#1268

Draft
aykhu-odoo wants to merge 19 commits into
odoo:19.0from
odoo-dev:19.0-renting-deposit-aykhu
Draft

[ADD] sale_rental_deposit: introduce deposit mechanism for rental products#1268
aykhu-odoo wants to merge 19 commits into
odoo:19.0from
odoo-dev:19.0-renting-deposit-aykhu

Conversation

@aykhu-odoo
Copy link
Copy Markdown

@aykhu-odoo aykhu-odoo commented May 15, 2026

Rental workflows currently lack a proper way to manage security deposits, which are a common requirement for renting high-value or damage-sensitive products.

In the absence of a standard mechanism, users rely on manual workarounds such as adding extra order lines or handling deposits outside the system. This leads to inconsistent processes, higher risk of errors, and no clear link between the rented product and its associated deposit. It also impacts the website experience, as customers have no visibility of required deposits before placing an order.

This PR introduces a structured and configurable deposit mechanism to handle this scenario in a consistent and automated way across both backend and frontend flows.

Key Changes

  • Add a global deposit product configuration in settings
  • Allow defining deposit requirement and per-unit amount on products
  • Automatically create and manage deposit lines on sale/rental orders
  • Ensure deposit amounts stay in sync with product quantities
  • Extend the behavior to the website, displaying deposit details to customers

Result

  • Deposits are always applied when required
  • No manual adjustments needed
  • Clear traceability between rental items and deposits
  • Improved user and customer experience

…tion

- Configured manifest with required metadata and dependencies.
- It covers chapter- 2 and 3 task
- Added the required fields.
- Completed Ch 4 task for Access Rights
- Created an action
- Define main menu and submenus
- Add views to manifest 'data' list
- Completed Ch 5 Action and Menu part
- Added is_active and state fields in form
- Added fields in list view
- Improved and adjusted fields in Form View
- Completed Ch 5 and Ch 6 List and Form Views
- Implemented search view
- Added property types, tags, and offers models
- Linked properties with buyer, salesperson, types, tags, and offers
- Completed Ch 6 and Ch 7.
- Added Best Offer and Total Area fields in property form view
- Covers 2 tasks of chapter 8.
…nction

- Added Validity and date_deadline fields with inverse function
- Implemented onchange logic for garden_area and garden_orientation
- Suggested fixes implemented
- Covers last 2 tasks of chapter 8.
- Added sold and cancelled action buttons for state transition
- Prevent invalid transitions between 'sold' and 'cancelled' states
- Introduce Accept and Refuse buttons for property offers
- Assign buyer and selling price to property on acceptance
- Restrict multiple offers from being accepted for the same property
- Chapter 9 Completed.
- Ensure positive property and offer prices
- Ensure unique property tag and type names
- Chapter 10 task 1 completed.
- Adds constraint using float_compare, ignores zero selling price.
- Chapter 10 completed.
- Added inline list view for property types
- Implemented statusbar widget for property state
- Defined default ordering on models
- Added conditional visibility and readonly attributes
- Enhanced list views with decorations and optional fields
- Introduced stat button on property type to access related offers
- Added related field and computed offer count for property types
- Chapter 11 completed
- Extended CRUD methods for offer validation, state update
- Added constraints to prevent invalid operations (state and offer price check)
- Inherited res.users to add property_ids relation
- Implemented view inheritance to display properties in user form
- Completed chapter 12
- Integrated account module to create invoices from sold properties
- Reused account.move for financial operations
- Enhanced kanban view using QWeb templating
- Implemented conditional UI logic with t-if and raw values
- Chapter 13 and 14 completed.
- Added visit scheduling with list, form, and calendar views
- Added constraint to prevent overlapping visits within the same property
- Automatically create calendar events on visit creation
- Added issue reporting with list and form views
- Completed Group Tasks.
- Added chatter and activities
- Implemented logic to reject all other offers when one is accepted
- Added “Accept Best Offer” action to simplify offer selection
- Added rainbow animation when a property is marked as sold
- Display sold ribbon in form and kanban views
- Updated kanban default grouping to state and disabled record drag
- Made “Sold” and “Accept Best Offer” buttons conditional primary actions
…ard)

- Create Counter component with increment action
- Introduce TodoList component to manage todos
- Add dynamic todo creation
- Implement toggle functionality for todo completion
- Add conditional styling based on state
- Implement delete functionality for removing todos
- Refactor Card to use slots and add toggle-able content.
This commit implements the Awesome Dashboard as part of learning Owl.

The main goal was to understand how frontend dashboard is built
using Owl instead of using xml for standard list/form/kanban
views as these are not suitable when we want to display mixed information like
KPIs, charts and quick actions in one place, so a custom dashboard is
needed.

Explored how components, services and hooks are
used together. The dashboard is split into smaller parts so it is
easier to follow and not everything is in a single file.

Also added the option to add/remove dashboard items. This was mainly
to understand how state is handled on the client side.
@robodoo
Copy link
Copy Markdown

robodoo commented May 15, 2026

Pull request status dashboard

@aykhu-odoo aykhu-odoo force-pushed the 19.0-renting-deposit-aykhu branch from a2c488d to c5759b0 Compare May 15, 2026 05:05
…ducts

Rental workflows currently lack a way to enforce or manage
security deposits, which are a common business requirement for
renting high-value or damage-sensitive products.

Without this, users must rely on manual workarounds such as adding
extra order lines or handling deposits outside the system, leading to:
- higher risk of human error,
- lack of traceability between rented product and its deposit,
- poor user experience on online product page(no visibility of required deposit).

This change introduces a structured and configurable deposit mechanism
to standardize how deposits are handled across the system.

A dedicated deposit product can now be defined in settings, ensuring
consistency in accounting and reuse across all rental operations.
At the product level, a deposit requirement and per-unit amount can be
configured, allowing flexibility depending on the nature of the item.

The system automatically manages deposit lines when rental products
are added to orders, ensuring that:
- deposits are always applied when required,
- amounts stay synchronized with product quantities,

The same logic is extended to the website to guarantee consistency
between backend and frontend flows, and to provide transparency to
customers by displaying deposit information before checkout.
@aykhu-odoo aykhu-odoo force-pushed the 19.0-renting-deposit-aykhu branch from c5759b0 to 73a3fb9 Compare May 15, 2026 05:27
@aykhu-odoo aykhu-odoo changed the title [ADD] sale_rental_deposit: introduce deposit mechanism for rental products Introduce deposit mechanism for rental products May 18, 2026
@aykhu-odoo aykhu-odoo changed the title Introduce deposit mechanism for rental products [ADD] sale_rental_deposit: introduce deposit mechanism for rental products May 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants