Skip to content

Conversation

@kukor-odoo
Copy link

@kukor-odoo kukor-odoo commented Jan 1, 2026

  • Implemented the complete Estate Property tutorial by following the official Odoo documentation from start to finish.
  • Designed and implemented custom ORM models, relational fields, computed fields, and constraints to enforce business rules.
  • Created form, list, kanban and search views, menus, and actions to provide a usable and structured UI.
  • Configured security access rights and record rules to control data visibility and operations.

kukor-odoo added 5 commits January 1, 2026 10:22
1. Architecture Overview
2. A New Application
Fixed the white space error, added a space after the colon ( : ).
{
    'name': 'Real Estate',
    'author': 'Kunj Koradiya',
    'description': 'This is the description'
}
Added space after each colon.
Added the line after the end of the code
{
    'name': 'Real Estate',
    'author': 'Kunj Koradiya',
    'description': 'This is the description'
}

Added a new line at the end.
Fixed the white space error, which was at the end of the line in the description

    'description': 'This is the description'

Removed the space from the end of the line
Fixed the license error, which later added at the last

'license': 'LGPL-3'

Added the license
@robodoo
Copy link

robodoo commented Jan 1, 2026

Pull request status dashboard

kukor-odoo added 4 commits January 1, 2026 18:28
-Added the initial estate property model with basic fields.
-Configured access rights via ir.model.access.csv to enable CRUD operation.
-Introduced menu items to expose the model in the UI.
-Created custom list, form, and search views to replace default generic views.
-Improved usability by defining proper field layouts and search filters.

Completed Chapter 3-6
-Removed the unwanted imports from the estate_property.py

Completed chapter 3-6
- Added property types, tags, and offers models with views
- Linked properties with buyer, salesperson, types, tags, and offers
- Displayed offers and relations in property views

Completed the Chapter 7
- Fixed the line Spacing in the __init__.py file

Completed the Chapter 7
Copy link

@mash-odoo mash-odoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @kukor-odoo,
Nice start for the module.
Please apply the suggested changes wherever necessary.

kukor-odoo added 5 commits January 4, 2026 10:56
- Updated naming conventions for models and views
- Cleaned up imports, spacing, and unnecessary attributes
- Aligned selection fields and filters with Odoo standards
- Removed the comma
buyer_id = fields.Many2one('res.users')
Add a computed field `best_price` on `estate.property`, calculated from the
highest offer price (using `@api.depends`). Also implement an `@api.onchange` on
the `garden` field to set default values for `garden_area` and `garden_orientation`.

Completed Chapter 8
- Replaced inconsistent use of single and double quotes across Python files.
- Fixed quote usage in the manifest file to align with coding standards.
- Added server actions and buttons to manage property state transitions
- Implemented logic to accept/refuse offers and mark properties as sold
- Added SQL constraints to ensure valid and consistent data
- Added Python constraints to enforce business rules on pricing

Completed Chapters 9 and 10
Copy link

@mash-odoo mash-odoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello,
I am getting this traceback, can you please resolve it?
Also, please update your PR title and description.

- Resolved the traceback issue in the estate module.
- Removed the unnecessary property_id field from the offer form, as it is not required.
@kukor-odoo kukor-odoo force-pushed the 19.0-tutorials-kukor branch from 543fb53 to 7dde16c Compare January 9, 2026 05:45
- Improve estate views following the Sprinkles tutorial.
- Add list decorations, inline editing, and statusbar widgets.
- Apply deterministic ordering and sequence handling.
- Enhance overall UI clarity and usability.
@kukor-odoo kukor-odoo force-pushed the 19.0-tutorials-kukor branch from cf9976a to bb1dd37 Compare January 9, 2026 13:18
- Implement maintenance tracking with title, cost, and status fields.
- Prevent property sale when maintenance requests are pending and calculate total maintenance costs.
@kukor-odoo kukor-odoo force-pushed the 19.0-tutorials-kukor branch from de376d5 to 2ab5de2 Compare January 12, 2026 09:25
Copy link

