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

Security findings

Repository
odoo/odoo · module folder
Module version
1.2
Category
Supply Chain/Purchase
Folder size
3.21 MB
License
LGPL-3
Application
No
Auto-installable
Yes
Website
None
Last tracking update
2026-10-05 00:19:49
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Christophe Matthieu, Aaron Bohy, Géry Debongnie, Jorge Pinna Puissant, Arnold Moyaux, Xavier-Do, Romeo Fragomeli, Victor Feyens, William Henrotin, Julien Mougenot, svs-odoo, Tiffany Chang (tic), Gorash, Romain Estievenart, william-andre, David (dafr), John Laterre (jol), luvi, Victor Piryns (pivi), Gauthier Wala (gawa), Dylan Kiss (dyki), Chong Wang (cwg), Paweł Fertyk, Arnaud Sibille, omra-odoo, Quentin Wolfs, mano-odoo, Harsh Shah, Stéphane Diez, kawkb, Abdo Mongy, Léo Gizard, Hesham Saleh, David Van Droogenbroeck (DROD), pkgu-odoo, Mohammad Abdulmoneim (abdu), djameltouati, Pierre Pulinckx, Michaël Mattiello, Allesio, Shrey Mehta, MaximeNoirhomme, chha-odoo, plha-odoo, Krzysztof Magusiak (krma), nape-odoo, krip-odoo, joseph, zadh-odoo, mjvi-odoo, bhna-odoo, K Theja (kthe@odoo.com), MAGREMENT, agbr-odoo, Lulu Grimalkin (lugr), sawer, Yassien Ghoniem, Lancelot Semal, hisi-odoo, Julien Launois (jula), adip-odoo, steji, Ayush Modi, Saurabh, Amr Elkhatieb, Nisarg (nipl), Robert Smith (rosm), daiduongnguyen-odoo, rugot-odoo, Nguyen Nguyen (ngtpn), Zachary (zavan), tpma-odoo, Youssef (abyo), msho-odoo, lase, Moamen(msho), Do Anh Duy, hapt-odoo, Sanket Tank(stan), Antonio Pimentel, Mathias Mathy, Karim Gamaleldin, jeanschoenlaub, claireclan, Stef Ossé, Jean Schoenlaub, pusu-odoo
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
l10n_in_purchase_stock, purchase_alternative_stock, purchase_mrp, purchase_repair, purchase_requisition_stock, sale_purchase_stock, stock_landed_costs, test_main_flows
Description

Code Analysis info_outline

