Business Requirement Deliverable

business_requirement_deliverable
REPOSITORY
REPOSITORYOCA/business-requirement
GIT
GIThttps://github.com/OCA/business-requirement.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/business-requirement/tree/14.0/business_requirement_deliverable
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYBusiness Requirements Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Elico Corp
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Elico Corp
COMMITTERS
COMMITTERSPedro M. Baeza, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, oca-ci, oca-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/business-requirement
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/business-requirement:
    - business_requirement
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
assets_frontend_inherit_brd BRD frontend assets ir.ui.view qweb Inherits web.assets_frontend
assets_tests assets_tests ir.ui.view qweb Inherits web.assets_tests
brd_section_tree business.requirement.deliverable.section tree New
layout_br_report_body layout_br_report_body ir.ui.view qweb Inherits business_requirement.layout_br_report
portal_br_page portal_br_page ir.ui.view qweb Inherits business_requirement.portal_br_page
portal_my_brd My Business Requirement Deriverable ir.ui.view qweb New
portal_my_brd_list My Business Requirement Deliverable ir.ui.view qweb New
portal_my_home_br Portal My Home : business requirements entries ir.ui.view qweb Inherits business_requirement.portal_my_home_br
portal_my_home_menu_brd Portal layout : business requirement deliverable menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
view_business_requirement_deliverable_form business.requirement.deliverable.form business.requirement.deliverable form New
view_business_requirement_deliverable_graph business.requirement.deliverable.graph business.requirement.deliverable graph New
view_business_requirement_deliverable_kanban business.requirement.deliverable.kanban business.requirement.deliverable kanban New
view_business_requirement_deliverable_pivot business.requirement.deliverable.pivot business.requirement.deliverable pivot New
view_business_requirement_deliverable_search business.requirement.deliverable.search business.requirement.deliverable search New
view_business_requirement_deliverable_tree business.requirement.deliverable.tree business.requirement.deliverable tree New
view_business_requirement_form business.requirement.form business.requirement xpath Inherits business_requirement.view_business_requirement_form
view_business_requirement_search business.requirement.search business.requirement xpath Inherits business_requirement.view_business_requirement_search
view_business_requirement_tree business.requirement.tree business.requirement xpath Inherits business_requirement.view_business_requirement_tree
view_partner_property_form res.partner.product.property.form.inherit res.partner xpath Inherits product.view_partner_property_form
Models touched (4)

New fields (7)
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' readonly=True string='Currency'
  • deliverable_lines One2many → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Deliverable Lines'
  • dl_count Integer
    compute='_compute_dl_count' string='DL Count'
  • dl_count_portal_published Integer
    compute='_compute_dl_count_portal_published' string='DL Count Portal pubished'
  • dl_total_revenue Float
    compute='_compute_dl_total_revenue' digits='Account' string='DL Total Revenue'
  • pricelist_id Many2one → product.pricelist
    comodel_name='product.pricelist' readonly=True states={'draft': [('readonly', False)]} string='Pricelist'
  • total_revenue Float
    compute='_compute_deliverable_total' store=True string='Total Deliverable'
Public methods (9)
  • copy(self, default=None)
  • get_portal_confirmation_action(self)
  • get_total_by_section(self)
  • map_deliverable(self, new_br_id)
    copy and map deliverable from old to new requirement
  • message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None)
    Subscribe to all existing active deliverables when subscribing to a requirement
  • message_unsubscribe(self, partner_ids=None, channel_ids=None)
    Unsubscribe from all deliverables when unsubscribing from a requirement
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    Update the following fields when the partner is changed: - Pricelist
  • open_deliverable_line(self)
  • partner_id_change(self)
    @api.onchange('partner_id')

New fields (17)
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' ondelete='cascade' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=False related='business_requirement_id.partner_id' store=True string='Stakeholder'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' readonly=True string='Currency'
  • dependency_ids Many2many → business.requirement.deliverable
    column1='parent_id' column2='dependency_id' comodel_name='business.requirement.deliverable' relation='business_requirement_deliverable_dependency_rel' string='Dependencies'
  • name Text
    required=True string='Name'
  • portal_published Boolean
    default=True string='In Portal'
  • price_total Float
    compute='_compute_price_total' readonly=True store=True string='Total Deliverable'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • proposed_solution Html
  • qty Float
    default=1 store=True string='Quantity'
  • sale_price_unit Float
    string='Sales Price'
  • section_id Many2one → business.requirement.deliverable.section
    comodel_name='business.requirement.deliverable.section' string='Section'
  • sequence Integer
    string='Sequence'
  • state Selection
    related='business_requirement_id.state' store=True
  • state Selection
    related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → uom.uom
    comodel_name='uom.uom' default=<expr> required=True string='UoM'
  • user_case Html
Public methods (4)
  • name_get(self)
  • portal_publish_button(self)
  • product_id_change(self)
    @api.onchange('product_id')
  • product_uom_change(self)
    @api.onchange('product_id', 'uom_id', 'qty')

New fields (2)
  • name Char
    required=True string='Name'
  • sequence Integer
    default=10 string='Sequence'
Public methods (0)

No public methods.

New fields (1)
  • property_product_estimation_pricelist Many2one → product.pricelist
    comodel_name='product.pricelist' company_dependent=True help='Pricelist used for the estimation of the Business Requirements\n Deliverables linked to this Customer.\n Currency of the Deliverables will be the one from the pricelist.' string='Estimation Pricelist'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/business-requirement
