TIP: You can type at any time to perform a new search.

Security findings

Repository
OCA/purchase-workflow · module folder · Try on Runboat
Module version
1.0.2
Category
Purchase
Folder size
0.48 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/purchase-workflow
Last tracking update
2026-08-07 08:42:59
Authors
Odoo Community Association (OCA), ForgeFlow
Maintainers
Odoo Community Association (OCA), ForgeFlow
Committers
JordiMForgeFlow, Weblate, OCA-git-bot, oca-ci, Fernando, Ugne Sinkeviciene
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
l10n_br_purchase_blanket_order
Description
A purchase blanket order is a pre-agreement to purchase a certain number
of quantities of products at a specific price. From a confirmed blanket
order, the users can create new purchase orders at such price, until the
blanket order expires due to reaching the validity date.

Code Analysis info_outline

Views touched (12)
XML IDNameModelTypeStatus
purchase_blanket_order_line_form purchase.blanket.order.line.form purchase.blanket.order.line form New
purchase_blanket_order_line_search purchase.blanket.order.line.search purchase.blanket.order.line search New
purchase_blanket_order_line_tree purchase.blanket.order.line.tree purchase.blanket.order.line list New
purchase_config_settings_form_view res.config.settings.form (in purchase_blanket_order) res.config.settings form Inherits purchase.res_config_settings_view_form_purchase
purchase_order_form purchase.order.from.blanket.form purchase.order form Inherits purchase.purchase_order_form
purchase_order_form_disable_adding_lines purchase.order.from.blanket.form - disable adding lines purchase.order form Inherits purchase.purchase_order_form
report_blanketorder report_blanketorder ir.ui.view qweb New
report_blanketorder_document report_blanketorder_document ir.ui.view qweb New
view_create_purchase_order Create Purchase Order purchase.blanket.order.wizard form New
view_purchase_blanket_order_form purchase.blanket.order.form purchase.blanket.order form New
view_purchase_blanket_order_search purchase.blanket.order.search purchase.blanket.order search New
view_purchase_blanket_order_tree purchase.blanket.order.tree purchase.blanket.order list New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (7)

New fields (26)
  • amount_tax Monetary
    compute='_compute_amount_all' readonly=True store=True string='Taxes'
  • amount_total Monetary
    compute='_compute_amount_all' readonly=True store=True string='Total'
  • amount_untaxed Monetary
    compute='_compute_amount_all' readonly=True store=True string='Untaxed Amount' tracking=True
  • cancelled Boolean
    copy=False
  • company_id Many2one → res.company
    default=<expr> readonly=True string='Company' args: 'res.company'
  • confirmed Boolean
    copy=False
  • currency_id Many2one → res.currency
    default=<expr> required=True args: 'res.currency'
  • date_start Datetime
    default=fields.Datetime.now help='Blanket Order starting date.' readonly=True required=True string='Start Date'
  • fiscal_position_id Many2one → account.fiscal.position
    string='Fiscal Position' args: 'account.fiscal.position'
  • invoiced_uom_qty Float
    compute='_compute_uom_qty' search='_search_invoiced_uom_qty' string='Invoiced quantity'
  • line_count Integer
    compute='_compute_line_count' readonly=True string='Purchase Blanket Order Line count'
  • line_ids One2many → purchase.blanket.order.line
    copy=True string='Order lines' tracking=True args: 'purchase.blanket.order.line', 'order_id'
  • name Char
    default='Draft' readonly=True
  • note Text
    readonly=True
  • ordered_uom_qty Float
    compute='_compute_uom_qty' search='_search_ordered_uom_qty' string='Ordered quantity'
  • original_uom_qty Float
    compute='_compute_uom_qty' search='_search_original_uom_qty' string='Original quantity'
  • partner_id Many2one → res.partner
    readonly=True string='Vendor' tracking=True args: 'res.partner'
  • partner_ref Char
    copy=False string='Vendor Reference'
  • payment_term_id Many2one → account.payment.term
    readonly=True string='Payment Terms' args: 'account.payment.term'
  • product_id Many2one → product.product
    related='line_ids.product_id' string='Product' args: 'product.product'
  • purchase_count Integer
    compute='_compute_purchase_count'
  • received_uom_qty Float
    compute='_compute_uom_qty' search='_search_received_uom_qty' string='Received quantity'
  • remaining_uom_qty Float
    compute='_compute_uom_qty' search='_search_remaining_uom_qty' string='Remaining quantity'
  • state Selection
    compute='_compute_state' copy=False selection=[('draft', 'Draft'), ('open', 'Open'), ('done', 'Done'), ('expired', 'Expired')] store=True tracking=True
  • user_id Many2one → res.users
    default=<expr> readonly=True string='Responsible' args: 'res.users'
  • validity_date Date
    help='Date until which the blanket order will be valid, after this date the blanket order will be marked as expired' readonly=True tracking=True
Public methods (10)
  • action_cancel(self)
  • action_confirm(self)
  • action_view_purchase_blanket_order_line(self)
  • action_view_purchase_orders(self)
  • compute_warnings(self)
    @api.model
    Base function to create activity warnings
  • copy_data(self, default=None)
  • expire_orders(self)
    @api.model
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    Update the following fields when the partner is changed: - Payment term
  • set_to_draft(self)
  • unlink(self)

