Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions estate/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
20 changes: 20 additions & 0 deletions estate/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
'name': 'Real Estate Kapat',
'version': '1.1',
'summary': 'Module to Mangage Real Estate Property Listings',
'website': 'https://www.odoo.com/app/estate',
'depends': [
'base',
],
'data': [
'security/ir.model.access.csv',
'views/estate_property_views.xml',
'views/estate_property_type_views.xml',
'views/estate_property_tag_views.xml',
'views/estate_menus.xml',
'views/estate_property_offer_views.xml',
],
'application': True,
'author': 'Odoo S.A.',
'license': 'LGPL-3',
}
4 changes: 4 additions & 0 deletions estate/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from . import estate_property
from . import estate_property_offer
from . import estate_property_tag
from . import estate_property_type
38 changes: 38 additions & 0 deletions estate/models/estate_property.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from odoo import fields, models


class EstateProperty(models.Model):
_name = "estate.property"
_description = "Estate Property module for Odoo 19 tutorials Hello World"

name = fields.Char(default="Unknown", required=True)
description = fields.Text()
postcode = fields.Char()
date_availability = fields.Date(copy=False, default=fields.Date.add(fields.Date.today(), months=3))
expected_price = fields.Float(required=True)
selling_price = fields.Float(readonly=True, copy=False)
bedrooms = fields.Integer(default=2)
living_area = fields.Integer()
facades = fields.Integer()
garage = fields.Boolean()
garden = fields.Boolean()
garden_area = fields.Integer()
garden_orientation = fields.Selection([
("north", "North"),
("south", "South"),
("east", "East"),
("west", "West"),
])
active = fields.Boolean(default=True)
state = fields.Selection([
("new", "New"),
("offer_received", "Offer Received"),
("offer_accepted", "Offer Accepted"),
("sold", "Sold"),
("canceled", "Canceled"),
], copy=False, default="new")
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
salesperson_id = fields.Many2one("res.users", string="Salesperson", default=lambda self: self.env.user)
buyer_id = fields.Many2one("res.partner", string="Buyer", copy=False)
tag_ids = fields.Many2many("estate.property.tag", string="Property Tags")
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers")
14 changes: 14 additions & 0 deletions estate/models/estate_property_offer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from odoo import fields, models


class EstatePropertyOffer(models.Model):
_name = "estate.property.offer"
_description = "Estate Property Offer module for Odoo 19 tutorials Hello World"

price = fields.Float(required=True, string="Offer Price")
status = fields.Selection([
("accepted", "Accepted"),
("refused", "Refused"),
], copy=False, string="Offer Status")
partner_id = fields.Many2one("res.partner", string="Partner", required=True)
property_id = fields.Many2one("estate.property", string="Property", required=True)
8 changes: 8 additions & 0 deletions estate/models/estate_property_tag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from odoo import fields, models


class EstatePropertyTag(models.Model):
_name = "estate.property.tag"
_description = "Estate Property Tags module for Odoo 19 tutorials Hello World"

name = fields.Char(required=True, string="Tag Name")
8 changes: 8 additions & 0 deletions estate/models/estate_property_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from odoo import fields, models


class EstatePropertyType(models.Model):
_name = "estate.property.type"
_description = "Estate Property Type module for Odoo 19 tutorials Hello World"

name = fields.Char(required=True, string="Property Type Name")
5 changes: 5 additions & 0 deletions estate/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1
access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,base.group_user,1,1,1,1
access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,base.group_user,1,1,1,1
13 changes: 13 additions & 0 deletions estate/views/estate_menus.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<menuitem id="estate_menu_root" name="Estate">
<menuitem id="estate_first_level_menu_advertisements" name="Advertisments">
<menuitem name="Properties" id="estate_property_menu_action" action="estate_property_action"/>
</menuitem>
<menuitem id="estate_first_level_menu_settings" name="Settings">
<menuitem name="Property Types" id="estate_property_type_menu_action" action="estate_property_type_action"/>
<menuitem name="Property Tags" id="estate_property_tag_menu_action" action="estate_property_tag_action"/>
</menuitem>
</menuitem>

</odoo>
21 changes: 21 additions & 0 deletions estate/views/estate_property_offer_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="estate_property_offer_action" model="ir.actions.act_window">
<field name="name">Estate Property Offers</field>
<field name="res_model">estate.property.offer</field>
<field name="view_mode">list,form</field>
</record>

<record id="estate_property_offer_view_list" model="ir.ui.view">
<field name="name">estate.property.offer.list</field>
<field name="model">estate.property.offer</field>
<field name="arch" type="xml">
<list string="Estate Property Offers">
<field name="price" string="Offer Price"/>
<field name="partner_id" string="Partner"/>
<field name="status" string="Status"/>
</list>
</field>
</record>