GIT
GIThttps://github.com/OCA/business-requirement.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/business-requirement/tree/13.0/business_requirement_deliverable
VERSION
VERSION 1.3.0
CATEGORY
CATEGORYBusiness Requirements Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Elico Corp
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Elico Corp
COMMITTERS
COMMITTERSAlexandre Díaz, OCA Transbot, sergio-teruel, Víctor Martínez, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/business-requirement
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/business-requirement:
    - business_requirement
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
assets_frontend_inherit_brd BRD frontend assets ir.ui.view qweb Inherits web.assets_frontend
brd_section_tree business.requirement.deliverable.section tree New
layout_br_report_body layout_br_report_body ir.ui.view qweb Inherits business_requirement.layout_br_report
portal_br_page portal_br_page ir.ui.view qweb Inherits business_requirement.portal_br_page
portal_my_brd My Business Requirement Deriverable ir.ui.view qweb New
portal_my_brd_list My Business Requirement Deliverable ir.ui.view qweb New
portal_my_home_br Portal My Home : business requirements entries ir.ui.view qweb Inherits business_requirement.portal_my_home_br
portal_my_home_menu_brd Portal layout : business requirement deliverable menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
view_business_requirement_deliverable_form business.requirement.deliverable.form business.requirement.deliverable form New
view_business_requirement_deliverable_graph business.requirement.deliverable.graph business.requirement.deliverable graph New
view_business_requirement_deliverable_kanban business.requirement.deliverable.kanban business.requirement.deliverable kanban New
view_business_requirement_deliverable_pivot business.requirement.deliverable.pivot business.requirement.deliverable pivot New
view_business_requirement_deliverable_search business.requirement.deliverable.search business.requirement.deliverable search New
view_business_requirement_deliverable_tree business.requirement.deliverable.tree business.requirement.deliverable tree New
view_business_requirement_form business.requirement.form business.requirement xpath Inherits business_requirement.view_business_requirement_form
view_business_requirement_search business.requirement.search business.requirement xpath Inherits business_requirement.view_business_requirement_search
view_business_requirement_tree business.requirement.tree business.requirement xpath Inherits business_requirement.view_business_requirement_tree
view_partner_property_form res.partner.product.property.form.inherit res.partner xpath Inherits product.view_partner_property_form
Models touched (4)

New fields (7)
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' readonly=True string='Currency'
  • deliverable_lines One2many → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Deliverable Lines'
  • dl_count Integer
    compute='_compute_dl_count' string='DL Count'
  • dl_count_portal_published Integer
    compute='_compute_dl_count_portal_published' string='DL Count Portal pubished'
  • dl_total_revenue Float
    compute='_compute_dl_total_revenue' digits='Account' string='DL Total Revenue'
  • pricelist_id Many2one → product.pricelist
    comodel_name='product.pricelist' readonly=True states={'draft': [('readonly', False)]} string='Pricelist'
  • total_revenue Float
    compute='_compute_deliverable_total' store=True string='Total Deliverable'
Public methods (9)
  • copy(self, default=None)
  • get_portal_confirmation_action(self)
  • get_total_by_section(self)
  • map_deliverable(self, new_br_id)
    copy and map deliverable from old to new requirement
  • message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None)
    Subscribe to all existing active deliverables when subscribing to a requirement
  • message_unsubscribe(self, partner_ids=None, channel_ids=None)
    Unsubscribe from all deliverables when unsubscribing from a requirement
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    Update the following fields when the partner is changed: - Pricelist
  • open_deliverable_line(self)
  • partner_id_change(self)
    @api.onchange('partner_id')

New fields (17)
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' ondelete='cascade' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=False related='business_requirement_id.partner_id' store=True string='Stakeholder'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' readonly=True string='Currency'
  • dependency_ids Many2many → business.requirement.deliverable
    column1='parent_id' column2='dependency_id' comodel_name='business.requirement.deliverable' relation='business_requirement_deliverable_dependency_rel' string='Dependencies'
  • name Text
    required=True args: 'Name'
  • portal_published Boolean
    default=True args: 'In Portal'
  • price_total Float
    compute='_compute_price_total' readonly=True store=True string='Total Deliverable'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • proposed_solution Html
  • qty Float
    default=1 store=True string='Quantity'
  • sale_price_unit Float
    string='Sales Price'
  • section_id Many2one → business.requirement.deliverable.section
    comodel_name='business.requirement.deliverable.section' string='Section'
  • sequence Integer
    args: 'Sequence'
  • state Selection
    related='business_requirement_id.state' store=True
  • state Selection
    related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → uom.uom
    comodel_name='uom.uom' default=<expr> required=True string='UoM'
  • user_case Html
Public methods (4)
  • name_get(self)
  • portal_publish_button(self)
  • product_id_change(self)
    @api.onchange('product_id')
  • product_uom_change(self)
    @api.onchange('product_id', 'uom_id', 'qty')

New fields (2)
  • name Char
    required=True args: 'Name'
  • sequence Integer
    default=10 string='Sequence'
Public methods (0)

No public methods.

New fields (1)
  • property_product_estimation_pricelist Many2one → product.pricelist
    comodel_name='product.pricelist' company_dependent=True help='Pricelist used for the estimation of the Business Requirements\n Deliverables linked to this Customer.\n Currency of the Deliverables will be the one from the pricelist.' string='Estimation Pricelist'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/business-requirement
