Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
88181a3
[ADD] Chapter 2&3 (Estate)
sopat-odoo Mar 10, 2026
15ba5f8
[IMP] Estate:Fixed Issues and Completed Chapter-4
sopat-odoo Mar 11, 2026
1039a39
[IMP] Estate:Partially Completed Chapter-5
sopat-odoo Mar 12, 2026
aab2bd1
[IMP] Estate:Completed Chapter-5
sopat-odoo Mar 13, 2026
ae34671
[IMP] Estate:Errors Fixed & Completed Chapter-6
sopat-odoo Mar 16, 2026
2db9029
[IMP] Estate: Completed Chapter-7
sopat-odoo Mar 18, 2026
1f35744
[IMP] estate: Partially Completed Chapter-8
sopat-odoo Mar 30, 2026
f5e96ec
[IMP] estate: Completed Chapter-8
sopat-odoo Apr 3, 2026
228fe82
[IMP] estate: Completed Chapter-9
sopat-odoo Apr 4, 2026
7b7fa47
[IMP] estate: Completed Ch-10
sopat-odoo Apr 5, 2026
a51fbd7
[IMP] estate: Partially Completed Ch-11
sopat-odoo Apr 7, 2026
6228369
[IMP] estate: Completed Ch-11
sopat-odoo Apr 9, 2026
1cd13b4
[IMP] estate: Completed Ch-12
sopat-odoo Apr 13, 2026
b58584b
[IMP] estate: Completed Task of Scheduling Visits
sopat-odoo Apr 14, 2026
38b0320
[IMP] estate: Completed SLA Task
sopat-odoo Apr 16, 2026
176abb4
[ADD] estate: Completed Chapter-13
sopat-odoo Apr 16, 2026
1857156
[IMP] estate: Completed Chapter-14
sopat-odoo Apr 16, 2026
331f9b6
[IMP] estate: Coding Guidelines Improvements
sopat-odoo Apr 17, 2026
62b91ad
[ADD] awesome_owl:Implement core OWL components and reactivity features
sopat-odoo May 6, 2026
d290f4c
[IMP] estate:add chatter in form view and email template on sold
sopat-odoo May 6, 2026
6b3a11d
[ADD] estate_crm:auto generate crm lead on offer and update stage
sopat-odoo May 7, 2026
8879c0e
[ADD] awesome_dashboard:build a dynamic dashboard
sopat-odoo May 9, 2026
ca889d2
[IMP] estate: Added review task
sopat-odoo May 14, 2026
ed00fc9
[ADD] bom_forecast: clean bom overview forecast view
sopat-odoo May 15, 2026
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
3 changes: 0 additions & 3 deletions awesome_dashboard/__init__.py

This file was deleted.

30 changes: 0 additions & 30 deletions awesome_dashboard/__manifest__.py

This file was deleted.

3 changes: 0 additions & 3 deletions awesome_dashboard/controllers/__init__.py

This file was deleted.

36 changes: 0 additions & 36 deletions awesome_dashboard/controllers/controllers.py

This file was deleted.

8 changes: 0 additions & 8 deletions awesome_dashboard/static/src/dashboard.js

This file was deleted.

8 changes: 0 additions & 8 deletions awesome_dashboard/static/src/dashboard.xml

This file was deleted.

11 changes: 0 additions & 11 deletions awesome_dashboard/views/views.xml

This file was deleted.

3 changes: 0 additions & 3 deletions awesome_owl/__init__.py

This file was deleted.

43 changes: 0 additions & 43 deletions awesome_owl/__manifest__.py

This file was deleted.

3 changes: 0 additions & 3 deletions awesome_owl/controllers/__init__.py

This file was deleted.

10 changes: 0 additions & 10 deletions awesome_owl/controllers/controllers.py

This file was deleted.

12 changes: 0 additions & 12 deletions awesome_owl/static/src/main.js

This file was deleted.

5 changes: 0 additions & 5 deletions awesome_owl/static/src/playground.js

This file was deleted.