</odoo>
19 changes: 19 additions & 0 deletions estate/views/estate_property_tag_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="estate_property_tag_action" model="ir.actions.act_window">
<field name="name">Estate Property Tags</field>
<field name="res_model">estate.property.tag</field>
<field name="view_mode">list,form</field>
</record>

<record id="estate_property_tag_view_list" model="ir.ui.view">
<field name="name">estate.property.tag.list</field>
<field name="model">estate.property.tag</field>
<field name="arch" type="xml">
<list string="Estate Property Tags">
<field name="name" string="Property Tag Name"/>
</list>
</field>
</record>

</odoo>
35 changes: 35 additions & 0 deletions estate/views/estate_property_type_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="estate_property_type_action" model="ir.actions.act_window">
<field name="name">Estate Property Types</field>
<field name="res_model">estate.property.type</field>
<field name="view_mode">list,form</field>
</record>

<record id="estate_property_type_view_list" model="ir.ui.view">
<field name="name">estate.property.type.list</field>
<field name="model">estate.property.type</field>
<field name="arch" type="xml">
<list string="Estate Property Types">
<field name="name" string="Property Type Name"/>
</list>
</field>
</record>

<record id="estate_property_type_view_form" model="ir.ui.view">
<field name="name">estate.property.type.form</field>
<field name="model">estate.property.type</field>
<field name="arch" type="xml">
<form string="Estate Property Type">
<sheet>
<div class="oe_title">
<h1>
<field name="name" string="Property Type Name" placeholder="Enter Property Type Name"/>
</h1>
</div>
</sheet>
</form>
</field>
</record>

</odoo>
100 changes: 100 additions & 0 deletions estate/views/estate_property_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="estate_property_action" model="ir.actions.act_window">
<field name="name">Estate Properties</field>
<field name="res_model">estate.property</field>
<field name="view_mode">list,form</field>
</record>

<record id="estate_property_view_list" model="ir.ui.view">
<field name="name">estate.property.list</field>
<field name="model">estate.property</field>
<field name="arch" type="xml">
<list string="Estate Properties">
<field name="name" string="Title"/>
<field name="property_type_id" string="Property Type"/>
<field name="tag_ids" widget="many2many_tags"/>
<field name="bedrooms" string="Bedrooms"/>
<field name="postcode"/>
<field name="expected_price"/>
<field name="selling_price"/>
<field name="date_availability"/>
<field name="living_area"/>
<field name="state"/>
</list>
</field>
</record>

<record id="estate_property_view_form" model="ir.ui.view">
<field name="name">estate.property.form</field>
<field name="model">estate.property</field>
<field name="arch" type="xml">
<form string="Estate Property">
<sheet>
<div class="oe_title">
<h1>
<field name="name" placeholder="Property Title"/>
</h1>
<field name="tag_ids" widget="many2many_tags"/>
</div>
<group>
<group>
<field name="property_type_id" string="Property Type"/>
<field name="postcode" string="Postcode"/>
<field name="date_availability" string="Availability From"/>
</group>
<group>
<field name="expected_price" string="Expected Price"/>
<field name="selling_price" string="Selling Price"/>
</group>
</group>
<notebook>
<page string="Description">
<group>
<field name="description" string="Description"/>
<field name="bedrooms" string="Bedrooms"/>
<field name="living_area" string="Living Area (sqm)"/>
<field name="facades" string="Number of Facades"/>
<field name="garage" string="Garage"/>
<field name="garden" string="Garden"/>
<field name="garden_area" string="Garden Area (sqm)"/>
<field name="garden_orientation" string="Garden Orientation"/>
<field name="state" string="Status"/>
</group>
</page>
<page string="Offers">
<field name="offer_ids"/>
</page>
<page string="Other Info">
<group>
<field name="salesperson_id" string="Salesperson"/>
<field name="buyer_id" string="Buyer"/>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>

<record id="estate_property_view_search" model="ir.ui.view">
<field name="name">estate.property.search</field>
<field name="model">estate.property</field>
<field name="arch" type="xml">
<search string="Search Estate Properties">
<field name="name" string="Title"/>
<field name="postcode"/>
<field name="expected_price"/>
<field name="selling_price"/>
<field name="bedrooms"/>
<field name="living_area"/>
<field name="facades"/>
<field name="property_type_id"/>
<separator/>
<filter name="available" string="Only Available" domain="[('state', '=', ['new','offer_received'])]"/>
<filter name="group_by_postcode" string="Postcode" context="{'group_by':'postcode'}"/>
</search>
</field>
</record>

</odoo>