GIT
GIThttps://github.com/OCA/business-requirement.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/business-requirement/tree/12.0/business_requirement_deliverable
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYBusiness Requirements Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Elico Corp
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Elico Corp
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Alexandre Díaz, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Victor M.M. Torres
WEBSITE
WEBSITEhttps://github.com/OCA/business-requirement
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/business-requirement:
    - business_requirement
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
assets_frontend_inherit_brd BRD frontend assets ir.ui.view qweb Inherits web.assets_frontend
brd_section_tree business.requirement.deliverable.section tree New
layout_br_report_body layout_br_report_body ir.ui.view qweb Inherits business_requirement.layout_br_report
portal_br_page portal_br_page ir.ui.view qweb Inherits business_requirement.portal_br_page
portal_my_brd My Business Requirement Deriverable ir.ui.view qweb New
portal_my_brd_list My Business Requirement Deliverable ir.ui.view qweb New
portal_my_home_br Portal My Home : business requirements entries ir.ui.view qweb Inherits business_requirement.portal_my_home_br
portal_my_home_menu_brd Portal layout : business requirement deliverable menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
view_business_requirement_deliverable_form business.requirement.deliverable.form business.requirement.deliverable form New
view_business_requirement_deliverable_graph business.requirement.deliverable.graph business.requirement.deliverable graph New
view_business_requirement_deliverable_kanban business.requirement.deliverable.kanban business.requirement.deliverable kanban New
view_business_requirement_deliverable_pivot business.requirement.deliverable.pivot business.requirement.deliverable pivot New
view_business_requirement_deliverable_search business.requirement.deliverable.search business.requirement.deliverable search New
view_business_requirement_deliverable_tree business.requirement.deliverable.tree business.requirement.deliverable tree New
view_business_requirement_form business.requirement.form business.requirement xpath Inherits business_requirement.view_business_requirement_form
view_business_requirement_search business.requirement.search business.requirement xpath Inherits business_requirement.view_business_requirement_search
view_business_requirement_tree business.requirement.tree business.requirement xpath Inherits business_requirement.view_business_requirement_tree
view_partner_property_form res.partner.product.property.form.inherit res.partner xpath Inherits product.view_partner_property_form
Models touched (4)

New fields (6)
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' readonly=True string='Currency'
  • deliverable_lines One2many → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Deliverable Lines'
  • dl_count Integer
    compute='_compute_dl_count' args: 'DL Count'
  • dl_total_revenue Float
    compute='_compute_dl_total_revenue' digit=dp.get_precision('Account') string='DL Total Revenue'
  • pricelist_id Many2one → product.pricelist
    comodel_name='product.pricelist' readonly=True states={'draft': [('readonly', False)]} string='Pricelist'
  • total_revenue Float
    compute='_compute_deliverable_total' store=True string='Total Deliverable'
Public methods (9)
  • copy(self, default=None)
    @api.multi
  • get_portal_confirmation_action(self)
  • get_total_by_section(self)
  • map_deliverable(self, new_br_id)
    @api.multi
    copy and map deliverable from old to new requirement
  • message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None)
    @api.multi
    Subscribe to all existing active deliverables when subscribing to a requirement
  • message_unsubscribe(self, partner_ids=None, channel_ids=None)
    @api.multi
    Unsubscribe from all deliverables when unsubscribing from a requirement
  • onchange_partner_id(self)
    @api.multi@api.onchange('partner_id')
    Update the following fields when the partner is changed: - Pricelist
  • open_deliverable_line(self)
    @api.multi
  • partner_id_change(self)
    @api.multi@api.onchange('partner_id')

New fields (17)
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' ondelete='cascade' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=False related='business_requirement_id.partner_id' store=True string='Stakeholder'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' readonly=True string='Currency'
  • dependency_ids Many2many → business.requirement.deliverable
    column1='parent_id' column2='dependency_id' comodel_name='business.requirement.deliverable' relation='business_requirement_deliverable_dependency_rel' string='Dependencies'
  • name Text
    required=True args: 'Name'
  • portal_published Boolean
    default=True args: 'In Portal'
  • price_total Float
    compute='_compute_price_total' readonly=True store=True string='Total Deliverable'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • proposed_solution Html
  • qty Float
    default=1 store=True string='Quantity'
  • sale_price_unit Float
    oldname='unit_price' string='Sales Price'
  • section_id Many2one → business.requirement.deliverable.section
    comodel_name='business.requirement.deliverable.section' oldname='business_requirement_deliverable_section_id' string='Section'
  • sequence Integer
    args: 'Sequence'
  • state Selection
    related='business_requirement_id.state' store=True
  • state Selection
    related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → uom.uom
    comodel_name='uom.uom' default=<expr> required=True string='UoM'
  • user_case Html
Public methods (4)
  • name_get(self)
  • portal_publish_button(self)
    @api.multi
  • product_id_change(self)
    @api.onchange('product_id')
  • product_uom_change(self)
    @api.onchange('product_id', 'uom_id', 'qty')

New fields (2)
  • name Char
    required=True args: 'Name'
  • sequence Integer
    default=10 string='Sequence'
Public methods (0)

No public methods.

New fields (1)
  • property_product_estimation_pricelist Many2one → product.pricelist
    comodel_name='product.pricelist' company_dependent=True help='Pricelist used for the estimation of the Business Requirements\n Deliverables linked to this Customer.\n Currency of the Deliverables will be the one from the pricelist.' string='Estimation Pricelist'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/business-requirement
