Skip to content

Commit a65fa79

Browse files
committed
[IMP] estate: added report feature
added report generation feature for the properties added property details in report and added offers to the report added demo data for ease commented out last demo data files in manifest file as it was causing replication issues
1 parent 5b8d2e6 commit a65fa79

File tree

5 files changed

+255
-3
lines changed

5 files changed

+255
-3
lines changed

estate/__manifest__.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@
1919
'views/estate_property_tag_views.xml',
2020
'views/estate_res_user_views.xml',
2121
'views/estate_menus.xml',
22+
'report/estate_reports.xml',
23+
'report/estate_report_views.xml',
2224
],
2325
'demo': [
24-
'demo/estate.property.type.csv',
25-
'demo/estate.property.xml',
26+
'data/estate_demo.xml',
27+
# 'demo/estate.property.type.csv',
28+
# 'demo/estate.property.xml',
2629
],
2730

2831
}

estate/data/estate_demo.xml

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
4+
<record id="property_residential" model="estate.property.type">
5+
<field name="name">Residential</field>
6+
</record>
7+
8+
<record id="property_commercial" model="estate.property.type">
9+
<field name="name">Commercial</field>
10+
</record>
11+
12+
<record id="property_industrial" model="estate.property.type">
13+
<field name="name">Industrial</field>
14+
</record>
15+
16+
<record id="property_land" model="estate.property.type">
17+
<field name="name">Land</field>
18+
</record>
19+
20+
<record id="villa" model="estate.property">
21+
<field name="name">Big Villa</field>
22+
<field name="state">new</field>
23+
<field name="description">A nice and big villa</field>
24+
<field name="postcode">12345</field>
25+
<field name="date_availability">2020-02-02</field>
26+
<field name="expected_price">1600000</field>
27+
<field name="bedrooms">6</field>
28+
<field name="living_area">100</field>
29+
<field name="facades">4</field>
30+
<field name="garage">True</field>
31+
<field name="garden">True</field>
32+
<field name="garden_area">100000</field>
33+
<field name="garden_orientation">south</field>
34+
<field name="property_type_id" ref="property_residential"/>
35+
<field name="salesperson_id" ref="base.user_admin"/>
36+
</record>
37+
38+
<record id="trailer" model="estate.property">
39+
<field name="name">Trailer Home</field>
40+
<field name="state">canceled</field>
41+
<field name="description">Home in a trailer park</field>
42+
<field name="postcode">54321</field>
43+
<field name="date_availability">1970-01-01</field>
44+
<field name="expected_price">100000</field>
45+
<field name="selling_price">120000</field>
46+
<field name="bedrooms">1</field>
47+
<field name="living_area">10</field>
48+
<field name="facades">4</field>
49+
<field name="garage">False</field>
50+
<field name="garden">True</field>
51+
<field name="property_type_id" ref="property_residential"/>
52+
<field name="salesperson_id" ref="base.user_admin"/>
53+
</record>
54+
55+
<record id="space_ship" model="estate.property">
56+
<field name="name">International Space Station</field>
57+
<field name="state">new</field>
58+
<field name="description">Aliens sometimes come visit</field>
59+
<field name="postcode">----</field>
60+
<field name="date_availability">2030-12-31</field>
61+
<field name="expected_price">45890000</field>
62+
<field name="property_type_id" ref="property_industrial"/>
63+
<field name="salesperson_id" ref="base.user_admin"/>
64+
</record>
65+
66+
<record id="cabin" model="estate.property">
67+
<field name="name">Cozy Cabin</field>
68+
<field name="state">sold</field>
69+
<field name="description">Small cabin by lake</field>
70+
<field name="postcode">10000</field>
71+
<field name="date_availability">2020-01-01</field>
72+
<field name="expected_price">80000</field>
73+
<field name="bedrooms">1</field>
74+
<field name="living_area">10</field>
75+
<field name="facades">4</field>
76+
<field name="garage">False</field>
77+
<field name="garden">True</field>
78+
<field name="property_type_id" ref="property_residential"/>
79+
<field name="salesperson_id" ref="base.user_admin"/>
80+
</record>
81+
82+
<record id="offer_azure_villa_1" model="estate.property.offer">
83+
<field name="price">10000</field>
84+
<field name="validity">14</field>
85+
<field name="partner_id" ref="base.res_partner_12"/>
86+
<field name="property_id" ref="villa"/>
87+
<field name="date_deadline" eval="str(datetime.now().year)+'-01-31'"/>
88+
</record>
89+
90+
<record id="offer_azure_villa_2" model="estate.property.offer">
91+
<field name="price">1500000</field>
92+
<field name="validity">14</field>
93+
<field name="partner_id" ref="base.res_partner_12"/>
94+
<field name="property_id" ref="villa"/>
95+
<field name="date_deadline" eval="str(datetime.now().year)+'-02-11'"/>
96+
</record>
97+
98+
<record id="offer_deco_villa" model="estate.property.offer">
99+
<field name="price">1500001</field>
100+
<field name="validity">14</field>
101+
<field name="partner_id" ref="base.res_partner_2"/>
102+
<field name="property_id" ref="villa"/>
103+
<field name="date_deadline" eval="str(datetime.now().year)+'-02-12'"/>
104+
</record>
105+
106+
<record id="offer_cabin_1" model="estate.property.offer">
107+
<field name="price">60000</field>
108+
<field name="validity">14</field>
109+
<field name="partner_id" ref="base.res_partner_12"/>
110+
<field name="property_id" ref="cabin"/>
111+
<field name="date_deadline" eval="str(datetime.now().year)+'-02-12'"/>
112+
</record>
113+
114+
<record id="offer_cabin_2" model="estate.property.offer">
115+
<field name="price">75000</field>
116+
<field name="validity">14</field>
117+
<field name="partner_id" ref="base.res_partner_12"/>
118+
<field name="property_id" ref="cabin"/>
119+
<field name="date_deadline" eval="str(datetime.now().year)+'-02-12'"/>
120+
</record>
121+
122+
</odoo>