Views touched (30)
XML IDNameModelTypeStatus
exception_on_picking exception_on_picking ir.ui.view qweb New
exception_on_po exception_on_po ir.ui.view qweb New
product_product_tree_view_stock product.product.stock.property.tree.inherit product.product tree Inherits purchase.product_product_purchase_tree_view
product_supplierinfo_replenishment_tree_view product.supplierinfo.replenishment.list.view product.supplierinfo list Inherits product.product_supplierinfo_tree_view
product_template_form_view_stock product.template.stock.property.form.inherit product.template form Inherits purchase.view_product_supplier_inherit
product_view_kanban_catalog_purchase_only product.view.kanban.catalog.purchase_stock product.product kanban Inherits purchase.product_view_kanban_catalog_purchase_only
product_view_search_catalog purchase.view.search.catalog.inherit.purchase_stock product.product search Inherits purchase.product_view_search_catalog
purchase_help_message_template purchase_help_message_template ir.ui.view qweb Inherits stock.help_message_template
purchase_order_line_view_form_inherit purchase.order.line.form.inherit purchase.order.line form Inherits purchase.purchase_order_line_form2
purchase_order_view_form_inherit purchase.order.form.inherit purchase.order form Inherits purchase.purchase_order_form
purchase_order_view_tree_inherit purchase.order.list.inherit purchase.order list Inherits purchase.purchase_order_view_tree
purchase_report_stock_rule purchase_report_stock_rule ir.ui.view qweb Inherits stock.report_stock_rule
purchase_report_view_search purchase.report.search.stock purchase.report search Inherits purchase.view_purchase_order_search
report_purchaseorder_document report_purchaseorder_document ir.ui.view qweb Inherits purchase.report_purchaseorder_document
report_purchasequotation_document report_purchasequotation_document ir.ui.view qweb Inherits purchase.report_purchasequotation_document
res_config_settings_view_form_purchase res.config.settings.view.form.inherit.purchase res.config.settings form Inherits purchase.res_config_settings_view_form_purchase
res_config_settings_view_form_stock res.config.settings.view.form.inherit.purchase.stock res.config.settings form Inherits stock.res_config_settings_view_form
res_partner_view_purchase_buttons_inherit res.partner.purchase.stock.form.inherit res.partner form Inherits purchase.view_partner_property_form
stock_move_purchase stock.move.form stock.move form Inherits stock.view_move_form
stock_production_lot_view_form stock.production.lot.view.form stock.lot form Inherits stock.view_production_lot_form
stock_reference_purchase_view_form stock.reference.purchase stock.reference form Inherits stock.stock_reference_form_view
vendor_delay_report_filter vendor.delay.report.search vendor.delay.report search New
vendor_delay_report_view_graph vendor.delay.report.view.graph vendor.delay.report graph New
view_picking_form purchase.stock.view.picking.form stock.picking form Inherits stock.view_picking_form
view_product_replenish_form_inherit_stock product.replenish.form.inherit.stock product.replenish form Inherits stock.view_product_replenish
view_stock_replenishment_info_stock_purchase_inherit stock.replenishment.information.purchase.stock.inherit stock.replenishment.info Inherits stock.view_stock_replenishment_info
view_stock_rule_form_stock_inherit_purchase_stock stock.rule.form.stock.inherit.purchase_stock stock.rule form Inherits stock.view_stock_rule_form
view_warehouse_inherited Stock Warehouse Inherited stock.warehouse Inherits stock.view_warehouse
view_warehouse_orderpoint_tree_editable_inherited_mrp stock.warehouse.orderpoint.list.editable.inherit.mrp stock.warehouse.orderpoint list Inherits stock.view_warehouse_orderpoint_tree_editable
warehouse_orderpoint_search_inherit stock.warehouse.orderpoint.search.inherit stock.warehouse.orderpoint search Inherits stock.stock_reorder_report_search
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (26)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • monthly_demand Float
    compute='_compute_monthly_demand'
  • purchase_order_line_ids One2many → purchase.order.line
    string='PO Lines' args: 'purchase.order.line', 'product_id'
  • suggest_estimated_price Float
    compute='_compute_suggest_estimated_price'
  • suggested_qty Integer
    compute='_compute_suggested_quantity' search='_search_suggested_quantity'
Public methods (1)
  • get_routes_actions(self)

New fields (1)
  • partner_id Many2one → res.partner
    string='Supplier' args: 'res.partner'
Public methods (2)
  • action_stock_replenishment_info(self)
  • default_get(self, fields)
    @api.model

New fields (2)
  • last_purchase_date Date
    compute='_compute_last_purchase_date' args: 'Last Purchase'
  • show_set_supplier_button Boolean
    compute='_compute_show_set_supplier_button' args: 'Show Set Supplier Button'