GIT
GIThttps://github.com/OCA/business-requirement.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/business-requirement/tree/11.0/business_requirement_deliverable
VERSION
VERSION 1.3.1
CATEGORY
CATEGORYBusiness Requirements Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Elico Corp
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Elico Corp
COMMITTERS
COMMITTERSPedro M. Baeza, Alexandre Díaz, OCA Transbot, oca-travis, OCA-git-bot, Victor Martin
WEBSITE
WEBSITEhttps://github.com/OCA/business-requirement
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/business-requirement:
    - business_requirement
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
assets_frontend_inherit_brd BRD frontend assets ir.ui.view qweb Inherits web.assets_frontend
brd_section_tree business.requirement.deliverable.section tree New
layout_br_report_body layout_br_report_body ir.ui.view qweb Inherits business_requirement.layout_br_report
portal_br_page Business Requirement Deliverable ir.ui.view qweb Inherits business_requirement.portal_br_page
portal_my_brd My Business Requirement Deriverable ir.ui.view qweb New
portal_my_brd_list My Business Requirement Deliverable ir.ui.view qweb New
portal_my_home_menu_brd Portal layout : business requirement deliverable menu entries ir.ui.view qweb Inherits portal.portal_layout
view_business_requirement_deliverable_form business.requirement.deliverable.form business.requirement.deliverable form New
view_business_requirement_deliverable_graph business.requirement.deliverable.graph business.requirement.deliverable graph New
view_business_requirement_deliverable_pivot Business requirement Deliverable business.requirement.deliverable pivot New
view_business_requirement_deliverable_search business.requirement.deliverable.search business.requirement.deliverable search New
view_business_requirement_deliverable_tree business.requirement.deliverable.tree business.requirement.deliverable tree New
view_business_requirement_form business.requirement.form business.requirement xpath Inherits business_requirement.view_business_requirement_form
view_business_requirement_search business.requirement.search business.requirement xpath Inherits business_requirement.view_business_requirement_search
view_business_requirement_tree business.requirement.tree business.requirement xpath Inherits business_requirement.view_business_requirement_tree
view_partner_property_form res.partner.product.property.form.inherit res.partner xpath Inherits product.view_partner_property_form
Models touched (4)

New fields (6)
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' readonly=True string='Currency'
  • deliverable_lines One2many → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Deliverable Lines'
  • dl_count Integer
    compute='_compute_dl_count' args: 'DL Count'
  • dl_total_revenue Float
    compute='_compute_dl_total_revenue' digit=dp.get_precision('Account') string='DL Total Revenue'
  • pricelist_id Many2one → product.pricelist
    comodel_name='product.pricelist' readonly=True states={'draft': [('readonly', False)]} string='Pricelist'
  • total_revenue Float
    compute='_compute_deliverable_total' store=True string='Total Deliverable'
Public methods (9)
  • copy(self, default=None)
    @api.multi
  • get_portal_confirmation_action(self)
  • get_total_by_section(self)
  • map_deliverable(self, new_br_id)
    @api.multi
    copy and map deliverable from old to new requirement
  • message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None, force=True)
    @api.multi
    Subscribe to all existing active deliverables when subscribing to a requirement
  • message_unsubscribe(self, partner_ids=None, channel_ids=None)
    @api.multi
    Unsubscribe from all deliverables when unsubscribing from a requirement
  • onchange_partner_id(self)
    @api.multi@api.onchange('partner_id')
    Update the following fields when the partner is changed: - Pricelist
  • open_deliverable_line(self)
    @api.multi
  • partner_id_change(self)
    @api.multi@api.onchange('partner_id')

New fields (17)
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' ondelete='cascade' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' related='business_requirement_id.partner_id' store=True string='Stakeholder'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' readonly=True string='Currency'
  • dependency_ids Many2many → business.requirement.deliverable
    column1='parent_id' column2='dependency_id' comodel_name='business.requirement.deliverable' relation='business_requirement_deliverable_dependency_rel' string='Dependencies'
  • name Text
    required=True args: 'Name'
  • portal_published Boolean
    default=True args: 'In Portal'
  • price_total Float
    compute='_compute_price_total' readonly=True store=True string='Total Deliverable' track_visibility='onchange'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • proposed_solution Html
  • qty Float
    default=1 store=True string='Quantity'
  • sale_price_unit Float
    oldname='unit_price' string='Sales Price'
  • section_id Many2one → business.requirement.deliverable.section
    comodel_name='business.requirement.deliverable.section' oldname='business_requirement_deliverable_section_id' string='Section'
  • sequence Integer
    args: 'Sequence'
  • state Selection
    readonly=True related='business_requirement_id.state' selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')] store=True
  • state Selection
    readonly=True related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → product.uom
    comodel_name='product.uom' default=<expr> required=True string='UoM'
  • user_case Html
Public methods (4)
  • name_get(self)
  • portal_publish_button(self)
    @api.multi
  • product_id_change(self)
    @api.multi@api.onchange('product_id')
  • product_uom_change(self)
    @api.onchange('uom_id', 'qty')

New fields (1)
  • name Char
    required=True args: 'Name'
Public methods (0)

No public methods.

New fields (1)
  • property_product_estimation_pricelist Many2one → product.pricelist
    comodel_name='product.pricelist' company_dependent=True help='Pricelist used for the estimation of the Business Requirements\n Deliverables linked to this Customer.\n Currency of the Deliverables will be the one from the pricelist.' string='Estimation Pricelist'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/business-requirement
GIT
GIThttps://github.com/OCA/business-requirement.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/business-requirement/tree/10.0/business_requirement_deliverable
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYBusiness Requirements Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Elico Corp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Elico Corp
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, Eric @ Elico Corp, elicoidal
WEBSITE
WEBSITEhttps://www.elico-corp.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:04
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/business-requirement:
    - business_requirement
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
    - project
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
br_deliverable_report br_deliverable_report ir.ui.view qweb New
br_deliverable_resource_report br_deliverable_resource_report ir.ui.view qweb New
view_business_requirement_deliverable_form business.requirement.deliverable.form business.requirement.deliverable form New
view_business_requirement_deliverable_graph business.requirement.deliverable.graph business.requirement.deliverable graph New
view_business_requirement_deliverable_pivot Business requirement Deliverable business.requirement.deliverable pivot New
view_business_requirement_deliverable_search business.requirement.deliverable.search business.requirement.deliverable search New
view_business_requirement_deliverable_tree business.requirement.deliverable.tree business.requirement.deliverable tree New
view_business_requirement_form business.requirement.form business.requirement xpath Inherits business_requirement.view_business_requirement_form
view_business_requirement_resource_graph business.requirement.resource.pivot business.requirement.resource graph New
view_business_requirement_resource_pivot Business requirement Resource business.requirement.resource pivot New
view_business_requirement_resource_search business.requirement.resource.search business.requirement.resource search New
view_business_requirement_resource_tree business.requirement.resource.tree business.requirement.resource tree New
view_business_requirement_search business.requirement.search business.requirement xpath Inherits business_requirement.view_business_requirement_search
view_business_requirement_tree business.requirement.tree business.requirement xpath Inherits business_requirement.view_business_requirement_tree
view_deliverable_graph Deliverable Report business.requirement.deliverable.report graph New
view_deliverable_sale_graph Deliverable Sale Report business.requirement.deliverable.sale.report graph New
view_partner_property_form res.partner.product.property.form.inherit res.partner xpath Inherits product.view_partner_property_form
Models touched (6)