New fields (23)
  • company_id Many2one → res.company
    readonly=True related='order_id.company_id' store=True args: 'res.company'
  • currency_id Many2one → res.currency
    readonly=True related='order_id.currency_id' args: 'res.currency'
  • date_schedule Date
    string='Scheduled Date'
  • invoiced_uom_qty Float
    compute='_compute_quantities' digits='Product Unit of Measure' store=True string='Invoiced quantity'
  • name Char
    string='Description' tracking=True
  • order_id Many2one → purchase.blanket.order
    ondelete='cascade' required=True args: 'purchase.blanket.order'
  • ordered_uom_qty Float
    compute='_compute_quantities' digits='Product Unit of Measure' store=True string='Ordered quantity'
  • original_uom_qty Float
    default=1.0 digits='Product Unit of Measure' required=True string='Original quantity'
  • partner_id Many2one
    readonly=True related='order_id.partner_id' string='Vendor'
  • payment_term_id Many2one
    readonly=True related='order_id.payment_term_id' string='Payment Terms'
  • price_subtotal Monetary
    compute='_compute_amount' store=True string='Subtotal'
  • price_tax Float
    compute='_compute_amount' store=True string='Tax'
  • price_total Monetary
    compute='_compute_amount' store=True string='Total'
  • price_unit Float
    digits='Product Price' required=True string='Price'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_uom Many2one → uom.uom
    compute='_compute_product_uom' precompute=True readonly=False required=True store=True string='Unit of Measure' args: 'uom.uom'
  • purchase_lines One2many → purchase.order.line
    comodel_name='purchase.order.line' copy=False inverse_name='blanket_order_line' readonly=True string='Purchase Order Lines'
  • received_uom_qty Float
    compute='_compute_quantities' digits='Product Unit of Measure' store=True string='Received quantity'
  • remaining_qty Float
    compute='_compute_quantities' digits='Product Unit of Measure' store=True string='Remaining quantity in base UoM'
  • remaining_uom_qty Float
    compute='_compute_quantities' digits='Product Unit of Measure' store=True string='Remaining quantity'
  • sequence Integer
  • taxes_id Many2many → account.tax
    domain=['|', ('active', '=', False), ('active', '=', True)] string='Taxes' args: 'account.tax'
  • user_id Many2one
    readonly=True related='order_id.user_id' string='Responsible'
Public methods (1)
  • onchange_product(self)
    @api.onchange('product_id', 'original_uom_qty')

New fields (3)
  • blanket_order_id Many2one → purchase.blanket.order
    default=_default_order readonly=True args: 'purchase.blanket.order'
  • line_ids One2many → purchase.blanket.order.wizard.line
    default=_default_lines string='Lines' args: 'purchase.blanket.order.wizard.line', 'wizard_id'
  • purchase_order_id Many2one → purchase.order
    domain=[('state', '=', 'draft')] string='Purchase Order' args: 'purchase.order'
Public methods (1)
  • create_purchase_order(self)

New fields (11)
  • blanket_line_id Many2one → purchase.blanket.order.line
    args: 'purchase.blanket.order.line'
  • currency_id Many2one → res.currency
    related='blanket_line_id.currency_id' args: 'res.currency'
  • date_schedule Date
    readonly=True related='blanket_line_id.date_schedule'
  • partner_id Many2one → res.partner
    readonly=True related='blanket_line_id.partner_id' string='Vendor' args: 'res.partner'
  • price_unit Float
    readonly=True related='blanket_line_id.price_unit'
  • product_id Many2one → product.product
    readonly=True related='blanket_line_id.product_id' string='Product' args: 'product.product'
  • product_uom Many2one → uom.uom
    readonly=True related='blanket_line_id.product_uom' string='Unit of Measure' args: 'uom.uom'
  • qty Float
    required=True string='Quantity to Order'
  • remaining_uom_qty Float
    readonly=True related='blanket_line_id.remaining_uom_qty'
  • taxes_id Many2many → account.tax
    readonly=True related='blanket_line_id.taxes_id' args: 'account.tax'
  • wizard_id Many2one → purchase.blanket.order.wizard
    args: 'purchase.blanket.order.wizard'
Public methods (0)

No public methods.

New fields (1)
  • blanket_order_id Many2one → purchase.blanket.order
    readonly=True related='order_line.blanket_order_line.order_id' string='Origin blanket order' args: 'purchase.blanket.order'
Public methods (3)
  • button_confirm(self)
  • check_currency(self)
    @api.constrains('currency_id')
  • check_partner_id(self)
    @api.constrains('partner_id')

New fields (1)
  • blanket_order_line Many2one → purchase.blanket.order.line
    comodel_name='purchase.blanket.order.line' copy=False domain="[('product_id', '=', product_id)]"
Public methods (6)
  • check_currency(self)
    @api.constrains('currency_id')
  • check_date_planned(self)
    @api.constrains('date_planned')
  • create(self, vals_list)
    @api.model_create_multi
  • get_assigned_bo_line(self)
  • onchange_blanket_order_line(self)
    @api.onchange('blanket_order_line')
  • onchange_product_id(self)
    @api.onchange('product_id', 'partner_id')

New fields (1)
  • group_purchase_blanket_disable_adding_lines Boolean
    implied_group='purchase_blanket_order.purchase_blanket_orders_disable_adding_lines' string='Disable adding more lines to POs'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Status
Open migration PR — not merged yet for this version
CI status
checks failing
Open since
95 days ago
Last activity
68 days ago
Repository
OCA/purchase-workflow
Pull request
[19.0] [MIG] purchase_blanket_order: Migration to 19.0 (#3118)