estate/models/estate_property_offer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import api, fields, models
1+
from odoo import api, fields, models, api
22
from odoo.exceptions import UserError
33

44

estate/report/estate_report_views.xml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
<data>
4+
<record id="action_report_estate_property" model="ir.actions.report">
5+
<field name="name">Property Offers</field>
6+
<field name="model">estate.property</field>
7+
<field name="report_type">qweb-pdf</field>
8+
<field name="report_name">estate.report_property</field>
9+
<field name="report_file">estate.report_property</field>
10+
<field name="print_report_name">'Property Offers'</field>
11+
<field name="binding_model_id" ref="model_estate_property"/>
12+
</record>
13+
</data>
14+
15+
<data>
16+
<record id="action_report_estate_salesman" model="ir.actions.report">
17+
<field name="name">Property Offers</field>
18+
<field name="model">res.users</field>
19+
<field name="report_type">qweb-pdf</field>
20+
<field name="report_name">estate.report_salesman_properties</field>
21+
<field name="report_file">estate.report_salesman_properties</field>
22+
<field name="print_report_name">'Salesman Property Offers'</field>
23+
<field name="binding_model_id" ref="base.model_res_users"/>
24+
</record>
25+
</data>
26+
</odoo>

estate/report/estate_reports.xml

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<odoo>
3+
<!-- Main Property Report -->
4+
<template id="report_property">
5+
<t t-foreach="docs" t-as="property">
6+
<t t-call="web.html_container">
7+
<t t-call="web.external_layout">
8+
<div class="page">
9+
<h2>
10+
<span t-field="property.name"/>
11+
</h2>
12+
<div>
13+
<strong>Salesperson:</strong>
14+
<span t-field="property.salesperson_id"/>
15+
</div>
16+
<div>
17+
<strong>Property Type:</strong>
18+
<span t-field="property.property_type_id"/>
19+
</div>
20+
<div>
21+
<strong>Expected Price:</strong>
22+
<span t-field="property.expected_price"/>
23+
</div>
24+
<div>
25+
<strong>Status:</strong>
26+
<span t-field="property.state"/>
27+
</div>
28+
<div>
29+
<strong>Total Area (sqm):</strong>
30+
<span t-field="property.total_area"/>
31+
</div>
32+
<div>
33+
<strong>Best Offer:</strong>
34+
<span t-field="property.best_price"/>
35+
</div>
36+
<t t-call="estate.report_property_bid_info"/>
37+
</div>
38+
</t>
39+
</t>
40+
</t>
41+
</template>
42+
43+
<!-- Report of Salesperson and Their Properties -->
44+
<template id="report_salesman_properties">
45+
<t t-foreach="docs" t-as="salesman">
46+
<t t-call="web.html_container">
47+
<t t-call="web.external_layout">
48+
<div class="page">
49+
<h2>
50+
<strong>Salesperson:</strong>
51+
<span t-field="salesman.name"/>
52+
</h2>
53+
<t t-if="salesman.property_ids">
54+
<t t-set="properties" t-value="salesman.mapped('property_ids')"/>
55+
<t t-foreach="properties" t-as="property">
56+
<hr/>
57+
<h3><span t-field="property.name"/></h3>
58+
<div>
59+
<strong>Status:</strong>
60+
<span t-field="property.state"/>
61+
</div>
62+
<t t-call="estate.report_property_bid_info"/>
63+
</t>
64+
</t>
65+
<strong t-else="">Salesperson has no properties!</strong>
66+
</div>
67+
</t>
68+
</t>
69+
</t>
70+
</template>
71+
72+
<!-- Sub-template: Offer Info -->
73+
<template id="report_property_bid_info">
74+
<t t-if="property.offer_ids">
75+
<h4>Offers</h4>
76+
<table class="table table-sm table-bordered">
77+
<thead>
78+
<tr>
79+
<th>Price</th>
80+
<th>Partner</th>
81+
<th>Validity (days)</th>
82+
<th>Deadline</th>
83+
<th>State</th>
84+
</tr>
85+
</thead>
86+
<tbody>
87+
<t t-foreach="property.offer_ids" t-as="offer">
88+
<tr>
89+
<td><span t-field="offer.price"/></td>
90+
<td><span t-field="offer.partner_id"/></td>
91+
<td><span t-field="offer.validity"/></td>
92+
<td><span t-field="offer.date_deadline"/></td>
93+
<td><span t-field="offer.status"/></td>
94+
</tr>
95+
</t>
96+
</tbody>
97+
</table>
98+
</t>
99+
<strong t-else="">No offers have been made yet :(</strong>
100+
</template>
101+
</odoo>

0 commit comments

Comments
 (0)