New fields (8)
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_get_currency' readonly=True string='Currency'
  • deliverable_lines One2many → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Deliverable Lines'
  • dl_count Integer
    compute='_compute_dl_count' args: 'DL Count'
  • dl_total_revenue Float
    compute='_compute_dl_total_revenue' digit=dp.get_precision('Account') string='DL Total Revenue'
  • pricelist_id Many2one → product.pricelist
    comodel_name='product.pricelist' readonly=True states={'draft': [('readonly', False)]} string='Pricelist'
  • resource_lines One2many → business.requirement.resource
    comodel_name='business.requirement.resource' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Resource Lines'
  • rl_count Integer
    compute='_compute_rl_count' args: 'RL Count'
  • total_revenue Float
    compute='_compute_deliverable_total' store=True string='Total Deliverable'
Public methods (4)
  • onchange_partner_id(self)
    @api.multi@api.onchange('partner_id')
    Update the following fields when the partner is changed: - Pricelist
  • open_deliverable_line(self)
    @api.multi
  • open_resource_line(self)
    @api.multi
  • partner_id_change(self)
    @api.multi@api.onchange('partner_id')

New fields (14)
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' ondelete='cascade' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' related='business_requirement_id.partner_id' store=True string='Stakeholder'
  • business_requirement_project_id Many2one → project.project
    comodel_name='project.project' related='business_requirement_id.project_id' store=True string='Project'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_get_currency' readonly=True string='Currency'
  • name Text
    required=True args: 'Name'
  • price_total Float
    compute='_compute_get_price_total' readonly=True store=True string='Total Deliverable'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • qty Float
    default=1 store=True string='Quantity'
  • resource_ids One2many → business.requirement.resource
    comodel_name='business.requirement.resource' copy=True inverse_name='business_requirement_deliverable_id' string='Business Requirement Resource'
  • sale_price_unit Float
    oldname='unit_price' string='Sales Price'
  • sequence Integer
    args: 'Sequence'
  • state Selection
    related='business_requirement_id.state' selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('stakeholder_approval', 'Stakeholder Approval'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')] store=True
  • state Selection
    readonly=True related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → product.uom
    comodel_name='product.uom' default=<expr> required=True string='UoM'
Public methods (3)
  • business_requirement_id_change(self)
    @api.multi@api.onchange('business_requirement_id')
  • product_id_change(self)
    @api.multi@api.onchange('product_id')
  • product_uom_change(self)
    @api.onchange('uom_id', 'qty')

New fields (15)
  • br_count Integer
    readonly=True args: 'BR Count'
  • change_request Boolean
    readonly=True args: 'Change Request?'
  • description Char
    readonly=True args: 'Description'
  • dlv_count Integer
    readonly=True args: 'Deliverable Count'
  • dlv_description Text
    readonly=True args: 'Deliverable Description'
  • dlv_product Many2one → product.product
    readonly=True args: 'product.product', 'Dlv Product'
  • dlv_qty Float
    readonly=True args: 'Deliverable Qty'
  • name Char
    readonly=True args: 'Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Customer'
  • priority Selection
    readonly=True args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
  • project_id Many2one → project.project
    readonly=True args: 'project.project', 'Master Project'
  • res_count Integer
    readonly=True args: 'Resource Count'
  • res_description Text
    readonly=True args: 'Resource Description'
  • res_product Many2one → product.product
    readonly=True args: 'product.product', 'Res Product'
  • res_qty Float
    readonly=True args: 'Resource Qty'
Public methods (1)
  • init(self)
    @api.model_cr

New fields (17)
  • br_count Integer
    readonly=True args: 'BR Count'
  • change_request Boolean
    readonly=True args: 'Change Request?'
  • description Char
    readonly=True args: 'Description'
  • dlv_count Integer
    readonly=True args: 'Deliverable Count'
  • dlv_description Text
    readonly=True args: 'Deliverable Description'
  • dlv_product Many2one → product.product
    readonly=True args: 'product.product', 'Dlv Product'
  • dlv_qty Float
    readonly=True args: 'Deliverable Qty'
  • name Char
    readonly=True args: 'Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Customer'
  • priority Selection
    readonly=True args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
  • project_id Many2one → project.project
    readonly=True args: 'project.project', 'Master Project'
  • res_count Integer
    readonly=True args: 'Resource Count'
  • res_description Text
    readonly=True args: 'Resource Description'
  • res_product Many2one → product.product
    readonly=True args: 'product.product', 'Res Product'
  • res_qty Float
    readonly=True args: 'Resource Qty'
  • sale_price Float
    readonly=True args: 'Sale Price'
  • total_revenue Float
    readonly=True args: 'Total Revenue'
Public methods (1)
  • init(self)
    @api.model_cr

New fields (13)
  • business_requirement_deliverable_id Many2one → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' ondelete='cascade' string='Business Requirement Deliverable'
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' related='business_requirement_id.partner_id' store=True string='Stakeholder'
  • business_requirement_project_id Many2one → project.project
    comodel_name='project.project' related='business_requirement_id.project_id' store=True string='Project'
  • name Char
    required=True args: 'Name'
  • product_id Many2one → product.product
    comodel_name='product.product' required=False string='Product'
  • qty Float
    default=1 string='Quantity'
  • resource_type Selection
    default='task' required=True selection=[('task', 'Task'), ('procurement', 'Procurement')] string='Type'
  • sequence Integer
    args: 'Sequence'
  • state Selection
    related='business_requirement_id.state' selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('stakeholder_approval', 'Stakeholder Approval'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')] store=True
  • state Selection
    readonly=True related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → product.uom
    comodel_name='product.uom' required=True string='UoM'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='set null' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)], 'approved': [('readonly', False)], 'stakeholder_approval': [('readonly', False)]} string='Assign To'