Public methods (1)
  • action_set_supplier(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • date_promised Datetime
    compute='_compute_date_promised' copy=False help='Date promised by the vendor for at least 1 or more products to be delivered by.' index=True readonly=False store=True args: 'Promised Date'
  • default_location_dest_id_usage Selection
    help='Technical field used to display the Drop Ship Address' readonly=True related='picking_type_id.default_location_dest_id.usage' string='Destination Location Type'
  • dest_address_id Many2one → res.partner
    compute='_compute_dest_address_id' readonly=False store=True args: 'res.partner'
  • effective_date Datetime
    compute='_compute_effective_date' copy=False help='Completion date of the last receipt order.' store=True args: 'Arrival'
  • incoming_picking_count Integer
    compute='_compute_incoming_picking_count' args: 'Incoming Shipment count'
  • is_shipped Boolean
    compute='_compute_is_shipped'
  • on_time_rate Float
    compute_sudo=False related='partner_id.on_time_rate'
  • picking_ids Many2many → stock.picking
    compute='_compute_picking_ids' copy=False store=True string='Receptions' args: 'stock.picking'
  • picking_type_id Many2one → stock.picking.type
    default=_default_picking_type domain=<expr> help='This will determine operation type of incoming shipment' index=True required=True args: 'stock.picking.type', 'Deliver To'
  • reference_ids Many2many → stock.reference
    copy=False string='References' args: 'stock.reference', 'stock_reference_purchase_rel', 'purchase_id', 'reference_id'
Public methods (8)
  • action_add_from_catalog(self)
  • action_purchase_order_suggest(self)
    Adds suggested products to PO, removing products with no suggested_qty, and collapsing existing po_lines into at most 1 orderline. Saves suggestion params (eg. number_of_days) to partner table.
  • action_view_picking(self)
  • button_approve(self, force=False)
  • button_cancel(self)
  • onchange(self, values, field_names, fields_spec)
    Override onchange to NOT update all date_promised on PO lines when date_promised on PO is updated by the change of date_promised on PO lines.
  • retrieve_dashboard(self)
    @api.model
  • write(self, vals)

New fields (10)
  • date_promised Datetime
    help='Delivery Date promised by the vendor. If the vendor delivers products after this date, their On-Time rate will be negatively impacted.' args: 'Promised Date'
  • forecasted_issue Boolean
    compute='_compute_forecasted_issue'
  • forecasted_location_id Many2one → stock.location
    help='Location used in the computation of the forecast.' args: 'stock.location', 'Forecasted Location'
  • is_storable Boolean
    related='product_id.is_storable'
  • move_dest_ids Many2many → stock.move
    args: 'stock.move', 'stock_move_created_purchase_line_rel', 'created_purchase_line_id', 'move_id', 'Downstream moves alt'
  • move_ids One2many → stock.move
    copy=False readonly=True string='Reservation' args: 'stock.move', 'purchase_line_id'
  • orderpoint_id Many2one → stock.warehouse.orderpoint
    copy=False index='btree_not_null' ondelete='set null' args: 'stock.warehouse.orderpoint', 'Orderpoint'
  • product_description_variants Char
    args: 'Custom Description'
  • propagate_cancel Boolean
    default=True args: 'Propagate cancellation'
  • qty_received_method Selection
    ondelete={'stock_moves': _ondelete_stock_moves} selection_add=[('stock_moves', 'Stock Moves')]
Public methods (4)
  • action_product_forecast_report(self)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (3)
  • days_to_arrival Float
    aggregator='avg' digits=(16, 2) readonly=True args: 'Effective Days To Arrival'
  • effective_date Datetime
    string='Effective Date'
  • picking_type_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • days_to_purchase Integer
    help='Days needed to confirm a PO, define when a PO should be validated' string='Days to Purchase'
Public methods (0)

No public methods.

New fields (3)
  • days_to_purchase Integer
    readonly=False related='company_id.days_to_purchase'
  • is_installed_sale Boolean
    string='Is the Sale Module Installed'
  • module_stock_dropshipping Boolean
    args: 'Dropshipping'
Public methods (1)
  • get_values(self)
    @api.model

New fields (7)
  • group_on Selection
    default='default' required=True string='Week Day' args: [('default', 'Expected Date'), ('1', 'Monday'), ('2', 'Tuesday'), ('3', 'Wednesday'), ('4', 'Thursday'), ('5', 'Friday'), ('6', 'Saturday'), ('7', 'Sunday')]
  • group_rfq Selection
    default='default' help='Define if RFQ should be grouped together based on expected arrival, except for dropship operations.\n On Order: Replenishment needs will be grouped together except for MTO.\n Daily: Replenishment needs will be grouped if the expected arrival is the same day\n Weekly: Replenishment needs will be grouped if the expected arrival is the same week or week day\n Always: Replenishment needs will always be grouped.' required=True string='Group RFQ' args: [('default', 'On Order'), ('day', 'Daily'), ('week', 'Weekly'), ('all', 'Always')]
  • on_time_rate Float
    compute='_compute_on_time_rate' help='Over the past x days; the number of products received on time divided by the number of ordered products.x is either the System Parameter purchase_stock.on_time_delivery_days or the default 365' args: 'On-Time Delivery Rate'
  • purchase_line_ids One2many → purchase.order.line
    string='Purchase Lines' args: 'purchase.order.line', 'partner_id'
  • suggest_based_on Char
    default='30_days'
  • suggest_days Integer
    default=7
  • suggest_percent Integer
    default=100
Public methods (1)
  • name_search(self, name='', domain=None, operator='ilike', limit=100)
    @api.model
    Returns product vendors first if highlight_supplier flag in context

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • purchase_order_count Integer
    compute='_compute_purchase_order_ids' args: 'Purchase order count'
  • purchase_order_ids Many2many → purchase.order
    compute='_compute_purchase_order_ids' readonly=True store=False string='Purchase Orders' args: 'purchase.order'
Public methods (1)
  • action_view_po(self)

New fields (2)
  • created_purchase_line_ids Many2many → purchase.order.line
    copy=False args: 'purchase.order.line', 'stock_move_created_purchase_line_rel', 'move_id', 'created_purchase_line_id', 'Created Purchase Order Lines'
  • purchase_line_id Many2one → purchase.order.line
    index='btree_not_null' ondelete='set null' readonly=True args: 'purchase.order.line', 'Purchase Order Line'
Public methods (1)
  • write(self, vals)

New fields (3)
  • days_to_arrive Datetime
    compute='_compute_effective_date' copy=False search='_search_days_to_arrive'
  • delay_pass Datetime
    compute='_compute_date_order' copy=False index=True search='_search_delay_pass'
  • purchase_id Many2one → purchase.order
    readonly=True related='move_ids.purchase_line_id.order_id' string='Purchase Orders' args: 'purchase.order'
Public methods (0)

No public methods.

New fields (1)
  • purchase_ids Many2many → purchase.order
    copy=False string='Purchases' args: 'purchase.order', 'stock_reference_purchase_rel', 'reference_id', 'purchase_id'
Public methods (0)

No public methods.

New fields (2)
  • show_vendor Boolean
    compute='_compute_show_vendor'
  • supplier_id Many2one → product.supplierinfo
    string='Vendor' args: 'product.supplierinfo'
Public methods (0)

No public methods.

New fields (3)
  • show_vendor_tab Boolean
    compute='_compute_show_vendor_tab'
  • supplierinfo_id Many2one
    related='orderpoint_id.supplier_id'
  • supplierinfo_ids Many2many → product.supplierinfo
    compute='_compute_supplierinfo_ids' store=True args: 'product.supplierinfo'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • select_route(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • action Selection
    ondelete={'buy': 'cascade'} selection_add=[('buy', 'Buy')]
Public methods (1)
  • run(self, procurements, raise_user_error=True)
    @api.model

New fields (2)
  • buy_pull_id Many2one → stock.rule
    copy=False args: 'stock.rule', 'Buy rule'
  • buy_to_resupply Boolean
    compute='_compute_buy_to_resupply' default=True help='When products are bought, they can be delivered to this warehouse' inverse='_inverse_buy_to_resupply' args: 'Buy to Resupply'
Public methods (1)
  • get_rules_dict(self)

New fields (6)
  • available_vendor Many2one → res.partner
    help="Any vendor on the product's pricelist" search='_search_available_vendor' store=False string='Available Vendor' args: 'res.partner'
  • effective_vendor_id Many2one → res.partner
    compute='_compute_effective_vendor_id' help='Either the vendor set directly or the one computed to be used by this replenishment' search='_search_effective_vendor_id' store=False args: 'res.partner'
  • show_supplier Boolean
    compute='_compute_show_supplier' args: 'Show supplier column'
  • supplier_id Many2one → product.supplierinfo
    check_company=True domain="['|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_tmpl_id)]" inverse='_inverse_supplier_id' string='Vendor Pricelist' args: 'product.supplierinfo'
  • supplier_id_placeholder Char
    compute='_compute_supplier_id_placeholder'
  • vendor_ids One2many
    related='product_id.seller_ids' string='Vendors'
Public methods (1)
  • action_view_purchase(self)
    This function returns an action that display existing purchase orders of given orderpoint.

New fields (7)
  • category_id Many2one → product.category
    readonly=True args: 'product.category', 'Product Category'
  • date Datetime
    readonly=True args: 'Effective Date'
  • on_time_rate Float
    readonly=True args: 'On-Time Delivery Rate'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Vendor'
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • qty_on_time Float
    readonly=True args: 'On-Time Quantity'
  • qty_total Float
    readonly=True args: 'Total Quantity'
Public methods (1)
  • init(self)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…