Skip to content

19.0 bom forecast sopat#1269

Draft
sopat-odoo wants to merge 24 commits into
odoo:19.0from
odoo-dev:19.0-bom-forecast-sopat
Draft

19.0 bom forecast sopat#1269
sopat-odoo wants to merge 24 commits into
odoo:19.0from
odoo-dev:19.0-bom-forecast-sopat

Conversation

@sopat-odoo
Copy link
Copy Markdown

Introduce a custom module that improves the BOM Overview
forecast view for cleaner status display.

WHY this change is being done:
Currently, the BOM Overview shows Estimated badge for both
main product and sub-components without distinction, making
it hard to differentiate availability status at each level.

Technical decisions taken:

  1. Inherited report.mrp.report_bom_structure to add
    status field with producible qty at level 0.
  2. Used patch() on BomOverviewLine to add statusBackgroundColor
    and statusDisplay getters for dynamic badge styling.
  3. Replaced Estimated text with Expected for sub-components
    (level > 0) to clearly distinguish from main product.
  4. All status badges are clickable and lead to product
    forecast report for quick navigation.
  5. Removed redundant Availability column to keep the
    view clean and focused on Status column.

Completed the initial setup for the new Real Estate module.
Created the base directory structure and manifest.
Successfully installed the module.
Initialized model and model fields which generates tables using odoo ORM
Fixed warnings and errors raised by the first push.
Created security/ir.model.access.csv file in estate for defining access rights.
Added the data in csv file and defined the csv file in manifest.
Created estate_property_views.xml for the window action.
Implemented 3-level menu structure: Root, Advertisements, and Properties.
Linked the menu to the window action to enable UI navigation.
Added readonly and copy=False attributes to selling_price field.
Set default value of 2 for bedrooms field.
Set default availability date to 3 months from today using Date.add().
Added active reserved field with default=True for record visibility.
Added state reserved field with specific values.
Added list view with key property fields for display.
Added form view with grouped fields and description tab.
Added search view with title and postcode search fields.
Added Available filter using date_availability domain.
Added Group By postcode option in search view.
Added Many2one fields for property type, buyer and salesman to main model.
Added Many2many tag_ids field and created estate.property.tag model.
Added One2many offer_ids field and created estate.property.offer model.
Added corresponding menus,actions,views and access rights for all new models.
Implement onchange for garden to auto-set garden_area and orientation.
- Added Sold and Cancel buttons to the property view.
- Added Accept and Refuse buttons to the offer view.
- Prevented invalid state changes by raising UserErrors.
- Automated property price and buyer updates when an offer is accepted.
Added SQL checks for positive prices and unique tags/types
Added a Python constraint to block selling price below 90% of the expected price
- Add One2many property_ids field and inline list view to property types.
- Add statusbar widget to property form view.
- Implement default sorting (_order) across multiple models.
- Add sequence field and drag-and-drop handle to property types.
- Added widget options to restrict create/edit on property type
- Implemented color field and color picker for tags
- Added conditional visibility using invisible attribute
- Controlled button visibility based on state
- Made list views editable (offers and tags)
- Added optional fields in list view
- Applied decoration colors for states (accepted, refused, sold)
- Added default search filter (Available)
- Improved search using filter_domain
- Added stat button on property type to view related offers
- Implemented related field and computed offer count for stat button
- Add ondelete constraint to prevent deletion of non-new/cancelled properties
- Override create() in offers to validate price and set offer_received state
- Extend res.users model with property_ids One2many field via model inheritance
- Add Real Estate Properties tab to user form view via view inheritance
- Created estate.property.visit model for scheduling visits
- Linked visits to property and customer
- Prevented duplicate visits using SQL constraint (property + date)
- Added visit count on property form (stat button)
- Implemented calendar event creation on visit creation
-Added estate_property_issues model for reporting issues regarding properties
-Added SLA tracking based on priority
-Computed overdue field
-Added resolve and cancel buttons
-Prevent property sale if high priority issue is unresolved
-Override action_sold using model inheritance(estate_account)
-Create customer invoice when property is sold
-Use account.move (account model) for invoice creation
- Create kanban view for estate.property
- Use QWeb templates for card design
- Display property name and pricing details
- Add conditional rendering using t-if
- Disable drag and drop in kanban
Polished XML code according to Chapter 15 guidelines.
Improved naming conventions (ids, views, actions).
Enhanced overall readability and consistency.
- Counter with useState, increment and callback prop
- Sub-component extraction with own folder structure
- Card component with props, slots and minimize toggle
- Props validation on Counter and Card
- Sum of two counters via callback prop
- TodoList with add, toggle, delete and auto-focus input
- Dynamic styling with t-att-class
- markup/t-out for safe HTML rendering
- Add chatter to estate.property form view
- Inherit mail.thread and mail.activity.mixin in estate.property
- Add mail template for property sold
- Auto-fill buyer and salesman in partner To field
- action_sold opens mail compose wizard with template loaded
- Create estate_crm module
- Create CRM lead on offer creation with property name, buyer and price
- Mark lead as won when offer is accepted
- Mark lead as lost when offer is refused
- Update action_accept to call action_refuse on other offers
  so refused leads automatically move to lost stage
- Add Layout component with control panel buttons
- Add Customers and Leads navigation buttons using action service
- Add statistics service with reactive data and auto-refresh every 10 mins
- Call /awesome_dashboard/statistics rpc to fetch server data
- Add NumberCard component to display stat values
- Add PieChartCard component with lazy loaded Chart.js
- Add DashboardItem wrapper component with size support
- Add dashboard_items registry with all stat cards
- Add dashboard_registry using awesome_dashboard.items category
- Add ConfigurationDialog with CheckBox to show/hide cards
- Persist hidden cards in localStorage via browser service
- Add lazy loading via LazyComponent and lazy_components registry
- Add statistics service caching with reactive object
@robodoo
Copy link
Copy Markdown

robodoo commented May 15, 2026

Pull request status dashboard

@sopat-odoo sopat-odoo force-pushed the 19.0-bom-forecast-sopat branch from 8d79457 to b71c0c4 Compare May 15, 2026 05:36
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