Public methods (3)
  • product_id_change(self)
    @api.multi@api.onchange('product_id')
  • resource_type_change(self)
    @api.onchange('resource_type')
  • write(self, vals)
    @api.multi

New fields (1)
  • property_product_estimation_pricelist Many2one → product.pricelist
    comodel_name='product.pricelist' company_dependent=True help='Pricelist used for the estimation of the Business Requirements\n Deliverables linked to this Customer.\n Currency of the Deliverables will be the one from the pricelist.' string='Estimation Pricelist'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/business-requirement
GIT
GIThttps://github.com/OCA/business-requirement.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/business-requirement/tree/9.0/business_requirement_deliverable
VERSION
VERSION 5.0.1
CATEGORY
CATEGORYBusiness Requirements Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Elico Corp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Elico Corp
COMMITTERS
COMMITTERSelicoidal
WEBSITE
WEBSITEhttps://www.elico-corp.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/business-requirement:
    - business_requirement
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - report
    - analytic
    - web_tip
    - web_planner
    - project
    - portal
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
view_business_requirement_deliverable_form business.requirement.deliverable.form business.requirement.deliverable form New
view_business_requirement_deliverable_pivot business.requirement.deliverable.pivot business.requirement.deliverable graph New
view_business_requirement_deliverable_search business.requirement.deliverable.search business.requirement.deliverable search New
view_business_requirement_deliverable_tree business.requirement.deliverable.tree business.requirement.deliverable tree New
view_business_requirement_form business.requirement.form business.requirement xpath Inherits business_requirement.view_business_requirement_form
view_business_requirement_resource_pivot business.requirement.resource.pivot business.requirement.resource graph New
view_business_requirement_resource_search business.requirement.resource.search business.requirement.resource search New
view_business_requirement_resource_tree business.requirement.resource.tree business.requirement.resource tree New
view_business_requirement_search business.requirement.search business.requirement xpath Inherits business_requirement.view_business_requirement_search
view_business_requirement_tree business.requirement.tree business.requirement xpath Inherits business_requirement.view_business_requirement_tree
view_deliverable_graph Deliverable Report business.requirement.deliverable.report graph New
view_deliverable_sale_graph Deliverable Sale Report business.requirement.deliverable.sale.report graph New
view_partner_property_form res.partner.product.property.form.inherit res.partner xpath Inherits product.view_partner_property_form
Models touched (6)

New fields (7)
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_get_currency' readonly=True string='Currency'
  • deliverable_lines One2many → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Deliverable Lines'
  • dl_count Integer
    compute='_compute_dl_count' args: 'DL Count'
  • dl_total_revenue Float
    compute='_compute_dl_total_revenue' args: 'DL Total Revenue'
  • resource_lines One2many → business.requirement.resource
    comodel_name='business.requirement.resource' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Resource Lines'
  • rl_count Integer
    compute='_compute_rl_count' args: 'RL Count'
  • total_revenue Float
    compute='_compute_deliverable_total' store=True string='Total Revenue'
Public methods (3)
  • open_deliverable_line(self)
    @api.multi
  • open_resource_line(self)
    @api.multi
  • partner_id_change(self)
    @api.multi@api.onchange('partner_id')