@mash-odoo mash-odoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello,
Good going on this task..
Please go through my questions and suggestions

- Applied the requested review changes to the estate module.
- Improved the offer acceptance flow and updated related property behavior.
- Adjusted views and field options to better match the expected workflow.
- Overall, the module now follows the reviewed structure and logic.
@kukor-odoo kukor-odoo force-pushed the 19.0-tutorials-kukor branch 5 times, most recently from 4ed62d3 to 7b321f5 Compare January 19, 2026 07:28
@kukor-odoo kukor-odoo force-pushed the 19.0-tutorials-kukor branch from 7b321f5 to 2aae513 Compare January 19, 2026 08:36
- Add recordset operations, domain filtering, and computed fields following the
  Sprinkles chapter.
- Extend existing models using proper inheritance and method overrides.
- Introduce a new module with models, views, and access rights, and integrate it
  with the estate app.

Completed Chapters 11, 12, and 13
@kukor-odoo kukor-odoo force-pushed the 19.0-tutorials-kukor branch from 2aae513 to 54dcff3 Compare January 19, 2026 08:42
Added draft invoice creation logic for estate transactions.
Implemented Kanban views for estate-related models.
Designed card layouts with key fields and visual indicators.
Improved workflow visibility and usability following Odoo 19 standards.

Completed Chapters 14 and 15
@kukor-odoo kukor-odoo force-pushed the 19.0-tutorials-kukor branch from af41f9f to 2d94f55 Compare January 22, 2026 06:02
@kukor-odoo kukor-odoo changed the title 19.0 tutorials kukor [ADD] Estate Property Module Jan 29, 2026
Copy link

@mash-odoo mash-odoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello!
Good going on the task..
Please look at the comments..

Comment on lines +1 to +6
<?xml version="1.0" encoding="utf-8"?>
<odoo>



</odoo>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the need of this file?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no longer any need for this file in the current state of the Estate module. However, it was required earlier when I was creating and displaying fields in the form view. At that time, I was working with data from the estate.property table and needed to show those records, so I inherited the fields from that module and used this file for that purpose.

After successfully completing the task, the file was no longer needed, but I forgot to remove it.

<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<xpath expr="//notebook" position="inside">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<xpath expr="//notebook" position="inside">
<notebook position="inside">

You can directly give paths like this

Copy link
Author

@kukor-odoo kukor-odoo Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it, thanks for pointing that out. I’ve removed the <xpath> and directly used the <notebook> to add the content inside the existing notebook.

<notebook position="inside">
                <page string="Properties">
                        <group>
                            <field name="property_ids"/>
                            <field name="unsold_cost"/>
                        </group>
                </page>
</notebook>

Expected Price:
<field name="expected_price"/>
</div>
<t t-if="record.property_type_id.raw_value">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need to write here raw_value?

required=True,
help="This field tells us the state of the property.",
)
total_area = fields.Integer(compute='_compute_total_area')

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we perform search on the total_area without using store=True?

<field name="model">estate.property</field>
<field name="arch" type="xml">
<form>
<header>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add one more button in the header for accepting the best offer directly by a click?

</h4>
</div>
<div class="ms-auto d-flex">
<field name="partner_id" widget="many2one_avatar_user" class="ms-2"/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this widget used for?

_inherit = 'estate.property'

def action_sold(self):
res = super().action_sold()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the use of calling super()?

<field name="arch" type="xml">
<kanban default_group_by="property_type_id" highlight_color="color" options="{'color_field' : 'color'}">
<field name="state"/>
<progressbar field="state" colors='{"offer_accepted": "success", "offer_received": "warning", "cancelled": "danger"}' sum_field="expected_price"/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you know where are all these attributes of xml file defined?

from odoo import api, fields, models


class EstatePropertyType(models.Model):

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did you use here models.Model?
What are the other types of models that you can use and what are their specifications?

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.

3 participants