10 changes: 0 additions & 10 deletions awesome_owl/static/src/playground.xml

This file was deleted.

15 changes: 0 additions & 15 deletions awesome_owl/views/templates.xml

This file was deleted.

1 change: 1 addition & 0 deletions bom_forecast/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import model
16 changes: 16 additions & 0 deletions bom_forecast/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "bom_forecast",
"version": "1.0",
"depends": ["mrp", "purchase"],
"author": "soham",
"category": "Tutorials",
"license": "LGPL-3",
'installable': True,
'auto_install': True,
'application': True,
"assets": {
"web.assets_backend": [
"bom_forecast/static/src/**/*",
],
},
}
1 change: 1 addition & 0 deletions bom_forecast/model/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import report_mrp_bom_structure
15 changes: 15 additions & 0 deletions bom_forecast/model/report_mrp_bom_structure.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from odoo import _, models


class ReportMrpReportBomStructure(models.AbstractModel):
_inherit = "report.mrp.report_bom_structure"

def _get_bom_data(self, *args, **kwargs):
result = super()._get_bom_data(*args, **kwargs)
if result.get("level") == 0:
qty = int(result.get("producible_qty") or 0)
if qty > 0:
result["status"] = _("%(qty)s Ready To Produce", qty=qty)
else:
result["status"] = _("No Ready To Produce")
return result
28 changes: 28 additions & 0 deletions bom_forecast/static/src/bom_overview_line.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { patch } from "@web/core/utils/patch";
import { BomOverviewLine } from "@mrp/components/bom_overview_line/mrp_bom_overview_line";

patch(BomOverviewLine.prototype, {

get statusBackgroundColor() {
switch (this.data.availability_state) {
case "available": return "text-bg-success";
case "expected":
case "estimated":
if (this.data.level === 0) return "text-bg-dark";
return "border border-warning text-warning";
case "unavailable": return "text-bg-danger";
default: return "text-bg-dark";
}
},

get statusDisplay() {
if (this.data.level > 0 &&
this.data.availability_display &&
this.data.availability_display.includes("Estimated")) {
return this.data.availability_display.replace(
"Estimated", "Expected"
);
}
return this.data.availability_display;
}
});
38 changes: 38 additions & 0 deletions bom_forecast/static/src/bom_overview_line.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">
<t t-inherit="mrp.BomOverviewLine" t-inherit-mode="extension">

<xpath expr="//td[t[@t-if=&quot;data.hasOwnProperty('availability_state')&quot;]]"
position="replace"/>

<xpath expr="//td//div[hasclass('o_field_badge')]" position="replace">
<div class="o_field_badge">

<t t-if="data.type == 'operation'">
<span t-attf-class="badge rounded-pill o_mrp_overview_badge {{statusBackgroundColor}}"
t-esc="data.availability_display"/>
</t>

<t t-elif="data.level === 0">
<t t-if="data.status == 'No Ready To Produce'">
<span t-attf-class="badge rounded-pill o_mrp_overview_badge {{statusBackgroundColor}}"
t-on-click.prevent="goToForecast"
t-esc="data.availability_display"/>
</t>
<t t-else="">
<span class="badge rounded-pill o_mrp_overview_badge text-bg-success"
t-on-click.prevent="goToForecast"
t-esc="data.status"/>
</t>
</t>

<t t-else="">
<span t-attf-class="badge rounded-pill o_mrp_overview_badge {{statusBackgroundColor}}"
t-on-click.prevent="goToForecast"
t-esc="statusDisplay"/>
</t>

</div>
</xpath>
</t>
</templates>
7 changes: 7 additions & 0 deletions bom_forecast/static/src/mrp_bom_overview_table.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">
<t t-name="mrp.change_forecast_view" t-inherit="mrp.BomOverviewTable" t-inherit-mode="extension">
<xpath expr="//a[@t-on-click.prevent='goToProduct']/ancestor::div[2]" position="replace"/>
<xpath expr="//th[text()='Availability']" position="replace"/>
</t>
</templates>