New fields (14)
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' ondelete='cascade' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' related='business_requirement_id.partner_id' store=True string='Business Requirement'
  • business_requirement_project_id Many2one → project.project
    comodel_name='project.project' related='business_requirement_id.project_id' store=True string='Business Requirement'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_get_currency' readonly=True string='Currency'
  • name Text
    required=True args: 'Name'
  • price_total Float
    compute='_compute_get_price_total' store=True string='Total revenue'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • qty Float
    default=1 store=True string='Quantity'
  • resource_ids One2many → business.requirement.resource
    comodel_name='business.requirement.resource' copy=True inverse_name='business_requirement_deliverable_id' string='Business Requirement Resource'
  • sale_price_unit Float
    oldname='unit_price' string='Sales Price'
  • sequence Integer
    args: 'Sequence'
  • state Selection
    related='business_requirement_id.state' selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('stakeholder_approval', 'Stakeholder Approval'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')] store=True
  • state Selection
    readonly=True related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → product.uom
    comodel_name='product.uom' default=<expr> required=True string='UoM'
Public methods (3)
  • business_requirement_id_change(self)
    @api.multi@api.onchange('business_requirement_id')
  • product_id_change(self)
    @api.multi@api.onchange('product_id')
  • product_uom_change(self)
    @api.onchange('uom_id', 'qty')

New fields (15)
  • br_count Integer
    readonly=True args: 'BR Count'
  • change_request Boolean
    readonly=True args: 'Change Request?'
  • description Char
    readonly=True args: 'Description'
  • dlv_count Integer
    readonly=True args: 'Deliverable Count'
  • dlv_description Text
    readonly=True args: 'Deliverable Description'
  • dlv_product Many2one → product.product
    readonly=True args: 'product.product', 'Dlv Product'
  • dlv_qty Float
    readonly=True args: 'Deliverable Qty'
  • name Char
    readonly=True args: 'Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Customer'
  • priority Selection
    readonly=True args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
  • project_id Many2one → project.project
    readonly=True args: 'project.project', 'Master Project'
  • res_count Integer
    readonly=True args: 'Resource Count'
  • res_description Text
    readonly=True args: 'Resource Description'
  • res_product Many2one → product.product
    readonly=True args: 'product.product', 'Res Product'
  • res_qty Float
    readonly=True args: 'Resource Qty'
Public methods (1)
  • init(self, cr)

New fields (17)
  • br_count Integer
    readonly=True args: 'BR Count'
  • change_request Boolean
    readonly=True args: 'Change Request?'
  • description Char
    readonly=True args: 'Description'
  • dlv_count Integer
    readonly=True args: 'Deliverable Count'
  • dlv_description Text
    readonly=True args: 'Deliverable Description'
  • dlv_product Many2one → product.product
    readonly=True args: 'product.product', 'Dlv Product'
  • dlv_qty Float
    readonly=True args: 'Deliverable Qty'
  • name Char
    readonly=True args: 'Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Customer'
  • priority Selection
    readonly=True args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
  • project_id Many2one → project.project
    readonly=True args: 'project.project', 'Master Project'
  • res_count Integer
    readonly=True args: 'Resource Count'
  • res_description Text
    readonly=True args: 'Resource Description'
  • res_product Many2one → product.product
    readonly=True args: 'product.product', 'Res Product'
  • res_qty Float
    readonly=True args: 'Resource Qty'
  • sale_price Float
    readonly=True args: 'Sale Price'
  • total_revenue Float
    readonly=True args: 'Total Revenue'
Public methods (1)
  • init(self, cr)

New fields (13)
  • business_requirement_deliverable_id Many2one → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' ondelete='cascade' string='Business Requirement Deliverable'
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' related='business_requirement_id.partner_id' store=True string='Business Requirement'
  • business_requirement_project_id Many2one → project.project
    comodel_name='project.project' related='business_requirement_id.project_id' store=True string='Business Requirement'
  • name Char
    required=True args: 'Name'
  • product_id Many2one → product.product
    comodel_name='product.product' required=False string='Product'
  • qty Float
    default=1 string='Quantity'
  • resource_type Selection
    default='task' required=True selection=[('task', 'Task'), ('procurement', 'Procurement')] string='Type'
  • sequence Integer
    args: 'Sequence'
  • state Selection
    related='business_requirement_id.state' selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('stakeholder_approval', 'Stakeholder Approval'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')] store=True
  • state Selection
    readonly=True related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → product.uom
    comodel_name='product.uom' required=True string='UoM'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='set null' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)], 'approved': [('readonly', False)], 'stakeholder_approval': [('readonly', False)]} string='Assign To'
Public methods (3)
  • product_id_change(self)
    @api.multi@api.onchange('product_id')
  • resource_type_change(self)
    @api.onchange('resource_type')
  • write(self, vals)
    @api.multi

New fields (1)
  • property_product_estimation_pricelist Many2one → product.pricelist
    comodel_name='product.pricelist' company_dependent=True help='Pricelist used for the estimation of the Business Requirements\n Deliverables linked to this Customer.\n Currency of the Deliverables will be the one from the pricelist.' string='Estimation Pricelist'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/business-requirement
GIT
GIThttps://github.com/OCA/business-requirement.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/business-requirement/tree/8.0/business_requirement_deliverable
VERSION
VERSION 5.0.1
CATEGORY
CATEGORYBusiness Requirements Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Elico Corp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Elico Corp
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Andrea, Stéphane Bidoul (ACSONE), OCA Transbot, darshan-serpent, oca-travis, Weblate, Sudhir Arya, Eric @ Elico Corp, victor
WEBSITE
WEBSITEhttps://www.elico-corp.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/business-requirement:
    - business_requirement
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
    - project
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
view_business_requirement_deliverable_form business.requirement.deliverable.form business.requirement.deliverable form New
view_business_requirement_deliverable_pivot business.requirement.deliverable.pivot business.requirement.deliverable graph New
view_business_requirement_deliverable_search business.requirement.deliverable.search business.requirement.deliverable search New
view_business_requirement_deliverable_tree business.requirement.deliverable.tree business.requirement.deliverable tree New
view_business_requirement_form business.requirement.form business.requirement xpath Inherits business_requirement.view_business_requirement_form
view_business_requirement_resource_pivot business.requirement.resource.pivot business.requirement.resource graph New
view_business_requirement_resource_search business.requirement.resource.search business.requirement.resource search New
view_business_requirement_resource_tree business.requirement.resource.tree business.requirement.resource tree New
view_business_requirement_search business.requirement.search business.requirement xpath Inherits business_requirement.view_business_requirement_search
view_business_requirement_tree business.requirement.tree business.requirement xpath Inherits business_requirement.view_business_requirement_tree
view_deliverable_graph Deliverable Report business.requirement.deliverable.report graph New
view_deliverable_sale_graph Deliverable Sale Report business.requirement.deliverable.sale.report graph New
view_partner_property_form res.partner.product.property.form.inherit res.partner xpath Inherits product.view_partner_property_form
Models touched (6)

New fields (7)
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_get_currency' readonly=True string='Currency'
  • deliverable_lines One2many → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Deliverable Lines'
  • dl_count Integer
    compute='_compute_dl_count' args: 'DL Count'
  • dl_total_revenue Float
    compute='_compute_dl_total_revenue' args: 'DL Total Revenue'
  • resource_lines One2many → business.requirement.resource
    comodel_name='business.requirement.resource' copy=True inverse_name='business_requirement_id' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]} string='Resource Lines'
  • rl_count Integer
    compute='_compute_rl_count' args: 'RL Count'
  • total_revenue Float
    compute='_compute_deliverable_total' store=True string='Total Revenue'
Public methods (3)
  • open_deliverable_line(self)
    @api.multi
  • open_resource_line(self)
    @api.multi
  • partner_id_change(self)
    @api.multi@api.onchange('partner_id')

New fields (14)
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' ondelete='cascade' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' related='business_requirement_id.partner_id' store=True string='Business Requirement'
  • business_requirement_project_id Many2one → project.project
    comodel_name='project.project' related='business_requirement_id.project_id' store=True string='Business Requirement'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_get_currency' readonly=True string='Currency'
  • name Text
    required=True args: 'Name'
  • price_total Float
    compute='_compute_get_price_total' store=True string='Total revenue'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • qty Float
    default=1 store=True string='Quantity'
  • resource_ids One2many → business.requirement.resource
    comodel_name='business.requirement.resource' copy=True inverse_name='business_requirement_deliverable_id' string='Business Requirement Resource'
  • sale_price_unit Float
    oldname='unit_price' string='Sales Price'
  • sequence Integer
    args: 'Sequence'
  • state Selection
    related='business_requirement_id.state' selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('stakeholder_approval', 'Stakeholder Approval'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')] store=True
  • state Selection
    readonly=True related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → product.uom
    comodel_name='product.uom' default=<expr> required=True string='UoM'
Public methods (3)
  • business_requirement_id_change(self)
    @api.multi@api.onchange('business_requirement_id')
  • product_id_change(self)
    @api.multi@api.onchange('product_id')
  • product_uom_change(self)
    @api.onchange('uom_id', 'qty')

New fields (15)
  • br_count Integer
    readonly=True args: 'BR Count'
  • change_request Boolean
    readonly=True args: 'Change Request?'
  • description Char
    readonly=True args: 'Description'
  • dlv_count Integer
    readonly=True args: 'Deliverable Count'
  • dlv_description Text
    readonly=True args: 'Deliverable Description'
  • dlv_product Many2one → product.product
    readonly=True args: 'product.product', 'Dlv Product'
  • dlv_qty Float
    readonly=True args: 'Deliverable Qty'
  • name Char
    readonly=True args: 'Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Customer'
  • priority Selection
    readonly=True args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
  • project_id Many2one → project.project
    readonly=True args: 'project.project', 'Master Project'
  • res_count Integer
    readonly=True args: 'Resource Count'
  • res_description Text
    readonly=True args: 'Resource Description'
  • res_product Many2one → product.product
    readonly=True args: 'product.product', 'Res Product'
  • res_qty Float
    readonly=True args: 'Resource Qty'
Public methods (1)
  • init(self, cr)

New fields (17)
  • br_count Integer
    readonly=True args: 'BR Count'
  • change_request Boolean
    readonly=True args: 'Change Request?'
  • description Char
    readonly=True args: 'Description'
  • dlv_count Integer
    readonly=True args: 'Deliverable Count'
  • dlv_description Text
    readonly=True args: 'Deliverable Description'
  • dlv_product Many2one → product.product
    readonly=True args: 'product.product', 'Dlv Product'
  • dlv_qty Float
    readonly=True args: 'Deliverable Qty'
  • name Char
    readonly=True args: 'Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Customer'
  • priority Selection
    readonly=True args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
  • project_id Many2one → project.project
    readonly=True args: 'project.project', 'Master Project'
  • res_count Integer
    readonly=True args: 'Resource Count'
  • res_description Text
    readonly=True args: 'Resource Description'
  • res_product Many2one → product.product
    readonly=True args: 'product.product', 'Res Product'
  • res_qty Float
    readonly=True args: 'Resource Qty'
  • sale_price Float
    readonly=True args: 'Sale Price'
  • total_revenue Float
    readonly=True args: 'Total Revenue'
Public methods (1)
  • init(self, cr)

New fields (13)
  • business_requirement_deliverable_id Many2one → business.requirement.deliverable
    comodel_name='business.requirement.deliverable' ondelete='cascade' string='Business Requirement Deliverable'
  • business_requirement_id Many2one → business.requirement
    comodel_name='business.requirement' required=True string='Business Requirement'
  • business_requirement_partner_id Many2one → res.partner
    comodel_name='res.partner' related='business_requirement_id.partner_id' store=True string='Business Requirement'
  • business_requirement_project_id Many2one → project.project
    comodel_name='project.project' related='business_requirement_id.project_id' store=True string='Business Requirement'
  • name Char
    required=True args: 'Name'
  • product_id Many2one → product.product
    comodel_name='product.product' required=False string='Product'
  • qty Float
    default=1 string='Quantity'
  • resource_type Selection
    default='task' required=True selection=[('task', 'Task'), ('procurement', 'Procurement')] string='Type'
  • sequence Integer
    args: 'Sequence'
  • state Selection
    related='business_requirement_id.state' selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('stakeholder_approval', 'Stakeholder Approval'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')] store=True
  • state Selection
    readonly=True related='business_requirement_id.state' store=True string='State'
  • uom_id Many2one → product.uom
    comodel_name='product.uom' required=True string='UoM'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='set null' readonly=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)], 'approved': [('readonly', False)], 'stakeholder_approval': [('readonly', False)]} string='Assign To'
Public methods (3)
  • product_id_change(self)
    @api.multi@api.onchange('product_id')
  • resource_type_change(self)
    @api.onchange('resource_type')
  • write(self, vals)
    @api.multi

New fields (1)
  • property_product_estimation_pricelist Many2one → product.pricelist
    comodel_name='product.pricelist' company_dependent=True help='Pricelist used for the estimation of the Business Requirements\n Deliverables linked to this Customer.\n Currency of the Deliverables will be the one from the pricelist.' string='Estimation Pricelist'
Public methods (0)

No public methods.